YITH WooCommerce Ajax Product Filter - Version 4.1.0

Version Description

  • Released on 18 June 2021 =

  • New: support for WooCommerce 5.4

  • New: auto-populate taxonomy filters

  • New: support for YITH WooCommerce Color and Label Variations

  • New: support for Hello Elementor theme

  • New: automatically use term image, when available

  • New: option to choose where to show term labels in color/label layouts

  • New: added cron to delete transient with the old cache version

  • Update: YITH plugin framework

  • Tweak: changed name of the flag used to suppress filters query processing

  • Tweak: use svg instead of text for x icon in filters

  • Tweak: improved compatibility with Porto theme

  • Fix: issue with query-vars processing, causing orderby option to break

  • Fix: avoid possible JS error Cannot use in operator to search in null

  • Fix: multiple selection for categories, tags and brands does not work on OR mode in old widgets

  • Fix: avoid filters overwriting after new page is loaded (index overriding)

  • Dev: use babel to make scripts work on older browsers/devices

  • Dev: added trigger yith_wcan_preset_initialized

  • Dev: added new yith_wcan_query_post_in filter, to programmatically change products used by our plugin

Download this release

Release Info

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

Code changes from version 4.0.4 to 4.1.0

Files changed (101) hide show
  1. README.txt +22 -1
  2. assets/css/admin.css +84 -20
  3. assets/css/admin.css.map +1 -1
  4. assets/css/admin.min.css +0 -1
  5. assets/css/frontend.min.css +0 -1
  6. assets/css/shortcodes.css +214 -14
  7. assets/css/shortcodes.css.map +1 -1
  8. assets/images/close.svg +1 -0
  9. assets/js/shortcodes/config.js +7 -0
  10. assets/js/shortcodes/index.js +30 -0
  11. assets/js/shortcodes/modules/yith-wcan-dropdown.js +604 -0
  12. assets/js/shortcodes/modules/yith-wcan-filter-labels.js +59 -0
  13. assets/js/shortcodes/modules/yith-wcan-filter.js +352 -0
  14. assets/js/shortcodes/modules/yith-wcan-modal-opener.js +93 -0
  15. assets/js/shortcodes/modules/yith-wcan-preset.js +1506 -0
  16. assets/js/shortcodes/modules/yith-wcan-reset-button.js +29 -0
  17. assets/js/yith-wcan-admin-filters.js +469 -39
  18. assets/js/yith-wcan-admin-filters.min.js +1 -1
  19. assets/js/yith-wcan-shortcodes.js +2322 -2387
  20. assets/js/yith-wcan-shortcodes.js.map +1 -0
  21. assets/js/yith-wcan-shortcodes.min.js +1 -1
  22. assets/scss/admin.scss +89 -14
  23. assets/scss/shortcodes.scss +245 -8
  24. includes/class.yith-wcan-admin.php +22 -2
  25. includes/class.yith-wcan-filter-factory.php +18 -0
  26. includes/class.yith-wcan-filter.php +327 -59
  27. includes/class.yith-wcan-frontend.php +2 -1
  28. includes/class.yith-wcan-install.php +14 -0
  29. includes/class.yith-wcan-preset-factory.php +14 -0
  30. includes/class.yith-wcan-preset.php +40 -0
  31. includes/class.yith-wcan-presets.php +11 -0
  32. includes/class.yith-wcan-query.php +83 -5
  33. includes/class.yith-wcan.php +7 -4
  34. includes/compatibility/plugins/yith-woocommerce-booking/yith-woocommerce-booking.php +138 -0
  35. includes/compatibility/themes/hello-elementor/hello-elementor.php +28 -0
  36. includes/compatibility/themes/porto/porto.php +32 -0
  37. includes/data-stores/class.yith-wcan-preset-data-store.php +1 -0
  38. includes/filters/class.yith-wcan-filter-tax.php +46 -13
  39. includes/functions.yith-wcan.php +1 -1
  40. includes/tables/class.yith-wcan-filter-presets-table.php +3 -3
  41. init.php +6 -3
  42. languages/yith-woocommerce-ajax-navigation-de_DE.mo +0 -0
  43. languages/yith-woocommerce-ajax-navigation-de_DE.po +184 -102
  44. languages/yith-woocommerce-ajax-navigation-de_DE_formal.mo +0 -0
  45. languages/yith-woocommerce-ajax-navigation-de_DE_formal.po +184 -102
  46. languages/yith-woocommerce-ajax-navigation-el.mo +0 -0
  47. languages/yith-woocommerce-ajax-navigation-el.po +184 -102
  48. languages/yith-woocommerce-ajax-navigation-es_ES.mo +0 -0
  49. languages/yith-woocommerce-ajax-navigation-es_ES.po +184 -102
  50. languages/yith-woocommerce-ajax-navigation-fr_FR.mo +0 -0
  51. languages/yith-woocommerce-ajax-navigation-fr_FR.po +177 -93
  52. languages/yith-woocommerce-ajax-navigation-it_IT.mo +0 -0
  53. languages/yith-woocommerce-ajax-navigation-it_IT.po +186 -102
  54. languages/yith-woocommerce-ajax-navigation-nl_NL.mo +0 -0
  55. languages/yith-woocommerce-ajax-navigation-nl_NL.po +184 -102
  56. languages/yith-woocommerce-ajax-navigation-tr_TR.mo +0 -0
  57. languages/yith-woocommerce-ajax-navigation-tr_TR.po +178 -92
  58. languages/yith-woocommerce-ajax-navigation.pot +171 -87
  59. plugin-fw/assets/css/yit-plugin-panel.css +265 -3
  60. plugin-fw/assets/css/yith-fields.css +26 -4
  61. plugin-fw/assets/css/yith-icon.css +19 -7
  62. plugin-fw/assets/css/yith-plugin-ui.css +34 -1
  63. plugin-fw/assets/fonts/yith-icon.eot +0 -0
  64. plugin-fw/assets/fonts/yith-icon.ttf +0 -0
  65. plugin-fw/assets/fonts/yith-icon.woff2 +0 -0
  66. plugin-fw/assets/js/wp-pages.js +49 -9
  67. plugin-fw/assets/js/wp-pages.min.js +1 -1
  68. plugin-fw/assets/js/yit-plugin-panel.js +8 -4
  69. plugin-fw/assets/js/yit-plugin-panel.min.js +1 -1
  70. plugin-fw/assets/js/yith-enhanced-select.js +63 -0
  71. plugin-fw/assets/js/yith-enhanced-select.min.js +1 -1
  72. plugin-fw/assets/js/yith-fields.js +2 -2
  73. plugin-fw/assets/js/yith-fields.min.js +1 -1
  74. plugin-fw/dist/gutenberg/index.asset.php +1 -1
  75. plugin-fw/dist/gutenberg/index.js +1 -1
  76. plugin-fw/includes/class-yit-assets.php +21 -2
  77. plugin-fw/includes/class-yit-help-desk.php +187 -0
  78. plugin-fw/includes/class-yit-plugin-panel-woocommerce.php +4 -0
  79. plugin-fw/includes/class-yit-plugin-panel.php +117 -26
  80. plugin-fw/init.php +2 -2
  81. plugin-fw/languages/yith-plugin-fw-el.mo +0 -0
  82. plugin-fw/languages/yith-plugin-fw-el.po +178 -72
  83. plugin-fw/languages/yith-plugin-fw-es_ES.mo +0 -0
  84. plugin-fw/languages/yith-plugin-fw-es_ES.po +188 -74
  85. plugin-fw/languages/yith-plugin-fw-it_IT.mo +0 -0
  86. plugin-fw/languages/yith-plugin-fw-it_IT.po +188 -75
  87. plugin-fw/languages/yith-plugin-fw-nl_NL.mo +0 -0
  88. plugin-fw/languages/yith-plugin-fw-nl_NL.po +191 -75
  89. plugin-fw/languages/yith-plugin-fw.pot +177 -71
  90. plugin-fw/templates/fields/ajax-pages.php +96 -0
  91. plugin-fw/templates/fields/image-dimensions.php +27 -0
  92. plugin-fw/templates/fields/text-array.php +52 -22
  93. plugin-fw/templates/panel/help-tab.php +211 -0
  94. plugin-fw/templates/panel/woocommerce/woocommerce-form.php +1 -1
  95. plugin-fw/yit-functions.php +74 -4
  96. plugin-fw/yit-plugin.php +1 -0
  97. plugin-options/filter-options.php +48 -18
  98. plugin-options/preset-options.php +19 -0
  99. templates/admin/preset-edit.php +38 -16
  100. templates/admin/preset-filter.php +5 -5
  101. templates/filters/filter-tax/items/color.php +2 -2
README.txt CHANGED
@@ -4,7 +4,7 @@ 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.0.4
8
  License: GPLv3 or later
9
  License URI: http://www.gnu.org/licenses/gpl-3.0.html
10
 
@@ -152,6 +152,27 @@ If none of the previous listed actions helps you solve the problem, then, submit
152
 
153
  == Changelog ==
154
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
155
  = 4.0.4 - Released on 18 May 2021 =
156
 
157
  * New: support for WooCommerce 5.3
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
 
153
  == Changelog ==
154
 
155
+ = 4.1.0 - Released on 18 June 2021 =
156
+
157
+ * New: support for WooCommerce 5.4
158
+ * New: auto-populate taxonomy filters
159
+ * New: support for YITH WooCommerce Color and Label Variations
160
+ * New: support for Hello Elementor theme
161
+ * New: automatically use term image, when available
162
+ * New: option to choose where to show term labels in color/label layouts
163
+ * New: added cron to delete transient with the old cache version
164
+ * Update: YITH plugin framework
165
+ * Tweak: changed name of the flag used to suppress filters query processing
166
+ * Tweak: use svg instead of text for x icon in filters
167
+ * Tweak: improved compatibility with Porto theme
168
+ * Fix: issue with query-vars processing, causing orderby option to break
169
+ * Fix: avoid possible JS error Cannot use in operator to search in null
170
+ * Fix: multiple selection for categories, tags and brands does not work on OR mode in old widgets
171
+ * Fix: avoid filters overwriting after new page is loaded (index overriding)
172
+ * Dev: use babel to make scripts work on older browsers/devices
173
+ * Dev: added trigger yith_wcan_preset_initialized
174
+ * Dev: added new yith_wcan_query_post_in filter, to programmatically change products used by our plugin
175
+
176
  = 4.0.4 - Released on 18 May 2021 =
177
 
178
  * New: support for WooCommerce 5.3
assets/css/admin.css CHANGED
@@ -1,3 +1,4 @@
 
1
  /* === Filter Preset List === */
2
  #yith_wcan_panel_filter-preset {
3
  position: relative;
@@ -112,40 +113,48 @@
112
  position: relative;
113
  }
114
  #yith_wcan_panel_filter-preset .yith-plugin-fw-list-table-container table.wp-list-table tbody tr td.shortcode .copy-on-click input {
115
- background: #fff;
 
 
116
  cursor: pointer;
117
  }
118
  #yith_wcan_panel_filter-preset .yith-plugin-fw-list-table-container table.wp-list-table tbody tr td.shortcode .copy-on-click:after {
119
  color: #9d9d9d;
120
- content: "link";
121
- font-family: "Material Icons";
122
- font-size: 21px;
123
  position: absolute;
124
- right: 10px;
125
- top: 6px;
 
 
 
126
  }
127
  #yith_wcan_panel_filter-preset .yith-plugin-fw-list-table-container table.wp-list-table tbody tr td.actions a {
128
  float: right;
129
  }
130
  #yith_wcan_panel_filter-preset .yith-plugin-fw-list-table-container table.wp-list-table tbody tr td.actions a.show-on-hover {
 
131
  background: #fff;
 
132
  border-radius: 100%;
133
  color: #20659d;
134
- display: none;
135
  float: right;
136
- font-size: 21px;
137
  height: 35px;
138
  margin-right: 8px;
 
 
 
139
  width: 35px;
140
  justify-content: center;
141
- align-items: center;
142
- box-shadow: 0 0 10px 0 rgba(167, 217, 236, 0.6);
143
  }
144
  #yith_wcan_panel_filter-preset .yith-plugin-fw-list-table-container table.wp-list-table tbody tr td.actions a.show-on-hover i {
145
- font-size: 21px;
146
  }
147
  #yith_wcan_panel_filter-preset .yith-plugin-fw-list-table-container table.wp-list-table tbody tr td.actions a.show-on-hover:hover {
148
- box-shadow: 0 0 10px 0 #a7d9ec;
149
  }
150
  #yith_wcan_panel_filter-preset .yith-plugin-fw-list-table-container table.wp-list-table tbody tr td.actions a.show-on-hover.delete {
151
  color: #ba3e3e;
@@ -157,7 +166,8 @@
157
  margin: 5px 0;
158
  }
159
  #yith_wcan_panel_filter-preset .yith-plugin-fw-list-table-container table.wp-list-table tbody tr:hover td.actions a.show-on-hover {
160
- display: flex;
 
161
  }
162
 
163
  /* === Upgrade Note Modal === */
@@ -273,6 +283,17 @@
273
  #yith_wcan_panel_filter-preset-edit h4 {
274
  font-size: 14px;
275
  }
 
 
 
 
 
 
 
 
 
 
 
276
  #yith_wcan_panel_filter-preset-edit .yith-toggle-row {
277
  background: none;
278
  border: 1px solid #e0e0e0;
@@ -316,6 +337,7 @@
316
  #yith_wcan_panel_filter-preset-edit .yith-toggle-row .yith-toggle-title {
317
  cursor: pointer;
318
  padding: 20px 15px;
 
319
  }
320
  #yith_wcan_panel_filter-preset-edit .yith-toggle-row .yith-toggle-title .no-title {
321
  color: #757575;
@@ -329,24 +351,27 @@
329
  vertical-align: middle;
330
  }
331
  #yith_wcan_panel_filter-preset-edit .yith-toggle-row .yith-toggle-title .show-on-hover {
 
332
  background: #fff;
 
333
  border-radius: 100%;
334
  color: #20659d;
335
- display: none;
336
  float: right;
337
- font-size: 21px;
338
  height: 35px;
339
  margin-right: 8px;
 
 
 
340
  width: 35px;
341
  justify-content: center;
342
- align-items: center;
343
- box-shadow: 0 0 10px 0 rgba(167, 217, 236, 0.6);
344
  }
345
  #yith_wcan_panel_filter-preset-edit .yith-toggle-row .yith-toggle-title .show-on-hover i {
346
- font-size: 21px;
347
  }
348
  #yith_wcan_panel_filter-preset-edit .yith-toggle-row .yith-toggle-title .show-on-hover:hover {
349
- box-shadow: 0 0 10px 0 #a7d9ec;
350
  }
351
  #yith_wcan_panel_filter-preset-edit .yith-toggle-row .yith-toggle-title .show-on-hover.delete {
352
  color: #ba3e3e;
@@ -354,7 +379,8 @@
354
  margin-right: 15px;
355
  }
356
  #yith_wcan_panel_filter-preset-edit .yith-toggle-row .yith-toggle-title:hover .show-on-hover {
357
- display: flex;
 
358
  }
359
  #yith_wcan_panel_filter-preset-edit .yith-toggle-row .yith-toggle-title .yith-plugin-fw-field-wrapper {
360
  float: right;
@@ -365,6 +391,9 @@
365
  #yith_wcan_panel_filter-preset-edit .yith-toggle-row .yith-toggle-content-row {
366
  width: 100%;
367
  }
 
 
 
368
  #yith_wcan_panel_filter-preset-edit .yith-toggle-row .yith-toggle-content-row > label {
369
  width: 180px;
370
  }
@@ -375,6 +404,9 @@
375
  #yith_wcan_panel_filter-preset-edit .yith-toggle-row .yith-toggle-content-row span.description {
376
  max-width: 100%;
377
  }
 
 
 
378
  #yith_wcan_panel_filter-preset-edit .yith-toggle-row .yith-toggle-content-row .add-price-range {
379
  margin-bottom: 15px;
380
  }
@@ -624,6 +656,38 @@
624
  border-radius: 4px;
625
  margin: 20px 0;
626
  }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
627
 
628
  /* === Widget Area === */
629
  .yith_wcan_placeholder + .spinner {
1
+ @charset "UTF-8";
2
  /* === Filter Preset List === */
3
  #yith_wcan_panel_filter-preset {
4
  position: relative;
113
  position: relative;
114
  }
115
  #yith_wcan_panel_filter-preset .yith-plugin-fw-list-table-container table.wp-list-table tbody tr td.shortcode .copy-on-click input {
116
+ background: #f1f1f1;
117
+ color: #999;
118
+ border: 1px dashed #ccc;
119
  cursor: pointer;
120
  }
121
  #yith_wcan_panel_filter-preset .yith-plugin-fw-list-table-container table.wp-list-table tbody tr td.shortcode .copy-on-click:after {
122
  color: #9d9d9d;
123
+ content: "";
124
+ font-family: "yith-icon";
125
+ font-size: 14px;
126
  position: absolute;
127
+ right: 15px;
128
+ top: 10px;
129
+ }
130
+ #yith_wcan_panel_filter-preset .yith-plugin-fw-list-table-container table.wp-list-table tbody tr td.actions {
131
+ overflow: hidden;
132
  }
133
  #yith_wcan_panel_filter-preset .yith-plugin-fw-list-table-container table.wp-list-table tbody tr td.actions a {
134
  float: right;
135
  }
136
  #yith_wcan_panel_filter-preset .yith-plugin-fw-list-table-container table.wp-list-table tbody tr td.actions a.show-on-hover {
137
+ align-items: center;
138
  background: #fff;
139
+ box-shadow: 0px 2px 7px rgba(170, 198, 222, 0.5);
140
  border-radius: 100%;
141
  color: #20659d;
142
+ display: flex;
143
  float: right;
144
+ font-size: 17px;
145
  height: 35px;
146
  margin-right: 8px;
147
+ opacity: 0;
148
+ transform: translate(0, -70px);
149
+ transition: all ease 0.3s;
150
  width: 35px;
151
  justify-content: center;
 
 
152
  }
153
  #yith_wcan_panel_filter-preset .yith-plugin-fw-list-table-container table.wp-list-table tbody tr td.actions a.show-on-hover i {
154
+ font-size: 17px;
155
  }
156
  #yith_wcan_panel_filter-preset .yith-plugin-fw-list-table-container table.wp-list-table tbody tr td.actions a.show-on-hover:hover {
157
+ background: #f3f3f3;
158
  }
159
  #yith_wcan_panel_filter-preset .yith-plugin-fw-list-table-container table.wp-list-table tbody tr td.actions a.show-on-hover.delete {
160
  color: #ba3e3e;
166
  margin: 5px 0;
167
  }
168
  #yith_wcan_panel_filter-preset .yith-plugin-fw-list-table-container table.wp-list-table tbody tr:hover td.actions a.show-on-hover {
169
+ opacity: 1;
170
+ transform: none;
171
  }
172
 
173
  /* === Upgrade Note Modal === */
283
  #yith_wcan_panel_filter-preset-edit h4 {
284
  font-size: 14px;
285
  }
286
+ #yith_wcan_panel_filter-preset-edit [data-currency] + .currency {
287
+ margin-left: 10px;
288
+ }
289
+ #yith_wcan_panel_filter-preset-edit input.validation-error {
290
+ border-color: red !important;
291
+ }
292
+ #yith_wcan_panel_filter-preset-edit input.validation-error + span.validation-message {
293
+ color: red;
294
+ display: block;
295
+ margin-top: 5px;
296
+ }
297
  #yith_wcan_panel_filter-preset-edit .yith-toggle-row {
298
  background: none;
299
  border: 1px solid #e0e0e0;
337
  #yith_wcan_panel_filter-preset-edit .yith-toggle-row .yith-toggle-title {
338
  cursor: pointer;
339
  padding: 20px 15px;
340
+ overflow: hidden;
341
  }
342
  #yith_wcan_panel_filter-preset-edit .yith-toggle-row .yith-toggle-title .no-title {
343
  color: #757575;
351
  vertical-align: middle;
352
  }
353
  #yith_wcan_panel_filter-preset-edit .yith-toggle-row .yith-toggle-title .show-on-hover {
354
+ align-items: center;
355
  background: #fff;
356
+ box-shadow: 0px 2px 7px rgba(170, 198, 222, 0.5);
357
  border-radius: 100%;
358
  color: #20659d;
359
+ display: flex;
360
  float: right;
361
+ font-size: 17px;
362
  height: 35px;
363
  margin-right: 8px;
364
+ opacity: 0;
365
+ transform: translate(0, -70px);
366
+ transition: all ease 0.3s;
367
  width: 35px;
368
  justify-content: center;
 
 
369
  }
370
  #yith_wcan_panel_filter-preset-edit .yith-toggle-row .yith-toggle-title .show-on-hover i {
371
+ font-size: 17px;
372
  }
373
  #yith_wcan_panel_filter-preset-edit .yith-toggle-row .yith-toggle-title .show-on-hover:hover {
374
+ background: #f3f3f3;
375
  }
376
  #yith_wcan_panel_filter-preset-edit .yith-toggle-row .yith-toggle-title .show-on-hover.delete {
377
  color: #ba3e3e;
379
  margin-right: 15px;
380
  }
381
  #yith_wcan_panel_filter-preset-edit .yith-toggle-row .yith-toggle-title:hover .show-on-hover {
382
+ opacity: 1;
383
+ transform: none;
384
  }
385
  #yith_wcan_panel_filter-preset-edit .yith-toggle-row .yith-toggle-title .yith-plugin-fw-field-wrapper {
386
  float: right;
391
  #yith_wcan_panel_filter-preset-edit .yith-toggle-row .yith-toggle-content-row {
392
  width: 100%;
393
  }
394
+ #yith_wcan_panel_filter-preset-edit .yith-toggle-row .yith-toggle-content-row.disabled {
395
+ display: none !important;
396
+ }
397
  #yith_wcan_panel_filter-preset-edit .yith-toggle-row .yith-toggle-content-row > label {
398
  width: 180px;
399
  }
404
  #yith_wcan_panel_filter-preset-edit .yith-toggle-row .yith-toggle-content-row span.description {
405
  max-width: 100%;
406
  }
407
+ #yith_wcan_panel_filter-preset-edit .yith-toggle-row .yith-toggle-content-row span.description > span {
408
+ display: block;
409
+ }
410
  #yith_wcan_panel_filter-preset-edit .yith-toggle-row .yith-toggle-content-row .add-price-range {
411
  margin-bottom: 15px;
412
  }
656
  border-radius: 4px;
657
  margin: 20px 0;
658
  }
659
+ #yith_wcan_panel_filter-preset-edit .preset-saved {
660
+ background: var(--yith-success-lightest) !important;
661
+ border-radius: 5px;
662
+ border: 1px solid var(--yith-success-light);
663
+ box-shadow: 1px 1px 2px var(--yith-success-lighter);
664
+ color: var(--yith-content-text);
665
+ font-size: 14px;
666
+ margin: 15px 0 20px !important;
667
+ padding: 15px 40px 15px 45px !important;
668
+ position: relative;
669
+ text-align: left;
670
+ }
671
+ #yith_wcan_panel_filter-preset-edit .preset-saved p {
672
+ background: none !important;
673
+ font-weight: 600 !important;
674
+ margin: 0;
675
+ padding: 0 !important;
676
+ }
677
+ #yith_wcan_panel_filter-preset-edit .preset-saved p:before {
678
+ display: none !important;
679
+ }
680
+ #yith_wcan_panel_filter-preset-edit .preset-saved:before {
681
+ color: var(--yith-success);
682
+ content: "";
683
+ font-family: yith-icon;
684
+ font-weight: 400;
685
+ font-size: 21px;
686
+ left: 13px;
687
+ position: absolute;
688
+ top: 50%;
689
+ transform: translateY(-50%);
690
+ }
691
 
692
  /* === Widget Area === */
693
  .yith_wcan_placeholder + .spinner {
assets/css/admin.css.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"sourceRoot":"","sources":["../scss/admin.scss"],"names":[],"mappings":"AAyGA;AAEA;EACC;;AAGA;AAAA;EAEC;;AAID;EA3GA;EACA;;AAEA;EACC;EACA;;AAGD;EACC;EACA;;AAEA;EACC;EACA;;AAIF;EACC;EACA;;AA4FD;EACC;EACA;EACA;EACA;EACA;EACA;;AAEA;EACC;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAKF;EACC;EACA;;AAEA;EACC;;AAGD;EACC;EACA;EACA;EACA;EACA;;AAEA;EACC;;AAGD;EACC;EACA;;AAIA;EA1GH;EACA;EACA;EACA;;AAGA;EACC;EACA;;AAID;EACC,cAzEgB;EA0EhB;EACA;EACA;;AAEA;EACC;EACA;EACA;;AAGD;EACC;EACA;EACA;;AAIF;EACC;;AAGD;AAAA;EAEC,YAlGoB;;AA2KhB;EACC;;AAEA;EACC;;AAIF;EACC;EACA;EACA;;AAEA;EACC;EACA;;AAGD;EACC;EACA;EACA;EACA;EACA;EACA;EACA;;AAKD;EACC;;AAEA;EA5KP;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAEA;EACC;;AAGD;EACC;;AAGD;EACC,OAvDI;EAwDJ;EACA;;AAyJK;EACC;EACA;;AAMF;EACC;;;AASP;AAEA;EACC;;AAEA;EACC;EACA;;AAEA;EACC;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAEA;EACC;;AAIF;EACC;EACA;EACA;;AAEA;EACC;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAIF;EACC;;AAEA;EACC;;AAEA;EACC;EACA;;AAGD;EACC;EACA;EACA;;AAGD;EACC;EACA;;;AAOL;AAKC;EACC;EACA;EA9SD;EACA;;AAEA;EACC;EACA;;AAGD;EACC;EACA;;AAEA;EACC;EACA;;AAIF;EACC;EACA;;AAgSD;EACC;EACA;EACA;EACA;;AAID;EACC;EACA;;AAID;EACC;EACA;EACA;;AAID;EACC;EACA;;AAEA;EACC;EACA;;AAKF;EACC;;AAGD;EAlSA;EACA;EACA;EACA;EAkSC;EACA;EACA;EACA;;AAlSD;EACC;EACA;;AAID;EACC,cAzEgB;EA0EhB;EACA;EACA;;AAEA;EACC;EACA;EACA;;AAGD;EACC;EACA;EACA;;AAIF;EACC;;AAGD;AAAA;EAEC,YAlGoB;;AAuWpB;EACC;;AAGD;EACC;EACA;;AAEA;EACC;;AAGD;EACC;;AAGD;EACC;EACA;EACA;;AAGD;EA7VF;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAEA;EACC;;AAGD;EACC;;AAGD;EACC,OAvDI;EAwDJ;EACA;;AAyUC;EACC;;AAGD;EACC;EACA;EACA;EACA;;AAIF;EACC;;AAEA;EACC;;AAGD;EACC;EACA;;AAGD;EACC;;AAGD;EACC;;AAGD;AAAA;EAEC;EACA;;AAEA;AAAA;AAAA;AAAA;EAEC;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAIA;AAAA;EACC;EACA;;AAGD;AAAA;EACC;EACA;;AAGD;AAAA;EACC;EACA;EACA;;AAGD;AAAA;EACC;EACA;;AAEA;AAAA;EACC;;AAGD;AAAA;EACC;EACA;EACA;;AAGD;AAAA;EACC;EACA;EACA;;AAGD;AAAA;EACC;EACA;EACA;EACA;EACA;EACA;;AAIF;AAAA;EACC;EACA;;AAEA;AAAA;EACC;EACA;EACA;EACA;EACA;EACA;;AAEA;AAAA;EACC,OAhfF;EAifE;EACA;;AAMF;AAAA;EACC;EACA;EACA;EACA;EACA;EACA;;AAEA;AAAA;EACC;EACA;;AAGD;AAAA;EACC;EACA;EACA;EACA;;AAIF;AAAA;EACC;EACA;EACA;;AAEA;AAAA;EACC;EACA;;AAGD;AAAA;EACC;EACA;EACA;EACA;EACA;EACA;EACA;;AAEA;AAAA;EACC;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAGD;AAAA;EACC,OAjjBH;;AAqjBC;AAAA;EACC;;AAOH;AAAA;EACC;EACA;;AAGD;AAAA;AAAA;EAEC;;AAGD;AAAA;EACC;;AAGD;AAAA;EACC;;AAGD;AAAA;EACC;EACA;EACA;EACA;EACA;EACA;;AAEA;AAAA;EACC,OAxlBD;EAylBC;EACA;;AAQN;EACC,kBAlmBoB;EAmmBpB;EACA;EACA;EACA;EACA;EACA;EACA;;AAEA;EACC,kBA1mByB;EA2mBzB,cA1mBqB;;AA8mBvB;EACC;EACA;EACA;EACA;EACA;EACA;EA1jBD;EACA;EACA;EACA;;AAGA;EACC;EACA;;AAID;EACC,cAzEgB;EA0EhB;EACA;EACA;;AAEA;EACC;EACA;EACA;;AAGD;EACC;EACA;EACA;;AAIF;EACC;;AAGD;AAAA;EAEC,YAlGoB;;AA0nBpB;EACC,YA3nBmB;;AA+nBrB;EACC;EACA;EACA;EACA;;;AAIF;AAEA;EACC;EACA;EACA;EACA;;;AAGD;EACC;;AAEA;EACC;;AAGD;EACC;;;AAIF;AAAA;AAAA;AAAA;AAAA;AAAA;EAMC;;;AAGD;EACC;;;AAGD;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;EAOC;;;AAGD;EACC;EACA;EACA;;;AAGD;AAGC;AAAA;EAEC;;AAEA;AAAA;EACC;;AAIF;EACC","file":"admin.css"}
1
+ {"version":3,"sourceRoot":"","sources":["../scss/admin.scss"],"names":[],"mappings":";AA4GA;AAEA;EACC;;AAGA;AAAA;EAEC;;AAID;EA9GA;EACA;;AAEA;EACC;EACA;;AAGD;EACC;EACA;;AAEA;EACC;EACA;;AAIF;EACC;EACA;;AA+FD;EACC;EACA;EACA;EACA;EACA;EACA;;AAEA;EACC;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAKF;EACC;EACA;;AAEA;EACC;;AAGD;EACC;EACA;EACA;EACA;EACA;;AAEA;EACC;;AAGD;EACC;EACA;;AAIA;EA1GH;EACA;EACA;EACA;;AAGA;EACC;EACA;;AAID;EACC,cA5EgB;EA6EhB;EACA;EACA;;AAEA;EACC;EACA;EACA;;AAGD;EACC;EACA;EACA;;AAIF;EACC;;AAGD;AAAA;EAEC,YArGoB;;AA8KhB;EACC;;AAEA;EACC;;AAIF;EACC;EACA;EACA;;AAEA;EACC;EACA;EACA;EACA;;AAGD;EACC;EACA;EACA;EACA;EACA;EACA;EACA;;AAIF;EACC;;AAEA;EACC;;AAEA;EAnLP;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAEA;EACC;;AAGD;EACC;;AAGD;EACC,OA1DI;EA2DJ;EACA;;AA6JK;EACC;EACA;;AAMF;EACC;EACA;;;AASP;AAEA;EACC;;AAEA;EACC;EACA;;AAEA;EACC;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAEA;EACC;;AAIF;EACC;EACA;EACA;;AAEA;EACC;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAIF;EACC;;AAEA;EACC;;AAEA;EACC;EACA;;AAGD;EACC;EACA;EACA;;AAGD;EACC;EACA;;;AAOL;AAKC;EACC;EACA;EAtTD;EACA;;AAEA;EACC;EACA;;AAGD;EACC;EACA;;AAEA;EACC;EACA;;AAIF;EACC;EACA;;AAwSD;EACC;EACA;EACA;EACA;;AAID;EACC;EACA;;AAID;EACC;EACA;EACA;;AAID;EACC;EACA;;AAEA;EACC;EACA;;AAKF;EACC;;AAID;EACC;;AAID;EACC;;AAGD;EACC;EACA;EACA;;AAID;EAxTA;EACA;EACA;EACA;EAwTC;EACA;EACA;EACA;;AAxTD;EACC;EACA;;AAID;EACC,cA5EgB;EA6EhB;EACA;EACA;;AAEA;EACC;EACA;EACA;;AAGD;EACC;EACA;EACA;;AAIF;EACC;;AAGD;AAAA;EAEC,YArGoB;;AAgYpB;EACC;;AAGD;EACC;EACA;EACA;;AAEA;EACC;;AAGD;EACC;;AAGD;EACC;EACA;EACA;;AAGD;EAvXF;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAEA;EACC;;AAGD;EACC;;AAGD;EACC,OA1DI;EA2DJ;EACA;;AAgWC;EACC;EACA;;AAGD;EACC;EACA;EACA;EACA;;AAIF;EACC;;AAEA;EACC;;AAGD;EACC;;AAGD;EACC;EACA;;AAGD;EACC;;AAEA;EACC;;AAIF;EACC;;AAGD;AAAA;EAEC;EACA;;AAEA;AAAA;AAAA;AAAA;EAEC;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAIA;AAAA;EACC;EACA;;AAGD;AAAA;EACC;EACA;;AAGD;AAAA;EACC;EACA;EACA;;AAGD;AAAA;EACC;EACA;;AAEA;AAAA;EACC;;AAGD;AAAA;EACC;EACA;EACA;;AAGD;AAAA;EACC;EACA;EACA;;AAGD;AAAA;EACC;EACA;EACA;EACA;EACA;EACA;;AAIF;AAAA;EACC;EACA;;AAEA;AAAA;EACC;EACA;EACA;EACA;EACA;EACA;;AAEA;AAAA;EACC,OAnhBF;EAohBE;EACA;;AAMF;AAAA;EACC;EACA;EACA;EACA;EACA;EACA;;AAEA;AAAA;EACC;EACA;;AAGD;AAAA;EACC;EACA;EACA;EACA;;AAIF;AAAA;EACC;EACA;EACA;;AAEA;AAAA;EACC;EACA;;AAGD;AAAA;EACC;EACA;EACA;EACA;EACA;EACA;EACA;;AAEA;AAAA;EACC;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAGD;AAAA;EACC,OAplBH;;AAwlBC;AAAA;EACC;;AAOH;AAAA;EACC;EACA;;AAGD;AAAA;AAAA;EAEC;;AAGD;AAAA;EACC;;AAGD;AAAA;EACC;;AAGD;AAAA;EACC;EACA;EACA;EACA;EACA;EACA;;AAEA;AAAA;EACC,OA3nBD;EA4nBC;EACA;;AASN;EACC,kBAtoBoB;EAuoBpB;EACA;EACA;EACA;EACA;EACA;EACA;;AAEA;EACC,kBA9oByB;EA+oBzB,cA9oBqB;;AAmpBvB;EACC;EACA;EACA;EACA;EACA;EACA;EA5lBD;EACA;EACA;EACA;;AAGA;EACC;EACA;;AAID;EACC,cA5EgB;EA6EhB;EACA;EACA;;AAEA;EACC;EACA;EACA;;AAGD;EACC;EACA;EACA;;AAIF;EACC;;AAGD;AAAA;EAEC,YArGoB;;AA+pBpB;EACC,YAhqBmB;;AAqqBrB;EACC;EACA;EACA;EACA;;AAID;EACC;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAEA;EACC;EACA;EACA;EACA;;AAEA;EACC;;AAIF;EACC;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;;AAKH;AAEA;EACC;EACA;EACA;EACA;;;AAGD;EACC;;AAEA;EACC;;AAGD;EACC;;;AAIF;AAAA;AAAA;AAAA;AAAA;AAAA;EAMC;;;AAGD;EACC;;;AAGD;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;EAOC;;;AAGD;EACC;EACA;EACA;;;AAGD;AAGC;AAAA;EAEC;;AAEA;AAAA;EACC;;AAIF;EACC","file":"admin.css"}
assets/css/admin.min.css DELETED
@@ -1 +0,0 @@
1
- .yith_wcan_placeholder+.spinner{background-position:center;float:left;margin:10px 0;width:100%}.yith_wcan_placeholder table{width:100%}.yith_wcan_placeholder th{text-align:left}.yith_wcan_placeholder td{vertical-align:middle}div.yit-wcan-widget-tag-list,p#yit-wcan-show-count,p#yit-wcan-style,p.yit-wcan-display-color,p.yit-wcan-display-label,p.yit-wcan-display-tags{display:none}div.yit-wcan-widget-tag-list.tags{display:block}p#yit-wcan-show-count.yit-wcan-show-count-brands,p#yit-wcan-show-count.yit-wcan-show-count-categories,p#yit-wcan-show-count.yit-wcan-show-count-list,p#yit-wcan-show-count.yit-wcan-show-count-select,p#yit-wcan-show-count.yit-wcan-show-count-tags,p#yit-wcan-style.yit-wcan-style-color,p#yit-wcan-style.yit-wcan-style-multicolor{display:block}label.yith-wcan-reset-table{width:50%;display:inline-block;vertical-align:top}
 
assets/css/frontend.min.css DELETED
@@ -1 +0,0 @@
1
- .yith-woocommerce-ajax-product-filter{position:relative}.yith-wcan-group:after{content:"";display:table;clear:both}.yith-wcan-loading{background:url(../images/ajax-loader.gif) no-repeat center;height:100px}.woocommerce .widget_layered_nav ul.yith-wcan li span,.woocommerce-page .widget_layered_nav ul.yith-wcan li span{cursor:not-allowed}.yith-wcan-list-price-filter{margin-left:0}ul.yith-wcan-color.yith-wcan.yith-wcan-group,ul.yith-wcan-list{list-style:none;margin-left:0}.yith-wcan-color li:first-child{margin-left:0}.yith-wcan-color li{float:left}.woocommerce .widget_layered_nav ul.yith-wcan-color li a,.woocommerce .widget_layered_nav ul.yith-wcan-color li span,.woocommerce-page .widget_layered_nav ul.yith-wcan-color li a,.woocommerce-page .widget_layered_nav ul.yith-wcan-color li span{border:1px solid #ddd;display:block;height:20px;margin:5px 5px 5px 0;padding:0;width:20px;overflow:hidden;text-indent:100%;white-space:nowrap;box-sizing:content-box}.woocommerce .widget_layered_nav ul.yith-wcan-color li a:hover,.woocommerce .widget_layered_nav ul.yith-wcan-color li span:hover,.woocommerce .widget_layered_nav ul.yith-wcan-color li.chosen a,.woocommerce .widget_layered_nav ul.yith-wcan-color li.chosen span,.woocommerce-page .widget_layered_nav ul.yith-wcan-color li a:hover,.woocommerce-page .widget_layered_nav ul.yith-wcan-color li span:hover,.woocommerce-page .widget_layered_nav ul.yith-wcan-color li.chosen a,.woocommerce-page .widget_layered_nav ul.yith-wcan-color li.chosen span{border:1px solid #444;background-image:none;-webkit-border-radius:0;-moz-border-radius:0;border-radius:0}.yith-wcan-label li{float:left}.woocommerce .widget_layered_nav ul.yith-wcan-label li a,.woocommerce .widget_layered_nav ul.yith-wcan-label li span,.woocommerce-page .widget_layered_nav ul.yith-wcan-label li a,.woocommerce-page .widget_layered_nav ul.yith-wcan-label li span{background:#efefef;border:1px solid #ddd;display:block;margin:5px 5px 5px 0;padding:2px;overflow:hidden;text-decoration:none}.woocommerce .widget_layered_nav ul.yith-wcan-label li a:hover,.woocommerce .widget_layered_nav ul.yith-wcan-label li.chosen a,.woocommerce-page .widget_layered_nav ul.yith-wcan-label li a:hover,.woocommerce-page .widget_layered_nav ul.yith-wcan-label li.chosen a{border:1px solid #444;background-image:none;background-color:#ad74a2;color:#fff;-webkit-border-radius:0;-moz-border-radius:0;border-radius:0}.yit-wcan-select-open{background:transparent url(../images/select-arrow.png) top 15px right no-repeat;border:1px solid #cecece;color:#838383;display:block;line-height:16px;margin-bottom:15px;margin-top:15px;overflow:hidden;padding:10px 30px 10px 10px}.yit-wcan-select-open.active{background:transparent url(../images/select-arrow.png) bottom 15px right no-repeat}.yith-wcan-select-wrapper{background:#fff;margin:0 4px 4px 0;max-height:240px;padding-bottom:30px;position:absolute;overflow-x:hidden;overflow-y:auto;width:100%;z-index:-1;border:1px solid #cecece;padding:10px 0;margin-top:-16px;display:none;opacity:0}.yith-wcan-select-wrapper ul.yith-wcan-select.yith-wcan li{padding:5px 8px;border-bottom:1px solid transparent;border-top:1px solid transparent}.woocommerce-page .widget_layered_nav .yith-wcan-select-wrapper ul li.chosen,.yith-wcan-select-wrapper ul.yith-wcan-select.yith-wcan li:hover{-webkit-box-shadow:0 3px 0 #f2f2f2 inset,0 -3px 0 #f2f2f2 inset;-moz-box-shadow:0 3px 0 #f2f2f2 inset,0 -3px 0 #f2f2f2 inset;box-shadow:0 3px 0 #f2f2f2 inset,0 -3px 0 #f2f2f2 inset;border-bottom:1px solid #cecece;border-top:1px solid #cecece}.widget .yit-wcan-select-open,.yith-wcan-select-wrapper ul.yith-wcan-select.yith-wcan li a{width:100%;color:#838383;box-sizing:border-box;-moz-box-sizing:border-box}.widget .yit-wcan-select-open,.yith-wcan-select-wrapper ul.yith-wcan-select.yith-wcan li a{width:auto;display:block}.yith-wcan-select-wrapper ul.yith-wcan-select.yith-wcan li.chosen a{padding:0}.widget .yit-wcan-select-open:hover,.yith-wcan-select-wrapper ul.yith-wcan-select.yith-wcan li a:hover{text-decoration:none;color:#838383}.woocommerce-page .widget_layered_nav .yith-wcan-select-wrapper ul li.chosen a{background:transparent url(../images/cross.png) bottom 6px left no-repeat;border:none}.woocommerce .widget_layered_nav ul.yith-wcan-select li.chosen a:before,.woocommerce-page .widget_layered_nav ul.yith-wcan-select li.chosen a:before{content:""}.yith-wcan-select-wrapper ul.yith-wcan-select.yith-wcan li.yit-wcan-child-terms.level-1{padding-left:30px}.yith-wcan-select-wrapper ul.yith-wcan-select.yith-wcan li.yit-wcan-child-terms.level-2{padding-left:60px}.yith-wcan-select-wrapper ul.yith-wcan-select.yith-wcan li.yit-wcan-child-terms.level-2{padding-left:90px}.yit-wcan-parent-terms ul.yith-child-terms.level-0{padding-left:20px}.yit-wcan-parent-terms ul.yith-child-terms.level-1{padding-left:40px}.yit-wcan-parent-terms ul.yith-child-terms.level-2{padding-left:60px}.yit-wcan-parent-terms ul.yith-child-terms.level-3{padding-left:80px}.yith-wcan-sort-by ul.orderby{list-style:none;padding:0}.yith-wcan-sort-by ul.orderby li.orderby-wrapper{margin-bottom:5px}.yith-wcan-sort-by ul.orderby li.orderby-wrapper>a.active:before,a.yith-wcan-instock-button.active:before,a.yith-wcan-onsale-button.active:before,a.yith-wcan-price-link.active:before,ul.yith-wcan-list li.chosen>a:before{font-family:WooCommerce;speak:none;font-variant:normal;text-transform:none;-webkit-font-smoothing:antialiased;text-decoration:none;font-weight:400;line-height:1;content:"";color:#a00;margin-right:.618em}.woocommerce .widget_layered_nav ul.yith-wcan-color li a.multicolor{position:relative}.woocommerce .widget_layered_nav ul.yith-wcan-color li a span.multicolor{width:0;height:0;border-style:solid;position:absolute;top:0;left:0;margin:0;cursor:pointer}.woocommerce .widget_layered_nav ul.yith-wcan-color li a span.multicolor.color-1{border-width:20px 20px 0 0}.woocommerce .widget_layered_nav ul.yith-wcan-color li a span.multicolor.color-2{border-width:0 0 20px 20px}.woocommerce .widget_layered_nav ul.yith-wcan-color li a.multicolor.round{border-radius:50%}.yith-wcan-pro.woocommerce .widget_price_filter .price_slider_amount button{display:none}.woocommerce .widget_price_filter .price_slider_amount #max_price.yith_wcan_no_slider,.woocommerce .widget_price_filter .price_slider_amount #min_price.yith_wcan_no_slider{margin-bottom:10px}.yith-woocommerce-ajax-product-filter.with-checkbox ul{list-style-type:none;padding-left:0;margin-left:0}.yith-woocommerce-ajax-product-filter.yith-wcan-sort-by.with-checkbox ul{margin-left:0}.yith-woocommerce-ajax-product-filter.with-checkbox ul li a:before{content:'';display:inline-block;background-image:url(../images/checkbox_sprite.png);background-repeat:no-repeat;background-position:top center;width:11px;height:11px;margin-right:5px}.yith-woocommerce-ajax-product-filter.yith-wcan-sort-by.with-checkbox ul li a:before{background-image:url(../images/radio_sprite.png)}.widget_layered_nav.with-checkbox .chosen::before,.yith-woocommerce-ajax-product-filter.with-checkbox ul li.active>a:before,.yith-woocommerce-ajax-product-filter.with-checkbox ul li.chosen>a:before,.yith-woocommerce-ajax-product-filter.with-checkbox ul li>a.active:before,.yith-woocommerce-ajax-product-filter.with-checkbox ul li>a.chosen:before,.yith-woocommerce-ajax-product-filter.with-checkbox ul.orderby li a.active:before,.yith-woocommerce-ajax-product-filter.with-checkbox ul.orderby li a.chosen:before,.yith-woocommerce-ajax-product-filter.with-checkbox ul.orderby li.active>a:before,.yith-woocommerce-ajax-product-filter.with-checkbox ul.orderby li.chosen>a:before{content:'';background-position:bottom center}.widget_layered_nav.with-checkbox .chosen::before{display:none}.yith-woocommerce-ajax-product-filter.with-checkbox ul li a.active:after,.yith-woocommerce-ajax-product-filter.with-checkbox ul li a.chosen:after,.yith-woocommerce-ajax-product-filter.with-checkbox ul li a:after,.yith-woocommerce-ajax-product-filter.with-checkbox ul li.active a:after,.yith-woocommerce-ajax-product-filter.with-checkbox ul li.chosen a:after{content:'';display:none}.widget .yith-wcan-show-all-categories,.widget .yith-wcan-show-all-tags{margin-bottom:15px;display:inline-block}.widget .yith-wcan-show-all-categories a,.widget .yith-wcan-show-all-tags a{font-size:10px;text-transform:uppercase}.widget .yith-wcan-show-all-categories a:before,.widget .yith-wcan-show-all-tags a:before{content:"<";margin-right:5px;font-weight:700;font-size:12px}.yith-woocommerce-ajax-product-filter ul li{list-style:none}.theme-storefront .widget_layered_nav .yith-wcan-list li::before{width:0;content:""!important;float:none;padding-left:0!important}.theme-storefront .widget_layered_nav .yith-wcan-list li,.theme-storefront .yith-woocommerce-ajax-product-filter.widget_layered_nav ul li{padding-left:0!important}.theme-storefront .yith-woocommerce-ajax-product-filter ul li.chosen a:before,.theme-storefront .yith-woocommerce-ajax-product-filter.yith-wcan-sort-by ul li a.active:before{font-family:'Font Awesome 5 Free';content:"\f057"}.theme-storefront .yith-woocommerce-ajax-product-filter.with-checkbox ul li.chosen a:before,.theme-storefront .yith-woocommerce-ajax-product-filter.yith-wcan-sort-by.with-checkbox ul li a.active:before{content:""}.theme-storefront .widget-area .yith-woocommerce-ajax-product-filter a:not(.button):before{text-decoration:none;display:inline-block}.theme-flatsome .yith-woocommerce-ajax-product-filter ul.yith-child-terms{display:block}.theme-flatsome .yith-woocommerce-ajax-product-filter ul li.yit-wcan-parent-terms,.theme-flatsome .yith-woocommerce-ajax-product-filter ul.yith-child-terms li{display:inline}.theme-twentytwentyone.yith-wcan-pro .widget_layered_nav.yith-woo-ajax-navigation li.chosen::before{display:none}.theme-twentytwentyone.yith-wcan-pro .widget_layered_nav ul.yith-wcan-select li.chosen a::before{margin-right:15px}.theme-twentytwentyone.yith-wcan-pro .yith-wcan-select-wrapper{top:95px;display:none}
 
assets/css/shortcodes.css CHANGED
@@ -1,4 +1,3 @@
1
- @charset "UTF-8";
2
  /* === 1. PRESET SHORTCODE === */
3
  .yith-wcan-filters {
4
  background-color: var(--yith-wcan-filters_colors_background, transparent);
@@ -36,6 +35,9 @@
36
  .yith-wcan-filters .yith-wcan-filter h4.collapsable:after {
37
  right: 5px;
38
  }
 
 
 
39
  .yith-wcan-filters .yith-wcan-filter .filter-items {
40
  float: none;
41
  list-style: none;
@@ -92,6 +94,27 @@
92
  display: inline-block;
93
  position: relative;
94
  }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
95
  .yith-wcan-filters .yith-wcan-filter .filter-items .filter-item.color .term-color {
96
  border: 2px solid transparent;
97
  border-radius: var(--yith-wcan-color_swatches_border_radius, 4px);
@@ -143,14 +166,21 @@
143
  line-height: 1.4;
144
  text-align: center;
145
  }
 
 
 
146
  .yith-wcan-filters .yith-wcan-filter .filter-items .filter-item.active.color .term-color, .yith-wcan-filters .yith-wcan-filter .filter-items .filter-item.active.color .term-image {
147
  border-color: var(--yith-wcan-filters_colors_accent, #4e8ba2);
148
  }
149
- .yith-wcan-filters .yith-wcan-filter .filter-items .filter-item.active.color > a:after {
150
  background-color: var(--yith-wcan-filters_colors_accent, #4e8ba2);
 
 
 
 
151
  border-radius: 100%;
152
  color: #fff;
153
- content: "×";
154
  font-size: 16px;
155
  height: 15px;
156
  line-height: 15px;
@@ -174,14 +204,18 @@
174
  display: block;
175
  height: 100%;
176
  }
177
- .yith-wcan-filters .yith-wcan-filter .filter-items .filter-item.label.active.with-image > a {
178
  position: relative;
179
  }
180
- .yith-wcan-filters .yith-wcan-filter .filter-items .filter-item.label.active.with-image > a:after {
181
  background-color: var(--yith-wcan-filters_colors_accent, #4e8ba2);
 
 
 
 
182
  border-radius: 100%;
183
  color: #fff;
184
- content: "×";
185
  font-size: 16px;
186
  height: 15px;
187
  line-height: 15px;
@@ -216,6 +250,34 @@
216
  .yith-wcan-filters .yith-wcan-filter .filter-items .filter-item.label:not(.with-image):not(.disabled):hover .item-count {
217
  color: var(--yith-wcan-labels_style_text_hover, #fff);
218
  }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
219
  .yith-wcan-filters .yith-wcan-filter .filter-items .filter-item.label .term-image {
220
  display: inline-block;
221
  font-size: 0;
@@ -229,6 +291,9 @@
229
  display: block;
230
  font-size: 0.8rem;
231
  }
 
 
 
232
  .yith-wcan-filters .yith-wcan-filter .filter-items .filter-item.hierarchy-collapsable {
233
  position: relative;
234
  }
@@ -318,6 +383,9 @@
318
  vertical-align: top;
319
  width: calc(12.5% - 10px);
320
  }
 
 
 
321
  .yith-wcan-filters .yith-wcan-filter .yith-wcan-tooltip {
322
  background-color: var(--yith-wcan-filters_colors_accent, #4e8ba2);
323
  border-radius: 0;
@@ -346,6 +414,10 @@
346
  top: calc(50% - 5px);
347
  width: 0;
348
  }
 
 
 
 
349
  .yith-wcan-filters .yith-wcan-filter .filter-color .yith-wcan-tooltip,
350
  .yith-wcan-filters .yith-wcan-filter .filter-label .yith-wcan-tooltip {
351
  bottom: calc(100% + 15px);
@@ -365,11 +437,36 @@
365
  left: calc(50% - 2px);
366
  top: 100%;
367
  }
368
- .yith-wcan-filters .yith-wcan-filter .price-slider {
369
  padding: 20px 10px;
370
  }
371
- .yith-wcan-filters .yith-wcan-filter .price-slider .irs {
372
- font-family: inherit;
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
373
  }
374
  .yith-wcan-filters .yith-wcan-filter .price-slider .irs-bar,
375
  .yith-wcan-filters .yith-wcan-filter .price-slider .irs-line {
@@ -422,6 +519,12 @@
422
  top: calc(50% - 5px);
423
  width: 0;
424
  }
 
 
 
 
 
 
425
  .yith-wcan-filters .yith-wcan-filter .price-slider .irs-from:before,
426
  .yith-wcan-filters .yith-wcan-filter .price-slider .irs-to:before,
427
  .yith-wcan-filters .yith-wcan-filter .price-slider .irs-single:before {
@@ -505,11 +608,11 @@
505
  }
506
  .yith-wcan-filters .yith-wcan-filter .yith-wcan-dropdown .dropdown-wrapper .matching-items::-webkit-scrollbar {
507
  -webkit-appearance: none;
508
- width: 7px;
509
  }
510
  .yith-wcan-filters .yith-wcan-filter .yith-wcan-dropdown .dropdown-wrapper .matching-items::-webkit-scrollbar-thumb {
 
511
  border-radius: 4px;
512
- background-color: #D7D7D7;
513
  }
514
  .yith-wcan-filters .yith-wcan-filter .yith-wcan-dropdown .dropdown-wrapper .show-more {
515
  color: var(--yith-wcan-anchors_style_text_hover, #4e8ba2);
@@ -660,11 +763,11 @@
660
  }
661
  .yith-wcan-filters.filters-modal .filters-container::-webkit-scrollbar {
662
  -webkit-appearance: none;
663
- width: 7px;
664
  }
665
  .yith-wcan-filters.filters-modal .filters-container::-webkit-scrollbar-thumb {
 
666
  border-radius: 4px;
667
- background-color: #D7D7D7;
668
  }
669
  .yith-wcan-filters.filters-modal .filters-container > .clear-selection {
670
  cursor: pointer;
@@ -727,6 +830,94 @@
727
  right: 0;
728
  width: 100%;
729
  }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
730
 
731
  body.admin-bar .yith-wcan-filters.filters-modal {
732
  top: 32px;
@@ -748,6 +939,11 @@ body.yith-wcan-preset-modal-open:after.admin-bar {
748
  top: 32px;
749
  }
750
 
 
 
 
 
 
751
  @media (max-width: 782px) {
752
  body.admin-bar .yith-wcan-filters.filters-modal {
753
  top: 46px;
@@ -784,9 +980,13 @@ body.yith-wcan-preset-modal-open:after.admin-bar {
784
  }
785
  .yith-wcan-active-filters .active-filter .active-filter-label:after {
786
  background-color: var(--yith-wcan-filters_colors_accent, #4e8ba2);
 
 
 
 
787
  border-radius: 100%;
788
  color: #fff;
789
- content: "×";
790
  font-size: 16px;
791
  height: 15px;
792
  line-height: 15px;
 
1
  /* === 1. PRESET SHORTCODE === */
2
  .yith-wcan-filters {
3
  background-color: var(--yith-wcan-filters_colors_background, transparent);
35
  .yith-wcan-filters .yith-wcan-filter h4.collapsable:after {
36
  right: 5px;
37
  }
38
+ .yith-wcan-filters .yith-wcan-filter h4.collapsable.collapsable.closed + .filter-content {
39
+ display: none;
40
+ }
41
  .yith-wcan-filters .yith-wcan-filter .filter-items {
42
  float: none;
43
  list-style: none;
94
  display: inline-block;
95
  position: relative;
96
  }
97
+ .yith-wcan-filters .yith-wcan-filter .filter-items .filter-item.color.no-color, .yith-wcan-filters .yith-wcan-filter .filter-items .filter-item.color.no-image {
98
+ font-size: 1rem;
99
+ text-align: center;
100
+ }
101
+ .yith-wcan-filters .yith-wcan-filter .filter-items .filter-item.color.label-below, .yith-wcan-filters .yith-wcan-filter .filter-items .filter-item.color.label-right {
102
+ font-size: 1rem;
103
+ }
104
+ .yith-wcan-filters .yith-wcan-filter .filter-items .filter-item.color.label-right {
105
+ display: block;
106
+ margin: 0 0 10px;
107
+ width: 100%;
108
+ }
109
+ .yith-wcan-filters .yith-wcan-filter .filter-items .filter-item.color.label-right .term-color,
110
+ .yith-wcan-filters .yith-wcan-filter .filter-items .filter-item.color.label-right .term-image {
111
+ margin-bottom: 0;
112
+ margin-right: 10px;
113
+ }
114
+ .yith-wcan-filters .yith-wcan-filter .filter-items .filter-item.color.label-right .term-label {
115
+ display: inline-block;
116
+ font-size: 1em;
117
+ }
118
  .yith-wcan-filters .yith-wcan-filter .filter-items .filter-item.color .term-color {
119
  border: 2px solid transparent;
120
  border-radius: var(--yith-wcan-color_swatches_border_radius, 4px);
166
  line-height: 1.4;
167
  text-align: center;
168
  }
169
+ .yith-wcan-filters .yith-wcan-filter .filter-items .filter-item.color.label-hide .term-label {
170
+ display: none;
171
+ }
172
  .yith-wcan-filters .yith-wcan-filter .filter-items .filter-item.active.color .term-color, .yith-wcan-filters .yith-wcan-filter .filter-items .filter-item.active.color .term-image {
173
  border-color: var(--yith-wcan-filters_colors_accent, #4e8ba2);
174
  }
175
+ .yith-wcan-filters .yith-wcan-filter .filter-items .filter-item.active.color:not(.no-color):not(.no-image):not(.label-right) > a:after {
176
  background-color: var(--yith-wcan-filters_colors_accent, #4e8ba2);
177
+ background-image: url("../images/close.svg");
178
+ background-position: center;
179
+ background-repeat: no-repeat;
180
+ background-size: 60%;
181
  border-radius: 100%;
182
  color: #fff;
183
+ content: "";
184
  font-size: 16px;
185
  height: 15px;
186
  line-height: 15px;
204
  display: block;
205
  height: 100%;
206
  }
207
+ .yith-wcan-filters .yith-wcan-filter .filter-items .filter-item.label.active.with-image:not(.label-right) > a {
208
  position: relative;
209
  }
210
+ .yith-wcan-filters .yith-wcan-filter .filter-items .filter-item.label.active.with-image:not(.label-right) > a:after {
211
  background-color: var(--yith-wcan-filters_colors_accent, #4e8ba2);
212
+ background-image: url("../images/close.svg");
213
+ background-position: center;
214
+ background-repeat: no-repeat;
215
+ background-size: 60%;
216
  border-radius: 100%;
217
  color: #fff;
218
+ content: "";
219
  font-size: 16px;
220
  height: 15px;
221
  line-height: 15px;
250
  .yith-wcan-filters .yith-wcan-filter .filter-items .filter-item.label:not(.with-image):not(.disabled):hover .item-count {
251
  color: var(--yith-wcan-labels_style_text_hover, #fff);
252
  }
253
+ .yith-wcan-filters .yith-wcan-filter .filter-items .filter-item.label.label-right.with-image {
254
+ background: none;
255
+ box-shadow: none;
256
+ display: block;
257
+ margin: 0 0 10px;
258
+ padding: 0;
259
+ text-align: left;
260
+ width: 100%;
261
+ }
262
+ .yith-wcan-filters .yith-wcan-filter .filter-items .filter-item.label.label-right.with-image > a {
263
+ display: inline-block;
264
+ color: var(--yith-wcan-anchors_style_text, #434343);
265
+ }
266
+ .yith-wcan-filters .yith-wcan-filter .filter-items .filter-item.label.label-right.with-image > a:hover {
267
+ color: var(--yith-wcan-anchors_style_text_hover, #4e8ba2);
268
+ }
269
+ .yith-wcan-filters .yith-wcan-filter .filter-items .filter-item.label.label-right.with-image.active > a {
270
+ color: var(--yith-wcan-anchors_style_text_active, #4e8ba2);
271
+ }
272
+ .yith-wcan-filters .yith-wcan-filter .filter-items .filter-item.label.label-right.with-image .term-image {
273
+ margin-right: 10px;
274
+ max-width: 70px;
275
+ vertical-align: middle;
276
+ }
277
+ .yith-wcan-filters .yith-wcan-filter .filter-items .filter-item.label.label-right.with-image .term-label {
278
+ display: inline-block;
279
+ vertical-align: middle;
280
+ }
281
  .yith-wcan-filters .yith-wcan-filter .filter-items .filter-item.label .term-image {
282
  display: inline-block;
283
  font-size: 0;
291
  display: block;
292
  font-size: 0.8rem;
293
  }
294
+ .yith-wcan-filters .yith-wcan-filter .filter-items .filter-item.label.label-hide.with-image .term-label {
295
+ display: none;
296
+ }
297
  .yith-wcan-filters .yith-wcan-filter .filter-items .filter-item.hierarchy-collapsable {
298
  position: relative;
299
  }
383
  vertical-align: top;
384
  width: calc(12.5% - 10px);
385
  }
386
+ .yith-wcan-filters .yith-wcan-filter.label-design .filter-items {
387
+ font-size: 0;
388
+ }
389
  .yith-wcan-filters .yith-wcan-filter .yith-wcan-tooltip {
390
  background-color: var(--yith-wcan-filters_colors_accent, #4e8ba2);
391
  border-radius: 0;
414
  top: calc(50% - 5px);
415
  width: 0;
416
  }
417
+ .yith-wcan-filters .yith-wcan-filter .yith-wcan-tooltip > img {
418
+ min-width: 40px;
419
+ height: auto;
420
+ }
421
  .yith-wcan-filters .yith-wcan-filter .filter-color .yith-wcan-tooltip,
422
  .yith-wcan-filters .yith-wcan-filter .filter-label .yith-wcan-tooltip {
423
  bottom: calc(100% + 15px);
437
  left: calc(50% - 2px);
438
  top: 100%;
439
  }
440
+ .yith-wcan-filters .yith-wcan-filter .price-slider.both {
441
  padding: 20px 10px;
442
  }
443
+ .yith-wcan-filters .yith-wcan-filter .price-slider.both:after {
444
+ content: "";
445
+ display: block;
446
+ clear: both;
447
+ }
448
+ .yith-wcan-filters .yith-wcan-filter .price-slider.both .price-slider-min,
449
+ .yith-wcan-filters .yith-wcan-filter .price-slider.both .price-slider-max {
450
+ min-width: 0;
451
+ width: 50px;
452
+ }
453
+ .yith-wcan-filters .yith-wcan-filter .price-slider.both .irs {
454
+ margin-bottom: 20px;
455
+ }
456
+ .yith-wcan-filters .yith-wcan-filter .price-slider.both .price-slider-min {
457
+ float: left;
458
+ }
459
+ .yith-wcan-filters .yith-wcan-filter .price-slider.both .price-slider-max {
460
+ float: right;
461
+ }
462
+ .yith-wcan-filters .yith-wcan-filter .price-slider.fields {
463
+ padding: 20px 0;
464
+ }
465
+ .yith-wcan-filters .yith-wcan-filter .price-slider.fields .price-slider-min,
466
+ .yith-wcan-filters .yith-wcan-filter .price-slider.fields .price-slider-max {
467
+ min-width: 0;
468
+ width: 70px;
469
+ margin: 0 5px;
470
  }
471
  .yith-wcan-filters .yith-wcan-filter .price-slider .irs-bar,
472
  .yith-wcan-filters .yith-wcan-filter .price-slider .irs-line {
519
  top: calc(50% - 5px);
520
  width: 0;
521
  }
522
+ .yith-wcan-filters .yith-wcan-filter .price-slider .irs-from > img,
523
+ .yith-wcan-filters .yith-wcan-filter .price-slider .irs-to > img,
524
+ .yith-wcan-filters .yith-wcan-filter .price-slider .irs-single > img {
525
+ min-width: 40px;
526
+ height: auto;
527
+ }
528
  .yith-wcan-filters .yith-wcan-filter .price-slider .irs-from:before,
529
  .yith-wcan-filters .yith-wcan-filter .price-slider .irs-to:before,
530
  .yith-wcan-filters .yith-wcan-filter .price-slider .irs-single:before {
608
  }
609
  .yith-wcan-filters .yith-wcan-filter .yith-wcan-dropdown .dropdown-wrapper .matching-items::-webkit-scrollbar {
610
  -webkit-appearance: none;
611
+ width: 6px;
612
  }
613
  .yith-wcan-filters .yith-wcan-filter .yith-wcan-dropdown .dropdown-wrapper .matching-items::-webkit-scrollbar-thumb {
614
+ background-color: var(--yith-wcan-filters_colors_accent, #4e8ba2);
615
  border-radius: 4px;
 
616
  }
617
  .yith-wcan-filters .yith-wcan-filter .yith-wcan-dropdown .dropdown-wrapper .show-more {
618
  color: var(--yith-wcan-anchors_style_text_hover, #4e8ba2);
763
  }
764
  .yith-wcan-filters.filters-modal .filters-container::-webkit-scrollbar {
765
  -webkit-appearance: none;
766
+ width: 6px;
767
  }
768
  .yith-wcan-filters.filters-modal .filters-container::-webkit-scrollbar-thumb {
769
+ background-color: var(--yith-wcan-filters_colors_accent, #4e8ba2);
770
  border-radius: 4px;
 
771
  }
772
  .yith-wcan-filters.filters-modal .filters-container > .clear-selection {
773
  cursor: pointer;
830
  right: 0;
831
  width: 100%;
832
  }
833
+ .yith-wcan-filters.horizontal:not(.filters-modal) {
834
+ text-align: left;
835
+ }
836
+ .yith-wcan-filters.horizontal:not(.filters-modal) .yith-wcan-filter {
837
+ display: inline-block;
838
+ margin-bottom: 8px;
839
+ min-width: 200px;
840
+ position: relative;
841
+ vertical-align: top;
842
+ }
843
+ .yith-wcan-filters.horizontal:not(.filters-modal) .yith-wcan-filter h4.collapsable {
844
+ border: 1px solid #D7D7D7;
845
+ border-radius: 4px;
846
+ font-weight: 400;
847
+ margin-top: 0;
848
+ margin-bottom: 10px;
849
+ margin-right: 15px;
850
+ padding: 10px 40px 10px 20px;
851
+ }
852
+ .yith-wcan-filters.horizontal:not(.filters-modal) .yith-wcan-filter h4.collapsable:after {
853
+ right: 15px;
854
+ }
855
+ .yith-wcan-filters.horizontal:not(.filters-modal) .yith-wcan-filter h4.collapsable span.filter-count {
856
+ border: 2px solid var(--yith-wcan-filters_colors_accent, #4e8ba2);
857
+ padding: 0 5px;
858
+ font-size: 0.8em;
859
+ margin: 0 10px;
860
+ }
861
+ .yith-wcan-filters.horizontal:not(.filters-modal) .yith-wcan-filter h4.collapsable.opened,
862
+ .yith-wcan-filters.horizontal:not(.filters-modal) .yith-wcan-filter h4.collapsable.opened + .filter-content {
863
+ border: 1px solid rgba(var(--yith-wcan-filters_colors_accent_r, 73), var(--yith-wcan-filters_colors_accent_g, 139), var(--yith-wcan-filters_colors_accent_b, 162), 0.3);
864
+ box-shadow: 0 0 7px 0 rgba(var(--yith-wcan-filters_colors_accent_r, 73), var(--yith-wcan-filters_colors_accent_g, 139), var(--yith-wcan-filters_colors_accent_b, 162), 0.3);
865
+ }
866
+ .yith-wcan-filters.horizontal:not(.filters-modal) .yith-wcan-filter h4.collapsable + .filter-content {
867
+ background-color: #fff;
868
+ border: 1px solid #D7D7D7;
869
+ border-radius: 4px;
870
+ min-width: 300px;
871
+ position: absolute;
872
+ padding: 20px;
873
+ width: 100%;
874
+ z-index: 1001;
875
+ }
876
+ .yith-wcan-filters.horizontal:not(.filters-modal) .yith-wcan-filter h4.collapsable + .filter-content .filter-content-footer {
877
+ background-color: #f0f0f0;
878
+ margin: 20px -20px -20px;
879
+ padding: 15px 20px;
880
+ text-align: right;
881
+ }
882
+ .yith-wcan-filters.horizontal:not(.filters-modal) .yith-wcan-filter h4.collapsable + .filter-content .filter-content-footer .apply-filters {
883
+ margin: 0;
884
+ }
885
+ .yith-wcan-filters.horizontal:not(.filters-modal) .yith-wcan-filter h4.collapsable + .filter-content .filter-content-footer .clear-selection {
886
+ background: #CBCBCB;
887
+ border-color: #CBCBCB;
888
+ color: #434343;
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
+ }
906
+ .yith-wcan-filters.horizontal:not(.filters-modal) .yith-wcan-filter.label-design .filter-items {
907
+ padding-top: 8px;
908
+ }
909
+ .yith-wcan-filters.horizontal:not(.filters-modal) .yith-wcan-filter .dropdown-wrapper .search-field-container {
910
+ margin-bottom: 20px;
911
+ }
912
+ .yith-wcan-filters.horizontal:not(.filters-modal) .yith-wcan-filter .dropdown-wrapper .search-field-container input {
913
+ width: 100%;
914
+ }
915
+ .yith-wcan-filters.horizontal:not(.filters-modal) .yith-wcan-filter .dropdown-wrapper .matching-items a {
916
+ cursor: pointer;
917
+ }
918
+ .yith-wcan-filters.horizontal:not(.filters-modal) form > .apply-filters {
919
+ margin-top: 0;
920
+ }
921
 
922
  body.admin-bar .yith-wcan-filters.filters-modal {
923
  top: 32px;
939
  top: 32px;
940
  }
941
 
942
+ @media (max-width: 991px) {
943
+ body.filters-in-modal .yith-wcan-filters {
944
+ display: none;
945
+ }
946
+ }
947
  @media (max-width: 782px) {
948
  body.admin-bar .yith-wcan-filters.filters-modal {
949
  top: 46px;
980
  }
981
  .yith-wcan-active-filters .active-filter .active-filter-label:after {
982
  background-color: var(--yith-wcan-filters_colors_accent, #4e8ba2);
983
+ background-image: url("../images/close.svg");
984
+ background-position: center;
985
+ background-repeat: no-repeat;
986
+ background-size: 60%;
987
  border-radius: 100%;
988
  color: #fff;
989
+ content: "";
990
  font-size: 16px;
991
  height: 15px;
992
  line-height: 15px;
assets/css/shortcodes.css.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"sourceRoot":"","sources":["../scss/shortcodes.scss"],"names":[],"mappings":";AA8IA;AAEA;EACC;EACA;;AAGC;EACC;;AAIF;EACC;;AAGA;EACC;;AAEA;EAxIF;EACA;;AAEA;EACC;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAGD;EAeA;;AAXA;EAOA;;AAkHG;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,OAhNU;EAiNV;;AAGD;EAEC;;AAGD;EACC;;AAGD;EAEC,OA3NY;EA4NZ;;AAGD;EAEC;;AAID;EACC;EACA;;AAEA;EACC;EACA;;AAGD;EACC;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAEA;EACC;EACA;EACA;;AAGD;EACC;EACA;EACA;EACA;;AAGD;EACC,cA3QQ;;AA+QV;EACC;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAEA;EACC,cA3RQ;;AA8RT;EACC;EACA;;AAIF;EAEC;;AAGD;EACC;EACA;EACA;EACA;;AAKD;EACC,cAnTS;;AAsTV;EArPJ,kBAjEc;EAkEd;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AA+OG;EACC;EACA;EACA,eA3TW;EA4TX;EACA;EACA;;AAEA;EACC;EACA;EACA;;AAGD;EACC;;AAEA;EA5QL,kBAjEc;EAkEd;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EAmQM;EACA;;AAIF;EAEC;EACA,OAxVS;;AA2VV;EACC;EACA;EACA;;AAEA;AAAA;EAEC;;AAIF;EACC;EACA;EACA;;AAEA;AAAA;EAEC;;AAIF;EACC;EACA;EACA;;AAEA;EACC;EACA;;AAIF;EACC;EACA;;AAKF;EACC;;AAEA;EACC;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAGD;EAlWJ;;AAsWI;EA1WJ;;AA8WI;EACC;;AAKF;EACC,OA7ZY;EA8ZZ;;AAID;EA1ZH;EACA;EACA;EACA;;AA4ZG;EACC,kBA7aU;EA8aV,cA9aU;;AAgbX;EACC,kBAjbU;;AAmIb;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;;AA4TC;EA1VD,kBAhGc;EAiGd;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EAqVE;EACA;EACA;;AArVF;EACC;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AA8UC;AAAA;EACC;EACA;;AAIF;EACC;;AAEA;EACC;;AAMD;AAAA;EACC;EACA;EACA;EACA;EACA;;AAKF;EACC;;AAEA;EACC;;AAGD;AAAA;EAEC;EACA,eApeY;;AAueb;EACC,kBA5eW;;AA+eZ;EACC;EACA,kBAjfW;EAkfX;EACA;EACA;EACA;;AAGD;AAAA;EAEC;EACA;;AAGD;AAAA;AAAA;EA9ZF,kBAhGc;EAiGd;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EA2ZG;;AAzZH;AAAA;AAAA;EACC;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AA+YE;AAAA;AAAA;EACC;EACA;EACA;EACA;EACA;;AAMH;EACC;EACA,eA9gBa;EA+gBb;EA/fF;EACA;;AAEA;EACC;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAGD;EAeA;;AAXA;EAOA;;AA0eE;EACC;EACA;EACA,eAthBY;EAuhBZ;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAEA;EACC;EACA;;AAEA;EACC;EACA;;AAEA;EACC,cA7iBQ;EA8iBR;EACA,eA/iBQ;;AAmjBV;EACC;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAIF;EACC;EACA;EACA;;AAEA;EACC;;AAEA;EACC;EACA;;AArhBN;EACC;EACA;;AAGD;EACC,eAvDc;EAwDd,kBAzDa;;AA8kBX;EACC;EACA;EACA;EACA;EACA;;AAEA;EACC,OAxlBS;;AA6lBZ;EACC;;AAEA;EAplBH;EACA;EACA;EACA;;AAslBE;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,eA5oBY;EA6oBZ;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAGD;EACC;EACA;EACA;EACA;EACA,kBAhqBW;EAiqBX,cAjqBW;EAkqBX;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,kBAzsBW;EA0sBX;;AAIF;EACC,OAzsBU;;AA8sBZ;EACC;;AAID;EACC;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EAEA;EACA;;AAEA;EACC,YAhuBU;EAiuBV;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAEA;EACC;;AAIF;EACC;EACA;EACA;EACA;;AAvsBF;EACC;EACA;;AAGD;EACC,eAvDc;EAwDd,kBAzDa;;AA6vBZ;EACC;EACA;EACA;;AAIF;EACC;;AAGD;EACC;EACA,eAzwBa;EA0wBb;EACA;;AAEA;EACC;;AAEA;EACC;;AAIF;EACC;;AAIF;EACC;EACA;EACA;;AAGD;EACC,OApyBY;EAqyBZ;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAEA;EACC,OApzBW;;AAwzBb;EACC,kBAzzBY;EA0zBZ,cA1zBY;EA2zBZ;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;;AAKH;EACC;;;AAGD;EACC;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA,SA/0BS;;AAi1BT;EACC;;;AAIF;EACC;IACC;;;AAIF;AAEA;EACC;EACA;;AAEA;EACC;EACA;EACA;;AAEA;EACC;EACA;;AAGD;EApyBD;EACA;EACA,OAlFc;EAmFd;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EA4xBE;;AAEA;EAzzBF,kBAjEc;EAkEd;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAizBE;EAj3BF;EACA;EACA;EACA;EAg3BG;;AAKH;EACC;;AAGD;EACC,OAp4BW;;AAu4BZ;EA5zBA;EACA;EACA,OAlFc;EAmFd;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EAozBC,kBAh5Ba;EAi5Bb;;AAEA;EACC;EACA;;;AAKH;AAEA;EACC;EACA,eA15Be;EA25Bf;EACA,OA/5Bc;EAg6Bd;EACA,eAl6Bc;;AAo6Bd;EACC;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAGD;EACC,YAj7Ba;EAk7Bb,cAl7Ba;EAm7Bb;;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;;;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"}
assets/images/close.svg ADDED
@@ -0,0 +1 @@
 
1
+ <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 36 36"><path stroke="white" fill="white" stroke-width="5" d="M29.313 5.272l1.414 1.414-24.04 24.04-1.415-1.413z"/><path stroke="white" fill="white" stroke-width="5" d="M6.687 5.273l24.04 24.04-1.413 1.415L5.272 6.688z"/></svg>
assets/js/shortcodes/config.js ADDED
@@ -0,0 +1,7 @@
 
 
 
 
 
 
 
1
+ 'use strict';
2
+
3
+ /* global globalThis, jQuery, yith_wcan_shortcodes, accounting */
4
+
5
+ const $ = jQuery; // we can do this as WebPack will compact all together inside a closure.
6
+
7
+ export { $ };
assets/js/shortcodes/index.js ADDED
@@ -0,0 +1,30 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ 'use strict';
2
+
3
+ /* global globalThis, jQuery, yith_wcan_shortcodes, accounting */
4
+
5
+ import YITH_WCAN_Filter from './modules/yith-wcan-filter';
6
+ import YITH_WCAN_Reset_Button from './modules/yith-wcan-reset-button';
7
+ import YITH_WCAN_Preset from './modules/yith-wcan-preset';
8
+
9
+ jQuery( function ( $ ) {
10
+ $( document )
11
+ .on(
12
+ 'yith_wcan_init_shortcodes yith_plugin_fw_gutenberg_success_do_shortcode',
13
+ function () {
14
+ $( '.yith-wcan-filters' )
15
+ .not( '.enhanced' )
16
+ .each( function () {
17
+ new YITH_WCAN_Preset( $( this ) );
18
+ } );
19
+
20
+ $( '.yith-wcan-reset-filters' )
21
+ .not( '.enhanced' )
22
+ .each( function () {
23
+ new YITH_WCAN_Reset_Button( $( this ) );
24
+ } );
25
+ }
26
+ )
27
+ .trigger( 'yith_wcan_init_shortcodes' );
28
+
29
+ globalThis.product_filter = new YITH_WCAN_Filter();
30
+ } );
assets/js/shortcodes/modules/yith-wcan-dropdown.js ADDED
@@ -0,0 +1,604 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ 'use strict';
2
+
3
+ /* global globalThis, jQuery, yith_wcan_shortcodes, accounting */
4
+
5
+ import { $ } from '../config.js';
6
+
7
+ export default class YITH_WCAN_Dropdown {
8
+ // current button
9
+ $originalSelect = null;
10
+
11
+ // main element
12
+ $_main = null;
13
+
14
+ // label element
15
+ $_label = null;
16
+
17
+ // dropdown
18
+ $_dropdown = null;
19
+
20
+ // search input
21
+ $_search = null;
22
+
23
+ // show more link
24
+ $_showMore = null;
25
+
26
+ // items list
27
+ $_items = null;
28
+
29
+ // current page
30
+ currentPage = 1;
31
+
32
+ // options
33
+ options = {};
34
+
35
+ // init object
36
+ constructor( el, opts ) {
37
+ this.$originalSelect = el;
38
+
39
+ if ( ! this.$originalSelect.is( 'select' ) ) {
40
+ return;
41
+ }
42
+
43
+ const defaultPerPage = this.$originalSelect.data( 'per_page' ),
44
+ defaultOrder = this.$originalSelect.data( 'order' ),
45
+ defaultAll = this.$originalSelect.data( 'all-label' ),
46
+ defaults = {
47
+ showSearch: this.$originalSelect.data( 'show_search' ),
48
+ paginate: this.$originalSelect.data( 'paginate' ),
49
+ perPage: defaultPerPage ? defaultPerPage : 10,
50
+ order: defaultOrder ? defaultOrder : 'ASC',
51
+ getElements: null,
52
+ labels: {
53
+ emptyLabel: defaultAll
54
+ ? defaultAll
55
+ : yith_wcan_shortcodes.labels.empty_option,
56
+ searchPlaceholder:
57
+ yith_wcan_shortcodes.labels.search_placeholder,
58
+ noItemsFound: yith_wcan_shortcodes.labels.no_items,
59
+ showMore: yith_wcan_shortcodes.labels.show_more,
60
+ },
61
+ };
62
+
63
+ this.options = $.extend( defaults, opts );
64
+
65
+ this._hideSelect();
66
+ this._initTemplate();
67
+ this._initActions();
68
+
69
+ this.$originalSelect.data( 'dropdown', this ).addClass( 'enhanced' );
70
+ }
71
+
72
+ // hide select
73
+ _hideSelect() {
74
+ this.$originalSelect.hide();
75
+ }
76
+
77
+ // create dropdown
78
+ _initTemplate() {
79
+ const $mainSpan = $( '<div/>', {
80
+ class: 'yith-wcan-dropdown closed',
81
+ } ),
82
+ $labelSpan = $( '<div/>', {
83
+ class: 'dropdown-label',
84
+ html: this.getLabel(),
85
+ } ),
86
+ $dropdownSpan = $( '<div>', {
87
+ class: 'dropdown-wrapper',
88
+ } ),
89
+ $matchingItemsList = $( '<ul/>', {
90
+ class: 'matching-items filter-items',
91
+ } );
92
+
93
+ $dropdownSpan.append( $matchingItemsList );
94
+ $mainSpan.append( $labelSpan ).append( $dropdownSpan );
95
+
96
+ if ( this.options.showSearch ) {
97
+ this._initSearchTemplate( $dropdownSpan );
98
+ }
99
+
100
+ if ( this.options.paginate ) {
101
+ this._initShowMoreTemplate( $dropdownSpan );
102
+ }
103
+
104
+ this.$originalSelect.after( $mainSpan );
105
+ this.$_main = $mainSpan;
106
+ this.$_label = $labelSpan;
107
+ this.$_dropdown = $dropdownSpan;
108
+ this.$_items = $matchingItemsList;
109
+ }
110
+
111
+ // create search field
112
+ _initSearchTemplate( $dropdwonSpan ) {
113
+ const $container = $( '<div/>', {
114
+ class: 'search-field-container',
115
+ } ),
116
+ $search = $( '<input/>', {
117
+ name: 's',
118
+ class: 'search-field',
119
+ type: 'search',
120
+ placeholder: this.options.labels.searchPlaceholder,
121
+ } );
122
+
123
+ $container.append( $search ).prependTo( $dropdwonSpan );
124
+ this.$_search = $search;
125
+ }
126
+
127
+ // create showMore field
128
+ _initShowMoreTemplate( $dropdwonSpan ) {
129
+ const $showMore = $( '<a/>', {
130
+ class: 'show-more',
131
+ text: this.options.labels.showMore.replace(
132
+ '%d',
133
+ this.options.perPage
134
+ ),
135
+ } );
136
+
137
+ $showMore.on( 'click', this.loadNextPage.bind( this ) ).hide();
138
+
139
+ $dropdwonSpan.append( $showMore );
140
+ this.$_showMore = $showMore;
141
+ }
142
+
143
+ // init actions performed over dropdown elements
144
+ _initActions() {
145
+ const self = this;
146
+
147
+ // main open event
148
+ this.$_main?.on( 'click', ( ev ) => {
149
+ ev.stopPropagation();
150
+ self.toggleDropdown();
151
+ } );
152
+ this.$_dropdown.on( 'click', ( ev ) => {
153
+ ev.stopPropagation();
154
+ } );
155
+
156
+ // search event
157
+ this.$_search?.on( 'keyup search', () => {
158
+ self._populateItems();
159
+ } );
160
+
161
+ // select event
162
+ this.$_items.on( 'change', ':input', function () {
163
+ let $li = $( this ).closest( 'li' ),
164
+ value = $li.data( 'value' ),
165
+ isActive = false;
166
+
167
+ if (
168
+ $li.hasClass( 'disabled' ) &&
169
+ ! self.isValueSelected( value )
170
+ ) {
171
+ return false;
172
+ }
173
+
174
+ $li.toggleClass( 'active' );
175
+ isActive = $li.hasClass( 'active' );
176
+
177
+ self._changeItemStatus( value, isActive );
178
+ } );
179
+ this.$_items.on( 'click', 'li:not(.checkbox) a', function ( ev ) {
180
+ let $li = $( this ).closest( 'li' ),
181
+ value = $li.data( 'value' ),
182
+ isActive = false;
183
+
184
+ ev.preventDefault();
185
+
186
+ if (
187
+ $li.hasClass( 'disabled' ) &&
188
+ ! self.isValueSelected( value )
189
+ ) {
190
+ return false;
191
+ }
192
+
193
+ $li.toggleClass( 'active' );
194
+ isActive = $li.hasClass( 'active' );
195
+
196
+ if ( isActive ) {
197
+ $li.siblings().removeClass( 'active' );
198
+ }
199
+
200
+ self._changeItemStatus( value, isActive );
201
+ } );
202
+ this.$_items.on( 'click', 'label > a', function ( ev ) {
203
+ const input = $( this ).parent().find( ':input' );
204
+
205
+ ev.preventDefault();
206
+
207
+ if (
208
+ input.is( '[type="radio"]' ) ||
209
+ input.is( '[type="checkbox"]' )
210
+ ) {
211
+ input.prop( 'checked', ! input.prop( 'checked' ) );
212
+ }
213
+
214
+ input.change();
215
+ } );
216
+
217
+ // select change
218
+ this.$originalSelect.on( 'change', ( ev, selfOriginated ) => {
219
+ if ( selfOriginated ) {
220
+ return;
221
+ }
222
+
223
+ self.$_items.find( 'li' ).each( function () {
224
+ const value = $( this ).data( 'value' );
225
+
226
+ if ( self.isValueSelected( value ) ) {
227
+ self._selectItem( value );
228
+ } else {
229
+ self._deselectItem( value );
230
+ }
231
+ } );
232
+
233
+ self.updateLabel();
234
+ } );
235
+
236
+ // close dropdown on external click
237
+ $( document ).on( 'click', this.closeDropdown.bind( this ) );
238
+ }
239
+
240
+ // open dropdown
241
+ openDropdown() {
242
+ this.$_main?.addClass( 'open' ).removeClass( 'closed' );
243
+ this._afterDropdownOpen();
244
+ }
245
+
246
+ // close dropdown
247
+ closeDropdown() {
248
+ this.$_main?.removeClass( 'open' ).addClass( 'closed' );
249
+ }
250
+
251
+ // close other dropdowns
252
+ _closeOtherDropdowns() {
253
+ const self = this,
254
+ dropdowns = $( document )
255
+ .find( 'select.enhanced' )
256
+ .filter( function ( i, select ) {
257
+ const $el = $( select );
258
+
259
+ return (
260
+ !! $el.data( 'dropdown' ) &&
261
+ ! $el.is( self.$originalSelect )
262
+ );
263
+ } );
264
+
265
+ dropdowns.each( function () {
266
+ $( this ).data( 'dropdown' ).closeDropdown();
267
+ } );
268
+ }
269
+
270
+ // toggle dropdown
271
+ toggleDropdown() {
272
+ this.$_main?.toggleClass( 'open' ).toggleClass( 'closed' );
273
+
274
+ if ( this.$_main?.hasClass( 'open' ) ) {
275
+ this._afterDropdownOpen();
276
+ }
277
+ }
278
+
279
+ // perform operations after dropdown is open
280
+ _afterDropdownOpen() {
281
+ this._closeOtherDropdowns();
282
+
283
+ if ( this.$_search?.length ) {
284
+ this.$_search.val( '' );
285
+ }
286
+
287
+ this._populateItems();
288
+ }
289
+
290
+ // get elements
291
+ getMatchingElements( search, limit ) {
292
+ let matchingElements = [],
293
+ $options = this.getOptions(),
294
+ promise;
295
+
296
+ promise = new Promise( ( resolve ) => {
297
+ // first of all, search across select option
298
+ $options.each( function () {
299
+ const t = $( this ),
300
+ value = t.val(),
301
+ label = t.html(),
302
+ regex = new RegExp( '.*' + search + '.*', 'i' ),
303
+ show =
304
+ ! search || regex.test( value ) || regex.test( label );
305
+
306
+ if ( show ) {
307
+ matchingElements.push( {
308
+ value,
309
+ label,
310
+ } );
311
+ }
312
+ } );
313
+
314
+ // then retrieve additional items
315
+ if ( this.options.getElements ) {
316
+ // we're expecting key => value pairs
317
+ this.options
318
+ .getElements( search )
319
+ .then( ( retrievedElements ) => {
320
+ if ( retrievedElements ) {
321
+ // reformat retrieved array
322
+ retrievedElements = retrievedElements.reduce(
323
+ ( a, v, i ) => {
324
+ a.push( { label: i, value: v } );
325
+ return a;
326
+ },
327
+ []
328
+ );
329
+
330
+ // merge found results with options
331
+ matchingElements = $.extend(
332
+ matchingElements,
333
+ retrievedElements
334
+ );
335
+ }
336
+
337
+ resolve( this._formatItems( matchingElements, limit ) );
338
+ } );
339
+ } else {
340
+ resolve( this._formatItems( matchingElements, limit ) );
341
+ }
342
+ } );
343
+
344
+ return promise;
345
+ }
346
+
347
+ // format items as key/value pairs for further processing
348
+ _formatItems( items, limit ) {
349
+ let indexes = [],
350
+ hasMore = false;
351
+
352
+ // remove duplicates and sort array of results
353
+ items
354
+ .filter( ( v ) => {
355
+ if ( -1 === indexes.indexOf( v.value ) ) {
356
+ indexes.push( v.value );
357
+ return true;
358
+ }
359
+
360
+ return false;
361
+ } )
362
+ .sort( ( a, b ) => {
363
+ const order = this.options.order,
364
+ mod = order === 'ASC' ? 1 : -1;
365
+
366
+ if ( a.value < b.value ) {
367
+ return -1 * mod;
368
+ } else if ( a.value > b.value ) {
369
+ return mod;
370
+ }
371
+
372
+ return 0;
373
+ } );
374
+
375
+ // paginate when needed
376
+ if ( limit ) {
377
+ hasMore = limit < Object.keys( items ).length;
378
+ items = items.slice( 0, limit );
379
+ }
380
+
381
+ return {
382
+ items,
383
+ hasMore,
384
+ };
385
+ }
386
+
387
+ // generate item to append to items list
388
+ _generateItem( value, label ) {
389
+ let active = this.isValueSelected( value ),
390
+ option = this.getOptionByValue( value ),
391
+ $item = $( '<li/>', {
392
+ 'data-value': value,
393
+ class: option.length ? option.attr( 'class' ) : '',
394
+ } ),
395
+ $anchor;
396
+
397
+ if ( option.length ) {
398
+ const template = option.data( 'template' ),
399
+ count = option.data( 'count' );
400
+
401
+ label = template ? template : label;
402
+
403
+ if ( !! count ) {
404
+ label += count;
405
+ }
406
+ }
407
+
408
+ $anchor = $( '<a/>', {
409
+ href: option.length ? option.data( 'filter_url' ) : '#',
410
+ html: label,
411
+ 'data-title': option.length ? option.data( 'title' ) : '',
412
+ } );
413
+
414
+ if ( this.$originalSelect.prop( 'multiple' ) ) {
415
+ const $checkbox = $( '<input/>', {
416
+ type: 'checkbox',
417
+ value,
418
+ } ),
419
+ $label = $( '<label>' );
420
+
421
+ $checkbox.prop( 'checked', active );
422
+ $label.prepend( $checkbox ).append( $anchor );
423
+ $item.append( $label ).addClass( 'checkbox' );
424
+ } else {
425
+ $item.append( $anchor );
426
+ }
427
+
428
+ active ? $item.addClass( 'active' ) : $item.removeClass( 'active' );
429
+
430
+ return $item;
431
+ }
432
+
433
+ // populate items list
434
+ _populateItems( page ) {
435
+ let search = this.$_search?.length ? this.$_search.val() : '',
436
+ perPage = this.options.paginate ? this.options.perPage : 0,
437
+ limit;
438
+
439
+ page = page ? parseInt( page ) : 1;
440
+ limit = page * perPage;
441
+
442
+ this.getMatchingElements( search, limit ).then( ( resultSet ) => {
443
+ let matchingItems = resultSet.items,
444
+ items = [],
445
+ hasMore = false;
446
+
447
+ // remove all previous items
448
+ this._emptyItems();
449
+ this._hideLoadMore();
450
+
451
+ if ( ! matchingItems.length ) {
452
+ items.push(
453
+ $( '<li/>', { text: this.options.labels.noItemsFound } )
454
+ );
455
+
456
+ this.currentPage = 1;
457
+ } else {
458
+ for ( const v of matchingItems ) {
459
+ if ( v.value === '' ) {
460
+ items.unshift( this._generateItem( v.value, v.label ) );
461
+ } else {
462
+ items.push( this._generateItem( v.value, v.label ) );
463
+ }
464
+ }
465
+
466
+ this.currentPage = page;
467
+ hasMore = resultSet.hasMore;
468
+ }
469
+
470
+ this.$_items.append( items );
471
+
472
+ $( document ).trigger( 'yith_wcan_dropdown_updated' );
473
+
474
+ if ( hasMore ) {
475
+ this._showLoadMore();
476
+ }
477
+ } );
478
+ }
479
+
480
+ // load next page of items
481
+ loadNextPage() {
482
+ const page = this.currentPage + 1;
483
+
484
+ this._populateItems( page );
485
+ }
486
+
487
+ // set an item as active
488
+ _selectItem( value ) {
489
+ return this._changeItemStatus( value, true );
490
+ }
491
+
492
+ // disable an item
493
+ _deselectItem( value ) {
494
+ return this._changeItemStatus( value, false );
495
+ }
496
+
497
+ // change item status
498
+ _changeItemStatus( value, status ) {
499
+ const $option = this.$originalSelect.find(
500
+ `option[value="${ value }"]`
501
+ );
502
+
503
+ if ( $option.length ) {
504
+ $option.prop( 'selected', status );
505
+
506
+ this.closeDropdown();
507
+ this.updateLabel();
508
+
509
+ this.$originalSelect.trigger( 'change', [ true ] );
510
+
511
+ return true;
512
+ }
513
+ return false;
514
+ }
515
+
516
+ // empty items list
517
+ _emptyItems() {
518
+ this.$_items.html( '' );
519
+ }
520
+
521
+ // show "Load more" link
522
+ _showLoadMore() {
523
+ this.$_showMore.show();
524
+ }
525
+
526
+ // hide "Load more" link
527
+ _hideLoadMore() {
528
+ this.$_showMore.hide();
529
+ }
530
+
531
+ // returns select label
532
+ getLabel() {
533
+ return this.hasSelectedValues()
534
+ ? this.getSelectedLabels().join( ', ' )
535
+ : this.options.labels.emptyLabel;
536
+ }
537
+
538
+ // update label to match new selection
539
+ updateLabel() {
540
+ const label = this.getLabel();
541
+
542
+ this.$_label?.html( label );
543
+ }
544
+
545
+ // returns select options
546
+ getOptions() {
547
+ return this.$originalSelect.find( 'option' );
548
+ }
549
+
550
+ // checks whether select has selected values
551
+ hasSelectedValues() {
552
+ return this.getSelectedOptions().length;
553
+ }
554
+
555
+ // checks whether a value is selected
556
+ isValueSelected( value ) {
557
+ const found = this.getSelectedValues().indexOf( value.toString() );
558
+
559
+ return -1 !== found;
560
+ }
561
+
562
+ // retrieve selected options
563
+ getSelectedOptions() {
564
+ return this.$originalSelect.find( 'option' ).filter( ':selected' );
565
+ }
566
+
567
+ // retrieves an option node by value
568
+ getOptionByValue( value ) {
569
+ return this.$originalSelect.find( `option[value="${ value }"]` );
570
+ }
571
+
572
+ // retrieve labels for selected options
573
+ getSelectedLabels() {
574
+ const labels = [];
575
+
576
+ this.getSelectedOptions().each( function () {
577
+ let $option = $( this ),
578
+ template = $option.data( 'template' );
579
+
580
+ template = template
581
+ ? template
582
+ : $option.html().replace( /\([0-9]*\)/, '' );
583
+
584
+ labels.push( template );
585
+ } );
586
+
587
+ return labels;
588
+ }
589
+
590
+ // retrieve values for selected options
591
+ getSelectedValues() {
592
+ const values = [];
593
+
594
+ this.getSelectedOptions().each( function () {
595
+ values.push( $( this ).val() );
596
+ } );
597
+
598
+ return values;
599
+ }
600
+
601
+ destroy() {
602
+ // TBD
603
+ }
604
+ }
assets/js/shortcodes/modules/yith-wcan-filter-labels.js ADDED
@@ -0,0 +1,59 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ 'use strict';
2
+
3
+ /* global globalThis, jQuery, yith_wcan_shortcodes, accounting */
4
+
5
+ import { $ } from '../config.js';
6
+
7
+ export default class YITH_WCAN_Filter_Labels {
8
+ // current label set
9
+ $label_set = null;
10
+
11
+ // labels of current set
12
+ $labels = false;
13
+
14
+ // init object
15
+ constructor( el ) {
16
+ // current label set
17
+ this.$label_set = el;
18
+
19
+ this._initLabels();
20
+
21
+ this.$label_set.data( 'filter_labels', this ).addClass( 'enhanced' );
22
+ }
23
+
24
+ // init labels
25
+ _initLabels() {
26
+ const self = this;
27
+
28
+ this.getLabels().each( function () {
29
+ const $label = $( this );
30
+
31
+ self._initLabel( $label );
32
+ } );
33
+ }
34
+
35
+ // init label
36
+ _initLabel( $label ) {
37
+ $label.on( 'click', () => this.disableLabel( $label ) );
38
+ }
39
+
40
+ // get labels
41
+ getLabels() {
42
+ if ( false === this.$labels ) {
43
+ this.$labels = this.$label_set.find( '.active-filter-label' );
44
+ }
45
+
46
+ return this.$labels;
47
+ }
48
+
49
+ // disable filter
50
+ disableLabel( $label ) {
51
+ const properties = $label.data( 'filters' );
52
+ // search for preset
53
+ $( '.yith-wcan-filters' ).each( function () {
54
+ const preset = $( this ).data( 'preset' );
55
+
56
+ preset.deactivateFilterByProperties( properties, true );
57
+ } );
58
+ }
59
+ }
assets/js/shortcodes/modules/yith-wcan-filter.js ADDED
@@ -0,0 +1,352 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ 'use strict';
2
+
3
+ /* global globalThis, jQuery, yith_wcan_shortcodes, accounting */
4
+
5
+ import { $ } from '../config.js';
6
+
7
+ export default class YITH_WCAN_Filter {
8
+ // currently executing xhr
9
+ xhr = null;
10
+
11
+ // flag set during ajax call handling
12
+ doingAjax = false;
13
+
14
+ // register original url search param
15
+ originalSearch = location.search;
16
+
17
+ // flag set once init has executed
18
+ initialized = false;
19
+
20
+ // init object
21
+ constructor() {
22
+ const head = $( 'head' ).html(),
23
+ pageTitle = document.title,
24
+ alternativeUrl = this.searchAlternativeUrl( head );
25
+
26
+ alternativeUrl &&
27
+ ! this.doingAjax &&
28
+ ! this.initialized &&
29
+ ! yith_wcan_shortcodes.ajax_filters &&
30
+ this.pushUrlToHistory( alternativeUrl, pageTitle );
31
+
32
+ this.initialized = true;
33
+ }
34
+
35
+ // execute call to filter products in current view
36
+ doFilter( filters, target, preset ) {
37
+ let targetUrl,
38
+ $target = target ? $( target ) : $( 'body' ),
39
+ customFilters;
40
+
41
+ // filter properties
42
+ customFilters = $(
43
+ document
44
+ ).triggerHandler( 'yith_wcan_filters_parameters', [ filters ] );
45
+
46
+ if ( !! customFilters ) {
47
+ filters = customFilters;
48
+ }
49
+
50
+ // block elements before filtering
51
+ $target && this.block( $target );
52
+
53
+ // calculate target url
54
+ targetUrl = this.buildUrl( filters );
55
+
56
+ // if no ajax, simply change page url
57
+ if ( ! yith_wcan_shortcodes.ajax_filters ) {
58
+ window.location = targetUrl;
59
+ return;
60
+ }
61
+
62
+ // start doing ajax
63
+ this.doingAjax = true;
64
+
65
+ return this._doAjax( targetUrl ).done( ( response ) => {
66
+ targetUrl = this.searchAlternativeUrl( response, targetUrl );
67
+
68
+ this._beforeFilter( response, filters );
69
+
70
+ this.refreshFragments( target, preset, response );
71
+ this.pushUrlToHistory( targetUrl, response.pageTitle );
72
+
73
+ $target && this.unblock( $target );
74
+
75
+ this._afterFilter( response, filters );
76
+
77
+ this.doingAjax = false;
78
+ } );
79
+ }
80
+
81
+ // actions performed before filter
82
+ _beforeFilter( response, filters ) {
83
+ $( document ).trigger( 'yith-wcan-ajax-loading', [
84
+ response,
85
+ filters,
86
+ ] );
87
+ }
88
+
89
+ // actions performed after filter
90
+ _afterFilter( response, filters ) {
91
+ $( '.woocommerce-ordering' ).on(
92
+ 'change',
93
+ 'select.orderby',
94
+ function () {
95
+ $( this ).closest( 'form' ).submit();
96
+ }
97
+ );
98
+
99
+ $( window ).trigger( 'scroll' );
100
+
101
+ $( document )
102
+ .trigger( 'yith-wcan-ajax-filtered', [ response, filters ] )
103
+ .trigger( 'yith_wcwl_reload_fragments' );
104
+ }
105
+
106
+ // build url to show
107
+ buildUrl( filters ) {
108
+ let queryParam = yith_wcan_shortcodes.query_param,
109
+ params = {},
110
+ location = window.location,
111
+ url = !! yith_wcan_shortcodes.base_url
112
+ ? yith_wcan_shortcodes.base_url
113
+ : location?.origin + location?.pathname,
114
+ search = '',
115
+ self = this;
116
+
117
+ const haveFilters =
118
+ typeof filters === 'object' && Object.keys( filters ).length;
119
+
120
+ // remove filter session from current url, if any
121
+ if ( !! yith_wcan_shortcodes.session_param ) {
122
+ url = url.replace(
123
+ new RegExp(
124
+ '/' + yith_wcan_shortcodes.session_param + '/[^/]*/'
125
+ ),
126
+ ''
127
+ );
128
+ }
129
+
130
+ if ( haveFilters ) {
131
+ params[ queryParam ] = 1;
132
+ }
133
+
134
+ if ( !! this.originalSearch ) {
135
+ const searchParams = this.originalSearch
136
+ .replace( '?', '' )
137
+ .split( '&' )
138
+ .reduce( ( a, v ) => {
139
+ const items = v.split( '=' );
140
+
141
+ if ( items.length === 2 ) {
142
+ if ( this.isFilterParam( items[ 0 ] ) ) {
143
+ return a;
144
+ }
145
+
146
+ a[ items[ 0 ] ] = items[ 1 ];
147
+ }
148
+
149
+ return a;
150
+ }, {} );
151
+
152
+ params = $.extend( params, searchParams );
153
+ }
154
+
155
+ if ( haveFilters ) {
156
+ params = $.extend( params, filters );
157
+ }
158
+
159
+ search = Object.keys( params )
160
+ .reduce( function ( a, i ) {
161
+ const v = params[ i ];
162
+
163
+ if ( ! v || ! i ) {
164
+ return a;
165
+ }
166
+
167
+ a += self._cleanParam( i ) + '=' + self._cleanParam( v ) + '&';
168
+
169
+ return a;
170
+ }, '?' )
171
+ .replace( /&$/g, '' )
172
+ .replace( /%2B/g, '+' )
173
+ .replace( /%2C/g, ',' );
174
+
175
+ if ( search.length > 1 ) {
176
+ url += search;
177
+ }
178
+
179
+ return url;
180
+ }
181
+
182
+ // retrieves alternative sharing url in response body
183
+ searchAlternativeUrl( response, defaultUrl = '' ) {
184
+ let url = defaultUrl,
185
+ matches;
186
+
187
+ if ( -1 === response.indexOf( 'yith_wcan:sharing_url' ) ) {
188
+ return url;
189
+ }
190
+
191
+ matches = response.match(
192
+ /<meta name="yith_wcan:sharing_url" content="([^"]*)">/
193
+ );
194
+ url = matches && 1 in matches ? matches[ 1 ] : url;
195
+
196
+ return url;
197
+ }
198
+
199
+ // push url to browser history
200
+ pushUrlToHistory( url, title ) {
201
+ if (
202
+ ! yith_wcan_shortcodes.change_browser_url ||
203
+ navigator.userAgent.match( /msie/i )
204
+ ) {
205
+ return;
206
+ }
207
+
208
+ window.history.pushState(
209
+ {
210
+ pageTitle: title,
211
+ },
212
+ '',
213
+ url
214
+ );
215
+ }
216
+
217
+ // replaces elements in the page with refreshed ones
218
+ refreshFragments( target, preset, response ) {
219
+ const responseDom = document.createElement( 'html' ),
220
+ $response = $( responseDom );
221
+
222
+ responseDom.innerHTML = response;
223
+
224
+ if ( target ) {
225
+ let $preset = $( preset ),
226
+ $target = $( target ),
227
+ $destination;
228
+
229
+ if ( $preset.length ) {
230
+ $destination = $response.find( preset );
231
+
232
+ if ( $destination.length ) {
233
+ $preset.replaceWith( $destination.first() );
234
+ }
235
+ }
236
+
237
+ if ( $target.length ) {
238
+ $destination = $response.find( target );
239
+
240
+ if ( $destination.length ) {
241
+ $target.replaceWith( $destination.first() );
242
+ }
243
+ }
244
+ } else {
245
+ const content = $( yith_wcan_shortcodes.content );
246
+
247
+ if ( content.length ) {
248
+ content.replaceWith(
249
+ $response.find( yith_wcan_shortcodes.content )
250
+ );
251
+ } else {
252
+ $( 'body' ).replaceWith( $response.find( 'body' ) );
253
+ }
254
+ }
255
+
256
+ $( document ).trigger( 'yith_wcan_init_shortcodes' );
257
+ }
258
+
259
+ // clean url parameters
260
+ _cleanParam( param ) {
261
+ if (
262
+ ! yith_wcan_shortcodes?.process_sanitize ||
263
+ yith_wcan_shortcodes?.skip_sanitize
264
+ ) {
265
+ return param;
266
+ }
267
+
268
+ return encodeURIComponent( param );
269
+ }
270
+
271
+ // executes Ajax calls
272
+ _doAjax( url, params ) {
273
+ if ( this.xhr ) {
274
+ this.xhr.abort();
275
+ }
276
+
277
+ params = $.extend(
278
+ {
279
+ url,
280
+ },
281
+ params
282
+ );
283
+
284
+ this.xhr = $.ajax( params );
285
+
286
+ return this.xhr;
287
+ }
288
+
289
+ // block dom elements
290
+ block( $el ) {
291
+ if ( typeof $.fn.block === 'undefined' ) {
292
+ return;
293
+ }
294
+
295
+ let background = '#fff center center no-repeat';
296
+
297
+ if ( yith_wcan_shortcodes?.loader ) {
298
+ background = `url('${ yith_wcan_shortcodes.loader }') ${ background }`;
299
+ }
300
+
301
+ $el.block( {
302
+ message: null,
303
+ overlayCSS: {
304
+ background,
305
+ opacity: 0.7,
306
+ },
307
+ } );
308
+ }
309
+
310
+ // unblock dom elements
311
+ unblock( $el ) {
312
+ if ( typeof $.fn.unblock === 'undefined' ) {
313
+ return;
314
+ }
315
+
316
+ $el.unblock();
317
+ }
318
+
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
+ )
336
+ );
337
+
338
+ if ( -1 !== supportedParams.indexOf( param ) ) {
339
+ return true;
340
+ }
341
+
342
+ if ( -1 !== param.indexOf( 'filter_' ) ) {
343
+ return true;
344
+ }
345
+
346
+ if ( -1 !== param.indexOf( 'query_type_' ) ) {
347
+ return true;
348
+ }
349
+
350
+ return false;
351
+ }
352
+ }
assets/js/shortcodes/modules/yith-wcan-modal-opener.js ADDED
@@ -0,0 +1,93 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ 'use strict';
2
+
3
+ /* global globalThis, jQuery, yith_wcan_shortcodes, accounting */
4
+
5
+ import { $ } from '../config.js';
6
+
7
+ export default class YITH_WCAN_Modal_Opener {
8
+ // current button
9
+ $button = null;
10
+
11
+ // YITH_WCAN_Preset object
12
+ preset = null;
13
+
14
+ // preset dom node
15
+ $preset = null;
16
+
17
+ // is mobile flag
18
+ isMobile = false;
19
+
20
+ // init object
21
+ constructor( el ) {
22
+ // current button
23
+ this.$button = el;
24
+
25
+ this._initPreset();
26
+ this._initResponsive();
27
+ this._initActions();
28
+
29
+ this.$button.data( 'modalOpener', this ).addClass( 'enhanced' );
30
+ }
31
+
32
+ // search for related preset
33
+ _initPreset() {
34
+ let target = this.$button.data( 'target' ),
35
+ $target;
36
+
37
+ if ( target ) {
38
+ $target = $( `#${ target }` );
39
+ } else {
40
+ $target = $( '.yith-wcan-filters' );
41
+ }
42
+
43
+ if ( ! $target.length ) {
44
+ return;
45
+ }
46
+
47
+ this.$preset = $target.first();
48
+ this.preset = this.$preset.data( 'preset' );
49
+ }
50
+
51
+ // init responsive
52
+ _initResponsive() {
53
+ if ( ! yith_wcan_shortcodes.modal_on_mobile || ! this.preset ) {
54
+ this.$button.hide();
55
+ return;
56
+ }
57
+
58
+ const media = window.matchMedia(
59
+ `(max-width: ${ yith_wcan_shortcodes.mobile_media_query }px)`
60
+ );
61
+
62
+ $( window )
63
+ .on( 'resize', () => {
64
+ const isMobile = !! media.matches;
65
+
66
+ if ( isMobile !== this.isMobile ) {
67
+ this.isMobile = isMobile;
68
+ this._afterLayoutChange();
69
+ }
70
+ } )
71
+ .resize();
72
+ }
73
+
74
+ // init actions
75
+ _initActions() {
76
+ if ( ! this.$preset?.length ) {
77
+ return;
78
+ }
79
+
80
+ const self = this;
81
+
82
+ this.$button.on( 'click', function ( ev ) {
83
+ ev.preventDefault();
84
+
85
+ self.preset.openModal();
86
+ } );
87
+ }
88
+
89
+ // hide/show button when needed
90
+ _afterLayoutChange() {
91
+ this.isMobile ? this.$button.show() : this.$button.hide();
92
+ }
93
+ }
assets/js/shortcodes/modules/yith-wcan-preset.js ADDED
@@ -0,0 +1,1506 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ 'use strict';
2
+
3
+ /* global globalThis, jQuery, yith_wcan_shortcodes, accounting */
4
+
5
+ import { $ } from '../config.js';
6
+ import YITH_WCAN_Dropdown from './yith-wcan-dropdown';
7
+
8
+ export default class YITH_WCAN_Preset {
9
+ // main preset node
10
+ preset = false;
11
+ $preset = false;
12
+
13
+ // target of the filter, if any
14
+ target = false;
15
+ $target = false;
16
+
17
+ // filters node
18
+ $filters = false;
19
+
20
+ // filter button
21
+ $filterButtons = false;
22
+
23
+ // nodes created just for modal layout
24
+ modalElements = {};
25
+
26
+ // retains current status of filters
27
+ activeFilters = false;
28
+
29
+ // mobile flag
30
+ isMobile = false;
31
+
32
+ // slider timeout
33
+ sliderTimeout = false;
34
+
35
+ // registers when status has changed
36
+ originalFilters = null;
37
+ dirty = false;
38
+
39
+ // init object
40
+ constructor( el ) {
41
+ // main preset node
42
+ this.preset = '#' + el.attr( 'id' );
43
+ this.$preset = el;
44
+
45
+ // target of the filter, if any
46
+ this.target = this.$preset.data( 'target' );
47
+ this.$target = this.target ? $( this.target ) : false;
48
+
49
+ this._regiterStatus();
50
+ this._initFilterButton();
51
+ this._initResponsive();
52
+ this._initFilters();
53
+ this._initActions();
54
+
55
+ this.$preset
56
+ .data( 'preset', this )
57
+ .addClass( 'enhanced' )
58
+ .trigger( 'yith_wcan_preset_initialized', [ this ] );
59
+ }
60
+
61
+ // init filters
62
+ _initFilters() {
63
+ const self = this;
64
+
65
+ this.getFilters().each( function () {
66
+ const $filter = $( this );
67
+
68
+ self._initFilter( $filter );
69
+ } );
70
+
71
+ this.maybeShowClearAllFilters();
72
+ }
73
+
74
+ // init filter button
75
+ _initFilterButton() {
76
+ this.$filterButtons = this.$preset.find( '.apply-filters' );
77
+
78
+ if ( ! this.$filterButtons.length ) {
79
+ return;
80
+ }
81
+
82
+ // manage filter button
83
+ this.$filterButtons
84
+ .on( 'click', ( ev ) => {
85
+ ev.preventDefault();
86
+ this.filter();
87
+ } )
88
+ .hide();
89
+ }
90
+
91
+ // init generic actions
92
+ _initActions() {
93
+ this.$preset.find( 'form' ).on( 'submit', ( ev ) => {
94
+ ev.preventDefault();
95
+ } );
96
+ }
97
+
98
+ // init responsive
99
+ _initResponsive() {
100
+ if ( ! yith_wcan_shortcodes.modal_on_mobile ) {
101
+ return;
102
+ }
103
+
104
+ const media = window.matchMedia(
105
+ `(max-width: ${ yith_wcan_shortcodes.mobile_media_query }px)`
106
+ );
107
+
108
+ $( window )
109
+ .on( 'resize', () => {
110
+ const isMobile = !! media.matches;
111
+
112
+ if ( isMobile !== this.isMobile ) {
113
+ this.isMobile = isMobile;
114
+ this._afterLayoutChange();
115
+ }
116
+ } )
117
+ .resize();
118
+ }
119
+
120
+ // init filter
121
+ _initFilter( $filter ) {
122
+ const self = this,
123
+ handleChange = function ( ev ) {
124
+ const t = $( this ),
125
+ $currentFilter = t.closest( '.yith-wcan-filter' ),
126
+ multiple = $currentFilter.length
127
+ ? 'yes' === $currentFilter.data( 'multiple' )
128
+ : false,
129
+ $item = t.closest( '.filter-item' ),
130
+ $items = $item.length
131
+ ? $currentFilter.find( '.filter-item' ).not( $item )
132
+ : [];
133
+
134
+ if ( $item.is( '.disabled' ) && ! $item.is( '.active' ) ) {
135
+ ev.preventDefault();
136
+ return false;
137
+ }
138
+
139
+ ev.preventDefault();
140
+
141
+ $items.length &&
142
+ ! multiple &&
143
+ $items
144
+ .removeClass( 'active' )
145
+ .children( 'label' )
146
+ .find( ':input' )
147
+ .prop( 'checked', false )
148
+ .parent( '.checked' )
149
+ .removeClass( 'checked' );
150
+ $item.length && $item.toggleClass( 'active' );
151
+
152
+ // reset active filters.
153
+ self.activeFilters = false;
154
+
155
+ self.maybeFilter( $filter );
156
+ self.maybeToggleClearAllFilters();
157
+ self.maybeToggleClearFilter( $currentFilter );
158
+ };
159
+
160
+ // handle filter activation/deactivation by click on label (no input involved)
161
+ $filter
162
+ .find( '.filter-item' )
163
+ .not( '.checkbox' )
164
+ .not( '.radio' )
165
+ .on( 'click', 'a', function ( ev ) {
166
+ const t = $( this ),
167
+ $item = t.closest( '.filter-item' );
168
+
169
+ if ( ! $( ev?.delegateTarget ).is( $item ) ) {
170
+ return false;
171
+ }
172
+
173
+ handleChange.call( this, ev );
174
+ } );
175
+
176
+ // handle filter activation/deactivation from input change
177
+ $filter.find( ':input' ).on( 'change', function ( ev ) {
178
+ const t = $( this ),
179
+ $item = t.closest( '.filter-item' );
180
+
181
+ if ( $item.is( '.disabled' ) && ! $item.is( '.active' ) ) {
182
+ t.prop( 'checked', false );
183
+ return false;
184
+ }
185
+
186
+ handleChange.call( this, ev );
187
+ } );
188
+
189
+ // handle filter activation/deactivation by click on label (there is an input whose state can be switched)
190
+ $filter.find( 'label > a' ).on( 'click', function ( ev ) {
191
+ const t = $( this ),
192
+ $item = t.closest( '.filter-item' );
193
+
194
+ ev.preventDefault();
195
+
196
+ if ( $item.is( '.disabled' ) && ! $item.is( '.active' ) ) {
197
+ return false;
198
+ }
199
+
200
+ const $input = t.parent().find( ':input' );
201
+
202
+ if (
203
+ $input.is( '[type="radio"]' ) ||
204
+ $input.is( '[type="checkbox"]' )
205
+ ) {
206
+ $input.prop( 'checked', ! $input.prop( 'checked' ) );
207
+ }
208
+
209
+ $input.change();
210
+ } );
211
+
212
+ // init tooltip
213
+ this._initTooltip( $filter );
214
+
215
+ // init price slider
216
+ this._initPriceSlider( $filter );
217
+
218
+ // init dropdown
219
+ this._initDropdown( $filter );
220
+
221
+ // init collapsable
222
+ this._initCollapsable( $filter );
223
+
224
+ // init clear anchors
225
+ this.maybeShowClearFilter( $filter );
226
+
227
+ // init custom inputs
228
+ if ( this.$preset?.hasClass( 'custom-style' ) ) {
229
+ this._initCustomInput( $filter );
230
+ }
231
+ }
232
+
233
+ // init tooltip
234
+ _initTooltip( $filter, position ) {
235
+ $filter.find( '[data-title]' ).each( function () {
236
+ const t = $( this );
237
+
238
+ if ( t.hasClass( 'tooltip-added' ) || ! t.data( 'title' ) ) {
239
+ return;
240
+ }
241
+
242
+ t.on( 'mouseenter', function () {
243
+ let th = $( this ),
244
+ tooltip = null,
245
+ wrapperWidth = th.outerWidth(),
246
+ left = 0,
247
+ width = 0;
248
+
249
+ if (
250
+ ! position ||
251
+ ( 'top' !== position && 'right' !== position )
252
+ ) {
253
+ const container = th.closest( '.filter-item' );
254
+
255
+ position =
256
+ container.hasClass( 'color' ) ||
257
+ container.hasClass( 'label' )
258
+ ? 'top'
259
+ : 'right';
260
+ }
261
+
262
+ tooltip = $( '<span>', {
263
+ class: 'yith-wcan-tooltip',
264
+ html: th.data( 'title' ),
265
+ } );
266
+
267
+ th.append( tooltip );
268
+
269
+ width = tooltip.outerWidth() + 6;
270
+ tooltip.outerWidth( width );
271
+
272
+ if ( 'top' === position ) {
273
+ left = ( wrapperWidth - width ) / 2;
274
+ } else {
275
+ left = wrapperWidth + 15;
276
+ }
277
+
278
+ tooltip.css( { left: left.toFixed( 0 ) + 'px' } ).fadeIn( 200 );
279
+
280
+ th.addClass( 'with-tooltip' );
281
+ } ).on( 'mouseleave', function () {
282
+ const th = $( this );
283
+
284
+ th.find( '.yith-wcan-tooltip' ).fadeOut( 200, function () {
285
+ th.removeClass( 'with-tooltip' )
286
+ .find( '.yith-wcan-tooltip' )
287
+ .remove();
288
+ } );
289
+ } );
290
+
291
+ t.addClass( 'tooltip-added' );
292
+ } );
293
+ }
294
+
295
+ // init dropdown
296
+ _initDropdown( $filter ) {
297
+ const $dropdown = $filter.find( 'select.filter-dropdown' );
298
+
299
+ if ( ! $dropdown.length ) {
300
+ return;
301
+ }
302
+
303
+ if (
304
+ $dropdown.hasClass( 'select2-hidden-accessible' ) &&
305
+ 'undefined' !== typeof $.fn.selectWoo
306
+ ) {
307
+ $dropdown.selectWoo( 'destroy' );
308
+ }
309
+
310
+ this._initDropdownObject( $dropdown, {
311
+ paginate: true,
312
+ perPage: yith_wcan_shortcodes.terms_per_page,
313
+ } );
314
+ }
315
+
316
+ // init dropdown object
317
+ _initDropdownObject( $dropdown, opts ) {
318
+ return new YITH_WCAN_Dropdown( $dropdown, opts );
319
+ }
320
+
321
+ // init price slider
322
+ _initPriceSlider( $filter ) {
323
+ if ( ! $filter.hasClass( 'filter-price-slider' ) ) {
324
+ return;
325
+ }
326
+
327
+ const self = this,
328
+ $container = $filter.find( '.price-slider' ),
329
+ $minInput = $container.find( '.price-slider-min' ),
330
+ $maxInput = $container.find( '.price-slider-max' ),
331
+ min = parseFloat( $container.data( 'min' ) ),
332
+ max = parseFloat( $container.data( 'max' ) ),
333
+ currentMin = parseFloat( $minInput.val() ),
334
+ currentMax = parseFloat( $maxInput.val() ),
335
+ step = parseFloat( $container.data( 'step' ) ),
336
+ handleSliderChange = function () {
337
+ if ( self.sliderTimeout ) {
338
+ clearTimeout( self.sliderTimeout );
339
+ }
340
+
341
+ self.sliderTimeout = setTimeout( () => {
342
+ self.maybeFilter( $filter );
343
+ }, 200 );
344
+ };
345
+
346
+ $filter.find( '.price-slider-ui' ).ionRangeSlider( {
347
+ skin: 'round',
348
+ type: 'double',
349
+ min,
350
+ max,
351
+ step,
352
+ from: currentMin,
353
+ to: currentMax,
354
+ min_interval: step,
355
+ values_separator: ' - ',
356
+ prettify: ( v ) => this.formatPrice( v ),
357
+ onChange: ( data ) => {
358
+ $minInput.val( data.from );
359
+ $maxInput.val( data.to );
360
+ },
361
+ onFinish: handleSliderChange,
362
+ } );
363
+
364
+ $minInput
365
+ .add( $maxInput )
366
+ .off( 'change' )
367
+ .on( 'keyup', () => {
368
+ if ( ! $minInput.val() || ! $maxInput.val() ) {
369
+ return;
370
+ }
371
+
372
+ handleSliderChange();
373
+ } );
374
+ }
375
+
376
+ // init collapsable
377
+ _initCollapsable( $filter ) {
378
+ this._initTitleCollapsable( $filter );
379
+ this._initHierarchyCollapsable( $filter );
380
+ }
381
+
382
+ // init toggle on click of the title
383
+ _initTitleCollapsable( $filter ) {
384
+ const $title = $filter.find( '.collapsable' );
385
+
386
+ if ( ! $title.length ) {
387
+ return;
388
+ }
389
+
390
+ this._initToggle( $title, $title, $filter.find( '.filter-content' ) );
391
+ }
392
+
393
+ // init toggle on click of the parent li
394
+ _initHierarchyCollapsable( $filter ) {
395
+ const $items = $filter.find( '.hierarchy-collapsable' );
396
+
397
+ if ( ! $items.length ) {
398
+ return;
399
+ }
400
+
401
+ // set parents of currently active term as open
402
+ const self = this,
403
+ active = $filter.find( '.active' );
404
+
405
+ if ( active.length ) {
406
+ active
407
+ .parents( '.hierarchy-collapsable' )
408
+ .removeClass( 'closed' )
409
+ .addClass( 'opened' );
410
+
411
+ if (
412
+ active.hasClass( 'hierarchy-collapsable' ) &&
413
+ yith_wcan_shortcodes.show_current_children
414
+ ) {
415
+ active.removeClass( 'closed' ).addClass( 'opened' );
416
+ }
417
+ }
418
+
419
+ $items.each( function () {
420
+ const $t = $( this ),
421
+ $toggle = $( '<span/>', {
422
+ class: 'toggle-handle',
423
+ } );
424
+
425
+ $toggle.appendTo( $t );
426
+
427
+ self._initToggle( $toggle, $t, $t.children( 'ul.filter-items' ) );
428
+ } );
429
+ }
430
+
431
+ // init toggle to generic toggle/target pair
432
+ _initToggle( $toggle, $container, $target ) {
433
+ if ( $container.hasClass( 'closed' ) ) {
434
+ $target.hide();
435
+ }
436
+
437
+ $toggle.off( 'click' ).on( 'click', ( ev ) => {
438
+ ev.stopPropagation();
439
+
440
+ $target.slideToggle( 400, () => {
441
+ $container.toggleClass( 'opened' ).toggleClass( 'closed' );
442
+ } );
443
+ } );
444
+ }
445
+
446
+ // init custom input
447
+ _initCustomInput( $filter ) {
448
+ $filter.find( ':input' ).each( function () {
449
+ let input = $( this ),
450
+ type = input.attr( 'type' ),
451
+ containerClass = `${ type }button`,
452
+ container;
453
+
454
+ if ( 'checkbox' !== type && 'radio' !== type ) {
455
+ return;
456
+ }
457
+
458
+ if ( input.closest( `.${ containerClass }` ).length ) {
459
+ return;
460
+ }
461
+
462
+ if ( input.is( ':checked' ) ) {
463
+ containerClass += ' checked';
464
+ }
465
+
466
+ container = $( '<span/>', {
467
+ class: containerClass,
468
+ } );
469
+
470
+ input.wrap( container ).on( 'change', function () {
471
+ const t = $( this );
472
+
473
+ t.prop( 'checked' )
474
+ ? t.parent().addClass( 'checked' )
475
+ : t.parent().removeClass( 'checked' );
476
+ } );
477
+ } );
478
+ }
479
+
480
+ // register initial status
481
+ _regiterStatus() {
482
+ this.originalFilters = this.getFiltersProperties();
483
+ }
484
+
485
+ // trigger handling after layout change
486
+ _afterLayoutChange() {
487
+ if ( this.isMobile ) {
488
+ this.$preset
489
+ .addClass( 'filters-modal' )
490
+ .attr( 'role', 'dialog' )
491
+ .attr( 'tabindex', '-1' )
492
+ .hide();
493
+
494
+ this._addCloseModalButton();
495
+ this._addApplyFiltersModalButton();
496
+ this._switchToCollapsables();
497
+
498
+ this.$filterButtons?.hide();
499
+ } else {
500
+ this.$preset
501
+ .removeClass( 'filters-modal' )
502
+ .removeClass( 'open' )
503
+ .removeAttr( 'role' )
504
+ .removeAttr( 'tabindex' )
505
+ .show();
506
+
507
+ $( 'body' )
508
+ .css( 'overflow', 'auto' )
509
+ .removeClass( 'yith-wcan-preset-modal-open' );
510
+
511
+ this._removeCloseModalButton();
512
+ this._removeApplyFiltersModalButton();
513
+ this._switchBackCollapsables();
514
+
515
+ this.$filterButtons?.show();
516
+ }
517
+ }
518
+
519
+ // add modal close button
520
+ _addCloseModalButton() {
521
+ const $closeButton = $( '<a/>', {
522
+ class: 'close-button',
523
+ html: '&times;',
524
+ 'data-dismiss': 'modal',
525
+ 'aria-label': yith_wcan_shortcodes.labels.close,
526
+ } );
527
+
528
+ $closeButton
529
+ .prependTo( this.$preset )
530
+ .on( 'click', this.closeModal.bind( this ) );
531
+ this.modalElements.closeButton = $closeButton;
532
+ }
533
+
534
+ // remove modal close button
535
+ _removeCloseModalButton() {
536
+ this.modalElements?.closeButton?.remove();
537
+ }
538
+
539
+ // show main filter button for the modal
540
+ _addApplyFiltersModalButton() {
541
+ const $filterButton = $( '<button/>', {
542
+ class: 'apply-filters main-modal-button',
543
+ html: yith_wcan_shortcodes.labels.show_results,
544
+ 'data-dismiss': 'modal',
545
+ } );
546
+
547
+ $filterButton.appendTo( this.$preset ).on( 'click', () => {
548
+ this.filter();
549
+ this.closeModal();
550
+ } );
551
+ this.modalElements.applyFiltersButton = $filterButton;
552
+ }
553
+
554
+ // hide main filter button for the modal
555
+ _removeApplyFiltersModalButton() {
556
+ this.modalElements?.applyFiltersButton?.remove();
557
+ }
558
+
559
+ // convert all filters to collapsable
560
+ _switchToCollapsables() {
561
+ const self = this;
562
+
563
+ this.getFilters().each( function () {
564
+ const $filter = $( this ),
565
+ $title = $filter.find( '.filter-title' );
566
+
567
+ if ( ! $title.length || $title.hasClass( 'collapsable' ) ) {
568
+ return;
569
+ }
570
+
571
+ $title.addClass( 'collapsable' ).data( 'disable-collapse', true );
572
+
573
+ self._initTitleCollapsable( $filter );
574
+ } );
575
+ }
576
+
577
+ // switch back filters to their previous collapsable state
578
+ _switchBackCollapsables() {
579
+ this.getFilters().each( function () {
580
+ const $filter = $( this ),
581
+ $title = $filter.find( '.filter-title' );
582
+
583
+ if (
584
+ ! $title.length ||
585
+ ! $title.hasClass( 'collapsable' ) ||
586
+ ! $title.data( 'disable-collapse' )
587
+ ) {
588
+ return;
589
+ }
590
+
591
+ $title
592
+ .removeClass( 'collapsable' )
593
+ .removeData( 'disable-collapse', true )
594
+ .off( 'click' );
595
+
596
+ $filter.find( '.filter-content' ).show();
597
+ } );
598
+ }
599
+
600
+ // close all collpasable before showing modal
601
+ _closeAllCollapsables() {
602
+ this.$filters
603
+ .not( '.no-title' )
604
+ .not( ( i, v ) => {
605
+ return this.isFilterActive( $( v ) );
606
+ } )
607
+ .find( '.filter-content' )
608
+ .hide()
609
+ .end()
610
+ .find( '.filter-title' )
611
+ .addClass( 'closed' )
612
+ .removeClass( 'opened' );
613
+ }
614
+
615
+ // update status change flag, if filters have changed
616
+ maybeRegisterStatusChange() {
617
+ const currentFilters = this.getFiltersProperties(),
618
+ currentStr = JSON.stringify( currentFilters ),
619
+ originalStr = JSON.stringify( this.originalFilters );
620
+
621
+ this.dirty = currentStr !== originalStr;
622
+ }
623
+
624
+ // apply filters when possible
625
+ maybeFilter( $initiator ) {
626
+ // register status change
627
+ this.maybeRegisterStatusChange();
628
+
629
+ // filter, or show filter button.
630
+ if ( yith_wcan_shortcodes.instant_filters && ! this.isMobile ) {
631
+ this.filter();
632
+ } else if (
633
+ ! yith_wcan_shortcodes.instant_filters &&
634
+ ! this.isMobile
635
+ ) {
636
+ this.dirty
637
+ ? this.$filterButtons?.show()
638
+ : this.$filterButtons?.hide();
639
+ } else if ( this.isMobile && this.dirty ) {
640
+ this.$preset.addClass( 'with-filter-button' );
641
+ this.modalElements.applyFiltersButton?.show();
642
+ }
643
+ }
644
+
645
+ // main filtering method
646
+ filter() {
647
+ const filter = window?.product_filter;
648
+
649
+ filter
650
+ ?.doFilter( this.getFiltersProperties(), this.target, this.preset )
651
+ ?.done( () => {
652
+ let newPreset = $( this.preset );
653
+
654
+ if (
655
+ ! this.isMobile &&
656
+ newPreset.length &&
657
+ yith_wcan_shortcodes.scroll_top
658
+ ) {
659
+ let targetOffset = newPreset.offset().top;
660
+
661
+ if ( !! yith_wcan_shortcodes.scroll_target ) {
662
+ const scrollTarget = $(
663
+ yith_wcan_shortcodes.scroll_target
664
+ );
665
+
666
+ targetOffset = scrollTarget.length
667
+ ? scrollTarget.offset().top
668
+ : targetOffset;
669
+ }
670
+ $( 'body, html' ).animate( {
671
+ scrollTop: targetOffset - 100,
672
+ } );
673
+ }
674
+
675
+ // register new filters, clear status flag
676
+ this.originalFilters = this.getFiltersProperties();
677
+ this.dirty = false;
678
+ } );
679
+
680
+ if ( this.isMobile ) {
681
+ this.$preset.removeClass( 'with-filter-button' );
682
+ this.modalElements.applyFiltersButton?.hide();
683
+ }
684
+ }
685
+
686
+ // get all filter nodes
687
+ getFilters() {
688
+ if ( false === this.$filters ) {
689
+ this.$filters = this.$preset.find( '.yith-wcan-filter' );
690
+ }
691
+
692
+ return this.$filters;
693
+ }
694
+
695
+ // retrieves all filters that we want to apply
696
+ getActiveFilters() {
697
+ if ( false === this.activeFilters ) {
698
+ this.activeFilters = this.getFiltersProperties();
699
+ }
700
+
701
+ return this.activeFilters;
702
+ }
703
+
704
+ // check whether there is any filter active
705
+ isAnyFilterActive() {
706
+ return !! Object.keys( this.getActiveFilters() ).length;
707
+ }
708
+
709
+ // checks whether current filter is active
710
+ isFilterActive( $filter ) {
711
+ let filterType = $filter.data( 'filter-type' ),
712
+ active,
713
+ filteredActive;
714
+
715
+ switch ( filterType ) {
716
+ case 'tax':
717
+ case 'review':
718
+ case 'price_range':
719
+ const $dropdown = $filter.find( '.filter-dropdown' );
720
+
721
+ if ( $dropdown.length ) {
722
+ const val = $dropdown.val();
723
+
724
+ active = 'object' === typeof val ? !! val?.length : !! val;
725
+ break;
726
+ }
727
+
728
+ // if we use type other than dropdown, fallthrough
729
+ case 'stock_sale':
730
+ active = $filter.find( '.filter-item' ).filter( '.active' )
731
+ .length;
732
+ break;
733
+ case 'price_slider':
734
+ const min = parseFloat(
735
+ $filter.find( '.price-slider' ).data( 'min' )
736
+ ),
737
+ max = parseFloat(
738
+ $filter.find( '.price-slider' ).data( 'max' )
739
+ ),
740
+ currentMin = parseFloat(
741
+ $filter.find( '.price-slider-min' ).val()
742
+ ),
743
+ currentMax = parseFloat(
744
+ $filter.find( '.price-slider-max' ).val()
745
+ );
746
+
747
+ active = currentMin > min || currentMax < max;
748
+ break;
749
+ case 'orderby':
750
+ active =
751
+ 'menu_order' !== $filter.find( '.filter-order-by' ).val();
752
+ break;
753
+ default:
754
+ active = false;
755
+ break;
756
+ }
757
+
758
+ filteredActive = $filter.triggerHandler( 'yith_wcan_is_filter_active', [
759
+ active,
760
+ this,
761
+ ] );
762
+ active =
763
+ typeof filteredActive !== 'undefined' ? filteredActive : active;
764
+
765
+ return active;
766
+ }
767
+
768
+ // count the number of active items per filter
769
+ countActiveItems( $filter ) {
770
+ let filterType = $filter.data( 'filter-type' ),
771
+ count;
772
+
773
+ switch ( filterType ) {
774
+ case 'tax':
775
+ case 'review':
776
+ case 'price_range':
777
+ const $dropdown = $filter.find( '.filter-dropdown' );
778
+
779
+ if ( $dropdown.length ) {
780
+ const val = $dropdown.val();
781
+
782
+ count = 'object' === typeof val ? val?.length : +!! val;
783
+ break;
784
+ }
785
+
786
+ // if we use type other than dropdown, fallthrough
787
+ case 'stock_sale':
788
+ count = $filter.find( '.filter-items' ).find( '.active' )
789
+ .length;
790
+ break;
791
+ case 'orderby':
792
+ if ( this.isFilterActive( $filter ) ) {
793
+ count = 1;
794
+ }
795
+ break;
796
+ case 'price_slider':
797
+ default:
798
+ count = 0;
799
+ break;
800
+ }
801
+
802
+ return count;
803
+ }
804
+
805
+ // retrieves filter properties for the filter
806
+ getFilterProperties( $filter ) {
807
+ let filterType = $filter.data( 'filter-type' ),
808
+ multiple = 'yes' === $filter.data( 'multiple' ),
809
+ $dropdown = $filter.find( '.filter-dropdown' ),
810
+ properties = {},
811
+ filteredProperties,
812
+ $active;
813
+
814
+ switch ( filterType ) {
815
+ case 'tax':
816
+ let activeTerms = [],
817
+ taxonomy = $filter.data( 'taxonomy' ),
818
+ isAttr = 0 === taxonomy.indexOf( 'filter' ),
819
+ relation = $filter.data( 'relation' );
820
+
821
+ if ( $dropdown.length ) {
822
+ if ( multiple ) {
823
+ activeTerms = $dropdown.val();
824
+ } else {
825
+ activeTerms.push( $dropdown.val() );
826
+ }
827
+ } else {
828
+ $active = $filter
829
+ .find( '.filter-item' )
830
+ .filter( '.active' )
831
+ .children( 'a, label' );
832
+
833
+ activeTerms = $active.get().reduce( function ( a, v ) {
834
+ let val;
835
+
836
+ v = $( v );
837
+ val = v.is( 'label' )
838
+ ? v.find( ':input' ).val()
839
+ : v.data( 'term-slug' );
840
+
841
+ if ( ! val ) {
842
+ return a;
843
+ }
844
+
845
+ a.push( val );
846
+
847
+ return a;
848
+ }, activeTerms );
849
+ }
850
+
851
+ if ( ! multiple ) {
852
+ properties[ taxonomy ] = activeTerms.pop();
853
+ } else {
854
+ const glue = ! isAttr && 'and' === relation ? '+' : ',';
855
+ properties[ taxonomy ] = activeTerms.join( glue );
856
+ }
857
+
858
+ if ( isAttr ) {
859
+ properties[
860
+ taxonomy.replace( 'filter_', 'query_type_' )
861
+ ] = relation;
862
+ }
863
+
864
+ break;
865
+ case 'review':
866
+ if ( $dropdown.length ) {
867
+ properties.rating_filter = $dropdown.val();
868
+ } else {
869
+ $active = $filter
870
+ .find( '.filter-item' )
871
+ .filter( '.active' )
872
+ .children( 'a, label' );
873
+
874
+ if ( ! multiple ) {
875
+ $active = $active.first();
876
+ properties.rating_filter = $active.is( 'label' )
877
+ ? $active.find( ':input' ).val()
878
+ : $active.data( 'rating' );
879
+ } else {
880
+ properties.rating_filter = $active
881
+ .get()
882
+ .reduce( function ( a, v ) {
883
+ let val;
884
+
885
+ v = $( v );
886
+ val = v.is( 'label' )
887
+ ? v.find( ':input' ).val()
888
+ : v.data( 'rating' );
889
+
890
+ if ( ! val ) {
891
+ return a;
892
+ }
893
+
894
+ a.push( val );
895
+
896
+ return a;
897
+ }, [] )
898
+ .join( ',' );
899
+ }
900
+ }
901
+ break;
902
+ case 'price_range':
903
+ if ( $dropdown.length ) {
904
+ if ( multiple ) {
905
+ properties.price_ranges = $dropdown.val().join( ',' );
906
+ } else {
907
+ properties.min_price = $dropdown
908
+ .val()
909
+ .split( '-' )[ 0 ];
910
+ properties.max_price = $dropdown
911
+ .val()
912
+ .split( '-' )[ 1 ];
913
+ }
914
+ } else {
915
+ $active = $filter
916
+ .find( '.filter-item' )
917
+ .filter( '.active' )
918
+ .children( 'a, label' );
919
+
920
+ if ( multiple ) {
921
+ properties.price_ranges = $active
922
+ .get()
923
+ .reduce( ( a, v ) => {
924
+ let min = $( v ).data( 'range-min' ),
925
+ max = $( v ).data( 'range-max' );
926
+
927
+ a += ( max ? `${ min }-${ max }` : min ) + ',';
928
+
929
+ return a;
930
+ }, '' )
931
+ .replace( /^(.*),$/, '$1' );
932
+ } else {
933
+ properties.min_price = parseFloat(
934
+ $active.first().data( 'range-min' )
935
+ );
936
+ properties.max_price = parseFloat(
937
+ $active.first().data( 'range-max' )
938
+ );
939
+ }
940
+ }
941
+ break;
942
+ case 'price_slider':
943
+ properties.min_price = parseFloat(
944
+ $filter.find( '.price-slider-min' ).val()
945
+ );
946
+ properties.max_price = parseFloat(
947
+ $filter.find( '.price-slider-max' ).val()
948
+ );
949
+ break;
950
+ case 'stock_sale':
951
+ if ( $filter.find( '.filter-on-sale' ).is( '.active' ) ) {
952
+ properties.onsale_filter = 1;
953
+ }
954
+ if ( $filter.find( '.filter-in-stock' ).is( '.active' ) ) {
955
+ properties.instock_filter = 1;
956
+ }
957
+ if ( $filter.find( '.filter-featured' ).is( '.active' ) ) {
958
+ properties.featured_filter = 1;
959
+ }
960
+ break;
961
+ case 'orderby':
962
+ properties.orderby = $filter.find( '.filter-order-by' ).val();
963
+ break;
964
+ default:
965
+ break;
966
+ }
967
+
968
+ filteredProperties = $filter.triggerHandler(
969
+ 'yith_wcan_filter_properties',
970
+ [ properties, self ]
971
+ );
972
+ properties =
973
+ typeof filteredProperties !== 'undefined'
974
+ ? filteredProperties
975
+ : properties;
976
+
977
+ return properties;
978
+ }
979
+
980
+ // retrieves properties for all filters of the preset
981
+ getFiltersProperties() {
982
+ let properties = {};
983
+ const self = this;
984
+
985
+ this.getFilters().each( function () {
986
+ const $filter = $( this );
987
+
988
+ if ( self.isFilterActive( $filter ) ) {
989
+ const filterProperties = self.getFilterProperties( $filter );
990
+
991
+ properties = self.mergeProperties(
992
+ properties,
993
+ filterProperties,
994
+ $filter
995
+ );
996
+ }
997
+ } );
998
+
999
+ return properties;
1000
+ }
1001
+
1002
+ // retrieve filters matching any of the properties passed
1003
+ getFiltersByProperties( properties ) {
1004
+ const self = this;
1005
+
1006
+ return this.getFilters().filter( function () {
1007
+ const $filter = $( this );
1008
+
1009
+ if ( self.isFilterActive( $filter ) ) {
1010
+ let filterProperties = self.getFilterProperties( $filter ),
1011
+ hasProp = false;
1012
+
1013
+ for ( const prop in properties ) {
1014
+ if (
1015
+ [ 'min_price', 'max_price', 'price_ranges' ].includes(
1016
+ prop
1017
+ ) &&
1018
+ ( filterProperties.min_price ||
1019
+ filterProperties.price_ranges )
1020
+ ) {
1021
+ hasProp = true;
1022
+ break;
1023
+ } else if ( filterProperties[ prop ] ) {
1024
+ hasProp = true;
1025
+ break;
1026
+ }
1027
+ }
1028
+
1029
+ return hasProp;
1030
+ }
1031
+
1032
+ return false;
1033
+ } );
1034
+ }
1035
+
1036
+ // show clear selection anchor
1037
+ maybeToggleClearFilter( $filter ) {
1038
+ if ( ! this.isFilterActive( $filter ) ) {
1039
+ this.maybeHideClearFilter( $filter );
1040
+ } else {
1041
+ this.maybeShowClearFilter( $filter );
1042
+ }
1043
+ }
1044
+
1045
+ // show clear all selections anchor
1046
+ maybeToggleClearAllFilters() {
1047
+ if ( ! this.isAnyFilterActive() ) {
1048
+ this.maybeHideClearAllFilters();
1049
+ } else {
1050
+ this.maybeShowClearAllFilters();
1051
+ }
1052
+ }
1053
+
1054
+ // show clear selection anchor
1055
+ maybeShowClearFilter( $filter ) {
1056
+ if (
1057
+ ! this.isFilterActive( $filter ) ||
1058
+ ! yith_wcan_shortcodes.show_clear_filter
1059
+ ) {
1060
+ return;
1061
+ }
1062
+
1063
+ // remove clear selection link if already added.
1064
+ $filter.find( '.clear-selection' ).remove();
1065
+
1066
+ // add new clear selection link.
1067
+ $( '<a/>', {
1068
+ class: 'clear-selection',
1069
+ text: yith_wcan_shortcodes.labels.clear_selection,
1070
+ role: 'button',
1071
+ } )
1072
+ .prependTo( $filter.find( '.filter-content' ) )
1073
+ .on( 'click', ( ev ) => {
1074
+ ev.preventDefault();
1075
+
1076
+ this.deactivateFilter(
1077
+ $filter,
1078
+ false,
1079
+ yith_wcan_shortcodes.instant_filters
1080
+ );
1081
+ this.maybeHideClearFilter( $filter );
1082
+
1083
+ if ( yith_wcan_shortcodes.instant_filters ) {
1084
+ this.closeModal();
1085
+ }
1086
+ } );
1087
+ }
1088
+
1089
+ // show clearAll anchor, when on mobile layout
1090
+ maybeShowClearAllFilters() {
1091
+ if ( ! this.isAnyFilterActive() || ! this.isMobile ) {
1092
+ return;
1093
+ }
1094
+
1095
+ // remove clear selection link if already added.
1096
+ this.$preset.find( '.clear-selection' ).remove();
1097
+
1098
+ // add new clear selection link.
1099
+ $( '<a/>', {
1100
+ class: 'clear-selection',
1101
+ text: yith_wcan_shortcodes.labels.clear_all_selections,
1102
+ role: 'button',
1103
+ } )
1104
+ .prependTo( this.$preset.find( '.filters-container' ) )
1105
+ .on( 'click', ( ev ) => {
1106
+ ev.preventDefault();
1107
+
1108
+ this.deactivateAllFilters(
1109
+ yith_wcan_shortcodes.instant_filters
1110
+ );
1111
+ this.maybeHideClearAllFilters();
1112
+
1113
+ if ( yith_wcan_shortcodes.instant_filters ) {
1114
+ this.closeModal();
1115
+ }
1116
+ } );
1117
+ }
1118
+
1119
+ // hide clear selection anchor
1120
+ maybeHideClearFilter( $filter ) {
1121
+ if (
1122
+ this.isFilterActive( $filter ) ||
1123
+ ! yith_wcan_shortcodes.show_clear_filter
1124
+ ) {
1125
+ return;
1126
+ }
1127
+
1128
+ // remove clear selection link.
1129
+ $filter.find( '.clear-selection' ).remove();
1130
+ }
1131
+
1132
+ // show clearAll anchor, when on mobile layout
1133
+ maybeHideClearAllFilters() {
1134
+ if ( this.isAnyFilterActive() ) {
1135
+ return;
1136
+ }
1137
+
1138
+ // remove clear selection link.
1139
+ this.$preset
1140
+ .find( '.filters-container' )
1141
+ .children( '.clear-selection' )
1142
+ .remove();
1143
+ }
1144
+
1145
+ // deactivate filter
1146
+ deactivateFilter( $filter, properties, doFilter ) {
1147
+ const filterType = $filter.data( 'filter-type' ),
1148
+ $items = $filter.find( '.filter-item' ),
1149
+ $activeItems = $items.filter( '.active' ),
1150
+ $dropdown = $filter.find( '.filter-dropdown' );
1151
+
1152
+ switch ( filterType ) {
1153
+ case 'tax':
1154
+ const taxonomy = $filter.data( 'taxonomy' );
1155
+
1156
+ if ( $dropdown.length ) {
1157
+ if ( ! properties ) {
1158
+ $dropdown.find( 'option' ).prop( 'selected', false );
1159
+ } else {
1160
+ $dropdown.find( 'option' ).each( function () {
1161
+ const $option = $( this );
1162
+
1163
+ if ( $option.val() === properties[ taxonomy ] ) {
1164
+ $option.prop( 'selected', false );
1165
+ }
1166
+ } );
1167
+ }
1168
+
1169
+ $dropdown.change();
1170
+ } else if ( ! properties ) {
1171
+ $activeItems.children( 'label' ).children( 'a' ).click();
1172
+ $activeItems.removeClass( 'active' );
1173
+ } else {
1174
+ $activeItems.each( function () {
1175
+ let $item = $( this ),
1176
+ $label = $item.children( 'label' ),
1177
+ $anchor = $item.children( 'a' ),
1178
+ value;
1179
+
1180
+ value = $label.length
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
+ }
1188
+ } );
1189
+ }
1190
+ break;
1191
+ case 'review':
1192
+ if ( $dropdown.length ) {
1193
+ if ( ! properties ) {
1194
+ $dropdown.find( 'option' ).prop( 'selected', false );
1195
+ } else {
1196
+ $dropdown.find( 'option' ).each( function () {
1197
+ const $option = $( this );
1198
+
1199
+ if ( $option.val() === properties.rating_filter ) {
1200
+ $option.prop( 'selected', false );
1201
+ }
1202
+ } );
1203
+ }
1204
+
1205
+ $dropdown.change();
1206
+ } else if ( ! properties ) {
1207
+ $activeItems.children( 'label' ).children( 'a' ).click();
1208
+ $activeItems.removeClass( 'active' );
1209
+ } else {
1210
+ $activeItems.each( function () {
1211
+ let $item = $( this ),
1212
+ $label = $item.children( 'label' ),
1213
+ $anchor = $item.children( 'a' ),
1214
+ value;
1215
+
1216
+ value = $label.length
1217
+ ? $label.find( ':input' ).val()
1218
+ : $anchor.data( 'rating' );
1219
+
1220
+ if ( value === properties.rating_filter ) {
1221
+ $item.children( 'label' ).children( 'a' ).click();
1222
+ $item.removeClass( 'active' );
1223
+ }
1224
+ } );
1225
+ }
1226
+ break;
1227
+ case 'price_range':
1228
+ if ( $dropdown.length ) {
1229
+ if ( ! properties ) {
1230
+ $dropdown.find( 'option' ).prop( 'selected', false );
1231
+ } else {
1232
+ $dropdown.find( 'option' ).each( function () {
1233
+ const $option = $( this ),
1234
+ formattedRange =
1235
+ properties.min_price +
1236
+ ( properties.max_price
1237
+ ? `-${ properties.max_price }`
1238
+ : '' );
1239
+
1240
+ if ( $option.val() === formattedRange ) {
1241
+ $option.prop( 'selected', false );
1242
+ }
1243
+ } );
1244
+ }
1245
+
1246
+ $dropdown.change();
1247
+ } else if ( ! properties ) {
1248
+ $activeItems.children( 'label' ).children( 'a' ).click();
1249
+ $activeItems.removeClass( 'active' );
1250
+ } else {
1251
+ $activeItems.each( function () {
1252
+ let $item = $( this ),
1253
+ $label = $item.children( 'label' ),
1254
+ $anchor = $item.children( 'a' ),
1255
+ formattedRange,
1256
+ value;
1257
+
1258
+ value = $label.length
1259
+ ? $label.find( ':input' ).val()
1260
+ : $anchor.data( 'min_price' ) +
1261
+ ( $anchor.data( 'max_price' )
1262
+ ? '-' + $anchor.data( 'max_price' )
1263
+ : '' );
1264
+
1265
+ if ( properties.min_price ) {
1266
+ formattedRange =
1267
+ properties.min_price +
1268
+ ( properties.max_price
1269
+ ? '-' + properties.max_price
1270
+ : '' );
1271
+ } else if ( properties.price_ranges ) {
1272
+ formattedRange = properties.price_ranges;
1273
+ }
1274
+
1275
+ if ( value === formattedRange ) {
1276
+ $item.children( 'label' ).children( 'a' ).click();
1277
+ $item.removeClass( 'active' );
1278
+ }
1279
+ } );
1280
+ }
1281
+ break;
1282
+ case 'price_slider':
1283
+ const $priceSlider = $filter.find( '.price-slider' );
1284
+
1285
+ $filter
1286
+ .find( '.price-slider-min' )
1287
+ .val( $priceSlider.data( 'min' ) );
1288
+ $filter
1289
+ .find( '.price-slider-max' )
1290
+ .val( $priceSlider.data( 'max' ) )
1291
+ .change();
1292
+ break;
1293
+ case 'orderby':
1294
+ $filter.find( 'select' ).val( 'menu_order' );
1295
+ break;
1296
+ case 'stock_sale':
1297
+ if ( ! properties ) {
1298
+ $filter
1299
+ .find( '.filter-in-stock' )
1300
+ .find( ':input' )
1301
+ .prop( 'checked', false )
1302
+ .change();
1303
+ $filter
1304
+ .find( '.filter-on-sale' )
1305
+ .find( ':input' )
1306
+ .prop( 'checked', false )
1307
+ .change();
1308
+ $filter
1309
+ .find( '.filter-featured' )
1310
+ .find( ':input' )
1311
+ .prop( 'checked', false )
1312
+ .change();
1313
+
1314
+ $items.removeClass( 'active' );
1315
+ } else {
1316
+ if ( properties?.instock_filter ) {
1317
+ $filter
1318
+ .find( '.filter-in-stock' )
1319
+ .find( ':input' )
1320
+ .prop( 'checked', false )
1321
+ .change()
1322
+ .closest( '.filter-item' )
1323
+ .removeClass( 'active' );
1324
+ }
1325
+
1326
+ if ( properties?.onsale_filter ) {
1327
+ $filter
1328
+ .find( '.filter-on-sale' )
1329
+ .find( ':input' )
1330
+ .prop( 'checked', false )
1331
+ .change()
1332
+ .closest( '.filter-item' )
1333
+ .removeClass( 'active' );
1334
+ }
1335
+
1336
+ if ( properties?.featured_filter ) {
1337
+ $filter
1338
+ .find( '.filter-featured' )
1339
+ .find( ':input' )
1340
+ .prop( 'checked', false )
1341
+ .change()
1342
+ .closest( '.filter-item' )
1343
+ .removeClass( 'active' );
1344
+ }
1345
+ }
1346
+ break;
1347
+ default:
1348
+ $items.removeClass( 'active' );
1349
+ break;
1350
+ }
1351
+
1352
+ this.activeFilters = false;
1353
+
1354
+ if ( doFilter ) {
1355
+ this.filter();
1356
+ }
1357
+ }
1358
+
1359
+ // deactivate all filters
1360
+ deactivateAllFilters( doFilter ) {
1361
+ const self = this,
1362
+ $filters = this.getFilters();
1363
+
1364
+ $filters.each( function () {
1365
+ const $filter = $( this );
1366
+
1367
+ self.deactivateFilter( $filter );
1368
+ } );
1369
+
1370
+ this.activeFilters = false;
1371
+
1372
+ if ( doFilter ) {
1373
+ this.filter();
1374
+ }
1375
+ }
1376
+
1377
+ // deactivate filters that matches a specific set of properties
1378
+ deactivateFilterByProperties( properties, doFilter ) {
1379
+ const self = this,
1380
+ $filters = this.getFiltersByProperties( properties );
1381
+
1382
+ if ( ! $filters.length ) {
1383
+ return;
1384
+ }
1385
+
1386
+ $filters.each( function () {
1387
+ const $filter = $( this );
1388
+
1389
+ self.deactivateFilter( $filter, properties, doFilter );
1390
+ } );
1391
+ }
1392
+
1393
+ // open filters as a modal, when in mobile layout
1394
+ openModal() {
1395
+ if ( ! this.isMobile ) {
1396
+ return;
1397
+ }
1398
+
1399
+ this._closeAllCollapsables();
1400
+
1401
+ $( 'body' )
1402
+ .css( 'overflow', 'hidden' )
1403
+ .addClass( 'yith-wcan-preset-modal-open' );
1404
+
1405
+ this.$preset.show();
1406
+
1407
+ setTimeout( () => {
1408
+ this.$preset.addClass( 'open' );
1409
+ }, 100 );
1410
+ }
1411
+
1412
+ // close filters modal, when in mobile layout
1413
+ closeModal() {
1414
+ if ( ! this.isMobile ) {
1415
+ return;
1416
+ }
1417
+
1418
+ this.$preset.removeClass( 'open' );
1419
+
1420
+ setTimeout( () => {
1421
+ this.$preset.hide();
1422
+ $( 'body' )
1423
+ .css( 'overflow', 'auto' )
1424
+ .removeClass( 'yith-wcan-preset-modal-open' );
1425
+ }, 300 );
1426
+ }
1427
+
1428
+ // utility that formats the price according to store configuration.
1429
+ formatPrice( price ) {
1430
+ if ( 'undefined' !== typeof accounting ) {
1431
+ price = accounting.formatMoney( price, {
1432
+ symbol: yith_wcan_shortcodes.currency_format.symbol,
1433
+ decimal: yith_wcan_shortcodes.currency_format.decimal,
1434
+ thousand: yith_wcan_shortcodes.currency_format.thousand,
1435
+ precision: 0,
1436
+ format: yith_wcan_shortcodes.currency_format.format,
1437
+ } );
1438
+ }
1439
+
1440
+ return price;
1441
+ }
1442
+
1443
+ // utility that merges together sets of filter properties
1444
+ mergeProperties( set1, set2, $filter ) {
1445
+ // search for common properties
1446
+ for ( const prop in set2 ) {
1447
+ if ( ! set2.hasOwnProperty( prop ) ) {
1448
+ continue;
1449
+ }
1450
+
1451
+ if ( !! set1[ prop ] ) {
1452
+ switch ( prop ) {
1453
+ case 'rating_filter':
1454
+ case 'min_price':
1455
+ case 'max_price':
1456
+ case 'onsale_filter':
1457
+ case 'instock_filter':
1458
+ case 'orderby':
1459
+ // just override default value
1460
+ set1[ prop ] = set2[ prop ];
1461
+ break;
1462
+ default:
1463
+ if ( 0 === prop.indexOf( 'query_type_' ) ) {
1464
+ // query_type param
1465
+ set1[ prop ] = set2[ prop ];
1466
+ } else {
1467
+ // we're dealing with taxonomy
1468
+ const isAttr = 0 === prop.indexOf( 'filter_' ),
1469
+ glue = isAttr ? ',' : '+';
1470
+
1471
+ let newValue =
1472
+ set1[ prop ].replace( ',', glue ) +
1473
+ glue +
1474
+ set2[ prop ].replace( ',', glue );
1475
+
1476
+ newValue = newValue
1477
+ .split( glue )
1478
+ .filter(
1479
+ ( value, index, arr ) =>
1480
+ arr.indexOf( value ) === index
1481
+ )
1482
+ .join( glue );
1483
+
1484
+ set1[ prop ] = newValue;
1485
+
1486
+ if ( isAttr ) {
1487
+ const queryTypeParam = prop.replace(
1488
+ 'filter_',
1489
+ 'query_type_'
1490
+ );
1491
+
1492
+ set1[ queryTypeParam ] = 'and';
1493
+ set2[ queryTypeParam ] = 'and';
1494
+ }
1495
+ }
1496
+ }
1497
+
1498
+ delete set2[ prop ];
1499
+ }
1500
+ }
1501
+
1502
+ $.extend( set1, set2 );
1503
+
1504
+ return set1;
1505
+ }
1506
+ }
assets/js/shortcodes/modules/yith-wcan-reset-button.js ADDED
@@ -0,0 +1,29 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ 'use strict';
2
+
3
+ /* global globalThis, jQuery, yith_wcan_shortcodes, accounting */
4
+
5
+ import { $ } from '../config.js';
6
+
7
+ export default class YITH_WCAN_Reset_Button {
8
+ // current button
9
+ $reset = null;
10
+
11
+ // init object
12
+ constructor( el ) {
13
+ // current button
14
+ this.$reset = el;
15
+
16
+ this.$reset.on( 'click', function ( ev ) {
17
+ ev.preventDefault();
18
+
19
+ $( '.yith-wcan-filters' ).each( function () {
20
+ const preset = $( this ).data( 'preset' );
21
+
22
+ preset.deactivateAllFilters( true );
23
+ preset.closeModal();
24
+ } );
25
+ } );
26
+
27
+ this.$reset.data( 'reset', this ).addClass( 'enhanced' );
28
+ }
29
+ }
assets/js/yith-wcan-admin-filters.js CHANGED
@@ -13,29 +13,51 @@ function YITH_WCAN_Filters( $ ) {
13
  taxonomy: {
14
  type: 'tax',
15
  },
16
- terms: {
17
  type: 'tax',
18
  },
19
- filter_design: {
20
  type: 'tax',
 
 
 
 
 
 
 
21
  },
22
  column_number: {
23
  filter_design: [ 'label', 'color' ],
 
 
 
 
 
24
  },
25
  terms_options: {
26
- terms: ( v ) => !! v,
 
27
  },
28
  show_search: {
 
29
  filter_design: 'select',
30
  },
31
  price_ranges: {
32
  type: 'price_range',
33
  },
 
 
 
 
 
 
34
  price_slider_min: {
35
  type: 'price_slider',
 
36
  },
37
  price_slider_max: {
38
  type: 'price_slider',
 
39
  },
40
  price_slider_step: {
41
  type: 'price_slider',
@@ -49,6 +71,9 @@ function YITH_WCAN_Filters( $ ) {
49
  show_sale_filter: {
50
  type: 'stock_sale',
51
  },
 
 
 
52
  toggle_style: {
53
  show_toggle: ':checked',
54
  },
@@ -66,10 +91,11 @@ function YITH_WCAN_Filters( $ ) {
66
  filter_design: [ 'checkbox', 'radio', 'text' ],
67
  },
68
  multiple: {
69
- type: 'tax',
70
- filter_design: '-radio',
71
  },
72
  relation: {
 
73
  multiple: ':checked',
74
  },
75
  adoptive: {
@@ -91,6 +117,8 @@ function YITH_WCAN_Filters( $ ) {
91
 
92
  self.$filters = self.$filtersContainer.find( '.yith-toggle-row' );
93
 
 
 
94
  self.$page = $( '#paged' );
95
 
96
  self.$submit = $( '#submit' );
@@ -101,14 +129,13 @@ function YITH_WCAN_Filters( $ ) {
101
  self.initFilters();
102
  self.initAddFilter();
103
  self.initLoadMoreFilters();
 
104
  self.initSubmit();
105
  };
106
 
107
- // init filters
108
 
109
  self.initAddFilter = function () {
110
- self.updateRowIndex();
111
-
112
  self.$addNewFilterButtons.on( 'click', function ( ev ) {
113
  ev.preventDefault();
114
 
@@ -125,7 +152,27 @@ function YITH_WCAN_Filters( $ ) {
125
  };
126
 
127
  self.initSubmit = function () {
128
- self.$submit.on( 'click', () => self.block( self.$form ) );
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
129
  };
130
 
131
  self.initFilters = function () {
@@ -155,8 +202,8 @@ function YITH_WCAN_Filters( $ ) {
155
 
156
  self.initFilterTitle( $filter );
157
  self.initFilterToggle( $filter );
158
- self.initFilterFields( $filter );
159
  self.initFilterFieldsDependencies( $filter );
 
160
  self.initFilterSave( $filter );
161
  self.initFilterDelete( $filter );
162
  self.initFilterClone( $filter );
@@ -168,7 +215,13 @@ function YITH_WCAN_Filters( $ ) {
168
 
169
  self.initFilterFields = function ( $filter ) {
170
  self.initFilterTermSearch( $filter );
 
 
171
  self.initFilterType( $filter );
 
 
 
 
172
  };
173
 
174
  self.initFilterFieldsDependencies = function ( $filter ) {
@@ -230,11 +283,6 @@ function YITH_WCAN_Filters( $ ) {
230
  // init terms select
231
  $termSearch.selectWoo( select2_args );
232
 
233
- // clear terms select when taxonomy is changed
234
- $taxonomySelect.on( 'change', () => {
235
- $termSearch.find( 'option' ).remove().end().change();
236
- } );
237
-
238
  // on term changes redraw Customize terms section
239
  $termSearch.on( 'change', () => {
240
  self.updateTerms( $filter );
@@ -297,12 +345,101 @@ function YITH_WCAN_Filters( $ ) {
297
  } );
298
  };
299
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
300
  self.initFilterType = function ( $filter ) {
301
- const $filterType = $filter.find( '[name*="filter_design"]' );
 
302
 
303
  $filterType
304
  .on( 'change', () => {
305
- self.updateTermFields( $filter, $filterType.val() );
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
306
  } )
307
  .change();
308
  };
@@ -380,6 +517,38 @@ function YITH_WCAN_Filters( $ ) {
380
  } );
381
  };
382
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
383
  self.afterAddFilter = function ( $filter ) {
384
  self.closeAllFilters();
385
  self.openFilter( $filter );
@@ -401,6 +570,111 @@ function YITH_WCAN_Filters( $ ) {
401
  }
402
  };
403
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
404
  self._findFilterField = function (
405
  $filter,
406
  field,
@@ -472,7 +746,9 @@ function YITH_WCAN_Filters( $ ) {
472
  result = condition( fieldValue );
473
  } else if ( 0 === condition.indexOf( ':' ) ) {
474
  result = $field.is( condition );
475
- } else if ( 0 === condition.indexOf( '-' ) ) {
 
 
476
  result = condition.toString().substring( 1 ) !== fieldValue;
477
  } else {
478
  result = condition.toString() === fieldValue;
@@ -493,11 +769,11 @@ function YITH_WCAN_Filters( $ ) {
493
 
494
  self._confirmAddAllTerms = function ( $select ) {
495
  let v = $select.val(),
496
- counts = $select.data( 'counts' ),
497
  message = yith_wcan_admin.messages.confirm_add_all_terms;
498
 
499
- if ( counts[ v ] && counts[ v ] > 1 ) {
500
- message = message.replace( '%s', counts[ v ] );
501
  return confirm( message );
502
  }
503
  return true;
@@ -703,16 +979,21 @@ function YITH_WCAN_Filters( $ ) {
703
  };
704
 
705
  self.saveFilter = function ( $filter ) {
 
 
 
 
706
  self.ajaxSaveFilter( $filter ).done( ( data ) => {
707
  self.maybeSetPresetId( data.id );
708
  self.closeFilter( $filter );
709
  } );
710
  };
711
 
712
- self.openFilter = function ( $filter ) {
713
- // TODO: system doesn't know at this point correct filter offset; we will only know after animations
714
- // $('html, body').animate( { scrollTop: $filter.offset().top - 100 }, 400 );
715
 
 
716
  // fix title
717
  $filter
718
  .find( '.yith-toggle-title' )
@@ -727,6 +1008,10 @@ function YITH_WCAN_Filters( $ ) {
727
  .promise();
728
  };
729
 
 
 
 
 
730
  self.closeFilter = function ( $filter ) {
731
  // fix title
732
  $filter
@@ -791,12 +1076,92 @@ function YITH_WCAN_Filters( $ ) {
791
  } else {
792
  self.$page.val( page );
793
  }
 
 
 
794
  }
795
  } );
796
  };
797
 
798
  self.updateFilters = function () {
799
  self.$filters = self.$filtersContainer.find( '.yith-toggle-row' );
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
800
  };
801
 
802
  self.getRowIndex = function ( $row ) {
@@ -809,8 +1174,7 @@ function YITH_WCAN_Filters( $ ) {
809
  let maxIndex = 0;
810
 
811
  self.$filters.each( function ( i ) {
812
- const id = this.id,
813
- numericId = id.replace( 'filter_', '' );
814
 
815
  maxIndex = maxIndex < numericId ? numericId : maxIndex;
816
  } );
@@ -840,14 +1204,37 @@ function YITH_WCAN_Filters( $ ) {
840
  return $filter.find( '.term-box' );
841
  };
842
 
 
 
 
 
 
 
 
 
 
 
 
 
 
843
  self.initTerms = function ( $filter ) {
844
- const $terms = $filter.find( '.term-box' );
 
845
 
846
  $terms.each( function () {
847
  self.initTerm( $( this ) );
848
  } );
849
 
850
- self.initTermsDragDrop( $filter );
 
 
 
 
 
 
 
 
 
851
  };
852
 
853
  self.initTerm = function ( $term ) {
@@ -958,12 +1345,24 @@ function YITH_WCAN_Filters( $ ) {
958
  };
959
 
960
  self.initTermsDragDrop = function ( $filter ) {
961
- $filter.find( '.terms-wrapper' ).sortable( {
962
- cursor: 'move',
963
- scrollSensitivity: 40,
964
- forcePlaceholderSize: true,
965
- helper: 'clone',
966
- } );
 
 
 
 
 
 
 
 
 
 
 
 
967
  };
968
 
969
  self.showTermTab = function ( $term, tab, force ) {
@@ -1016,10 +1415,14 @@ function YITH_WCAN_Filters( $ ) {
1016
  };
1017
 
1018
  self.updateTerms = function ( $filter ) {
 
 
 
 
 
 
1019
  const selectedTerms = self._getSelectedTerms( $filter ),
1020
- $termsContainer = $filter.find( '.terms-wrapper' ),
1021
  $existingTerms = $termsContainer.find( '.term-box' ),
1022
- $filterType = $filter.find( '[name*="filter_design"]' ),
1023
  newTerms = [];
1024
 
1025
  if ( selectedTerms ) {
@@ -1057,7 +1460,7 @@ function YITH_WCAN_Filters( $ ) {
1057
  } );
1058
  }
1059
 
1060
- self.updateTermFields( $filter, $filterType.val() );
1061
 
1062
  $filter.trigger( 'yith_fields_init' );
1063
  };
@@ -1066,7 +1469,7 @@ function YITH_WCAN_Filters( $ ) {
1066
  const $terms = $filter.find( '.term-box' );
1067
 
1068
  switch ( type ) {
1069
- case 'color':
1070
  $terms
1071
  .find( '.term-tab-headers' )
1072
  .show()
@@ -1085,7 +1488,18 @@ function YITH_WCAN_Filters( $ ) {
1085
  );
1086
  } );
1087
  break;
1088
- case 'label':
 
 
 
 
 
 
 
 
 
 
 
1089
  $terms
1090
  .find( '.term-tab-headers' )
1091
  .show()
@@ -1096,6 +1510,7 @@ function YITH_WCAN_Filters( $ ) {
1096
 
1097
  self.showTermTab( $terms, 'image', true );
1098
  break;
 
1099
  default:
1100
  $terms.find( '.term-tab-headers' ).hide();
1101
  $terms.find( '.tab.tab-color' ).hide();
@@ -1493,6 +1908,21 @@ function YITH_WCAN_Filters( $ ) {
1493
  .trim();
1494
  };
1495
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1496
  // let's start the game
1497
  self.init();
1498
  }
13
  taxonomy: {
14
  type: 'tax',
15
  },
16
+ use_all_terms: {
17
  type: 'tax',
18
  },
19
+ term_ids: {
20
  type: 'tax',
21
+ use_all_terms: '!:checked',
22
+ },
23
+ filter_design: {
24
+ type: [ 'tax', 'review', 'price_range' ],
25
+ },
26
+ label_position: {
27
+ filter_design: [ 'label', 'color' ],
28
  },
29
  column_number: {
30
  filter_design: [ 'label', 'color' ],
31
+ label_position: [ 'below', 'hide' ],
32
+ },
33
+ customize_terms: {
34
+ type: 'tax',
35
+ use_all_terms: '!:checked',
36
  },
37
  terms_options: {
38
+ term_ids: ( v ) => !! v,
39
+ customize_terms: ':checked',
40
  },
41
  show_search: {
42
+ type: 'tax',
43
  filter_design: 'select',
44
  },
45
  price_ranges: {
46
  type: 'price_range',
47
  },
48
+ price_slider_adaptive_limits: {
49
+ type: 'price_slider',
50
+ },
51
+ price_slider_design: {
52
+ type: 'price_slider',
53
+ },
54
  price_slider_min: {
55
  type: 'price_slider',
56
+ price_slider_adaptive_limits: '!:checked',
57
  },
58
  price_slider_max: {
59
  type: 'price_slider',
60
+ price_slider_adaptive_limits: '!:checked',
61
  },
62
  price_slider_step: {
63
  type: 'price_slider',
71
  show_sale_filter: {
72
  type: 'stock_sale',
73
  },
74
+ show_featured_filter: {
75
+ type: 'stock_sale',
76
+ },
77
  toggle_style: {
78
  show_toggle: ':checked',
79
  },
91
  filter_design: [ 'checkbox', 'radio', 'text' ],
92
  },
93
  multiple: {
94
+ type: [ 'tax', 'review', 'price_range' ],
95
+ filter_design: '!radio',
96
  },
97
  relation: {
98
+ type: 'tax',
99
  multiple: ':checked',
100
  },
101
  adoptive: {
117
 
118
  self.$filters = self.$filtersContainer.find( '.yith-toggle-row' );
119
 
120
+ self.$layout = $( '#preset_layout' );
121
+
122
  self.$page = $( '#paged' );
123
 
124
  self.$submit = $( '#submit' );
129
  self.initFilters();
130
  self.initAddFilter();
131
  self.initLoadMoreFilters();
132
+ self.initLayout();
133
  self.initSubmit();
134
  };
135
 
136
+ // general init
137
 
138
  self.initAddFilter = function () {
 
 
139
  self.$addNewFilterButtons.on( 'click', function ( ev ) {
140
  ev.preventDefault();
141
 
152
  };
153
 
154
  self.initSubmit = function () {
155
+ self.$submit.on( 'click', () => {
156
+ if ( ! self.$form.get( 0 ).reportValidity() ) {
157
+ return false;
158
+ }
159
+
160
+ if ( ! self.validateFilters() ) {
161
+ return false;
162
+ }
163
+
164
+ self.block( self.$form );
165
+ } );
166
+ };
167
+
168
+ self.initLayout = function () {
169
+ self.$layout
170
+ .on( 'change', 'input', () => {
171
+ self.afterLayoutChange();
172
+ } )
173
+ .find( 'input' )
174
+ .first()
175
+ .change();
176
  };
177
 
178
  self.initFilters = function () {
202
 
203
  self.initFilterTitle( $filter );
204
  self.initFilterToggle( $filter );
 
205
  self.initFilterFieldsDependencies( $filter );
206
+ self.initFilterFields( $filter );
207
  self.initFilterSave( $filter );
208
  self.initFilterDelete( $filter );
209
  self.initFilterClone( $filter );
215
 
216
  self.initFilterFields = function ( $filter ) {
217
  self.initFilterTermSearch( $filter );
218
+ self.initFilterCustomizeTerms( $filter );
219
+ self.initTaxonomy( $filter );
220
  self.initFilterType( $filter );
221
+ self.initFilterDesign( $filter );
222
+ self.initFilterCurrencyFields( $filter );
223
+ self.clearFilterErrors( $filter );
224
+ self.initInvalidFields( $filter );
225
  };
226
 
227
  self.initFilterFieldsDependencies = function ( $filter ) {
283
  // init terms select
284
  $termSearch.selectWoo( select2_args );
285
 
 
 
 
 
 
286
  // on term changes redraw Customize terms section
287
  $termSearch.on( 'change', () => {
288
  self.updateTerms( $filter );
345
  } );
346
  };
347
 
348
+ self.initFilterCustomizeTerms = function ( $filter ) {
349
+ const $customizeTerms = $filter
350
+ .find( '.customize-terms' )
351
+ .find( 'input' ),
352
+ $orderBy = $filter.find( '.order-by' );
353
+
354
+ $customizeTerms
355
+ .on( 'change', () => {
356
+ $orderBy
357
+ .find( '[value="include"]' )
358
+ .prop( 'disabled', ! $customizeTerms.is( ':checked' ) );
359
+ $orderBy
360
+ .removeClass( 'enhanced' )
361
+ .trigger( 'wc-enhanced-select-init' );
362
+ ! $orderBy.val() && $orderBy.val( 'name' );
363
+
364
+ self.updateTerms( $filter );
365
+ } )
366
+ .change();
367
+ };
368
+
369
+ self.initTaxonomy = function ( $filter ) {
370
+ const $taxonomySelect = $filter.find( '.taxonomy' ).first(),
371
+ $filterDesign = $filter.find( '.filter-design' ).first();
372
+
373
+ $taxonomySelect.on( 'change', () => {
374
+ self.afterTaxonomyChange( $filter );
375
+ } );
376
+
377
+ $filterDesign.on( 'change', () => {
378
+ self.customizeTermsNotice( $filter );
379
+ } );
380
+ };
381
+
382
  self.initFilterType = function ( $filter ) {
383
+ const $filterType = $filter.find( '.filter-type' ),
384
+ $filterDesign = $filter.find( '.filter-design' );
385
 
386
  $filterType
387
  .on( 'change', () => {
388
+ const filterType = $filterType.val();
389
+
390
+ switch ( filterType ) {
391
+ case 'review':
392
+ case 'price_range':
393
+ $filterDesign
394
+ .find( '[value="color"]' )
395
+ .remove()
396
+ .end()
397
+ .find( '[value="label"]' )
398
+ .remove();
399
+ break;
400
+ default:
401
+ for ( let design in yith_wcan_admin.supported_designs ) {
402
+ if (
403
+ ! yith_wcan_admin.supported_designs.hasOwnProperty(
404
+ design
405
+ )
406
+ ) {
407
+ continue;
408
+ }
409
+
410
+ if (
411
+ $filterDesign.find( `[value="${ design }"]` )
412
+ .length
413
+ ) {
414
+ continue;
415
+ }
416
+
417
+ console.log( 'not found' );
418
+
419
+ $filterDesign.append(
420
+ $( '<option/>', {
421
+ value: design,
422
+ text:
423
+ yith_wcan_admin.supported_designs[
424
+ design
425
+ ],
426
+ } )
427
+ );
428
+ }
429
+ break;
430
+ }
431
+
432
+ $filterDesign.change();
433
+ } )
434
+ .change();
435
+ };
436
+
437
+ self.initFilterDesign = function ( $filter ) {
438
+ const $filterType = $filter.find( '.filter-design' );
439
+
440
+ $filterType
441
+ .on( 'change', () => {
442
+ self.updateTermFields( $filter, self.getTermsType( $filter ) );
443
  } )
444
  .change();
445
  };
517
  } );
518
  };
519
 
520
+ self.initFilterCurrencyFields = function ( $filter ) {
521
+ $filter.find( '[data-currency]' ).each( function () {
522
+ const $field = $( this ),
523
+ $currencySpan = $( '<span/>', {
524
+ text: $field.data( 'currency' ),
525
+ class: 'currency',
526
+ } );
527
+
528
+ $field.after( $currencySpan );
529
+ } );
530
+ };
531
+
532
+ self.initInvalidFields = function ( $filter ) {
533
+ /**
534
+ * Invalid event does not bubble, so we need to handle it for each filter added
535
+ * https://developer.mozilla.org/en-US/docs/Web/API/HTMLInputElement/invalid_event
536
+ */
537
+ $filter.find( ':input' ).on( 'invalid', ( ev ) => {
538
+ const target = ev.target,
539
+ $target = $( target );
540
+
541
+ ev.preventDefault();
542
+
543
+ self.goToFilter( $filter, $target ).done( () => {
544
+ self.addInputValidationMessage(
545
+ $target,
546
+ target.validationMessage
547
+ );
548
+ } );
549
+ } );
550
+ };
551
+
552
  self.afterAddFilter = function ( $filter ) {
553
  self.closeAllFilters();
554
  self.openFilter( $filter );
570
  }
571
  };
572
 
573
+ self.afterTaxonomyChange = function ( $filter ) {
574
+ const $termSearch = $filter.find( '.term-search' ).first();
575
+
576
+ // clear terms select when taxonomy is changed
577
+ $termSearch.find( 'option' ).remove().end().change();
578
+
579
+ // handle changes to Customize Terms description
580
+ self.customizeTermsNotice( $filter );
581
+ };
582
+
583
+ self.afterLayoutChange = function () {
584
+ const layout = self.$layout.find( ':checked' ).val();
585
+
586
+ self.$filters.each( ( i, v ) => {
587
+ const $filter = $( v ),
588
+ $showToggle = $filter.find( '.show-toggle' ),
589
+ $showToggleRow = $showToggle.closest(
590
+ '.yith-toggle-content-row'
591
+ );
592
+
593
+ if ( 'horizontal' === layout ) {
594
+ $showToggle
595
+ .find( ':input' )
596
+ .prop( 'checked', false )
597
+ .removeClass( 'onoffchecked' )
598
+ .change();
599
+ $showToggleRow.hide();
600
+
601
+ $filter.find( '.term-tooltip' ).hide();
602
+ } else {
603
+ $showToggleRow.show();
604
+
605
+ $filter.find( '.term-tooltip' ).show();
606
+ }
607
+ } );
608
+ };
609
+
610
+ self.customizeTermsNotice = function ( $filter ) {
611
+ const $taxonomySelect = $filter.find( '.taxonomy' ).first(),
612
+ $filterDesign = $filter.find( '.filter-design' ).first(),
613
+ $customizeTermsWrapper = $filter
614
+ .find( '.customize-terms' )
615
+ .parent(),
616
+ $customizeTermsRow = $customizeTermsWrapper.closest(
617
+ '.yith-toggle-content-row'
618
+ ),
619
+ $customizeTermsDescription = $customizeTermsWrapper.next(
620
+ '.description'
621
+ ),
622
+ $customizeTerms = $customizeTermsWrapper.find( 'input' ),
623
+ $wcclNotice = $customizeTermsDescription.find( '.wccl-notice' ),
624
+ $imagesNotice = $customizeTermsDescription.find( '.images-notice' ),
625
+ taxonomies = $taxonomySelect.data( 'taxonomies' ),
626
+ taxonomy = $taxonomySelect.val(),
627
+ filterDesign = $filterDesign.val();
628
+
629
+ // show Colors & Labels notice
630
+ if (
631
+ ! yith_wcan_admin.yith_wccl_enabled ||
632
+ ! taxonomies[ taxonomy ]?.is_attribute
633
+ ) {
634
+ $wcclNotice.hide();
635
+ } else {
636
+ $wcclNotice.show();
637
+ }
638
+
639
+ // show images notice
640
+ if (
641
+ ! taxonomies[ taxonomy ]?.supports_images ||
642
+ 'label' !== filterDesign
643
+ ) {
644
+ $imagesNotice.hide();
645
+ } else {
646
+ $imagesNotice.show();
647
+ }
648
+
649
+ // hide option if not needed
650
+ if (
651
+ 'color' === filterDesign &&
652
+ ( ! yith_wcan_admin.yith_wccl_enabled ||
653
+ ! taxonomies[ taxonomy ]?.is_attribute )
654
+ ) {
655
+ $customizeTerms.prop( 'checked', true );
656
+ $customizeTermsRow.addClass( 'disabled' );
657
+ } else {
658
+ $customizeTermsRow.removeClass( 'disabled' );
659
+ }
660
+ };
661
+
662
+ self.clearFilterErrors = function ( $filter ) {
663
+ $filter.on( 'change keydown', ':input', function () {
664
+ const $input = $( this );
665
+
666
+ if ( $input.hasClass( 'validation-error' ) ) {
667
+ // remove any validation class
668
+ $input
669
+ .removeClass( 'validation-error' )
670
+ .removeClass( 'required-field-empty' );
671
+
672
+ // remove any error message
673
+ $input.next( '.validation-message' ).remove();
674
+ }
675
+ } );
676
+ };
677
+
678
  self._findFilterField = function (
679
  $filter,
680
  field,
746
  result = condition( fieldValue );
747
  } else if ( 0 === condition.indexOf( ':' ) ) {
748
  result = $field.is( condition );
749
+ } else if ( 0 === condition.indexOf( '!:' ) ) {
750
+ result = ! $field.is( condition.toString().substring( 1 ) );
751
+ } else if ( 0 === condition.indexOf( '!' ) ) {
752
  result = condition.toString().substring( 1 ) !== fieldValue;
753
  } else {
754
  result = condition.toString() === fieldValue;
769
 
770
  self._confirmAddAllTerms = function ( $select ) {
771
  let v = $select.val(),
772
+ details = $select.data( 'taxonomies' ),
773
  message = yith_wcan_admin.messages.confirm_add_all_terms;
774
 
775
+ if ( details[ v ]?.terms_count && details[ v ]?.terms_count > 1 ) {
776
+ message = message.replace( '%s', details[ v ]?.terms_count );
777
  return confirm( message );
778
  }
779
  return true;
979
  };
980
 
981
  self.saveFilter = function ( $filter ) {
982
+ if ( ! self.validateFilter( $filter ) ) {
983
+ return false;
984
+ }
985
+
986
  self.ajaxSaveFilter( $filter ).done( ( data ) => {
987
  self.maybeSetPresetId( data.id );
988
  self.closeFilter( $filter );
989
  } );
990
  };
991
 
992
+ self.isFilterOpen = function ( $filter ) {
993
+ return $filter.hasClass( 'yith-toggle-row-opened' );
994
+ };
995
 
996
+ self.openFilter = function ( $filter ) {
997
  // fix title
998
  $filter
999
  .find( '.yith-toggle-title' )
1008
  .promise();
1009
  };
1010
 
1011
+ self.isFilterClosed = function ( $filter ) {
1012
+ return ! self.isFilterOpen( $filter );
1013
+ };
1014
+
1015
  self.closeFilter = function ( $filter ) {
1016
  // fix title
1017
  $filter
1076
  } else {
1077
  self.$page.val( page );
1078
  }
1079
+
1080
+ // update registered filters.
1081
+ self.updateFilters();
1082
  }
1083
  } );
1084
  };
1085
 
1086
  self.updateFilters = function () {
1087
  self.$filters = self.$filtersContainer.find( '.yith-toggle-row' );
1088
+
1089
+ self.updateRowIndex();
1090
+ };
1091
+
1092
+ self.validateFilters = function () {
1093
+ let valid = true;
1094
+
1095
+ self.$filters.each( function () {
1096
+ if ( ! valid ) {
1097
+ return;
1098
+ }
1099
+
1100
+ let $filter = $( this );
1101
+
1102
+ valid = self.validateFilter( $filter );
1103
+ } );
1104
+
1105
+ return valid;
1106
+ };
1107
+
1108
+ self.validateFilter = function ( $filter ) {
1109
+ const layout = self.$layout.find( ':checked' ).val(),
1110
+ $title = $filter.find( '.filter-title' ),
1111
+ title = $title?.val();
1112
+
1113
+ // horizontal layout needs title for each filter
1114
+ if ( 'horizontal' === layout && ! title ) {
1115
+ self.addInputValidationMessage(
1116
+ $title,
1117
+ yith_wcan_admin.messages.filter_title_required
1118
+ );
1119
+ self.goToFilter( $filter );
1120
+
1121
+ return false;
1122
+ }
1123
+
1124
+ // trigger default browser validation.
1125
+ let valid = true;
1126
+
1127
+ $filter.find( ':input' ).each( function () {
1128
+ if ( ! valid ) {
1129
+ return;
1130
+ }
1131
+ valid = this.reportValidity();
1132
+ } );
1133
+
1134
+ return valid;
1135
+ };
1136
+
1137
+ self.goToFilter = function ( $filter, $target ) {
1138
+ if ( self.isFilterOpen( $filter ) ) {
1139
+ $target = $target || $filter;
1140
+
1141
+ return $( 'html, body' )
1142
+ .stop( true )
1143
+ .animate( {
1144
+ scrollTop: $target.offset().top - 100,
1145
+ } )
1146
+ .promise();
1147
+ }
1148
+ return $( 'html, body' )
1149
+ .stop( true )
1150
+ .animate( {
1151
+ scrollTop: $filter.offset().top - 100,
1152
+ } )
1153
+ .promise()
1154
+ .done( () => {
1155
+ self.openFilter( $filter );
1156
+
1157
+ if ( ! $target || ! $target.length ) {
1158
+ return;
1159
+ }
1160
+
1161
+ $( 'html, body' ).animate( {
1162
+ scrollTop: $target.offset().top - 100,
1163
+ } );
1164
+ } );
1165
  };
1166
 
1167
  self.getRowIndex = function ( $row ) {
1174
  let maxIndex = 0;
1175
 
1176
  self.$filters.each( function ( i ) {
1177
+ const numericId = $( this ).data( 'item_key' );
 
1178
 
1179
  maxIndex = maxIndex < numericId ? numericId : maxIndex;
1180
  } );
1204
  return $filter.find( '.term-box' );
1205
  };
1206
 
1207
+ self.getTermsType = function ( $filter ) {
1208
+ const $filterType = $filter.find( '.filter-design' ),
1209
+ filterType = $filterType?.val();
1210
+
1211
+ if ( 'label' !== filterType && 'color' !== filterType ) {
1212
+ return 'labels_only';
1213
+ } else if ( 'color' === filterType ) {
1214
+ return 'complete';
1215
+ }
1216
+
1217
+ return 'image_only';
1218
+ };
1219
+
1220
  self.initTerms = function ( $filter ) {
1221
+ const $terms = $filter.find( '.term-box' ),
1222
+ $orderBy = $filter.find( '.order-by' );
1223
 
1224
  $terms.each( function () {
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 ) {
1345
  };
1346
 
1347
  self.initTermsDragDrop = function ( $filter ) {
1348
+ try {
1349
+ $filter.find( '.terms-wrapper' ).sortable( {
1350
+ cursor: 'move',
1351
+ scrollSensitivity: 40,
1352
+ forcePlaceholderSize: true,
1353
+ helper: 'clone',
1354
+ } );
1355
+ } catch ( e ) {
1356
+ // do nothing.
1357
+ }
1358
+ };
1359
+
1360
+ self.destroyTermsDragDrop = function ( $filter ) {
1361
+ try {
1362
+ $filter.find( '.terms-wrapper' ).sortable( 'destroy' );
1363
+ } catch ( e ) {
1364
+ // do nothing.
1365
+ }
1366
  };
1367
 
1368
  self.showTermTab = function ( $term, tab, force ) {
1415
  };
1416
 
1417
  self.updateTerms = function ( $filter ) {
1418
+ const $termsContainer = $filter.find( '.terms-wrapper' );
1419
+
1420
+ if ( ! $termsContainer.is( ':visible' ) ) {
1421
+ return;
1422
+ }
1423
+
1424
  const selectedTerms = self._getSelectedTerms( $filter ),
 
1425
  $existingTerms = $termsContainer.find( '.term-box' ),
 
1426
  newTerms = [];
1427
 
1428
  if ( selectedTerms ) {
1460
  } );
1461
  }
1462
 
1463
+ self.updateTermFields( $filter, self.getTermsType( $filter ) );
1464
 
1465
  $filter.trigger( 'yith_fields_init' );
1466
  };
1469
  const $terms = $filter.find( '.term-box' );
1470
 
1471
  switch ( type ) {
1472
+ case 'complete':
1473
  $terms
1474
  .find( '.term-tab-headers' )
1475
  .show()
1488
  );
1489
  } );
1490
  break;
1491
+ case 'colors_only':
1492
+ $terms
1493
+ .find( '.term-tab-headers' )
1494
+ .show()
1495
+ .find( 'a[data-tab="image"], span' )
1496
+ .hide();
1497
+ $terms.find( '.tab.tab-color' ).show();
1498
+ $terms.find( '.tab.tab-image' ).hide();
1499
+
1500
+ self.showTermTab( $terms, 'image', true );
1501
+ break;
1502
+ case 'image_only':
1503
  $terms
1504
  .find( '.term-tab-headers' )
1505
  .show()
1510
 
1511
  self.showTermTab( $terms, 'image', true );
1512
  break;
1513
+ case 'labels_only':
1514
  default:
1515
  $terms.find( '.term-tab-headers' ).hide();
1516
  $terms.find( '.tab.tab-color' ).hide();
1908
  .trim();
1909
  };
1910
 
1911
+ self.addInputValidationMessage = function ( $input, message ) {
1912
+ const $message = $( '<span/>', {
1913
+ class: 'validation-message',
1914
+ text: message,
1915
+ } );
1916
+
1917
+ $input
1918
+ .addClass( 'required-field-empty' )
1919
+ .addClass( 'validation-error' )
1920
+ .next( '.validation-message' )
1921
+ .remove()
1922
+ .end()
1923
+ .after( $message );
1924
+ };
1925
+
1926
  // let's start the game
1927
  self.init();
1928
  }
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"},terms:{type:"tax"},filter_design:{type:"tax"},column_number:{filter_design:["label","color"]},terms_options:{terms:e=>!!e},show_search:{filter_design:"select"},price_ranges:{type:"price_range"},price_slider_min:{type:"price_slider"},price_slider_max:{type:"price_slider"},price_slider_step:{type:"price_slider"},order_options:{type:"orderby"},show_stock_filter:{type:"stock_sale"},show_sale_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",filter_design:"-radio"},relation:{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.$page=e("#paged"),t.$submit=e("#submit"),t.init=function(){t.initFilters(),t.initAddFilter(),t.initLoadMoreFilters(),t.initSubmit()},t.initAddFilter=function(){t.updateRowIndex(),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.block(t.$form)))},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.initFilterFields(e),t.initFilterFieldsDependencies(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.initFilterType(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),r.on("change",(()=>{n.find("option").remove().end().change()})),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.initFilterType=function(e){const i=e.find('[name*="filter_design"]');i.on("change",(()=>{t.updateTermFields(e,i.val())})).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.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._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("-")?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("counts"),n=yith_wcan_admin.messages.confirm_add_all_terms;return!(i[t]&&i[t]>1)||(n=n.replace("%s",i[t]),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=`filters_${t.getRowIndex(i)}_${r}`,a=i.find(`#${o}`),l=n[r];if(a.length||"price_ranges"===r)if("terms"===r){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 r=`${o}_${e}_${t}`,a=i.find(`#${r}`);a.length&&a.val(n[e][t])}}else if("price_ranges"===r){const e=l;if("object"!=typeof e)continue;for(const n in e){const r=e[n];t.addRange(i,r.min,r.max,r.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"===r?a.val(n[r]).keyup():a.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),c=l.attr("id");void 0!==c&&(a=c.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){t.ajaxSaveFilter(e).done((i=>{t.maybeSetPresetId(i.id),t.closeFilter(e)}))},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.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=function(){t.$filters=t.$filtersContainer.find(".yith-toggle-row")},t.getRowIndex=function(e){const t=e.data("item_key");return t?parseInt(t):0},t.updateRowIndex=function(){let e=0;t.$filters.each((function(t){const i=this.id.replace("filter_","");e=e<i?i:e})),t.rowIndex=e},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.initTerms=function(i){i.find(".term-box").each((function(){t.initTerm(e(this))})),t.initTermsDragDrop(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 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"),c=r.find(".term-image"),d=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),c.val(i.id),t.unblock(o),o.hide(),a.show()})),n.on("close",(function(){t.unblock(o)}))),n.open()})),d.off("click").on("click",(function(e){e.preventDefault(),c.val(""),a.hide(),o.show()}))},t.initTermsDragDrop=function(e){e.find(".terms-wrapper").sortable({cursor:"move",scrollSensitivity:40,forcePlaceholderSize:!0,helper:"clone"})},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){const n=t._getSelectedTerms(i),r=i.find(".terms-wrapper"),o=r.find(".term-box"),a=i.find('[name*="filter_design"]'),l=[];n&&e.each(n,(function(n,r){const a=o.filter('[data-term_id="'+r.id+'"]');if(a.length)l.push(a);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)}})),o.detach(),l.length&&e.each(l,(function(e,i){r.append(i),t.afterAddTerm(i)})),t.updateTermFields(i,a.val()),i.trigger("yith_fields_init")},t.updateTermFields=function(i,n){const r=i.find(".term-box");switch(n){case"color":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"label":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;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.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(),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()}
assets/js/yith-wcan-shortcodes.js CHANGED
@@ -1,2413 +1,2348 @@
1
- 'use strict';
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
2
 
3
  /* global globalThis, jQuery, yith_wcan_shortcodes, accounting */
4
 
5
- function YITH_WCAN_Filter( $ ) {
6
- const self = this;
7
 
8
- // currently executing xhr
9
- self.xhr = null;
10
 
11
- // flag set during ajax call handling
12
- self.doingAjax = false;
13
 
14
- // flag set once init has executed
15
- self.initialized = false;
16
 
17
- // register original url search param
18
- self.originalSearch = false;
 
 
19
 
20
- // init object
21
- self._init = function () {
22
- const head = $( 'head' ).html(),
23
- pageTitle = document.title,
24
- alternativeUrl = self.searchAlternativeUrl( head );
25
 
26
- alternativeUrl &&
27
- ! self.doingAjax &&
28
- ! self.initialized &&
29
- ! yith_wcan_shortcodes.ajax_filters &&
30
- self.pushUrlToHistory( alternativeUrl, pageTitle );
 
 
 
 
 
 
 
31
 
32
- self.originalSearch = location.search;
33
 
34
- self.initialized = true;
35
- };
36
-
37
- // execute call to filter products in current view
38
- self.doFilter = function ( filters, target, preset ) {
39
- let targetUrl,
40
- $target = target ? $( target ) : $( 'body' ),
41
- customFilters;
42
-
43
- // filter properties
44
- customFilters = $(
45
- document
46
- ).triggerHandler( 'yith_wcan_filters_parameters', [ filters ] );
47
-
48
- if ( !! customFilters ) {
49
- filters = customFilters;
50
- }
51
-
52
- // block elements before filtering
53
- $target && self.block( $target );
54
-
55
- // calculate target url
56
- targetUrl = self.buildUrl( filters );
57
-
58
- // if no ajax, simply change page url
59
- if ( ! yith_wcan_shortcodes.ajax_filters ) {
60
- window.location = targetUrl;
61
- return;
62
- }
63
-
64
- // start doing ajax
65
- self.doingAjax = true;
66
-
67
- return self._doAjax( targetUrl ).done( function ( response ) {
68
- targetUrl = self.searchAlternativeUrl( response, targetUrl );
69
-
70
- self._beforeFilter( response, filters );
71
-
72
- self.refreshFragments( target, preset, response );
73
- self.pushUrlToHistory( targetUrl, response.pageTitle );
74
-
75
- $target && self.unblock( $target );
76
-
77
- self._afterFilter( response, filters );
78
-
79
- self.doingAjax = false;
80
- } );
81
- };
82
-
83
- // actions performed before filter
84
- self._beforeFilter = function ( response, filters ) {
85
- $( document ).trigger( 'yith-wcan-ajax-loading', [
86
- response,
87
- filters,
88
- ] );
89
- };
90
-
91
- // clean url parameters
92
- self._cleanParam = function ( param ) {
93
- let sanitized = encodeURIComponent( param );
94
-
95
- if ( yith_wcan_shortcodes?.skip_sanitize ) {
96
- sanitized = param;
97
- }
98
-
99
- return sanitized;
100
- };
101
-
102
- // actions performed after filter
103
- self._afterFilter = function ( response, filters ) {
104
- $( '.woocommerce-ordering' ).on(
105
- 'change',
106
- 'select.orderby',
107
- function () {
108
- $( this ).closest( 'form' ).submit();
109
- }
110
- );
111
-
112
- $( window ).trigger( 'scroll' );
113
-
114
- $( document )
115
- .trigger( 'yith-wcan-ajax-filtered', [ response, filters ] )
116
- .trigger( 'yith_wcwl_reload_fragments' );
117
- };
118
-
119
- // build url to show
120
- self.buildUrl = function ( filters ) {
121
- let queryParam = yith_wcan_shortcodes.query_param,
122
- params = {},
123
- location = window.location,
124
- url = !! yith_wcan_shortcodes.base_url
125
- ? yith_wcan_shortcodes.base_url
126
- : location?.origin + location?.pathname,
127
- search = '';
128
-
129
- const haveFilters =
130
- typeof filters === 'object' && Object.keys( filters ).length;
131
-
132
- // remove filter session from current url, if any
133
- if ( !! yith_wcan_shortcodes.session_param ) {
134
- url = url.replace(
135
- new RegExp(
136
- '/' + yith_wcan_shortcodes.session_param + '/[^/]*/'
137
- ),
138
- ''
139
- );
140
- }
141
-
142
- if ( haveFilters ) {
143
- params[ queryParam ] = 1;
144
- }
145
-
146
- if ( !! self.originalSearch ) {
147
- const searchParams = self.originalSearch
148
- .replace( '?', '' )
149
- .split( '&' )
150
- .reduce( ( a, v ) => {
151
- const items = v.split( '=' );
152
-
153
- if ( items.length === 2 ) {
154
- if ( self.isFilterParam( items[ 0 ] ) ) {
155
- return a;
156
- }
157
-
158
- a[ items[ 0 ] ] = items[ 1 ];
159
- }
160
-
161
- return a;
162
- }, {} );
163
-
164
- params = $.extend( params, searchParams );
165
- }
166
-
167
- if ( haveFilters ) {
168
- params = $.extend( params, filters );
169
- }
170
-
171
- search = Object.keys( params )
172
- .reduce( function ( a, i ) {
173
- const v = params[ i ];
174
-
175
- if ( ! v || ! i ) {
176
- return a;
177
- }
178
-
179
- a +=
180
- self._cleanParam( i ) +
181
- '=' +
182
- self._cleanParam( v ) +
183
- '&';
184
-
185
- return a;
186
- }, '?' )
187
- .replace( /&$/g, '' )
188
- .replace( /%2B/g, '+' )
189
- .replace( /%2C/g, ',' );
190
-
191
- if ( search.length > 1 ) {
192
- url += search;
193
- }
194
-
195
- return url;
196
- };
197
-
198
- // retrieves alternative sharing url in response body
199
- self.searchAlternativeUrl = function ( response, defaultUrl = '' ) {
200
- let url = defaultUrl,
201
- matches;
202
-
203
- if ( -1 === response.indexOf( 'yith_wcan:sharing_url' ) ) {
204
- return url;
205
- }
206
-
207
- matches = response.match(
208
- /<meta name="yith_wcan:sharing_url" content="([^"]*)">/
209
- );
210
- url = 1 in matches ? matches[ 1 ] : url;
211
-
212
- return url;
213
- };
214
-
215
- // push url to browser history
216
- self.pushUrlToHistory = function ( url, title ) {
217
- if (
218
- ! yith_wcan_shortcodes.change_browser_url ||
219
- navigator.userAgent.match( /msie/i )
220
- ) {
221
- return;
222
- }
223
-
224
- window.history.pushState(
225
- {
226
- pageTitle: title,
227
- },
228
- '',
229
- url
230
- );
231
- };
232
-
233
- // replaces elements in the page with refreshed ones
234
- self.refreshFragments = function ( target, preset, response ) {
235
- const responseDom = document.createElement( 'html' ),
236
- $response = $( responseDom );
237
-
238
- responseDom.innerHTML = response;
239
-
240
- if ( target ) {
241
- let $preset = $( preset ),
242
- $target = $( target ),
243
- $destination;
244
-
245
- if ( $preset.length ) {
246
- $destination = $response.find( preset );
247
-
248
- if ( $destination.length ) {
249
- $preset.replaceWith( $destination.first() );
250
- }
251
- }
252
-
253
- if ( $target.length ) {
254
- $destination = $response.find( target );
255
-
256
- if ( $destination.length ) {
257
- $target.replaceWith( $destination.first() );
258
- }
259
- }
260
- } else {
261
- const content = $( yith_wcan_shortcodes.content );
262
-
263
- if ( content.length ) {
264
- content.replaceWith(
265
- $response.find( yith_wcan_shortcodes.content )
266
- );
267
- } else {
268
- $( 'body' ).replaceWith( $response.find( 'body' ) );
269
- }
270
- }
271
-
272
- $( document ).trigger( 'yith_wcan_init_shortcodes' );
273
- };
274
-
275
- // executes Ajax calls
276
- self._doAjax = function ( url, params ) {
277
- if ( self.xhr ) {
278
- self.xhr.abort();
279
- }
280
-
281
- params = $.extend(
282
- {
283
- url,
284
- },
285
- params
286
- );
287
-
288
- self.xhr = $.ajax( params );
289
-
290
- return self.xhr;
291
- };
292
-
293
- // block dom elements
294
- self.block = function ( $el ) {
295
- if ( typeof $.fn.block === 'undefined' ) {
296
- return;
297
- }
298
-
299
- let background = '#fff center center no-repeat';
300
-
301
- if ( yith_wcan_shortcodes?.loader ) {
302
- background = `url('${ yith_wcan_shortcodes.loader }') ${ background }`;
303
- }
304
-
305
- $el.block( {
306
- message: null,
307
- overlayCSS: {
308
- background,
309
- opacity: 0.7,
310
- },
311
- } );
312
- };
313
-
314
- // unblock dom elements
315
- self.unblock = function ( $el ) {
316
- if ( typeof $.fn.unblock === 'undefined' ) {
317
- return;
318
- }
319
-
320
- $el.unblock();
321
- };
322
-
323
- // checks if param is one used by layared nav to filter products.
324
- self.isFilterParam = function ( param ) {
325
- let supportedParams = [
326
- 'rating_filter',
327
- 'min_price',
328
- 'max_price',
329
- 'onsale_filter',
330
- 'instock_filter',
331
- 'orderby',
332
- 'product-page',
333
- yith_wcan_shortcodes.query_param,
334
- ].concat(
335
- yith_wcan_shortcodes.supported_taxonomies.map( ( i ) =>
336
- i.replace( 'pa_', 'filter_' )
337
- )
338
- );
339
-
340
- if ( -1 !== supportedParams.indexOf( param ) ) {
341
- return true;
342
- }
343
-
344
- if ( -1 !== param.indexOf( 'filter_' ) ) {
345
- return true;
346
- }
347
-
348
- if ( -1 !== param.indexOf( 'query_type_' ) ) {
349
- return true;
350
- }
351
-
352
- return false;
353
- };
354
-
355
- // let's start the game
356
- self._init();
357
-
358
- return self;
359
- }
360
-
361
- function YITH_WCAN_Preset( el, $ ) {
362
- const self = this;
363
-
364
- // main preset node
365
- self.preset = '#' + el.attr( 'id' );
366
- self.$preset = el;
367
-
368
- // target of the filter, if any
369
- self.target = self.$preset.data( 'target' );
370
- self.$target = self.target ? $( self.target ) : false;
371
-
372
- // filters node
373
- self.$filters = false;
374
-
375
- // filter button
376
- self.$filterButtons = false;
377
-
378
- // nodes created just for modal layout
379
- self.modalElements = {};
380
-
381
- // retains current status of filters
382
- self.activeFilters = false;
383
-
384
- // mobile flag
385
- self.isMobile = false;
386
-
387
- // slider timeout
388
- self.sliderTimeout = false;
389
-
390
- // registers when status has changed
391
- self.originalFilters = null;
392
- self.dirty = false;
393
-
394
- // init object
395
- self._init = function () {
396
- self._regiterStatus();
397
- self._initFilterButton();
398
- self._initResponsive();
399
- self._initFilters();
400
- self._initActions();
401
-
402
- self.$preset.data( 'preset', self ).addClass( 'enhanced' );
403
- };
404
-
405
- // init filters
406
- self._initFilters = function () {
407
- self.getFilters().each( function () {
408
- const $filter = $( this );
409
-
410
- self._initFilter( $filter );
411
- } );
412
-
413
- self.maybeShowClearAllFilters();
414
- };
415
-
416
- // init filter button
417
- self._initFilterButton = function () {
418
- self.$filterButtons = self.$preset.find( '.apply-filters' );
419
-
420
- if ( ! self.$filterButtons.length ) {
421
- return;
422
- }
423
-
424
- // manage filter button
425
- self.$filterButtons
426
- .on( 'click', ( ev ) => {
427
- ev.preventDefault();
428
- self.filter();
429
- } )
430
- .hide();
431
- };
432
-
433
- // init generic actions
434
- self._initActions = function () {
435
- self.$preset.find( 'form' ).on( 'submit', ( ev ) => {
436
- ev.preventDefault();
437
- } );
438
- };
439
-
440
- // init responsive
441
- self._initResponsive = function () {
442
- if ( ! yith_wcan_shortcodes.modal_on_mobile ) {
443
- return;
444
- }
445
-
446
- const media = window.matchMedia(
447
- `(max-width: ${ yith_wcan_shortcodes.mobile_media_query }px)`
448
- );
449
-
450
- $( window )
451
- .on( 'resize', function () {
452
- const isMobile = !! media.matches;
453
-
454
- if ( isMobile !== self.isMobile ) {
455
- self.isMobile = isMobile;
456
- self._afterLayoutChange();
457
- }
458
- } )
459
- .resize();
460
- };
461
-
462
- // init filter
463
- self._initFilter = function ( $filter ) {
464
- const handleChange = function ( ev ) {
465
- const t = $( this ),
466
- $currentFilter = t.closest( '.yith-wcan-filter' ),
467
- multiple = $currentFilter.length
468
- ? 'yes' === $currentFilter.data( 'multiple' )
469
- : false,
470
- $item = t.closest( '.filter-item' ),
471
- $items = $item.length
472
- ? $currentFilter.find( '.filter-item' ).not( $item )
473
- : [];
474
-
475
- if ( $item.is( '.disabled' ) && ! $item.is( '.active' ) ) {
476
- ev.preventDefault();
477
- return false;
478
- }
479
-
480
- ev.preventDefault();
481
-
482
- $items.length && ! multiple && $items.removeClass( 'active' );
483
- $item.length && $item.toggleClass( 'active' );
484
-
485
- // reset active filters.
486
- self.activeFilters = false;
487
-
488
- self.maybeFilter();
489
- self.maybeToggleClearAllFilters();
490
- self.maybeToggleClearFilter( $currentFilter );
491
- };
492
-
493
- // handle filter activation/deactivation by click on label (no input involved)
494
- $filter
495
- .find( '.filter-item' )
496
- .not( '.checkbox' )
497
- .not( '.radio' )
498
- .on( 'click', 'a', function ( ev ) {
499
- const t = $( this ),
500
- $item = t.closest( '.filter-item' );
501
-
502
- if ( ! $( ev?.delegateTarget ).is( $item ) ) {
503
- return false;
504
- }
505
-
506
- handleChange.call( this, ev );
507
- } );
508
-
509
- // handle filter activation/deactivation from input change
510
- $filter.find( ':input' ).on( 'change', function ( ev ) {
511
- const t = $( this ),
512
- $item = t.closest( '.filter-item' );
513
-
514
- if ( $item.is( '.disabled' ) && ! $item.is( '.active' ) ) {
515
- t.prop( 'checked', false );
516
- return false;
517
- }
518
-
519
- handleChange.call( this, ev );
520
- } );
521
-
522
- // handle filter activation/deactivation by click on label (there is an input whose state can be switched)
523
- $filter.find( 'label > a' ).on( 'click', function ( ev ) {
524
- const t = $( this ),
525
- $item = t.closest( '.filter-item' );
526
-
527
- ev.preventDefault();
528
-
529
- if ( $item.is( '.disabled' ) && ! $item.is( '.active' ) ) {
530
- return false;
531
- }
532
-
533
- const $input = t.parent().find( ':input' );
534
-
535
- if (
536
- $input.is( '[type="radio"]' ) ||
537
- $input.is( '[type="checkbox"]' )
538
- ) {
539
- $input.prop( 'checked', ! $input.prop( 'checked' ) );
540
- }
541
-
542
- $input.change();
543
- } );
544
-
545
- // init tooltip
546
- self._initTooltip( $filter );
547
-
548
- // init price slider
549
- self._initPriceSlider( $filter );
550
-
551
- // init dropdown
552
- self._initDropdown( $filter );
553
-
554
- // init collapsable
555
- self._initCollapsable( $filter );
556
-
557
- // init clear anchors
558
- self.maybeShowClearFilter( $filter );
559
-
560
- // init custom inputs
561
- if ( self.$preset?.hasClass( 'custom-style' ) ) {
562
- self._initCustomInput( $filter );
563
- }
564
- };
565
-
566
- // init tooltip
567
- self._initTooltip = function ( $filter, position ) {
568
- $filter.find( '[data-title]' ).each( function () {
569
- const t = $( this );
570
-
571
- if ( t.hasClass( 'tooltip-added' ) || ! t.data( 'title' ) ) {
572
- return;
573
- }
574
-
575
- t.on( 'mouseenter', function () {
576
- let th = $( this ),
577
- tooltip = null,
578
- wrapperWidth = th.outerWidth(),
579
- left = 0,
580
- width = 0;
581
-
582
- if (
583
- ! position ||
584
- ( 'top' !== position && 'right' !== position )
585
- ) {
586
- const container = th.closest( '.filter-item' );
587
-
588
- position =
589
- container.hasClass( 'color' ) ||
590
- container.hasClass( 'label' )
591
- ? 'top'
592
- : 'right';
593
- }
594
-
595
- tooltip = $( '<span>', {
596
- class: 'yith-wcan-tooltip',
597
- html: th.data( 'title' ),
598
- } );
599
-
600
- th.append( tooltip );
601
-
602
- width = tooltip.outerWidth() + 6;
603
- tooltip.outerWidth( width );
604
-
605
- if ( 'top' === position ) {
606
- left = ( wrapperWidth - width ) / 2;
607
- } else {
608
- left = wrapperWidth + 15;
609
- }
610
-
611
- tooltip.css( { left: left.toFixed( 0 ) + 'px' } ).fadeIn( 200 );
612
-
613
- th.addClass( 'with-tooltip' );
614
- } ).on( 'mouseleave', function () {
615
- const th = $( this );
616
-
617
- th.find( '.yith-wcan-tooltip' ).fadeOut( 200, function () {
618
- th.removeClass( 'with-tooltip' )
619
- .find( '.yith-wcan-tooltip' )
620
- .remove();
621
- } );
622
- } );
623
-
624
- t.addClass( 'tooltip-added' );
625
- } );
626
- };
627
-
628
- // init dropdown
629
- self._initDropdown = function ( $filter ) {
630
- const $dropdown = $filter.find( 'select.filter-dropdown' );
631
-
632
- if ( ! $dropdown.length ) {
633
- return;
634
- }
635
-
636
- if (
637
- $dropdown.hasClass( 'select2-hidden-accessible' ) &&
638
- 'undefined' !== typeof $.fn.selectWoo
639
- ) {
640
- $dropdown.selectWoo( 'destroy' );
641
- }
642
-
643
- new YITH_WCAN_Dropdown( $dropdown, $, {
644
- paginate: true,
645
- perPage: yith_wcan_shortcodes.terms_per_page,
646
- } );
647
- };
648
-
649
- // init price slider
650
- self._initPriceSlider = function ( $filter ) {
651
- if ( ! $filter.hasClass( 'filter-price-slider' ) ) {
652
- return;
653
- }
654
-
655
- const $container = $filter.find( '.price-slider' ),
656
- $minInput = $container.find( '.price-slider-min' ),
657
- $maxInput = $container.find( '.price-slider-max' ),
658
- min = parseFloat( $container.data( 'min' ) ),
659
- max = parseFloat( $container.data( 'max' ) ),
660
- currentMin = parseFloat( $minInput.val() ),
661
- currentMax = parseFloat( $maxInput.val() ),
662
- step = parseFloat( $container.data( 'step' ) );
663
-
664
- $filter.find( '.price-slider-ui' ).ionRangeSlider( {
665
- skin: 'round',
666
- type: 'double',
667
- min,
668
- max,
669
- step,
670
- from: currentMin,
671
- to: currentMax,
672
- min_interval: step,
673
- values_separator: ' - ',
674
- prettify: ( v ) => self.formatPrice( v ),
675
- onChange: ( data ) => {
676
- $minInput.val( data.from );
677
- $maxInput.val( data.to );
678
- },
679
- onFinish: ( data ) => {
680
- if ( self.sliderTimeout ) {
681
- clearTimeout( self.sliderTimeout );
682
- }
683
-
684
- self.sliderTimeout = setTimeout( function () {
685
- self.maybeFilter();
686
- }, 200 );
687
- },
688
- } );
689
- };
690
-
691
- // init collapsable
692
- self._initCollapsable = function ( $filter ) {
693
- self._initTitleCollapsable( $filter );
694
- self._initHierarchyCollapsable( $filter );
695
- };
696
-
697
- // init toggle on click of the title
698
- self._initTitleCollapsable = function ( $filter ) {
699
- const $title = $filter.find( '.collapsable' );
700
-
701
- if ( ! $title.length ) {
702
- return;
703
- }
704
-
705
- self._initToggle( $title, $title, $filter.find( '.filter-content' ) );
706
- };
707
-
708
- // init toggle on click of the parent li
709
- self._initHierarchyCollapsable = function ( $filter ) {
710
- const $items = $filter.find( '.hierarchy-collapsable' );
711
-
712
- if ( ! $items.length ) {
713
- return;
714
- }
715
-
716
- // set parents of currently active term as open
717
- const active = $filter.find( '.active' );
718
-
719
- if ( active.length ) {
720
- active
721
- .parents( '.hierarchy-collapsable' )
722
- .removeClass( 'closed' )
723
- .addClass( 'opened' );
724
-
725
- if (
726
- active.hasClass( 'hierarchy-collapsable' ) &&
727
- yith_wcan_shortcodes.show_current_children
728
- ) {
729
- active.removeClass( 'closed' ).addClass( 'opened' );
730
- }
731
- }
732
-
733
- $items.each( function () {
734
- const $t = $( this ),
735
- $toggle = $( '<span/>', {
736
- class: 'toggle-handle',
737
- } );
738
-
739
- $toggle.appendTo( $t );
740
-
741
- self._initToggle( $toggle, $t, $t.children( 'ul.filter-items' ) );
742
- } );
743
- };
744
-
745
- // init toggle to generic toggle/target pair
746
- self._initToggle = function ( $toggle, $container, $target ) {
747
- if ( $container.hasClass( 'closed' ) ) {
748
- $target.hide();
749
- }
750
-
751
- $toggle.off( 'click' ).on( 'click', function ( ev ) {
752
- ev.stopPropagation();
753
-
754
- $container.toggleClass( 'opened' ).toggleClass( 'closed' );
755
- $target.slideToggle();
756
- } );
757
- };
758
-
759
- // init custom input
760
- self._initCustomInput = function ( $filter ) {
761
- $filter.find( ':input' ).each( function () {
762
- let input = $( this ),
763
- type = input.attr( 'type' ),
764
- containerClass = `${ type }button`,
765
- container;
766
-
767
- if ( 'checkbox' !== type && 'radio' !== type ) {
768
- return;
769
- }
770
-
771
- if ( input.closest( `.${ containerClass }` ).length ) {
772
- return;
773
- }
774
-
775
- if ( input.is( ':checked' ) ) {
776
- containerClass += ' checked';
777
- }
778
-
779
- container = $( '<span/>', {
780
- class: containerClass,
781
- } );
782
-
783
- input.wrap( container ).on( 'change', function () {
784
- const t = $( this );
785
-
786
- t.prop( 'checked' )
787
- ? t.parent().addClass( 'checked' )
788
- : t.parent().removeClass( 'checked' );
789
- } );
790
- } );
791
- };
792
-
793
- // register initial status
794
- self._regiterStatus = function () {
795
- self.originalFilters = self.getFiltersProperties();
796
- };
797
-
798
- // trigger handling after layout change
799
- self._afterLayoutChange = function () {
800
- if ( self.isMobile ) {
801
- self.$preset
802
- .addClass( 'filters-modal' )
803
- .attr( 'role', 'dialog' )
804
- .attr( 'tabindex', '-1' )
805
- .hide();
806
-
807
- self._addCloseModalButton();
808
- self._addApplyFiltersModalButton();
809
- self._switchToCollapsables();
810
-
811
- self.$filterButtons?.hide();
812
- } else {
813
- self.$preset
814
- .removeClass( 'filters-modal' )
815
- .removeClass( 'open' )
816
- .removeAttr( 'role' )
817
- .removeAttr( 'tabindex' )
818
- .show();
819
-
820
- $( 'body' )
821
- .css( 'overflow', 'auto' )
822
- .removeClass( 'yith-wcan-preset-modal-open' );
823
-
824
- self._removeCloseModalButton();
825
- self._removeApplyFiltersModalButton();
826
- self._switchBackCollapsables();
827
-
828
- self.$filterButtons?.show();
829
- }
830
- };
831
-
832
- // add modal close button
833
- self._addCloseModalButton = function () {
834
- const $closeButton = $( '<a/>', {
835
- class: 'close-button',
836
- html: '&times;',
837
- 'data-dismiss': 'modal',
838
- 'aria-label': yith_wcan_shortcodes.labels.close,
839
- } );
840
-
841
- $closeButton.prependTo( self.$preset ).on( 'click', self.closeModal );
842
- self.modalElements.closeButton = $closeButton;
843
- };
844
-
845
- // remove modal close button
846
- self._removeCloseModalButton = function () {
847
- self.modalElements?.closeButton?.remove();
848
- };
849
-
850
- // show main filter button for the modal
851
- self._addApplyFiltersModalButton = function () {
852
- const $filterButton = $( '<button/>', {
853
- class: 'apply-filters main-modal-button',
854
- html: yith_wcan_shortcodes.labels.show_results,
855
- 'data-dismiss': 'modal',
856
- } );
857
-
858
- $filterButton.appendTo( self.$preset ).on( 'click', () => {
859
- self.filter();
860
- self.closeModal();
861
- } );
862
- self.modalElements.applyFiltersButton = $filterButton;
863
- };
864
-
865
- // hide main filter button for the modal
866
- self._removeApplyFiltersModalButton = function () {
867
- self.modalElements?.applyFiltersButton?.remove();
868
- };
869
-
870
- // convert all filters to collapsable
871
- self._switchToCollapsables = function () {
872
- self.getFilters().each( function () {
873
- const $filter = $( this ),
874
- $title = $filter.find( '.filter-title' );
875
-
876
- if ( ! $title.length || $title.hasClass( 'collapsable' ) ) {
877
- return;
878
- }
879
-
880
- $title.addClass( 'collapsable' ).data( 'disable-collapse', true );
881
-
882
- self._initTitleCollapsable( $filter );
883
- } );
884
- };
885
-
886
- // switch back filters to their previous collapsable state
887
- self._switchBackCollapsables = function () {
888
- self.getFilters().each( function () {
889
- const $filter = $( this ),
890
- $title = $filter.find( '.filter-title' );
891
-
892
- if (
893
- ! $title.length ||
894
- ! $title.hasClass( 'collapsable' ) ||
895
- ! $title.data( 'disable-collapse' )
896
- ) {
897
- return;
898
- }
899
-
900
- $title
901
- .removeClass( 'collapsable' )
902
- .removeData( 'disable-collapse', true )
903
- .off( 'click' );
904
-
905
- $filter.find( '.filter-content' ).show();
906
- } );
907
- };
908
-
909
- // close all collpasable before showing modal
910
- self._closeAllCollapsables = function () {
911
- self.$filters
912
- .not( '.no-title' )
913
- .not( ( i, v ) => {
914
- return self.isFilterActive( $( v ) );
915
- } )
916
- .find( '.filter-content' )
917
- .hide()
918
- .end()
919
- .find( '.filter-title' )
920
- .addClass( 'closed' )
921
- .removeClass( 'opened' );
922
- };
923
-
924
- // update status change flag, if filters have changed
925
- self.maybeRegisterStatusChange = function () {
926
- const currentFilters = self.getFiltersProperties(),
927
- currentStr = JSON.stringify( currentFilters ),
928
- originalStr = JSON.stringify( self.originalFilters );
929
-
930
- self.dirty = currentStr !== originalStr;
931
- };
932
-
933
- // apply filters when possible
934
- self.maybeFilter = function () {
935
- // register status change
936
- self.maybeRegisterStatusChange();
937
-
938
- // filter, or show filter button.
939
- if ( yith_wcan_shortcodes.instant_filters && ! self.isMobile ) {
940
- self.filter();
941
- } else if (
942
- ! yith_wcan_shortcodes.instant_filters &&
943
- ! self.isMobile
944
- ) {
945
- self.dirty
946
- ? self.$filterButtons?.show()
947
- : self.$filterButtons?.hide();
948
- } else if ( self.isMobile && self.dirty ) {
949
- self.$preset.addClass( 'with-filter-button' );
950
- self.modalElements.applyFiltersButton?.show();
951
- }
952
- };
953
-
954
- // main filtering method
955
- self.filter = function () {
956
- const filter = window?.product_filter;
957
-
958
- filter
959
- ?.doFilter( self.getFiltersProperties(), self.target, self.preset )
960
- ?.done( () => {
961
- let newPreset = $( self.preset );
962
-
963
- if (
964
- ! self.isMobile &&
965
- newPreset.length &&
966
- yith_wcan_shortcodes.scroll_top
967
- ) {
968
- let targetOffset = newPreset.offset().top;
969
-
970
- if ( !! yith_wcan_shortcodes.scroll_target ) {
971
- const scrollTarget = $(
972
- yith_wcan_shortcodes.scroll_target
973
- );
974
-
975
- targetOffset = scrollTarget.length
976
- ? scrollTarget.offset().top
977
- : targetOffset;
978
- }
979
- $( 'body, html' ).animate( {
980
- scrollTop: targetOffset - 100,
981
- } );
982
- }
983
-
984
- // register new filters, clear status flag
985
- self.originalFilters = self.getFiltersProperties();
986
- self.dirty = false;
987
- } );
988
-
989
- if ( self.isMobile ) {
990
- self.$preset.removeClass( 'with-filter-button' );
991
- self.modalElements.applyFiltersButton?.hide();
992
- }
993
- };
994
-
995
- // get all filter nodes
996
- self.getFilters = function () {
997
- if ( false === self.$filters ) {
998
- self.$filters = self.$preset.find( '.yith-wcan-filter' );
999
- }
1000
-
1001
- return self.$filters;
1002
- };
1003
-
1004
- // retrieves all filters that we want to apply
1005
- self.getActiveFilters = function () {
1006
- if ( false === self.activeFilters ) {
1007
- self.activeFilters = self.getFiltersProperties();
1008
- }
1009
-
1010
- return self.activeFilters;
1011
- };
1012
-
1013
- // check whether there is any filter active
1014
- self.isAnyFilterActive = function () {
1015
- return !! Object.keys( self.getActiveFilters() ).length;
1016
- };
1017
-
1018
- // checks whether current filter is active
1019
- self.isFilterActive = function ( $filter ) {
1020
- let filterType = $filter.data( 'filter-type' ),
1021
- active,
1022
- filteredActive;
1023
-
1024
- switch ( filterType ) {
1025
- case 'tax':
1026
- const $dropdown = $filter.find( '.filter-dropdown' );
1027
-
1028
- if ( $dropdown.length ) {
1029
- const val = $dropdown.val();
1030
-
1031
- active = 'object' === typeof val ? !! val?.length : !! val;
1032
- break;
1033
- }
1034
-
1035
- // if we use type other than dropdown, fallthrough
1036
- case 'price_range':
1037
- case 'stock_sale':
1038
- active = $filter.find( '.filter-item' ).filter( '.active' )
1039
- .length;
1040
- break;
1041
- case 'review':
1042
- active = !! $filter.find( 'select' ).val();
1043
- break;
1044
- case 'price_slider':
1045
- const min = parseFloat(
1046
- $filter.find( '.price-slider' ).data( 'min' )
1047
- ),
1048
- max = parseFloat(
1049
- $filter.find( '.price-slider' ).data( 'max' )
1050
- ),
1051
- currentMin = parseFloat(
1052
- $filter.find( '.price-slider-min' ).val()
1053
- ),
1054
- currentMax = parseFloat(
1055
- $filter.find( '.price-slider-max' ).val()
1056
- );
1057
-
1058
- active = currentMin > min || currentMax < max;
1059
- break;
1060
- case 'orderby':
1061
- active =
1062
- 'menu_order' !== $filter.find( '.filter-order-by' ).val();
1063
- break;
1064
- default:
1065
- active = false;
1066
- break;
1067
- }
1068
-
1069
- filteredActive = $filter.triggerHandler(
1070
- 'yith_wcan_is_filter_active',
1071
- active,
1072
- self
1073
- );
1074
- active =
1075
- typeof filteredActive !== 'undefined' ? filteredActive : active;
1076
-
1077
- return active;
1078
- };
1079
-
1080
- // retrieves filter properties for the filter
1081
- self.getFilterProperties = function ( $filter ) {
1082
- let filterType = $filter.data( 'filter-type' ),
1083
- properties = {},
1084
- filteredProperties,
1085
- $active;
1086
-
1087
- switch ( filterType ) {
1088
- case 'tax':
1089
- let $dropdown = $filter.find( '.filter-dropdown' ),
1090
- activeTerms = [],
1091
- taxonomy = $filter.data( 'taxonomy' ),
1092
- isAttr = 0 === taxonomy.indexOf( 'filter' ),
1093
- multiple = 'yes' === $filter.data( 'multiple' ),
1094
- relation = $filter.data( 'relation' );
1095
-
1096
- if ( $dropdown.length ) {
1097
- if ( multiple ) {
1098
- activeTerms = $dropdown.val();
1099
- } else {
1100
- activeTerms.push( $dropdown.val() );
1101
- }
1102
- } else {
1103
- $active = $filter
1104
- .find( '.filter-item' )
1105
- .filter( '.active' )
1106
- .children( 'a, label' );
1107
- activeTerms = $active.get().reduce( function ( a, v ) {
1108
- let val;
1109
-
1110
- v = $( v );
1111
- val = v.is( 'label' )
1112
- ? v.find( ':input' ).val()
1113
- : v.data( 'term-slug' );
1114
-
1115
- if ( ! val ) {
1116
- return a;
1117
- }
1118
-
1119
- a.push( val );
1120
-
1121
- return a;
1122
- }, activeTerms );
1123
- }
1124
-
1125
- if ( ! multiple ) {
1126
- properties[ taxonomy ] = activeTerms.pop();
1127
- } else {
1128
- const glue = ! isAttr && 'and' === relation ? '+' : ',';
1129
- properties[ taxonomy ] = activeTerms.join( glue );
1130
- }
1131
-
1132
- if ( isAttr ) {
1133
- properties[
1134
- taxonomy.replace( 'filter_', 'query_type_' )
1135
- ] = relation;
1136
- }
1137
-
1138
- break;
1139
- case 'review':
1140
- properties.rating_filter = $filter.find( 'select' ).val();
1141
- break;
1142
- case 'price_range':
1143
- $active = $filter
1144
- .find( '.filter-item' )
1145
- .filter( '.active' )
1146
- .first()
1147
- .children( 'a' );
1148
-
1149
- properties.min_price = parseFloat(
1150
- $active.data( 'range-min' )
1151
- );
1152
- properties.max_price = parseFloat(
1153
- $active.data( 'range-max' )
1154
- );
1155
- break;
1156
- case 'price_slider':
1157
- properties.min_price = parseFloat(
1158
- $filter.find( '.price-slider-min' ).val()
1159
- );
1160
- properties.max_price = parseFloat(
1161
- $filter.find( '.price-slider-max' ).val()
1162
- );
1163
- break;
1164
- case 'stock_sale':
1165
- if ( $filter.find( '.filter-on-sale' ).is( '.active' ) ) {
1166
- properties.onsale_filter = 1;
1167
- }
1168
- if ( $filter.find( '.filter-in-stock' ).is( '.active' ) ) {
1169
- properties.instock_filter = 1;
1170
- }
1171
- break;
1172
- case 'orderby':
1173
- properties.orderby = $filter.find( '.filter-order-by' ).val();
1174
- break;
1175
- default:
1176
- break;
1177
- }
1178
-
1179
- filteredProperties = $filter.triggerHandler(
1180
- 'yith_wcan_filter_properties',
1181
- properties,
1182
- self
1183
- );
1184
- properties =
1185
- typeof filteredProperties !== 'undefined'
1186
- ? filteredProperties
1187
- : properties;
1188
-
1189
- return properties;
1190
- };
1191
-
1192
- // retrieves properties for all filters of the preset
1193
- self.getFiltersProperties = function () {
1194
- let properties = {};
1195
-
1196
- self.getFilters().each( function () {
1197
- const $filter = $( this );
1198
-
1199
- if ( self.isFilterActive( $filter ) ) {
1200
- const filterProperties = self.getFilterProperties( $filter );
1201
-
1202
- properties = self.mergeProperties(
1203
- properties,
1204
- filterProperties,
1205
- $filter
1206
- );
1207
- // $.extend( properties, filterProperties );
1208
- }
1209
- } );
1210
-
1211
- return properties;
1212
- };
1213
-
1214
- // retrieve filters matching any of the properties passed
1215
- self.getFiltersByProperties = function ( properties ) {
1216
- return self.getFilters().filter( function () {
1217
- const $filter = $( this );
1218
-
1219
- if ( self.isFilterActive( $filter ) ) {
1220
- let filterProperties = self.getFilterProperties( $filter ),
1221
- hasProp = false;
1222
-
1223
- for ( const prop in properties ) {
1224
- if ( typeof filterProperties[ prop ] !== 'undefined' ) {
1225
- hasProp = true;
1226
- break;
1227
- }
1228
- }
1229
-
1230
- return hasProp;
1231
- }
1232
-
1233
- return false;
1234
- } );
1235
- };
1236
-
1237
- // show clear selection anchor
1238
- self.maybeToggleClearFilter = function ( $filter ) {
1239
- if ( ! self.isFilterActive( $filter ) ) {
1240
- self.maybeHideClearFilter( $filter );
1241
- } else {
1242
- self.maybeShowClearFilter( $filter );
1243
- }
1244
- };
1245
-
1246
- // show clear all selections anchor
1247
- self.maybeToggleClearAllFilters = function () {
1248
- if ( ! self.isAnyFilterActive() ) {
1249
- self.maybeHideClearAllFilters();
1250
- } else {
1251
- self.maybeShowClearAllFilters();
1252
- }
1253
- };
1254
-
1255
- // show clear selection anchor
1256
- self.maybeShowClearFilter = function ( $filter ) {
1257
- if (
1258
- ! self.isFilterActive( $filter ) ||
1259
- ! yith_wcan_shortcodes.show_clear_filter
1260
- ) {
1261
- return;
1262
- }
1263
-
1264
- // remove clear selection link if already added.
1265
- $filter.find( '.clear-selection' ).remove();
1266
-
1267
- // add new clear selection link.
1268
- $( '<a/>', {
1269
- class: 'clear-selection',
1270
- text: yith_wcan_shortcodes.labels.clear_selection,
1271
- role: 'button',
1272
- } )
1273
- .prependTo( $filter.find( '.filter-content' ) )
1274
- .on( 'click', function ( ev ) {
1275
- ev.preventDefault();
1276
-
1277
- self.deactivateFilter(
1278
- $filter,
1279
- false,
1280
- yith_wcan_shortcodes.instant_filters
1281
- );
1282
- self.maybeHideClearFilter( $filter );
1283
-
1284
- if ( yith_wcan_shortcodes.instant_filters ) {
1285
- self.closeModal();
1286
- }
1287
- } );
1288
- };
1289
-
1290
- // show clearAll anchor, when on mobile layout
1291
- self.maybeShowClearAllFilters = function () {
1292
- if ( ! self.isAnyFilterActive() || ! self.isMobile ) {
1293
- return;
1294
- }
1295
-
1296
- // remove clear selection link if already added.
1297
- self.$preset.find( '.clear-selection' ).remove();
1298
-
1299
- // add new clear selection link.
1300
- $( '<a/>', {
1301
- class: 'clear-selection',
1302
- text: yith_wcan_shortcodes.labels.clear_all_selections,
1303
- role: 'button',
1304
- } )
1305
- .prependTo( self.$preset.find( '.filters-container' ) )
1306
- .on( 'click', function ( ev ) {
1307
- ev.preventDefault();
1308
-
1309
- self.deactivateAllFilters(
1310
- yith_wcan_shortcodes.instant_filters
1311
- );
1312
- self.maybeHideClearAllFilters();
1313
-
1314
- if ( yith_wcan_shortcodes.instant_filters ) {
1315
- self.closeModal();
1316
- }
1317
- } );
1318
- };
1319
-
1320
- // hide clear selection anchor
1321
- self.maybeHideClearFilter = function ( $filter ) {
1322
- if (
1323
- self.isFilterActive( $filter ) ||
1324
- ! yith_wcan_shortcodes.show_clear_filter
1325
- ) {
1326
- return;
1327
- }
1328
-
1329
- // remove clear selection link.
1330
- $filter.find( '.clear-selection' ).remove();
1331
- };
1332
-
1333
- // show clearAll anchor, when on mobile layout
1334
- self.maybeHideClearAllFilters = function () {
1335
- if ( self.isAnyFilterActive() ) {
1336
- return;
1337
- }
1338
-
1339
- // remove clear selection link.
1340
- self.$preset
1341
- .find( '.filters-container' )
1342
- .children( '.clear-selection' )
1343
- .remove();
1344
- };
1345
-
1346
- // deactivate filter
1347
- self.deactivateFilter = function ( $filter, properties, doFilter ) {
1348
- const filterType = $filter.data( 'filter-type' ),
1349
- $items = $filter.find( '.filter-item' ),
1350
- $activeItems = $items.filter( '.active' );
1351
-
1352
- switch ( filterType ) {
1353
- case 'tax':
1354
- const $dropdown = $filter.find( '.filter-dropdown' ),
1355
- taxonomy = $filter.data( 'taxonomy' );
1356
-
1357
- if ( $dropdown.length ) {
1358
- if ( ! properties ) {
1359
- $dropdown.find( 'option' ).prop( 'selected', false );
1360
- } else {
1361
- $dropdown.find( 'option' ).each( function () {
1362
- const $option = $( this );
1363
-
1364
- if ( $option.val() === properties[ taxonomy ] ) {
1365
- $option.prop( 'selected', false );
1366
- }
1367
- } );
1368
- }
1369
-
1370
- $dropdown.change();
1371
- } else if ( ! properties ) {
1372
- $activeItems.children( 'label' ).children( 'a' ).click();
1373
- $activeItems.removeClass( 'active' );
1374
- } else {
1375
- $activeItems.each( function () {
1376
- let $item = $( this ),
1377
- $label = $item.children( 'label' ),
1378
- $anchor = $item.children( 'a' ),
1379
- value;
1380
-
1381
- value = $label.length
1382
- ? $label.find( ':input' ).val()
1383
- : $anchor.data( 'term-slug' );
1384
-
1385
- if ( value?.toString() === properties[ taxonomy ]?.toString() ) {
1386
- $item.children( 'label' ).children( 'a' ).click();
1387
- $item.removeClass( 'active' );
1388
- }
1389
- } );
1390
- }
1391
- break;
1392
- case 'price_slider':
1393
- const $priceSlider = $filter.find( '.price-slider' );
1394
-
1395
- $filter
1396
- .find( '.price-slider-min' )
1397
- .val( $priceSlider.data( 'min' ) );
1398
- $filter
1399
- .find( '.price-slider-max' )
1400
- .val( $priceSlider.data( 'max' ) )
1401
- .change();
1402
- break;
1403
- case 'orderby':
1404
- $filter.find( 'select' ).val( 'menu_order' );
1405
- break;
1406
- case 'stock_sale':
1407
- if ( ! properties ) {
1408
- $filter
1409
- .find( '.filter-in-stock' )
1410
- .find( ':input' )
1411
- .prop( 'checked', false )
1412
- .change();
1413
- $filter
1414
- .find( '.filter-on-sale' )
1415
- .find( ':input' )
1416
- .prop( 'checked', false )
1417
- .change();
1418
-
1419
- $items.removeClass( 'active' );
1420
- } else {
1421
- if ( properties?.instock_filter ) {
1422
- $filter
1423
- .find( '.filter-in-stock' )
1424
- .find( ':input' )
1425
- .prop( 'checked', false )
1426
- .change()
1427
- .closest( '.filter-item' )
1428
- .removeClass( 'active' );
1429
- }
1430
-
1431
- if ( properties?.onsale_filter ) {
1432
- $filter
1433
- .find( '.filter-on-sale' )
1434
- .find( ':input' )
1435
- .prop( 'checked', false )
1436
- .change()
1437
- .closest( '.filter-item' )
1438
- .removeClass( 'active' );
1439
- }
1440
- }
1441
- break;
1442
- case 'review':
1443
- $filter.find( '.filter-dropdown' ).val( '' ).change();
1444
- break;
1445
- default:
1446
- $items.removeClass( 'active' );
1447
- break;
1448
- }
1449
-
1450
- self.activeFilters = false;
1451
-
1452
- if ( doFilter ) {
1453
- self.filter();
1454
- }
1455
- };
1456
-
1457
- // deactivate all filters
1458
- self.deactivateAllFilters = function ( doFilter ) {
1459
- const $filters = self.getFilters();
1460
-
1461
- $filters.each( function () {
1462
- const $filter = $( this );
1463
-
1464
- self.deactivateFilter( $filter );
1465
- } );
1466
-
1467
- self.activeFilters = false;
1468
-
1469
- if ( doFilter ) {
1470
- self.filter();
1471
- }
1472
- };
1473
-
1474
- // deactivate filters that matches a specific set of properties
1475
- self.deactivateFilterByProperties = function ( properties, doFilter ) {
1476
- const $filters = self.getFiltersByProperties( properties );
1477
-
1478
- if ( ! $filters.length ) {
1479
- return;
1480
- }
1481
-
1482
- $filters.each( function () {
1483
- const $filter = $( this );
1484
-
1485
- self.deactivateFilter( $filter, properties, doFilter );
1486
- } );
1487
- };
1488
-
1489
- // open filters as a modal, when in mobile layout
1490
- self.openModal = function () {
1491
- if ( ! self.isMobile ) {
1492
- return;
1493
- }
1494
-
1495
- self._closeAllCollapsables();
1496
-
1497
- $( 'body' )
1498
- .css( 'overflow', 'hidden' )
1499
- .addClass( 'yith-wcan-preset-modal-open' );
1500
-
1501
- self.$preset.show();
1502
-
1503
- setTimeout( () => {
1504
- self.$preset.addClass( 'open' );
1505
- }, 100 );
1506
- };
1507
-
1508
- // close filters modal, when in mobile layout
1509
- self.closeModal = function () {
1510
- if ( ! self.isMobile ) {
1511
- return;
1512
- }
1513
-
1514
- self.$preset.removeClass( 'open' );
1515
-
1516
- setTimeout( () => {
1517
- self.$preset.hide();
1518
- $( 'body' )
1519
- .css( 'overflow', 'auto' )
1520
- .removeClass( 'yith-wcan-preset-modal-open' );
1521
- }, 300 );
1522
- };
1523
-
1524
- // utility that formats the price according to store configuration.
1525
- self.formatPrice = function ( price ) {
1526
- if ( 'undefined' !== typeof accounting ) {
1527
- price = accounting.formatMoney( price, {
1528
- symbol: yith_wcan_shortcodes.currency_format.symbol,
1529
- decimal: yith_wcan_shortcodes.currency_format.decimal,
1530
- thousand: yith_wcan_shortcodes.currency_format.thousand,
1531
- precision: 0,
1532
- format: yith_wcan_shortcodes.currency_format.format,
1533
- } );
1534
- }
1535
-
1536
- return price;
1537
- };
1538
-
1539
- // utility that merges together sets of filter properties
1540
- self.mergeProperties = function ( set1, set2, $filter ) {
1541
- // search for common properties
1542
- for ( const prop in set2 ) {
1543
- if ( ! set2.hasOwnProperty( prop ) ) {
1544
- continue;
1545
- }
1546
-
1547
- if ( !! set1[ prop ] ) {
1548
- switch ( prop ) {
1549
- case 'rating_filter':
1550
- case 'min_price':
1551
- case 'max_price':
1552
- case 'onsale_filter':
1553
- case 'instock_filter':
1554
- case 'orderby':
1555
- // just override default value
1556
- set1[ prop ] = set2[ prop ];
1557
- break;
1558
- default:
1559
- if ( 0 === prop.indexOf( 'query_type_' ) ) {
1560
- // query_type param
1561
- set1[ prop ] = set2[ prop ];
1562
- } else {
1563
- // we're dealing with taxonomy
1564
- const isAttr = 0 === prop.indexOf( 'filter_' ),
1565
- glue = isAttr ? ',' : '+';
1566
-
1567
- let newValue =
1568
- set1[ prop ].replace( ',', glue ) +
1569
- glue +
1570
- set2[ prop ].replace( ',', glue );
1571
-
1572
- newValue = newValue
1573
- .split( glue )
1574
- .filter(
1575
- ( value, index, arr ) =>
1576
- arr.indexOf( value ) === index
1577
- )
1578
- .join( glue );
1579
-
1580
- set1[ prop ] = newValue;
1581
-
1582
- if ( isAttr ) {
1583
- const queryTypeParam = prop.replace(
1584
- 'filter_',
1585
- 'query_type_'
1586
- );
1587
-
1588
- set1[ queryTypeParam ] = 'and';
1589
- set2[ queryTypeParam ] = 'and';
1590
- }
1591
- }
1592
- }
1593
-
1594
- delete set2[ prop ];
1595
- }
1596
- }
1597
-
1598
- $.extend( set1, set2 );
1599
-
1600
- return set1;
1601
- };
1602
-
1603
- // let's start the game
1604
- self._init();
1605
-
1606
- return self;
1607
- }
1608
-
1609
- function YITH_WCAN_Filter_Labels( el, $ ) {
1610
- const self = this;
1611
-
1612
- // current label set
1613
- self.$label_set = el;
1614
-
1615
- // labels of current set
1616
- self.$labels = false;
1617
-
1618
- // init object
1619
- self._init = function () {
1620
- self._initLabels();
1621
-
1622
- self.$label_set.data( 'filter_labels', self ).addClass( 'enhanced' );
1623
- };
1624
-
1625
- // init labels
1626
- self._initLabels = function () {
1627
- self.getLabels().each( function () {
1628
- const $label = $( this );
1629
-
1630
- self._initLabel( $label );
1631
- } );
1632
- };
1633
-
1634
- // init label
1635
- self._initLabel = function ( $label ) {
1636
- $label.on( 'click', () => self.disableLabel( $label ) );
1637
- };
1638
-
1639
- // get labels
1640
- self.getLabels = function () {
1641
- if ( false === self.$labels ) {
1642
- self.$labels = self.$label_set.find( '.active-filter-label' );
1643
- }
1644
-
1645
- return self.$labels;
1646
- };
1647
-
1648
- // disable filter
1649
- self.disableLabel = function ( $label ) {
1650
- const properties = $label.data( 'filters' );
1651
- // search for preset
1652
- $( '.yith-wcan-filters' ).each( function () {
1653
- const preset = $( this ).data( 'preset' );
1654
-
1655
- preset.deactivateFilterByProperties( properties, true );
1656
- } );
1657
- };
1658
-
1659
- // let's start the game
1660
- self._init();
1661
-
1662
- return self;
1663
- }
1664
-
1665
- function YITH_WCAN_Reset_Button( el, $ ) {
1666
- const self = this;
1667
-
1668
- // current button
1669
- self.$reset = el;
1670
 
1671
- // init object
1672
- self._init = function () {
1673
- self.$reset.on( 'click', function ( ev ) {
1674
- ev.preventDefault();
1675
 
1676
- $( '.yith-wcan-filters' ).each( function () {
1677
- const preset = $( this ).data( 'preset' );
1678
 
1679
- preset.deactivateAllFilters( true );
1680
- } );
1681
- } );
1682
 
1683
- self.$reset.data( 'reset', self ).addClass( 'enhanced' );
1684
- };
1685
 
1686
- // let's start the game
1687
- self._init();
1688
 
1689
- return self;
1690
- }
1691
 
1692
- function YITH_WCAN_Modal_Opener( el, $ ) {
1693
- const self = this;
1694
 
1695
- // current button
1696
- self.$button = el;
1697
 
1698
- // YITH_WCAN_Preset object
1699
- self.preset = null;
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1700
 
1701
- // preset dom node
1702
- self.$preset = null;
1703
 
1704
- // is mobile flag
1705
- self.isMobile;
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1706
 
1707
- // init object
1708
- self._init = function () {
1709
- self._initPreset();
1710
- self._initResponsive();
1711
- self._initActions();
1712
 
1713
- self.$button.data( 'modalOpener', self ).addClass( 'enhanced' );
1714
- };
1715
 
1716
- // search for related preset
1717
- self._initPreset = function () {
1718
- let target = self.$button.data( 'target' ),
1719
- $target;
1720
 
1721
- if ( target ) {
1722
- $target = $( `#${ target }` );
1723
- } else {
1724
- $target = $( '.yith-wcan-filters' );
1725
- }
1726
-
1727
- if ( ! $target.length ) {
1728
- return;
1729
- }
1730
-
1731
- self.$preset = $target.first();
1732
- self.preset = self.$preset.data( 'preset' );
1733
- };
1734
-
1735
- // init responsive
1736
- self._initResponsive = function () {
1737
- if ( ! yith_wcan_shortcodes.modal_on_mobile ) {
1738
- self.$button.hide();
1739
- return;
1740
- }
1741
-
1742
- const media = window.matchMedia(
1743
- `(max-width: ${ yith_wcan_shortcodes.mobile_media_query }px)`
1744
- );
1745
-
1746
- $( window )
1747
- .on( 'resize', function () {
1748
- const isMobile = !! media.matches;
1749
-
1750
- if ( isMobile !== self.isMobile ) {
1751
- self.isMobile = isMobile;
1752
- self._afterLayoutChange();
1753
- }
1754
- } )
1755
- .resize();
1756
- };
1757
-
1758
- // init actions
1759
- self._initActions = function () {
1760
- if ( ! self.$preset?.length ) {
1761
- return;
1762
- }
1763
-
1764
- self.$button.on( 'click', function ( ev ) {
1765
- ev.preventDefault();
1766
-
1767
- self.preset.openModal();
1768
- } );
1769
- };
1770
-
1771
- // hide/show button when needed
1772
- self._afterLayoutChange = function () {
1773
- self.isMobile ? self.$button.show() : self.$button.hide();
1774
- };
1775
-
1776
- // let's start the game
1777
- self._init();
1778
-
1779
- return self;
1780
- }
1781
-
1782
- function YITH_WCAN_Dropdown( el, $, opts ) {
1783
- const self = this;
1784
-
1785
- // current button
1786
- self.$origialSelect = el;
1787
-
1788
- // main element
1789
- self.$_main = null;
1790
-
1791
- // label element
1792
- self.$_label = null;
1793
-
1794
- // dropdown
1795
- self.$_dropdown = null;
1796
-
1797
- // search input
1798
- self.$_search = null;
1799
-
1800
- // show more link
1801
- self.$_showMore = null;
1802
-
1803
- // items list
1804
- self.$_items = null;
1805
-
1806
- // current page
1807
- self.currentPage = 1;
1808
-
1809
- // options
1810
- self.options = {};
1811
-
1812
- // init object
1813
- self._init = function () {
1814
- if ( ! self.$origialSelect.is( 'select' ) ) {
1815
- return;
1816
- }
1817
-
1818
- const defaultPerPage = self.$origialSelect.data( 'per_page' ),
1819
- defaultOrder = self.$origialSelect.data( 'order' ),
1820
- defaultAll = self.$origialSelect.data( 'all-label' ),
1821
- defaults = {
1822
- showSearch: self.$origialSelect.data( 'show_search' ),
1823
- paginate: self.$origialSelect.data( 'paginate' ),
1824
- perPage: defaultPerPage ? defaultPerPage : 10,
1825
- order: defaultOrder ? defaultOrder : 'ASC',
1826
- getElements: null,
1827
- labels: {
1828
- emptyLabel: defaultAll
1829
- ? defaultAll
1830
- : yith_wcan_shortcodes.labels.empty_option,
1831
- searchPlaceholder:
1832
- yith_wcan_shortcodes.labels.search_placeholder,
1833
- noItemsFound: yith_wcan_shortcodes.labels.no_items,
1834
- showMore: yith_wcan_shortcodes.labels.show_more,
1835
- },
1836
- };
1837
-
1838
- self.options = $.extend( defaults, opts );
1839
-
1840
- self._hideSelect();
1841
- self._initTemplate();
1842
- self._initActions();
1843
-
1844
- self.$origialSelect.data( 'dropdown', self ).addClass( 'enhanced' );
1845
- };
1846
-
1847
- // hide select
1848
- self._hideSelect = function () {
1849
- self.$origialSelect.hide();
1850
- };
1851
-
1852
- // create dropdown
1853
- self._initTemplate = function () {
1854
- const $mainSpan = $( '<div/>', {
1855
- class: 'yith-wcan-dropdown closed',
1856
- } ),
1857
- $labelSpan = $( '<div/>', {
1858
- class: 'dropdown-label',
1859
- html: self.getLabel(),
1860
- } ),
1861
- $dropdownSpan = $( '<div>', {
1862
- class: 'dropdown-wrapper',
1863
- } ),
1864
- $matchingItemsList = $( '<ul/>', {
1865
- class: 'matching-items filter-items',
1866
- } );
1867
-
1868
- $dropdownSpan.append( $matchingItemsList );
1869
- $mainSpan.append( $labelSpan ).append( $dropdownSpan );
1870
-
1871
- if ( self.options.showSearch ) {
1872
- self._initSearchTemplate( $dropdownSpan );
1873
- }
1874
-
1875
- if ( self.options.paginate ) {
1876
- self._initShowMoreTemplate( $dropdownSpan );
1877
- }
1878
-
1879
- self.$origialSelect.after( $mainSpan );
1880
- self.$_main = $mainSpan;
1881
- self.$_label = $labelSpan;
1882
- self.$_dropdown = $dropdownSpan;
1883
- self.$_items = $matchingItemsList;
1884
- };
1885
-
1886
- // create search field
1887
- self._initSearchTemplate = function ( $dropdwonSpan ) {
1888
- const $container = $( '<div/>', {
1889
- class: 'search-field-container',
1890
- } ),
1891
- $search = $( '<input/>', {
1892
- name: 's',
1893
- class: 'search-field',
1894
- type: 'search',
1895
- placeholder: self.options.labels.searchPlaceholder,
1896
- } );
1897
-
1898
- $container.append( $search ).prependTo( $dropdwonSpan );
1899
- self.$_search = $search;
1900
- };
1901
-
1902
- // create showMore field
1903
- self._initShowMoreTemplate = function ( $dropdwonSpan ) {
1904
- const $showMore = $( '<a/>', {
1905
- class: 'show-more',
1906
- text: self.options.labels.showMore.replace(
1907
- '%d',
1908
- self.options.perPage
1909
- ),
1910
- } );
1911
-
1912
- $showMore.on( 'click', self.loadNextPage ).hide();
1913
-
1914
- $dropdwonSpan.append( $showMore );
1915
- self.$_showMore = $showMore;
1916
- };
1917
-
1918
- // init actions performed over dropdown elements
1919
- self._initActions = function () {
1920
- // main open event
1921
- self.$_main.on( 'click', ( ev ) => {
1922
- ev.stopPropagation();
1923
- self.toggleDropdown();
1924
- } );
1925
- self.$_dropdown.on( 'click', ( ev ) => {
1926
- ev.stopPropagation();
1927
- } );
1928
-
1929
- // search event
1930
- self.$_search?.on( 'keyup search', () => {
1931
- self._populateItems();
1932
- } );
1933
-
1934
- // select event
1935
- self.$_items.on( 'change', ':input', function () {
1936
- let $li = $( this ).closest( 'li' ),
1937
- value = $li.data( 'value' ),
1938
- isActive = false;
1939
-
1940
- if (
1941
- $li.hasClass( 'disabled' ) &&
1942
- ! self.isValueSelected( value )
1943
- ) {
1944
- return false;
1945
- }
1946
-
1947
- $li.toggleClass( 'active' );
1948
- isActive = $li.hasClass( 'active' );
1949
-
1950
- self._changeItemStatus( value, isActive );
1951
- } );
1952
- self.$_items.on( 'click', 'li:not(.checkbox) a', function ( ev ) {
1953
- let $li = $( this ).closest( 'li' ),
1954
- value = $li.data( 'value' ),
1955
- isActive = false;
1956
-
1957
- ev.preventDefault();
1958
-
1959
- if (
1960
- $li.hasClass( 'disabled' ) &&
1961
- ! self.isValueSelected( value )
1962
- ) {
1963
- return false;
1964
- }
1965
-
1966
- $li.toggleClass( 'active' );
1967
- isActive = $li.hasClass( 'active' );
1968
-
1969
- if ( isActive ) {
1970
- $li.siblings().removeClass( 'active' );
1971
- }
1972
-
1973
- self._changeItemStatus( value, isActive );
1974
- } );
1975
- self.$_items.on( 'click', 'label > a', function ( ev ) {
1976
- const input = $( this ).parent().find( ':input' );
1977
-
1978
- ev.preventDefault();
1979
-
1980
- if (
1981
- input.is( '[type="radio"]' ) ||
1982
- input.is( '[type="checkbox"]' )
1983
- ) {
1984
- input.prop( 'checked', ! input.prop( 'checked' ) );
1985
- }
1986
-
1987
- input.change();
1988
- } );
1989
-
1990
- // select change
1991
- self.$origialSelect.on( 'change', ( ev, selfOriginated ) => {
1992
- if ( selfOriginated ) {
1993
- return;
1994
- }
1995
-
1996
- self.$_items.find( 'li' ).each( function () {
1997
- const value = $( this ).data( 'value' );
1998
-
1999
- if ( self.isValueSelected( value ) ) {
2000
- self._selectItem( value );
2001
- } else {
2002
- self._deselectItem( value );
2003
- }
2004
- } );
2005
-
2006
- self.updateLabel();
2007
- } );
2008
-
2009
- // close dropdown on external click
2010
- $( document ).on( 'click', self.closeDropdown );
2011
- };
2012
-
2013
- // open dropdown
2014
- self.openDropdown = function () {
2015
- self.$_main.addClass( 'open' ).removeClass( 'closed' );
2016
- self._afterDropdownOpen();
2017
- };
2018
-
2019
- // close dropdown
2020
- self.closeDropdown = function () {
2021
- self.$_main.removeClass( 'open' ).addClass( 'closed' );
2022
- };
2023
-
2024
- // close other dropdowns
2025
- self._closeOtherDropdowns = function () {
2026
- const dropdowns = $( document )
2027
- .find( 'select.enhanced' )
2028
- .filter( function ( i, select ) {
2029
- const $el = $( select );
2030
-
2031
- return (
2032
- !! $el.data( 'dropdown' ) && ! $el.is( self.$origialSelect )
2033
- );
2034
- } );
2035
-
2036
- dropdowns.each( function () {
2037
- $( this ).data( 'dropdown' ).closeDropdown();
2038
- } );
2039
- };
2040
-
2041
- // toggle dropdown
2042
- self.toggleDropdown = function () {
2043
- self.$_main.toggleClass( 'open' ).toggleClass( 'closed' );
2044
-
2045
- if ( self.$_main.hasClass( 'open' ) ) {
2046
- self._afterDropdownOpen();
2047
- }
2048
- };
2049
-
2050
- // perform operations after dropdown is open
2051
- self._afterDropdownOpen = function () {
2052
- self._closeOtherDropdowns();
2053
-
2054
- if ( self.$_search?.length ) {
2055
- self.$_search.val( '' );
2056
- }
2057
-
2058
- self._populateItems();
2059
- };
2060
-
2061
- // get elements
2062
- self.getMatchingElements = function ( search, limit ) {
2063
- let matchingElements = [],
2064
- $options = self.getOptions(),
2065
- promise;
2066
-
2067
- promise = new Promise( ( resolve ) => {
2068
- // first of all, search across select option
2069
- $options.each( function () {
2070
- const t = $( this ),
2071
- value = t.val(),
2072
- label = t.html(),
2073
- regex = new RegExp( '.*' + search + '.*', 'i' ),
2074
- show =
2075
- ! search || regex.test( value ) || regex.test( label );
2076
-
2077
- if ( show ) {
2078
- matchingElements.push( {
2079
- value,
2080
- label,
2081
- } );
2082
- }
2083
- } );
2084
-
2085
- // then retrieve additional items
2086
- if ( self.options.getElements ) {
2087
- // we're expecting key => value pairs
2088
- self.options
2089
- .getElements( search )
2090
- .then( ( retrievedElements ) => {
2091
- if ( retrievedElements ) {
2092
- // reformat retrieved array
2093
- retrievedElements = retrievedElements.reduce(
2094
- ( a, v, i ) => {
2095
- a.push( { label: i, value: v } );
2096
- return a;
2097
- },
2098
- []
2099
- );
2100
-
2101
- // merge found results with options
2102
- matchingElements = $.extend(
2103
- matchingElements,
2104
- retrievedElements
2105
- );
2106
- }
2107
-
2108
- resolve( self._formatItems( matchingElements, limit ) );
2109
- } );
2110
- } else {
2111
- resolve( self._formatItems( matchingElements, limit ) );
2112
- }
2113
- } );
2114
-
2115
- return promise;
2116
- };
2117
-
2118
- // format items as key/value pairs for further processing
2119
- self._formatItems = function ( items, limit ) {
2120
- let indexes = [],
2121
- hasMore = false;
2122
-
2123
- // remove duplicates and sort array of results
2124
- items
2125
- .filter( ( v ) => {
2126
- if ( -1 === indexes.indexOf( v.value ) ) {
2127
- indexes.push( v.value );
2128
- return true;
2129
- }
2130
-
2131
- return false;
2132
- } )
2133
- .sort( ( a, b ) => {
2134
- const order = self.options.order,
2135
- mod = order === 'ASC' ? 1 : -1;
2136
-
2137
- if ( a.value < b.value ) {
2138
- return -1 * mod;
2139
- } else if ( a.value > b.value ) {
2140
- return mod;
2141
- }
2142
-
2143
- return 0;
2144
- } );
2145
-
2146
- // paginate when needed
2147
- if ( limit ) {
2148
- hasMore = limit < Object.keys( items ).length;
2149
- items = items.slice( 0, limit );
2150
- }
2151
-
2152
- return {
2153
- items,
2154
- hasMore,
2155
- };
2156
- };
2157
-
2158
- // generate item to append to items list
2159
- self._generateItem = function ( value, label ) {
2160
- let active = self.isValueSelected( value ),
2161
- option = self.getOptionByValue( value ),
2162
- $item = $( '<li/>', {
2163
- 'data-value': value,
2164
- class: option.length ? option.attr( 'class' ) : '',
2165
- } ),
2166
- $anchor;
2167
-
2168
- if ( option.length ) {
2169
- const template = option.data( 'template' ),
2170
- count = option.data( 'count' );
2171
-
2172
- label = template ? template : label;
2173
-
2174
- if ( !! count ) {
2175
- label += count;
2176
- }
2177
- }
2178
-
2179
- $anchor = $( '<a/>', {
2180
- href: option.length ? option.data( 'filter_url' ) : '#',
2181
- html: label,
2182
- 'data-title': option.length ? option.data( 'title' ) : '',
2183
- } );
2184
-
2185
- if ( self.$origialSelect.prop( 'multiple' ) ) {
2186
- const $checkbox = $( '<input/>', {
2187
- type: 'checkbox',
2188
- value,
2189
- } ),
2190
- $label = $( '<label>' );
2191
-
2192
- $checkbox.prop( 'checked', active );
2193
- $label.prepend( $checkbox ).append( $anchor );
2194
- $item.append( $label ).addClass( 'checkbox' );
2195
- } else {
2196
- $item.append( $anchor );
2197
- }
2198
-
2199
- active ? $item.addClass( 'active' ) : $item.removeClass( 'active' );
2200
-
2201
- return $item;
2202
- };
2203
-
2204
- // populate items list
2205
- self._populateItems = function ( page ) {
2206
- let search = self.$_search?.length ? self.$_search.val() : '',
2207
- perPage = self.options.paginate ? self.options.perPage : 0,
2208
- limit;
2209
-
2210
- page = page ? parseInt( page ) : 1;
2211
- limit = page * perPage;
2212
-
2213
- self.getMatchingElements( search, limit ).then( function ( resultSet ) {
2214
- let matchingItems = resultSet.items,
2215
- items = [],
2216
- hasMore = false;
2217
-
2218
- // remove all previous items
2219
- self._emptyItems();
2220
- self._hideLoadMore();
2221
-
2222
- if ( ! matchingItems.length ) {
2223
- items.push(
2224
- $( '<li/>', { text: self.options.labels.noItemsFound } )
2225
- );
2226
-
2227
- self.currentPage = 1;
2228
- } else {
2229
- for ( const v of matchingItems ) {
2230
- if ( v.value === '' ) {
2231
- items.unshift( self._generateItem( v.value, v.label ) );
2232
- } else {
2233
- items.push( self._generateItem( v.value, v.label ) );
2234
- }
2235
- }
2236
-
2237
- self.currentPage = page;
2238
- hasMore = resultSet.hasMore;
2239
- }
2240
-
2241
- self.$_items.append( items );
2242
-
2243
- $( document ).trigger( 'yith_wcan_dropdown_updated' );
2244
-
2245
- if ( hasMore ) {
2246
- self._showLoadMore();
2247
- }
2248
- } );
2249
- };
2250
-
2251
- // load next page of items
2252
- self.loadNextPage = function () {
2253
- const page = self.currentPage + 1;
2254
-
2255
- self._populateItems( page );
2256
- };
2257
-
2258
- // set an item as active
2259
- self._selectItem = function ( value ) {
2260
- return self._changeItemStatus( value, true );
2261
- };
2262
-
2263
- // disable an item
2264
- self._deselectItem = function ( value ) {
2265
- return self._changeItemStatus( value, false );
2266
- };
2267
-
2268
- // change item status
2269
- self._changeItemStatus = function ( value, status ) {
2270
- const $option = self.$origialSelect.find(
2271
- `option[value="${ value }"]`
2272
- );
2273
-
2274
- if ( $option.length ) {
2275
- $option.prop( 'selected', status );
2276
-
2277
- self.closeDropdown();
2278
- self.updateLabel();
2279
-
2280
- self.$origialSelect.trigger( 'change', [ true ] );
2281
-
2282
- return true;
2283
- }
2284
- return false;
2285
- };
2286
-
2287
- // empty items list
2288
- self._emptyItems = function () {
2289
- self.$_items.html( '' );
2290
- };
2291
-
2292
- // show "Load more" link
2293
- self._showLoadMore = function () {
2294
- self.$_showMore.show();
2295
- };
2296
-
2297
- // hide "Load more" link
2298
- self._hideLoadMore = function () {
2299
- self.$_showMore.hide();
2300
- };
2301
-
2302
- // returns select label
2303
- self.getLabel = function () {
2304
- return self.hasSelectedValues()
2305
- ? self.getSelectedLabels().join( ', ' )
2306
- : self.options.labels.emptyLabel;
2307
- };
2308
-
2309
- // update label to match new selection
2310
- self.updateLabel = function () {
2311
- const label = self.getLabel();
2312
-
2313
- self.$_label.html( label );
2314
- };
2315
-
2316
- // returns select options
2317
- self.getOptions = function () {
2318
- return self.$origialSelect.find( 'option' );
2319
- };
2320
-
2321
- // checks whether select has selected values
2322
- self.hasSelectedValues = function () {
2323
- return self.getSelectedOptions().length;
2324
- };
2325
-
2326
- // checks whether a value is selected
2327
- self.isValueSelected = function ( value ) {
2328
- const found = self.getSelectedValues().indexOf( value );
2329
-
2330
- return -1 !== found;
2331
- };
2332
-
2333
- // retrieve selected options
2334
- self.getSelectedOptions = function () {
2335
- return self.$origialSelect.find( 'option' ).filter( ':selected' );
2336
- };
2337
-
2338
- // retrieves an option node by value
2339
- self.getOptionByValue = function ( value ) {
2340
- return self.$origialSelect.find( `option[value="${ value }"]` );
2341
- };
2342
-
2343
- // retrieve labels for selected options
2344
- self.getSelectedLabels = function () {
2345
- const labels = [];
2346
-
2347
- self.getSelectedOptions().each( function () {
2348
- let $option = $( this ),
2349
- template = $option.data( 'template' );
2350
-
2351
- template = template
2352
- ? template
2353
- : $option.html().replace( /\([0-9]*\)/, '' );
2354
-
2355
- labels.push( template );
2356
- } );
2357
-
2358
- return labels;
2359
- };
2360
-
2361
- // retrieve values for selected options
2362
- self.getSelectedValues = function () {
2363
- const values = [];
2364
-
2365
- self.getSelectedOptions().each( function () {
2366
- values.push( $( this ).val() );
2367
- } );
2368
-
2369
- return values;
2370
- };
2371
-
2372
- self.destroy = function () {};
2373
-
2374
- // let's start the game
2375
- self._init();
2376
-
2377
- return self;
2378
- }
2379
-
2380
- jQuery( function ( $ ) {
2381
- $( document )
2382
- .on(
2383
- 'yith_wcan_init_shortcodes yith_plugin_fw_gutenberg_success_do_shortcode',
2384
- function () {
2385
- $( '.yith-wcan-filters' )
2386
- .not( '.enhanced' )
2387
- .each( function () {
2388
- new YITH_WCAN_Preset( $( this ), $ );
2389
- } );
2390
-
2391
- $( '.yith-wcan-active-filters' )
2392
- .not( '.enhanced' )
2393
- .each( function () {
2394
- new YITH_WCAN_Filter_Labels( $( this ), $ );
2395
- } );
2396
-
2397
- $( '.yith-wcan-reset-filters' )
2398
- .not( '.enhanced' )
2399
- .each( function () {
2400
- new YITH_WCAN_Reset_Button( $( this ), $ );
2401
- } );
2402
-
2403
- $( '.yith-wcan-filters-opener' )
2404
- .not( '.enhanced' )
2405
- .each( function () {
2406
- new YITH_WCAN_Modal_Opener( $( this ), $ );
2407
- } );
2408
- }
2409
- )
2410
- .trigger( 'yith_wcan_init_shortcodes' );
2411
-
2412
- globalThis.product_filter = new YITH_WCAN_Filter( $ );
2413
- } );
1
+ /******/ (() => { // webpackBootstrap
2
+ /******/ "use strict";
3
+ var __webpack_exports__ = {};
4
+
5
+ ;// CONCATENATED MODULE: ./assets/js/shortcodes/config.js
6
+
7
+ /* global globalThis, jQuery, yith_wcan_shortcodes, accounting */
8
+
9
+ var $ = jQuery; // we can do this as WebPack will compact all together inside a closure.
10
+
11
+
12
+ ;// CONCATENATED MODULE: ./assets/js/shortcodes/modules/yith-wcan-filter.js
13
+
14
+ /* global globalThis, jQuery, yith_wcan_shortcodes, accounting */
15
+
16
+ function _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); }
17
+
18
+ function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
19
+
20
+ function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }
21
+
22
+ function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }
23
+
24
+ function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
25
+
26
+
27
+
28
+ var YITH_WCAN_Filter = /*#__PURE__*/function () {
29
+ // currently executing xhr
30
+ // flag set during ajax call handling
31
+ // register original url search param
32
+ // flag set once init has executed
33
+ // init object
34
+ function YITH_WCAN_Filter() {
35
+ _classCallCheck(this, YITH_WCAN_Filter);
36
+
37
+ _defineProperty(this, "xhr", null);
38
+
39
+ _defineProperty(this, "doingAjax", false);
40
+
41
+ _defineProperty(this, "originalSearch", location.search);
42
+
43
+ _defineProperty(this, "initialized", false);
44
+
45
+ var head = $('head').html(),
46
+ pageTitle = document.title,
47
+ alternativeUrl = this.searchAlternativeUrl(head);
48
+ alternativeUrl && !this.doingAjax && !this.initialized && !yith_wcan_shortcodes.ajax_filters && this.pushUrlToHistory(alternativeUrl, pageTitle);
49
+ this.initialized = true;
50
+ } // execute call to filter products in current view
51
+
52
+
53
+ _createClass(YITH_WCAN_Filter, [{
54
+ key: "doFilter",
55
+ value: function doFilter(filters, target, preset) {
56
+ var _this = this;
57
+
58
+ var targetUrl,
59
+ $target = target ? $(target) : $('body'),
60
+ customFilters; // filter properties
61
+
62
+ customFilters = $(document).triggerHandler('yith_wcan_filters_parameters', [filters]);
63
+
64
+ if (!!customFilters) {
65
+ filters = customFilters;
66
+ } // block elements before filtering
67
+
68
+
69
+ $target && this.block($target); // calculate target url
70
+
71
+ targetUrl = this.buildUrl(filters); // if no ajax, simply change page url
72
+
73
+ if (!yith_wcan_shortcodes.ajax_filters) {
74
+ window.location = targetUrl;
75
+ return;
76
+ } // start doing ajax
77
+
78
+
79
+ this.doingAjax = true;
80
+ return this._doAjax(targetUrl).done(function (response) {
81
+ targetUrl = _this.searchAlternativeUrl(response, targetUrl);
82
+
83
+ _this._beforeFilter(response, filters);
84
+
85
+ _this.refreshFragments(target, preset, response);
86
+
87
+ _this.pushUrlToHistory(targetUrl, response.pageTitle);
88
+
89
+ $target && _this.unblock($target);
90
+
91
+ _this._afterFilter(response, filters);
92
+
93
+ _this.doingAjax = false;
94
+ });
95
+ } // actions performed before filter
96
+
97
+ }, {
98
+ key: "_beforeFilter",
99
+ value: function _beforeFilter(response, filters) {
100
+ $(document).trigger('yith-wcan-ajax-loading', [response, filters]);
101
+ } // actions performed after filter
102
+
103
+ }, {
104
+ key: "_afterFilter",
105
+ value: function _afterFilter(response, filters) {
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
112
+
113
+ }, {
114
+ key: "buildUrl",
115
+ value: function buildUrl(filters) {
116
+ var _this2 = this;
117
+
118
+ var queryParam = yith_wcan_shortcodes.query_param,
119
+ params = {},
120
+ location = window.location,
121
+ url = !!yith_wcan_shortcodes.base_url ? yith_wcan_shortcodes.base_url : (location === null || location === void 0 ? void 0 : location.origin) + (location === null || location === void 0 ? void 0 : location.pathname),
122
+ search = '',
123
+ self = this;
124
+ var haveFilters = _typeof(filters) === 'object' && Object.keys(filters).length; // remove filter session from current url, if any
125
+
126
+ if (!!yith_wcan_shortcodes.session_param) {
127
+ url = url.replace(new RegExp('/' + yith_wcan_shortcodes.session_param + '/[^/]*/'), '');
128
+ }
129
+
130
+ if (haveFilters) {
131
+ params[queryParam] = 1;
132
+ }
133
+
134
+ if (!!this.originalSearch) {
135
+ var searchParams = this.originalSearch.replace('?', '').split('&').reduce(function (a, v) {
136
+ var items = v.split('=');
137
+
138
+ if (items.length === 2) {
139
+ if (_this2.isFilterParam(items[0])) {
140
+ return a;
141
+ }
142
+
143
+ a[items[0]] = items[1];
144
+ }
145
+
146
+ return a;
147
+ }, {});
148
+ params = $.extend(params, searchParams);
149
+ }
150
+
151
+ if (haveFilters) {
152
+ params = $.extend(params, filters);
153
+ }
154
+
155
+ search = Object.keys(params).reduce(function (a, i) {
156
+ var v = params[i];
157
+
158
+ if (!v || !i) {
159
+ return a;
160
+ }
161
+
162
+ a += self._cleanParam(i) + '=' + self._cleanParam(v) + '&';
163
+ return a;
164
+ }, '?').replace(/&$/g, '').replace(/%2B/g, '+').replace(/%2C/g, ',');
165
+
166
+ if (search.length > 1) {
167
+ url += search;
168
+ }
169
+
170
+ return url;
171
+ } // retrieves alternative sharing url in response body
172
+
173
+ }, {
174
+ key: "searchAlternativeUrl",
175
+ value: function searchAlternativeUrl(response) {
176
+ var defaultUrl = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : '';
177
+ var url = defaultUrl,
178
+ matches;
179
+
180
+ if (-1 === response.indexOf('yith_wcan:sharing_url')) {
181
+ return url;
182
+ }
183
+
184
+ matches = response.match(/<meta name="yith_wcan:sharing_url" content="([^"]*)">/);
185
+ url = matches && 1 in matches ? matches[1] : url;
186
+ return url;
187
+ } // push url to browser history
188
+
189
+ }, {
190
+ key: "pushUrlToHistory",
191
+ value: function pushUrlToHistory(url, title) {
192
+ if (!yith_wcan_shortcodes.change_browser_url || navigator.userAgent.match(/msie/i)) {
193
+ return;
194
+ }
195
+
196
+ window.history.pushState({
197
+ pageTitle: title
198
+ }, '', url);
199
+ } // replaces elements in the page with refreshed ones
200
+
201
+ }, {
202
+ key: "refreshFragments",
203
+ value: function refreshFragments(target, preset, response) {
204
+ var responseDom = document.createElement('html'),
205
+ $response = $(responseDom);
206
+ responseDom.innerHTML = response;
207
+
208
+ if (target) {
209
+ var $preset = $(preset),
210
+ $target = $(target),
211
+ $destination;
212
+
213
+ if ($preset.length) {
214
+ $destination = $response.find(preset);
215
+
216
+ if ($destination.length) {
217
+ $preset.replaceWith($destination.first());
218
+ }
219
+ }
220
+
221
+ if ($target.length) {
222
+ $destination = $response.find(target);
223
+
224
+ if ($destination.length) {
225
+ $target.replaceWith($destination.first());
226
+ }
227
+ }
228
+ } else {
229
+ var content = $(yith_wcan_shortcodes.content);
230
+
231
+ if (content.length) {
232
+ content.replaceWith($response.find(yith_wcan_shortcodes.content));
233
+ } else {
234
+ $('body').replaceWith($response.find('body'));
235
+ }
236
+ }
237
+
238
+ $(document).trigger('yith_wcan_init_shortcodes');
239
+ } // clean url parameters
240
+
241
+ }, {
242
+ key: "_cleanParam",
243
+ value: function _cleanParam(param) {
244
+ var _yith_wcan_shortcodes, _yith_wcan_shortcodes2;
245
+
246
+ if (!((_yith_wcan_shortcodes = yith_wcan_shortcodes) !== null && _yith_wcan_shortcodes !== void 0 && _yith_wcan_shortcodes.process_sanitize) || (_yith_wcan_shortcodes2 = yith_wcan_shortcodes) !== null && _yith_wcan_shortcodes2 !== void 0 && _yith_wcan_shortcodes2.skip_sanitize) {
247
+ return param;
248
+ }
249
+
250
+ return encodeURIComponent(param);
251
+ } // executes Ajax calls
252
+
253
+ }, {
254
+ key: "_doAjax",
255
+ value: function _doAjax(url, params) {
256
+ if (this.xhr) {
257
+ this.xhr.abort();
258
+ }
259
+
260
+ params = $.extend({
261
+ url: url
262
+ }, params);
263
+ this.xhr = $.ajax(params);
264
+ return this.xhr;
265
+ } // block dom elements
266
+
267
+ }, {
268
+ key: "block",
269
+ value: function block($el) {
270
+ var _yith_wcan_shortcodes3;
271
+
272
+ if (typeof $.fn.block === 'undefined') {
273
+ return;
274
+ }
275
+
276
+ var background = '#fff center center no-repeat';
277
+
278
+ if ((_yith_wcan_shortcodes3 = yith_wcan_shortcodes) !== null && _yith_wcan_shortcodes3 !== void 0 && _yith_wcan_shortcodes3.loader) {
279
+ background = "url('".concat(yith_wcan_shortcodes.loader, "') ").concat(background);
280
+ }
281
+
282
+ $el.block({
283
+ message: null,
284
+ overlayCSS: {
285
+ background: background,
286
+ opacity: 0.7
287
+ }
288
+ });
289
+ } // unblock dom elements
290
+
291
+ }, {
292
+ key: "unblock",
293
+ value: function unblock($el) {
294
+ if (typeof $.fn.unblock === 'undefined') {
295
+ return;
296
+ }
297
+
298
+ $el.unblock();
299
+ } // checks if param is one used by layared nav to filter products.
300
+
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
+
308
+ if (-1 !== supportedParams.indexOf(param)) {
309
+ return true;
310
+ }
311
+
312
+ if (-1 !== param.indexOf('filter_')) {
313
+ return true;
314
+ }
315
+
316
+ if (-1 !== param.indexOf('query_type_')) {
317
+ return true;
318
+ }
319
+
320
+ return false;
321
+ }
322
+ }]);
323
+
324
+ return YITH_WCAN_Filter;
325
+ }();
326
+
327
+
328
+ ;// CONCATENATED MODULE: ./assets/js/shortcodes/modules/yith-wcan-reset-button.js
329
 
330
  /* global globalThis, jQuery, yith_wcan_shortcodes, accounting */
331
 
332
+ function yith_wcan_reset_button_classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
 
333
 
334
+ function yith_wcan_reset_button_defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
 
335
 
 
 
336
 
 
 
337
 
338
+ var YITH_WCAN_Reset_Button = // current button
339
+ // init object
340
+ function YITH_WCAN_Reset_Button(el) {
341
+ yith_wcan_reset_button_classCallCheck(this, YITH_WCAN_Reset_Button);
342
 
343
+ yith_wcan_reset_button_defineProperty(this, "$reset", null);
 
 
 
 
344
 
345
+ // current button
346
+ this.$reset = el;
347
+ this.$reset.on('click', function (ev) {
348
+ ev.preventDefault();
349
+ $('.yith-wcan-filters').each(function () {
350
+ var preset = $(this).data('preset');
351
+ preset.deactivateAllFilters(true);
352
+ preset.closeModal();
353
+ });
354
+ });
355
+ this.$reset.data('reset', this).addClass('enhanced');
356
+ };
357
 
 
358
 
359
+ ;// CONCATENATED MODULE: ./assets/js/shortcodes/modules/yith-wcan-dropdown.js
360
+
361
+ /* global globalThis, jQuery, yith_wcan_shortcodes, accounting */
362
+
363
+ function _createForOfIteratorHelper(o, allowArrayLike) { var it = typeof Symbol !== "undefined" && o[Symbol.iterator] || o["@@iterator"]; if (!it) { if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === "number") { if (it) o = it; var i = 0; var F = function F() {}; return { s: F, n: function n() { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }, e: function e(_e) { throw _e; }, f: F }; } 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 normalCompletion = true, didErr = false, err; return { s: function s() { it = it.call(o); }, n: function n() { var step = it.next(); normalCompletion = step.done; return step; }, e: function e(_e2) { didErr = true; err = _e2; }, f: function f() { try { if (!normalCompletion && it["return"] != null) it["return"](); } finally { if (didErr) throw err; } } }; }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
364
 
365
+ function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }
 
 
 
366
 
367
+ function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }
 
368
 
369
+ function yith_wcan_dropdown_classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
 
 
370
 
371
+ function yith_wcan_dropdown_defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }
 
372
 
373
+ function yith_wcan_dropdown_createClass(Constructor, protoProps, staticProps) { if (protoProps) yith_wcan_dropdown_defineProperties(Constructor.prototype, protoProps); if (staticProps) yith_wcan_dropdown_defineProperties(Constructor, staticProps); return Constructor; }
 
374
 
375
+ function yith_wcan_dropdown_defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
 
376
 
 
 
377
 
 
 
378
 
379
+ var YITH_WCAN_Dropdown = /*#__PURE__*/function () {
380
+ // current button
381
+ // main element
382
+ // label element
383
+ // dropdown
384
+ // search input
385
+ // show more link
386
+ // items list
387
+ // current page
388
+ // options
389
+ // init object
390
+ function YITH_WCAN_Dropdown(el, opts) {
391
+ yith_wcan_dropdown_classCallCheck(this, YITH_WCAN_Dropdown);
392
+
393
+ yith_wcan_dropdown_defineProperty(this, "$originalSelect", null);
394
+
395
+ yith_wcan_dropdown_defineProperty(this, "$_main", null);
396
+
397
+ yith_wcan_dropdown_defineProperty(this, "$_label", null);
398
+
399
+ yith_wcan_dropdown_defineProperty(this, "$_dropdown", null);
400
+
401
+ yith_wcan_dropdown_defineProperty(this, "$_search", null);
402
+
403
+ yith_wcan_dropdown_defineProperty(this, "$_showMore", null);
404
+
405
+ yith_wcan_dropdown_defineProperty(this, "$_items", null);
406
+
407
+ yith_wcan_dropdown_defineProperty(this, "currentPage", 1);
408
+
409
+ yith_wcan_dropdown_defineProperty(this, "options", {});
410
+
411
+ this.$originalSelect = el;
412
+
413
+ if (!this.$originalSelect.is('select')) {
414
+ return;
415
+ }
416
+
417
+ var defaultPerPage = this.$originalSelect.data('per_page'),
418
+ defaultOrder = this.$originalSelect.data('order'),
419
+ defaultAll = this.$originalSelect.data('all-label'),
420
+ defaults = {
421
+ showSearch: this.$originalSelect.data('show_search'),
422
+ paginate: this.$originalSelect.data('paginate'),
423
+ perPage: defaultPerPage ? defaultPerPage : 10,
424
+ order: defaultOrder ? defaultOrder : 'ASC',
425
+ getElements: null,
426
+ labels: {
427
+ emptyLabel: defaultAll ? defaultAll : yith_wcan_shortcodes.labels.empty_option,
428
+ searchPlaceholder: yith_wcan_shortcodes.labels.search_placeholder,
429
+ noItemsFound: yith_wcan_shortcodes.labels.no_items,
430
+ showMore: yith_wcan_shortcodes.labels.show_more
431
+ }
432
+ };
433
+ this.options = $.extend(defaults, opts);
434
+
435
+ this._hideSelect();
436
+
437
+ this._initTemplate();
438
+
439
+ this._initActions();
440
+
441
+ this.$originalSelect.data('dropdown', this).addClass('enhanced');
442
+ } // hide select
443
+
444
+
445
+ yith_wcan_dropdown_createClass(YITH_WCAN_Dropdown, [{
446
+ key: "_hideSelect",
447
+ value: function _hideSelect() {
448
+ this.$originalSelect.hide();
449
+ } // create dropdown
450
+
451
+ }, {
452
+ key: "_initTemplate",
453
+ value: function _initTemplate() {
454
+ var $mainSpan = $('<div/>', {
455
+ "class": 'yith-wcan-dropdown closed'
456
+ }),
457
+ $labelSpan = $('<div/>', {
458
+ "class": 'dropdown-label',
459
+ html: this.getLabel()
460
+ }),
461
+ $dropdownSpan = $('<div>', {
462
+ "class": 'dropdown-wrapper'
463
+ }),
464
+ $matchingItemsList = $('<ul/>', {
465
+ "class": 'matching-items filter-items'
466
+ });
467
+ $dropdownSpan.append($matchingItemsList);
468
+ $mainSpan.append($labelSpan).append($dropdownSpan);
469
+
470
+ if (this.options.showSearch) {
471
+ this._initSearchTemplate($dropdownSpan);
472
+ }
473
+
474
+ if (this.options.paginate) {
475
+ this._initShowMoreTemplate($dropdownSpan);
476
+ }
477
+
478
+ this.$originalSelect.after($mainSpan);
479
+ this.$_main = $mainSpan;
480
+ this.$_label = $labelSpan;
481
+ this.$_dropdown = $dropdownSpan;
482
+ this.$_items = $matchingItemsList;
483
+ } // create search field
484
+
485
+ }, {
486
+ key: "_initSearchTemplate",
487
+ value: function _initSearchTemplate($dropdwonSpan) {
488
+ var $container = $('<div/>', {
489
+ "class": 'search-field-container'
490
+ }),
491
+ $search = $('<input/>', {
492
+ name: 's',
493
+ "class": 'search-field',
494
+ type: 'search',
495
+ placeholder: this.options.labels.searchPlaceholder
496
+ });
497
+ $container.append($search).prependTo($dropdwonSpan);
498
+ this.$_search = $search;
499
+ } // create showMore field
500
+
501
+ }, {
502
+ key: "_initShowMoreTemplate",
503
+ value: function _initShowMoreTemplate($dropdwonSpan) {
504
+ var $showMore = $('<a/>', {
505
+ "class": 'show-more',
506
+ text: this.options.labels.showMore.replace('%d', this.options.perPage)
507
+ });
508
+ $showMore.on('click', this.loadNextPage.bind(this)).hide();
509
+ $dropdwonSpan.append($showMore);
510
+ this.$_showMore = $showMore;
511
+ } // init actions performed over dropdown elements
512
+
513
+ }, {
514
+ key: "_initActions",
515
+ value: function _initActions() {
516
+ var _this$$_main, _this$$_search;
517
+
518
+ var self = this; // main open event
519
+
520
+ (_this$$_main = this.$_main) === null || _this$$_main === void 0 ? void 0 : _this$$_main.on('click', function (ev) {
521
+ ev.stopPropagation();
522
+ self.toggleDropdown();
523
+ });
524
+ this.$_dropdown.on('click', function (ev) {
525
+ ev.stopPropagation();
526
+ }); // search event
527
+
528
+ (_this$$_search = this.$_search) === null || _this$$_search === void 0 ? void 0 : _this$$_search.on('keyup search', function () {
529
+ self._populateItems();
530
+ }); // select event
531
+
532
+ this.$_items.on('change', ':input', function () {
533
+ var $li = $(this).closest('li'),
534
+ value = $li.data('value'),
535
+ isActive = false;
536
+
537
+ if ($li.hasClass('disabled') && !self.isValueSelected(value)) {
538
+ return false;
539
+ }
540
+
541
+ $li.toggleClass('active');
542
+ isActive = $li.hasClass('active');
543
+
544
+ self._changeItemStatus(value, isActive);
545
+ });
546
+ this.$_items.on('click', 'li:not(.checkbox) a', function (ev) {
547
+ var $li = $(this).closest('li'),
548
+ value = $li.data('value'),
549
+ isActive = false;
550
+ ev.preventDefault();
551
+
552
+ if ($li.hasClass('disabled') && !self.isValueSelected(value)) {
553
+ return false;
554
+ }
555
+
556
+ $li.toggleClass('active');
557
+ isActive = $li.hasClass('active');
558
+
559
+ if (isActive) {
560
+ $li.siblings().removeClass('active');
561
+ }
562
+
563
+ self._changeItemStatus(value, isActive);
564
+ });
565
+ this.$_items.on('click', 'label > a', function (ev) {
566
+ var input = $(this).parent().find(':input');
567
+ ev.preventDefault();
568
+
569
+ if (input.is('[type="radio"]') || input.is('[type="checkbox"]')) {
570
+ input.prop('checked', !input.prop('checked'));
571
+ }
572
+
573
+ input.change();
574
+ }); // select change
575
+
576
+ this.$originalSelect.on('change', function (ev, selfOriginated) {
577
+ if (selfOriginated) {
578
+ return;
579
+ }
580
+
581
+ self.$_items.find('li').each(function () {
582
+ var value = $(this).data('value');
583
+
584
+ if (self.isValueSelected(value)) {
585
+ self._selectItem(value);
586
+ } else {
587
+ self._deselectItem(value);
588
+ }
589
+ });
590
+ self.updateLabel();
591
+ }); // close dropdown on external click
592
+
593
+ $(document).on('click', this.closeDropdown.bind(this));
594
+ } // open dropdown
595
+
596
+ }, {
597
+ key: "openDropdown",
598
+ value: function openDropdown() {
599
+ var _this$$_main2;
600
+
601
+ (_this$$_main2 = this.$_main) === null || _this$$_main2 === void 0 ? void 0 : _this$$_main2.addClass('open').removeClass('closed');
602
+
603
+ this._afterDropdownOpen();
604
+ } // close dropdown
605
+
606
+ }, {
607
+ key: "closeDropdown",
608
+ value: function closeDropdown() {
609
+ var _this$$_main3;
610
+
611
+ (_this$$_main3 = this.$_main) === null || _this$$_main3 === void 0 ? void 0 : _this$$_main3.removeClass('open').addClass('closed');
612
+ } // close other dropdowns
613
+
614
+ }, {
615
+ key: "_closeOtherDropdowns",
616
+ value: function _closeOtherDropdowns() {
617
+ var self = this,
618
+ dropdowns = $(document).find('select.enhanced').filter(function (i, select) {
619
+ var $el = $(select);
620
+ return !!$el.data('dropdown') && !$el.is(self.$originalSelect);
621
+ });
622
+ dropdowns.each(function () {
623
+ $(this).data('dropdown').closeDropdown();
624
+ });
625
+ } // toggle dropdown
626
+
627
+ }, {
628
+ key: "toggleDropdown",
629
+ value: function toggleDropdown() {
630
+ var _this$$_main4, _this$$_main5;
631
+
632
+ (_this$$_main4 = this.$_main) === null || _this$$_main4 === void 0 ? void 0 : _this$$_main4.toggleClass('open').toggleClass('closed');
633
+
634
+ if ((_this$$_main5 = this.$_main) !== null && _this$$_main5 !== void 0 && _this$$_main5.hasClass('open')) {
635
+ this._afterDropdownOpen();
636
+ }
637
+ } // perform operations after dropdown is open
638
+
639
+ }, {
640
+ key: "_afterDropdownOpen",
641
+ value: function _afterDropdownOpen() {
642
+ var _this$$_search2;
643
+
644
+ this._closeOtherDropdowns();
645
+
646
+ if ((_this$$_search2 = this.$_search) !== null && _this$$_search2 !== void 0 && _this$$_search2.length) {
647
+ this.$_search.val('');
648
+ }
649
+
650
+ this._populateItems();
651
+ } // get elements
652
+
653
+ }, {
654
+ key: "getMatchingElements",
655
+ value: function getMatchingElements(search, limit) {
656
+ var _this = this;
657
+
658
+ var matchingElements = [],
659
+ $options = this.getOptions(),
660
+ promise;
661
+ promise = new Promise(function (resolve) {
662
+ // first of all, search across select option
663
+ $options.each(function () {
664
+ var t = $(this),
665
+ value = t.val(),
666
+ label = t.html(),
667
+ regex = new RegExp('.*' + search + '.*', 'i'),
668
+ show = !search || regex.test(value) || regex.test(label);
669
+
670
+ if (show) {
671
+ matchingElements.push({
672
+ value: value,
673
+ label: label
674
+ });
675
+ }
676
+ }); // then retrieve additional items
677
+
678
+ if (_this.options.getElements) {
679
+ // we're expecting key => value pairs
680
+ _this.options.getElements(search).then(function (retrievedElements) {
681
+ if (retrievedElements) {
682
+ // reformat retrieved array
683
+ retrievedElements = retrievedElements.reduce(function (a, v, i) {
684
+ a.push({
685
+ label: i,
686
+ value: v
687
+ });
688
+ return a;
689
+ }, []); // merge found results with options
690
+
691
+ matchingElements = $.extend(matchingElements, retrievedElements);
692
+ }
693
+
694
+ resolve(_this._formatItems(matchingElements, limit));
695
+ });
696
+ } else {
697
+ resolve(_this._formatItems(matchingElements, limit));
698
+ }
699
+ });
700
+ return promise;
701
+ } // format items as key/value pairs for further processing
702
+
703
+ }, {
704
+ key: "_formatItems",
705
+ value: function _formatItems(items, limit) {
706
+ var _this2 = this;
707
+
708
+ var indexes = [],
709
+ hasMore = false; // remove duplicates and sort array of results
710
+
711
+ items.filter(function (v) {
712
+ if (-1 === indexes.indexOf(v.value)) {
713
+ indexes.push(v.value);
714
+ return true;
715
+ }
716
+
717
+ return false;
718
+ }).sort(function (a, b) {
719
+ var order = _this2.options.order,
720
+ mod = order === 'ASC' ? 1 : -1;
721
+
722
+ if (a.value < b.value) {
723
+ return -1 * mod;
724
+ } else if (a.value > b.value) {
725
+ return mod;
726
+ }
727
+
728
+ return 0;
729
+ }); // paginate when needed
730
+
731
+ if (limit) {
732
+ hasMore = limit < Object.keys(items).length;
733
+ items = items.slice(0, limit);
734
+ }
735
+
736
+ return {
737
+ items: items,
738
+ hasMore: hasMore
739
+ };
740
+ } // generate item to append to items list
741
+
742
+ }, {
743
+ key: "_generateItem",
744
+ value: function _generateItem(value, label) {
745
+ var active = this.isValueSelected(value),
746
+ option = this.getOptionByValue(value),
747
+ $item = $('<li/>', {
748
+ 'data-value': value,
749
+ "class": option.length ? option.attr('class') : ''
750
+ }),
751
+ $anchor;
752
+
753
+ if (option.length) {
754
+ var template = option.data('template'),
755
+ count = option.data('count');
756
+ label = template ? template : label;
757
+
758
+ if (!!count) {
759
+ label += count;
760
+ }
761
+ }
762
+
763
+ $anchor = $('<a/>', {
764
+ href: option.length ? option.data('filter_url') : '#',
765
+ html: label,
766
+ 'data-title': option.length ? option.data('title') : ''
767
+ });
768
+
769
+ if (this.$originalSelect.prop('multiple')) {
770
+ var $checkbox = $('<input/>', {
771
+ type: 'checkbox',
772
+ value: value
773
+ }),
774
+ $label = $('<label>');
775
+ $checkbox.prop('checked', active);
776
+ $label.prepend($checkbox).append($anchor);
777
+ $item.append($label).addClass('checkbox');
778
+ } else {
779
+ $item.append($anchor);
780
+ }
781
+
782
+ active ? $item.addClass('active') : $item.removeClass('active');
783
+ return $item;
784
+ } // populate items list
785
+
786
+ }, {
787
+ key: "_populateItems",
788
+ value: function _populateItems(page) {
789
+ var _this$$_search3,
790
+ _this3 = this;
791
+
792
+ var search = (_this$$_search3 = this.$_search) !== null && _this$$_search3 !== void 0 && _this$$_search3.length ? this.$_search.val() : '',
793
+ perPage = this.options.paginate ? this.options.perPage : 0,
794
+ limit;
795
+ page = page ? parseInt(page) : 1;
796
+ limit = page * perPage;
797
+ this.getMatchingElements(search, limit).then(function (resultSet) {
798
+ var matchingItems = resultSet.items,
799
+ items = [],
800
+ hasMore = false; // remove all previous items
801
+
802
+ _this3._emptyItems();
803
+
804
+ _this3._hideLoadMore();
805
+
806
+ if (!matchingItems.length) {
807
+ items.push($('<li/>', {
808
+ text: _this3.options.labels.noItemsFound
809
+ }));
810
+ _this3.currentPage = 1;
811
+ } else {
812
+ var _iterator = _createForOfIteratorHelper(matchingItems),
813
+ _step;
814
+
815
+ try {
816
+ for (_iterator.s(); !(_step = _iterator.n()).done;) {
817
+ var v = _step.value;
818
+
819
+ if (v.value === '') {
820
+ items.unshift(_this3._generateItem(v.value, v.label));
821
+ } else {
822
+ items.push(_this3._generateItem(v.value, v.label));
823
+ }
824
+ }
825
+ } catch (err) {
826
+ _iterator.e(err);
827
+ } finally {
828
+ _iterator.f();
829
+ }
830
+
831
+ _this3.currentPage = page;
832
+ hasMore = resultSet.hasMore;
833
+ }
834
+
835
+ _this3.$_items.append(items);
836
+
837
+ $(document).trigger('yith_wcan_dropdown_updated');
838
+
839
+ if (hasMore) {
840
+ _this3._showLoadMore();
841
+ }
842
+ });
843
+ } // load next page of items
844
+
845
+ }, {
846
+ key: "loadNextPage",
847
+ value: function loadNextPage() {
848
+ var page = this.currentPage + 1;
849
+
850
+ this._populateItems(page);
851
+ } // set an item as active
852
+
853
+ }, {
854
+ key: "_selectItem",
855
+ value: function _selectItem(value) {
856
+ return this._changeItemStatus(value, true);
857
+ } // disable an item
858
+
859
+ }, {
860
+ key: "_deselectItem",
861
+ value: function _deselectItem(value) {
862
+ return this._changeItemStatus(value, false);
863
+ } // change item status
864
+
865
+ }, {
866
+ key: "_changeItemStatus",
867
+ value: function _changeItemStatus(value, status) {
868
+ var $option = this.$originalSelect.find("option[value=\"".concat(value, "\"]"));
869
+
870
+ if ($option.length) {
871
+ $option.prop('selected', status);
872
+ this.closeDropdown();
873
+ this.updateLabel();
874
+ this.$originalSelect.trigger('change', [true]);
875
+ return true;
876
+ }
877
+
878
+ return false;
879
+ } // empty items list
880
+
881
+ }, {
882
+ key: "_emptyItems",
883
+ value: function _emptyItems() {
884
+ this.$_items.html('');
885
+ } // show "Load more" link
886
+
887
+ }, {
888
+ key: "_showLoadMore",
889
+ value: function _showLoadMore() {
890
+ this.$_showMore.show();
891
+ } // hide "Load more" link
892
+
893
+ }, {
894
+ key: "_hideLoadMore",
895
+ value: function _hideLoadMore() {
896
+ this.$_showMore.hide();
897
+ } // returns select label
898
+
899
+ }, {
900
+ key: "getLabel",
901
+ value: function getLabel() {
902
+ return this.hasSelectedValues() ? this.getSelectedLabels().join(', ') : this.options.labels.emptyLabel;
903
+ } // update label to match new selection
904
+
905
+ }, {
906
+ key: "updateLabel",
907
+ value: function updateLabel() {
908
+ var _this$$_label;
909
+
910
+ var label = this.getLabel();
911
+ (_this$$_label = this.$_label) === null || _this$$_label === void 0 ? void 0 : _this$$_label.html(label);
912
+ } // returns select options
913
+
914
+ }, {
915
+ key: "getOptions",
916
+ value: function getOptions() {
917
+ return this.$originalSelect.find('option');
918
+ } // checks whether select has selected values
919
+
920
+ }, {
921
+ key: "hasSelectedValues",
922
+ value: function hasSelectedValues() {
923
+ return this.getSelectedOptions().length;
924
+ } // checks whether a value is selected
925
+
926
+ }, {
927
+ key: "isValueSelected",
928
+ value: function isValueSelected(value) {
929
+ var found = this.getSelectedValues().indexOf(value.toString());
930
+ return -1 !== found;
931
+ } // retrieve selected options
932
+
933
+ }, {
934
+ key: "getSelectedOptions",
935
+ value: function getSelectedOptions() {
936
+ return this.$originalSelect.find('option').filter(':selected');
937
+ } // retrieves an option node by value
938
+
939
+ }, {
940
+ key: "getOptionByValue",
941
+ value: function getOptionByValue(value) {
942
+ return this.$originalSelect.find("option[value=\"".concat(value, "\"]"));
943
+ } // retrieve labels for selected options
944
+
945
+ }, {
946
+ key: "getSelectedLabels",
947
+ value: function getSelectedLabels() {
948
+ var labels = [];
949
+ this.getSelectedOptions().each(function () {
950
+ var $option = $(this),
951
+ template = $option.data('template');
952
+ template = template ? template : $option.html().replace(/\([0-9]*\)/, '');
953
+ labels.push(template);
954
+ });
955
+ return labels;
956
+ } // retrieve values for selected options
957
+
958
+ }, {
959
+ key: "getSelectedValues",
960
+ value: function getSelectedValues() {
961
+ var values = [];
962
+ this.getSelectedOptions().each(function () {
963
+ values.push($(this).val());
964
+ });
965
+ return values;
966
+ }
967
+ }, {
968
+ key: "destroy",
969
+ value: function destroy() {// TBD
970
+ }
971
+ }]);
972
+
973
+ return YITH_WCAN_Dropdown;
974
+ }();
975
+
976
+
977
+ ;// CONCATENATED MODULE: ./assets/js/shortcodes/modules/yith-wcan-preset.js
978
+
979
+ /* global globalThis, jQuery, yith_wcan_shortcodes, accounting */
980
 
981
+ function yith_wcan_preset_typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { yith_wcan_preset_typeof = function _typeof(obj) { return typeof obj; }; } else { yith_wcan_preset_typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return yith_wcan_preset_typeof(obj); }
 
982
 
983
+ function yith_wcan_preset_classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
984
+
985
+ function yith_wcan_preset_defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }
986
+
987
+ function yith_wcan_preset_createClass(Constructor, protoProps, staticProps) { if (protoProps) yith_wcan_preset_defineProperties(Constructor.prototype, protoProps); if (staticProps) yith_wcan_preset_defineProperties(Constructor, staticProps); return Constructor; }
988
+
989
+ function yith_wcan_preset_defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
990
+
991
+
992
+
993
+
994
+ var YITH_WCAN_Preset = /*#__PURE__*/function () {
995
+ // main preset node
996
+ // target of the filter, if any
997
+ // filters node
998
+ // filter button
999
+ // nodes created just for modal layout
1000
+ // retains current status of filters
1001
+ // mobile flag
1002
+ // slider timeout
1003
+ // registers when status has changed
1004
+ // init object
1005
+ function YITH_WCAN_Preset(el) {
1006
+ yith_wcan_preset_classCallCheck(this, YITH_WCAN_Preset);
1007
+
1008
+ yith_wcan_preset_defineProperty(this, "preset", false);
1009
+
1010
+ yith_wcan_preset_defineProperty(this, "$preset", false);
1011
+
1012
+ yith_wcan_preset_defineProperty(this, "target", false);
1013
+
1014
+ yith_wcan_preset_defineProperty(this, "$target", false);
1015
+
1016
+ yith_wcan_preset_defineProperty(this, "$filters", false);
1017
+
1018
+ yith_wcan_preset_defineProperty(this, "$filterButtons", false);
1019
+
1020
+ yith_wcan_preset_defineProperty(this, "modalElements", {});
1021
+
1022
+ yith_wcan_preset_defineProperty(this, "activeFilters", false);
1023
+
1024
+ yith_wcan_preset_defineProperty(this, "isMobile", false);
1025
+
1026
+ yith_wcan_preset_defineProperty(this, "sliderTimeout", false);
1027
+
1028
+ yith_wcan_preset_defineProperty(this, "originalFilters", null);
1029
+
1030
+ yith_wcan_preset_defineProperty(this, "dirty", false);
1031
+
1032
+ // main preset node
1033
+ this.preset = '#' + el.attr('id');
1034
+ this.$preset = el; // target of the filter, if any
1035
+
1036
+ this.target = this.$preset.data('target');
1037
+ this.$target = this.target ? $(this.target) : false;
1038
+
1039
+ this._regiterStatus();
1040
+
1041
+ this._initFilterButton();
1042
+
1043
+ this._initResponsive();
1044
+
1045
+ this._initFilters();
1046
+
1047
+ this._initActions();
1048
+
1049
+ this.$preset.data('preset', this).addClass('enhanced').trigger('yith_wcan_preset_initialized', [this]);
1050
+ } // init filters
1051
+
1052
+
1053
+ yith_wcan_preset_createClass(YITH_WCAN_Preset, [{
1054
+ key: "_initFilters",
1055
+ value: function _initFilters() {
1056
+ var self = this;
1057
+ this.getFilters().each(function () {
1058
+ var $filter = $(this);
1059
+
1060
+ self._initFilter($filter);
1061
+ });
1062
+ this.maybeShowClearAllFilters();
1063
+ } // init filter button
1064
+
1065
+ }, {
1066
+ key: "_initFilterButton",
1067
+ value: function _initFilterButton() {
1068
+ var _this = this;
1069
+
1070
+ this.$filterButtons = this.$preset.find('.apply-filters');
1071
+
1072
+ if (!this.$filterButtons.length) {
1073
+ return;
1074
+ } // manage filter button
1075
+
1076
+
1077
+ this.$filterButtons.on('click', function (ev) {
1078
+ ev.preventDefault();
1079
+
1080
+ _this.filter();
1081
+ }).hide();
1082
+ } // init generic actions
1083
+
1084
+ }, {
1085
+ key: "_initActions",
1086
+ value: function _initActions() {
1087
+ this.$preset.find('form').on('submit', function (ev) {
1088
+ ev.preventDefault();
1089
+ });
1090
+ } // init responsive
1091
+
1092
+ }, {
1093
+ key: "_initResponsive",
1094
+ value: function _initResponsive() {
1095
+ var _this2 = this;
1096
+
1097
+ if (!yith_wcan_shortcodes.modal_on_mobile) {
1098
+ return;
1099
+ }
1100
+
1101
+ var media = window.matchMedia("(max-width: ".concat(yith_wcan_shortcodes.mobile_media_query, "px)"));
1102
+ $(window).on('resize', function () {
1103
+ var isMobile = !!media.matches;
1104
+
1105
+ if (isMobile !== _this2.isMobile) {
1106
+ _this2.isMobile = isMobile;
1107
+
1108
+ _this2._afterLayoutChange();
1109
+ }
1110
+ }).resize();
1111
+ } // init filter
1112
+
1113
+ }, {
1114
+ key: "_initFilter",
1115
+ value: function _initFilter($filter) {
1116
+ var _this$$preset;
1117
+
1118
+ var self = this,
1119
+ handleChange = function handleChange(ev) {
1120
+ var t = $(this),
1121
+ $currentFilter = t.closest('.yith-wcan-filter'),
1122
+ multiple = $currentFilter.length ? 'yes' === $currentFilter.data('multiple') : false,
1123
+ $item = t.closest('.filter-item'),
1124
+ $items = $item.length ? $currentFilter.find('.filter-item').not($item) : [];
1125
+
1126
+ if ($item.is('.disabled') && !$item.is('.active')) {
1127
+ ev.preventDefault();
1128
+ return false;
1129
+ }
1130
+
1131
+ ev.preventDefault();
1132
+ $items.length && !multiple && $items.removeClass('active').children('label').find(':input').prop('checked', false).parent('.checked').removeClass('checked');
1133
+ $item.length && $item.toggleClass('active'); // reset active filters.
1134
+
1135
+ self.activeFilters = false;
1136
+ self.maybeFilter($filter);
1137
+ self.maybeToggleClearAllFilters();
1138
+ self.maybeToggleClearFilter($currentFilter);
1139
+ }; // handle filter activation/deactivation by click on label (no input involved)
1140
+
1141
+
1142
+ $filter.find('.filter-item').not('.checkbox').not('.radio').on('click', 'a', function (ev) {
1143
+ var t = $(this),
1144
+ $item = t.closest('.filter-item');
1145
+
1146
+ if (!$(ev === null || ev === void 0 ? void 0 : ev.delegateTarget).is($item)) {
1147
+ return false;
1148
+ }
1149
+
1150
+ handleChange.call(this, ev);
1151
+ }); // handle filter activation/deactivation from input change
1152
+
1153
+ $filter.find(':input').on('change', function (ev) {
1154
+ var t = $(this),
1155
+ $item = t.closest('.filter-item');
1156
+
1157
+ if ($item.is('.disabled') && !$item.is('.active')) {
1158
+ t.prop('checked', false);
1159
+ return false;
1160
+ }
1161
+
1162
+ handleChange.call(this, ev);
1163
+ }); // handle filter activation/deactivation by click on label (there is an input whose state can be switched)
1164
+
1165
+ $filter.find('label > a').on('click', function (ev) {
1166
+ var t = $(this),
1167
+ $item = t.closest('.filter-item');
1168
+ ev.preventDefault();
1169
+
1170
+ if ($item.is('.disabled') && !$item.is('.active')) {
1171
+ return false;
1172
+ }
1173
+
1174
+ var $input = t.parent().find(':input');
1175
+
1176
+ if ($input.is('[type="radio"]') || $input.is('[type="checkbox"]')) {
1177
+ $input.prop('checked', !$input.prop('checked'));
1178
+ }
1179
+
1180
+ $input.change();
1181
+ }); // init tooltip
1182
+
1183
+ this._initTooltip($filter); // init price slider
1184
+
1185
+
1186
+ this._initPriceSlider($filter); // init dropdown
1187
+
1188
+
1189
+ this._initDropdown($filter); // init collapsable
1190
+
1191
+
1192
+ this._initCollapsable($filter); // init clear anchors
1193
+
1194
+
1195
+ this.maybeShowClearFilter($filter); // init custom inputs
1196
+
1197
+ if ((_this$$preset = this.$preset) !== null && _this$$preset !== void 0 && _this$$preset.hasClass('custom-style')) {
1198
+ this._initCustomInput($filter);
1199
+ }
1200
+ } // init tooltip
1201
+
1202
+ }, {
1203
+ key: "_initTooltip",
1204
+ value: function _initTooltip($filter, position) {
1205
+ $filter.find('[data-title]').each(function () {
1206
+ var t = $(this);
1207
+
1208
+ if (t.hasClass('tooltip-added') || !t.data('title')) {
1209
+ return;
1210
+ }
1211
+
1212
+ t.on('mouseenter', function () {
1213
+ var th = $(this),
1214
+ tooltip = null,
1215
+ wrapperWidth = th.outerWidth(),
1216
+ left = 0,
1217
+ width = 0;
1218
+
1219
+ if (!position || 'top' !== position && 'right' !== position) {
1220
+ var container = th.closest('.filter-item');
1221
+ position = container.hasClass('color') || container.hasClass('label') ? 'top' : 'right';
1222
+ }
1223
+
1224
+ tooltip = $('<span>', {
1225
+ "class": 'yith-wcan-tooltip',
1226
+ html: th.data('title')
1227
+ });
1228
+ th.append(tooltip);
1229
+ width = tooltip.outerWidth() + 6;
1230
+ tooltip.outerWidth(width);
1231
+
1232
+ if ('top' === position) {
1233
+ left = (wrapperWidth - width) / 2;
1234
+ } else {
1235
+ left = wrapperWidth + 15;
1236
+ }
1237
+
1238
+ tooltip.css({
1239
+ left: left.toFixed(0) + 'px'
1240
+ }).fadeIn(200);
1241
+ th.addClass('with-tooltip');
1242
+ }).on('mouseleave', function () {
1243
+ var th = $(this);
1244
+ th.find('.yith-wcan-tooltip').fadeOut(200, function () {
1245
+ th.removeClass('with-tooltip').find('.yith-wcan-tooltip').remove();
1246
+ });
1247
+ });
1248
+ t.addClass('tooltip-added');
1249
+ });
1250
+ } // init dropdown
1251
+
1252
+ }, {
1253
+ key: "_initDropdown",
1254
+ value: function _initDropdown($filter) {
1255
+ var $dropdown = $filter.find('select.filter-dropdown');
1256
+
1257
+ if (!$dropdown.length) {
1258
+ return;
1259
+ }
1260
+
1261
+ if ($dropdown.hasClass('select2-hidden-accessible') && 'undefined' !== typeof $.fn.selectWoo) {
1262
+ $dropdown.selectWoo('destroy');
1263
+ }
1264
+
1265
+ this._initDropdownObject($dropdown, {
1266
+ paginate: true,
1267
+ perPage: yith_wcan_shortcodes.terms_per_page
1268
+ });
1269
+ } // init dropdown object
1270
+
1271
+ }, {
1272
+ key: "_initDropdownObject",
1273
+ value: function _initDropdownObject($dropdown, opts) {
1274
+ return new YITH_WCAN_Dropdown($dropdown, opts);
1275
+ } // init price slider
1276
+
1277
+ }, {
1278
+ key: "_initPriceSlider",
1279
+ value: function _initPriceSlider($filter) {
1280
+ var _this3 = this;
1281
+
1282
+ if (!$filter.hasClass('filter-price-slider')) {
1283
+ return;
1284
+ }
1285
+
1286
+ var self = this,
1287
+ $container = $filter.find('.price-slider'),
1288
+ $minInput = $container.find('.price-slider-min'),
1289
+ $maxInput = $container.find('.price-slider-max'),
1290
+ min = parseFloat($container.data('min')),
1291
+ max = parseFloat($container.data('max')),
1292
+ currentMin = parseFloat($minInput.val()),
1293
+ currentMax = parseFloat($maxInput.val()),
1294
+ step = parseFloat($container.data('step')),
1295
+ handleSliderChange = function handleSliderChange() {
1296
+ if (self.sliderTimeout) {
1297
+ clearTimeout(self.sliderTimeout);
1298
+ }
1299
+
1300
+ self.sliderTimeout = setTimeout(function () {
1301
+ self.maybeFilter($filter);
1302
+ }, 200);
1303
+ };
1304
+
1305
+ $filter.find('.price-slider-ui').ionRangeSlider({
1306
+ skin: 'round',
1307
+ type: 'double',
1308
+ min: min,
1309
+ max: max,
1310
+ step: step,
1311
+ from: currentMin,
1312
+ to: currentMax,
1313
+ min_interval: step,
1314
+ values_separator: ' - ',
1315
+ prettify: function prettify(v) {
1316
+ return _this3.formatPrice(v);
1317
+ },
1318
+ onChange: function onChange(data) {
1319
+ $minInput.val(data.from);
1320
+ $maxInput.val(data.to);
1321
+ },
1322
+ onFinish: handleSliderChange
1323
+ });
1324
+ $minInput.add($maxInput).off('change').on('keyup', function () {
1325
+ if (!$minInput.val() || !$maxInput.val()) {
1326
+ return;
1327
+ }
1328
+
1329
+ handleSliderChange();
1330
+ });
1331
+ } // init collapsable
1332
+
1333
+ }, {
1334
+ key: "_initCollapsable",
1335
+ value: function _initCollapsable($filter) {
1336
+ this._initTitleCollapsable($filter);
1337
+
1338
+ this._initHierarchyCollapsable($filter);
1339
+ } // init toggle on click of the title
1340
+
1341
+ }, {
1342
+ key: "_initTitleCollapsable",
1343
+ value: function _initTitleCollapsable($filter) {
1344
+ var $title = $filter.find('.collapsable');
1345
+
1346
+ if (!$title.length) {
1347
+ return;
1348
+ }
1349
+
1350
+ this._initToggle($title, $title, $filter.find('.filter-content'));
1351
+ } // init toggle on click of the parent li
1352
+
1353
+ }, {
1354
+ key: "_initHierarchyCollapsable",
1355
+ value: function _initHierarchyCollapsable($filter) {
1356
+ var $items = $filter.find('.hierarchy-collapsable');
1357
+
1358
+ if (!$items.length) {
1359
+ return;
1360
+ } // set parents of currently active term as open
1361
+
1362
+
1363
+ var self = this,
1364
+ active = $filter.find('.active');
1365
+
1366
+ if (active.length) {
1367
+ active.parents('.hierarchy-collapsable').removeClass('closed').addClass('opened');
1368
+
1369
+ if (active.hasClass('hierarchy-collapsable') && yith_wcan_shortcodes.show_current_children) {
1370
+ active.removeClass('closed').addClass('opened');
1371
+ }
1372
+ }
1373
+
1374
+ $items.each(function () {
1375
+ var $t = $(this),
1376
+ $toggle = $('<span/>', {
1377
+ "class": 'toggle-handle'
1378
+ });
1379
+ $toggle.appendTo($t);
1380
+
1381
+ self._initToggle($toggle, $t, $t.children('ul.filter-items'));
1382
+ });
1383
+ } // init toggle to generic toggle/target pair
1384
+
1385
+ }, {
1386
+ key: "_initToggle",
1387
+ value: function _initToggle($toggle, $container, $target) {
1388
+ if ($container.hasClass('closed')) {
1389
+ $target.hide();
1390
+ }
1391
+
1392
+ $toggle.off('click').on('click', function (ev) {
1393
+ ev.stopPropagation();
1394
+ $target.slideToggle(400, function () {
1395
+ $container.toggleClass('opened').toggleClass('closed');
1396
+ });
1397
+ });
1398
+ } // init custom input
1399
+
1400
+ }, {
1401
+ key: "_initCustomInput",
1402
+ value: function _initCustomInput($filter) {
1403
+ $filter.find(':input').each(function () {
1404
+ var input = $(this),
1405
+ type = input.attr('type'),
1406
+ containerClass = "".concat(type, "button"),
1407
+ container;
1408
+
1409
+ if ('checkbox' !== type && 'radio' !== type) {
1410
+ return;
1411
+ }
1412
+
1413
+ if (input.closest(".".concat(containerClass)).length) {
1414
+ return;
1415
+ }
1416
+
1417
+ if (input.is(':checked')) {
1418
+ containerClass += ' checked';
1419
+ }
1420
+
1421
+ container = $('<span/>', {
1422
+ "class": containerClass
1423
+ });
1424
+ input.wrap(container).on('change', function () {
1425
+ var t = $(this);
1426
+ t.prop('checked') ? t.parent().addClass('checked') : t.parent().removeClass('checked');
1427
+ });
1428
+ });
1429
+ } // register initial status
1430
+
1431
+ }, {
1432
+ key: "_regiterStatus",
1433
+ value: function _regiterStatus() {
1434
+ this.originalFilters = this.getFiltersProperties();
1435
+ } // trigger handling after layout change
1436
+
1437
+ }, {
1438
+ key: "_afterLayoutChange",
1439
+ value: function _afterLayoutChange() {
1440
+ if (this.isMobile) {
1441
+ var _this$$filterButtons;
1442
+
1443
+ this.$preset.addClass('filters-modal').attr('role', 'dialog').attr('tabindex', '-1').hide();
1444
+
1445
+ this._addCloseModalButton();
1446
+
1447
+ this._addApplyFiltersModalButton();
1448
+
1449
+ this._switchToCollapsables();
1450
+
1451
+ (_this$$filterButtons = this.$filterButtons) === null || _this$$filterButtons === void 0 ? void 0 : _this$$filterButtons.hide();
1452
+ } else {
1453
+ var _this$$filterButtons2;
1454
+
1455
+ this.$preset.removeClass('filters-modal').removeClass('open').removeAttr('role').removeAttr('tabindex').show();
1456
+ $('body').css('overflow', 'auto').removeClass('yith-wcan-preset-modal-open');
1457
+
1458
+ this._removeCloseModalButton();
1459
+
1460
+ this._removeApplyFiltersModalButton();
1461
+
1462
+ this._switchBackCollapsables();
1463
+
1464
+ (_this$$filterButtons2 = this.$filterButtons) === null || _this$$filterButtons2 === void 0 ? void 0 : _this$$filterButtons2.show();
1465
+ }
1466
+ } // add modal close button
1467
+
1468
+ }, {
1469
+ key: "_addCloseModalButton",
1470
+ value: function _addCloseModalButton() {
1471
+ var $closeButton = $('<a/>', {
1472
+ "class": 'close-button',
1473
+ html: '&times;',
1474
+ 'data-dismiss': 'modal',
1475
+ 'aria-label': yith_wcan_shortcodes.labels.close
1476
+ });
1477
+ $closeButton.prependTo(this.$preset).on('click', this.closeModal.bind(this));
1478
+ this.modalElements.closeButton = $closeButton;
1479
+ } // remove modal close button
1480
+
1481
+ }, {
1482
+ key: "_removeCloseModalButton",
1483
+ value: function _removeCloseModalButton() {
1484
+ var _this$modalElements, _this$modalElements$c;
1485
+
1486
+ (_this$modalElements = this.modalElements) === null || _this$modalElements === void 0 ? void 0 : (_this$modalElements$c = _this$modalElements.closeButton) === null || _this$modalElements$c === void 0 ? void 0 : _this$modalElements$c.remove();
1487
+ } // show main filter button for the modal
1488
+
1489
+ }, {
1490
+ key: "_addApplyFiltersModalButton",
1491
+ value: function _addApplyFiltersModalButton() {
1492
+ var _this4 = this;
1493
+
1494
+ var $filterButton = $('<button/>', {
1495
+ "class": 'apply-filters main-modal-button',
1496
+ html: yith_wcan_shortcodes.labels.show_results,
1497
+ 'data-dismiss': 'modal'
1498
+ });
1499
+ $filterButton.appendTo(this.$preset).on('click', function () {
1500
+ _this4.filter();
1501
+
1502
+ _this4.closeModal();
1503
+ });
1504
+ this.modalElements.applyFiltersButton = $filterButton;
1505
+ } // hide main filter button for the modal
1506
+
1507
+ }, {
1508
+ key: "_removeApplyFiltersModalButton",
1509
+ value: function _removeApplyFiltersModalButton() {
1510
+ var _this$modalElements2, _this$modalElements2$;
1511
+
1512
+ (_this$modalElements2 = this.modalElements) === null || _this$modalElements2 === void 0 ? void 0 : (_this$modalElements2$ = _this$modalElements2.applyFiltersButton) === null || _this$modalElements2$ === void 0 ? void 0 : _this$modalElements2$.remove();
1513
+ } // convert all filters to collapsable
1514
+
1515
+ }, {
1516
+ key: "_switchToCollapsables",
1517
+ value: function _switchToCollapsables() {
1518
+ var self = this;
1519
+ this.getFilters().each(function () {
1520
+ var $filter = $(this),
1521
+ $title = $filter.find('.filter-title');
1522
+
1523
+ if (!$title.length || $title.hasClass('collapsable')) {
1524
+ return;
1525
+ }
1526
+
1527
+ $title.addClass('collapsable').data('disable-collapse', true);
1528
+
1529
+ self._initTitleCollapsable($filter);
1530
+ });
1531
+ } // switch back filters to their previous collapsable state
1532
+
1533
+ }, {
1534
+ key: "_switchBackCollapsables",
1535
+ value: function _switchBackCollapsables() {
1536
+ this.getFilters().each(function () {
1537
+ var $filter = $(this),
1538
+ $title = $filter.find('.filter-title');
1539
+
1540
+ if (!$title.length || !$title.hasClass('collapsable') || !$title.data('disable-collapse')) {
1541
+ return;
1542
+ }
1543
+
1544
+ $title.removeClass('collapsable').removeData('disable-collapse', true).off('click');
1545
+ $filter.find('.filter-content').show();
1546
+ });
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
+
1559
+ }, {
1560
+ key: "maybeRegisterStatusChange",
1561
+ value: function maybeRegisterStatusChange() {
1562
+ var currentFilters = this.getFiltersProperties(),
1563
+ currentStr = JSON.stringify(currentFilters),
1564
+ originalStr = JSON.stringify(this.originalFilters);
1565
+ this.dirty = currentStr !== originalStr;
1566
+ } // apply filters when possible
1567
+
1568
+ }, {
1569
+ key: "maybeFilter",
1570
+ value: function maybeFilter($initiator) {
1571
+ // register status change
1572
+ this.maybeRegisterStatusChange(); // filter, or show filter button.
1573
+
1574
+ if (yith_wcan_shortcodes.instant_filters && !this.isMobile) {
1575
+ this.filter();
1576
+ } else if (!yith_wcan_shortcodes.instant_filters && !this.isMobile) {
1577
+ var _this$$filterButtons3, _this$$filterButtons4;
1578
+
1579
+ this.dirty ? (_this$$filterButtons3 = this.$filterButtons) === null || _this$$filterButtons3 === void 0 ? void 0 : _this$$filterButtons3.show() : (_this$$filterButtons4 = this.$filterButtons) === null || _this$$filterButtons4 === void 0 ? void 0 : _this$$filterButtons4.hide();
1580
+ } else if (this.isMobile && this.dirty) {
1581
+ var _this$modalElements$a;
1582
+
1583
+ this.$preset.addClass('with-filter-button');
1584
+ (_this$modalElements$a = this.modalElements.applyFiltersButton) === null || _this$modalElements$a === void 0 ? void 0 : _this$modalElements$a.show();
1585
+ }
1586
+ } // main filtering method
1587
+
1588
+ }, {
1589
+ key: "filter",
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) {
1603
+ var scrollTarget = $(yith_wcan_shortcodes.scroll_target);
1604
+ targetOffset = scrollTarget.length ? scrollTarget.offset().top : targetOffset;
1605
+ }
1606
+
1607
+ $('body, html').animate({
1608
+ scrollTop: targetOffset - 100
1609
+ });
1610
+ } // register new filters, clear status flag
1611
+
1612
+
1613
+ _this6.originalFilters = _this6.getFiltersProperties();
1614
+ _this6.dirty = false;
1615
+ });
1616
+
1617
+ if (this.isMobile) {
1618
+ var _this$modalElements$a2;
1619
+
1620
+ this.$preset.removeClass('with-filter-button');
1621
+ (_this$modalElements$a2 = this.modalElements.applyFiltersButton) === null || _this$modalElements$a2 === void 0 ? void 0 : _this$modalElements$a2.hide();
1622
+ }
1623
+ } // get all filter nodes
1624
+
1625
+ }, {
1626
+ key: "getFilters",
1627
+ value: function getFilters() {
1628
+ if (false === this.$filters) {
1629
+ this.$filters = this.$preset.find('.yith-wcan-filter');
1630
+ }
1631
+
1632
+ return this.$filters;
1633
+ } // retrieves all filters that we want to apply
1634
+
1635
+ }, {
1636
+ key: "getActiveFilters",
1637
+ value: function getActiveFilters() {
1638
+ if (false === this.activeFilters) {
1639
+ this.activeFilters = this.getFiltersProperties();
1640
+ }
1641
+
1642
+ return this.activeFilters;
1643
+ } // check whether there is any filter active
1644
+
1645
+ }, {
1646
+ key: "isAnyFilterActive",
1647
+ value: function isAnyFilterActive() {
1648
+ return !!Object.keys(this.getActiveFilters()).length;
1649
+ } // checks whether current filter is active
1650
+
1651
+ }, {
1652
+ key: "isFilterActive",
1653
+ value: function isFilterActive($filter) {
1654
+ var filterType = $filter.data('filter-type'),
1655
+ active,
1656
+ filteredActive;
1657
+
1658
+ switch (filterType) {
1659
+ case 'tax':
1660
+ case 'review':
1661
+ case 'price_range':
1662
+ var $dropdown = $filter.find('.filter-dropdown');
1663
+
1664
+ if ($dropdown.length) {
1665
+ var val = $dropdown.val();
1666
+ active = 'object' === yith_wcan_preset_typeof(val) ? !!(val !== null && val !== void 0 && val.length) : !!val;
1667
+ break;
1668
+ }
1669
+
1670
+ // if we use type other than dropdown, fallthrough
1671
+
1672
+ case 'stock_sale':
1673
+ active = $filter.find('.filter-item').filter('.active').length;
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':
1685
+ active = 'menu_order' !== $filter.find('.filter-order-by').val();
1686
+ break;
1687
+
1688
+ default:
1689
+ active = false;
1690
+ break;
1691
+ }
1692
+
1693
+ filteredActive = $filter.triggerHandler('yith_wcan_is_filter_active', [active, this]);
1694
+ active = typeof filteredActive !== 'undefined' ? filteredActive : active;
1695
+ return active;
1696
+ } // count the number of active items per filter
1697
+
1698
+ }, {
1699
+ key: "countActiveItems",
1700
+ value: function countActiveItems($filter) {
1701
+ var filterType = $filter.data('filter-type'),
1702
+ count;
1703
+
1704
+ switch (filterType) {
1705
+ case 'tax':
1706
+ case 'review':
1707
+ case 'price_range':
1708
+ var $dropdown = $filter.find('.filter-dropdown');
1709
+
1710
+ if ($dropdown.length) {
1711
+ var val = $dropdown.val();
1712
+ count = 'object' === yith_wcan_preset_typeof(val) ? val === null || val === void 0 ? void 0 : val.length : +!!val;
1713
+ break;
1714
+ }
1715
+
1716
+ // if we use type other than dropdown, fallthrough
1717
+
1718
+ case 'stock_sale':
1719
+ count = $filter.find('.filter-items').find('.active').length;
1720
+ break;
1721
+
1722
+ case 'orderby':
1723
+ if (this.isFilterActive($filter)) {
1724
+ count = 1;
1725
+ }
1726
+
1727
+ break;
1728
+
1729
+ case 'price_slider':
1730
+ default:
1731
+ count = 0;
1732
+ break;
1733
+ }
1734
+
1735
+ return count;
1736
+ } // retrieves filter properties for the filter
1737
+
1738
+ }, {
1739
+ key: "getFilterProperties",
1740
+ value: function getFilterProperties($filter) {
1741
+ var filterType = $filter.data('filter-type'),
1742
+ multiple = 'yes' === $filter.data('multiple'),
1743
+ $dropdown = $filter.find('.filter-dropdown'),
1744
+ properties = {},
1745
+ filteredProperties,
1746
+ $active;
1747
+
1748
+ switch (filterType) {
1749
+ case 'tax':
1750
+ var activeTerms = [],
1751
+ taxonomy = $filter.data('taxonomy'),
1752
+ isAttr = 0 === taxonomy.indexOf('filter'),
1753
+ relation = $filter.data('relation');
1754
+
1755
+ if ($dropdown.length) {
1756
+ if (multiple) {
1757
+ activeTerms = $dropdown.val();
1758
+ } else {
1759
+ activeTerms.push($dropdown.val());
1760
+ }
1761
+ } else {
1762
+ $active = $filter.find('.filter-item').filter('.active').children('a, label');
1763
+ activeTerms = $active.get().reduce(function (a, v) {
1764
+ var val;
1765
+ v = $(v);
1766
+ val = v.is('label') ? v.find(':input').val() : v.data('term-slug');
1767
+
1768
+ if (!val) {
1769
+ return a;
1770
+ }
1771
+
1772
+ a.push(val);
1773
+ return a;
1774
+ }, activeTerms);
1775
+ }
1776
+
1777
+ if (!multiple) {
1778
+ properties[taxonomy] = activeTerms.pop();
1779
+ } else {
1780
+ var glue = !isAttr && 'and' === relation ? '+' : ',';
1781
+ properties[taxonomy] = activeTerms.join(glue);
1782
+ }
1783
+
1784
+ if (isAttr) {
1785
+ properties[taxonomy.replace('filter_', 'query_type_')] = relation;
1786
+ }
1787
+
1788
+ break;
1789
+
1790
+ case 'review':
1791
+ if ($dropdown.length) {
1792
+ properties.rating_filter = $dropdown.val();
1793
+ } else {
1794
+ $active = $filter.find('.filter-item').filter('.active').children('a, label');
1795
+
1796
+ if (!multiple) {
1797
+ $active = $active.first();
1798
+ properties.rating_filter = $active.is('label') ? $active.find(':input').val() : $active.data('rating');
1799
+ } else {
1800
+ properties.rating_filter = $active.get().reduce(function (a, v) {
1801
+ var val;
1802
+ v = $(v);
1803
+ val = v.is('label') ? v.find(':input').val() : v.data('rating');
1804
+
1805
+ if (!val) {
1806
+ return a;
1807
+ }
1808
+
1809
+ a.push(val);
1810
+ return a;
1811
+ }, []).join(',');
1812
+ }
1813
+ }
1814
+
1815
+ break;
1816
+
1817
+ case 'price_range':
1818
+ if ($dropdown.length) {
1819
+ if (multiple) {
1820
+ properties.price_ranges = $dropdown.val().join(',');
1821
+ } else {
1822
+ properties.min_price = $dropdown.val().split('-')[0];
1823
+ properties.max_price = $dropdown.val().split('-')[1];
1824
+ }
1825
+ } else {
1826
+ $active = $filter.find('.filter-item').filter('.active').children('a, label');
1827
+
1828
+ if (multiple) {
1829
+ properties.price_ranges = $active.get().reduce(function (a, v) {
1830
+ var min = $(v).data('range-min'),
1831
+ max = $(v).data('range-max');
1832
+ a += (max ? "".concat(min, "-").concat(max) : min) + ',';
1833
+ return a;
1834
+ }, '').replace(/^(.*),$/, '$1');
1835
+ } else {
1836
+ properties.min_price = parseFloat($active.first().data('range-min'));
1837
+ properties.max_price = parseFloat($active.first().data('range-max'));
1838
+ }
1839
+ }
1840
+
1841
+ break;
1842
+
1843
+ case 'price_slider':
1844
+ properties.min_price = parseFloat($filter.find('.price-slider-min').val());
1845
+ properties.max_price = parseFloat($filter.find('.price-slider-max').val());
1846
+ break;
1847
+
1848
+ case 'stock_sale':
1849
+ if ($filter.find('.filter-on-sale').is('.active')) {
1850
+ properties.onsale_filter = 1;
1851
+ }
1852
+
1853
+ if ($filter.find('.filter-in-stock').is('.active')) {
1854
+ properties.instock_filter = 1;
1855
+ }
1856
+
1857
+ if ($filter.find('.filter-featured').is('.active')) {
1858
+ properties.featured_filter = 1;
1859
+ }
1860
+
1861
+ break;
1862
+
1863
+ case 'orderby':
1864
+ properties.orderby = $filter.find('.filter-order-by').val();
1865
+ break;
1866
+
1867
+ default:
1868
+ break;
1869
+ }
1870
+
1871
+ filteredProperties = $filter.triggerHandler('yith_wcan_filter_properties', [properties, self]);
1872
+ properties = typeof filteredProperties !== 'undefined' ? filteredProperties : properties;
1873
+ return properties;
1874
+ } // retrieves properties for all filters of the preset
1875
+
1876
+ }, {
1877
+ key: "getFiltersProperties",
1878
+ value: function getFiltersProperties() {
1879
+ var properties = {};
1880
+ var self = this;
1881
+ this.getFilters().each(function () {
1882
+ var $filter = $(this);
1883
+
1884
+ if (self.isFilterActive($filter)) {
1885
+ var filterProperties = self.getFilterProperties($filter);
1886
+ properties = self.mergeProperties(properties, filterProperties, $filter);
1887
+ }
1888
+ });
1889
+ return properties;
1890
+ } // retrieve filters matching any of the properties passed
1891
+
1892
+ }, {
1893
+ key: "getFiltersByProperties",
1894
+ value: function getFiltersByProperties(properties) {
1895
+ var self = this;
1896
+ return this.getFilters().filter(function () {
1897
+ var $filter = $(this);
1898
+
1899
+ if (self.isFilterActive($filter)) {
1900
+ var filterProperties = self.getFilterProperties($filter),
1901
+ hasProp = false;
1902
+
1903
+ for (var prop in properties) {
1904
+ if (['min_price', 'max_price', 'price_ranges'].includes(prop) && (filterProperties.min_price || filterProperties.price_ranges)) {
1905
+ hasProp = true;
1906
+ break;
1907
+ } else if (filterProperties[prop]) {
1908
+ hasProp = true;
1909
+ break;
1910
+ }
1911
+ }
1912
+
1913
+ return hasProp;
1914
+ }
1915
+
1916
+ return false;
1917
+ });
1918
+ } // show clear selection anchor
1919
+
1920
+ }, {
1921
+ key: "maybeToggleClearFilter",
1922
+ value: function maybeToggleClearFilter($filter) {
1923
+ if (!this.isFilterActive($filter)) {
1924
+ this.maybeHideClearFilter($filter);
1925
+ } else {
1926
+ this.maybeShowClearFilter($filter);
1927
+ }
1928
+ } // show clear all selections anchor
1929
+
1930
+ }, {
1931
+ key: "maybeToggleClearAllFilters",
1932
+ value: function maybeToggleClearAllFilters() {
1933
+ if (!this.isAnyFilterActive()) {
1934
+ this.maybeHideClearAllFilters();
1935
+ } else {
1936
+ this.maybeShowClearAllFilters();
1937
+ }
1938
+ } // show clear selection anchor
1939
+
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;
1947
+ } // remove clear selection link if already added.
1948
+
1949
+
1950
+ $filter.find('.clear-selection').remove(); // add new clear selection link.
1951
+
1952
+ $('<a/>', {
1953
+ "class": 'clear-selection',
1954
+ text: yith_wcan_shortcodes.labels.clear_selection,
1955
+ role: 'button'
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
1968
+
1969
+ }, {
1970
+ key: "maybeShowClearAllFilters",
1971
+ value: function maybeShowClearAllFilters() {
1972
+ var _this8 = this;
1973
+
1974
+ if (!this.isAnyFilterActive() || !this.isMobile) {
1975
+ return;
1976
+ } // remove clear selection link if already added.
1977
+
1978
+
1979
+ this.$preset.find('.clear-selection').remove(); // add new clear selection link.
1980
+
1981
+ $('<a/>', {
1982
+ "class": 'clear-selection',
1983
+ text: yith_wcan_shortcodes.labels.clear_all_selections,
1984
+ role: 'button'
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
1997
+
1998
+ }, {
1999
+ key: "maybeHideClearFilter",
2000
+ value: function maybeHideClearFilter($filter) {
2001
+ if (this.isFilterActive($filter) || !yith_wcan_shortcodes.show_clear_filter) {
2002
+ return;
2003
+ } // remove clear selection link.
2004
+
2005
+
2006
+ $filter.find('.clear-selection').remove();
2007
+ } // show clearAll anchor, when on mobile layout
2008
+
2009
+ }, {
2010
+ key: "maybeHideClearAllFilters",
2011
+ value: function maybeHideClearAllFilters() {
2012
+ if (this.isAnyFilterActive()) {
2013
+ return;
2014
+ } // remove clear selection link.
2015
+
2016
+
2017
+ this.$preset.find('.filters-container').children('.clear-selection').remove();
2018
+ } // deactivate filter
2019
+
2020
+ }, {
2021
+ key: "deactivateFilter",
2022
+ value: function deactivateFilter($filter, properties, doFilter) {
2023
+ var filterType = $filter.data('filter-type'),
2024
+ $items = $filter.find('.filter-item'),
2025
+ $activeItems = $items.filter('.active'),
2026
+ $dropdown = $filter.find('.filter-dropdown');
2027
+
2028
+ switch (filterType) {
2029
+ case 'tax':
2030
+ var taxonomy = $filter.data('taxonomy');
2031
+
2032
+ if ($dropdown.length) {
2033
+ if (!properties) {
2034
+ $dropdown.find('option').prop('selected', false);
2035
+ } else {
2036
+ $dropdown.find('option').each(function () {
2037
+ var $option = $(this);
2038
+
2039
+ if ($option.val() === properties[taxonomy]) {
2040
+ $option.prop('selected', false);
2041
+ }
2042
+ });
2043
+ }
2044
+
2045
+ $dropdown.change();
2046
+ } else if (!properties) {
2047
+ $activeItems.children('label').children('a').click();
2048
+ $activeItems.removeClass('active');
2049
+ } else {
2050
+ $activeItems.each(function () {
2051
+ var $item = $(this),
2052
+ $label = $item.children('label'),
2053
+ $anchor = $item.children('a'),
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
+ }
2061
+ });
2062
+ }
2063
+
2064
+ break;
2065
+
2066
+ case 'review':
2067
+ if ($dropdown.length) {
2068
+ if (!properties) {
2069
+ $dropdown.find('option').prop('selected', false);
2070
+ } else {
2071
+ $dropdown.find('option').each(function () {
2072
+ var $option = $(this);
2073
+
2074
+ if ($option.val() === properties.rating_filter) {
2075
+ $option.prop('selected', false);
2076
+ }
2077
+ });
2078
+ }
2079
+
2080
+ $dropdown.change();
2081
+ } else if (!properties) {
2082
+ $activeItems.children('label').children('a').click();
2083
+ $activeItems.removeClass('active');
2084
+ } else {
2085
+ $activeItems.each(function () {
2086
+ var $item = $(this),
2087
+ $label = $item.children('label'),
2088
+ $anchor = $item.children('a'),
2089
+ value;
2090
+ value = $label.length ? $label.find(':input').val() : $anchor.data('rating');
2091
+
2092
+ if (value === properties.rating_filter) {
2093
+ $item.children('label').children('a').click();
2094
+ $item.removeClass('active');
2095
+ }
2096
+ });
2097
+ }
2098
+
2099
+ break;
2100
+
2101
+ case 'price_range':
2102
+ if ($dropdown.length) {
2103
+ if (!properties) {
2104
+ $dropdown.find('option').prop('selected', false);
2105
+ } else {
2106
+ $dropdown.find('option').each(function () {
2107
+ var $option = $(this),
2108
+ formattedRange = properties.min_price + (properties.max_price ? "-".concat(properties.max_price) : '');
2109
+
2110
+ if ($option.val() === formattedRange) {
2111
+ $option.prop('selected', false);
2112
+ }
2113
+ });
2114
+ }
2115
+
2116
+ $dropdown.change();
2117
+ } else if (!properties) {
2118
+ $activeItems.children('label').children('a').click();
2119
+ $activeItems.removeClass('active');
2120
+ } else {
2121
+ $activeItems.each(function () {
2122
+ var $item = $(this),
2123
+ $label = $item.children('label'),
2124
+ $anchor = $item.children('a'),
2125
+ formattedRange,
2126
+ value;
2127
+ value = $label.length ? $label.find(':input').val() : $anchor.data('min_price') + ($anchor.data('max_price') ? '-' + $anchor.data('max_price') : '');
2128
+
2129
+ if (properties.min_price) {
2130
+ formattedRange = properties.min_price + (properties.max_price ? '-' + properties.max_price : '');
2131
+ } else if (properties.price_ranges) {
2132
+ formattedRange = properties.price_ranges;
2133
+ }
2134
+
2135
+ if (value === formattedRange) {
2136
+ $item.children('label').children('a').click();
2137
+ $item.removeClass('active');
2138
+ }
2139
+ });
2140
+ }
2141
+
2142
+ break;
2143
+
2144
+ case 'price_slider':
2145
+ var $priceSlider = $filter.find('.price-slider');
2146
+ $filter.find('.price-slider-min').val($priceSlider.data('min'));
2147
+ $filter.find('.price-slider-max').val($priceSlider.data('max')).change();
2148
+ break;
2149
+
2150
+ case 'orderby':
2151
+ $filter.find('select').val('menu_order');
2152
+ break;
2153
+
2154
+ case 'stock_sale':
2155
+ if (!properties) {
2156
+ $filter.find('.filter-in-stock').find(':input').prop('checked', false).change();
2157
+ $filter.find('.filter-on-sale').find(':input').prop('checked', false).change();
2158
+ $filter.find('.filter-featured').find(':input').prop('checked', false).change();
2159
+ $items.removeClass('active');
2160
+ } else {
2161
+ if (properties !== null && properties !== void 0 && properties.instock_filter) {
2162
+ $filter.find('.filter-in-stock').find(':input').prop('checked', false).change().closest('.filter-item').removeClass('active');
2163
+ }
2164
+
2165
+ if (properties !== null && properties !== void 0 && properties.onsale_filter) {
2166
+ $filter.find('.filter-on-sale').find(':input').prop('checked', false).change().closest('.filter-item').removeClass('active');
2167
+ }
2168
+
2169
+ if (properties !== null && properties !== void 0 && properties.featured_filter) {
2170
+ $filter.find('.filter-featured').find(':input').prop('checked', false).change().closest('.filter-item').removeClass('active');
2171
+ }
2172
+ }
2173
+
2174
+ break;
2175
+
2176
+ default:
2177
+ $items.removeClass('active');
2178
+ break;
2179
+ }
2180
+
2181
+ this.activeFilters = false;
2182
+
2183
+ if (doFilter) {
2184
+ this.filter();
2185
+ }
2186
+ } // deactivate all filters
2187
+
2188
+ }, {
2189
+ key: "deactivateAllFilters",
2190
+ value: function deactivateAllFilters(doFilter) {
2191
+ var self = this,
2192
+ $filters = this.getFilters();
2193
+ $filters.each(function () {
2194
+ var $filter = $(this);
2195
+ self.deactivateFilter($filter);
2196
+ });
2197
+ this.activeFilters = false;
2198
+
2199
+ if (doFilter) {
2200
+ this.filter();
2201
+ }
2202
+ } // deactivate filters that matches a specific set of properties
2203
+
2204
+ }, {
2205
+ key: "deactivateFilterByProperties",
2206
+ value: function deactivateFilterByProperties(properties, doFilter) {
2207
+ var self = this,
2208
+ $filters = this.getFiltersByProperties(properties);
2209
+
2210
+ if (!$filters.length) {
2211
+ return;
2212
+ }
2213
+
2214
+ $filters.each(function () {
2215
+ var $filter = $(this);
2216
+ self.deactivateFilter($filter, properties, doFilter);
2217
+ });
2218
+ } // open filters as a modal, when in mobile layout
2219
+
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;
2245
+ }
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);
2253
+ } // utility that formats the price according to store configuration.
2254
+
2255
+ }, {
2256
+ key: "formatPrice",
2257
+ value: function formatPrice(price) {
2258
+ if ('undefined' !== typeof accounting) {
2259
+ price = accounting.formatMoney(price, {
2260
+ symbol: yith_wcan_shortcodes.currency_format.symbol,
2261
+ decimal: yith_wcan_shortcodes.currency_format.decimal,
2262
+ thousand: yith_wcan_shortcodes.currency_format.thousand,
2263
+ precision: 0,
2264
+ format: yith_wcan_shortcodes.currency_format.format
2265
+ });
2266
+ }
2267
+
2268
+ return price;
2269
+ } // utility that merges together sets of filter properties
2270
+
2271
+ }, {
2272
+ key: "mergeProperties",
2273
+ value: function mergeProperties(set1, set2, $filter) {
2274
+ // search for common properties
2275
+ for (var prop in set2) {
2276
+ if (!set2.hasOwnProperty(prop)) {
2277
+ continue;
2278
+ }
2279
+
2280
+ if (!!set1[prop]) {
2281
+ switch (prop) {
2282
+ case 'rating_filter':
2283
+ case 'min_price':
2284
+ case 'max_price':
2285
+ case 'onsale_filter':
2286
+ case 'instock_filter':
2287
+ case 'orderby':
2288
+ // just override default value
2289
+ set1[prop] = set2[prop];
2290
+ break;
2291
+
2292
+ default:
2293
+ if (0 === prop.indexOf('query_type_')) {
2294
+ // query_type param
2295
+ set1[prop] = set2[prop];
2296
+ } else {
2297
+ // we're dealing with taxonomy
2298
+ var isAttr = 0 === prop.indexOf('filter_'),
2299
+ glue = isAttr ? ',' : '+';
2300
+ var newValue = set1[prop].replace(',', glue) + glue + set2[prop].replace(',', glue);
2301
+ newValue = newValue.split(glue).filter(function (value, index, arr) {
2302
+ return arr.indexOf(value) === index;
2303
+ }).join(glue);
2304
+ set1[prop] = newValue;
2305
+
2306
+ if (isAttr) {
2307
+ var queryTypeParam = prop.replace('filter_', 'query_type_');
2308
+ set1[queryTypeParam] = 'and';
2309
+ set2[queryTypeParam] = 'and';
2310
+ }
2311
+ }
2312
+
2313
+ }
2314
+
2315
+ delete set2[prop];
2316
+ }
2317
+ }
2318
+
2319
+ $.extend(set1, set2);
2320
+ return set1;
2321
+ }
2322
+ }]);
2323
+
2324
+ return YITH_WCAN_Preset;
2325
+ }();
2326
+
2327
+
2328
+ ;// CONCATENATED MODULE: ./assets/js/shortcodes/index.js
2329
+
2330
+ /* global globalThis, jQuery, yith_wcan_shortcodes, accounting */
2331
 
 
 
 
 
 
2332
 
 
 
2333
 
 
 
 
 
2334
 
2335
+ jQuery(function ($) {
2336
+ $(document).on('yith_wcan_init_shortcodes yith_plugin_fw_gutenberg_success_do_shortcode', function () {
2337
+ $('.yith-wcan-filters').not('.enhanced').each(function () {
2338
+ new YITH_WCAN_Preset($(this));
2339
+ });
2340
+ $('.yith-wcan-reset-filters').not('.enhanced').each(function () {
2341
+ new YITH_WCAN_Reset_Button($(this));
2342
+ });
2343
+ }).trigger('yith_wcan_init_shortcodes');
2344
+ globalThis.product_filter = new YITH_WCAN_Filter();
2345
+ });
2346
+ /******/ })()
2347
+ ;
2348
+ //# sourceMappingURL=yith-wcan-shortcodes.js.map
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
assets/js/yith-wcan-shortcodes.js.map ADDED
@@ -0,0 +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":""}
assets/js/yith-wcan-shortcodes.min.js CHANGED
@@ -1 +1 @@
1
- "use strict";function YITH_WCAN_Filter(e){const t=this;return t.xhr=null,t.doingAjax=!1,t.initialized=!1,t.originalSearch=!1,t._init=function(){const i=e("head").html(),n=document.title,l=t.searchAlternativeUrl(i);l&&!t.doingAjax&&!t.initialized&&!yith_wcan_shortcodes.ajax_filters&&t.pushUrlToHistory(l,n),t.originalSearch=location.search,t.initialized=!0},t.doFilter=function(i,n,l){let a,o,s=e(n||"body");if(o=e(document).triggerHandler("yith_wcan_filters_parameters",[i]),o&&(i=o),s&&t.block(s),a=t.buildUrl(i),yith_wcan_shortcodes.ajax_filters)return t.doingAjax=!0,t._doAjax(a).done((function(e){a=t.searchAlternativeUrl(e,a),t._beforeFilter(e,i),t.refreshFragments(n,l,e),t.pushUrlToHistory(a,e.pageTitle),s&&t.unblock(s),t._afterFilter(e,i),t.doingAjax=!1}));window.location=a},t._beforeFilter=function(t,i){e(document).trigger("yith-wcan-ajax-loading",[t,i])},t._cleanParam=function(e){let t=encodeURIComponent(e);return yith_wcan_shortcodes?.skip_sanitize&&(t=e),t},t._afterFilter=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")},t.buildUrl=function(i){let n=yith_wcan_shortcodes.query_param,l={},a=window.location,o=yith_wcan_shortcodes.base_url?yith_wcan_shortcodes.base_url:a?.origin+a?.pathname,s="";const r="object"==typeof i&&Object.keys(i).length;if(yith_wcan_shortcodes.session_param&&(o=o.replace(new RegExp("/"+yith_wcan_shortcodes.session_param+"/[^/]*/"),"")),r&&(l[n]=1),t.originalSearch){const i=t.originalSearch.replace("?","").split("&").reduce(((e,i)=>{const n=i.split("=");if(2===n.length){if(t.isFilterParam(n[0]))return e;e[n[0]]=n[1]}return e}),{});l=e.extend(l,i)}return r&&(l=e.extend(l,i)),s=Object.keys(l).reduce((function(e,i){const n=l[i];return n&&i?e+=t._cleanParam(i)+"="+t._cleanParam(n)+"&":e}),"?").replace(/&$/g,"").replace(/%2B/g,"+").replace(/%2C/g,","),s.length>1&&(o+=s),o},t.searchAlternativeUrl=function(e,t=""){let i,n=t;return-1===e.indexOf("yith_wcan:sharing_url")||(i=e.match(/<meta name="yith_wcan:sharing_url" content="([^"]*)">/),n=1 in i?i[1]:n),n},t.pushUrlToHistory=function(e,t){yith_wcan_shortcodes.change_browser_url&&!navigator.userAgent.match(/msie/i)&&window.history.pushState({pageTitle:t},"",e)},t.refreshFragments=function(t,i,n){const l=document.createElement("html"),a=e(l);if(l.innerHTML=n,t){let n,l=e(i),o=e(t);l.length&&(n=a.find(i),n.length&&l.replaceWith(n.first())),o.length&&(n=a.find(t),n.length&&o.replaceWith(n.first()))}else{const t=e(yith_wcan_shortcodes.content);t.length?t.replaceWith(a.find(yith_wcan_shortcodes.content)):e("body").replaceWith(a.find("body"))}e(document).trigger("yith_wcan_init_shortcodes")},t._doAjax=function(i,n){return t.xhr&&t.xhr.abort(),n=e.extend({url:i},n),t.xhr=e.ajax(n),t.xhr},t.block=function(t){if(void 0===e.fn.block)return;let i="#fff center center no-repeat";yith_wcan_shortcodes?.loader&&(i=`url('${yith_wcan_shortcodes.loader}') ${i}`),t.block({message:null,overlayCSS:{background:i,opacity:.7}})},t.unblock=function(t){void 0!==e.fn.unblock&&t.unblock()},t.isFilterParam=function(e){return-1!==["rating_filter","min_price","max_price","onsale_filter","instock_filter","orderby","product-page",yith_wcan_shortcodes.query_param].concat(yith_wcan_shortcodes.supported_taxonomies.map((e=>e.replace("pa_","filter_")))).indexOf(e)||(-1!==e.indexOf("filter_")||-1!==e.indexOf("query_type_"))},t._init(),t}function YITH_WCAN_Preset(e,t){const i=this;return i.preset="#"+e.attr("id"),i.$preset=e,i.target=i.$preset.data("target"),i.$target=!!i.target&&t(i.target),i.$filters=!1,i.$filterButtons=!1,i.modalElements={},i.activeFilters=!1,i.isMobile=!1,i.sliderTimeout=!1,i.originalFilters=null,i.dirty=!1,i._init=function(){i._regiterStatus(),i._initFilterButton(),i._initResponsive(),i._initFilters(),i._initActions(),i.$preset.data("preset",i).addClass("enhanced")},i._initFilters=function(){i.getFilters().each((function(){const e=t(this);i._initFilter(e)})),i.maybeShowClearAllFilters()},i._initFilterButton=function(){i.$filterButtons=i.$preset.find(".apply-filters"),i.$filterButtons.length&&i.$filterButtons.on("click",(e=>{e.preventDefault(),i.filter()})).hide()},i._initActions=function(){i.$preset.find("form").on("submit",(e=>{e.preventDefault()}))},i._initResponsive=function(){if(!yith_wcan_shortcodes.modal_on_mobile)return;const e=window.matchMedia(`(max-width: ${yith_wcan_shortcodes.mobile_media_query}px)`);t(window).on("resize",(function(){const t=!!e.matches;t!==i.isMobile&&(i.isMobile=t,i._afterLayoutChange())})).resize()},i._initFilter=function(e){const n=function(e){const n=t(this),l=n.closest(".yith-wcan-filter"),a=!!l.length&&"yes"===l.data("multiple"),o=n.closest(".filter-item"),s=o.length?l.find(".filter-item").not(o):[];if(o.is(".disabled")&&!o.is(".active"))return e.preventDefault(),!1;e.preventDefault(),s.length&&!a&&s.removeClass("active"),o.length&&o.toggleClass("active"),i.activeFilters=!1,i.maybeFilter(),i.maybeToggleClearAllFilters(),i.maybeToggleClearFilter(l)};e.find(".filter-item").not(".checkbox").not(".radio").on("click","a",(function(e){const i=t(this).closest(".filter-item");if(!t(e?.delegateTarget).is(i))return!1;n.call(this,e)})),e.find(":input").on("change",(function(e){const i=t(this),l=i.closest(".filter-item");if(l.is(".disabled")&&!l.is(".active"))return i.prop("checked",!1),!1;n.call(this,e)})),e.find("label > a").on("click",(function(e){const i=t(this),n=i.closest(".filter-item");if(e.preventDefault(),n.is(".disabled")&&!n.is(".active"))return!1;const l=i.parent().find(":input");(l.is('[type="radio"]')||l.is('[type="checkbox"]'))&&l.prop("checked",!l.prop("checked")),l.change()})),i._initTooltip(e),i._initPriceSlider(e),i._initDropdown(e),i._initCollapsable(e),i.maybeShowClearFilter(e),i.$preset?.hasClass("custom-style")&&i._initCustomInput(e)},i._initTooltip=function(e,i){e.find("[data-title]").each((function(){const e=t(this);!e.hasClass("tooltip-added")&&e.data("title")&&(e.on("mouseenter",(function(){let e=t(this),n=null,l=e.outerWidth(),a=0,o=0;if(!i||"top"!==i&&"right"!==i){const t=e.closest(".filter-item");i=t.hasClass("color")||t.hasClass("label")?"top":"right"}n=t("<span>",{class:"yith-wcan-tooltip",html:e.data("title")}),e.append(n),o=n.outerWidth()+6,n.outerWidth(o),a="top"===i?(l-o)/2:l+15,n.css({left:a.toFixed(0)+"px"}).fadeIn(200),e.addClass("with-tooltip")})).on("mouseleave",(function(){const e=t(this);e.find(".yith-wcan-tooltip").fadeOut(200,(function(){e.removeClass("with-tooltip").find(".yith-wcan-tooltip").remove()}))})),e.addClass("tooltip-added"))}))},i._initDropdown=function(e){const i=e.find("select.filter-dropdown");i.length&&(i.hasClass("select2-hidden-accessible")&&void 0!==t.fn.selectWoo&&i.selectWoo("destroy"),new YITH_WCAN_Dropdown(i,t,{paginate:!0,perPage:yith_wcan_shortcodes.terms_per_page}))},i._initPriceSlider=function(e){if(!e.hasClass("filter-price-slider"))return;const t=e.find(".price-slider"),n=t.find(".price-slider-min"),l=t.find(".price-slider-max"),a=parseFloat(t.data("min")),o=parseFloat(t.data("max")),s=parseFloat(n.val()),r=parseFloat(l.val()),c=parseFloat(t.data("step"));e.find(".price-slider-ui").ionRangeSlider({skin:"round",type:"double",min:a,max:o,step:c,from:s,to:r,min_interval:c,values_separator:" - ",prettify:e=>i.formatPrice(e),onChange:e=>{n.val(e.from),l.val(e.to)},onFinish:e=>{i.sliderTimeout&&clearTimeout(i.sliderTimeout),i.sliderTimeout=setTimeout((function(){i.maybeFilter()}),200)}})},i._initCollapsable=function(e){i._initTitleCollapsable(e),i._initHierarchyCollapsable(e)},i._initTitleCollapsable=function(e){const t=e.find(".collapsable");t.length&&i._initToggle(t,t,e.find(".filter-content"))},i._initHierarchyCollapsable=function(e){const n=e.find(".hierarchy-collapsable");if(!n.length)return;const l=e.find(".active");l.length&&(l.parents(".hierarchy-collapsable").removeClass("closed").addClass("opened"),l.hasClass("hierarchy-collapsable")&&yith_wcan_shortcodes.show_current_children&&l.removeClass("closed").addClass("opened")),n.each((function(){const e=t(this),n=t("<span/>",{class:"toggle-handle"});n.appendTo(e),i._initToggle(n,e,e.children("ul.filter-items"))}))},i._initToggle=function(e,t,i){t.hasClass("closed")&&i.hide(),e.off("click").on("click",(function(e){e.stopPropagation(),t.toggleClass("opened").toggleClass("closed"),i.slideToggle()}))},i._initCustomInput=function(e){e.find(":input").each((function(){let e,i=t(this),n=i.attr("type"),l=`${n}button`;"checkbox"!==n&&"radio"!==n||i.closest(`.${l}`).length||(i.is(":checked")&&(l+=" checked"),e=t("<span/>",{class:l}),i.wrap(e).on("change",(function(){const e=t(this);e.prop("checked")?e.parent().addClass("checked"):e.parent().removeClass("checked")})))}))},i._regiterStatus=function(){i.originalFilters=i.getFiltersProperties()},i._afterLayoutChange=function(){i.isMobile?(i.$preset.addClass("filters-modal").attr("role","dialog").attr("tabindex","-1").hide(),i._addCloseModalButton(),i._addApplyFiltersModalButton(),i._switchToCollapsables(),i.$filterButtons?.hide()):(i.$preset.removeClass("filters-modal").removeClass("open").removeAttr("role").removeAttr("tabindex").show(),t("body").css("overflow","auto").removeClass("yith-wcan-preset-modal-open"),i._removeCloseModalButton(),i._removeApplyFiltersModalButton(),i._switchBackCollapsables(),i.$filterButtons?.show())},i._addCloseModalButton=function(){const e=t("<a/>",{class:"close-button",html:"&times;","data-dismiss":"modal","aria-label":yith_wcan_shortcodes.labels.close});e.prependTo(i.$preset).on("click",i.closeModal),i.modalElements.closeButton=e},i._removeCloseModalButton=function(){i.modalElements?.closeButton?.remove()},i._addApplyFiltersModalButton=function(){const e=t("<button/>",{class:"apply-filters main-modal-button",html:yith_wcan_shortcodes.labels.show_results,"data-dismiss":"modal"});e.appendTo(i.$preset).on("click",(()=>{i.filter(),i.closeModal()})),i.modalElements.applyFiltersButton=e},i._removeApplyFiltersModalButton=function(){i.modalElements?.applyFiltersButton?.remove()},i._switchToCollapsables=function(){i.getFilters().each((function(){const e=t(this),n=e.find(".filter-title");n.length&&!n.hasClass("collapsable")&&(n.addClass("collapsable").data("disable-collapse",!0),i._initTitleCollapsable(e))}))},i._switchBackCollapsables=function(){i.getFilters().each((function(){const e=t(this),i=e.find(".filter-title");i.length&&i.hasClass("collapsable")&&i.data("disable-collapse")&&(i.removeClass("collapsable").removeData("disable-collapse",!0).off("click"),e.find(".filter-content").show())}))},i._closeAllCollapsables=function(){i.$filters.not(".no-title").not(((e,n)=>i.isFilterActive(t(n)))).find(".filter-content").hide().end().find(".filter-title").addClass("closed").removeClass("opened")},i.maybeRegisterStatusChange=function(){const e=i.getFiltersProperties(),t=JSON.stringify(e),n=JSON.stringify(i.originalFilters);i.dirty=t!==n},i.maybeFilter=function(){i.maybeRegisterStatusChange(),yith_wcan_shortcodes.instant_filters&&!i.isMobile?i.filter():yith_wcan_shortcodes.instant_filters||i.isMobile?i.isMobile&&i.dirty&&(i.$preset.addClass("with-filter-button"),i.modalElements.applyFiltersButton?.show()):i.dirty?i.$filterButtons?.show():i.$filterButtons?.hide()},i.filter=function(){window?.product_filter?.doFilter(i.getFiltersProperties(),i.target,i.preset)?.done((()=>{let e=t(i.preset);if(!i.isMobile&&e.length&&yith_wcan_shortcodes.scroll_top){let i=e.offset().top;if(yith_wcan_shortcodes.scroll_target){const e=t(yith_wcan_shortcodes.scroll_target);i=e.length?e.offset().top:i}t("body, html").animate({scrollTop:i-100})}i.originalFilters=i.getFiltersProperties(),i.dirty=!1})),i.isMobile&&(i.$preset.removeClass("with-filter-button"),i.modalElements.applyFiltersButton?.hide())},i.getFilters=function(){return!1===i.$filters&&(i.$filters=i.$preset.find(".yith-wcan-filter")),i.$filters},i.getActiveFilters=function(){return!1===i.activeFilters&&(i.activeFilters=i.getFiltersProperties()),i.activeFilters},i.isAnyFilterActive=function(){return!!Object.keys(i.getActiveFilters()).length},i.isFilterActive=function(e){let t,n;switch(e.data("filter-type")){case"tax":const i=e.find(".filter-dropdown");if(i.length){const e=i.val();t="object"==typeof e?!!e?.length:!!e;break}case"price_range":case"stock_sale":t=e.find(".filter-item").filter(".active").length;break;case"review":t=!!e.find("select").val();break;case"price_slider":const n=parseFloat(e.find(".price-slider").data("min")),l=parseFloat(e.find(".price-slider").data("max")),a=parseFloat(e.find(".price-slider-min").val()),o=parseFloat(e.find(".price-slider-max").val());t=a>n||o<l;break;case"orderby":t="menu_order"!==e.find(".filter-order-by").val();break;default:t=!1}return n=e.triggerHandler("yith_wcan_is_filter_active",t,i),t=void 0!==n?n:t,t},i.getFilterProperties=function(e){let n,l,a={};switch(e.data("filter-type")){case"tax":let i=e.find(".filter-dropdown"),n=[],o=e.data("taxonomy"),s=0===o.indexOf("filter"),r="yes"===e.data("multiple"),c=e.data("relation");if(i.length?r?n=i.val():n.push(i.val()):(l=e.find(".filter-item").filter(".active").children("a, label"),n=l.get().reduce((function(e,i){let n;return n=(i=t(i)).is("label")?i.find(":input").val():i.data("term-slug"),n?(e.push(n),e):e}),n)),r){const e=s||"and"!==c?",":"+";a[o]=n.join(e)}else a[o]=n.pop();s&&(a[o.replace("filter_","query_type_")]=c);break;case"review":a.rating_filter=e.find("select").val();break;case"price_range":l=e.find(".filter-item").filter(".active").first().children("a"),a.min_price=parseFloat(l.data("range-min")),a.max_price=parseFloat(l.data("range-max"));break;case"price_slider":a.min_price=parseFloat(e.find(".price-slider-min").val()),a.max_price=parseFloat(e.find(".price-slider-max").val());break;case"stock_sale":e.find(".filter-on-sale").is(".active")&&(a.onsale_filter=1),e.find(".filter-in-stock").is(".active")&&(a.instock_filter=1);break;case"orderby":a.orderby=e.find(".filter-order-by").val()}return n=e.triggerHandler("yith_wcan_filter_properties",a,i),a=void 0!==n?n:a,a},i.getFiltersProperties=function(){let e={};return i.getFilters().each((function(){const n=t(this);if(i.isFilterActive(n)){const t=i.getFilterProperties(n);e=i.mergeProperties(e,t,n)}})),e},i.getFiltersByProperties=function(e){return i.getFilters().filter((function(){const n=t(this);if(i.isFilterActive(n)){let t=i.getFilterProperties(n),l=!1;for(const i in e)if(void 0!==t[i]){l=!0;break}return l}return!1}))},i.maybeToggleClearFilter=function(e){i.isFilterActive(e)?i.maybeShowClearFilter(e):i.maybeHideClearFilter(e)},i.maybeToggleClearAllFilters=function(){i.isAnyFilterActive()?i.maybeShowClearAllFilters():i.maybeHideClearAllFilters()},i.maybeShowClearFilter=function(e){i.isFilterActive(e)&&yith_wcan_shortcodes.show_clear_filter&&(e.find(".clear-selection").remove(),t("<a/>",{class:"clear-selection",text:yith_wcan_shortcodes.labels.clear_selection,role:"button"}).prependTo(e.find(".filter-content")).on("click",(function(t){t.preventDefault(),i.deactivateFilter(e,!1,yith_wcan_shortcodes.instant_filters),i.maybeHideClearFilter(e),yith_wcan_shortcodes.instant_filters&&i.closeModal()})))},i.maybeShowClearAllFilters=function(){i.isAnyFilterActive()&&i.isMobile&&(i.$preset.find(".clear-selection").remove(),t("<a/>",{class:"clear-selection",text:yith_wcan_shortcodes.labels.clear_all_selections,role:"button"}).prependTo(i.$preset.find(".filters-container")).on("click",(function(e){e.preventDefault(),i.deactivateAllFilters(yith_wcan_shortcodes.instant_filters),i.maybeHideClearAllFilters(),yith_wcan_shortcodes.instant_filters&&i.closeModal()})))},i.maybeHideClearFilter=function(e){!i.isFilterActive(e)&&yith_wcan_shortcodes.show_clear_filter&&e.find(".clear-selection").remove()},i.maybeHideClearAllFilters=function(){i.isAnyFilterActive()||i.$preset.find(".filters-container").children(".clear-selection").remove()},i.deactivateFilter=function(e,n,l){const a=e.data("filter-type"),o=e.find(".filter-item"),s=o.filter(".active");switch(a){case"tax":const i=e.find(".filter-dropdown"),l=e.data("taxonomy");i.length?(n?i.find("option").each((function(){const e=t(this);e.val()===n[l]&&e.prop("selected",!1)})):i.find("option").prop("selected",!1),i.change()):n?s.each((function(){let e,i=t(this),a=i.children("label"),o=i.children("a");e=a.length?a.find(":input").val():o.data("term-slug"),e?.toString()===n[l]?.toString()&&(i.children("label").children("a").click(),i.removeClass("active"))})):(s.children("label").children("a").click(),s.removeClass("active"));break;case"price_slider":const a=e.find(".price-slider");e.find(".price-slider-min").val(a.data("min")),e.find(".price-slider-max").val(a.data("max")).change();break;case"orderby":e.find("select").val("menu_order");break;case"stock_sale":n?(n?.instock_filter&&e.find(".filter-in-stock").find(":input").prop("checked",!1).change().closest(".filter-item").removeClass("active"),n?.onsale_filter&&e.find(".filter-on-sale").find(":input").prop("checked",!1).change().closest(".filter-item").removeClass("active")):(e.find(".filter-in-stock").find(":input").prop("checked",!1).change(),e.find(".filter-on-sale").find(":input").prop("checked",!1).change(),o.removeClass("active"));break;case"review":e.find(".filter-dropdown").val("").change();break;default:o.removeClass("active")}i.activeFilters=!1,l&&i.filter()},i.deactivateAllFilters=function(e){i.getFilters().each((function(){const e=t(this);i.deactivateFilter(e)})),i.activeFilters=!1,e&&i.filter()},i.deactivateFilterByProperties=function(e,n){const l=i.getFiltersByProperties(e);l.length&&l.each((function(){const l=t(this);i.deactivateFilter(l,e,n)}))},i.openModal=function(){i.isMobile&&(i._closeAllCollapsables(),t("body").css("overflow","hidden").addClass("yith-wcan-preset-modal-open"),i.$preset.show(),setTimeout((()=>{i.$preset.addClass("open")}),100))},i.closeModal=function(){i.isMobile&&(i.$preset.removeClass("open"),setTimeout((()=>{i.$preset.hide(),t("body").css("overflow","auto").removeClass("yith-wcan-preset-modal-open")}),300))},i.formatPrice=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},i.mergeProperties=function(e,i,n){for(const t in i)if(i.hasOwnProperty(t)&&e[t]){switch(t){case"rating_filter":case"min_price":case"max_price":case"onsale_filter":case"instock_filter":case"orderby":e[t]=i[t];break;default:if(0===t.indexOf("query_type_"))e[t]=i[t];else{const n=0===t.indexOf("filter_"),l=n?",":"+";let a=e[t].replace(",",l)+l+i[t].replace(",",l);if(a=a.split(l).filter(((e,t,i)=>i.indexOf(e)===t)).join(l),e[t]=a,n){const n=t.replace("filter_","query_type_");e[n]="and",i[n]="and"}}}delete i[t]}return t.extend(e,i),e},i._init(),i}function YITH_WCAN_Filter_Labels(e,t){const i=this;return i.$label_set=e,i.$labels=!1,i._init=function(){i._initLabels(),i.$label_set.data("filter_labels",i).addClass("enhanced")},i._initLabels=function(){i.getLabels().each((function(){const e=t(this);i._initLabel(e)}))},i._initLabel=function(e){e.on("click",(()=>i.disableLabel(e)))},i.getLabels=function(){return!1===i.$labels&&(i.$labels=i.$label_set.find(".active-filter-label")),i.$labels},i.disableLabel=function(e){const i=e.data("filters");t(".yith-wcan-filters").each((function(){t(this).data("preset").deactivateFilterByProperties(i,!0)}))},i._init(),i}function YITH_WCAN_Reset_Button(e,t){const i=this;return i.$reset=e,i._init=function(){i.$reset.on("click",(function(e){e.preventDefault(),t(".yith-wcan-filters").each((function(){t(this).data("preset").deactivateAllFilters(!0)}))})),i.$reset.data("reset",i).addClass("enhanced")},i._init(),i}function YITH_WCAN_Modal_Opener(e,t){const i=this;return i.$button=e,i.preset=null,i.$preset=null,i.isMobile,i._init=function(){i._initPreset(),i._initResponsive(),i._initActions(),i.$button.data("modalOpener",i).addClass("enhanced")},i._initPreset=function(){let e,n=i.$button.data("target");e=t(n?`#${n}`:".yith-wcan-filters"),e.length&&(i.$preset=e.first(),i.preset=i.$preset.data("preset"))},i._initResponsive=function(){if(!yith_wcan_shortcodes.modal_on_mobile)return void i.$button.hide();const e=window.matchMedia(`(max-width: ${yith_wcan_shortcodes.mobile_media_query}px)`);t(window).on("resize",(function(){const t=!!e.matches;t!==i.isMobile&&(i.isMobile=t,i._afterLayoutChange())})).resize()},i._initActions=function(){i.$preset?.length&&i.$button.on("click",(function(e){e.preventDefault(),i.preset.openModal()}))},i._afterLayoutChange=function(){i.isMobile?i.$button.show():i.$button.hide()},i._init(),i}function YITH_WCAN_Dropdown(e,t,i){const n=this;return n.$origialSelect=e,n.$_main=null,n.$_label=null,n.$_dropdown=null,n.$_search=null,n.$_showMore=null,n.$_items=null,n.currentPage=1,n.options={},n._init=function(){if(!n.$origialSelect.is("select"))return;const e=n.$origialSelect.data("per_page"),l=n.$origialSelect.data("order"),a=n.$origialSelect.data("all-label"),o={showSearch:n.$origialSelect.data("show_search"),paginate:n.$origialSelect.data("paginate"),perPage:e||10,order:l||"ASC",getElements:null,labels:{emptyLabel:a||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}};n.options=t.extend(o,i),n._hideSelect(),n._initTemplate(),n._initActions(),n.$origialSelect.data("dropdown",n).addClass("enhanced")},n._hideSelect=function(){n.$origialSelect.hide()},n._initTemplate=function(){const e=t("<div/>",{class:"yith-wcan-dropdown closed"}),i=t("<div/>",{class:"dropdown-label",html:n.getLabel()}),l=t("<div>",{class:"dropdown-wrapper"}),a=t("<ul/>",{class:"matching-items filter-items"});l.append(a),e.append(i).append(l),n.options.showSearch&&n._initSearchTemplate(l),n.options.paginate&&n._initShowMoreTemplate(l),n.$origialSelect.after(e),n.$_main=e,n.$_label=i,n.$_dropdown=l,n.$_items=a},n._initSearchTemplate=function(e){const i=t("<div/>",{class:"search-field-container"}),l=t("<input/>",{name:"s",class:"search-field",type:"search",placeholder:n.options.labels.searchPlaceholder});i.append(l).prependTo(e),n.$_search=l},n._initShowMoreTemplate=function(e){const i=t("<a/>",{class:"show-more",text:n.options.labels.showMore.replace("%d",n.options.perPage)});i.on("click",n.loadNextPage).hide(),e.append(i),n.$_showMore=i},n._initActions=function(){n.$_main.on("click",(e=>{e.stopPropagation(),n.toggleDropdown()})),n.$_dropdown.on("click",(e=>{e.stopPropagation()})),n.$_search?.on("keyup search",(()=>{n._populateItems()})),n.$_items.on("change",":input",(function(){let e=t(this).closest("li"),i=e.data("value"),l=!1;if(e.hasClass("disabled")&&!n.isValueSelected(i))return!1;e.toggleClass("active"),l=e.hasClass("active"),n._changeItemStatus(i,l)})),n.$_items.on("click","li:not(.checkbox) a",(function(e){let i=t(this).closest("li"),l=i.data("value"),a=!1;if(e.preventDefault(),i.hasClass("disabled")&&!n.isValueSelected(l))return!1;i.toggleClass("active"),a=i.hasClass("active"),a&&i.siblings().removeClass("active"),n._changeItemStatus(l,a)})),n.$_items.on("click","label > a",(function(e){const i=t(this).parent().find(":input");e.preventDefault(),(i.is('[type="radio"]')||i.is('[type="checkbox"]'))&&i.prop("checked",!i.prop("checked")),i.change()})),n.$origialSelect.on("change",((e,i)=>{i||(n.$_items.find("li").each((function(){const e=t(this).data("value");n.isValueSelected(e)?n._selectItem(e):n._deselectItem(e)})),n.updateLabel())})),t(document).on("click",n.closeDropdown)},n.openDropdown=function(){n.$_main.addClass("open").removeClass("closed"),n._afterDropdownOpen()},n.closeDropdown=function(){n.$_main.removeClass("open").addClass("closed")},n._closeOtherDropdowns=function(){t(document).find("select.enhanced").filter((function(e,i){const l=t(i);return!!l.data("dropdown")&&!l.is(n.$origialSelect)})).each((function(){t(this).data("dropdown").closeDropdown()}))},n.toggleDropdown=function(){n.$_main.toggleClass("open").toggleClass("closed"),n.$_main.hasClass("open")&&n._afterDropdownOpen()},n._afterDropdownOpen=function(){n._closeOtherDropdowns(),n.$_search?.length&&n.$_search.val(""),n._populateItems()},n.getMatchingElements=function(e,i){let l,a=[],o=n.getOptions();return l=new Promise((l=>{o.each((function(){const i=t(this),n=i.val(),l=i.html(),o=new RegExp(".*"+e+".*","i");(!e||o.test(n)||o.test(l))&&a.push({value:n,label:l})})),n.options.getElements?n.options.getElements(e).then((e=>{e&&(e=e.reduce(((e,t,i)=>(e.push({label:i,value:t}),e)),[]),a=t.extend(a,e)),l(n._formatItems(a,i))})):l(n._formatItems(a,i))})),l},n._formatItems=function(e,t){let i=[],l=!1;return e.filter((e=>-1===i.indexOf(e.value)&&(i.push(e.value),!0))).sort(((e,t)=>{const i="ASC"===n.options.order?1:-1;return e.value<t.value?-1*i:e.value>t.value?i:0})),t&&(l=t<Object.keys(e).length,e=e.slice(0,t)),{items:e,hasMore:l}},n._generateItem=function(e,i){let l,a=n.isValueSelected(e),o=n.getOptionByValue(e),s=t("<li/>",{"data-value":e,class:o.length?o.attr("class"):""});if(o.length){const e=o.data("template"),t=o.data("count");i=e||i,t&&(i+=t)}if(l=t("<a/>",{href:o.length?o.data("filter_url"):"#",html:i,"data-title":o.length?o.data("title"):""}),n.$origialSelect.prop("multiple")){const i=t("<input/>",{type:"checkbox",value:e}),n=t("<label>");i.prop("checked",a),n.prepend(i).append(l),s.append(n).addClass("checkbox")}else s.append(l);return a?s.addClass("active"):s.removeClass("active"),s},n._populateItems=function(e){let i,l=n.$_search?.length?n.$_search.val():"",a=n.options.paginate?n.options.perPage:0;i=(e=e?parseInt(e):1)*a,n.getMatchingElements(l,i).then((function(i){let l=i.items,a=[],o=!1;if(n._emptyItems(),n._hideLoadMore(),l.length){for(const e of l)""===e.value?a.unshift(n._generateItem(e.value,e.label)):a.push(n._generateItem(e.value,e.label));n.currentPage=e,o=i.hasMore}else a.push(t("<li/>",{text:n.options.labels.noItemsFound})),n.currentPage=1;n.$_items.append(a),t(document).trigger("yith_wcan_dropdown_updated"),o&&n._showLoadMore()}))},n.loadNextPage=function(){const e=n.currentPage+1;n._populateItems(e)},n._selectItem=function(e){return n._changeItemStatus(e,!0)},n._deselectItem=function(e){return n._changeItemStatus(e,!1)},n._changeItemStatus=function(e,t){const i=n.$origialSelect.find(`option[value="${e}"]`);return!!i.length&&(i.prop("selected",t),n.closeDropdown(),n.updateLabel(),n.$origialSelect.trigger("change",[!0]),!0)},n._emptyItems=function(){n.$_items.html("")},n._showLoadMore=function(){n.$_showMore.show()},n._hideLoadMore=function(){n.$_showMore.hide()},n.getLabel=function(){return n.hasSelectedValues()?n.getSelectedLabels().join(", "):n.options.labels.emptyLabel},n.updateLabel=function(){const e=n.getLabel();n.$_label.html(e)},n.getOptions=function(){return n.$origialSelect.find("option")},n.hasSelectedValues=function(){return n.getSelectedOptions().length},n.isValueSelected=function(e){return-1!==n.getSelectedValues().indexOf(e)},n.getSelectedOptions=function(){return n.$origialSelect.find("option").filter(":selected")},n.getOptionByValue=function(e){return n.$origialSelect.find(`option[value="${e}"]`)},n.getSelectedLabels=function(){const e=[];return n.getSelectedOptions().each((function(){let i=t(this),n=i.data("template");n=n||i.html().replace(/\([0-9]*\)/,""),e.push(n)})),e},n.getSelectedValues=function(){const e=[];return n.getSelectedOptions().each((function(){e.push(t(this).val())})),e},n.destroy=function(){},n._init(),n}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 YITH_WCAN_Preset(e(this),e)})),e(".yith-wcan-active-filters").not(".enhanced").each((function(){new YITH_WCAN_Filter_Labels(e(this),e)})),e(".yith-wcan-reset-filters").not(".enhanced").each((function(){new YITH_WCAN_Reset_Button(e(this),e)})),e(".yith-wcan-filters-opener").not(".enhanced").each((function(){new YITH_WCAN_Modal_Opener(e(this),e)}))})).trigger("yith_wcan_init_shortcodes"),globalThis.product_filter=new YITH_WCAN_Filter(e)}));
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}))})();
assets/scss/admin.scss CHANGED
@@ -33,25 +33,28 @@ $item_row_hover_border: #c4cfd3;
33
  }
34
 
35
  @mixin show_on_hover {
 
36
  background: #fff;
 
37
  border-radius: 100%;
38
  color: #20659d;
39
- display: none;
40
  float: right;
41
- font-size: 21px;
42
  height: 35px;
43
  margin-right: 8px;
 
 
 
44
  width: 35px;
45
  justify-content: center;
46
- align-items: center;
47
- box-shadow: 0 0 10px 0 rgba(167, 217, 236, 0.6);
48
 
49
  i {
50
- font-size: 21px;
51
  }
52
 
53
  &:hover {
54
- box-shadow: 0 0 10px 0 rgba(167, 217, 236, 1);
55
  }
56
 
57
  &.delete {
@@ -186,22 +189,26 @@ $item_row_hover_border: #c4cfd3;
186
  position: relative;
187
 
188
  input {
189
- background: #fff;
 
 
190
  cursor: pointer;
191
  }
192
 
193
  &:after {
194
  color: #9d9d9d;
195
- content: 'link';
196
- font-family: 'Material Icons';
197
- font-size: 21px;
198
  position: absolute;
199
- right: 10px;
200
- top: 6px;
201
  }
202
  }
203
 
204
  &.actions {
 
 
205
  a {
206
  float: right;
207
 
@@ -219,7 +226,8 @@ $item_row_hover_border: #c4cfd3;
219
 
220
  &:hover td {
221
  &.actions a.show-on-hover {
222
- display: flex;
 
223
  }
224
  }
225
  }
@@ -352,6 +360,23 @@ $item_row_hover_border: #c4cfd3;
352
  font-size: 14px;
353
  }
354
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
355
  .yith-toggle-row {
356
  @include item_row;
357
 
@@ -367,6 +392,7 @@ $item_row_hover_border: #c4cfd3;
367
  .yith-toggle-title {
368
  cursor: pointer;
369
  padding: 20px 15px;
 
370
 
371
  .no-title {
372
  color: #757575;
@@ -387,7 +413,8 @@ $item_row_hover_border: #c4cfd3;
387
  }
388
 
389
  &:hover .show-on-hover {
390
- display: flex;
 
391
  }
392
 
393
  .yith-plugin-fw-field-wrapper {
@@ -401,6 +428,10 @@ $item_row_hover_border: #c4cfd3;
401
  .yith-toggle-content-row {
402
  width: 100%;
403
 
 
 
 
 
404
  & > label {
405
  width: 180px;
406
  }
@@ -412,6 +443,10 @@ $item_row_hover_border: #c4cfd3;
412
 
413
  span.description {
414
  max-width: 100%;
 
 
 
 
415
  }
416
 
417
  .add-price-range {
@@ -610,6 +645,7 @@ $item_row_hover_border: #c4cfd3;
610
  }
611
  }
612
 
 
613
  .add-new-filter {
614
  background-color: $item_row_background;
615
  border: 1px solid $item_row_border;
@@ -626,6 +662,7 @@ $item_row_hover_border: #c4cfd3;
626
  }
627
  }
628
 
 
629
  .load-more-filters {
630
  display: block;
631
  font-weight: 700;
@@ -640,12 +677,50 @@ $item_row_hover_border: #c4cfd3;
640
  }
641
  }
642
 
 
643
  #icl_div {
644
  background-color: #f7f7f7;
645
  padding: 20px 15px;
646
  border-radius: 4px;
647
  margin: 20px 0;
648
  }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
649
  }
650
 
651
  /* === Widget Area === */
33
  }
34
 
35
  @mixin show_on_hover {
36
+ align-items: center;
37
  background: #fff;
38
+ box-shadow: 0px 2px 7px rgb(170 198 222 / 50%);
39
  border-radius: 100%;
40
  color: #20659d;
41
+ display: flex;
42
  float: right;
43
+ font-size: 17px;
44
  height: 35px;
45
  margin-right: 8px;
46
+ opacity: 0;
47
+ transform: translate( 0, -70px );
48
+ transition: all ease .3s;
49
  width: 35px;
50
  justify-content: center;
 
 
51
 
52
  i {
53
+ font-size: 17px;
54
  }
55
 
56
  &:hover {
57
+ background: #f3f3f3;
58
  }
59
 
60
  &.delete {
189
  position: relative;
190
 
191
  input {
192
+ background: #f1f1f1;
193
+ color: #999;
194
+ border: 1px dashed #ccc;
195
  cursor: pointer;
196
  }
197
 
198
  &:after {
199
  color: #9d9d9d;
200
+ content: '\f101';
201
+ font-family: 'yith-icon';
202
+ font-size: 14px;
203
  position: absolute;
204
+ right: 15px;
205
+ top: 10px;
206
  }
207
  }
208
 
209
  &.actions {
210
+ overflow: hidden;
211
+
212
  a {
213
  float: right;
214
 
226
 
227
  &:hover td {
228
  &.actions a.show-on-hover {
229
+ opacity: 1;
230
+ transform: none;
231
  }
232
  }
233
  }
360
  font-size: 14px;
361
  }
362
 
363
+ // currency label
364
+ [data-currency] + .currency {
365
+ margin-left: 10px;
366
+ }
367
+
368
+ // validation
369
+ input.validation-error {
370
+ border-color: red!important;
371
+ }
372
+
373
+ input.validation-error + span.validation-message {
374
+ color: red;
375
+ display: block;
376
+ margin-top: 5px;
377
+ }
378
+
379
+ // filters row
380
  .yith-toggle-row {
381
  @include item_row;
382
 
392
  .yith-toggle-title {
393
  cursor: pointer;
394
  padding: 20px 15px;
395
+ overflow: hidden;
396
 
397
  .no-title {
398
  color: #757575;
413
  }
414
 
415
  &:hover .show-on-hover {
416
+ opacity: 1;
417
+ transform: none;
418
  }
419
 
420
  .yith-plugin-fw-field-wrapper {
428
  .yith-toggle-content-row {
429
  width: 100%;
430
 
431
+ &.disabled {
432
+ display: none!important;
433
+ }
434
+
435
  & > label {
436
  width: 180px;
437
  }
443
 
444
  span.description {
445
  max-width: 100%;
446
+
447
+ & > span {
448
+ display: block;
449
+ }
450
  }
451
 
452
  .add-price-range {
645
  }
646
  }
647
 
648
+ // add new filter button
649
  .add-new-filter {
650
  background-color: $item_row_background;
651
  border: 1px solid $item_row_border;
662
  }
663
  }
664
 
665
+ // load more filters button
666
  .load-more-filters {
667
  display: block;
668
  font-weight: 700;
677
  }
678
  }
679
 
680
+ // wpml div
681
  #icl_div {
682
  background-color: #f7f7f7;
683
  padding: 20px 15px;
684
  border-radius: 4px;
685
  margin: 20px 0;
686
  }
687
+
688
+ // success message
689
+ .preset-saved {
690
+ background: var(--yith-success-lightest)!important;
691
+ border-radius: 5px;
692
+ border: 1px solid var(--yith-success-light);
693
+ box-shadow: 1px 1px 2px var(--yith-success-lighter);
694
+ color: var(--yith-content-text);
695
+ font-size: 14px;
696
+ margin: 15px 0 20px!important;
697
+ padding: 15px 40px 15px 45px!important;
698
+ position: relative;
699
+ text-align: left;
700
+
701
+ p {
702
+ background: none!important;
703
+ font-weight: 600!important;
704
+ margin: 0;
705
+ padding: 0!important;
706
+
707
+ &:before {
708
+ display: none!important;
709
+ }
710
+ }
711
+
712
+ &:before {
713
+ color: var(--yith-success);
714
+ content: "\e921";
715
+ font-family: yith-icon;
716
+ font-weight: 400;
717
+ font-size: 21px;
718
+ left: 13px;
719
+ position: absolute;
720
+ top: 50%;
721
+ transform: translateY(-50%);
722
+ }
723
+ }
724
  }
725
 
726
  /* === Widget Area === */
assets/scss/shortcodes.scss CHANGED
@@ -11,6 +11,7 @@ $border-radius: 4px;
11
  $disabled-color: #B4B4B4;
12
  $star-color: #e3a405;
13
  $light-grey: #eee;
 
14
 
15
  $z-index: 1001; // value is this high since modal must be on top of Proteo's sticky header
16
 
@@ -58,20 +59,24 @@ $z-index: 1001; // value is this high since modal must be on top of Proteo's sti
58
  @mixin pretty_scrollbar {
59
  &::-webkit-scrollbar {
60
  -webkit-appearance: none;
61
- width: 7px;
62
  }
63
 
64
  &::-webkit-scrollbar-thumb {
 
65
  border-radius: $border-radius;
66
- background-color: $border-color;
67
  }
68
  }
69
 
70
  @mixin close_button {
71
  background-color: $accent-color;
 
 
 
 
72
  border-radius: 100%;
73
  color: #fff;
74
- content: "\d7";
75
  font-size: 16px;
76
  height: 15px;
77
  line-height: 15px;
@@ -123,6 +128,11 @@ $z-index: 1001; // value is this high since modal must be on top of Proteo's sti
123
  top: calc(50% - 5px);
124
  width: 0;
125
  }
 
 
 
 
 
126
  }
127
 
128
  @mixin single_column( $columns_number ) {
@@ -165,6 +175,10 @@ $z-index: 1001; // value is this high since modal must be on top of Proteo's sti
165
  &:after {
166
  right: 5px;
167
  }
 
 
 
 
168
  }
169
  }
170
 
@@ -246,6 +260,34 @@ $z-index: 1001; // value is this high since modal must be on top of Proteo's sti
246
  position: relative;
247
  }
248
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
249
  .term-color {
250
  border: 2px solid transparent;
251
  border-radius: var( --yith-wcan-color_swatches_border_radius, $border-radius );
@@ -306,6 +348,10 @@ $z-index: 1001; // value is this high since modal must be on top of Proteo's sti
306
  line-height: 1.4;
307
  text-align: center;
308
  }
 
 
 
 
309
  }
310
 
311
  &.active.color {
@@ -313,7 +359,7 @@ $z-index: 1001; // value is this high since modal must be on top of Proteo's sti
313
  border-color: $accent-color;
314
  }
315
 
316
- & > a:after {
317
  @include close_button;
318
  }
319
  }
@@ -333,7 +379,7 @@ $z-index: 1001; // value is this high since modal must be on top of Proteo's sti
333
  height: 100%;
334
  }
335
 
336
- &.active.with-image > a {
337
  position: relative;
338
 
339
  &:after {
@@ -372,6 +418,44 @@ $z-index: 1001; // value is this high since modal must be on top of Proteo's sti
372
  }
373
  }
374
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
375
  .term-image {
376
  display: inline-block;
377
  font-size: 0;
@@ -387,6 +471,10 @@ $z-index: 1001; // value is this high since modal must be on top of Proteo's sti
387
  display: block;
388
  font-size: .8rem;
389
  }
 
 
 
 
390
  }
391
 
392
  // hierarchy toggle
@@ -444,6 +532,10 @@ $z-index: 1001; // value is this high since modal must be on top of Proteo's sti
444
  }
445
  }
446
 
 
 
 
 
447
  // tooltips
448
  .yith-wcan-tooltip {
449
  @include tooltip;
@@ -482,10 +574,43 @@ $z-index: 1001; // value is this high since modal must be on top of Proteo's sti
482
 
483
  // price slider
484
  .price-slider {
485
- padding: 20px 10px;
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
486
 
487
- .irs {
488
- font-family: inherit;
 
 
 
 
 
 
 
489
  }
490
 
491
  .irs-bar,
@@ -843,6 +968,112 @@ $z-index: 1001; // value is this high since modal must be on top of Proteo's sti
843
  width: 100%;
844
  }
845
  }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
846
  }
847
 
848
  body.admin-bar .yith-wcan-filters.filters-modal {
@@ -866,6 +1097,12 @@ body.yith-wcan-preset-modal-open:after {
866
  }
867
  }
868
 
 
 
 
 
 
 
869
  @media( max-width: 782px ) {
870
  body.admin-bar .yith-wcan-filters.filters-modal {
871
  top: 46px;
11
  $disabled-color: #B4B4B4;
12
  $star-color: #e3a405;
13
  $light-grey: #eee;
14
+ $background-gray: #f0f0f0;
15
 
16
  $z-index: 1001; // value is this high since modal must be on top of Proteo's sticky header
17
 
59
  @mixin pretty_scrollbar {
60
  &::-webkit-scrollbar {
61
  -webkit-appearance: none;
62
+ width: 6px;
63
  }
64
 
65
  &::-webkit-scrollbar-thumb {
66
+ background-color: $accent-color;
67
  border-radius: $border-radius;
 
68
  }
69
  }
70
 
71
  @mixin close_button {
72
  background-color: $accent-color;
73
+ background-image: url('../images/close.svg');
74
+ background-position: center;
75
+ background-repeat: no-repeat;
76
+ background-size: 60%;
77
  border-radius: 100%;
78
  color: #fff;
79
+ content: '';
80
  font-size: 16px;
81
  height: 15px;
82
  line-height: 15px;
128
  top: calc(50% - 5px);
129
  width: 0;
130
  }
131
+
132
+ & > img {
133
+ min-width: 40px;
134
+ height: auto;
135
+ }
136
  }
137
 
138
  @mixin single_column( $columns_number ) {
175
  &:after {
176
  right: 5px;
177
  }
178
+
179
+ &.collapsable.closed + .filter-content {
180
+ display: none;
181
+ }
182
  }
183
  }
184
 
260
  position: relative;
261
  }
262
 
263
+ &.no-color,
264
+ &.no-image {
265
+ font-size: 1rem;
266
+ text-align: center;
267
+ }
268
+
269
+ &.label-below,
270
+ &.label-right {
271
+ font-size: 1rem;
272
+ }
273
+
274
+ &.label-right {
275
+ display: block;
276
+ margin: 0 0 10px;
277
+ width: 100%;
278
+
279
+ .term-color,
280
+ .term-image {
281
+ margin-bottom: 0;
282
+ margin-right: 10px;
283
+ }
284
+
285
+ .term-label {
286
+ display: inline-block;
287
+ font-size: 1em;
288
+ }
289
+ }
290
+
291
  .term-color {
292
  border: 2px solid transparent;
293
  border-radius: var( --yith-wcan-color_swatches_border_radius, $border-radius );
348
  line-height: 1.4;
349
  text-align: center;
350
  }
351
+
352
+ &.label-hide .term-label {
353
+ display: none;
354
+ }
355
  }
356
 
357
  &.active.color {
359
  border-color: $accent-color;
360
  }
361
 
362
+ &:not(.no-color):not(.no-image):not(.label-right) > a:after {
363
  @include close_button;
364
  }
365
  }
379
  height: 100%;
380
  }
381
 
382
+ &.active.with-image:not(.label-right) > a {
383
  position: relative;
384
 
385
  &:after {
418
  }
419
  }
420
 
421
+ &.label-right.with-image {
422
+ background: none;
423
+ box-shadow: none;
424
+ display: block;
425
+ margin: 0 0 10px;
426
+ padding: 0;
427
+ text-align: left;
428
+ width: 100%;
429
+
430
+ & > a {
431
+ display: inline-block;
432
+ color: $anchor-color;
433
+
434
+ &:hover {
435
+ color: var( --yith-wcan-anchors_style_text_hover, $default-accent );
436
+ }
437
+
438
+ &.active {
439
+
440
+ }
441
+ }
442
+
443
+ &.active > a {
444
+ color: var( --yith-wcan-anchors_style_text_active, $default-accent );
445
+ }
446
+
447
+ .term-image {
448
+ margin-right: 10px;
449
+ max-width: 70px;
450
+ vertical-align: middle;
451
+ }
452
+
453
+ .term-label {
454
+ display: inline-block;
455
+ vertical-align: middle;
456
+ }
457
+ }
458
+
459
  .term-image {
460
  display: inline-block;
461
  font-size: 0;
471
  display: block;
472
  font-size: .8rem;
473
  }
474
+
475
+ &.label-hide.with-image .term-label {
476
+ display: none;
477
+ }
478
  }
479
 
480
  // hierarchy toggle
532
  }
533
  }
534
 
535
+ &.label-design .filter-items {
536
+ font-size: 0;
537
+ }
538
+
539
  // tooltips
540
  .yith-wcan-tooltip {
541
  @include tooltip;
574
 
575
  // price slider
576
  .price-slider {
577
+ &.both {
578
+ padding: 20px 10px;
579
+
580
+ &:after {
581
+ content: '';
582
+ display: block;
583
+ clear: both;
584
+ }
585
+
586
+ .price-slider-min,
587
+ .price-slider-max {
588
+ min-width: 0;
589
+ width: 50px;
590
+ }
591
+
592
+ .irs {
593
+ margin-bottom: 20px;
594
+ }
595
+
596
+ .price-slider-min {
597
+ float: left;
598
+ }
599
+
600
+ .price-slider-max {
601
+ float: right;
602
+ }
603
+ }
604
 
605
+ &.fields {
606
+ padding: 20px 0;
607
+
608
+ .price-slider-min,
609
+ .price-slider-max {
610
+ min-width: 0;
611
+ width: 70px;
612
+ margin: 0 5px;
613
+ }
614
  }
615
 
616
  .irs-bar,
968
  width: 100%;
969
  }
970
  }
971
+
972
+ // custom appearance for horizontal layout
973
+ &.horizontal:not(.filters-modal) {
974
+ text-align: left;
975
+
976
+ .yith-wcan-filter {
977
+ display: inline-block;
978
+ margin-bottom: 8px;
979
+ min-width: 200px;
980
+ position: relative;
981
+ vertical-align: top;
982
+
983
+ h4.collapsable {
984
+ border: 1px solid $border-color;
985
+ border-radius: $border-radius;
986
+ font-weight: 400;
987
+ margin-top: 0;
988
+ margin-bottom: 10px;
989
+ margin-right: 15px;
990
+ padding: 10px 40px 10px 20px;
991
+
992
+ &:after {
993
+ right: 15px;
994
+ }
995
+
996
+ span.filter-count {
997
+ border: 2px solid $accent-color;
998
+ padding: 0 5px;
999
+ font-size: .8em;
1000
+ margin: 0 10px;
1001
+ }
1002
+ }
1003
+
1004
+ h4.collapsable.opened,
1005
+ h4.collapsable.opened + .filter-content {
1006
+ border: 1px solid rgba( var( --yith-wcan-filters_colors_accent_r, 73 ), var( --yith-wcan-filters_colors_accent_g, 139 ), var( --yith-wcan-filters_colors_accent_b, 162 ), .3 );
1007
+ box-shadow: 0 0 7px 0 rgba( var( --yith-wcan-filters_colors_accent_r, 73 ), var( --yith-wcan-filters_colors_accent_g, 139 ), var( --yith-wcan-filters_colors_accent_b, 162 ), .3 );
1008
+ }
1009
+
1010
+ h4.collapsable + .filter-content {
1011
+ background-color: #fff;
1012
+ border: 1px solid $border-color;
1013
+ border-radius: $border-radius;
1014
+ min-width: 300px;
1015
+ position: absolute;
1016
+ padding: 20px;
1017
+ width: 100%;
1018
+ z-index: $z-index;
1019
+
1020
+ .filter-content-footer {
1021
+ background-color: $background-gray;
1022
+ margin: 20px -20px -20px;
1023
+ padding: 15px 20px;
1024
+ text-align: right;
1025
+
1026
+ .apply-filters {
1027
+ margin: 0;
1028
+ }
1029
+
1030
+ .clear-selection {
1031
+ background: #CBCBCB; // To be removed
1032
+ border-color: #CBCBCB; // To be removed
1033
+ color: #434343; // To be removed
1034
+
1035
+ margin-bottom: 0;
1036
+ margin-right: 15px;
1037
+ }
1038
+ }
1039
+ }
1040
+
1041
+ // filter items
1042
+ .filter-items {
1043
+ max-height: 200px;
1044
+ overflow-y: scroll;
1045
+ overflow-x: hidden;
1046
+ padding: 5px 2px 0 0;
1047
+
1048
+ @include pretty_scrollbar;
1049
+ }
1050
+
1051
+ &.label-design .filter-items {
1052
+ padding-top: 8px;
1053
+ }
1054
+
1055
+ // terms dropdown
1056
+ .dropdown-wrapper {
1057
+ .search-field-container {
1058
+ margin-bottom: 20px;
1059
+
1060
+ input {
1061
+ width: 100%;
1062
+ }
1063
+ }
1064
+
1065
+ .matching-items {
1066
+ a {
1067
+ cursor: pointer;
1068
+ }
1069
+ }
1070
+ }
1071
+ }
1072
+
1073
+ form > .apply-filters {
1074
+ margin-top: 0;
1075
+ }
1076
+ }
1077
  }
1078
 
1079
  body.admin-bar .yith-wcan-filters.filters-modal {
1097
  }
1098
  }
1099
 
1100
+ @media( max-width: 991px ) {
1101
+ body.filters-in-modal .yith-wcan-filters {
1102
+ display: none;
1103
+ }
1104
+ }
1105
+
1106
  @media( max-width: 782px ) {
1107
  body.admin-bar .yith-wcan-filters.filters-modal {
1108
  top: 46px;
includes/class.yith-wcan-admin.php CHANGED
@@ -108,12 +108,15 @@ if ( ! class_exists( 'YITH_WCAN_Admin' ) ) {
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
  ),
112
  'labels' => array(
113
  'no_title' => _x( '&lt; no title &gt;', '[Admin] Message shown when filter has empty title', 'yith-woocommerce-ajax-navigation' ),
114
  'upload_media' => _x( 'Select media you want to use', '[Admin] Media library title, when selecting images', 'yith-woocommerce-ajax-navigation' ),
115
  'confirm_media' => _x( 'Use this media', '[Admin] Media library confirm button, when selecting images', 'yith-woocommerce-ajax-navigation' ),
116
  ),
 
 
117
  )
118
  );
119
  }
@@ -191,7 +194,7 @@ if ( ! class_exists( 'YITH_WCAN_Admin' ) ) {
191
  $args = array(
192
  'create_menu_page' => true,
193
  'parent_slug' => '',
194
- 'page_title' => _x( 'Ajax Product Filter', '[Admin] Menu title', 'yith-woocommerce-ajax-navigation' ),
195
  'menu_title' => _x( 'Ajax Product Filter', '[Admin] Menu title', 'yith-woocommerce-ajax-navigation' ),
196
  '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' ),
197
  'capability' => apply_filters( 'yith_wcan_panel_capability', 'manage_woocommerce' ),
@@ -203,6 +206,23 @@ if ( ! class_exists( 'YITH_WCAN_Admin' ) ) {
203
  'plugin_slug' => YITH_WCAN_SLUG,
204
  'plugin-url' => YITH_WCAN_URL,
205
  'page' => $this->_panel_page,
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
206
  );
207
 
208
  $this->_panel = new YIT_Plugin_Panel_WooCommerce( $args );
@@ -359,7 +379,7 @@ if ( ! class_exists( 'YITH_WCAN_Admin' ) ) {
359
  */
360
  public function filter_terms_field( $field ) {
361
  $id = isset( $field['index'] ) ? $field['index'] : 0;
362
- $terms = isset( $field['value'] ) ? $field['value'] : array();
363
  $taxonomy = ! empty( $field['filter'] ) ? $field['filter']->get_taxonomy() : '';
364
 
365
  include( YITH_WCAN_DIR . 'templates/admin/preset-filter-terms.php' );
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' ),
119
+ 'supported_designs' => YITH_WCAN_Filter_Factory::get_supported_designs(),
120
  )
121
  );
122
  }
194
  $args = array(
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' ),
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' ),
212
+ 'url' => array(
213
+ 'en' => 'https://www.youtube.com/embed/o-ZhSVR4HvU',
214
+ 'it' => 'https://www.youtube.com/embed/cgQo2Cxux4M',
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 );
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' );
includes/class.yith-wcan-filter-factory.php CHANGED
@@ -74,6 +74,24 @@ if ( ! class_exists( 'YITH_WCAN_Filter_Factory' ) ) {
74
  );
75
  }
76
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
77
  /**
78
  * Get all supported orders for products
79
  *
74
  );
75
  }
76
 
77
+ /**
78
+ * Get supported designs
79
+ *
80
+ * @return array Array of supported designs (id=>name)
81
+ */
82
+ public static function get_supported_designs() {
83
+ return apply_filters(
84
+ 'yith_wcan_supported_filter_designs',
85
+ array(
86
+ 'checkbox' => _x( 'Checkbox', '[Admin] Filter edit form', 'yith-woocommerce-ajax-navigation' ),
87
+ 'select' => _x( 'Select', '[Admin] Filter edit form', 'yith-woocommerce-ajax-navigation' ),
88
+ 'text' => _x( 'Text', '[Admin] Filter edit form', 'yith-woocommerce-ajax-navigation' ),
89
+ 'color' => _x( 'Color Swatches', '[Admin] Filter edit form', 'yith-woocommerce-ajax-navigation' ),
90
+ 'label' => _x( 'Label', '[Admin] Filter edit form', 'yith-woocommerce-ajax-navigation' ),
91
+ )
92
+ );
93
+ }
94
+
95
  /**
96
  * Get all supported orders for products
97
  *
includes/class.yith-wcan-filter.php CHANGED
@@ -69,32 +69,7 @@ if ( ! class_exists( 'YITH_WCAN_Filter' ) ) {
69
  public function __construct( $filter = array() ) {
70
  $filter = wp_parse_args(
71
  $filter,
72
- array(
73
- 'id' => '',
74
- 'preset_id' => '',
75
- 'title' => _x( 'New filter', '[Admin] Default filter title', 'yith-woocommerce-ajax-navigation' ),
76
- 'terms' => array(),
77
- 'price_ranges' => array(),
78
- 'filter_design' => 'checkbox',
79
- 'column_number' => 4,
80
- 'show_toggle' => 'no',
81
- 'show_search' => 'yes',
82
- 'toggle_style' => 'opened',
83
- 'order_by' => 'name',
84
- 'order' => 'asc',
85
- 'show_count' => 'no',
86
- 'hierarchical' => 'no',
87
- 'multiple' => 'no',
88
- 'relation' => 'and',
89
- 'adoptive' => 'hide',
90
- 'enabled' => 'yes',
91
- 'price_slider_min' => 0,
92
- 'price_slider_max' => 100,
93
- 'price_slider_step' => 0.01,
94
- 'order_options' => array( 'menu_order' ),
95
- 'show_stock_filter' => 'yes',
96
- 'show_sale_filter' => 'yes',
97
- )
98
  );
99
 
100
  // use setters to configure filter parameters; this will assure data sanitization.
@@ -127,6 +102,48 @@ if ( ! class_exists( 'YITH_WCAN_Filter' ) ) {
127
  $this->__construct( $this->data );
128
  }
129
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
130
  /* === GETTERS === */
131
 
132
  /**
@@ -234,6 +251,46 @@ if ( ! class_exists( 'YITH_WCAN_Filter' ) ) {
234
  return $formatted_taxonomy;
235
  }
236
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
237
  /**
238
  * Check whether filter has any term
239
  *
@@ -241,7 +298,7 @@ if ( ! class_exists( 'YITH_WCAN_Filter' ) ) {
241
  * @return bool Whether filter has any term
242
  */
243
  public function has_terms( $context = 'view' ) {
244
- return ! ! $this->get_terms();
245
  }
246
 
247
  /**
@@ -269,6 +326,22 @@ if ( ! class_exists( 'YITH_WCAN_Filter' ) ) {
269
  return $has_image;
270
  }
271
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
272
  /**
273
  * Get terms for the filter
274
  *
@@ -277,11 +350,23 @@ if ( ! class_exists( 'YITH_WCAN_Filter' ) ) {
277
  * @return array Array of term ids for current filter.
278
  */
279
  public function get_terms( $fields = 'ids', $context = 'view' ) {
280
- $terms = $this->get_prop( 'terms', $context );
281
-
282
  $term_ids = array_keys( $terms ? $terms : array() );
 
 
 
 
 
283
 
284
  switch ( $fields ) {
 
 
 
 
 
 
 
 
285
  case 'all':
286
  case 'all_with_object_id':
287
  case 'tt_ids':
@@ -291,18 +376,16 @@ if ( ! class_exists( 'YITH_WCAN_Filter' ) ) {
291
  case 'id=>parent':
292
  case 'id=>name':
293
  case 'id=>slug':
294
- $taxonomy = $this->get_taxonomy( $context );
295
-
296
- if ( ! $taxonomy ) {
297
- return array();
298
- }
299
-
300
  $terms = get_terms(
301
- array(
302
- 'taxonomy' => $taxonomy,
303
- 'include' => $term_ids,
304
- 'fields' => $fields,
305
- 'hide_empty' => false,
 
 
 
 
306
  )
307
  );
308
 
@@ -312,12 +395,43 @@ if ( ! class_exists( 'YITH_WCAN_Filter' ) ) {
312
 
313
  return $terms;
314
  case 'id=>options':
315
- return $terms;
316
- default:
317
- return $term_ids;
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
318
  }
319
  }
320
 
 
 
 
 
 
 
 
 
 
 
321
  /**
322
  * Get specific options for each term
323
  *
@@ -338,6 +452,16 @@ if ( ! class_exists( 'YITH_WCAN_Filter' ) ) {
338
  return $this->get_prop( 'filter_design', $context );
339
  }
340
 
 
 
 
 
 
 
 
 
 
 
341
  /**
342
  * Return number of columns for currend design
343
  *
@@ -365,7 +489,7 @@ if ( ! class_exists( 'YITH_WCAN_Filter' ) ) {
365
  * @return string Whether filter is collapsable or not.
366
  */
367
  public function is_collapsable( $context = 'view' ) {
368
- return 'yes' === $this->get_prop( 'show_toggle', $context );
369
  }
370
 
371
  /**
@@ -395,6 +519,12 @@ if ( ! class_exists( 'YITH_WCAN_Filter' ) ) {
395
  * @return string Toggle style.
396
  */
397
  public function get_toggle_style( $context = 'view' ) {
 
 
 
 
 
 
398
  return $this->get_prop( 'toggle_style', $context );
399
  }
400
 
@@ -522,6 +652,36 @@ if ( ! class_exists( 'YITH_WCAN_Filter' ) ) {
522
  return array_values( $this->get_prop( 'price_ranges', $context ) );
523
  }
524
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
525
  /**
526
  * Retrieves minimum value for price slider filter
527
  *
@@ -582,6 +742,16 @@ if ( ! class_exists( 'YITH_WCAN_Filter' ) ) {
582
  return $this->get_prop( 'show_sale_filter', $context );
583
  }
584
 
 
 
 
 
 
 
 
 
 
 
585
  /**
586
  * Checks whether In Stock filter needs to be shown
587
  *
@@ -602,6 +772,16 @@ if ( ! class_exists( 'YITH_WCAN_Filter' ) ) {
602
  return 'yes' === $this->get_prop( 'show_sale_filter', $context );
603
  }
604
 
 
 
 
 
 
 
 
 
 
 
605
  /**
606
  * Check if filter is enabled
607
  *
@@ -627,6 +807,10 @@ if ( ! class_exists( 'YITH_WCAN_Filter' ) ) {
627
  $additional_classes[] = 'hierarchical';
628
  }
629
 
 
 
 
 
630
  if ( ! $this->get_title() ) {
631
  $additional_classes[] = 'no-title';
632
  }
@@ -680,7 +864,7 @@ if ( ! class_exists( 'YITH_WCAN_Filter' ) ) {
680
  *
681
  * @return array Array of fields
682
  */
683
- public function get_fields() {
684
  return include( YITH_WCAN_DIR . 'plugin-options/filter-options.php' );
685
  }
686
 
@@ -749,28 +933,57 @@ if ( ! class_exists( 'YITH_WCAN_Filter' ) ) {
749
  $this->set_prop( 'taxonomy', $taxonomy );
750
  }
751
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
752
  /**
753
  * Set terms for current filter
754
  *
755
- * @param array $terms An array of terms options, with the following format: term_id=>options.
 
756
  */
757
  public function set_terms( $terms ) {
758
  $new_terms = array();
759
 
 
 
760
  // sanitize array of options.
761
  if ( ! empty( $terms ) ) {
762
- foreach ( $terms as $term_id => $options ) {
763
- $new_terms[ (int) $term_id ] = wp_parse_args(
764
- $options,
765
- array(
766
- 'label' => '',
767
- 'tooltip' => '',
768
- 'color_1' => '',
769
- 'color_2' => '',
770
- 'image' => '',
771
- 'mode' => 'color',
772
- )
773
- );
 
 
 
 
774
  }
775
  }
776
 
@@ -799,6 +1012,25 @@ if ( ! class_exists( 'YITH_WCAN_Filter' ) ) {
799
  $this->set_prop( 'filter_design', $filter_design );
800
  }
801
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
802
  /**
803
  * Set number of items per row for the current design
804
  *
@@ -859,6 +1091,7 @@ if ( ! class_exists( 'YITH_WCAN_Filter' ) ) {
859
  'slug',
860
  'count',
861
  'term_order',
 
862
  );
863
 
864
  if ( ! in_array( $order_by, $supported_orders ) ) {
@@ -1001,6 +1234,30 @@ if ( ! class_exists( 'YITH_WCAN_Filter' ) ) {
1001
  $this->set_prop( 'price_ranges', $new_ranges );
1002
  }
1003
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1004
  /**
1005
  * Set minimum value for price slider filter
1006
  *
@@ -1070,6 +1327,17 @@ if ( ! class_exists( 'YITH_WCAN_Filter' ) ) {
1070
  $this->set_prop( 'show_sale_filter', $show_on_sale );
1071
  }
1072
 
 
 
 
 
 
 
 
 
 
 
 
1073
  /**
1074
  * Set filter as enabled
1075
  *
@@ -1124,7 +1392,7 @@ if ( ! class_exists( 'YITH_WCAN_Filter' ) ) {
1124
 
1125
  if ( $this->is_collapsable() ) {
1126
  $additional_classes[] = 'collapsable';
1127
- $additional_classes[] = $this->is_active() ? 'opened' : $this->get_toggle_style();
1128
  }
1129
 
1130
  $additional_classes = implode( ' ', apply_filters( 'yith_wcan_filter_title_classes', $additional_classes, $this ) );
69
  public function __construct( $filter = array() ) {
70
  $filter = wp_parse_args(
71
  $filter,
72
+ $this->get_defaults()
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
73
  );
74
 
75
  // use setters to configure filter parameters; this will assure data sanitization.
102
  $this->__construct( $this->data );
103
  }
104
 
105
+ /**
106
+ * Get filter defaults
107
+ *
108
+ * @return array Array of filter defaults.
109
+ */
110
+ protected function get_defaults() {
111
+ return apply_filters(
112
+ 'yith_wcan_filter_defaults',
113
+ array(
114
+ 'id' => '',
115
+ 'preset_id' => '',
116
+ 'title' => _x( 'New filter', '[Admin] Default filter title', 'yith-woocommerce-ajax-navigation' ),
117
+ 'customize_terms' => 'yes',
118
+ 'terms' => array(),
119
+ 'price_ranges' => array(),
120
+ 'filter_design' => 'checkbox',
121
+ 'label_position' => 'below',
122
+ 'column_number' => 4,
123
+ 'show_toggle' => 'no',
124
+ 'show_search' => 'yes',
125
+ 'toggle_style' => 'opened',
126
+ 'order_by' => 'name',
127
+ 'order' => 'asc',
128
+ 'show_count' => 'no',
129
+ 'hierarchical' => 'no',
130
+ 'multiple' => 'no',
131
+ 'relation' => 'and',
132
+ 'adoptive' => 'hide',
133
+ 'enabled' => 'yes',
134
+ 'price_slider_design' => 'slider',
135
+ 'price_slider_adaptive_limits' => 'no',
136
+ 'price_slider_min' => 0,
137
+ 'price_slider_max' => 100,
138
+ 'price_slider_step' => 1,
139
+ 'order_options' => array( 'menu_order' ),
140
+ 'show_stock_filter' => 'yes',
141
+ 'show_sale_filter' => 'yes',
142
+ 'show_featured_filter' => 'no',
143
+ )
144
+ );
145
+ }
146
+
147
  /* === GETTERS === */
148
 
149
  /**
251
  return $formatted_taxonomy;
252
  }
253
 
254
+ /**
255
+ * Get use_all_terms property for the filter
256
+ *
257
+ * @param string $context Context of the operation.
258
+ * @return string Yes or no.
259
+ */
260
+ public function get_use_all_terms( $context = 'view' ) {
261
+ return $this->get_prop( 'use_all_terms', $context );
262
+ }
263
+
264
+ /**
265
+ * Check if we should use all existing terms for this filter
266
+ *
267
+ * @param string $context Context of the operation.
268
+ * @return bool Whether all terms should be retrieved or not.
269
+ */
270
+ public function use_all_terms( $context = 'view' ) {
271
+ return 'yes' === $this->get_use_all_terms( $context );
272
+ }
273
+
274
+ /**
275
+ * Get customize_terms property
276
+ *
277
+ * @param string $context Context of the operation.
278
+ * @return string Yes or no.
279
+ */
280
+ public function get_customize_terms( $context = 'view' ) {
281
+ return $this->get_prop( 'customize_terms', $context );
282
+ }
283
+
284
+ /**
285
+ * Should use custom terms options?
286
+ *
287
+ * @param string $context Context of the operation.
288
+ * @return bool Whether to use terms options or not.
289
+ */
290
+ public function customize_terms( $context = 'view' ) {
291
+ return apply_filters( 'yith_wcan_filter_customize_terms_options', 'yes' === $this->get_prop( 'customize_terms', $context ), $this );
292
+ }
293
+
294
  /**
295
  * Check whether filter has any term
296
  *
298
  * @return bool Whether filter has any term
299
  */
300
  public function has_terms( $context = 'view' ) {
301
+ return ! ! $this->get_terms( 'ids', $context );
302
  }
303
 
304
  /**
326
  return $has_image;
327
  }
328
 
329
+ /**
330
+ * Return default term options
331
+ *
332
+ * @return array Default term options:
333
+ */
334
+ public function get_default_term_options() {
335
+ return array(
336
+ 'label' => '',
337
+ 'tooltip' => '',
338
+ 'color_1' => '',
339
+ 'color_2' => '',
340
+ 'image' => '',
341
+ 'mode' => 'color',
342
+ );
343
+ }
344
+
345
  /**
346
  * Get terms for the filter
347
  *
350
  * @return array Array of term ids for current filter.
351
  */
352
  public function get_terms( $fields = 'ids', $context = 'view' ) {
353
+ $terms = $this->get_prop( 'terms', $context );
 
354
  $term_ids = array_keys( $terms ? $terms : array() );
355
+ $taxonomy = $this->get_taxonomy( $context );
356
+
357
+ if ( ! $taxonomy ) {
358
+ return array();
359
+ }
360
 
361
  switch ( $fields ) {
362
+ default:
363
+ if ( ! $this->use_all_terms() ) {
364
+ return $term_ids;
365
+ }
366
+
367
+ $fields = 'ids';
368
+
369
+ // explicitly fallback to next cases.
370
  case 'all':
371
  case 'all_with_object_id':
372
  case 'tt_ids':
376
  case 'id=>parent':
377
  case 'id=>name':
378
  case 'id=>slug':
 
 
 
 
 
 
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(
387
+ 'include' => $term_ids,
388
+ )
389
  )
390
  );
391
 
395
 
396
  return $terms;
397
  case 'id=>options':
398
+ if ( ! $this->use_all_terms() ) {
399
+ return $terms;
400
+ } else {
401
+ $term_ids = get_terms(
402
+ array(
403
+ 'taxonomy' => $taxonomy,
404
+ 'fields' => 'ids',
405
+ 'hide_empty' => false,
406
+ )
407
+ );
408
+
409
+ if ( ! $term_ids || is_wp_error( $term_ids ) ) {
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 ) {
417
+ $terms[ $term_id ] = $default_term_options;
418
+ }
419
+
420
+ return $terms;
421
+ }
422
  }
423
  }
424
 
425
+ /**
426
+ * Returns an array of IDs for the selected terms
427
+ *
428
+ * @param string $context Context of the operation.
429
+ * @return array Array of term ids for current filter.
430
+ */
431
+ public function get_term_ids( $context = 'view' ) {
432
+ return $this->get_terms( 'ids', $context );
433
+ }
434
+
435
  /**
436
  * Get specific options for each term
437
  *
452
  return $this->get_prop( 'filter_design', $context );
453
  }
454
 
455
+ /**
456
+ * Get label position
457
+ *
458
+ * @param string $context Context of the operation.
459
+ * @return string Position of the label (below/right/hide).
460
+ */
461
+ public function get_label_position( $context = 'view' ) {
462
+ return $this->get_prop( 'label_position', $context );
463
+ }
464
+
465
  /**
466
  * Return number of columns for currend design
467
  *
489
  * @return string Whether filter is collapsable or not.
490
  */
491
  public function is_collapsable( $context = 'view' ) {
492
+ return 'yes' === $this->get_prop( 'show_toggle', $context ) || 'horizontal' === $this->get_preset()->get_layout();
493
  }
494
 
495
  /**
519
  * @return string Toggle style.
520
  */
521
  public function get_toggle_style( $context = 'view' ) {
522
+ $preset = $this->get_preset();
523
+
524
+ if ( $preset && 'horizontal' === $preset->get_layout() ) {
525
+ return 'closed';
526
+ }
527
+
528
  return $this->get_prop( 'toggle_style', $context );
529
  }
530
 
652
  return array_values( $this->get_prop( 'price_ranges', $context ) );
653
  }
654
 
655
+ /**
656
+ * Returns the slider design
657
+ *
658
+ * @param string $context Context of the operation.
659
+ * @return string Slider/Fields or both.
660
+ */
661
+ public function get_price_slider_design( $context = 'view' ) {
662
+ return $this->get_prop( 'price_slider_design', $context );
663
+ }
664
+
665
+ /**
666
+ * Get price_slider_adaptive_limits property
667
+ *
668
+ * @param string $context Context of the operation.
669
+ * @return string Yes or no.
670
+ */
671
+ public function get_price_slider_adaptive_limits( $context = 'view' ) {
672
+ return $this->get_prop( 'price_slider_adaptive_limits', $context );
673
+ }
674
+
675
+ /**
676
+ * Should use adaptive limits for price slider?
677
+ *
678
+ * @param string $context Context of the operation.
679
+ * @return string Whether to use adaptive limits for price slider or not.
680
+ */
681
+ public function use_price_slider_adaptive_limits( $context = 'view' ) {
682
+ return 'yes' === $this->get_price_slider_adaptive_limits( $context );
683
+ }
684
+
685
  /**
686
  * Retrieves minimum value for price slider filter
687
  *
742
  return $this->get_prop( 'show_sale_filter', $context );
743
  }
744
 
745
+ /**
746
+ * Get show_featured_filter property
747
+ *
748
+ * @param string $context Context of the operation.
749
+ * @return string Yes or no.
750
+ */
751
+ public function get_show_featured_filter( $context = 'view' ) {
752
+ return $this->get_prop( 'show_featured_filter', $context );
753
+ }
754
+
755
  /**
756
  * Checks whether In Stock filter needs to be shown
757
  *
772
  return 'yes' === $this->get_prop( 'show_sale_filter', $context );
773
  }
774
 
775
+ /**
776
+ * Checks whether Featured filter needs to be shown
777
+ *
778
+ * @param string $context Context of the operation.
779
+ * @return bool Whether filter needs to be shown
780
+ */
781
+ public function show_featured_filter( $context = 'view' ) {
782
+ return 'yes' === $this->get_prop( 'show_featured_filter', $context );
783
+ }
784
+
785
  /**
786
  * Check if filter is enabled
787
  *
807
  $additional_classes[] = 'hierarchical';
808
  }
809
 
810
+ if ( 'tax' === $this->get_type() ) {
811
+ $additional_classes[] = $this->get_filter_design() . '-design';
812
+ }
813
+
814
  if ( ! $this->get_title() ) {
815
  $additional_classes[] = 'no-title';
816
  }
864
  *
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
 
933
  $this->set_prop( 'taxonomy', $taxonomy );
934
  }
935
 
936
+ /**
937
+ * Set use_all_terms property for the filter
938
+ *
939
+ * @param string $use_all_terms Yes or no.
940
+ */
941
+ public function set_use_all_terms( $use_all_terms ) {
942
+ $use_all_terms = yith_plugin_fw_is_true( $use_all_terms ) ? 'yes' : 'no';
943
+
944
+ $this->set_prop( 'use_all_terms', $use_all_terms );
945
+ }
946
+
947
+ /**
948
+ * Set customize_terms property
949
+ *
950
+ * @param string $customize_terms Yes or no.
951
+ */
952
+ public function set_customize_terms( $customize_terms ) {
953
+ $customize_terms = yith_plugin_fw_is_true( $customize_terms ) ? 'yes' : 'no';
954
+
955
+ $this->set_prop( 'customize_terms', $customize_terms );
956
+ }
957
+
958
  /**
959
  * Set terms for current filter
960
  *
961
+ * @param array $terms An array of terms options, with the following format: term_id=>options; alternatively an array of term ids can be passed
962
+ * In this case, default options will apply for each term.
963
  */
964
  public function set_terms( $terms ) {
965
  $new_terms = array();
966
 
967
+ $default_term_options = $this->get_default_term_options();
968
+
969
  // sanitize array of options.
970
  if ( ! empty( $terms ) ) {
971
+ foreach ( $terms as $index => $value ) {
972
+ if ( is_array( $value ) ) {
973
+ $term_id = $index;
974
+ $options = $value;
975
+
976
+ $new_terms[ (int) $term_id ] = wp_parse_args(
977
+ $options,
978
+ $default_term_options
979
+ );
980
+ } elseif ( is_numeric( $value ) ) {
981
+ $term_id = $value;
982
+
983
+ $new_terms[ (int) $term_id ] = $default_term_options;
984
+ } else {
985
+ continue;
986
+ }
987
  }
988
  }
989
 
1012
  $this->set_prop( 'filter_design', $filter_design );
1013
  }
1014
 
1015
+ /**
1016
+ * Set label position
1017
+ *
1018
+ * @param string $label_position Lbale position.
1019
+ */
1020
+ public function set_label_position( string $label_position ) {
1021
+ $supported_positions = array(
1022
+ 'below',
1023
+ 'right',
1024
+ 'hide',
1025
+ );
1026
+
1027
+ if ( ! in_array( $label_position, $supported_positions ) ) {
1028
+ return;
1029
+ }
1030
+
1031
+ $this->set_prop( 'label_position', $label_position );
1032
+ }
1033
+
1034
  /**
1035
  * Set number of items per row for the current design
1036
  *
1091
  'slug',
1092
  'count',
1093
  'term_order',
1094
+ 'include',
1095
  );
1096
 
1097
  if ( ! in_array( $order_by, $supported_orders ) ) {
1234
  $this->set_prop( 'price_ranges', $new_ranges );
1235
  }
1236
 
1237
+ /**
1238
+ * Set price slider design property
1239
+ *
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
+
1247
+ $this->set_prop( 'price_slider_design', $design );
1248
+ }
1249
+
1250
+ /**
1251
+ * Set price_slider_adaptive_limits property
1252
+ *
1253
+ * @param string $price_slider_adaptive_limits Yes or no.
1254
+ */
1255
+ public function set_price_slider_adaptive_limits( $price_slider_adaptive_limits ) {
1256
+ $price_slider_adaptive_limits = yith_plugin_fw_is_true( $price_slider_adaptive_limits ) ? 'yes' : 'no';
1257
+
1258
+ $this->set_prop( 'price_slider_adaptive_limits', $price_slider_adaptive_limits );
1259
+ }
1260
+
1261
  /**
1262
  * Set minimum value for price slider filter
1263
  *
1327
  $this->set_prop( 'show_sale_filter', $show_on_sale );
1328
  }
1329
 
1330
+ /**
1331
+ * Set whether we should show Featured filter
1332
+ *
1333
+ * @param string $show_featured Yes or no.
1334
+ */
1335
+ public function set_show_featured_filter( $show_featured ) {
1336
+ $show_on_sale = yith_plugin_fw_is_true( $show_featured ) ? 'yes' : 'no';
1337
+
1338
+ $this->set_prop( 'show_featured_filter', $show_featured );
1339
+ }
1340
+
1341
  /**
1342
  * Set filter as enabled
1343
  *
1392
 
1393
  if ( $this->is_collapsable() ) {
1394
  $additional_classes[] = 'collapsable';
1395
+ $additional_classes[] = ( $this->is_active() && 'horizontal' !== $this->get_preset()->get_layout() ) ? 'opened' : $this->get_toggle_style();
1396
  }
1397
 
1398
  $additional_classes = implode( ' ', apply_filters( 'yith_wcan_filter_title_classes', $additional_classes, $this ) );
includes/class.yith-wcan-frontend.php CHANGED
@@ -547,7 +547,7 @@ if ( ! class_exists( 'YITH_WCAN_Frontend' ) ) {
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' => true,
551
  'instant_filters' => true,
552
  'ajax_filters' => true,
553
  'show_clear_filter' => false,
@@ -579,6 +579,7 @@ if ( ! class_exists( 'YITH_WCAN_Frontend' ) ) {
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
  'show_results' => _x( 'Show results', '[FRONTEND] Label for filter button, on mobile modal', 'yith-woocommerce-ajax-navigation' ),
583
  'clear_selection' => _x( 'Clear', '[FRONTEND] Label for clear selection link, that appears above filter after selection', 'yith-woocommerce-ajax-navigation' ),
584
  'clear_all_selections' => _x( 'Clear All', '[FRONTEND] Label for clear selection link, that appears above filter after selection', 'yith-woocommerce-ajax-navigation' ),
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,
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' ),
includes/class.yith-wcan-install.php CHANGED
@@ -123,6 +123,7 @@ if ( ! class_exists( 'YITH_WCAN_Install' ) ) {
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
 
127
  // space for future revisions.
128
 
@@ -217,6 +218,19 @@ if ( ! class_exists( 'YITH_WCAN_Install' ) ) {
217
  foreach ( $options_to_export as $option ) {
218
  update_option( $option, yith_wcan_get_option( $option ) );
219
  }
 
 
 
 
 
 
 
 
 
 
 
 
 
220
  }
221
 
222
  /**
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
 
218
  foreach ( $options_to_export as $option ) {
219
  update_option( $option, yith_wcan_get_option( $option ) );
220
  }
221
+
222
+ do_action( 'yith_wcan_did_400_upgrade' );
223
+ }
224
+
225
+ /**
226
+ * Upgrade options to version 4.1.0
227
+ *
228
+ * Scratch method; nothing needs to be done on this version of the software.
229
+ *
230
+ * @return void.
231
+ */
232
+ protected static function _do_410_upgrade() {
233
+ do_action( 'yith_wcan_did_410_upgrade' );
234
  }
235
 
236
  /**
includes/class.yith-wcan-preset-factory.php CHANGED
@@ -99,5 +99,19 @@ if ( ! class_exists( 'YITH_WCAN_Preset_Factory' ) ) {
99
  return false;
100
  }
101
  }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
102
  }
103
  }
99
  return false;
100
  }
101
  }
102
+
103
+ /**
104
+ * Returns an array of supported layouts for the preset
105
+ *
106
+ * @return array Array of supported layouts.
107
+ */
108
+ public static function get_supported_layouts() {
109
+ return apply_filters(
110
+ 'yith_wcan_supported_preset_layouts',
111
+ array(
112
+ 'default' => _x( 'Default', '[Admin] Label in new preset page', 'yith-woocommerce-ajax-navigation' ),
113
+ )
114
+ );
115
+ }
116
  }
117
  }
includes/class.yith-wcan-preset.php CHANGED
@@ -77,6 +77,7 @@ if ( ! class_exists( 'YITH_WCAN_Preset' ) ) {
77
  $this->data = array(
78
  'title' => apply_filters( 'yith_wcan_default_preset_title', '' ),
79
  'slug' => apply_filters( 'yith_wcan_default_preset_slug', '' ),
 
80
  'selector' => '',
81
  'filters' => array(),
82
  'enabled' => true,
@@ -145,6 +146,18 @@ if ( ! class_exists( 'YITH_WCAN_Preset' ) ) {
145
  return $this->slug;
146
  }
147
 
 
 
 
 
 
 
 
 
 
 
 
 
148
  /**
149
  * Get preset selector
150
  *
@@ -181,6 +194,12 @@ if ( ! class_exists( 'YITH_WCAN_Preset' ) ) {
181
  $additional_classes[] = 'custom-style';
182
  }
183
 
 
 
 
 
 
 
184
  if ( ! yith_wcan_get_option( 'yith_wcan_filters_title', '' ) ) {
185
  $additional_classes[] = 'no-title';
186
  }
@@ -203,6 +222,15 @@ if ( ! class_exists( 'YITH_WCAN_Preset' ) ) {
203
  return $this->post;
204
  }
205
 
 
 
 
 
 
 
 
 
 
206
  /* === SETTERS === */
207
 
208
  /**
@@ -225,6 +253,18 @@ if ( ! class_exists( 'YITH_WCAN_Preset' ) ) {
225
  $this->slug = $slug;
226
  }
227
 
 
 
 
 
 
 
 
 
 
 
 
 
228
  /**
229
  * Set preset selector
230
  *
77
  $this->data = array(
78
  'title' => apply_filters( 'yith_wcan_default_preset_title', '' ),
79
  'slug' => apply_filters( 'yith_wcan_default_preset_slug', '' ),
80
+ 'layout' => 'default',
81
  'selector' => '',
82
  'filters' => array(),
83
  'enabled' => true,
146
  return $this->slug;
147
  }
148
 
149
+ /**
150
+ * Get preset slug
151
+ *
152
+ * @param string $context Context of the operation.
153
+ *
154
+ * @return string Preset slug
155
+ * @author Antonio La Rocca <antonio.larocca@yithemes.com>
156
+ */
157
+ public function get_layout( $context = 'view' ) {
158
+ return $this->get_prop( 'layout', $context );
159
+ }
160
+
161
  /**
162
  * Get preset selector
163
  *
194
  $additional_classes[] = 'custom-style';
195
  }
196
 
197
+ $layout = $this->get_layout();
198
+
199
+ if ( 'default' !== $layout ) {
200
+ $additional_classes[] = $layout;
201
+ }
202
+
203
  if ( ! yith_wcan_get_option( 'yith_wcan_filters_title', '' ) ) {
204
  $additional_classes[] = 'no-title';
205
  }
222
  return $this->post;
223
  }
224
 
225
+ /**
226
+ * Return an array of supported fields
227
+ *
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 === */
235
 
236
  /**
253
  $this->slug = $slug;
254
  }
255
 
256
+ /**
257
+ * Set preset layout
258
+ *
259
+ * @param string $layout Filter preset layout.
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
+ }
267
+
268
  /**
269
  * Set preset selector
270
  *
includes/class.yith-wcan-presets.php CHANGED
@@ -218,6 +218,10 @@ if ( ! class_exists( 'YITH_WCAN_Presets' ) ) {
218
  $preset->set_title( $title );
219
  }
220
 
 
 
 
 
221
  // process filters and save them.
222
  if ( ! empty( $_POST['filters'] ) ) {
223
  $filters = $_POST['filters']; // phpcs:ignore WordPress.Security.ValidatedSanitizedInput
@@ -610,12 +614,19 @@ if ( ! class_exists( 'YITH_WCAN_Presets' ) ) {
610
  $filter['multiple'] = isset( $filter['multiple'] ) ? 'yes' : 'no';
611
  $filter['show_stock_filter'] = isset( $filter['show_stock_filter'] ) ? 'yes' : 'no';
612
  $filter['show_sale_filter'] = isset( $filter['show_sale_filter'] ) ? 'yes' : 'no';
 
 
613
 
614
  if ( isset( $filter['terms_order'] ) ) {
615
  $filter['terms'] = $this->_get_sorted_terms( $filter['terms'], array_map( 'intval', $filter['terms_order'] ) );
616
  unset( $filter['terms_order'] );
617
  }
618
 
 
 
 
 
 
619
  // use set methods of YITH_WCAN_Filter object to clean submitted data.
620
  $filter_obj = yith_wcan_get_filter( $filter );
621
 
218
  $preset->set_title( $title );
219
  }
220
 
221
+ // retrieve preset layout and save it.
222
+ $layout = isset( $_POST['preset_layout'] ) && in_array( $_POST['preset_layout'], array_keys( YITH_WCAN_Preset_Factory::get_supported_layouts() ), true ) ? sanitize_text_field( wp_unslash( $_POST['preset_layout'] ) ) : 'default';
223
+ $preset->set_layout( $layout );
224
+
225
  // process filters and save them.
226
  if ( ! empty( $_POST['filters'] ) ) {
227
  $filters = $_POST['filters']; // phpcs:ignore WordPress.Security.ValidatedSanitizedInput
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
 
625
+ // address the case in which we're not using custom term options.
626
+ if ( empty( $filter['terms'] ) && ! empty( $filter['term_ids'] ) ) {
627
+ $filter['terms'] = $filter['term_ids'];
628
+ }
629
+
630
  // use set methods of YITH_WCAN_Filter object to clean submitted data.
631
  $filter_obj = yith_wcan_get_filter( $filter );
632
 
includes/class.yith-wcan-query.php CHANGED
@@ -20,6 +20,27 @@ if ( ! class_exists( 'YITH_WCAN_Query' ) ) {
20
  * @since 4.0.0
21
  */
22
  class YITH_WCAN_Query {
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
23
  /**
24
  * Query parameter added to any filtered page url
25
  *
@@ -475,7 +496,7 @@ if ( ! class_exists( 'YITH_WCAN_Query' ) ) {
475
  } elseif ( ! $query->is_main_query() && $query->get( 'wc_query' ) ) {
476
  // skip if we're already executing a special wc_query.
477
  $result = false;
478
- } elseif ( $query->get( 'yith_wcan_prefetch_cache' ) ) {
479
  // skip if we're prefetching products.
480
  $result = false;
481
  }
@@ -761,7 +782,7 @@ if ( ! class_exists( 'YITH_WCAN_Query' ) ) {
761
  * @return array|bool Query's post__in, or false when no limitation shall be applied.
762
  */
763
  public function get_post_in( $post_in = array() ) {
764
- return $post_in;
765
  }
766
 
767
  /**
@@ -1061,7 +1082,7 @@ if ( ! class_exists( 'YITH_WCAN_Query' ) ) {
1061
  */
1062
  public function get_queried_products_transient_name() {
1063
  $cache_version = WC_Cache_Helper::get_transient_version( 'product' );
1064
- $cache_name = "yith_wcan_queried_products_{$cache_version}";
1065
 
1066
  // WPML support.
1067
  $current_lang = apply_filters( 'wpml_current_language', null );
@@ -1080,7 +1101,7 @@ if ( ! class_exists( 'YITH_WCAN_Query' ) ) {
1080
  */
1081
  public function get_object_in_terms_transient_name() {
1082
  $cache_version = WC_Cache_Helper::get_transient_version( 'product' );
1083
- $cache_name = "yith_wcan_object_in_terms_{$cache_version}";
1084
 
1085
  return apply_filters( 'yith_wcan_object_in_terms_name', $cache_name );
1086
  }
@@ -1092,7 +1113,7 @@ if ( ! class_exists( 'YITH_WCAN_Query' ) ) {
1092
  */
1093
  public function get_in_stock_products_transient_name() {
1094
  $cache_version = WC_Cache_Helper::get_transient_version( 'product' );
1095
- $cache_name = "yith_wcan_products_instock_{$cache_version}";
1096
 
1097
  // WPML support.
1098
  $current_lang = apply_filters( 'wpml_current_language', null );
@@ -1117,6 +1138,44 @@ if ( ! class_exists( 'YITH_WCAN_Query' ) ) {
1117
  delete_transient( 'yith_wcan_exclude_from_catalog_product_ids' );
1118
  }
1119
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1120
  /* === UTILS === */
1121
 
1122
  /**
@@ -1157,6 +1216,15 @@ if ( ! class_exists( 'YITH_WCAN_Query' ) ) {
1157
  return wc_get_product_ids_on_sale();
1158
  }
1159
 
 
 
 
 
 
 
 
 
 
1160
  /**
1161
  * Merge sets of query vars together; when applicable, uses merge mode to merge parameters together
1162
  *
@@ -1195,6 +1263,9 @@ if ( ! class_exists( 'YITH_WCAN_Query' ) ) {
1195
 
1196
  $query_vars[ $key ] = implode( ',', array_unique( array_merge( $existing, $new ) ) );
1197
  }
 
 
 
1198
  } else {
1199
  $query_vars[ $key ] = $value;
1200
  }
@@ -1248,6 +1319,13 @@ if ( ! class_exists( 'YITH_WCAN_Query' ) ) {
1248
  unset( $query_vars[ $key ] );
1249
  unset( $query_vars[ "query_type_{$attribute}" ] );
1250
  }
 
 
 
 
 
 
 
1251
  } else {
1252
  unset( $query_vars[ $key ] );
1253
  }
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
  *
496
  } elseif ( ! $query->is_main_query() && $query->get( 'wc_query' ) ) {
497
  // skip if we're already executing a special wc_query.
498
  $result = false;
499
+ } elseif ( $query->get( 'yith_wcan_suppress_filters' ) ) {
500
  // skip if we're prefetching products.
501
  $result = false;
502
  }
782
  * @return array|bool Query's post__in, or false when no limitation shall be applied.
783
  */
784
  public function get_post_in( $post_in = array() ) {
785
+ return apply_filters( 'yith_wcan_query_post_in', $post_in );
786
  }
787
 
788
  /**
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 );
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
  }
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 );
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 === */
1180
 
1181
  /**
1216
  return wc_get_product_ids_on_sale();
1217
  }
1218
 
1219
+ /**
1220
+ * Retrieves list of ids of featured products
1221
+ *
1222
+ * @return array Array of product ids
1223
+ */
1224
+ public function get_product_ids_featured() {
1225
+ return wc_get_featured_product_ids();
1226
+ }
1227
+
1228
  /**
1229
  * Merge sets of query vars together; when applicable, uses merge mode to merge parameters together
1230
  *
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;
1271
  }
1319
  unset( $query_vars[ $key ] );
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 ] ) ) {
1327
+ unset( $query_vars[ $key ] );
1328
+ }
1329
  } else {
1330
  unset( $query_vars[ $key ] );
1331
  }
includes/class.yith-wcan.php CHANGED
@@ -163,7 +163,7 @@ if ( ! class_exists( 'YITH_WCAN' ) ) {
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 . 'tests/wp-cli/class.yith-wcan-cli-test-commands.php' ) && require_once YITH_WCAN_DIR . 'tests/wp-cli/class.yith-wcan-cli-test-commands.php';
167
  }
168
  }
169
 
@@ -224,10 +224,10 @@ if ( ! class_exists( 'YITH_WCAN' ) ) {
224
  */
225
  public function load_compatibilities() {
226
  // include theme compatibility, if any.
227
- $this->load_theme_compatibility();
228
 
229
  // include compatibilities for installed plugins.
230
- $this->load_plugin_compatibilities();
231
  }
232
 
233
  /**
@@ -239,7 +239,7 @@ if ( ! class_exists( 'YITH_WCAN' ) ) {
239
  */
240
  public function load_theme_compatibility() {
241
  $theme = strtolower( wp_get_theme()->Name );
242
- $theme = str_replace( '-child', '', $theme );
243
 
244
  $compatibility_path = YITH_WCAN_INC . "compatibility/themes/{$theme}/{$theme}.php";
245
 
@@ -362,6 +362,9 @@ if ( ! class_exists( 'YITH_WCAN' ) ) {
362
  'wpml' => array(
363
  'check' => array( 'class_exists', array( 'Sitepress' ) ),
364
  ),
 
 
 
365
  );
366
  }
367
 
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
 
224
  */
225
  public function load_compatibilities() {
226
  // include theme compatibility, if any.
227
+ add_action( 'after_setup_theme', array( $this, 'load_theme_compatibility' ) );
228
 
229
  // include compatibilities for installed plugins.
230
+ add_action( 'init', array( $this, 'load_plugin_compatibilities' ) );
231
  }
232
 
233
  /**
239
  */
240
  public function load_theme_compatibility() {
241
  $theme = strtolower( wp_get_theme()->Name );
242
+ $theme = str_replace( array( ' ', '-child' ), array( '-', '' ), $theme );
243
 
244
  $compatibility_path = YITH_WCAN_INC . "compatibility/themes/{$theme}/{$theme}.php";
245
 
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
 
includes/compatibility/plugins/yith-woocommerce-booking/yith-woocommerce-booking.php ADDED
@@ -0,0 +1,138 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
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
+
10
+ if ( ! defined( 'YITH_WCAN' ) ) {
11
+ exit;
12
+ } // Exit if accessed directly
13
+
14
+ if ( ! class_exists( 'YITH_WCAN_Booking_Compatibility' ) ) {
15
+ /**
16
+ * Class that implements methods required to integrate YITH WCAN filters in Booking search page
17
+ *
18
+ * @since 4.1.0
19
+ */
20
+ class YITH_WCAN_Booking_Compatibility {
21
+
22
+ /**
23
+ * Main instance
24
+ *
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
32
+ *
33
+ * @return void
34
+ */
35
+ public function init() {
36
+ add_filter( 'yith_wcan_query_post_in', array( $this, 'filter_post_in' ) );
37
+ add_filter( 'yith_wcan_query_supported_parameters', array( $this, 'filter_supported_query_vars' ) );
38
+ add_filter( 'yith_wcan_should_process_query', array( $this, 'skip_filtering' ), 10, 2 );
39
+ }
40
+
41
+ /**
42
+ * Filters post in for YITH WCAN queries, including post_in parameter as computed by Booking plugin
43
+ *
44
+ * @param array $post_in Array of post ids for the query to include.
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
+
52
+ $search_helper = YITH_WCBK()->search_form_helper;
53
+
54
+ if ( ! $search_helper ) {
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;
62
+ }
63
+
64
+ if ( ! empty( $post_in ) && empty( $product_ids ) ) {
65
+ return $post_in;
66
+ }
67
+
68
+ $result_set = array_intersect( $post_in, $product_ids );
69
+
70
+ if ( ! $result_set ) {
71
+ return array( 0 );
72
+ }
73
+
74
+ return $result_set;
75
+ }
76
+
77
+ /**
78
+ * Filters WCAN supported query vars, to add booking ones.
79
+ *
80
+ * @param array $supported_params Array of supported query vars.
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
+
88
+ $supported_params = array_merge(
89
+ $supported_params,
90
+ array(
91
+ 'from',
92
+ 'to',
93
+ 'persons',
94
+ 'person_types',
95
+ 'services',
96
+ 'categories',
97
+ 'tags',
98
+ 'location',
99
+ 'location_range',
100
+ )
101
+ );
102
+
103
+ return $supported_params;
104
+ }
105
+
106
+ /**
107
+ * Skip query filtering when processing Booking methods (booking retrieves posts to use in post__in clause when filtering main query)
108
+ *
109
+ * @param bool $should_process_query Whether query should be processed.
110
+ * @param WP_Query $query Current query object.
111
+ *
112
+ * @return bool Filtered param.
113
+ */
114
+ public function skip_filtering( $should_process_query, $query ) {
115
+ if ( $query->get( 'yith_wcbk_search' ) ) {
116
+ return false;
117
+ }
118
+
119
+ return $should_process_query;
120
+ }
121
+
122
+ /**
123
+ * Compatibility class instance
124
+ *
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
+ }
136
+
137
+ // init compatibility.
138
+ YITH_WCAN_Booking_Compatibility::instance()->init();
includes/compatibility/themes/hello-elementor/hello-elementor.php ADDED
@@ -0,0 +1,28 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /**
3
+ * Hello Elementor theme compatibility
4
+ *
5
+ * @author YITH
6
+ * @package YITH WooCommerce Ajax Product FIlter
7
+ * @version 1.3.2
8
+ */
9
+
10
+ if ( ! defined( 'YITH_WCAN' ) ) {
11
+ exit;
12
+ } // Exit if accessed directly
13
+
14
+ if ( ! function_exists( 'yith_wcan_hello_elementor_content_selector' ) ) {
15
+ /**
16
+ * Filters content selector, returning correct value for Hello Elementor theme
17
+ *
18
+ * @param string $selector Current selector.
19
+ * @return string Content selector.
20
+ */
21
+ function yith_wcan_hello_elementor_content_selector( $selector ) {
22
+ $selector = 'main';
23
+
24
+ return $selector;
25
+ }
26
+
27
+ add_filter( 'yith_wcan_content_selector', 'yith_wcan_hello_elementor_content_selector' );
28
+ }
includes/compatibility/themes/porto/porto.php CHANGED
@@ -12,3 +12,35 @@ if ( ! defined( 'YITH_WCAN' ) ) {
12
  } // Exit if accessed directly
13
 
14
  add_filter( 'yith_wcan_use_wp_the_query_object', '__return_true' );
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
12
  } // Exit if accessed directly
13
 
14
  add_filter( 'yith_wcan_use_wp_the_query_object', '__return_true' );
15
+
16
+ if ( ! function_exists( 'yith_wcan_porto_content_selector' ) ) {
17
+ /**
18
+ * Filters content selector, returning correct value for Porto theme
19
+ *
20
+ * @param string $selector Current selector.
21
+ * @return string Content selector.
22
+ */
23
+ function yith_wcan_porto_content_selector( $selector ) {
24
+ $selector = '#main';
25
+
26
+ return $selector;
27
+ }
28
+
29
+ add_filter( 'yith_wcan_content_selector', 'yith_wcan_porto_content_selector' );
30
+ }
31
+
32
+ if ( ! function_exists( 'yith_wcan_porto_lazy_load_support' ) ) {
33
+ /**
34
+ * Force system to reinit filters after Porto's skeleton lazy load
35
+ *
36
+ * @return void
37
+ */
38
+ function yith_wcan_porto_lazy_load_support() {
39
+ $js = 'jQuery( function($){
40
+ $(document).on("skeleton-loaded", function(){$(document).trigger("yith_wcan_init_shortcodes")});
41
+ } );';
42
+ wp_add_inline_script( 'yith-wcan-shortcodes', $js );
43
+ }
44
+
45
+ add_filter( 'wp_enqueue_scripts', 'yith_wcan_porto_lazy_load_support', 99 );
46
+ }
includes/data-stores/class.yith-wcan-preset-data-store.php CHANGED
@@ -27,6 +27,7 @@ if ( ! class_exists( 'YITH_WCAN_Preset_Data_Store' ) ) {
27
  '_selector' => 'selector',
28
  '_enabled' => 'enabled',
29
  '_filters' => 'filters',
 
30
  );
31
 
32
  /**
27
  '_selector' => 'selector',
28
  '_enabled' => 'enabled',
29
  '_filters' => 'filters',
30
+ '_layout' => 'layout',
31
  );
32
 
33
  /**
includes/filters/class.yith-wcan-filter-tax.php CHANGED
@@ -34,7 +34,7 @@ if ( ! class_exists( 'YITH_WCAN_Filter_Tax' ) ) {
34
  * @return bool Whether current filter is active.
35
  */
36
  public function is_active() {
37
- return apply_filters( 'yith_wcan_is_filter_active', YITH_WCAN_Query()->is_filtered_by($this->get_taxonomy() ), $this );
38
  }
39
 
40
  /**
@@ -95,9 +95,11 @@ if ( ! class_exists( 'YITH_WCAN_Filter_Tax' ) ) {
95
  public function render_item( $term, $term_options = array() ) {
96
  $design = $this->get_filter_design();
97
  $default_callback = "render_item_{$design}";
 
 
98
 
99
  if ( ! $term instanceof WP_Term ) {
100
- $term = get_term( $term, $this->get_taxonomy() );
101
  }
102
 
103
  if ( ! $term || is_wp_error( $term ) ) {
@@ -132,11 +134,34 @@ if ( ! class_exists( 'YITH_WCAN_Filter_Tax' ) ) {
132
  $term_options['additional_classes'][] = 'disabled';
133
  }
134
 
 
 
 
 
 
 
 
 
 
 
135
  // allow third party dev change attributes for the item.
136
  $term_options = apply_filters( 'yith_wcan_tax_filter_item_args', $term_options, $term->term_id, $this );
137
 
 
 
 
 
 
 
 
 
 
 
 
 
 
138
  // implode additional classes.
139
- $term_options['additional_classes'] = implode( ' ', $term_options['additional_classes'] );
140
 
141
  if ( method_exists( $this, $default_callback ) ) {
142
  $item = $this->{$default_callback}( $term, $term_options );
@@ -199,9 +224,11 @@ if ( ! class_exists( 'YITH_WCAN_Filter_Tax' ) ) {
199
  * @return string Item HTML template.
200
  */
201
  public function render_item_label( $term, $term_options ) {
202
- $columns = $this->get_column_number();
 
203
 
204
  $term_options['additional_classes'] .= $term_options['image'] ? " with-image filter-has-{$columns}-column" : '';
 
205
 
206
  return $this->render_generic_item( 'label', $term, $term_options );
207
  }
@@ -214,9 +241,11 @@ if ( ! class_exists( 'YITH_WCAN_Filter_Tax' ) ) {
214
  * @return string Item HTML template.
215
  */
216
  public function render_item_color( $term, $term_options ) {
217
- $columns = $this->get_column_number();
 
218
 
219
  $term_options['additional_classes'] .= " filter-has-{$columns}-column";
 
220
 
221
  return $this->render_generic_item( 'color', $term, $term_options );
222
  }
@@ -332,15 +361,19 @@ if ( ! class_exists( 'YITH_WCAN_Filter_Tax' ) ) {
332
  $sorted_terms = get_terms(
333
  array_merge(
334
  array(
335
- 'taxonomy' => $this->get_taxonomy(),
336
- 'include' => array_keys( $terms ),
337
- 'order' => $this->get_order(),
338
- 'number' => apply_filters( 'yith_wcan_filter_tax_term_limit', 0 ),
339
- 'fields' => 'ids',
340
  'hide_empty' => $hide_empty,
 
 
 
 
341
  ),
342
  'term_order' === $this->get_order_by() ? array(
343
- 'orderby' => 'include',
 
344
  ) : array(
345
  'orderby' => $this->get_order_by(),
346
  ),
@@ -350,11 +383,11 @@ if ( ! class_exists( 'YITH_WCAN_Filter_Tax' ) ) {
350
 
351
  if ( ! empty( $sorted_terms ) ) {
352
  foreach ( $sorted_terms as $term_id ) {
353
- if ( ! isset( $terms[ $term_id ] ) ) {
354
  continue;
355
  }
356
 
357
- $term = $terms[ $term_id ];
358
 
359
  // set hierarchical data.
360
  $children_result = $this->_get_term_children( $term_id );
34
  * @return bool Whether current filter is active.
35
  */
36
  public function is_active() {
37
+ return apply_filters( 'yith_wcan_is_filter_active', YITH_WCAN_Query()->is_filtered_by( $this->get_taxonomy() ), $this );
38
  }
39
 
40
  /**
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 );
103
  }
104
 
105
  if ( ! $term || is_wp_error( $term ) ) {
134
  $term_options['additional_classes'][] = 'disabled';
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'] = '';
142
+ $term_options['color_2'] = '';
143
+ $term_options['image'] = get_term_meta( $term->term_id, apply_filters( 'yith_wcan_tax_filter_default_image_meta', 'thumbnail_id', $taxonomy ), true );
144
+ $term_options['mode'] = ! ! $term_options['image'] ? 'image' : 'color';
145
+ }
146
+
147
  // allow third party dev change attributes for the item.
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
+
155
+ if ( 'color' === $term_options['mode'] && empty( $term_options['color_1'] ) ) {
156
+ $term_options['additional_classes'][] = 'no-color';
157
+ }
158
+
159
+ if ( 'image' === $term_options['mode'] && empty( $term_options['image'] ) ) {
160
+ $term_options['additional_classes'][] = 'no-image';
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 );
224
  * @return string Item HTML template.
225
  */
226
  public function render_item_label( $term, $term_options ) {
227
+ $columns = $this->get_column_number();
228
+ $label_position = $this->get_label_position();
229
 
230
  $term_options['additional_classes'] .= $term_options['image'] ? " with-image filter-has-{$columns}-column" : '';
231
+ $term_options['additional_classes'] .= " label-{$label_position}";
232
 
233
  return $this->render_generic_item( 'label', $term, $term_options );
234
  }
241
  * @return string Item HTML template.
242
  */
243
  public function render_item_color( $term, $term_options ) {
244
+ $columns = $this->get_column_number();
245
+ $label_position = $this->get_label_position();
246
 
247
  $term_options['additional_classes'] .= " filter-has-{$columns}-column";
248
+ $term_options['additional_classes'] .= " label-{$label_position}";
249
 
250
  return $this->render_generic_item( 'color', $term, $term_options );
251
  }
361
  $sorted_terms = get_terms(
362
  array_merge(
363
  array(
364
+ 'taxonomy' => $this->get_taxonomy(),
365
+ 'order' => $this->get_order(),
366
+ 'number' => apply_filters( 'yith_wcan_filter_tax_term_limit', 0 ),
367
+ 'fields' => 'ids',
 
368
  'hide_empty' => $hide_empty,
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
  ),
383
 
384
  if ( ! empty( $sorted_terms ) ) {
385
  foreach ( $sorted_terms as $term_id ) {
386
+ if ( ! isset( $terms[ $term_id ] ) && ! $this->use_all_terms() ) {
387
  continue;
388
  }
389
 
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 );
includes/functions.yith-wcan.php CHANGED
@@ -998,7 +998,7 @@ if ( ! function_exists( 'yith_wcan_get_rating_html' ) ) {
998
  $template .= '<div class="star-rating" role="img" aria-label="' . esc_attr( $label ) . '">';
999
  $template .= wc_get_star_rating_html( $rating );
1000
  $template .= '</div>';
1001
- $template .= sprintf( '%d %s', $rating, _nx( 'star', 'stars', $rating, '[FRONTEND] Star rating template', 'yith-woocommerce-ajax-navigation' ) );
1002
 
1003
  return $template;
1004
  }
998
  $template .= '<div class="star-rating" role="img" aria-label="' . esc_attr( $label ) . '">';
999
  $template .= wc_get_star_rating_html( $rating );
1000
  $template .= '</div>';
1001
+ $template .= esc_html( sprintf( '%d %s', $rating, _nx( 'star', 'stars', $rating, '[FRONTEND] Star rating template', 'yith-woocommerce-ajax-navigation' ) ) );
1002
 
1003
  return $template;
1004
  }
includes/tables/class.yith-wcan-filter-presets-table.php CHANGED
@@ -129,7 +129,7 @@ if ( ! class_exists( 'YITH_WCAN_Filter_Presets_Table' ) ) {
129
  */
130
  public function action_edit( $item ) {
131
  echo sprintf(
132
- '<a class="show-on-hover edit" href="%s" title="%s"><i class="material-icons">edit</i></a>',
133
  esc_url( $item->get_admin_edit_url() ),
134
  esc_html_x( 'Edit this preset', '[Admin] Preset edit action label', 'yith-woocommerce-ajax-navigation' )
135
  );
@@ -142,7 +142,7 @@ if ( ! class_exists( 'YITH_WCAN_Filter_Presets_Table' ) ) {
142
  */
143
  public function action_clone( $item ) {
144
  echo sprintf(
145
- '<a class="show-on-hover clone" href="%s" title="%s"><i class="material-icons">filter_none</i></a>',
146
  esc_url( $item->get_admin_clone_url() ),
147
  esc_html_x( 'Clone this preset', '[Admin] Preset clone action label', 'yith-woocommerce-ajax-navigation' )
148
  );
@@ -155,7 +155,7 @@ if ( ! class_exists( 'YITH_WCAN_Filter_Presets_Table' ) ) {
155
  */
156
  public function action_delete( $item ) {
157
  echo sprintf(
158
- '<a class="show-on-hover delete" href="%s" title="%s" onclick="return confirm(\'%s\');"><i class="material-icons">delete_outline</i></a>',
159
  esc_url( $item->get_admin_delete_url() ),
160
  esc_attr_x( 'Delete this preset', '[Admin] Preset delete action label', 'yith-woocommerce-ajax-navigation' ),
161
  esc_attr_x( 'Are you sure you want to delete this preset?', '[Admin] Preset delete confirm label', 'yith-woocommerce-ajax-navigation' )
129
  */
130
  public function action_edit( $item ) {
131
  echo sprintf(
132
+ '<a class="show-on-hover edit" href="%s" title="%s"><i class="yith-icon yith-icon-edit"></i></a>',
133
  esc_url( $item->get_admin_edit_url() ),
134
  esc_html_x( 'Edit this preset', '[Admin] Preset edit action label', 'yith-woocommerce-ajax-navigation' )
135
  );
142
  */
143
  public function action_clone( $item ) {
144
  echo sprintf(
145
+ '<a class="show-on-hover clone" href="%s" title="%s"><i class="yith-icon yith-icon-clone"></i></a>',
146
  esc_url( $item->get_admin_clone_url() ),
147
  esc_html_x( 'Clone this preset', '[Admin] Preset clone action label', 'yith-woocommerce-ajax-navigation' )
148
  );
155
  */
156
  public function action_delete( $item ) {
157
  echo sprintf(
158
+ '<a class="show-on-hover delete" href="%s" title="%s" onclick="return confirm(\'%s\');"><i class="yith-icon yith-icon-trash"></i></a>',
159
  esc_url( $item->get_admin_delete_url() ),
160
  esc_attr_x( 'Delete this preset', '[Admin] Preset delete action label', 'yith-woocommerce-ajax-navigation' ),
161
  esc_attr_x( 'Are you sure you want to delete this preset?', '[Admin] Preset delete confirm label', 'yith-woocommerce-ajax-navigation' )
init.php CHANGED
@@ -3,14 +3,14 @@
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.0.4
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.3
14
  *
15
  * @author YITH
16
  * @package YITH WooCommerce Ajax Product Filter
@@ -38,16 +38,19 @@ if ( ! defined( 'ABSPATH' ) ) {
38
  exit;
39
  } // Exit if accessed directly
40
 
 
41
 
42
  ! defined( 'YITH_WCAN' ) && define( 'YITH_WCAN', true );
43
  ! defined( 'YITH_WCAN_URL' ) && define( 'YITH_WCAN_URL', plugin_dir_url( __FILE__ ) );
44
  ! defined( 'YITH_WCAN_DIR' ) && define( 'YITH_WCAN_DIR', plugin_dir_path( __FILE__ ) );
45
  ! defined( 'YITH_WCAN_INC' ) && define( 'YITH_WCAN_INC', YITH_WCAN_DIR . 'includes/' );
46
- ! defined( 'YITH_WCAN_VERSION' ) && define( 'YITH_WCAN_VERSION', '4.0.4' );
47
  ! defined( 'YITH_WCAN_FREE_INIT' ) && define( 'YITH_WCAN_FREE_INIT', plugin_basename( __FILE__ ) );
48
  ! defined( 'YITH_WCAN_FILE' ) && define( 'YITH_WCAN_FILE', __FILE__ );
49
  ! defined( 'YITH_WCAN_SLUG' ) && define( 'YITH_WCAN_SLUG', 'yith-woocommerce-ajax-navigation' );
50
 
 
 
51
  if ( ! function_exists( 'yith_wcan_register_activation' ) ) {
52
  /**
53
  * Register plugins among recently activated ones
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
38
  exit;
39
  } // Exit if accessed directly
40
 
41
+ // define required constants.
42
 
43
  ! defined( 'YITH_WCAN' ) && define( 'YITH_WCAN', true );
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' );
51
 
52
+ // define required functions.
53
+
54
  if ( ! function_exists( 'yith_wcan_register_activation' ) ) {
55
  /**
56
  * Register plugins among recently activated ones
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-05-18 10:20:00+00:00\n"
9
  "PO-Revision-Date: 2021-03-02 11:03+0100\n"
10
  "Last-Translator: \n"
11
  "Language-Team: \n"
@@ -16,7 +16,7 @@ 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:56
20
  msgid "Draft Preset"
21
  msgstr "Preset Entwurf"
22
 
@@ -107,13 +107,13 @@ msgstr "Alle Filter zurücksetzen"
107
  msgid "Button Label"
108
  msgstr "Button-Beschriftung"
109
 
110
- #: init.php:145
111
  msgid ""
112
  "You can't activate the free version of YITH WooCommerce Ajax Product Filter "
113
  "while you are using the premium one."
114
  msgstr ""
115
 
116
- #: init.php:163
117
  #, fuzzy
118
  msgid ""
119
  "YITH WooCommerce Ajax Product Filter is enabled but not effective. It "
@@ -157,54 +157,58 @@ 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:113 templates/admin/preset-filter.php:31
 
 
 
 
 
161
  msgctxt "[Admin] Message shown when filter has empty title"
162
  msgid "&lt; no title &gt;"
163
  msgstr "&lt; Kein Titel &gt;"
164
 
165
- #: includes/class.yith-wcan-admin.php:114
166
  msgctxt "[Admin] Media library title, when selecting images"
167
  msgid "Select media you want to use"
168
  msgstr "Die zu verwendenden Medien auswählen"
169
 
170
- #: includes/class.yith-wcan-admin.php:115
171
  msgctxt "[Admin] Media library confirm button, when selecting images"
172
  msgid "Use this media"
173
  msgstr "Dieses Medium verwenden"
174
 
175
- #: includes/class.yith-wcan-admin.php:181
176
  msgctxt "[Admin] tab name"
177
  msgid "Filter presets"
178
  msgstr "Filter-Presets"
179
 
180
- #: includes/class.yith-wcan-admin.php:182
181
  msgctxt "[Admin] tab name"
182
  msgid "General settings"
183
  msgstr "Allgemeine Einstellungen"
184
 
185
- #: includes/class.yith-wcan-admin.php:183
186
  #, fuzzy
187
  msgctxt "[Admin] tab name"
188
  msgid "SEO"
189
  msgstr "SEO"
190
 
191
- #: includes/class.yith-wcan-admin.php:184
192
  msgctxt "[Admin] tab name"
193
  msgid "Premium Version"
194
  msgstr "Premium-Version"
195
 
196
- #: includes/class.yith-wcan-admin.php:188
197
  msgctxt "[Admin] tab name"
198
  msgid "Legacy"
199
  msgstr "Legacy"
200
 
201
- #: includes/class.yith-wcan-admin.php:194
202
- #: includes/class.yith-wcan-admin.php:195
203
  msgctxt "[Admin] Menu title"
204
  msgid "Ajax Product Filter"
205
  msgstr "AJAX Produkt-Filter "
206
 
207
- #: includes/class.yith-wcan-admin.php:196
208
  msgctxt "[Admin] Plugin description"
209
  msgid ""
210
  "It allows your users to find the product they are looking for as quickly as "
@@ -213,37 +217,44 @@ msgstr ""
213
  "Ermöglicht deinen Benutzern, das gesuchte Produkt so schnell wie möglich zu "
214
  "finden."
215
 
216
- #: includes/class.yith-wcan-admin.php:309
 
 
 
 
 
 
 
217
  msgctxt "[Admin] Generic item name, in \"You have no x yet\""
218
  msgid "item"
219
  msgstr "Artikel"
220
 
221
- #: includes/class.yith-wcan-admin.php:310
222
  msgctxt "[Admin] Preset table empty message second line"
223
  msgid "But don't worry, here you can create your first one!"
224
  msgstr "Aber keine Sorge, hier kannst du deine erste erstellen!"
225
 
226
- #: includes/class.yith-wcan-admin.php:458
227
  msgctxt "[ADMIN] WooCommerce Tools tab, name of the tool"
228
  msgid "Clear Product Filter transients"
229
  msgstr "Produktfilter-Tansients löschen"
230
 
231
- #: includes/class.yith-wcan-admin.php:464
232
  msgctxt "[ADMIN] WooCommerce Tools tab, name of the tool"
233
  msgid "Run filter widgets upgrade"
234
  msgstr "Upgrade der Filter-Widgets ausführen"
235
 
236
- #: includes/class.yith-wcan-admin.php:459
237
  msgctxt "[ADMIN] WooCommerce Tools tab, button for the tool"
238
  msgid "Clear"
239
  msgstr "Löschen"
240
 
241
- #: includes/class.yith-wcan-admin.php:465
242
  msgctxt "[ADMIN] WooCommerce Tools tab, button for the tool"
243
  msgid "Run"
244
  msgstr "Start"
245
 
246
- #: includes/class.yith-wcan-admin.php:460
247
  msgctxt "[ADMIN] WooCommerce Tools tab, description of the tool"
248
  msgid ""
249
  "This will clear all transients related to the YITH WooCommerce AJAX Product "
@@ -255,7 +266,7 @@ msgstr ""
255
  "Konfiguration deines Produkts geändert hast und die Filter nicht die "
256
  "erwarteten Ergebnisse anzeigen. "
257
 
258
- #: includes/class.yith-wcan-admin.php:466
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 "
@@ -270,176 +281,239 @@ msgctxt "[Admin] Filter edit form"
270
  msgid "Taxonomy"
271
  msgstr "Taxonomie"
272
 
273
- #: plugin-options/filter-options.php:28
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
274
  msgctxt "[Admin] Filter edit form"
275
  msgid "Filter name"
276
  msgstr "Name des Filters"
277
 
278
- #: plugin-options/filter-options.php:31
279
  msgctxt "[Admin] Filter edit form"
280
  msgid "Enter a name to identify this filter"
281
  msgstr "Gib einen Namen ein, um diesen Filter zu identifizieren"
282
 
283
- #: plugin-options/filter-options.php:37
284
  msgctxt "[Admin] Filter edit form"
285
  msgid "Filter for"
286
  msgstr "Filtern nach"
287
 
288
- #: plugin-options/filter-options.php:41
289
  msgctxt "[Admin] Filter edit form"
290
  msgid "Select the parameters you wish to filter for"
291
  msgstr "Wähle die Parameter, nach denen du filtern möchtest"
292
 
293
- #: plugin-options/filter-options.php:47
294
  msgctxt "[Admin] Filter edit form"
295
  msgid "Choose taxonomy"
296
  msgstr "Taxonomie wählen"
297
 
298
- #: plugin-options/filter-options.php:51
299
  msgctxt "[Admin] Filter edit form"
300
  msgid "Select which taxonomy to use for this filter"
301
  msgstr "Wähle, welche Taxonomie für diesen Filter verwendet werden soll"
302
 
303
- #: plugin-options/filter-options.php:56
 
 
 
 
 
 
 
 
 
 
 
 
 
 
304
  msgctxt "[Admin] Filter edit form"
305
  msgid "Choose terms"
306
  msgstr "Begriffe wählen"
307
 
308
- #: plugin-options/filter-options.php:61
309
  msgctxt "[Admin] Filter edit form"
310
  msgid "Select which terms to use for filtering"
311
  msgstr "Wähle aus, welche Begriffe für die Filterung verwendet werden sollen"
312
 
313
- #: plugin-options/filter-options.php:65
314
  msgctxt "[Admin] Filter edit form"
315
  msgid "Filter type"
316
  msgstr "Filter-Typ"
317
 
318
- #: plugin-options/filter-options.php:71
319
  msgctxt "[Admin] Filter edit form"
320
- msgid "Checkbox"
321
- msgstr "Checkbox"
322
 
323
- #: plugin-options/filter-options.php:72
 
324
  msgctxt "[Admin] Filter edit form"
325
- msgid "Select"
326
- msgstr "Auswahl"
327
 
328
- #: plugin-options/filter-options.php:73
 
329
  msgctxt "[Admin] Filter edit form"
330
- msgid "Text"
331
- msgstr "Text"
332
 
333
- #: plugin-options/filter-options.php:74
 
334
  msgctxt "[Admin] Filter edit form"
335
- msgid "Color Swatches"
336
- msgstr "Farbmuster"
337
 
338
- #: plugin-options/filter-options.php:75
339
  msgctxt "[Admin] Filter edit form"
340
- msgid "Label"
341
- msgstr "Label"
342
 
343
- #: plugin-options/filter-options.php:78
 
344
  msgctxt "[Admin] Filter edit form"
345
- msgid "Select the filter type for this filter"
346
- msgstr "Wähle den Filtertyp für diesen Filter"
347
 
348
- #: plugin-options/filter-options.php:82
349
  msgctxt "[Admin] Filter edit form"
350
  msgid "Columns number"
351
  msgstr "Anzahl der Spalten"
352
 
353
- #: plugin-options/filter-options.php:87
354
  msgctxt "[Admin] Filter edit form"
355
  msgid "Set the number of items per row you want to show for this design"
356
  msgstr ""
357
  "Stelle die Anzahl der Elemente pro Zeile ein, die du für dieses Design "
358
  "anzeigen möchtest"
359
 
360
- #: plugin-options/filter-options.php:91
361
  msgctxt "[Admin] Filter edit form"
362
  msgid "Customize terms"
363
  msgstr "Begriffe anpassen"
364
 
365
- #: plugin-options/filter-options.php:97
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
366
  msgctxt "[Admin] Filter edit form"
367
  msgid "Show hierarchy"
368
  msgstr "Hierarchie anzeigen"
369
 
370
- #: plugin-options/filter-options.php:100
371
  msgctxt "[Admin] Filter edit form"
372
  msgid "No, show all terms in same level"
373
  msgstr "Nein, alle Begriffe auf der gleichen Ebene anzeigen"
374
 
375
- #: plugin-options/filter-options.php:101
376
  msgctxt "[Admin] Filter edit form"
377
  msgid "No, show only parent terms"
378
  msgstr "Nein, nur übergeordnete Begriffe anzeigen"
379
 
380
- #: plugin-options/filter-options.php:102
381
  msgctxt "[Admin] Filter edit form"
382
  msgid "Yes"
383
  msgstr ""
384
 
385
- #: plugin-options/filter-options.php:104
386
  msgctxt "[Admin] Filter edit form"
387
  msgid "Choose how to show terms hierarchy"
388
  msgstr "Wähle, wie die Begriffshierarchie angezeigt werden soll"
389
 
390
- #: plugin-options/filter-options.php:108
391
  msgctxt "[Admin] Filter edit form"
392
  msgid "Allow multiple selection"
393
  msgstr "Mehrfachauswahl zulassen"
394
 
395
- #: plugin-options/filter-options.php:110
396
  msgctxt "[Admin] Filter edit form"
397
  msgid "Enable if the user can select multiple terms when filtering products"
398
  msgstr ""
399
  "Aktivieren, wenn der Benutzer beim Filtern von Produkten mehrere Begriffe "
400
  "auswählen kann"
401
 
402
- #: plugin-options/filter-options.php:114
403
  msgctxt "[Admin] Filter edit form"
404
  msgid "Multiselect relation"
405
  msgstr "Multiselect-Beziehung"
406
 
407
- #: plugin-options/filter-options.php:120
408
  msgctxt "[Admin] Filter edit form"
409
  msgid "Choose how multiple terms selection should behave"
410
  msgstr "Wähle, wie sich die Auswahl mehrerer Begriffe verhalten soll"
411
 
412
- #: includes/class.yith-wcan-filter-factory.php:86
413
  msgctxt "[Admin] Filter edit form, sorting options"
414
  msgid "Default sorting"
415
  msgstr "Standard-Sortierung"
416
 
417
- #: includes/class.yith-wcan-filter-factory.php:87
418
  msgctxt "[Admin] Filter edit form, sorting options"
419
  msgid "Sort by popularity"
420
  msgstr "Nach Beliebtheit sortieren"
421
 
422
- #: includes/class.yith-wcan-filter-factory.php:88
423
  msgctxt "[Admin] Filter edit form, sorting options"
424
  msgid "Sort by average rating"
425
  msgstr "Best bewertete zuerst"
426
 
427
- #: includes/class.yith-wcan-filter-factory.php:89
428
  msgctxt "[Admin] Filter edit form, sorting options"
429
  msgid "Sort by latest"
430
  msgstr "Neueste zuerst"
431
 
432
- #: includes/class.yith-wcan-filter-factory.php:90
433
  msgctxt "[Admin] Filter edit form, sorting options"
434
  msgid "Sort by price: low to high"
435
  msgstr "Sortieren nach Preis: Preis aufsteigend"
436
 
437
- #: includes/class.yith-wcan-filter-factory.php:91
438
  msgctxt "[Admin] Filter edit form, sorting options"
439
  msgid "Sort by price: high to low"
440
  msgstr "Sortieren nach Preis: Preis absteigend"
441
 
442
- #: includes/class.yith-wcan-filter.php:75
443
  msgctxt "[Admin] Default filter title"
444
  msgid "New filter"
445
  msgstr "Neuer Filter"
@@ -472,18 +546,23 @@ msgid "Close"
472
  msgstr "Schließen"
473
 
474
  #: includes/class.yith-wcan-frontend.php:582
 
 
 
 
 
475
  msgctxt "[FRONTEND] Label for filter button, on mobile modal"
476
  msgid "Show results"
477
  msgstr "Ergebnisse anzeigen"
478
 
479
- #: includes/class.yith-wcan-frontend.php:583
480
  msgctxt ""
481
  "[FRONTEND] Label for clear selection link, that appears above filter after "
482
  "selection"
483
  msgid "Clear"
484
  msgstr "Löschen"
485
 
486
- #: includes/class.yith-wcan-frontend.php:584
487
  msgctxt ""
488
  "[FRONTEND] Label for clear selection link, that appears above filter after "
489
  "selection"
@@ -496,11 +575,32 @@ msgid "Default preset"
496
  msgstr "Standard-Preset"
497
 
498
  #. translators: 1. Taxonomy name.
499
- #: includes/class.yith-wcan-install.php:271
500
  msgctxt "[ADMIN] Name of default taxonomy filter created by plugin"
501
  msgid "Filter by %s"
502
  msgstr "Nach %s filtern"
503
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
504
  #: includes/class.yith-wcan-presets.php:95
505
  #: includes/class.yith-wcan-presets.php:100
506
  msgctxt "[Admin] name of presets custom post type"
@@ -522,7 +622,7 @@ msgctxt "[ADMIN] Convert widgets tools, in preset tab"
522
  msgid "Convert widgets in a preset"
523
  msgstr "Widgets in eine Preset konvertieren"
524
 
525
- #: includes/data-stores/class.yith-wcan-preset-data-store.php:107
526
  msgctxt ""
527
  "[Generic] Error that happens when trying to read a filter preset that does "
528
  "not exist"
@@ -530,7 +630,7 @@ msgid "Invalid preset."
530
  msgstr "Ungültige Voreinstellung."
531
 
532
  #. translators: 1. Title of original preset.
533
- #: includes/data-stores/class.yith-wcan-preset-data-store.php:234
534
  msgctxt "[ADMIN] Title of the cloned preset"
535
  msgid "%s - Copy"
536
  msgstr "%s - Kopieren"
@@ -745,7 +845,7 @@ msgid "Reset all filters set by YITH WooCommerce AJAX Product Filter"
745
  msgstr ""
746
  "Alle von YITH WooCommerce AJAX Product Filter gesetzten Filter zurücksetzen "
747
 
748
- #: plugin-options/filter-options.php:117
749
  #, fuzzy
750
  msgctxt ""
751
  "[Admin] Filter edit form; logical operator that affects query behaviour"
@@ -754,7 +854,7 @@ msgstr ""
754
  "UND - Die Ergebnisse müssen mit allen ausgewählten Begriffen gleichzeitig "
755
  "übereinstimmen"
756
 
757
- #: plugin-options/filter-options.php:118
758
  #, fuzzy
759
  msgctxt ""
760
  "[Admin] Filter edit form; logical operator that affects query behaviour"
@@ -1182,37 +1282,27 @@ msgid ""
1182
  "easier to share)"
1183
  msgstr ""
1184
 
1185
- #: templates/admin/preset-edit.php:28
1186
  msgctxt "[Admin] Back link in new preset page"
1187
  msgid "< back to preset list"
1188
  msgstr "< zurück zur Preset-Liste"
1189
 
1190
- #: templates/admin/preset-edit.php:34
1191
  msgctxt "[ADMIN] Title for new preset page"
1192
  msgid "Edit filter preset"
1193
  msgstr "Filter-Preset bearbeiten"
1194
 
1195
- #: templates/admin/preset-edit.php:36
1196
  msgctxt "[ADMIN] Title for new preset page"
1197
  msgid "Add new filter preset"
1198
  msgstr "Neues Filter-Preset hinzufügen"
1199
 
1200
- #: templates/admin/preset-edit.php:47
1201
- msgctxt "[Admin] Label in new preset page"
1202
- msgid "Preset name"
1203
- msgstr "Preset-Name"
1204
-
1205
- #: templates/admin/preset-edit.php:54
1206
- msgctxt "[Admin] Label in new preset page"
1207
- msgid "Enter a name to identify this filter preset"
1208
- msgstr "Gib einen Namen ein, um dieses Filter-Preset zu identifizieren"
1209
-
1210
- #: templates/admin/preset-filters.php:20
1211
- msgctxt "[Admin] Label in new preset page"
1212
- msgid "Filters of this preset"
1213
- msgstr "Filter in diesem Preset"
1214
 
1215
- #: templates/admin/preset-edit.php:68
1216
  msgctxt "[Admin] Preset save button, in new/edit preset page"
1217
  msgid "Save preset"
1218
  msgstr "Preset speichern"
@@ -1528,10 +1618,6 @@ msgstr "Filter zurücksetzen"
1528
  #~ msgid "Set the value for each increment of the price slider"
1529
  #~ msgstr "Stelle den Wert für jedes Inkrement des Preisschiebereglers ein"
1530
 
1531
- #~ msgctxt "[Admin] Filter edit form"
1532
- #~ msgid "Order options"
1533
- #~ msgstr "Sortierungsoptionen"
1534
-
1535
  #~ msgctxt "[Admin] Filter edit form"
1536
  #~ msgid "Select sorting options to show"
1537
  #~ msgstr "Sortieroptionen für die Anzeige auswählen"
@@ -1617,10 +1703,6 @@ msgstr "Filter zurücksetzen"
1617
  #~ msgid "Select the default order for terms of this filter"
1618
  #~ msgstr "Wähle die Standardreihenfolge für Begriffe dieses Filters"
1619
 
1620
- #~ msgctxt "[Admin] Filter edit form"
1621
- #~ msgid "Show count of items"
1622
- #~ msgstr "Anzahl der Elemente anzeigen"
1623
-
1624
  #~ msgctxt "[Admin] Filter edit form"
1625
  #~ msgid ""
1626
  #~ "Enable if you want to show how many items are available for each term"
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
  "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
 
107
  msgid "Button Label"
108
  msgstr "Button-Beschriftung"
109
 
110
+ #: init.php:148
111
  msgid ""
112
  "You can't activate the free version of YITH WooCommerce Ajax Product Filter "
113
  "while you are using the premium one."
114
  msgstr ""
115
 
116
+ #: init.php:166
117
  #, fuzzy
118
  msgid ""
119
  "YITH WooCommerce Ajax Product Filter is enabled but not effective. It "
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
  "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
  "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 "
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"
308
+
309
+ #: plugin-options/filter-options.php:32
310
  msgctxt "[Admin] Filter edit form"
311
  msgid "Filter name"
312
  msgstr "Name des Filters"
313
 
314
+ #: plugin-options/filter-options.php:35
315
  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"
348
+ "\t\t\t\t\t<span class=\"future-terms-notice\"><b>Notice:</b> if you enable "
349
+ "this option, all terms created in the future will be added to this filter as "
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/"
423
+ "images for terms.\n"
424
+ "\t\t\t\t\t<span class=\"wccl-notice\"><b>Notice:</b> optionally, you can "
425
+ "configure labels/images/colors for your attributes using YITH WooCommerce "
426
+ "Color and Label Variations options, in the term's edit page. Otherwise, just "
427
+ "enable this option and use boxes below.</span>\n"
428
+ "\t\t\t\t\t<span class=\"images-notice\"><b>Notice:</b> optionally, you can "
429
+ "configure the images in ‘edit page’ for the terms. Otherwise, just enable "
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"
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"
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"
587
+ msgstr "Standard "
588
+
589
+ #: plugin-options/preset-options.php:14
590
+ msgctxt "[Admin] Label in new preset page"
591
+ msgid "Preset name"
592
+ msgstr "Preset-Name"
593
+
594
+ #: plugin-options/preset-options.php:16
595
+ 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"
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
  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"
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
  "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"
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"
1618
  #~ msgid "Set the value for each increment of the price slider"
1619
  #~ msgstr "Stelle den Wert für jedes Inkrement des Preisschiebereglers ein"
1620
 
 
 
 
 
1621
  #~ msgctxt "[Admin] Filter edit form"
1622
  #~ msgid "Select sorting options to show"
1623
  #~ msgstr "Sortieroptionen für die Anzeige auswählen"
1703
  #~ msgid "Select the default order for terms of this filter"
1704
  #~ msgstr "Wähle die Standardreihenfolge für Begriffe dieses Filters"
1705
 
 
 
 
 
1706
  #~ msgctxt "[Admin] Filter edit form"
1707
  #~ msgid ""
1708
  #~ "Enable if you want to show how many items are available for each term"
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-05-18 10:20:00+00:00\n"
9
  "PO-Revision-Date: 2021-03-02 11:03+0100\n"
10
  "Last-Translator: \n"
11
  "Language-Team: \n"
@@ -16,7 +16,7 @@ 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:56
20
  msgid "Draft Preset"
21
  msgstr "Preset Entwurf"
22
 
@@ -107,13 +107,13 @@ msgstr "Alle Filter zurücksetzen"
107
  msgid "Button Label"
108
  msgstr "Button-Beschriftung"
109
 
110
- #: init.php:145
111
  msgid ""
112
  "You can't activate the free version of YITH WooCommerce Ajax Product Filter "
113
  "while you are using the premium one."
114
  msgstr ""
115
 
116
- #: init.php:163
117
  #, fuzzy
118
  msgid ""
119
  "YITH WooCommerce Ajax Product Filter is enabled but not effective. It "
@@ -157,54 +157,58 @@ 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:113 templates/admin/preset-filter.php:31
 
 
 
 
 
161
  msgctxt "[Admin] Message shown when filter has empty title"
162
  msgid "&lt; no title &gt;"
163
  msgstr "&lt; Kein Titel &gt;"
164
 
165
- #: includes/class.yith-wcan-admin.php:114
166
  msgctxt "[Admin] Media library title, when selecting images"
167
  msgid "Select media you want to use"
168
  msgstr "Die zu verwendenden Medien auswählen"
169
 
170
- #: includes/class.yith-wcan-admin.php:115
171
  msgctxt "[Admin] Media library confirm button, when selecting images"
172
  msgid "Use this media"
173
  msgstr "Dieses Medium verwenden"
174
 
175
- #: includes/class.yith-wcan-admin.php:181
176
  msgctxt "[Admin] tab name"
177
  msgid "Filter presets"
178
  msgstr "Filter-Presets"
179
 
180
- #: includes/class.yith-wcan-admin.php:182
181
  msgctxt "[Admin] tab name"
182
  msgid "General settings"
183
  msgstr "Allgemeine Einstellungen"
184
 
185
- #: includes/class.yith-wcan-admin.php:183
186
  #, fuzzy
187
  msgctxt "[Admin] tab name"
188
  msgid "SEO"
189
  msgstr "SEO"
190
 
191
- #: includes/class.yith-wcan-admin.php:184
192
  msgctxt "[Admin] tab name"
193
  msgid "Premium Version"
194
  msgstr "Premium-Version"
195
 
196
- #: includes/class.yith-wcan-admin.php:188
197
  msgctxt "[Admin] tab name"
198
  msgid "Legacy"
199
  msgstr "Legacy"
200
 
201
- #: includes/class.yith-wcan-admin.php:194
202
- #: includes/class.yith-wcan-admin.php:195
203
  msgctxt "[Admin] Menu title"
204
  msgid "Ajax Product Filter"
205
  msgstr "AJAX Produkt-Filter "
206
 
207
- #: includes/class.yith-wcan-admin.php:196
208
  msgctxt "[Admin] Plugin description"
209
  msgid ""
210
  "It allows your users to find the product they are looking for as quickly as "
@@ -213,37 +217,44 @@ msgstr ""
213
  "Ermöglicht Ihren Benutzern, das gesuchte Produkt so schnell wie möglich zu "
214
  "finden."
215
 
216
- #: includes/class.yith-wcan-admin.php:309
 
 
 
 
 
 
 
217
  msgctxt "[Admin] Generic item name, in \"You have no x yet\""
218
  msgid "item"
219
  msgstr "Artikel"
220
 
221
- #: includes/class.yith-wcan-admin.php:310
222
  msgctxt "[Admin] Preset table empty message second line"
223
  msgid "But don't worry, here you can create your first one!"
224
  msgstr "Aber keine Sorge, hier können Sie eine erste erstellen!"
225
 
226
- #: includes/class.yith-wcan-admin.php:458
227
  msgctxt "[ADMIN] WooCommerce Tools tab, name of the tool"
228
  msgid "Clear Product Filter transients"
229
  msgstr "Produktfilter-Tansients löschen"
230
 
231
- #: includes/class.yith-wcan-admin.php:464
232
  msgctxt "[ADMIN] WooCommerce Tools tab, name of the tool"
233
  msgid "Run filter widgets upgrade"
234
  msgstr "Upgrade der Filter-Widgets ausführen"
235
 
236
- #: includes/class.yith-wcan-admin.php:459
237
  msgctxt "[ADMIN] WooCommerce Tools tab, button for the tool"
238
  msgid "Clear"
239
  msgstr "Löschen"
240
 
241
- #: includes/class.yith-wcan-admin.php:465
242
  msgctxt "[ADMIN] WooCommerce Tools tab, button for the tool"
243
  msgid "Run"
244
  msgstr "Start"
245
 
246
- #: includes/class.yith-wcan-admin.php:460
247
  msgctxt "[ADMIN] WooCommerce Tools tab, description of the tool"
248
  msgid ""
249
  "This will clear all transients related to the YITH WooCommerce AJAX Product "
@@ -255,7 +266,7 @@ msgstr ""
255
  "Konfiguration Ihres Produkts geändert haben und die Filter nicht die "
256
  "erwarteten Ergebnisse anzeigen. "
257
 
258
- #: includes/class.yith-wcan-admin.php:466
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 "
@@ -270,177 +281,240 @@ msgctxt "[Admin] Filter edit form"
270
  msgid "Taxonomy"
271
  msgstr "Taxonomie"
272
 
273
- #: plugin-options/filter-options.php:28
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
274
  msgctxt "[Admin] Filter edit form"
275
  msgid "Filter name"
276
  msgstr "Name des Filters"
277
 
278
- #: plugin-options/filter-options.php:31
279
  msgctxt "[Admin] Filter edit form"
280
  msgid "Enter a name to identify this filter"
281
  msgstr "Geben Sie einen Namen ein, um diesen Filter zu identifizieren"
282
 
283
- #: plugin-options/filter-options.php:37
284
  msgctxt "[Admin] Filter edit form"
285
  msgid "Filter for"
286
  msgstr "Filtern nach"
287
 
288
- #: plugin-options/filter-options.php:41
289
  msgctxt "[Admin] Filter edit form"
290
  msgid "Select the parameters you wish to filter for"
291
  msgstr "Wählen Sie die Parameter, nach denen Sie filtern möchten"
292
 
293
- #: plugin-options/filter-options.php:47
294
  msgctxt "[Admin] Filter edit form"
295
  msgid "Choose taxonomy"
296
  msgstr "Taxonomie wählen"
297
 
298
- #: plugin-options/filter-options.php:51
299
  msgctxt "[Admin] Filter edit form"
300
  msgid "Select which taxonomy to use for this filter"
301
  msgstr "Wählen Sie, welche Taxonomie für diesen Filter verwendet werden soll"
302
 
303
- #: plugin-options/filter-options.php:56
 
 
 
 
 
 
 
 
 
 
 
 
 
 
304
  msgctxt "[Admin] Filter edit form"
305
  msgid "Choose terms"
306
  msgstr "Begriffe wählen"
307
 
308
- #: plugin-options/filter-options.php:61
309
  msgctxt "[Admin] Filter edit form"
310
  msgid "Select which terms to use for filtering"
311
  msgstr ""
312
  "Wählen Sie aus, welche Begriffe für die Filterung verwendet werden sollen"
313
 
314
- #: plugin-options/filter-options.php:65
315
  msgctxt "[Admin] Filter edit form"
316
  msgid "Filter type"
317
  msgstr "Filter-Typ"
318
 
319
- #: plugin-options/filter-options.php:71
320
  msgctxt "[Admin] Filter edit form"
321
- msgid "Checkbox"
322
- msgstr "Checkbox"
323
 
324
- #: plugin-options/filter-options.php:72
 
325
  msgctxt "[Admin] Filter edit form"
326
- msgid "Select"
327
- msgstr "Auswahl"
328
 
329
- #: plugin-options/filter-options.php:73
 
330
  msgctxt "[Admin] Filter edit form"
331
- msgid "Text"
332
- msgstr "Text"
333
 
334
- #: plugin-options/filter-options.php:74
 
335
  msgctxt "[Admin] Filter edit form"
336
- msgid "Color Swatches"
337
- msgstr "Farbmuster"
338
 
339
- #: plugin-options/filter-options.php:75
340
  msgctxt "[Admin] Filter edit form"
341
- msgid "Label"
342
- msgstr "Label"
343
 
344
- #: plugin-options/filter-options.php:78
 
345
  msgctxt "[Admin] Filter edit form"
346
- msgid "Select the filter type for this filter"
347
- msgstr "Wählen Sie den Filtertyp für diesen Filter"
348
 
349
- #: plugin-options/filter-options.php:82
350
  msgctxt "[Admin] Filter edit form"
351
  msgid "Columns number"
352
  msgstr "Anzahl der Spalten"
353
 
354
- #: plugin-options/filter-options.php:87
355
  msgctxt "[Admin] Filter edit form"
356
  msgid "Set the number of items per row you want to show for this design"
357
  msgstr ""
358
  "Stellen Sie die Anzahl der Elemente pro Zeile ein, die Sie für dieses Design "
359
  "anzeigen möchten"
360
 
361
- #: plugin-options/filter-options.php:91
362
  msgctxt "[Admin] Filter edit form"
363
  msgid "Customize terms"
364
  msgstr "Begriffe anpassen"
365
 
366
- #: plugin-options/filter-options.php:97
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
367
  msgctxt "[Admin] Filter edit form"
368
  msgid "Show hierarchy"
369
  msgstr "Hierarchie anzeigen"
370
 
371
- #: plugin-options/filter-options.php:100
372
  msgctxt "[Admin] Filter edit form"
373
  msgid "No, show all terms in same level"
374
  msgstr "Nein, alle Begriffe auf der gleichen Ebene anzeigen"
375
 
376
- #: plugin-options/filter-options.php:101
377
  msgctxt "[Admin] Filter edit form"
378
  msgid "No, show only parent terms"
379
  msgstr "Nein, nur übergeordnete Begriffe anzeigen"
380
 
381
- #: plugin-options/filter-options.php:102
382
  msgctxt "[Admin] Filter edit form"
383
  msgid "Yes"
384
  msgstr ""
385
 
386
- #: plugin-options/filter-options.php:104
387
  msgctxt "[Admin] Filter edit form"
388
  msgid "Choose how to show terms hierarchy"
389
  msgstr "Wählen Sie, wie die Begriffshierarchie angezeigt werden soll"
390
 
391
- #: plugin-options/filter-options.php:108
392
  msgctxt "[Admin] Filter edit form"
393
  msgid "Allow multiple selection"
394
  msgstr "Mehrfachauswahl zulassen"
395
 
396
- #: plugin-options/filter-options.php:110
397
  msgctxt "[Admin] Filter edit form"
398
  msgid "Enable if the user can select multiple terms when filtering products"
399
  msgstr ""
400
  "Aktivieren, wenn der Benutzer beim Filtern von Produkten mehrere Begriffe "
401
  "auswählen kann"
402
 
403
- #: plugin-options/filter-options.php:114
404
  msgctxt "[Admin] Filter edit form"
405
  msgid "Multiselect relation"
406
  msgstr "Multiselect-Beziehung"
407
 
408
- #: plugin-options/filter-options.php:120
409
  msgctxt "[Admin] Filter edit form"
410
  msgid "Choose how multiple terms selection should behave"
411
  msgstr "Wählen Sie, wie sich die Auswahl mehrerer Begriffe verhalten soll"
412
 
413
- #: includes/class.yith-wcan-filter-factory.php:86
414
  msgctxt "[Admin] Filter edit form, sorting options"
415
  msgid "Default sorting"
416
  msgstr "Standard-Sortierung"
417
 
418
- #: includes/class.yith-wcan-filter-factory.php:87
419
  msgctxt "[Admin] Filter edit form, sorting options"
420
  msgid "Sort by popularity"
421
  msgstr "Nach Beliebtheit sortieren"
422
 
423
- #: includes/class.yith-wcan-filter-factory.php:88
424
  msgctxt "[Admin] Filter edit form, sorting options"
425
  msgid "Sort by average rating"
426
  msgstr "Best bewertete zuerst"
427
 
428
- #: includes/class.yith-wcan-filter-factory.php:89
429
  msgctxt "[Admin] Filter edit form, sorting options"
430
  msgid "Sort by latest"
431
  msgstr "Neueste zuerst"
432
 
433
- #: includes/class.yith-wcan-filter-factory.php:90
434
  msgctxt "[Admin] Filter edit form, sorting options"
435
  msgid "Sort by price: low to high"
436
  msgstr "Sortieren nach Preis: Preis aufsteigend"
437
 
438
- #: includes/class.yith-wcan-filter-factory.php:91
439
  msgctxt "[Admin] Filter edit form, sorting options"
440
  msgid "Sort by price: high to low"
441
  msgstr "Sortieren nach Preis: Preis absteigend"
442
 
443
- #: includes/class.yith-wcan-filter.php:75
444
  msgctxt "[Admin] Default filter title"
445
  msgid "New filter"
446
  msgstr "Neuer Filter"
@@ -473,18 +547,23 @@ msgid "Close"
473
  msgstr "Schließen"
474
 
475
  #: includes/class.yith-wcan-frontend.php:582
 
 
 
 
 
476
  msgctxt "[FRONTEND] Label for filter button, on mobile modal"
477
  msgid "Show results"
478
  msgstr "Ergebnisse anzeigen"
479
 
480
- #: includes/class.yith-wcan-frontend.php:583
481
  msgctxt ""
482
  "[FRONTEND] Label for clear selection link, that appears above filter after "
483
  "selection"
484
  msgid "Clear"
485
  msgstr "Löschen"
486
 
487
- #: includes/class.yith-wcan-frontend.php:584
488
  msgctxt ""
489
  "[FRONTEND] Label for clear selection link, that appears above filter after "
490
  "selection"
@@ -497,11 +576,32 @@ msgid "Default preset"
497
  msgstr "Standard-Preset"
498
 
499
  #. translators: 1. Taxonomy name.
500
- #: includes/class.yith-wcan-install.php:271
501
  msgctxt "[ADMIN] Name of default taxonomy filter created by plugin"
502
  msgid "Filter by %s"
503
  msgstr "Nach %s filtern"
504
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
505
  #: includes/class.yith-wcan-presets.php:95
506
  #: includes/class.yith-wcan-presets.php:100
507
  msgctxt "[Admin] name of presets custom post type"
@@ -523,7 +623,7 @@ msgctxt "[ADMIN] Convert widgets tools, in preset tab"
523
  msgid "Convert widgets in a preset"
524
  msgstr "Widgets in eine Preset konvertieren"
525
 
526
- #: includes/data-stores/class.yith-wcan-preset-data-store.php:107
527
  msgctxt ""
528
  "[Generic] Error that happens when trying to read a filter preset that does "
529
  "not exist"
@@ -531,7 +631,7 @@ msgid "Invalid preset."
531
  msgstr "Ungültige Voreinstellung."
532
 
533
  #. translators: 1. Title of original preset.
534
- #: includes/data-stores/class.yith-wcan-preset-data-store.php:234
535
  msgctxt "[ADMIN] Title of the cloned preset"
536
  msgid "%s - Copy"
537
  msgstr "%s - Kopieren"
@@ -746,7 +846,7 @@ msgid "Reset all filters set by YITH WooCommerce AJAX Product Filter"
746
  msgstr ""
747
  "Alle von YITH WooCommerce AJAX Product Filter gesetzten Filter zurücksetzen "
748
 
749
- #: plugin-options/filter-options.php:117
750
  #, fuzzy
751
  msgctxt ""
752
  "[Admin] Filter edit form; logical operator that affects query behaviour"
@@ -755,7 +855,7 @@ msgstr ""
755
  "UND - Die Ergebnisse müssen mit allen ausgewählten Begriffen gleichzeitig "
756
  "übereinstimmen"
757
 
758
- #: plugin-options/filter-options.php:118
759
  #, fuzzy
760
  msgctxt ""
761
  "[Admin] Filter edit form; logical operator that affects query behaviour"
@@ -1185,37 +1285,27 @@ msgid ""
1185
  "easier to share)"
1186
  msgstr ""
1187
 
1188
- #: templates/admin/preset-edit.php:28
1189
  msgctxt "[Admin] Back link in new preset page"
1190
  msgid "< back to preset list"
1191
  msgstr "< zurück zur Preset-Liste"
1192
 
1193
- #: templates/admin/preset-edit.php:34
1194
  msgctxt "[ADMIN] Title for new preset page"
1195
  msgid "Edit filter preset"
1196
  msgstr "Filter-Preset bearbeiten"
1197
 
1198
- #: templates/admin/preset-edit.php:36
1199
  msgctxt "[ADMIN] Title for new preset page"
1200
  msgid "Add new filter preset"
1201
  msgstr "Neues Filter-Preset hinzufügen"
1202
 
1203
- #: templates/admin/preset-edit.php:47
1204
- msgctxt "[Admin] Label in new preset page"
1205
- msgid "Preset name"
1206
- msgstr "Preset-Name"
1207
-
1208
- #: templates/admin/preset-edit.php:54
1209
- msgctxt "[Admin] Label in new preset page"
1210
- msgid "Enter a name to identify this filter preset"
1211
- msgstr "Geben Sie einen Namen ein, um dieses Filter-Preset zu identifizieren"
1212
-
1213
- #: templates/admin/preset-filters.php:20
1214
- msgctxt "[Admin] Label in new preset page"
1215
- msgid "Filters of this preset"
1216
- msgstr "Filter in diesem Preset"
1217
 
1218
- #: templates/admin/preset-edit.php:68
1219
  msgctxt "[Admin] Preset save button, in new/edit preset page"
1220
  msgid "Save preset"
1221
  msgstr "Preset speichern"
@@ -1532,10 +1622,6 @@ msgstr "Filter zurücksetzen"
1532
  #~ msgstr ""
1533
  #~ "Stellen Sie den Wert für jedes Inkrement des Preisschiebereglers ein"
1534
 
1535
- #~ msgctxt "[Admin] Filter edit form"
1536
- #~ msgid "Order options"
1537
- #~ msgstr "Sortierungsoptionen"
1538
-
1539
  #~ msgctxt "[Admin] Filter edit form"
1540
  #~ msgid "Select sorting options to show"
1541
  #~ msgstr "Sortieroptionen für die Anzeige auswählen"
@@ -1622,10 +1708,6 @@ msgstr "Filter zurücksetzen"
1622
  #~ msgid "Select the default order for terms of this filter"
1623
  #~ msgstr "Wählen Sie die Standardreihenfolge für Begriffe dieses Filters"
1624
 
1625
- #~ msgctxt "[Admin] Filter edit form"
1626
- #~ msgid "Show count of items"
1627
- #~ msgstr "Anzahl der Elemente anzeigen"
1628
-
1629
  #~ msgctxt "[Admin] Filter edit form"
1630
  #~ msgid ""
1631
  #~ "Enable if you want to show how many items are available for each term"
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
  "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
 
107
  msgid "Button Label"
108
  msgstr "Button-Beschriftung"
109
 
110
+ #: init.php:148
111
  msgid ""
112
  "You can't activate the free version of YITH WooCommerce Ajax Product Filter "
113
  "while you are using the premium one."
114
  msgstr ""
115
 
116
+ #: init.php:166
117
  #, fuzzy
118
  msgid ""
119
  "YITH WooCommerce Ajax Product Filter is enabled but not effective. It "
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
  "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
  "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 "
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"
308
+
309
+ #: plugin-options/filter-options.php:32
310
  msgctxt "[Admin] Filter edit form"
311
  msgid "Filter name"
312
  msgstr "Name des Filters"
313
 
314
+ #: plugin-options/filter-options.php:35
315
  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"
348
+ "\t\t\t\t\t<span class=\"future-terms-notice\"><b>Notice:</b> if you enable "
349
+ "this option, all terms created in the future will be added to this filter as "
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/"
424
+ "images for terms.\n"
425
+ "\t\t\t\t\t<span class=\"wccl-notice\"><b>Notice:</b> optionally, you can "
426
+ "configure labels/images/colors for your attributes using YITH WooCommerce "
427
+ "Color and Label Variations options, in the term's edit page. Otherwise, just "
428
+ "enable this option and use boxes below.</span>\n"
429
+ "\t\t\t\t\t<span class=\"images-notice\"><b>Notice:</b> optionally, you can "
430
+ "configure the images in ‘edit page’ for the terms. Otherwise, just enable "
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"
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"
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"
588
+ msgstr "Standard "
589
+
590
+ #: plugin-options/preset-options.php:14
591
+ msgctxt "[Admin] Label in new preset page"
592
+ msgid "Preset name"
593
+ msgstr "Preset-Name"
594
+
595
+ #: plugin-options/preset-options.php:16
596
+ 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"
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
  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"
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
  "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"
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"
1622
  #~ msgstr ""
1623
  #~ "Stellen Sie den Wert für jedes Inkrement des Preisschiebereglers ein"
1624
 
 
 
 
 
1625
  #~ msgctxt "[Admin] Filter edit form"
1626
  #~ msgid "Select sorting options to show"
1627
  #~ msgstr "Sortieroptionen für die Anzeige auswählen"
1708
  #~ msgid "Select the default order for terms of this filter"
1709
  #~ msgstr "Wählen Sie die Standardreihenfolge für Begriffe dieses Filters"
1710
 
 
 
 
 
1711
  #~ msgctxt "[Admin] Filter edit form"
1712
  #~ msgid ""
1713
  #~ "Enable if you want to show how many items are available for each term"
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-05-18 10:20:00+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,7 +14,7 @@ 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:56
18
  msgid "Draft Preset"
19
  msgstr "Προρύθμιση Πρόχειρου"
20
 
@@ -105,13 +105,13 @@ msgstr "Επαναφορά Όλων των Φίλτρων"
105
  msgid "Button Label"
106
  msgstr "Επιγραφή Κουμπιού"
107
 
108
- #: init.php:145
109
  msgid ""
110
  "You can't activate the free version of YITH WooCommerce Ajax Product Filter "
111
  "while you are using the premium one."
112
  msgstr ""
113
 
114
- #: init.php:163
115
  #, fuzzy
116
  msgid ""
117
  "YITH WooCommerce Ajax Product Filter is enabled but not effective. It "
@@ -156,54 +156,58 @@ msgstr ""
156
  "Είστε σίγουροι ότι θέλετε να προχωρήσετε; Αυτή η διαδικασία θα προσθέσει %s "
157
  "αντικείμενα"
158
 
159
- #: includes/class.yith-wcan-admin.php:113 templates/admin/preset-filter.php:31
 
 
 
 
 
160
  msgctxt "[Admin] Message shown when filter has empty title"
161
  msgid "&lt; no title &gt;"
162
  msgstr "&lt; χωρίς τίτλο &gt;"
163
 
164
- #: includes/class.yith-wcan-admin.php:114
165
  msgctxt "[Admin] Media library title, when selecting images"
166
  msgid "Select media you want to use"
167
  msgstr "Επιλέξτε τα πολυμέσα που θέλετε να χρησιμοποιήσετε"
168
 
169
- #: includes/class.yith-wcan-admin.php:115
170
  msgctxt "[Admin] Media library confirm button, when selecting images"
171
  msgid "Use this media"
172
  msgstr "Χρησιμοποιήστε αυτά τα πολυμέσα"
173
 
174
- #: includes/class.yith-wcan-admin.php:181
175
  msgctxt "[Admin] tab name"
176
  msgid "Filter presets"
177
  msgstr "Προρυθμίσεις φίλτρου"
178
 
179
- #: includes/class.yith-wcan-admin.php:182
180
  msgctxt "[Admin] tab name"
181
  msgid "General settings"
182
  msgstr "Γενικές ρυθμίσεις"
183
 
184
- #: includes/class.yith-wcan-admin.php:183
185
  #, fuzzy
186
  msgctxt "[Admin] tab name"
187
  msgid "SEO"
188
  msgstr "SEO"
189
 
190
- #: includes/class.yith-wcan-admin.php:184
191
  msgctxt "[Admin] tab name"
192
  msgid "Premium Version"
193
  msgstr "Premium Έκδοση"
194
 
195
- #: includes/class.yith-wcan-admin.php:188
196
  msgctxt "[Admin] tab name"
197
  msgid "Legacy"
198
  msgstr "Σύστημα κληρονομιάς"
199
 
200
- #: includes/class.yith-wcan-admin.php:194
201
- #: includes/class.yith-wcan-admin.php:195
202
  msgctxt "[Admin] Menu title"
203
  msgid "Ajax Product Filter"
204
  msgstr "Ajax Product Filter"
205
 
206
- #: includes/class.yith-wcan-admin.php:196
207
  msgctxt "[Admin] Plugin description"
208
  msgid ""
209
  "It allows your users to find the product they are looking for as quickly as "
@@ -212,37 +216,44 @@ msgstr ""
212
  "Επιτρέπει στους χρήστες σας να βρουν το προϊόν που επιθυμούν το συντομότερο "
213
  "δυνατό."
214
 
215
- #: includes/class.yith-wcan-admin.php:309
 
 
 
 
 
 
 
216
  msgctxt "[Admin] Generic item name, in \"You have no x yet\""
217
  msgid "item"
218
  msgstr "αντικείμενο"
219
 
220
- #: includes/class.yith-wcan-admin.php:310
221
  msgctxt "[Admin] Preset table empty message second line"
222
  msgid "But don't worry, here you can create your first one!"
223
  msgstr "Μην ανησυχείτε, εδώ μπορείτε να δημιουργήσετε το πρώτο!"
224
 
225
- #: includes/class.yith-wcan-admin.php:458
226
  msgctxt "[ADMIN] WooCommerce Tools tab, name of the tool"
227
  msgid "Clear Product Filter transients"
228
  msgstr "Καθαρισμός μεταβάσεων φίλτρου προϊόντος"
229
 
230
- #: includes/class.yith-wcan-admin.php:464
231
  msgctxt "[ADMIN] WooCommerce Tools tab, name of the tool"
232
  msgid "Run filter widgets upgrade"
233
  msgstr "Εκτέλεση αναβάθμισης μικροεφαρμογών φίλτρου"
234
 
235
- #: includes/class.yith-wcan-admin.php:459
236
  msgctxt "[ADMIN] WooCommerce Tools tab, button for the tool"
237
  msgid "Clear"
238
  msgstr "Καθαρισμός"
239
 
240
- #: includes/class.yith-wcan-admin.php:465
241
  msgctxt "[ADMIN] WooCommerce Tools tab, button for the tool"
242
  msgid "Run"
243
  msgstr "Εκτέλεση"
244
 
245
- #: includes/class.yith-wcan-admin.php:460
246
  msgctxt "[ADMIN] WooCommerce Tools tab, description of the tool"
247
  msgid ""
248
  "This will clear all transients related to the YITH WooCommerce AJAX Product "
@@ -254,7 +265,7 @@ msgstr ""
254
  "κατα την αλλαγή της ρύθμισης του προϊόντος σας, τα φίλτρα δεν εμφανίζουν τα "
255
  "αποτελέσματα που περιμένετε. "
256
 
257
- #: includes/class.yith-wcan-admin.php:466
258
  msgctxt "[ADMIN] WooCommerce Tools tab, description of the tool"
259
  msgid ""
260
  "This will create a preset for any sidebar of your shop containing filter "
@@ -269,177 +280,240 @@ msgctxt "[Admin] Filter edit form"
269
  msgid "Taxonomy"
270
  msgstr "Ταξινομία"
271
 
272
- #: plugin-options/filter-options.php:28
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
273
  msgctxt "[Admin] Filter edit form"
274
  msgid "Filter name"
275
  msgstr "Όνομα φίλτρου"
276
 
277
- #: plugin-options/filter-options.php:31
278
  msgctxt "[Admin] Filter edit form"
279
  msgid "Enter a name to identify this filter"
280
  msgstr "Εισάγετε όνομα για να αναγνωρίζετε αυτό το φίλτρο"
281
 
282
- #: plugin-options/filter-options.php:37
283
  msgctxt "[Admin] Filter edit form"
284
  msgid "Filter for"
285
  msgstr "Ταξινόμηση για"
286
 
287
- #: plugin-options/filter-options.php:41
288
  msgctxt "[Admin] Filter edit form"
289
  msgid "Select the parameters you wish to filter for"
290
  msgstr "Επιλέξτε τις παραμέτρους που θέλετε να ταξινομήσετε"
291
 
292
- #: plugin-options/filter-options.php:47
293
  msgctxt "[Admin] Filter edit form"
294
  msgid "Choose taxonomy"
295
  msgstr "Επιλογή ταξινομίας"
296
 
297
- #: plugin-options/filter-options.php:51
298
  msgctxt "[Admin] Filter edit form"
299
  msgid "Select which taxonomy to use for this filter"
300
  msgstr ""
301
  "Επιλέξτε την ταξινομία που θέλετε να χρησιμοποιήσετε για αυτό το φίλτρο"
302
 
303
- #: plugin-options/filter-options.php:56
 
 
 
 
 
 
 
 
 
 
 
 
 
 
304
  msgctxt "[Admin] Filter edit form"
305
  msgid "Choose terms"
306
  msgstr "Επιλογή όρων"
307
 
308
- #: plugin-options/filter-options.php:61
309
  msgctxt "[Admin] Filter edit form"
310
  msgid "Select which terms to use for filtering"
311
  msgstr "Επιλέξτε ποιους όρους να χρησιμοποιήσετε για την ταξινόμηση"
312
 
313
- #: plugin-options/filter-options.php:65
314
  msgctxt "[Admin] Filter edit form"
315
  msgid "Filter type"
316
  msgstr "Τύπος φίλτρου"
317
 
318
- #: plugin-options/filter-options.php:71
319
  msgctxt "[Admin] Filter edit form"
320
- msgid "Checkbox"
321
- msgstr "Πλαίσιο ελέγχου"
322
 
323
- #: plugin-options/filter-options.php:72
 
324
  msgctxt "[Admin] Filter edit form"
325
- msgid "Select"
326
- msgstr "Επιλογή"
327
 
328
- #: plugin-options/filter-options.php:73
 
329
  msgctxt "[Admin] Filter edit form"
330
- msgid "Text"
331
- msgstr "Κείμενο"
332
 
333
- #: plugin-options/filter-options.php:74
 
334
  msgctxt "[Admin] Filter edit form"
335
- msgid "Color Swatches"
336
- msgstr "Δείγματα Χρωμάτων"
337
 
338
- #: plugin-options/filter-options.php:75
339
  msgctxt "[Admin] Filter edit form"
340
- msgid "Label"
341
- msgstr "Επιγραφή"
342
 
343
- #: plugin-options/filter-options.php:78
 
344
  msgctxt "[Admin] Filter edit form"
345
- msgid "Select the filter type for this filter"
346
- msgstr "Επιλέξτε τον τύπο για αυτό το φίλτρο"
347
 
348
- #: plugin-options/filter-options.php:82
349
  msgctxt "[Admin] Filter edit form"
350
  msgid "Columns number"
351
  msgstr "Αριθμός στηλών"
352
 
353
- #: plugin-options/filter-options.php:87
354
  msgctxt "[Admin] Filter edit form"
355
  msgid "Set the number of items per row you want to show for this design"
356
  msgstr ""
357
  "Ορίστε τον αριθμό αντικειμένων που θέλετε να εμφανίζετε ανά σειρά για αυτό "
358
  "το σχέδιο"
359
 
360
- #: plugin-options/filter-options.php:91
361
  msgctxt "[Admin] Filter edit form"
362
  msgid "Customize terms"
363
  msgstr "Προσαρμογή όρων"
364
 
365
- #: plugin-options/filter-options.php:97
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
366
  msgctxt "[Admin] Filter edit form"
367
  msgid "Show hierarchy"
368
  msgstr "Εμφάνιση ιεραρχίας"
369
 
370
- #: plugin-options/filter-options.php:100
371
  msgctxt "[Admin] Filter edit form"
372
  msgid "No, show all terms in same level"
373
  msgstr "Όχι, να εμφανίζονται όλοι οι όροι στο ίδιο επίπεδο"
374
 
375
- #: plugin-options/filter-options.php:101
376
  msgctxt "[Admin] Filter edit form"
377
  msgid "No, show only parent terms"
378
  msgstr "Όχι, να εμφανίζονται μόνο γονικοί όροι"
379
 
380
- #: plugin-options/filter-options.php:102
381
  msgctxt "[Admin] Filter edit form"
382
  msgid "Yes"
383
  msgstr ""
384
 
385
- #: plugin-options/filter-options.php:104
386
  msgctxt "[Admin] Filter edit form"
387
  msgid "Choose how to show terms hierarchy"
388
  msgstr "Επιλέξτε πώς να εμφανίζεται η ιεραρχία όρων"
389
 
390
- #: plugin-options/filter-options.php:108
391
  msgctxt "[Admin] Filter edit form"
392
  msgid "Allow multiple selection"
393
  msgstr "Επιτρέψτε πολλαπλή επιλογή"
394
 
395
- #: plugin-options/filter-options.php:110
396
  msgctxt "[Admin] Filter edit form"
397
  msgid "Enable if the user can select multiple terms when filtering products"
398
  msgstr ""
399
  "Ενεργοποιήστε αν ο χρήστης μπορεί να επιλέξει πολλαπλούς όρους κατα την "
400
  "ταξινόμηση προϊόντων"
401
 
402
- #: plugin-options/filter-options.php:114
403
  msgctxt "[Admin] Filter edit form"
404
  msgid "Multiselect relation"
405
  msgstr "Σχέση πολλαπλής επιλογής"
406
 
407
- #: plugin-options/filter-options.php:120
408
  msgctxt "[Admin] Filter edit form"
409
  msgid "Choose how multiple terms selection should behave"
410
  msgstr "Επιλέξτε την συμπεριφορά επιλογής πολλαπλών όρων"
411
 
412
- #: includes/class.yith-wcan-filter-factory.php:86
413
  msgctxt "[Admin] Filter edit form, sorting options"
414
  msgid "Default sorting"
415
  msgstr "Προεπιλεγμένη ταξινόμηση"
416
 
417
- #: includes/class.yith-wcan-filter-factory.php:87
418
  msgctxt "[Admin] Filter edit form, sorting options"
419
  msgid "Sort by popularity"
420
  msgstr "Ταξινόμηση κατά δημοτικότητα"
421
 
422
- #: includes/class.yith-wcan-filter-factory.php:88
423
  msgctxt "[Admin] Filter edit form, sorting options"
424
  msgid "Sort by average rating"
425
  msgstr "Ταξινόμηση κατα μέση αξιολόγηση"
426
 
427
- #: includes/class.yith-wcan-filter-factory.php:89
428
  msgctxt "[Admin] Filter edit form, sorting options"
429
  msgid "Sort by latest"
430
  msgstr "Ταξινόμηση κατά τελευταίο"
431
 
432
- #: includes/class.yith-wcan-filter-factory.php:90
433
  msgctxt "[Admin] Filter edit form, sorting options"
434
  msgid "Sort by price: low to high"
435
  msgstr "Ταξινόμηση ανά τιμή: χαμηλή προς υψηλή"
436
 
437
- #: includes/class.yith-wcan-filter-factory.php:91
438
  msgctxt "[Admin] Filter edit form, sorting options"
439
  msgid "Sort by price: high to low"
440
  msgstr "Ταξινόμηση ανά τιμή: υψηλή προς χαμηλή"
441
 
442
- #: includes/class.yith-wcan-filter.php:75
443
  msgctxt "[Admin] Default filter title"
444
  msgid "New filter"
445
  msgstr "Νέο φίλτρο"
@@ -472,18 +546,23 @@ msgid "Close"
472
  msgstr "Κλείσιμο"
473
 
474
  #: includes/class.yith-wcan-frontend.php:582
 
 
 
 
 
475
  msgctxt "[FRONTEND] Label for filter button, on mobile modal"
476
  msgid "Show results"
477
  msgstr "Εμφάνιση αποτελεσμάτων"
478
 
479
- #: includes/class.yith-wcan-frontend.php:583
480
  msgctxt ""
481
  "[FRONTEND] Label for clear selection link, that appears above filter after "
482
  "selection"
483
  msgid "Clear"
484
  msgstr "Καθαρισμός"
485
 
486
- #: includes/class.yith-wcan-frontend.php:584
487
  msgctxt ""
488
  "[FRONTEND] Label for clear selection link, that appears above filter after "
489
  "selection"
@@ -496,11 +575,32 @@ msgid "Default preset"
496
  msgstr "Προεπιλεγμένη προρύθμιση"
497
 
498
  #. translators: 1. Taxonomy name.
499
- #: includes/class.yith-wcan-install.php:271
500
  msgctxt "[ADMIN] Name of default taxonomy filter created by plugin"
501
  msgid "Filter by %s"
502
  msgstr "Ταξινόμηση κατά %s"
503
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
504
  #: includes/class.yith-wcan-presets.php:95
505
  #: includes/class.yith-wcan-presets.php:100
506
  msgctxt "[Admin] name of presets custom post type"
@@ -522,7 +622,7 @@ msgctxt "[ADMIN] Convert widgets tools, in preset tab"
522
  msgid "Convert widgets in a preset"
523
  msgstr "Μετατροπή μικροεφαρμογών σε προρύθμιση"
524
 
525
- #: includes/data-stores/class.yith-wcan-preset-data-store.php:107
526
  msgctxt ""
527
  "[Generic] Error that happens when trying to read a filter preset that does "
528
  "not exist"
@@ -530,7 +630,7 @@ msgid "Invalid preset."
530
  msgstr "Προρύθμιση άκυρη."
531
 
532
  #. translators: 1. Title of original preset.
533
- #: includes/data-stores/class.yith-wcan-preset-data-store.php:234
534
  msgctxt "[ADMIN] Title of the cloned preset"
535
  msgid "%s - Copy"
536
  msgstr "%s - Αντιγραφή"
@@ -747,7 +847,7 @@ msgstr ""
747
  "Επαναφορά όλων των φίλτρων που έχουν οριστεί από το YITH WooCommerce AJAX "
748
  "Product Filter"
749
 
750
- #: plugin-options/filter-options.php:117
751
  #, fuzzy
752
  msgctxt ""
753
  "[Admin] Filter edit form; logical operator that affects query behaviour"
@@ -756,7 +856,7 @@ msgstr ""
756
  "ΚΑΙ - Τα αποτελέσματα πρέπει να αντιστοιχούν σε όλους τους επιλεγμένους "
757
  "όρους ταυτόχρονα"
758
 
759
- #: plugin-options/filter-options.php:118
760
  #, fuzzy
761
  msgctxt ""
762
  "[Admin] Filter edit form; logical operator that affects query behaviour"
@@ -1182,37 +1282,27 @@ msgid ""
1182
  "easier to share)"
1183
  msgstr ""
1184
 
1185
- #: templates/admin/preset-edit.php:28
1186
  msgctxt "[Admin] Back link in new preset page"
1187
  msgid "< back to preset list"
1188
  msgstr "< πίσω στη λίστα προρύθμισης"
1189
 
1190
- #: templates/admin/preset-edit.php:34
1191
  msgctxt "[ADMIN] Title for new preset page"
1192
  msgid "Edit filter preset"
1193
  msgstr "Επεξεργασία προρύθμισης φίλτρου"
1194
 
1195
- #: templates/admin/preset-edit.php:36
1196
  msgctxt "[ADMIN] Title for new preset page"
1197
  msgid "Add new filter preset"
1198
  msgstr "Προσθήκη νέας προρύθμισης φίλτρου"
1199
 
1200
- #: templates/admin/preset-edit.php:47
1201
- msgctxt "[Admin] Label in new preset page"
1202
- msgid "Preset name"
1203
- msgstr "Όνομα προρύθμισης"
1204
-
1205
- #: templates/admin/preset-edit.php:54
1206
- msgctxt "[Admin] Label in new preset page"
1207
- msgid "Enter a name to identify this filter preset"
1208
- msgstr "Εισάγετε όνομα για να αναγνωρίζετε αυτή την προρύθμιση φίλτρου"
1209
-
1210
- #: templates/admin/preset-filters.php:20
1211
- msgctxt "[Admin] Label in new preset page"
1212
- msgid "Filters of this preset"
1213
- msgstr "Φίλτρα αυτής της προρύθμισης"
1214
 
1215
- #: templates/admin/preset-edit.php:68
1216
  msgctxt "[Admin] Preset save button, in new/edit preset page"
1217
  msgid "Save preset"
1218
  msgstr "Αποθήκευση προρύθμισης"
@@ -1534,10 +1624,6 @@ msgstr "Επαναφορά φίλτρων"
1534
  #~ msgid "Set the value for each increment of the price slider"
1535
  #~ msgstr "Ορίστε την αξία για κάθε προσαύξηση του ολισθητή τιμής"
1536
 
1537
- #~ msgctxt "[Admin] Filter edit form"
1538
- #~ msgid "Order options"
1539
- #~ msgstr "Σειρά επιλογών"
1540
-
1541
  #~ msgctxt "[Admin] Filter edit form"
1542
  #~ msgid "Select sorting options to show"
1543
  #~ msgstr "Διαλέξτε τις επιλογές ταξινόμησης προς εμφάνιση"
@@ -1622,10 +1708,6 @@ msgstr "Επαναφορά φίλτρων"
1622
  #~ msgid "Select the default order for terms of this filter"
1623
  #~ msgstr "Επιλέξτε την προεπιλεγμένη σειρά για τους όρους αυτού του φίλτρου"
1624
 
1625
- #~ msgctxt "[Admin] Filter edit form"
1626
- #~ msgid "Show count of items"
1627
- #~ msgstr "Εμφάνιση αρίθμησης αντικειμένων"
1628
-
1629
  #~ msgctxt "[Admin] Filter edit form"
1630
  #~ msgid ""
1631
  #~ "Enable if you want to show how many items are available for each term"
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
  "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
 
105
  msgid "Button Label"
106
  msgstr "Επιγραφή Κουμπιού"
107
 
108
+ #: init.php:148
109
  msgid ""
110
  "You can't activate the free version of YITH WooCommerce Ajax Product Filter "
111
  "while you are using the premium one."
112
  msgstr ""
113
 
114
+ #: init.php:166
115
  #, fuzzy
116
  msgid ""
117
  "YITH WooCommerce Ajax Product Filter is enabled but not effective. It "
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
  "Επιτρέπει στους χρήστες σας να βρουν το προϊόν που επιθυμούν το συντομότερο "
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
  "κατα την αλλαγή της ρύθμισης του προϊόντος σας, τα φίλτρα δεν εμφανίζουν τα "
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 "
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 "Επιγραφή"
307
+
308
+ #: plugin-options/filter-options.php:32
309
  msgctxt "[Admin] Filter edit form"
310
  msgid "Filter name"
311
  msgstr "Όνομα φίλτρου"
312
 
313
+ #: plugin-options/filter-options.php:35
314
  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"
348
+ "\t\t\t\t\t<span class=\"future-terms-notice\"><b>Notice:</b> if you enable "
349
+ "this option, all terms created in the future will be added to this filter as "
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/"
423
+ "images for terms.\n"
424
+ "\t\t\t\t\t<span class=\"wccl-notice\"><b>Notice:</b> optionally, you can "
425
+ "configure labels/images/colors for your attributes using YITH WooCommerce "
426
+ "Color and Label Variations options, in the term's edit page. Otherwise, just "
427
+ "enable this option and use boxes below.</span>\n"
428
+ "\t\t\t\t\t<span class=\"images-notice\"><b>Notice:</b> optionally, you can "
429
+ "configure the images in ‘edit page’ for the terms. Otherwise, just enable "
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 "Νέο φίλτρο"
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"
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"
587
+ msgstr "Προεπιλεγμένο"
588
+
589
+ #: plugin-options/preset-options.php:14
590
+ msgctxt "[Admin] Label in new preset page"
591
+ msgid "Preset name"
592
+ msgstr "Όνομα προρύθμισης"
593
+
594
+ #: plugin-options/preset-options.php:16
595
+ 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"
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
  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 - Αντιγραφή"
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
  "ΚΑΙ - Τα αποτελέσματα πρέπει να αντιστοιχούν σε όλους τους επιλεγμένους "
857
  "όρους ταυτόχρονα"
858
 
859
+ #: plugin-options/filter-options.php:148
860
  #, fuzzy
861
  msgctxt ""
862
  "[Admin] Filter edit form; logical operator that affects query behaviour"
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 "Αποθήκευση προρύθμισης"
1624
  #~ msgid "Set the value for each increment of the price slider"
1625
  #~ msgstr "Ορίστε την αξία για κάθε προσαύξηση του ολισθητή τιμής"
1626
 
 
 
 
 
1627
  #~ msgctxt "[Admin] Filter edit form"
1628
  #~ msgid "Select sorting options to show"
1629
  #~ msgstr "Διαλέξτε τις επιλογές ταξινόμησης προς εμφάνιση"
1708
  #~ msgid "Select the default order for terms of this filter"
1709
  #~ msgstr "Επιλέξτε την προεπιλεγμένη σειρά για τους όρους αυτού του φίλτρου"
1710
 
 
 
 
 
1711
  #~ msgctxt "[Admin] Filter edit form"
1712
  #~ msgid ""
1713
  #~ "Enable if you want to show how many items are available for each term"
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-05-18 10:20:00+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,7 +14,7 @@ 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:56
18
  msgid "Draft Preset"
19
  msgstr "Borrador preestablecido"
20
 
@@ -105,13 +105,13 @@ msgstr "Restablecer todos los filtros"
105
  msgid "Button Label"
106
  msgstr "Etiqueta del botón"
107
 
108
- #: init.php:145
109
  msgid ""
110
  "You can't activate the free version of YITH WooCommerce Ajax Product Filter "
111
  "while you are using the premium one."
112
  msgstr ""
113
 
114
- #: init.php:163
115
  #, fuzzy
116
  msgid ""
117
  "YITH WooCommerce Ajax Product Filter is enabled but not effective. It "
@@ -155,54 +155,58 @@ 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:113 templates/admin/preset-filter.php:31
 
 
 
 
 
159
  msgctxt "[Admin] Message shown when filter has empty title"
160
  msgid "&lt; no title &gt;"
161
  msgstr "&lt; sin título &gt;"
162
 
163
- #: includes/class.yith-wcan-admin.php:114
164
  msgctxt "[Admin] Media library title, when selecting images"
165
  msgid "Select media you want to use"
166
  msgstr "Selecciona los medios que quieres usar"
167
 
168
- #: includes/class.yith-wcan-admin.php:115
169
  msgctxt "[Admin] Media library confirm button, when selecting images"
170
  msgid "Use this media"
171
  msgstr "Utiliza estos medios"
172
 
173
- #: includes/class.yith-wcan-admin.php:181
174
  msgctxt "[Admin] tab name"
175
  msgid "Filter presets"
176
  msgstr "Filtrar prestablecidos"
177
 
178
- #: includes/class.yith-wcan-admin.php:182
179
  msgctxt "[Admin] tab name"
180
  msgid "General settings"
181
  msgstr "Ajustes generales"
182
 
183
- #: includes/class.yith-wcan-admin.php:183
184
  #, fuzzy
185
  msgctxt "[Admin] tab name"
186
  msgid "SEO"
187
  msgstr "SEO"
188
 
189
- #: includes/class.yith-wcan-admin.php:184
190
  msgctxt "[Admin] tab name"
191
  msgid "Premium Version"
192
  msgstr "Versión premium"
193
 
194
- #: includes/class.yith-wcan-admin.php:188
195
  msgctxt "[Admin] tab name"
196
  msgid "Legacy"
197
  msgstr "Heredado"
198
 
199
- #: includes/class.yith-wcan-admin.php:194
200
- #: includes/class.yith-wcan-admin.php:195
201
  msgctxt "[Admin] Menu title"
202
  msgid "Ajax Product Filter"
203
  msgstr "Ajax Product Filter"
204
 
205
- #: includes/class.yith-wcan-admin.php:196
206
  msgctxt "[Admin] Plugin description"
207
  msgid ""
208
  "It allows your users to find the product they are looking for as quickly as "
@@ -211,37 +215,44 @@ msgstr ""
211
  "Permite a tus usuarios encontrar el producto que están buscando lo más "
212
  "rápido posible."
213
 
214
- #: includes/class.yith-wcan-admin.php:309
 
 
 
 
 
 
 
215
  msgctxt "[Admin] Generic item name, in \"You have no x yet\""
216
  msgid "item"
217
  msgstr "artículo"
218
 
219
- #: includes/class.yith-wcan-admin.php:310
220
  msgctxt "[Admin] Preset table empty message second line"
221
  msgid "But don't worry, here you can create your first one!"
222
  msgstr "¡Pero no te preocupes, aquí puedes crear el primero!"
223
 
224
- #: includes/class.yith-wcan-admin.php:458
225
  msgctxt "[ADMIN] WooCommerce Tools tab, name of the tool"
226
  msgid "Clear Product Filter transients"
227
  msgstr "Limpiar datos transitorios de filtro de producto"
228
 
229
- #: includes/class.yith-wcan-admin.php:464
230
  msgctxt "[ADMIN] WooCommerce Tools tab, name of the tool"
231
  msgid "Run filter widgets upgrade"
232
  msgstr "Activar actualización de widgets de filtro"
233
 
234
- #: includes/class.yith-wcan-admin.php:459
235
  msgctxt "[ADMIN] WooCommerce Tools tab, button for the tool"
236
  msgid "Clear"
237
  msgstr "Limpìar"
238
 
239
- #: includes/class.yith-wcan-admin.php:465
240
  msgctxt "[ADMIN] WooCommerce Tools tab, button for the tool"
241
  msgid "Run"
242
  msgstr "Activar"
243
 
244
- #: includes/class.yith-wcan-admin.php:460
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 "
@@ -253,7 +264,7 @@ msgstr ""
253
  "configuración del producto y los filtros no muestran los resultados "
254
  "esperados."
255
 
256
- #: includes/class.yith-wcan-admin.php:466
257
  msgctxt "[ADMIN] WooCommerce Tools tab, description of the tool"
258
  msgid ""
259
  "This will create a preset for any sidebar of your shop containing filter "
@@ -268,176 +279,239 @@ msgctxt "[Admin] Filter edit form"
268
  msgid "Taxonomy"
269
  msgstr "Taxonomía"
270
 
271
- #: plugin-options/filter-options.php:28
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
272
  msgctxt "[Admin] Filter edit form"
273
  msgid "Filter name"
274
  msgstr "Nombre del filtro"
275
 
276
- #: plugin-options/filter-options.php:31
277
  msgctxt "[Admin] Filter edit form"
278
  msgid "Enter a name to identify this filter"
279
  msgstr "Introduce un nombre para identificar este filtro"
280
 
281
- #: plugin-options/filter-options.php:37
282
  msgctxt "[Admin] Filter edit form"
283
  msgid "Filter for"
284
  msgstr "Filtrar por"
285
 
286
- #: plugin-options/filter-options.php:41
287
  msgctxt "[Admin] Filter edit form"
288
  msgid "Select the parameters you wish to filter for"
289
  msgstr "Selecciona los parámetros por los que te gustaría filtrar"
290
 
291
- #: plugin-options/filter-options.php:47
292
  msgctxt "[Admin] Filter edit form"
293
  msgid "Choose taxonomy"
294
  msgstr "Escoger taxonomía"
295
 
296
- #: plugin-options/filter-options.php:51
297
  msgctxt "[Admin] Filter edit form"
298
  msgid "Select which taxonomy to use for this filter"
299
  msgstr "Selecciona qué categoría usar para este filtro"
300
 
301
- #: plugin-options/filter-options.php:56
 
 
 
 
 
 
 
 
 
 
 
 
 
 
302
  msgctxt "[Admin] Filter edit form"
303
  msgid "Choose terms"
304
  msgstr "Escoger términos"
305
 
306
- #: plugin-options/filter-options.php:61
307
  msgctxt "[Admin] Filter edit form"
308
  msgid "Select which terms to use for filtering"
309
  msgstr "Selecciona qué términos usar para filtrar"
310
 
311
- #: plugin-options/filter-options.php:65
312
  msgctxt "[Admin] Filter edit form"
313
  msgid "Filter type"
314
  msgstr "Tipo de filtro"
315
 
316
- #: plugin-options/filter-options.php:71
317
  msgctxt "[Admin] Filter edit form"
318
- msgid "Checkbox"
319
- msgstr "Casilla de verificación"
320
 
321
- #: plugin-options/filter-options.php:72
 
322
  msgctxt "[Admin] Filter edit form"
323
- msgid "Select"
324
- msgstr "Seleccionar"
325
 
326
- #: plugin-options/filter-options.php:73
 
327
  msgctxt "[Admin] Filter edit form"
328
- msgid "Text"
329
- msgstr "Texto"
330
 
331
- #: plugin-options/filter-options.php:74
 
332
  msgctxt "[Admin] Filter edit form"
333
- msgid "Color Swatches"
334
- msgstr "Muestras de color"
335
 
336
- #: plugin-options/filter-options.php:75
337
  msgctxt "[Admin] Filter edit form"
338
- msgid "Label"
339
- msgstr "Etiqueta"
340
 
341
- #: plugin-options/filter-options.php:78
 
342
  msgctxt "[Admin] Filter edit form"
343
- msgid "Select the filter type for this filter"
344
- msgstr "Selecciona el tipo para este filtro"
345
 
346
- #: plugin-options/filter-options.php:82
347
  msgctxt "[Admin] Filter edit form"
348
  msgid "Columns number"
349
  msgstr "Número de columnas"
350
 
351
- #: plugin-options/filter-options.php:87
352
  msgctxt "[Admin] Filter edit form"
353
  msgid "Set the number of items per row you want to show for this design"
354
  msgstr ""
355
  "Establece el número de artículos por fila que quieres mostrar para este "
356
  "diseño"
357
 
358
- #: plugin-options/filter-options.php:91
359
  msgctxt "[Admin] Filter edit form"
360
  msgid "Customize terms"
361
  msgstr "Términos personalizados"
362
 
363
- #: plugin-options/filter-options.php:97
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
364
  msgctxt "[Admin] Filter edit form"
365
  msgid "Show hierarchy"
366
  msgstr "Mostrar jerarquía"
367
 
368
- #: plugin-options/filter-options.php:100
369
  msgctxt "[Admin] Filter edit form"
370
  msgid "No, show all terms in same level"
371
  msgstr "No, mostrar todos los términos en el mismo nivel"
372
 
373
- #: plugin-options/filter-options.php:101
374
  msgctxt "[Admin] Filter edit form"
375
  msgid "No, show only parent terms"
376
  msgstr "No, mostrar solo términos superiores"
377
 
378
- #: plugin-options/filter-options.php:102
379
  msgctxt "[Admin] Filter edit form"
380
  msgid "Yes"
381
  msgstr ""
382
 
383
- #: plugin-options/filter-options.php:104
384
  msgctxt "[Admin] Filter edit form"
385
  msgid "Choose how to show terms hierarchy"
386
  msgstr "Elige cómo mostrar los términos jerárquicamente"
387
 
388
- #: plugin-options/filter-options.php:108
389
  msgctxt "[Admin] Filter edit form"
390
  msgid "Allow multiple selection"
391
  msgstr "Permitir selección múltiple"
392
 
393
- #: plugin-options/filter-options.php:110
394
  msgctxt "[Admin] Filter edit form"
395
  msgid "Enable if the user can select multiple terms when filtering products"
396
  msgstr ""
397
  "Activa si el usuario puede seleccionar múltiples términos al filtrar los "
398
  "productos"
399
 
400
- #: plugin-options/filter-options.php:114
401
  msgctxt "[Admin] Filter edit form"
402
  msgid "Multiselect relation"
403
  msgstr "Relación de multi-selección"
404
 
405
- #: plugin-options/filter-options.php:120
406
  msgctxt "[Admin] Filter edit form"
407
  msgid "Choose how multiple terms selection should behave"
408
  msgstr "Escoge cómo debe comportarse la selección de términos múltiples"
409
 
410
- #: includes/class.yith-wcan-filter-factory.php:86
411
  msgctxt "[Admin] Filter edit form, sorting options"
412
  msgid "Default sorting"
413
  msgstr "Orden predeterminado"
414
 
415
- #: includes/class.yith-wcan-filter-factory.php:87
416
  msgctxt "[Admin] Filter edit form, sorting options"
417
  msgid "Sort by popularity"
418
  msgstr "Ordenar por popularidad"
419
 
420
- #: includes/class.yith-wcan-filter-factory.php:88
421
  msgctxt "[Admin] Filter edit form, sorting options"
422
  msgid "Sort by average rating"
423
  msgstr "Ordenar por promedio de valoración"
424
 
425
- #: includes/class.yith-wcan-filter-factory.php:89
426
  msgctxt "[Admin] Filter edit form, sorting options"
427
  msgid "Sort by latest"
428
  msgstr "Ordenar por último"
429
 
430
- #: includes/class.yith-wcan-filter-factory.php:90
431
  msgctxt "[Admin] Filter edit form, sorting options"
432
  msgid "Sort by price: low to high"
433
  msgstr "Ordenar por precio: de bajo a alto"
434
 
435
- #: includes/class.yith-wcan-filter-factory.php:91
436
  msgctxt "[Admin] Filter edit form, sorting options"
437
  msgid "Sort by price: high to low"
438
  msgstr "Ordenar por precio: de alto a bajo"
439
 
440
- #: includes/class.yith-wcan-filter.php:75
441
  msgctxt "[Admin] Default filter title"
442
  msgid "New filter"
443
  msgstr "Nuevo filtro"
@@ -470,18 +544,23 @@ msgid "Close"
470
  msgstr "Cerrar"
471
 
472
  #: includes/class.yith-wcan-frontend.php:582
 
 
 
 
 
473
  msgctxt "[FRONTEND] Label for filter button, on mobile modal"
474
  msgid "Show results"
475
  msgstr "Mostrar resultados"
476
 
477
- #: includes/class.yith-wcan-frontend.php:583
478
  msgctxt ""
479
  "[FRONTEND] Label for clear selection link, that appears above filter after "
480
  "selection"
481
  msgid "Clear"
482
  msgstr "Limpiar"
483
 
484
- #: includes/class.yith-wcan-frontend.php:584
485
  msgctxt ""
486
  "[FRONTEND] Label for clear selection link, that appears above filter after "
487
  "selection"
@@ -494,11 +573,32 @@ msgid "Default preset"
494
  msgstr "Pre establecimiento predeterminado"
495
 
496
  #. translators: 1. Taxonomy name.
497
- #: includes/class.yith-wcan-install.php:271
498
  msgctxt "[ADMIN] Name of default taxonomy filter created by plugin"
499
  msgid "Filter by %s"
500
  msgstr "Filtrar por %s"
501
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
502
  #: includes/class.yith-wcan-presets.php:95
503
  #: includes/class.yith-wcan-presets.php:100
504
  msgctxt "[Admin] name of presets custom post type"
@@ -520,7 +620,7 @@ msgctxt "[ADMIN] Convert widgets tools, in preset tab"
520
  msgid "Convert widgets in a preset"
521
  msgstr "Convertir widgets en un pre establecimiento"
522
 
523
- #: includes/data-stores/class.yith-wcan-preset-data-store.php:107
524
  msgctxt ""
525
  "[Generic] Error that happens when trying to read a filter preset that does "
526
  "not exist"
@@ -528,7 +628,7 @@ msgid "Invalid preset."
528
  msgstr "Pre establecimiento no válido."
529
 
530
  #. translators: 1. Title of original preset.
531
- #: includes/data-stores/class.yith-wcan-preset-data-store.php:234
532
  msgctxt "[ADMIN] Title of the cloned preset"
533
  msgid "%s - Copy"
534
  msgstr "%s - Copiar"
@@ -743,7 +843,7 @@ msgstr ""
743
  "Restablecer todos los filtros establecidos por YITH WooCommerce Ajax Product "
744
  "Filter"
745
 
746
- #: plugin-options/filter-options.php:117
747
  #, fuzzy
748
  msgctxt ""
749
  "[Admin] Filter edit form; logical operator that affects query behaviour"
@@ -752,7 +852,7 @@ msgstr ""
752
  "Y . Los resultados deben coincidir con los términos seleccionados al mismo "
753
  "tiempo"
754
 
755
- #: plugin-options/filter-options.php:118
756
  #, fuzzy
757
  msgctxt ""
758
  "[Admin] Filter edit form; logical operator that affects query behaviour"
@@ -1179,37 +1279,27 @@ msgid ""
1179
  "easier to share)"
1180
  msgstr ""
1181
 
1182
- #: templates/admin/preset-edit.php:28
1183
  msgctxt "[Admin] Back link in new preset page"
1184
  msgid "< back to preset list"
1185
  msgstr "< volver a la lista de pre establecimiento"
1186
 
1187
- #: templates/admin/preset-edit.php:34
1188
  msgctxt "[ADMIN] Title for new preset page"
1189
  msgid "Edit filter preset"
1190
  msgstr "Editar pre establecimiento de filtro"
1191
 
1192
- #: templates/admin/preset-edit.php:36
1193
  msgctxt "[ADMIN] Title for new preset page"
1194
  msgid "Add new filter preset"
1195
  msgstr "Añadir nuevo filtro pre establecido"
1196
 
1197
- #: templates/admin/preset-edit.php:47
1198
- msgctxt "[Admin] Label in new preset page"
1199
- msgid "Preset name"
1200
- msgstr "Nombre preestablecido"
1201
-
1202
- #: templates/admin/preset-edit.php:54
1203
- msgctxt "[Admin] Label in new preset page"
1204
- msgid "Enter a name to identify this filter preset"
1205
- msgstr "Introduce un nombre para identificar este filtro pre establecido"
1206
-
1207
- #: templates/admin/preset-filters.php:20
1208
- msgctxt "[Admin] Label in new preset page"
1209
- msgid "Filters of this preset"
1210
- msgstr "Filtros para este pre establecimiento"
1211
 
1212
- #: templates/admin/preset-edit.php:68
1213
  msgctxt "[Admin] Preset save button, in new/edit preset page"
1214
  msgid "Save preset"
1215
  msgstr "Guardar pre establecimiento"
@@ -1528,10 +1618,6 @@ msgstr "Restablecer filtros"
1528
  #~ msgid "Set the value for each increment of the price slider"
1529
  #~ msgstr "Establece el valor para cada incremento del deslizante de precio"
1530
 
1531
- #~ msgctxt "[Admin] Filter edit form"
1532
- #~ msgid "Order options"
1533
- #~ msgstr "Opciones de orden"
1534
-
1535
  #~ msgctxt "[Admin] Filter edit form"
1536
  #~ msgid "Select sorting options to show"
1537
  #~ msgstr "Seleccionar orden de opciones a mostrar"
@@ -1619,10 +1705,6 @@ msgstr "Restablecer filtros"
1619
  #~ msgid "Select the default order for terms of this filter"
1620
  #~ msgstr "Selecciona el orden predeterminado para los términos de este filtro"
1621
 
1622
- #~ msgctxt "[Admin] Filter edit form"
1623
- #~ msgid "Show count of items"
1624
- #~ msgstr "Mostrar recuento de artículos"
1625
-
1626
  #~ msgctxt "[Admin] Filter edit form"
1627
  #~ msgid ""
1628
  #~ "Enable if you want to show how many items are available for each term"
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
  "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
 
105
  msgid "Button Label"
106
  msgstr "Etiqueta del botón"
107
 
108
+ #: init.php:148
109
  msgid ""
110
  "You can't activate the free version of YITH WooCommerce Ajax Product Filter "
111
  "while you are using the premium one."
112
  msgstr ""
113
 
114
+ #: init.php:166
115
  #, fuzzy
116
  msgid ""
117
  "YITH WooCommerce Ajax Product Filter is enabled but not effective. It "
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
  "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
  "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 "
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"
306
+
307
+ #: plugin-options/filter-options.php:32
308
  msgctxt "[Admin] Filter edit form"
309
  msgid "Filter name"
310
  msgstr "Nombre del filtro"
311
 
312
+ #: plugin-options/filter-options.php:35
313
  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"
346
+ "\t\t\t\t\t<span class=\"future-terms-notice\"><b>Notice:</b> if you enable "
347
+ "this option, all terms created in the future will be added to this filter as "
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/"
421
+ "images for terms.\n"
422
+ "\t\t\t\t\t<span class=\"wccl-notice\"><b>Notice:</b> optionally, you can "
423
+ "configure labels/images/colors for your attributes using YITH WooCommerce "
424
+ "Color and Label Variations options, in the term's edit page. Otherwise, just "
425
+ "enable this option and use boxes below.</span>\n"
426
+ "\t\t\t\t\t<span class=\"images-notice\"><b>Notice:</b> optionally, you can "
427
+ "configure the images in ‘edit page’ for the terms. Otherwise, just enable "
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"
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"
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"
585
+ msgstr "Predeterminado"
586
+
587
+ #: plugin-options/preset-options.php:14
588
+ msgctxt "[Admin] Label in new preset page"
589
+ msgid "Preset name"
590
+ msgstr "Nombre preestablecido"
591
+
592
+ #: plugin-options/preset-options.php:16
593
+ 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"
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
  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"
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
  "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"
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"
1618
  #~ msgid "Set the value for each increment of the price slider"
1619
  #~ msgstr "Establece el valor para cada incremento del deslizante de precio"
1620
 
 
 
 
 
1621
  #~ msgctxt "[Admin] Filter edit form"
1622
  #~ msgid "Select sorting options to show"
1623
  #~ msgstr "Seleccionar orden de opciones a mostrar"
1705
  #~ msgid "Select the default order for terms of this filter"
1706
  #~ msgstr "Selecciona el orden predeterminado para los términos de este filtro"
1707
 
 
 
 
 
1708
  #~ msgctxt "[Admin] Filter edit form"
1709
  #~ msgid ""
1710
  #~ "Enable if you want to show how many items are available for each term"
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-05-18 10:20:00+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,7 +14,7 @@ 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:56
18
  msgid "Draft Preset"
19
  msgstr ""
20
 
@@ -105,13 +105,13 @@ msgstr "Réinitialiser tous les filtres"
105
  msgid "Button Label"
106
  msgstr "Étiquette du bouton"
107
 
108
- #: init.php:145
109
  msgid ""
110
  "You can't activate the free version of YITH WooCommerce Ajax Product Filter "
111
  "while you are using the premium one."
112
  msgstr ""
113
 
114
- #: init.php:163
115
  #, fuzzy
116
  msgid ""
117
  "YITH WooCommerce Ajax Product Filter is enabled but not effective. It "
@@ -146,91 +146,102 @@ 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:113 templates/admin/preset-filter.php:31
 
 
 
 
 
150
  msgctxt "[Admin] Message shown when filter has empty title"
151
  msgid "&lt; no title &gt;"
152
  msgstr ""
153
 
154
- #: includes/class.yith-wcan-admin.php:114
155
  msgctxt "[Admin] Media library title, when selecting images"
156
  msgid "Select media you want to use"
157
  msgstr ""
158
 
159
- #: includes/class.yith-wcan-admin.php:115
160
  msgctxt "[Admin] Media library confirm button, when selecting images"
161
  msgid "Use this media"
162
  msgstr ""
163
 
164
- #: includes/class.yith-wcan-admin.php:181
165
  msgctxt "[Admin] tab name"
166
  msgid "Filter presets"
167
  msgstr ""
168
 
169
- #: includes/class.yith-wcan-admin.php:182
170
  msgctxt "[Admin] tab name"
171
  msgid "General settings"
172
  msgstr ""
173
 
174
- #: includes/class.yith-wcan-admin.php:183
175
  #, fuzzy
176
  msgctxt "[Admin] tab name"
177
  msgid "SEO"
178
  msgstr "SEO"
179
 
180
- #: includes/class.yith-wcan-admin.php:184
181
  msgctxt "[Admin] tab name"
182
  msgid "Premium Version"
183
  msgstr ""
184
 
185
- #: includes/class.yith-wcan-admin.php:188
186
  msgctxt "[Admin] tab name"
187
  msgid "Legacy"
188
  msgstr ""
189
 
190
- #: includes/class.yith-wcan-admin.php:194
191
- #: includes/class.yith-wcan-admin.php:195
192
  msgctxt "[Admin] Menu title"
193
  msgid "Ajax Product Filter"
194
  msgstr ""
195
 
196
- #: includes/class.yith-wcan-admin.php:196
197
  msgctxt "[Admin] Plugin description"
198
  msgid ""
199
  "It allows your users to find the product they are looking for as quickly as "
200
  "possible."
201
  msgstr ""
202
 
203
- #: includes/class.yith-wcan-admin.php:309
 
 
 
 
 
 
 
204
  msgctxt "[Admin] Generic item name, in \"You have no x yet\""
205
  msgid "item"
206
  msgstr ""
207
 
208
- #: includes/class.yith-wcan-admin.php:310
209
  msgctxt "[Admin] Preset table empty message second line"
210
  msgid "But don't worry, here you can create your first one!"
211
  msgstr ""
212
 
213
- #: includes/class.yith-wcan-admin.php:458
214
  msgctxt "[ADMIN] WooCommerce Tools tab, name of the tool"
215
  msgid "Clear Product Filter transients"
216
  msgstr ""
217
 
218
- #: includes/class.yith-wcan-admin.php:464
219
  msgctxt "[ADMIN] WooCommerce Tools tab, name of the tool"
220
  msgid "Run filter widgets upgrade"
221
  msgstr ""
222
 
223
- #: includes/class.yith-wcan-admin.php:459
224
  msgctxt "[ADMIN] WooCommerce Tools tab, button for the tool"
225
  msgid "Clear"
226
  msgstr ""
227
 
228
- #: includes/class.yith-wcan-admin.php:465
229
  msgctxt "[ADMIN] WooCommerce Tools tab, button for the tool"
230
  msgid "Run"
231
  msgstr ""
232
 
233
- #: includes/class.yith-wcan-admin.php:460
234
  msgctxt "[ADMIN] WooCommerce Tools tab, description of the tool"
235
  msgid ""
236
  "This will clear all transients related to the YITH WooCommerce AJAX Product "
@@ -238,7 +249,7 @@ msgid ""
238
  "and filters do not display the expected results."
239
  msgstr ""
240
 
241
- #: includes/class.yith-wcan-admin.php:466
242
  msgctxt "[ADMIN] WooCommerce Tools tab, description of the tool"
243
  msgid ""
244
  "This will create a preset for any sidebar of your shop containing filter "
@@ -250,172 +261,233 @@ msgctxt "[Admin] Filter edit form"
250
  msgid "Taxonomy"
251
  msgstr ""
252
 
253
- #: plugin-options/filter-options.php:28
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
254
  msgctxt "[Admin] Filter edit form"
255
  msgid "Filter name"
256
  msgstr ""
257
 
258
- #: plugin-options/filter-options.php:31
259
  msgctxt "[Admin] Filter edit form"
260
  msgid "Enter a name to identify this filter"
261
  msgstr ""
262
 
263
- #: plugin-options/filter-options.php:37
264
  msgctxt "[Admin] Filter edit form"
265
  msgid "Filter for"
266
  msgstr ""
267
 
268
- #: plugin-options/filter-options.php:41
269
  msgctxt "[Admin] Filter edit form"
270
  msgid "Select the parameters you wish to filter for"
271
  msgstr ""
272
 
273
- #: plugin-options/filter-options.php:47
274
  msgctxt "[Admin] Filter edit form"
275
  msgid "Choose taxonomy"
276
  msgstr ""
277
 
278
- #: plugin-options/filter-options.php:51
279
  msgctxt "[Admin] Filter edit form"
280
  msgid "Select which taxonomy to use for this filter"
281
  msgstr ""
282
 
283
- #: plugin-options/filter-options.php:56
 
 
 
 
 
 
 
 
 
 
 
 
 
 
284
  msgctxt "[Admin] Filter edit form"
285
  msgid "Choose terms"
286
  msgstr ""
287
 
288
- #: plugin-options/filter-options.php:61
289
  msgctxt "[Admin] Filter edit form"
290
  msgid "Select which terms to use for filtering"
291
  msgstr ""
292
 
293
- #: plugin-options/filter-options.php:65
294
  msgctxt "[Admin] Filter edit form"
295
  msgid "Filter type"
296
  msgstr ""
297
 
298
- #: plugin-options/filter-options.php:71
299
  msgctxt "[Admin] Filter edit form"
300
- msgid "Checkbox"
301
  msgstr ""
302
 
303
- #: plugin-options/filter-options.php:72
 
304
  msgctxt "[Admin] Filter edit form"
305
- msgid "Select"
306
- msgstr ""
307
 
308
- #: plugin-options/filter-options.php:73
 
309
  msgctxt "[Admin] Filter edit form"
310
- msgid "Text"
311
- msgstr ""
312
 
313
- #: plugin-options/filter-options.php:74
314
  msgctxt "[Admin] Filter edit form"
315
- msgid "Color Swatches"
316
  msgstr ""
317
 
318
- #: plugin-options/filter-options.php:75
319
  msgctxt "[Admin] Filter edit form"
320
- msgid "Label"
321
  msgstr ""
322
 
323
- #: plugin-options/filter-options.php:78
 
324
  msgctxt "[Admin] Filter edit form"
325
- msgid "Select the filter type for this filter"
326
- msgstr ""
327
 
328
- #: plugin-options/filter-options.php:82
329
  msgctxt "[Admin] Filter edit form"
330
  msgid "Columns number"
331
  msgstr ""
332
 
333
- #: plugin-options/filter-options.php:87
334
  msgctxt "[Admin] Filter edit form"
335
  msgid "Set the number of items per row you want to show for this design"
336
  msgstr ""
337
 
338
- #: plugin-options/filter-options.php:91
339
  msgctxt "[Admin] Filter edit form"
340
  msgid "Customize terms"
341
  msgstr ""
342
 
343
- #: plugin-options/filter-options.php:97
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
344
  msgctxt "[Admin] Filter edit form"
345
  msgid "Show hierarchy"
346
  msgstr ""
347
 
348
- #: plugin-options/filter-options.php:100
349
  msgctxt "[Admin] Filter edit form"
350
  msgid "No, show all terms in same level"
351
  msgstr ""
352
 
353
- #: plugin-options/filter-options.php:101
354
  msgctxt "[Admin] Filter edit form"
355
  msgid "No, show only parent terms"
356
  msgstr ""
357
 
358
- #: plugin-options/filter-options.php:102
359
  msgctxt "[Admin] Filter edit form"
360
  msgid "Yes"
361
  msgstr ""
362
 
363
- #: plugin-options/filter-options.php:104
364
  msgctxt "[Admin] Filter edit form"
365
  msgid "Choose how to show terms hierarchy"
366
  msgstr ""
367
 
368
- #: plugin-options/filter-options.php:108
369
  msgctxt "[Admin] Filter edit form"
370
  msgid "Allow multiple selection"
371
  msgstr ""
372
 
373
- #: plugin-options/filter-options.php:110
374
  msgctxt "[Admin] Filter edit form"
375
  msgid "Enable if the user can select multiple terms when filtering products"
376
  msgstr ""
377
 
378
- #: plugin-options/filter-options.php:114
379
  msgctxt "[Admin] Filter edit form"
380
  msgid "Multiselect relation"
381
  msgstr ""
382
 
383
- #: plugin-options/filter-options.php:120
384
  msgctxt "[Admin] Filter edit form"
385
  msgid "Choose how multiple terms selection should behave"
386
  msgstr ""
387
 
388
- #: includes/class.yith-wcan-filter-factory.php:86
389
  msgctxt "[Admin] Filter edit form, sorting options"
390
  msgid "Default sorting"
391
  msgstr ""
392
 
393
- #: includes/class.yith-wcan-filter-factory.php:87
394
  msgctxt "[Admin] Filter edit form, sorting options"
395
  msgid "Sort by popularity"
396
  msgstr ""
397
 
398
- #: includes/class.yith-wcan-filter-factory.php:88
399
  msgctxt "[Admin] Filter edit form, sorting options"
400
  msgid "Sort by average rating"
401
  msgstr ""
402
 
403
- #: includes/class.yith-wcan-filter-factory.php:89
404
  msgctxt "[Admin] Filter edit form, sorting options"
405
  msgid "Sort by latest"
406
  msgstr ""
407
 
408
- #: includes/class.yith-wcan-filter-factory.php:90
409
  msgctxt "[Admin] Filter edit form, sorting options"
410
  msgid "Sort by price: low to high"
411
  msgstr ""
412
 
413
- #: includes/class.yith-wcan-filter-factory.php:91
414
  msgctxt "[Admin] Filter edit form, sorting options"
415
  msgid "Sort by price: high to low"
416
  msgstr ""
417
 
418
- #: includes/class.yith-wcan-filter.php:75
419
  msgctxt "[Admin] Default filter title"
420
  msgid "New filter"
421
  msgstr ""
@@ -448,18 +520,23 @@ msgid "Close"
448
  msgstr ""
449
 
450
  #: includes/class.yith-wcan-frontend.php:582
 
 
 
 
 
451
  msgctxt "[FRONTEND] Label for filter button, on mobile modal"
452
  msgid "Show results"
453
  msgstr ""
454
 
455
- #: includes/class.yith-wcan-frontend.php:583
456
  msgctxt ""
457
  "[FRONTEND] Label for clear selection link, that appears above filter after "
458
  "selection"
459
  msgid "Clear"
460
  msgstr ""
461
 
462
- #: includes/class.yith-wcan-frontend.php:584
463
  msgctxt ""
464
  "[FRONTEND] Label for clear selection link, that appears above filter after "
465
  "selection"
@@ -472,11 +549,31 @@ msgid "Default preset"
472
  msgstr ""
473
 
474
  #. translators: 1. Taxonomy name.
475
- #: includes/class.yith-wcan-install.php:271
476
  msgctxt "[ADMIN] Name of default taxonomy filter created by plugin"
477
  msgid "Filter by %s"
478
  msgstr ""
479
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
480
  #: includes/class.yith-wcan-presets.php:95
481
  #: includes/class.yith-wcan-presets.php:100
482
  msgctxt "[Admin] name of presets custom post type"
@@ -498,7 +595,7 @@ msgctxt "[ADMIN] Convert widgets tools, in preset tab"
498
  msgid "Convert widgets in a preset"
499
  msgstr ""
500
 
501
- #: includes/data-stores/class.yith-wcan-preset-data-store.php:107
502
  msgctxt ""
503
  "[Generic] Error that happens when trying to read a filter preset that does "
504
  "not exist"
@@ -506,7 +603,7 @@ msgid "Invalid preset."
506
  msgstr ""
507
 
508
  #. translators: 1. Title of original preset.
509
- #: includes/data-stores/class.yith-wcan-preset-data-store.php:234
510
  msgctxt "[ADMIN] Title of the cloned preset"
511
  msgid "%s - Copy"
512
  msgstr ""
@@ -706,13 +803,13 @@ msgctxt "[Plugin Name]"
706
  msgid "Reset all filters set by YITH WooCommerce AJAX Product Filter"
707
  msgstr ""
708
 
709
- #: plugin-options/filter-options.php:117
710
  msgctxt ""
711
  "[Admin] Filter edit form; logical operator that affects query behaviour"
712
  msgid "AND - Results need to match all selected terms at the same time"
713
  msgstr ""
714
 
715
- #: plugin-options/filter-options.php:118
716
  msgctxt ""
717
  "[Admin] Filter edit form; logical operator that affects query behaviour"
718
  msgid "OR - Results need to match at least one of the selected terms"
@@ -1108,37 +1205,27 @@ msgid ""
1108
  "easier to share)"
1109
  msgstr ""
1110
 
1111
- #: templates/admin/preset-edit.php:28
1112
  msgctxt "[Admin] Back link in new preset page"
1113
  msgid "< back to preset list"
1114
  msgstr ""
1115
 
1116
- #: templates/admin/preset-edit.php:34
1117
  msgctxt "[ADMIN] Title for new preset page"
1118
  msgid "Edit filter preset"
1119
  msgstr ""
1120
 
1121
- #: templates/admin/preset-edit.php:36
1122
  msgctxt "[ADMIN] Title for new preset page"
1123
  msgid "Add new filter preset"
1124
  msgstr ""
1125
 
1126
- #: templates/admin/preset-edit.php:47
1127
- msgctxt "[Admin] Label in new preset page"
1128
- msgid "Preset name"
1129
- msgstr ""
1130
-
1131
- #: templates/admin/preset-edit.php:54
1132
- msgctxt "[Admin] Label in new preset page"
1133
- msgid "Enter a name to identify this filter preset"
1134
- msgstr ""
1135
-
1136
- #: templates/admin/preset-filters.php:20
1137
- msgctxt "[Admin] Label in new preset page"
1138
- msgid "Filters of this preset"
1139
  msgstr ""
1140
 
1141
- #: templates/admin/preset-edit.php:68
1142
  msgctxt "[Admin] Preset save button, in new/edit preset page"
1143
  msgid "Save preset"
1144
  msgstr ""
@@ -1300,9 +1387,6 @@ msgstr ""
1300
  #~ msgid "No tags found."
1301
  #~ msgstr "Aucune balise trouvée."
1302
 
1303
- #~ msgid "Show Selected"
1304
- #~ msgstr "Afficher la sélection"
1305
-
1306
  #~ msgid "Hide Selected"
1307
  #~ msgstr "Masquer la sélection"
1308
 
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
  "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
 
105
  msgid "Button Label"
106
  msgstr "Étiquette du bouton"
107
 
108
+ #: init.php:148
109
  msgid ""
110
  "You can't activate the free version of YITH WooCommerce Ajax Product Filter "
111
  "while you are using the premium one."
112
  msgstr ""
113
 
114
+ #: init.php:166
115
  #, fuzzy
116
  msgid ""
117
  "YITH WooCommerce Ajax Product Filter is enabled but not effective. It "
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
  "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 "
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 ""
288
+
289
+ #: plugin-options/filter-options.php:32
290
  msgctxt "[Admin] Filter edit form"
291
  msgid "Filter name"
292
  msgstr ""
293
 
294
+ #: plugin-options/filter-options.php:35
295
  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"
328
+ "\t\t\t\t\t<span class=\"future-terms-notice\"><b>Notice:</b> if you enable "
329
+ "this option, all terms created in the future will be added to this filter as "
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/"
400
+ "images for terms.\n"
401
+ "\t\t\t\t\t<span class=\"wccl-notice\"><b>Notice:</b> optionally, you can "
402
+ "configure labels/images/colors for your attributes using YITH WooCommerce "
403
+ "Color and Label Variations options, in the term's edit page. Otherwise, just "
404
+ "enable this option and use boxes below.</span>\n"
405
+ "\t\t\t\t\t<span class=\"images-notice\"><b>Notice:</b> optionally, you can "
406
+ "configure the images in ‘edit page’ for the terms. Otherwise, just enable "
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 ""
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"
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 ""
561
+
562
+ #: plugin-options/preset-options.php:14
563
+ msgctxt "[Admin] Label in new preset page"
564
+ msgid "Preset name"
565
+ msgstr ""
566
+
567
+ #: plugin-options/preset-options.php:16
568
+ 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"
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
  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 ""
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"
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 ""
1387
  #~ msgid "No tags found."
1388
  #~ msgstr "Aucune balise trouvée."
1389
 
 
 
 
1390
  #~ msgid "Hide Selected"
1391
  #~ msgstr "Masquer la sélection"
1392
 
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-05-18 10:20:00+00:00\n"
9
  "PO-Revision-Date: 2021-03-03 10:36+0100\n"
10
  "Last-Translator: \n"
11
  "Language-Team: \n"
@@ -16,7 +16,7 @@ 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:56
20
  msgid "Draft Preset"
21
  msgstr "Preset bozza"
22
 
@@ -107,7 +107,7 @@ msgstr "Resetta tutti i filtri"
107
  msgid "Button Label"
108
  msgstr "Etichetta Pulsante"
109
 
110
- #: init.php:145
111
  msgid ""
112
  "You can't activate the free version of YITH WooCommerce Ajax Product Filter "
113
  "while you are using the premium one."
@@ -115,7 +115,7 @@ msgstr ""
115
  "Non è possibile attivare la versione gratuita di YITH WooCommerce Ajax "
116
  "Product Filter se stai già utilizzando la versione premium."
117
 
118
- #: init.php:163
119
  msgid ""
120
  "YITH WooCommerce Ajax Product Filter is enabled but not effective. It "
121
  "requires WooCommerce in order to work."
@@ -157,53 +157,57 @@ 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:113 templates/admin/preset-filter.php:31
 
 
 
 
 
161
  msgctxt "[Admin] Message shown when filter has empty title"
162
  msgid "&lt; no title &gt;"
163
  msgstr "&lt; nessun titolo &gt;"
164
 
165
- #: includes/class.yith-wcan-admin.php:114
166
  msgctxt "[Admin] Media library title, when selecting images"
167
  msgid "Select media you want to use"
168
  msgstr "Seleziona i media da usare"
169
 
170
- #: includes/class.yith-wcan-admin.php:115
171
  msgctxt "[Admin] Media library confirm button, when selecting images"
172
  msgid "Use this media"
173
  msgstr "Usa questo media"
174
 
175
- #: includes/class.yith-wcan-admin.php:181
176
  msgctxt "[Admin] tab name"
177
  msgid "Filter presets"
178
  msgstr "Preset filtri"
179
 
180
- #: includes/class.yith-wcan-admin.php:182
181
  msgctxt "[Admin] tab name"
182
  msgid "General settings"
183
  msgstr "Impostazioni generali"
184
 
185
- #: includes/class.yith-wcan-admin.php:183
186
  msgctxt "[Admin] tab name"
187
  msgid "SEO"
188
  msgstr "SEO"
189
 
190
- #: includes/class.yith-wcan-admin.php:184
191
  msgctxt "[Admin] tab name"
192
  msgid "Premium Version"
193
  msgstr "Versione Premium"
194
 
195
- #: includes/class.yith-wcan-admin.php:188
196
  msgctxt "[Admin] tab name"
197
  msgid "Legacy"
198
  msgstr "Legacy"
199
 
200
- #: includes/class.yith-wcan-admin.php:194
201
- #: includes/class.yith-wcan-admin.php:195
202
  msgctxt "[Admin] Menu title"
203
  msgid "Ajax Product Filter"
204
  msgstr "Ajax Product Filter"
205
 
206
- #: includes/class.yith-wcan-admin.php:196
207
  msgctxt "[Admin] Plugin description"
208
  msgid ""
209
  "It allows your users to find the product they are looking for as quickly as "
@@ -212,37 +216,44 @@ msgstr ""
212
  "Permette ai tuoi utenti di trovare il prodotto che stanno cercando il più "
213
  "velocemente possibile."
214
 
215
- #: includes/class.yith-wcan-admin.php:309
 
 
 
 
 
 
 
216
  msgctxt "[Admin] Generic item name, in \"You have no x yet\""
217
  msgid "item"
218
  msgstr "elemento"
219
 
220
- #: includes/class.yith-wcan-admin.php:310
221
  msgctxt "[Admin] Preset table empty message second line"
222
  msgid "But don't worry, here you can create your first one!"
223
  msgstr "Ma non preoccuparti. Puoi iniziare a crearli qui!"
224
 
225
- #: includes/class.yith-wcan-admin.php:458
226
  msgctxt "[ADMIN] WooCommerce Tools tab, name of the tool"
227
  msgid "Clear Product Filter transients"
228
  msgstr "Cancella i transient Product Filter"
229
 
230
- #: includes/class.yith-wcan-admin.php:464
231
  msgctxt "[ADMIN] WooCommerce Tools tab, name of the tool"
232
  msgid "Run filter widgets upgrade"
233
  msgstr "Avvia l'upgrade dei widget dei filtri"
234
 
235
- #: includes/class.yith-wcan-admin.php:459
236
  msgctxt "[ADMIN] WooCommerce Tools tab, button for the tool"
237
  msgid "Clear"
238
  msgstr "Cancella"
239
 
240
- #: includes/class.yith-wcan-admin.php:465
241
  msgctxt "[ADMIN] WooCommerce Tools tab, button for the tool"
242
  msgid "Run"
243
  msgstr "Avvia"
244
 
245
- #: includes/class.yith-wcan-admin.php:460
246
  msgctxt "[ADMIN] WooCommerce Tools tab, description of the tool"
247
  msgid ""
248
  "This will clear all transients related to the YITH WooCommerce AJAX Product "
@@ -253,7 +264,7 @@ msgstr ""
253
  "Product Filter. Utile se hai cambiato la configurazione del prodotto e i "
254
  "filtri non mostrano i risultati previsti. "
255
 
256
- #: includes/class.yith-wcan-admin.php:466
257
  msgctxt "[ADMIN] WooCommerce Tools tab, description of the tool"
258
  msgid ""
259
  "This will create a preset for any sidebar of your shop containing filter "
@@ -267,172 +278,237 @@ msgctxt "[Admin] Filter edit form"
267
  msgid "Taxonomy"
268
  msgstr "Tassonomia"
269
 
270
- #: plugin-options/filter-options.php:28
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
271
  msgctxt "[Admin] Filter edit form"
272
  msgid "Filter name"
273
  msgstr "Nome filtro"
274
 
275
- #: plugin-options/filter-options.php:31
276
  msgctxt "[Admin] Filter edit form"
277
  msgid "Enter a name to identify this filter"
278
  msgstr "Inserisci un nome per definire questo filtro"
279
 
280
- #: plugin-options/filter-options.php:37
281
  msgctxt "[Admin] Filter edit form"
282
  msgid "Filter for"
283
  msgstr "Filtro per"
284
 
285
- #: plugin-options/filter-options.php:41
286
  msgctxt "[Admin] Filter edit form"
287
  msgid "Select the parameters you wish to filter for"
288
  msgstr "Seleziona il parametro per il filtro"
289
 
290
- #: plugin-options/filter-options.php:47
291
  msgctxt "[Admin] Filter edit form"
292
  msgid "Choose taxonomy"
293
  msgstr "Scegli tassonomia"
294
 
295
- #: plugin-options/filter-options.php:51
296
  msgctxt "[Admin] Filter edit form"
297
  msgid "Select which taxonomy to use for this filter"
298
  msgstr "Seleziona quale tassonomia usare per questo filtro"
299
 
300
- #: plugin-options/filter-options.php:56
 
 
 
 
 
 
 
 
 
 
 
 
 
 
301
  msgctxt "[Admin] Filter edit form"
302
  msgid "Choose terms"
303
  msgstr "Scegli termini"
304
 
305
- #: plugin-options/filter-options.php:61
306
  msgctxt "[Admin] Filter edit form"
307
  msgid "Select which terms to use for filtering"
308
  msgstr "Seleziona quali termini usare per i filtri"
309
 
310
- #: plugin-options/filter-options.php:65
311
  msgctxt "[Admin] Filter edit form"
312
  msgid "Filter type"
313
  msgstr "Tipo filtro"
314
 
315
- #: plugin-options/filter-options.php:71
316
  msgctxt "[Admin] Filter edit form"
317
- msgid "Checkbox"
318
- msgstr "Checkbox"
319
 
320
- #: plugin-options/filter-options.php:72
 
321
  msgctxt "[Admin] Filter edit form"
322
- msgid "Select"
323
- msgstr "Select"
324
 
325
- #: plugin-options/filter-options.php:73
 
326
  msgctxt "[Admin] Filter edit form"
327
- msgid "Text"
328
- msgstr "Testo"
329
 
330
- #: plugin-options/filter-options.php:74
 
331
  msgctxt "[Admin] Filter edit form"
332
- msgid "Color Swatches"
333
- msgstr "Campioni colore"
334
 
335
- #: plugin-options/filter-options.php:75
336
  msgctxt "[Admin] Filter edit form"
337
- msgid "Label"
338
- msgstr "Etichetta"
339
 
340
- #: plugin-options/filter-options.php:78
 
341
  msgctxt "[Admin] Filter edit form"
342
- msgid "Select the filter type for this filter"
343
- msgstr "Seleziona il tipo di filtro"
 
 
344
 
345
- #: plugin-options/filter-options.php:82
346
  msgctxt "[Admin] Filter edit form"
347
  msgid "Columns number"
348
  msgstr "Numero colonne"
349
 
350
- #: plugin-options/filter-options.php:87
351
  msgctxt "[Admin] Filter edit form"
352
  msgid "Set the number of items per row you want to show for this design"
353
  msgstr "Scegli il numero di elementi per riga da mostrare "
354
 
355
- #: plugin-options/filter-options.php:91
356
  msgctxt "[Admin] Filter edit form"
357
  msgid "Customize terms"
358
  msgstr "Personalizza termini"
359
 
360
- #: plugin-options/filter-options.php:97
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
361
  msgctxt "[Admin] Filter edit form"
362
  msgid "Show hierarchy"
363
  msgstr "Mostra gerarchia"
364
 
365
- #: plugin-options/filter-options.php:100
366
  msgctxt "[Admin] Filter edit form"
367
  msgid "No, show all terms in same level"
368
  msgstr "No, mostra tutti i termini nello stesso livello"
369
 
370
- #: plugin-options/filter-options.php:101
371
  msgctxt "[Admin] Filter edit form"
372
  msgid "No, show only parent terms"
373
  msgstr "No, mostra solo termini genitore"
374
 
375
- #: plugin-options/filter-options.php:102
376
  msgctxt "[Admin] Filter edit form"
377
  msgid "Yes"
378
  msgstr ""
379
 
380
- #: plugin-options/filter-options.php:104
381
  msgctxt "[Admin] Filter edit form"
382
  msgid "Choose how to show terms hierarchy"
383
  msgstr "Decidi come mostrare la gerarchia dei termini"
384
 
385
- #: plugin-options/filter-options.php:108
386
  msgctxt "[Admin] Filter edit form"
387
  msgid "Allow multiple selection"
388
  msgstr "Abilita selezione multipla"
389
 
390
- #: plugin-options/filter-options.php:110
391
  msgctxt "[Admin] Filter edit form"
392
  msgid "Enable if the user can select multiple terms when filtering products"
393
  msgstr "Abilita la selezione multipla dei termini per filtrare i prodotti"
394
 
395
- #: plugin-options/filter-options.php:114
396
  msgctxt "[Admin] Filter edit form"
397
  msgid "Multiselect relation"
398
  msgstr "Relazione seleziona multipla"
399
 
400
- #: plugin-options/filter-options.php:120
401
  msgctxt "[Admin] Filter edit form"
402
  msgid "Choose how multiple terms selection should behave"
403
  msgstr "Decidi il comportamento della selezione multipla dei termini"
404
 
405
- #: includes/class.yith-wcan-filter-factory.php:86
406
  msgctxt "[Admin] Filter edit form, sorting options"
407
  msgid "Default sorting"
408
  msgstr "Ordinamento predefinito "
409
 
410
- #: includes/class.yith-wcan-filter-factory.php:87
411
  msgctxt "[Admin] Filter edit form, sorting options"
412
  msgid "Sort by popularity"
413
  msgstr "Ordina per popolarità"
414
 
415
- #: includes/class.yith-wcan-filter-factory.php:88
416
  msgctxt "[Admin] Filter edit form, sorting options"
417
  msgid "Sort by average rating"
418
  msgstr "Ordina per valutazione media"
419
 
420
- #: includes/class.yith-wcan-filter-factory.php:89
421
  msgctxt "[Admin] Filter edit form, sorting options"
422
  msgid "Sort by latest"
423
  msgstr "Ordina per più recenti"
424
 
425
- #: includes/class.yith-wcan-filter-factory.php:90
426
  msgctxt "[Admin] Filter edit form, sorting options"
427
  msgid "Sort by price: low to high"
428
  msgstr "Ordina per prezzo: crescente"
429
 
430
- #: includes/class.yith-wcan-filter-factory.php:91
431
  msgctxt "[Admin] Filter edit form, sorting options"
432
  msgid "Sort by price: high to low"
433
  msgstr "Ordina per prezzo: decrescente"
434
 
435
- #: includes/class.yith-wcan-filter.php:75
436
  msgctxt "[Admin] Default filter title"
437
  msgid "New filter"
438
  msgstr "Nuovo filtro"
@@ -465,18 +541,23 @@ msgid "Close"
465
  msgstr "Chiudi"
466
 
467
  #: includes/class.yith-wcan-frontend.php:582
 
 
 
 
 
468
  msgctxt "[FRONTEND] Label for filter button, on mobile modal"
469
  msgid "Show results"
470
  msgstr "Mostra risultati"
471
 
472
- #: includes/class.yith-wcan-frontend.php:583
473
  msgctxt ""
474
  "[FRONTEND] Label for clear selection link, that appears above filter after "
475
  "selection"
476
  msgid "Clear"
477
  msgstr "Cancella"
478
 
479
- #: includes/class.yith-wcan-frontend.php:584
480
  msgctxt ""
481
  "[FRONTEND] Label for clear selection link, that appears above filter after "
482
  "selection"
@@ -489,11 +570,32 @@ msgid "Default preset"
489
  msgstr "Preset predefinito"
490
 
491
  #. translators: 1. Taxonomy name.
492
- #: includes/class.yith-wcan-install.php:271
493
  msgctxt "[ADMIN] Name of default taxonomy filter created by plugin"
494
  msgid "Filter by %s"
495
  msgstr "Filtra per %s"
496
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
497
  #: includes/class.yith-wcan-presets.php:95
498
  #: includes/class.yith-wcan-presets.php:100
499
  msgctxt "[Admin] name of presets custom post type"
@@ -515,7 +617,7 @@ msgctxt "[ADMIN] Convert widgets tools, in preset tab"
515
  msgid "Convert widgets in a preset"
516
  msgstr "Converti widget in preset"
517
 
518
- #: includes/data-stores/class.yith-wcan-preset-data-store.php:107
519
  msgctxt ""
520
  "[Generic] Error that happens when trying to read a filter preset that does "
521
  "not exist"
@@ -523,7 +625,7 @@ msgid "Invalid preset."
523
  msgstr "Preset non valido."
524
 
525
  #. translators: 1. Title of original preset.
526
- #: includes/data-stores/class.yith-wcan-preset-data-store.php:234
527
  msgctxt "[ADMIN] Title of the cloned preset"
528
  msgid "%s - Copy"
529
  msgstr "%s - Copia"
@@ -736,14 +838,14 @@ msgid "Reset all filters set by YITH WooCommerce AJAX Product Filter"
736
  msgstr ""
737
  "Resetta tutti i filtri impostati da YITH WooCommerce AJAX Product Filter"
738
 
739
- #: plugin-options/filter-options.php:117
740
  #, fuzzy
741
  msgctxt ""
742
  "[Admin] Filter edit form; logical operator that affects query behaviour"
743
  msgid "AND - Results need to match all selected terms at the same time"
744
  msgstr "AND - I risultati devono combaciare con tutti i termini selezionati "
745
 
746
- #: plugin-options/filter-options.php:118
747
  #, fuzzy
748
  msgctxt ""
749
  "[Admin] Filter edit form; logical operator that affects query behaviour"
@@ -1221,37 +1323,27 @@ msgstr ""
1221
  "aggiungendo i filtri applicati o di modificarlo attraverso i permalink del "
1222
  "plugin (in questo modo gli URL saranno più brevi e semplici da condividere)"
1223
 
1224
- #: templates/admin/preset-edit.php:28
1225
  msgctxt "[Admin] Back link in new preset page"
1226
  msgid "< back to preset list"
1227
  msgstr "< Torna all'elenco preset"
1228
 
1229
- #: templates/admin/preset-edit.php:34
1230
  msgctxt "[ADMIN] Title for new preset page"
1231
  msgid "Edit filter preset"
1232
  msgstr "Modifica preset filtri"
1233
 
1234
- #: templates/admin/preset-edit.php:36
1235
  msgctxt "[ADMIN] Title for new preset page"
1236
  msgid "Add new filter preset"
1237
  msgstr "Aggiungi nuovo preset filtri"
1238
 
1239
- #: templates/admin/preset-edit.php:47
1240
- msgctxt "[Admin] Label in new preset page"
1241
- msgid "Preset name"
1242
- msgstr "Nome preset"
1243
-
1244
- #: templates/admin/preset-edit.php:54
1245
- msgctxt "[Admin] Label in new preset page"
1246
- msgid "Enter a name to identify this filter preset"
1247
- msgstr "Inserisci un nome per definire questo preset di filtri"
1248
-
1249
- #: templates/admin/preset-filters.php:20
1250
- msgctxt "[Admin] Label in new preset page"
1251
- msgid "Filters of this preset"
1252
- msgstr "Filtri di questo preset"
1253
 
1254
- #: templates/admin/preset-edit.php:68
1255
  msgctxt "[Admin] Preset save button, in new/edit preset page"
1256
  msgid "Save preset"
1257
  msgstr "Salva preset"
@@ -1568,10 +1660,6 @@ msgstr "Resetta filtri"
1568
  #~ msgid "Set the value for each increment of the price slider"
1569
  #~ msgstr "Imposta il valore per gli incrementi dello slider prezzi"
1570
 
1571
- #~ msgctxt "[Admin] Filter edit form"
1572
- #~ msgid "Order options"
1573
- #~ msgstr "Opzioni ordinamento"
1574
-
1575
  #~ msgctxt "[Admin] Filter edit form"
1576
  #~ msgid "Select sorting options to show"
1577
  #~ msgstr "Seleziona le opzioni di ordinamento da mostrare"
@@ -1656,10 +1744,6 @@ msgstr "Resetta filtri"
1656
  #~ msgid "Select the default order for terms of this filter"
1657
  #~ msgstr "Seleziona l'ordinamento predefinito per i termini di questo filtro"
1658
 
1659
- #~ msgctxt "[Admin] Filter edit form"
1660
- #~ msgid "Show count of items"
1661
- #~ msgstr "Mostra conteggio elementi"
1662
-
1663
  #~ msgctxt "[Admin] Filter edit form"
1664
  #~ msgid ""
1665
  #~ "Enable if you want to show how many items are available for each term"
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
  "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
 
107
  msgid "Button Label"
108
  msgstr "Etichetta Pulsante"
109
 
110
+ #: init.php:148
111
  msgid ""
112
  "You can't activate the free version of YITH WooCommerce Ajax Product Filter "
113
  "while you are using the premium one."
115
  "Non è possibile attivare la versione gratuita di YITH WooCommerce Ajax "
116
  "Product Filter se stai già utilizzando la versione premium."
117
 
118
+ #: init.php:166
119
  msgid ""
120
  "YITH WooCommerce Ajax Product Filter is enabled but not effective. It "
121
  "requires WooCommerce in order to work."
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
  "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
  "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 "
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"
305
+
306
+ #: plugin-options/filter-options.php:32
307
  msgctxt "[Admin] Filter edit form"
308
  msgid "Filter name"
309
  msgstr "Nome filtro"
310
 
311
+ #: plugin-options/filter-options.php:35
312
  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"
345
+ "\t\t\t\t\t<span class=\"future-terms-notice\"><b>Notice:</b> if you enable "
346
+ "this option, all terms created in the future will be added to this filter as "
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"
397
+ 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/"
420
+ "images for terms.\n"
421
+ "\t\t\t\t\t<span class=\"wccl-notice\"><b>Notice:</b> optionally, you can "
422
+ "configure labels/images/colors for your attributes using YITH WooCommerce "
423
+ "Color and Label Variations options, in the term's edit page. Otherwise, just "
424
+ "enable this option and use boxes below.</span>\n"
425
+ "\t\t\t\t\t<span class=\"images-notice\"><b>Notice:</b> optionally, you can "
426
+ "configure the images in ‘edit page’ for the terms. Otherwise, just enable "
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"
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"
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"
582
+ msgstr "Predefinito"
583
+
584
+ #: plugin-options/preset-options.php:14
585
+ msgctxt "[Admin] Label in new preset page"
586
+ msgid "Preset name"
587
+ msgstr "Nome preset"
588
+
589
+ #: plugin-options/preset-options.php:16
590
+ 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"
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
  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"
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"
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"
1660
  #~ msgid "Set the value for each increment of the price slider"
1661
  #~ msgstr "Imposta il valore per gli incrementi dello slider prezzi"
1662
 
 
 
 
 
1663
  #~ msgctxt "[Admin] Filter edit form"
1664
  #~ msgid "Select sorting options to show"
1665
  #~ msgstr "Seleziona le opzioni di ordinamento da mostrare"
1744
  #~ msgid "Select the default order for terms of this filter"
1745
  #~ msgstr "Seleziona l'ordinamento predefinito per i termini di questo filtro"
1746
 
 
 
 
 
1747
  #~ msgctxt "[Admin] Filter edit form"
1748
  #~ msgid ""
1749
  #~ "Enable if you want to show how many items are available for each term"
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-05-18 10:20:00+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,7 +14,7 @@ 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:56
18
  msgid "Draft Preset"
19
  msgstr "Concept pre-set"
20
 
@@ -105,13 +105,13 @@ msgstr "Alle filters resetten"
105
  msgid "Button Label"
106
  msgstr "Labelknop"
107
 
108
- #: init.php:145
109
  msgid ""
110
  "You can't activate the free version of YITH WooCommerce Ajax Product Filter "
111
  "while you are using the premium one."
112
  msgstr ""
113
 
114
- #: init.php:163
115
  #, fuzzy
116
  msgid ""
117
  "YITH WooCommerce Ajax Product Filter is enabled but not effective. It "
@@ -153,54 +153,58 @@ 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:113 templates/admin/preset-filter.php:31
 
 
 
 
 
157
  msgctxt "[Admin] Message shown when filter has empty title"
158
  msgid "&lt; no title &gt;"
159
  msgstr "&lt; geen titel &gt;"
160
 
161
- #: includes/class.yith-wcan-admin.php:114
162
  msgctxt "[Admin] Media library title, when selecting images"
163
  msgid "Select media you want to use"
164
  msgstr "Selecteer de media die je wilt gebruiken"
165
 
166
- #: includes/class.yith-wcan-admin.php:115
167
  msgctxt "[Admin] Media library confirm button, when selecting images"
168
  msgid "Use this media"
169
  msgstr "Gebruik deze media"
170
 
171
- #: includes/class.yith-wcan-admin.php:181
172
  msgctxt "[Admin] tab name"
173
  msgid "Filter presets"
174
  msgstr "Filter pre-set"
175
 
176
- #: includes/class.yith-wcan-admin.php:182
177
  msgctxt "[Admin] tab name"
178
  msgid "General settings"
179
  msgstr "Algemene instellingen"
180
 
181
- #: includes/class.yith-wcan-admin.php:183
182
  #, fuzzy
183
  msgctxt "[Admin] tab name"
184
  msgid "SEO"
185
  msgstr "SEO"
186
 
187
- #: includes/class.yith-wcan-admin.php:184
188
  msgctxt "[Admin] tab name"
189
  msgid "Premium Version"
190
  msgstr "Premium versie"
191
 
192
- #: includes/class.yith-wcan-admin.php:188
193
  msgctxt "[Admin] tab name"
194
  msgid "Legacy"
195
  msgstr "Nalatenschap"
196
 
197
- #: includes/class.yith-wcan-admin.php:194
198
- #: includes/class.yith-wcan-admin.php:195
199
  msgctxt "[Admin] Menu title"
200
  msgid "Ajax Product Filter"
201
  msgstr "Ajax Product Filter"
202
 
203
- #: includes/class.yith-wcan-admin.php:196
204
  msgctxt "[Admin] Plugin description"
205
  msgid ""
206
  "It allows your users to find the product they are looking for as quickly as "
@@ -209,37 +213,44 @@ msgstr ""
209
  "Het laat je gebruikers het product het product dat ze zoeken, zo snel "
210
  "mogelijk vinden."
211
 
212
- #: includes/class.yith-wcan-admin.php:309
 
 
 
 
 
 
 
213
  msgctxt "[Admin] Generic item name, in \"You have no x yet\""
214
  msgid "item"
215
  msgstr "Item"
216
 
217
- #: includes/class.yith-wcan-admin.php:310
218
  msgctxt "[Admin] Preset table empty message second line"
219
  msgid "But don't worry, here you can create your first one!"
220
  msgstr "Maar geen zorgen, je kunt hier je eerste aanmaken!"
221
 
222
- #: includes/class.yith-wcan-admin.php:458
223
  msgctxt "[ADMIN] WooCommerce Tools tab, name of the tool"
224
  msgid "Clear Product Filter transients"
225
  msgstr "Product Filter transients legen"
226
 
227
- #: includes/class.yith-wcan-admin.php:464
228
  msgctxt "[ADMIN] WooCommerce Tools tab, name of the tool"
229
  msgid "Run filter widgets upgrade"
230
  msgstr "Filter widgets upgrade uitvoeren"
231
 
232
- #: includes/class.yith-wcan-admin.php:459
233
  msgctxt "[ADMIN] WooCommerce Tools tab, button for the tool"
234
  msgid "Clear"
235
  msgstr "Wissen"
236
 
237
- #: includes/class.yith-wcan-admin.php:465
238
  msgctxt "[ADMIN] WooCommerce Tools tab, button for the tool"
239
  msgid "Run"
240
  msgstr "Uitvoeren"
241
 
242
- #: includes/class.yith-wcan-admin.php:460
243
  msgctxt "[ADMIN] WooCommerce Tools tab, description of the tool"
244
  msgid ""
245
  "This will clear all transients related to the YITH WooCommerce AJAX Product "
@@ -251,7 +262,7 @@ msgstr ""
251
  "configuratie van je product hebt gewijzigd en filters niet de verwachte "
252
  "resultaten weergeven."
253
 
254
- #: includes/class.yith-wcan-admin.php:466
255
  msgctxt "[ADMIN] WooCommerce Tools tab, description of the tool"
256
  msgid ""
257
  "This will create a preset for any sidebar of your shop containing filter "
@@ -266,174 +277,237 @@ msgctxt "[Admin] Filter edit form"
266
  msgid "Taxonomy"
267
  msgstr "Taxonomie"
268
 
269
- #: plugin-options/filter-options.php:28
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
270
  msgctxt "[Admin] Filter edit form"
271
  msgid "Filter name"
272
  msgstr "Naam filter"
273
 
274
- #: plugin-options/filter-options.php:31
275
  msgctxt "[Admin] Filter edit form"
276
  msgid "Enter a name to identify this filter"
277
  msgstr "Naam invoeren voor deze filter"
278
 
279
- #: plugin-options/filter-options.php:37
280
  msgctxt "[Admin] Filter edit form"
281
  msgid "Filter for"
282
  msgstr "Filter voor"
283
 
284
- #: plugin-options/filter-options.php:41
285
  msgctxt "[Admin] Filter edit form"
286
  msgid "Select the parameters you wish to filter for"
287
  msgstr "Selecteer de parameters je wilt filteren voor"
288
 
289
- #: plugin-options/filter-options.php:47
290
  msgctxt "[Admin] Filter edit form"
291
  msgid "Choose taxonomy"
292
  msgstr "Kies taxonomie"
293
 
294
- #: plugin-options/filter-options.php:51
295
  msgctxt "[Admin] Filter edit form"
296
  msgid "Select which taxonomy to use for this filter"
297
  msgstr "Selecteer welke taxonomie je wilt gebruiken voor deze filter"
298
 
299
- #: plugin-options/filter-options.php:56
 
 
 
 
 
 
 
 
 
 
 
 
 
 
300
  msgctxt "[Admin] Filter edit form"
301
  msgid "Choose terms"
302
  msgstr "Kies termen"
303
 
304
- #: plugin-options/filter-options.php:61
305
  msgctxt "[Admin] Filter edit form"
306
  msgid "Select which terms to use for filtering"
307
  msgstr "Selecteer welke termen je wilt gebruiken voor filteren"
308
 
309
- #: plugin-options/filter-options.php:65
310
  msgctxt "[Admin] Filter edit form"
311
  msgid "Filter type"
312
  msgstr "Filter type"
313
 
314
- #: plugin-options/filter-options.php:71
315
  msgctxt "[Admin] Filter edit form"
316
- msgid "Checkbox"
317
- msgstr "Keuzevakje"
318
 
319
- #: plugin-options/filter-options.php:72
 
320
  msgctxt "[Admin] Filter edit form"
321
- msgid "Select"
322
- msgstr "Selecteren"
323
 
324
- #: plugin-options/filter-options.php:73
 
325
  msgctxt "[Admin] Filter edit form"
326
- msgid "Text"
327
- msgstr "Tekst"
328
 
329
- #: plugin-options/filter-options.php:74
 
330
  msgctxt "[Admin] Filter edit form"
331
- msgid "Color Swatches"
332
- msgstr "Kleur swatches"
333
 
334
- #: plugin-options/filter-options.php:75
335
  msgctxt "[Admin] Filter edit form"
336
- msgid "Label"
337
- msgstr "Label"
338
 
339
- #: plugin-options/filter-options.php:78
 
340
  msgctxt "[Admin] Filter edit form"
341
- msgid "Select the filter type for this filter"
342
- msgstr "Selecteer het filter type voor deze filter"
343
 
344
- #: plugin-options/filter-options.php:82
345
  msgctxt "[Admin] Filter edit form"
346
  msgid "Columns number"
347
  msgstr "Kolommen nummer"
348
 
349
- #: plugin-options/filter-options.php:87
350
  msgctxt "[Admin] Filter edit form"
351
  msgid "Set the number of items per row you want to show for this design"
352
  msgstr "Kies het aantal items per rij dat je wilt tonen voor dit ontwerp"
353
 
354
- #: plugin-options/filter-options.php:91
355
  msgctxt "[Admin] Filter edit form"
356
  msgid "Customize terms"
357
  msgstr "Aangepaste termen"
358
 
359
- #: plugin-options/filter-options.php:97
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
360
  msgctxt "[Admin] Filter edit form"
361
  msgid "Show hierarchy"
362
  msgstr "Toon hiërarchie "
363
 
364
- #: plugin-options/filter-options.php:100
365
  msgctxt "[Admin] Filter edit form"
366
  msgid "No, show all terms in same level"
367
  msgstr "Nee, toon alle termen in hetzelfde niveau"
368
 
369
- #: plugin-options/filter-options.php:101
370
  msgctxt "[Admin] Filter edit form"
371
  msgid "No, show only parent terms"
372
  msgstr "Nee, alleen hoofd-termen tonen"
373
 
374
- #: plugin-options/filter-options.php:102
375
  msgctxt "[Admin] Filter edit form"
376
  msgid "Yes"
377
  msgstr ""
378
 
379
- #: plugin-options/filter-options.php:104
380
  msgctxt "[Admin] Filter edit form"
381
  msgid "Choose how to show terms hierarchy"
382
  msgstr "Bepaal hoe je de termen hiërarchie wilt tonen"
383
 
384
- #: plugin-options/filter-options.php:108
385
  msgctxt "[Admin] Filter edit form"
386
  msgid "Allow multiple selection"
387
  msgstr "Meervoudige selectie toestaan"
388
 
389
- #: plugin-options/filter-options.php:110
390
  msgctxt "[Admin] Filter edit form"
391
  msgid "Enable if the user can select multiple terms when filtering products"
392
  msgstr ""
393
  "Inschakelen als de gebruiker meerdere termen can selecteren bij het filteren "
394
  "van producten"
395
 
396
- #: plugin-options/filter-options.php:114
397
  msgctxt "[Admin] Filter edit form"
398
  msgid "Multiselect relation"
399
  msgstr "Multi-selecteren relatie"
400
 
401
- #: plugin-options/filter-options.php:120
402
  msgctxt "[Admin] Filter edit form"
403
  msgid "Choose how multiple terms selection should behave"
404
  msgstr "Bepaal het gedrag van meervoudige termen selectie"
405
 
406
- #: includes/class.yith-wcan-filter-factory.php:86
407
  msgctxt "[Admin] Filter edit form, sorting options"
408
  msgid "Default sorting"
409
  msgstr "Standaard sortering"
410
 
411
- #: includes/class.yith-wcan-filter-factory.php:87
412
  msgctxt "[Admin] Filter edit form, sorting options"
413
  msgid "Sort by popularity"
414
  msgstr "Sorteren op populariteit"
415
 
416
- #: includes/class.yith-wcan-filter-factory.php:88
417
  msgctxt "[Admin] Filter edit form, sorting options"
418
  msgid "Sort by average rating"
419
  msgstr "Sorteren op gemiddelde waardering"
420
 
421
- #: includes/class.yith-wcan-filter-factory.php:89
422
  msgctxt "[Admin] Filter edit form, sorting options"
423
  msgid "Sort by latest"
424
  msgstr "Sorteren op laaste"
425
 
426
- #: includes/class.yith-wcan-filter-factory.php:90
427
  msgctxt "[Admin] Filter edit form, sorting options"
428
  msgid "Sort by price: low to high"
429
  msgstr "Sorteren op prijs: laag naar hoog"
430
 
431
- #: includes/class.yith-wcan-filter-factory.php:91
432
  msgctxt "[Admin] Filter edit form, sorting options"
433
  msgid "Sort by price: high to low"
434
  msgstr "Sorteren op prijs: hoog naar laag"
435
 
436
- #: includes/class.yith-wcan-filter.php:75
437
  msgctxt "[Admin] Default filter title"
438
  msgid "New filter"
439
  msgstr "Nieuwe filter"
@@ -466,18 +540,23 @@ msgid "Close"
466
  msgstr "Sluiten"
467
 
468
  #: includes/class.yith-wcan-frontend.php:582
 
 
 
 
 
469
  msgctxt "[FRONTEND] Label for filter button, on mobile modal"
470
  msgid "Show results"
471
  msgstr "Resultaten weergeven"
472
 
473
- #: includes/class.yith-wcan-frontend.php:583
474
  msgctxt ""
475
  "[FRONTEND] Label for clear selection link, that appears above filter after "
476
  "selection"
477
  msgid "Clear"
478
  msgstr "Wissen"
479
 
480
- #: includes/class.yith-wcan-frontend.php:584
481
  msgctxt ""
482
  "[FRONTEND] Label for clear selection link, that appears above filter after "
483
  "selection"
@@ -490,11 +569,32 @@ msgid "Default preset"
490
  msgstr "Standaard pre-set"
491
 
492
  #. translators: 1. Taxonomy name.
493
- #: includes/class.yith-wcan-install.php:271
494
  msgctxt "[ADMIN] Name of default taxonomy filter created by plugin"
495
  msgid "Filter by %s"
496
  msgstr "Filter op %s"
497
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
498
  #: includes/class.yith-wcan-presets.php:95
499
  #: includes/class.yith-wcan-presets.php:100
500
  msgctxt "[Admin] name of presets custom post type"
@@ -516,7 +616,7 @@ msgctxt "[ADMIN] Convert widgets tools, in preset tab"
516
  msgid "Convert widgets in a preset"
517
  msgstr "Widgets omzetten in een pre-set"
518
 
519
- #: includes/data-stores/class.yith-wcan-preset-data-store.php:107
520
  msgctxt ""
521
  "[Generic] Error that happens when trying to read a filter preset that does "
522
  "not exist"
@@ -524,7 +624,7 @@ msgid "Invalid preset."
524
  msgstr "Ongeldige pre-set"
525
 
526
  #. translators: 1. Title of original preset.
527
- #: includes/data-stores/class.yith-wcan-preset-data-store.php:234
528
  msgctxt "[ADMIN] Title of the cloned preset"
529
  msgid "%s - Copy"
530
  msgstr "%s - Kopieer"
@@ -739,7 +839,7 @@ msgstr ""
739
  "Alle filters terugzetten die zijn ingesteld door YITH WooCommerce AJAX "
740
  "Product Filter"
741
 
742
- #: plugin-options/filter-options.php:117
743
  #, fuzzy
744
  msgctxt ""
745
  "[Admin] Filter edit form; logical operator that affects query behaviour"
@@ -747,7 +847,7 @@ msgid "AND - Results need to match all selected terms at the same time"
747
  msgstr ""
748
  "EN - Resultaten moeten matchen met alle geselecteerde termen tegelijkertijd"
749
 
750
- #: plugin-options/filter-options.php:118
751
  #, fuzzy
752
  msgctxt ""
753
  "[Admin] Filter edit form; logical operator that affects query behaviour"
@@ -1172,37 +1272,27 @@ msgid ""
1172
  "easier to share)"
1173
  msgstr ""
1174
 
1175
- #: templates/admin/preset-edit.php:28
1176
  msgctxt "[Admin] Back link in new preset page"
1177
  msgid "< back to preset list"
1178
  msgstr "< terug naar pre-set lijst"
1179
 
1180
- #: templates/admin/preset-edit.php:34
1181
  msgctxt "[ADMIN] Title for new preset page"
1182
  msgid "Edit filter preset"
1183
  msgstr "Filter pre-set bewerken"
1184
 
1185
- #: templates/admin/preset-edit.php:36
1186
  msgctxt "[ADMIN] Title for new preset page"
1187
  msgid "Add new filter preset"
1188
  msgstr "Nieuwe filter pre-set toevoegen"
1189
 
1190
- #: templates/admin/preset-edit.php:47
1191
- msgctxt "[Admin] Label in new preset page"
1192
- msgid "Preset name"
1193
- msgstr "Pre-set naam"
1194
-
1195
- #: templates/admin/preset-edit.php:54
1196
- msgctxt "[Admin] Label in new preset page"
1197
- msgid "Enter a name to identify this filter preset"
1198
- msgstr "Naam invoeren voor deze filter pre-set"
1199
-
1200
- #: templates/admin/preset-filters.php:20
1201
- msgctxt "[Admin] Label in new preset page"
1202
- msgid "Filters of this preset"
1203
- msgstr "Filters van deze pre-set"
1204
 
1205
- #: templates/admin/preset-edit.php:68
1206
  msgctxt "[Admin] Preset save button, in new/edit preset page"
1207
  msgid "Save preset"
1208
  msgstr "Pre-set opslaan"
@@ -1519,10 +1609,6 @@ msgstr "Filters resetten"
1519
  #~ msgid "Set the value for each increment of the price slider"
1520
  #~ msgstr "bepaal de hoogte van elke waardevermeerdering van de prijs slider"
1521
 
1522
- #~ msgctxt "[Admin] Filter edit form"
1523
- #~ msgid "Order options"
1524
- #~ msgstr "Bestelling opties"
1525
-
1526
  #~ msgctxt "[Admin] Filter edit form"
1527
  #~ msgid "Select sorting options to show"
1528
  #~ msgstr "Selecteer sorteer opties om te tonen"
@@ -1607,10 +1693,6 @@ msgstr "Filters resetten"
1607
  #~ msgid "Select the default order for terms of this filter"
1608
  #~ msgstr "Selecteer de standaard volgorde voor termen van deze filter"
1609
 
1610
- #~ msgctxt "[Admin] Filter edit form"
1611
- #~ msgid "Show count of items"
1612
- #~ msgstr "Toon item telling"
1613
-
1614
  #~ msgctxt "[Admin] Filter edit form"
1615
  #~ msgid ""
1616
  #~ "Enable if you want to show how many items are available for each term"
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
  "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
 
105
  msgid "Button Label"
106
  msgstr "Labelknop"
107
 
108
+ #: init.php:148
109
  msgid ""
110
  "You can't activate the free version of YITH WooCommerce Ajax Product Filter "
111
  "while you are using the premium one."
112
  msgstr ""
113
 
114
+ #: init.php:166
115
  #, fuzzy
116
  msgid ""
117
  "YITH WooCommerce Ajax Product Filter is enabled but not effective. It "
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
  "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
  "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 "
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"
304
+
305
+ #: plugin-options/filter-options.php:32
306
  msgctxt "[Admin] Filter edit form"
307
  msgid "Filter name"
308
  msgstr "Naam filter"
309
 
310
+ #: plugin-options/filter-options.php:35
311
  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"
344
+ "\t\t\t\t\t<span class=\"future-terms-notice\"><b>Notice:</b> if you enable "
345
+ "this option, all terms created in the future will be added to this filter as "
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/"
417
+ "images for terms.\n"
418
+ "\t\t\t\t\t<span class=\"wccl-notice\"><b>Notice:</b> optionally, you can "
419
+ "configure labels/images/colors for your attributes using YITH WooCommerce "
420
+ "Color and Label Variations options, in the term's edit page. Otherwise, just "
421
+ "enable this option and use boxes below.</span>\n"
422
+ "\t\t\t\t\t<span class=\"images-notice\"><b>Notice:</b> optionally, you can "
423
+ "configure the images in ‘edit page’ for the terms. Otherwise, just enable "
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"
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"
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"
581
+ msgstr "Standaard"
582
+
583
+ #: plugin-options/preset-options.php:14
584
+ msgctxt "[Admin] Label in new preset page"
585
+ msgid "Preset name"
586
+ msgstr "Pre-set naam"
587
+
588
+ #: plugin-options/preset-options.php:16
589
+ 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"
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
  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"
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
  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"
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"
1609
  #~ msgid "Set the value for each increment of the price slider"
1610
  #~ msgstr "bepaal de hoogte van elke waardevermeerdering van de prijs slider"
1611
 
 
 
 
 
1612
  #~ msgctxt "[Admin] Filter edit form"
1613
  #~ msgid "Select sorting options to show"
1614
  #~ msgstr "Selecteer sorteer opties om te tonen"
1693
  #~ msgid "Select the default order for terms of this filter"
1694
  #~ msgstr "Selecteer de standaard volgorde voor termen van deze filter"
1695
 
 
 
 
 
1696
  #~ msgctxt "[Admin] Filter edit form"
1697
  #~ msgid ""
1698
  #~ "Enable if you want to show how many items are available for each term"
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-05-18 10:20:00+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,7 +21,7 @@ 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:56
25
  msgid "Draft Preset"
26
  msgstr ""
27
 
@@ -124,13 +124,13 @@ msgstr "Tüm Filtreleri Sıfırla"
124
  msgid "Button Label"
125
  msgstr "Buton Metni"
126
 
127
- #: init.php:145
128
  msgid ""
129
  "You can't activate the free version of YITH WooCommerce Ajax Product Filter "
130
  "while you are using the premium one."
131
  msgstr ""
132
 
133
- #: init.php:163
134
  msgid ""
135
  "YITH WooCommerce Ajax Product Filter is enabled but not effective. It "
136
  "requires WooCommerce in order to work."
@@ -162,93 +162,104 @@ 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:113 templates/admin/preset-filter.php:31
 
 
 
 
 
166
  msgctxt "[Admin] Message shown when filter has empty title"
167
  msgid "&lt; no title &gt;"
168
  msgstr ""
169
 
170
- #: includes/class.yith-wcan-admin.php:114
171
  msgctxt "[Admin] Media library title, when selecting images"
172
  msgid "Select media you want to use"
173
  msgstr ""
174
 
175
- #: includes/class.yith-wcan-admin.php:115
176
  msgctxt "[Admin] Media library confirm button, when selecting images"
177
  msgid "Use this media"
178
  msgstr ""
179
 
180
- #: includes/class.yith-wcan-admin.php:181
181
  #, fuzzy
182
  msgctxt "[Admin] tab name"
183
  msgid "Filter presets"
184
  msgstr "Filtre Listesi:"
185
 
186
- #: includes/class.yith-wcan-admin.php:182
187
  msgctxt "[Admin] tab name"
188
  msgid "General settings"
189
  msgstr ""
190
 
191
- #: includes/class.yith-wcan-admin.php:183
192
  msgctxt "[Admin] tab name"
193
  msgid "SEO"
194
  msgstr ""
195
 
196
- #: includes/class.yith-wcan-admin.php:184
197
  msgctxt "[Admin] tab name"
198
  msgid "Premium Version"
199
  msgstr ""
200
 
201
- #: includes/class.yith-wcan-admin.php:188
202
  msgctxt "[Admin] tab name"
203
  msgid "Legacy"
204
  msgstr ""
205
 
206
  # @ yit
207
- #: includes/class.yith-wcan-admin.php:194
208
- #: includes/class.yith-wcan-admin.php:195
209
  #, fuzzy
210
  msgctxt "[Admin] Menu title"
211
  msgid "Ajax Product Filter"
212
  msgstr "YITH WooCommerce Ajax Navigation"
213
 
214
- #: includes/class.yith-wcan-admin.php:196
215
  msgctxt "[Admin] Plugin description"
216
  msgid ""
217
  "It allows your users to find the product they are looking for as quickly as "
218
  "possible."
219
  msgstr ""
220
 
221
- #: includes/class.yith-wcan-admin.php:309
 
 
 
 
 
 
 
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:310
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:458
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:464
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:459
242
  msgctxt "[ADMIN] WooCommerce Tools tab, button for the tool"
243
  msgid "Clear"
244
  msgstr ""
245
 
246
- #: includes/class.yith-wcan-admin.php:465
247
  msgctxt "[ADMIN] WooCommerce Tools tab, button for the tool"
248
  msgid "Run"
249
  msgstr ""
250
 
251
- #: includes/class.yith-wcan-admin.php:460
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 "
@@ -256,7 +267,7 @@ msgid ""
256
  "and filters do not display the expected results."
257
  msgstr ""
258
 
259
- #: includes/class.yith-wcan-admin.php:466
260
  msgctxt "[ADMIN] WooCommerce Tools tab, description of the tool"
261
  msgid ""
262
  "This will create a preset for any sidebar of your shop containing filter "
@@ -268,178 +279,238 @@ msgctxt "[Admin] Filter edit form"
268
  msgid "Taxonomy"
269
  msgstr ""
270
 
271
- #: plugin-options/filter-options.php:28
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
272
  msgctxt "[Admin] Filter edit form"
273
  msgid "Filter name"
274
  msgstr ""
275
 
276
- #: plugin-options/filter-options.php:31
277
  msgctxt "[Admin] Filter edit form"
278
  msgid "Enter a name to identify this filter"
279
  msgstr ""
280
 
281
- #: plugin-options/filter-options.php:37
282
  #, fuzzy
283
  msgctxt "[Admin] Filter edit form"
284
  msgid "Filter for"
285
  msgstr "Filtre Listesi:"
286
 
287
- #: plugin-options/filter-options.php:41
288
  msgctxt "[Admin] Filter edit form"
289
  msgid "Select the parameters you wish to filter for"
290
  msgstr ""
291
 
292
- #: plugin-options/filter-options.php:47
293
  msgctxt "[Admin] Filter edit form"
294
  msgid "Choose taxonomy"
295
  msgstr ""
296
 
297
- #: plugin-options/filter-options.php:51
298
  msgctxt "[Admin] Filter edit form"
299
  msgid "Select which taxonomy to use for this filter"
300
  msgstr ""
301
 
302
- #: plugin-options/filter-options.php:56
 
 
 
 
 
 
 
 
 
 
 
 
 
 
303
  msgctxt "[Admin] Filter edit form"
304
  msgid "Choose terms"
305
  msgstr ""
306
 
307
- #: plugin-options/filter-options.php:61
308
  msgctxt "[Admin] Filter edit form"
309
  msgid "Select which terms to use for filtering"
310
  msgstr ""
311
 
312
- #: plugin-options/filter-options.php:65
313
  #, fuzzy
314
  msgctxt "[Admin] Filter edit form"
315
  msgid "Filter type"
316
  msgstr "Filtre Listesi:"
317
 
318
- #: plugin-options/filter-options.php:71
319
  msgctxt "[Admin] Filter edit form"
320
- msgid "Checkbox"
321
  msgstr ""
322
 
323
  # @ yit
324
- #: plugin-options/filter-options.php:72
325
  #, fuzzy
326
  msgctxt "[Admin] Filter edit form"
327
- msgid "Select"
328
- msgstr "Bir tarih seçin"
329
 
330
- #: plugin-options/filter-options.php:73
331
  msgctxt "[Admin] Filter edit form"
332
- msgid "Text"
333
  msgstr ""
334
 
335
- #: plugin-options/filter-options.php:74
336
  msgctxt "[Admin] Filter edit form"
337
- msgid "Color Swatches"
338
  msgstr ""
339
 
340
- # @ yit
341
- #: plugin-options/filter-options.php:75
342
- #, fuzzy
343
  msgctxt "[Admin] Filter edit form"
344
- msgid "Label"
345
- msgstr "Etiket"
346
 
347
- #: plugin-options/filter-options.php:78
348
  msgctxt "[Admin] Filter edit form"
349
- msgid "Select the filter type for this filter"
350
  msgstr ""
351
 
352
- #: plugin-options/filter-options.php:82
353
  msgctxt "[Admin] Filter edit form"
354
  msgid "Columns number"
355
  msgstr ""
356
 
357
- #: plugin-options/filter-options.php:87
358
  msgctxt "[Admin] Filter edit form"
359
  msgid "Set the number of items per row you want to show for this design"
360
  msgstr ""
361
 
362
- #: plugin-options/filter-options.php:91
363
  msgctxt "[Admin] Filter edit form"
364
  msgid "Customize terms"
365
  msgstr ""
366
 
367
- #: plugin-options/filter-options.php:97
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
368
  msgctxt "[Admin] Filter edit form"
369
  msgid "Show hierarchy"
370
  msgstr ""
371
 
372
- #: plugin-options/filter-options.php:100
373
  msgctxt "[Admin] Filter edit form"
374
  msgid "No, show all terms in same level"
375
  msgstr ""
376
 
377
- #: plugin-options/filter-options.php:101
378
  msgctxt "[Admin] Filter edit form"
379
  msgid "No, show only parent terms"
380
  msgstr ""
381
 
382
- #: plugin-options/filter-options.php:102
383
  msgctxt "[Admin] Filter edit form"
384
  msgid "Yes"
385
  msgstr ""
386
 
387
- #: plugin-options/filter-options.php:104
388
  msgctxt "[Admin] Filter edit form"
389
  msgid "Choose how to show terms hierarchy"
390
  msgstr ""
391
 
392
- #: plugin-options/filter-options.php:108
393
  msgctxt "[Admin] Filter edit form"
394
  msgid "Allow multiple selection"
395
  msgstr ""
396
 
397
- #: plugin-options/filter-options.php:110
398
  msgctxt "[Admin] Filter edit form"
399
  msgid "Enable if the user can select multiple terms when filtering products"
400
  msgstr ""
401
 
402
- #: plugin-options/filter-options.php:114
403
  msgctxt "[Admin] Filter edit form"
404
  msgid "Multiselect relation"
405
  msgstr ""
406
 
407
- #: plugin-options/filter-options.php:120
408
  msgctxt "[Admin] Filter edit form"
409
  msgid "Choose how multiple terms selection should behave"
410
  msgstr ""
411
 
412
- #: includes/class.yith-wcan-filter-factory.php:86
413
  msgctxt "[Admin] Filter edit form, sorting options"
414
  msgid "Default sorting"
415
  msgstr ""
416
 
417
- #: includes/class.yith-wcan-filter-factory.php:87
418
  msgctxt "[Admin] Filter edit form, sorting options"
419
  msgid "Sort by popularity"
420
  msgstr ""
421
 
422
- #: includes/class.yith-wcan-filter-factory.php:88
423
  msgctxt "[Admin] Filter edit form, sorting options"
424
  msgid "Sort by average rating"
425
  msgstr ""
426
 
427
- #: includes/class.yith-wcan-filter-factory.php:89
428
  msgctxt "[Admin] Filter edit form, sorting options"
429
  msgid "Sort by latest"
430
  msgstr ""
431
 
432
- #: includes/class.yith-wcan-filter-factory.php:90
433
  msgctxt "[Admin] Filter edit form, sorting options"
434
  msgid "Sort by price: low to high"
435
  msgstr ""
436
 
437
- #: includes/class.yith-wcan-filter-factory.php:91
438
  msgctxt "[Admin] Filter edit form, sorting options"
439
  msgid "Sort by price: high to low"
440
  msgstr ""
441
 
442
- #: includes/class.yith-wcan-filter.php:75
443
  msgctxt "[Admin] Default filter title"
444
  msgid "New filter"
445
  msgstr ""
@@ -472,18 +543,23 @@ msgid "Close"
472
  msgstr ""
473
 
474
  #: includes/class.yith-wcan-frontend.php:582
 
 
 
 
 
475
  msgctxt "[FRONTEND] Label for filter button, on mobile modal"
476
  msgid "Show results"
477
  msgstr ""
478
 
479
- #: includes/class.yith-wcan-frontend.php:583
480
  msgctxt ""
481
  "[FRONTEND] Label for clear selection link, that appears above filter after "
482
  "selection"
483
  msgid "Clear"
484
  msgstr ""
485
 
486
- #: includes/class.yith-wcan-frontend.php:584
487
  msgctxt ""
488
  "[FRONTEND] Label for clear selection link, that appears above filter after "
489
  "selection"
@@ -496,12 +572,33 @@ msgid "Default preset"
496
  msgstr ""
497
 
498
  #. translators: 1. Taxonomy name.
499
- #: includes/class.yith-wcan-install.php:271
500
  #, fuzzy
501
  msgctxt "[ADMIN] Name of default taxonomy filter created by plugin"
502
  msgid "Filter by %s"
503
  msgstr "Filtre Listesi:"
504
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
505
  #: includes/class.yith-wcan-presets.php:95
506
  #: includes/class.yith-wcan-presets.php:100
507
  #, fuzzy
@@ -525,7 +622,7 @@ msgctxt "[ADMIN] Convert widgets tools, in preset tab"
525
  msgid "Convert widgets in a preset"
526
  msgstr ""
527
 
528
- #: includes/data-stores/class.yith-wcan-preset-data-store.php:107
529
  msgctxt ""
530
  "[Generic] Error that happens when trying to read a filter preset that does "
531
  "not exist"
@@ -533,7 +630,7 @@ msgid "Invalid preset."
533
  msgstr ""
534
 
535
  #. translators: 1. Title of original preset.
536
- #: includes/data-stores/class.yith-wcan-preset-data-store.php:234
537
  msgctxt "[ADMIN] Title of the cloned preset"
538
  msgid "%s - Copy"
539
  msgstr ""
@@ -743,13 +840,13 @@ msgid "Reset all filters set by YITH WooCommerce AJAX Product Filter"
743
  msgstr ""
744
  "YITH WooCommerce Ajax Navigation için ayarlanmış tüm filtreleri sıfırlayın"
745
 
746
- #: plugin-options/filter-options.php:117
747
  msgctxt ""
748
  "[Admin] Filter edit form; logical operator that affects query behaviour"
749
  msgid "AND - Results need to match all selected terms at the same time"
750
  msgstr ""
751
 
752
- #: plugin-options/filter-options.php:118
753
  msgctxt ""
754
  "[Admin] Filter edit form; logical operator that affects query behaviour"
755
  msgid "OR - Results need to match at least one of the selected terms"
@@ -1146,38 +1243,27 @@ msgid ""
1146
  "easier to share)"
1147
  msgstr ""
1148
 
1149
- #: templates/admin/preset-edit.php:28
1150
  msgctxt "[Admin] Back link in new preset page"
1151
  msgid "< back to preset list"
1152
  msgstr ""
1153
 
1154
- #: templates/admin/preset-edit.php:34
1155
  msgctxt "[ADMIN] Title for new preset page"
1156
  msgid "Edit filter preset"
1157
  msgstr ""
1158
 
1159
- #: templates/admin/preset-edit.php:36
1160
  msgctxt "[ADMIN] Title for new preset page"
1161
  msgid "Add new filter preset"
1162
  msgstr ""
1163
 
1164
- #: templates/admin/preset-edit.php:47
1165
- msgctxt "[Admin] Label in new preset page"
1166
- msgid "Preset name"
1167
- msgstr ""
1168
-
1169
- #: templates/admin/preset-edit.php:54
1170
- msgctxt "[Admin] Label in new preset page"
1171
- msgid "Enter a name to identify this filter preset"
1172
  msgstr ""
1173
 
1174
- #: templates/admin/preset-filters.php:20
1175
- #, fuzzy
1176
- msgctxt "[Admin] Label in new preset page"
1177
- msgid "Filters of this preset"
1178
- msgstr "Filtre Listesi:"
1179
-
1180
- #: templates/admin/preset-edit.php:68
1181
  msgctxt "[Admin] Preset save button, in new/edit preset page"
1182
  msgid "Save preset"
1183
  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
  "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
 
124
  msgid "Button Label"
125
  msgstr "Buton Metni"
126
 
127
+ #: init.php:148
128
  msgid ""
129
  "You can't activate the free version of YITH WooCommerce Ajax Product Filter "
130
  "while you are using the premium one."
131
  msgstr ""
132
 
133
+ #: init.php:166
134
  msgid ""
135
  "YITH WooCommerce Ajax Product Filter is enabled but not effective. It "
136
  "requires WooCommerce in order to work."
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
  "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 "
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"
309
+ msgstr "Etiket"
310
+
311
+ #: plugin-options/filter-options.php:32
312
  msgctxt "[Admin] Filter edit form"
313
  msgid "Filter name"
314
  msgstr ""
315
 
316
+ #: plugin-options/filter-options.php:35
317
  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"
351
+ "\t\t\t\t\t<span class=\"future-terms-notice\"><b>Notice:</b> if you enable "
352
+ "this option, all terms created in the future will be added to this filter as "
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/"
423
+ "images for terms.\n"
424
+ "\t\t\t\t\t<span class=\"wccl-notice\"><b>Notice:</b> optionally, you can "
425
+ "configure labels/images/colors for your attributes using YITH WooCommerce "
426
+ "Color and Label Variations options, in the term's edit page. Otherwise, just "
427
+ "enable this option and use boxes below.</span>\n"
428
+ "\t\t\t\t\t<span class=\"images-notice\"><b>Notice:</b> optionally, you can "
429
+ "configure the images in ‘edit page’ for the terms. Otherwise, just enable "
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 ""
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"
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 ""
585
+
586
+ #: plugin-options/preset-options.php:14
587
+ msgctxt "[Admin] Label in new preset page"
588
+ msgid "Preset name"
589
+ msgstr ""
590
+
591
+ #: plugin-options/preset-options.php:16
592
+ 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
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
  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 ""
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"
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 ""
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-05-18 10:20:00+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,7 +29,7 @@ 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:56
33
  msgid "Draft Preset"
34
  msgstr ""
35
 
@@ -120,13 +120,13 @@ msgstr ""
120
  msgid "Button Label"
121
  msgstr ""
122
 
123
- #: init.php:145
124
  msgid ""
125
  "You can't activate the free version of YITH WooCommerce Ajax Product Filter "
126
  "while you are using the premium one."
127
  msgstr ""
128
 
129
- #: init.php:163
130
  msgid ""
131
  "YITH WooCommerce Ajax Product Filter is enabled but not effective. It "
132
  "requires WooCommerce in order to work."
@@ -158,90 +158,101 @@ 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:113 templates/admin/preset-filter.php:31
 
 
 
 
 
162
  msgctxt "[Admin] Message shown when filter has empty title"
163
  msgid "&lt; no title &gt;"
164
  msgstr ""
165
 
166
- #: includes/class.yith-wcan-admin.php:114
167
  msgctxt "[Admin] Media library title, when selecting images"
168
  msgid "Select media you want to use"
169
  msgstr ""
170
 
171
- #: includes/class.yith-wcan-admin.php:115
172
  msgctxt "[Admin] Media library confirm button, when selecting images"
173
  msgid "Use this media"
174
  msgstr ""
175
 
176
- #: includes/class.yith-wcan-admin.php:181
177
  msgctxt "[Admin] tab name"
178
  msgid "Filter presets"
179
  msgstr ""
180
 
181
- #: includes/class.yith-wcan-admin.php:182
182
  msgctxt "[Admin] tab name"
183
  msgid "General settings"
184
  msgstr ""
185
 
186
- #: includes/class.yith-wcan-admin.php:183
187
  msgctxt "[Admin] tab name"
188
  msgid "SEO"
189
  msgstr ""
190
 
191
- #: includes/class.yith-wcan-admin.php:184
192
  msgctxt "[Admin] tab name"
193
  msgid "Premium Version"
194
  msgstr ""
195
 
196
- #: includes/class.yith-wcan-admin.php:188
197
  msgctxt "[Admin] tab name"
198
  msgid "Legacy"
199
  msgstr ""
200
 
201
- #: includes/class.yith-wcan-admin.php:194
202
- #: includes/class.yith-wcan-admin.php:195
203
  msgctxt "[Admin] Menu title"
204
  msgid "Ajax Product Filter"
205
  msgstr ""
206
 
207
- #: includes/class.yith-wcan-admin.php:196
208
  msgctxt "[Admin] Plugin description"
209
  msgid ""
210
  "It allows your users to find the product they are looking for as quickly as "
211
  "possible."
212
  msgstr ""
213
 
214
- #: includes/class.yith-wcan-admin.php:309
 
 
 
 
 
 
 
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:310
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:458
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:464
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:459
235
  msgctxt "[ADMIN] WooCommerce Tools tab, button for the tool"
236
  msgid "Clear"
237
  msgstr ""
238
 
239
- #: includes/class.yith-wcan-admin.php:465
240
  msgctxt "[ADMIN] WooCommerce Tools tab, button for the tool"
241
  msgid "Run"
242
  msgstr ""
243
 
244
- #: includes/class.yith-wcan-admin.php:460
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,7 +260,7 @@ msgid ""
249
  "configuration, and filters do not display the expected results."
250
  msgstr ""
251
 
252
- #: includes/class.yith-wcan-admin.php:466
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 "
@@ -261,172 +272,230 @@ msgctxt "[Admin] Filter edit form"
261
  msgid "Taxonomy"
262
  msgstr ""
263
 
264
- #: plugin-options/filter-options.php:28
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
265
  msgctxt "[Admin] Filter edit form"
266
  msgid "Filter name"
267
  msgstr ""
268
 
269
- #: plugin-options/filter-options.php:31
270
  msgctxt "[Admin] Filter edit form"
271
  msgid "Enter a name to identify this filter"
272
  msgstr ""
273
 
274
- #: plugin-options/filter-options.php:37
275
  msgctxt "[Admin] Filter edit form"
276
  msgid "Filter for"
277
  msgstr ""
278
 
279
- #: plugin-options/filter-options.php:41
280
  msgctxt "[Admin] Filter edit form"
281
  msgid "Select the parameters you wish to filter for"
282
  msgstr ""
283
 
284
- #: plugin-options/filter-options.php:47
285
  msgctxt "[Admin] Filter edit form"
286
  msgid "Choose taxonomy"
287
  msgstr ""
288
 
289
- #: plugin-options/filter-options.php:51
290
  msgctxt "[Admin] Filter edit form"
291
  msgid "Select which taxonomy to use for this filter"
292
  msgstr ""
293
 
294
- #: plugin-options/filter-options.php:56
 
 
 
 
 
 
 
 
 
 
 
 
 
 
295
  msgctxt "[Admin] Filter edit form"
296
  msgid "Choose terms"
297
  msgstr ""
298
 
299
- #: plugin-options/filter-options.php:61
300
  msgctxt "[Admin] Filter edit form"
301
  msgid "Select which terms to use for filtering"
302
  msgstr ""
303
 
304
- #: plugin-options/filter-options.php:65
305
  msgctxt "[Admin] Filter edit form"
306
  msgid "Filter type"
307
  msgstr ""
308
 
309
- #: plugin-options/filter-options.php:71
310
  msgctxt "[Admin] Filter edit form"
311
- msgid "Checkbox"
312
  msgstr ""
313
 
314
- #: plugin-options/filter-options.php:72
315
  msgctxt "[Admin] Filter edit form"
316
- msgid "Select"
317
  msgstr ""
318
 
319
- #: plugin-options/filter-options.php:73
320
  msgctxt "[Admin] Filter edit form"
321
- msgid "Text"
322
  msgstr ""
323
 
324
- #: plugin-options/filter-options.php:74
325
  msgctxt "[Admin] Filter edit form"
326
- msgid "Color Swatches"
327
  msgstr ""
328
 
329
- #: plugin-options/filter-options.php:75
330
  msgctxt "[Admin] Filter edit form"
331
- msgid "Label"
332
  msgstr ""
333
 
334
- #: plugin-options/filter-options.php:78
335
  msgctxt "[Admin] Filter edit form"
336
- msgid "Select the filter type for this filter"
337
  msgstr ""
338
 
339
- #: plugin-options/filter-options.php:82
340
  msgctxt "[Admin] Filter edit form"
341
  msgid "Columns number"
342
  msgstr ""
343
 
344
- #: plugin-options/filter-options.php:87
345
  msgctxt "[Admin] Filter edit form"
346
  msgid "Set the number of items per row you want to show for this design"
347
  msgstr ""
348
 
349
- #: plugin-options/filter-options.php:91
350
  msgctxt "[Admin] Filter edit form"
351
  msgid "Customize terms"
352
  msgstr ""
353
 
354
- #: plugin-options/filter-options.php:97
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
355
  msgctxt "[Admin] Filter edit form"
356
  msgid "Show hierarchy"
357
  msgstr ""
358
 
359
- #: plugin-options/filter-options.php:100
360
  msgctxt "[Admin] Filter edit form"
361
  msgid "No, show all terms in same level"
362
  msgstr ""
363
 
364
- #: plugin-options/filter-options.php:101
365
  msgctxt "[Admin] Filter edit form"
366
  msgid "No, show only parent terms"
367
  msgstr ""
368
 
369
- #: plugin-options/filter-options.php:102
370
  msgctxt "[Admin] Filter edit form"
371
  msgid "Yes"
372
  msgstr ""
373
 
374
- #: plugin-options/filter-options.php:104
375
  msgctxt "[Admin] Filter edit form"
376
  msgid "Choose how to show terms hierarchy"
377
  msgstr ""
378
 
379
- #: plugin-options/filter-options.php:108
380
  msgctxt "[Admin] Filter edit form"
381
  msgid "Allow multiple selection"
382
  msgstr ""
383
 
384
- #: plugin-options/filter-options.php:110
385
  msgctxt "[Admin] Filter edit form"
386
  msgid "Enable if the user can select multiple terms when filtering products"
387
  msgstr ""
388
 
389
- #: plugin-options/filter-options.php:114
390
  msgctxt "[Admin] Filter edit form"
391
  msgid "Multiselect relation"
392
  msgstr ""
393
 
394
- #: plugin-options/filter-options.php:120
395
  msgctxt "[Admin] Filter edit form"
396
  msgid "Choose how multiple terms selection should behave"
397
  msgstr ""
398
 
399
- #: includes/class.yith-wcan-filter-factory.php:86
400
  msgctxt "[Admin] Filter edit form, sorting options"
401
  msgid "Default sorting"
402
  msgstr ""
403
 
404
- #: includes/class.yith-wcan-filter-factory.php:87
405
  msgctxt "[Admin] Filter edit form, sorting options"
406
  msgid "Sort by popularity"
407
  msgstr ""
408
 
409
- #: includes/class.yith-wcan-filter-factory.php:88
410
  msgctxt "[Admin] Filter edit form, sorting options"
411
  msgid "Sort by average rating"
412
  msgstr ""
413
 
414
- #: includes/class.yith-wcan-filter-factory.php:89
415
  msgctxt "[Admin] Filter edit form, sorting options"
416
  msgid "Sort by latest"
417
  msgstr ""
418
 
419
- #: includes/class.yith-wcan-filter-factory.php:90
420
  msgctxt "[Admin] Filter edit form, sorting options"
421
  msgid "Sort by price: low to high"
422
  msgstr ""
423
 
424
- #: includes/class.yith-wcan-filter-factory.php:91
425
  msgctxt "[Admin] Filter edit form, sorting options"
426
  msgid "Sort by price: high to low"
427
  msgstr ""
428
 
429
- #: includes/class.yith-wcan-filter.php:75
430
  msgctxt "[Admin] Default filter title"
431
  msgid "New filter"
432
  msgstr ""
@@ -459,18 +528,23 @@ msgid "Close"
459
  msgstr ""
460
 
461
  #: includes/class.yith-wcan-frontend.php:582
 
 
 
 
 
462
  msgctxt "[FRONTEND] Label for filter button, on mobile modal"
463
  msgid "Show results"
464
  msgstr ""
465
 
466
- #: includes/class.yith-wcan-frontend.php:583
467
  msgctxt ""
468
  "[FRONTEND] Label for clear selection link, that appears above filter after "
469
  "selection"
470
  msgid "Clear"
471
  msgstr ""
472
 
473
- #: includes/class.yith-wcan-frontend.php:584
474
  msgctxt ""
475
  "[FRONTEND] Label for clear selection link, that appears above filter after "
476
  "selection"
@@ -482,12 +556,32 @@ msgctxt "[ADMIN] Name of default preset that is installed with the plugin"
482
  msgid "Default preset"
483
  msgstr ""
484
 
485
- #: includes/class.yith-wcan-install.php:271
486
  #. translators: 1. Taxonomy name.
487
  msgctxt "[ADMIN] Name of default taxonomy filter created by plugin"
488
  msgid "Filter by %s"
489
  msgstr ""
490
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
491
  #: includes/class.yith-wcan-presets.php:95
492
  #: includes/class.yith-wcan-presets.php:100
493
  msgctxt "[Admin] name of presets custom post type"
@@ -509,14 +603,14 @@ msgctxt "[ADMIN] Convert widgets tools, in preset tab"
509
  msgid "Convert widgets in a preset"
510
  msgstr ""
511
 
512
- #: includes/data-stores/class.yith-wcan-preset-data-store.php:107
513
  msgctxt ""
514
  "[Generic] Error that happens when trying to read a filter preset that does "
515
  "not exist"
516
  msgid "Invalid preset."
517
  msgstr ""
518
 
519
- #: includes/data-stores/class.yith-wcan-preset-data-store.php:234
520
  #. translators: 1. Title of original preset.
521
  msgctxt "[ADMIN] Title of the cloned preset"
522
  msgid "%s - Copy"
@@ -712,12 +806,12 @@ msgctxt "[Plugin Name]"
712
  msgid "Reset all filters set by YITH WooCommerce AJAX Product Filter"
713
  msgstr ""
714
 
715
- #: plugin-options/filter-options.php:117
716
  msgctxt "[Admin] Filter edit form; logical operator that affects query behaviour"
717
  msgid "AND - Results need to match all selected terms at the same time"
718
  msgstr ""
719
 
720
- #: plugin-options/filter-options.php:118
721
  msgctxt "[Admin] Filter edit form; logical operator that affects query behaviour"
722
  msgid "OR - Results need to match at least one of the selected terms"
723
  msgstr ""
@@ -1107,37 +1201,27 @@ msgid ""
1107
  "easier to share)"
1108
  msgstr ""
1109
 
1110
- #: templates/admin/preset-edit.php:28
1111
  msgctxt "[Admin] Back link in new preset page"
1112
  msgid "< back to preset list"
1113
  msgstr ""
1114
 
1115
- #: templates/admin/preset-edit.php:34
1116
  msgctxt "[ADMIN] Title for new preset page"
1117
  msgid "Edit filter preset"
1118
  msgstr ""
1119
 
1120
- #: templates/admin/preset-edit.php:36
1121
  msgctxt "[ADMIN] Title for new preset page"
1122
  msgid "Add new filter preset"
1123
  msgstr ""
1124
 
1125
- #: templates/admin/preset-edit.php:47
1126
- msgctxt "[Admin] Label in new preset page"
1127
- msgid "Preset name"
1128
- msgstr ""
1129
-
1130
- #: templates/admin/preset-edit.php:54
1131
- msgctxt "[Admin] Label in new preset page"
1132
- msgid "Enter a name to identify this filter preset"
1133
- msgstr ""
1134
-
1135
- #: templates/admin/preset-filters.php:20
1136
- msgctxt "[Admin] Label in new preset page"
1137
- msgid "Filters of this preset"
1138
  msgstr ""
1139
 
1140
- #: templates/admin/preset-edit.php:68
1141
  msgctxt "[Admin] Preset save button, in new/edit preset page"
1142
  msgid "Save preset"
1143
  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
  "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
 
120
  msgid "Button Label"
121
  msgstr ""
122
 
123
+ #: init.php:148
124
  msgid ""
125
  "You can't activate the free version of YITH WooCommerce Ajax Product Filter "
126
  "while you are using the premium one."
127
  msgstr ""
128
 
129
+ #: init.php:166
130
  msgid ""
131
  "YITH WooCommerce Ajax Product Filter is enabled but not effective. It "
132
  "requires WooCommerce in order to work."
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
  "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 "
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 ""
299
+
300
+ #: plugin-options/filter-options.php:32
301
  msgctxt "[Admin] Filter edit form"
302
  msgid "Filter name"
303
  msgstr ""
304
 
305
+ #: plugin-options/filter-options.php:35
306
  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"
339
+ "\t\t\t\t\t<span class=\"future-terms-notice\"><b>Notice:</b> if you enable "
340
+ "this option, all terms created in the future will be added to this filter "
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 "
408
+ "labels/images for terms.\n"
409
+ "\t\t\t\t\t<span class=\"wccl-notice\"><b>Notice:</b> optionally, you can "
410
+ "configure labels/images/colors for your attributes using YITH WooCommerce "
411
+ "Color and Label Variations options, in the term's edit page. Otherwise, "
412
+ "just enable this option and use boxes below.</span>\n"
413
+ "\t\t\t\t\t<span class=\"images-notice\"><b>Notice:</b> optionally, you can "
414
+ "configure the images in ‘edit page’ for the terms. Otherwise, just enable "
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 ""
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"
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 ""
569
+
570
+ #: plugin-options/preset-options.php:14
571
+ msgctxt "[Admin] Label in new preset page"
572
+ msgid "Preset name"
573
+ msgstr ""
574
+
575
+ #: plugin-options/preset-options.php:16
576
+ 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"
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"
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 ""
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 ""
plugin-fw/assets/css/yit-plugin-panel.css CHANGED
@@ -78,6 +78,242 @@
78
  margin : 0;
79
  }
80
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
81
 
82
  /**
83
  Post type Edit
@@ -760,16 +996,25 @@ li.yith-plugin-fw-tab-element a.nav-tab i:before {
760
  */
761
 
762
  button#yith-plugin-fw-float-save-button {
 
763
  align-items : center;
764
- border-radius : 20px;
765
  bottom : 50px;
766
  box-shadow : 0 0 6px 3px rgba(0, 121, 159, .2);
767
- display : flex;
768
  padding : 6px 20px;
769
  position : fixed;
770
  right : 70px;
771
  text-transform : uppercase;
772
  z-index : 2;
 
 
 
 
 
 
 
 
 
773
  }
774
 
775
  button#yith-plugin-fw-float-save-button i {
@@ -778,7 +1023,7 @@ button#yith-plugin-fw-float-save-button i {
778
  }
779
 
780
  button#yith-plugin-fw-float-save-button:hover {
781
- box-shadow : 0 0 6px 3px rgba(0, 121, 159, .4);
782
  }
783
 
784
  button#yith-plugin-fw-float-save-button.green {
@@ -798,6 +1043,23 @@ button#yith-plugin-fw-float-save-button.green {
798
 
799
  }
800
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
801
  @media (min-width : 768px) and (max-width : 992px) {
802
  }
803
 
78
  margin : 0;
79
  }
80
 
81
+ /**
82
+ Help tab
83
+ */
84
+
85
+ .yith-plugin-fw-panel-help-tab-container {
86
+ background-color : #fff;
87
+ padding : 60px 25px;
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;
95
+ padding : 40px 40px 60px;
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
+
103
+ .yith-plugin-fw-panel-help-tab-content .row {
104
+ margin : 0 -15px 50px;
105
+ white-space : nowrap;
106
+ }
107
+
108
+ .yith-plugin-fw-panel-help-tab-content .row:last-child {
109
+ margin-bottom : 0;
110
+ }
111
+
112
+ .yith-plugin-fw-panel-help-tab-content .row .column-left,
113
+ .yith-plugin-fw-panel-help-tab-content .row .column-right {
114
+ display : inline-block;
115
+ padding : 0 15px;
116
+ vertical-align : top;
117
+ width : 66%;
118
+ }
119
+
120
+ .yith-plugin-fw-panel-help-tab-content .row .column-right {
121
+ width : 33%;
122
+ }
123
+
124
+ .yith-plugin-fw-panel-help-tab-content .yith-plugin-fw-help-tab-video,
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 {
133
+ background : none;
134
+ border : none;
135
+ font-size : 22px;
136
+ line-height : 1.5em;
137
+ padding : 0;
138
+ text-align : center;
139
+ }
140
+
141
+ .yith-plugin-fw-panel-help-tab-content h3 {
142
+ color : #03689F;
143
+ font-size : 15px;
144
+ }
145
+
146
+ .yith-plugin-fw-panel-help-tab-content .yith-plugin-fw-panel-tab-description {
147
+ font-size : 18px;
148
+ text-align : center;
149
+ margin-bottom : 40px;
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 {
157
+ margin-bottom : 25px;
158
+ }
159
+
160
+ .yith-plugin-fw-panel-help-tab-content .yith-plugin-fw-help-tab-video .video-caption p {
161
+ margin : 5px 0;
162
+ }
163
+
164
+ .yith-plugin-fw-panel-help-tab-content .yith-plugin-fw-help-tab-video .video-container {
165
+ margin : 0 auto 50px;
166
+ overflow : hidden;
167
+ padding-top : 56.25%;
168
+ position : relative;
169
+ }
170
+
171
+ .yith-plugin-fw-panel-help-tab-content .yith-plugin-fw-help-tab-video .video-container iframe {
172
+ border : 0;
173
+ height : 100%;
174
+ left : 0;
175
+ position : absolute;
176
+ top : 0;
177
+ width : 100%;
178
+ }
179
+
180
+ .yith-plugin-fw-panel-help-tab-content .box-with-shadow {
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
+
188
+ .yith-plugin-fw-panel-help-tab-content ul.yith-plugin-fw-help-tab-actions,
189
+ .yith-plugin-fw-panel-help-tab-content .yith-plugin-fw-submit-ticket {
190
+ margin : 0 auto;
191
+ max-width : 640px;
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 {
199
+ margin-bottom : 20px;
200
+ }
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;
218
+ line-height : 1;
219
+ margin-left : -50px;
220
+ -webkit-font-smoothing : antialiased;
221
+ -moz-osx-font-smoothing : grayscale;
222
+ }
223
+
224
+ .yith-plugin-fw-panel-help-tab-content ul.yith-plugin-fw-help-tab-actions li.read-documentation a:before {
225
+ content : '\f10d';
226
+ }
227
+
228
+ .yith-plugin-fw-panel-help-tab-content ul.yith-plugin-fw-help-tab-actions li.watch-videotutorials a:before {
229
+ content : '\f10e';
230
+ }
231
+
232
+ .yith-plugin-fw-panel-help-tab-content ul.yith-plugin-fw-help-tab-actions li.check-faqs a:before {
233
+ content : '\f10c';
234
+ }
235
+
236
+ .yith-plugin-fw-panel-help-tab-content ul.yith-plugin-fw-help-tab-actions li h4 {
237
+ margin : 0 0 5px;
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
+
245
+ .yith-plugin-fw-panel-help-tab-content ul.yith-plugin-fw-help-tab-actions li .description {
246
+ margin : 0;
247
+ font-size : 14px;
248
+ }
249
+
250
+ .yith-plugin-fw-panel-help-tab-content ul.yith-plugin-fw-help-tab-actions li .separator {
251
+ display : inline-block;
252
+ margin : 0 5px;
253
+ }
254
+
255
+ .yith-plugin-fw-panel-help-tab-content .yith-plugin-fw-hc-articles h3 {
256
+ font-size : 18px;
257
+ margin : 0;
258
+ padding : 10px 0;
259
+ position : relative;
260
+
261
+ }
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;
269
+ position : absolute;
270
+ top : 0;
271
+ width : 15px;
272
+
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 {
280
+ margin : 15px 0 30px;
281
+ }
282
+
283
+ .yith-plugin-fw-panel-help-tab-content .yith-plugin-fw-hc-articles-list li {
284
+ display : block;
285
+ margin-bottom : 10px;
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
  /**
319
  Post type Edit
996
  */
997
 
998
  button#yith-plugin-fw-float-save-button {
999
+ display : none;
1000
  align-items : center;
1001
+ border-radius : 60px;
1002
  bottom : 50px;
1003
  box-shadow : 0 0 6px 3px rgba(0, 121, 159, .2);
 
1004
  padding : 6px 20px;
1005
  position : fixed;
1006
  right : 70px;
1007
  text-transform : uppercase;
1008
  z-index : 2;
1009
+ transition : 0.3s ease-in-out;
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 {
1017
+ display : flex;
1018
  }
1019
 
1020
  button#yith-plugin-fw-float-save-button i {
1023
  }
1024
 
1025
  button#yith-plugin-fw-float-save-button:hover {
1026
+ box-shadow : 0px 1px 6px 3px rgba(0, 121, 159, .3);
1027
  }
1028
 
1029
  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
+
1063
  @media (min-width : 768px) and (max-width : 992px) {
1064
  }
1065
 
plugin-fw/assets/css/yith-fields.css CHANGED
@@ -710,11 +710,11 @@ YITH UI
710
  .yith-plugin-ui input[type=number],
711
  .yith-plugin-ui.metaboxes-tab input[type=number],
712
  .yith-plugin-ui input[type=text],
713
- .yith-plugin-ui input[type=text],
714
  .yith-plugin-ui input[type=email],
715
  .yith-plugin-ui input[type=password],
716
  .yith-plugin-ui .search-box input[name="s"],
717
  .yith-plugin-fw.yith-plugin-ui input[type=text]:not(.select2-search__field),
 
718
  .woocommerce.yith-plugin-fw-panel .yith-plugin-ui table.form-table input[type=text]:not(.select2-search__field),
719
  .woocommerce.yith-plugin-fw-panel .yith-plugin-ui table.form-table select,
720
  .woocommerce.yith-plugin-fw-panel .yith-plugin-ui table.form-table textarea:not(.wp-editor-area),
@@ -1811,21 +1811,24 @@ div#ui-datepicker-div.yith-plugin-fw-datepicker-div {
1811
  border : 0;
1812
  }
1813
 
1814
- /** MULTI SELECT **/
1815
- .yith-plugin-ui .yith-plugin-fw-multi-select .yith-single-select {
 
1816
  display : inline-block;
1817
  width : 30%;
1818
  margin-right : 3%;
1819
  max-width : 400px;
1820
  }
1821
 
1822
- .yith-plugin-ui .yith-plugin-fw-multi-select .yith-single-select label {
 
1823
  display : block;
1824
  font-size : 11px;
1825
  font-weight : 600;
1826
  margin : 0 0 10px 0;
1827
  }
1828
 
 
1829
  .yith-plugin-ui .yith-plugin-fw-multi-select .yith-single-select select,
1830
  .yith-plugin-ui .yith-plugin-fw-multi-select .yith-single-select span.select2 {
1831
  width : 100% !important;
@@ -1948,6 +1951,24 @@ div#ui-datepicker-div.yith-plugin-fw-datepicker-div {
1948
  border-color : #007694;
1949
  }
1950
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1951
  /**
1952
  * Copy to clipboard
1953
  */
@@ -1990,6 +2011,7 @@ div#ui-datepicker-div.yith-plugin-fw-datepicker-div {
1990
 
1991
  .yith-plugin-fw-copy-to-clipboard input[type=text].yith-plugin-fw-copy-to-clipboard__field,
1992
  .yith-plugin-fw.yith-plugin-ui .yith-plugin-fw-copy-to-clipboard input[type=text].yith-plugin-fw-copy-to-clipboard__field,
 
1993
  .woocommerce.yith-plugin-fw-panel .yith-plugin-ui table.form-table input[type=text].yith-plugin-fw-copy-to-clipboard__field {
1994
  height : 38px;
1995
  width : 100%;
710
  .yith-plugin-ui input[type=number],
711
  .yith-plugin-ui.metaboxes-tab input[type=number],
712
  .yith-plugin-ui input[type=text],
 
713
  .yith-plugin-ui input[type=email],
714
  .yith-plugin-ui input[type=password],
715
  .yith-plugin-ui .search-box input[name="s"],
716
  .yith-plugin-fw.yith-plugin-ui input[type=text]:not(.select2-search__field),
717
+ .yith-plugin-fw-panel .yith-plugin-ui table.form-table input[type=text],
718
  .woocommerce.yith-plugin-fw-panel .yith-plugin-ui table.form-table input[type=text]:not(.select2-search__field),
719
  .woocommerce.yith-plugin-fw-panel .yith-plugin-ui table.form-table select,
720
  .woocommerce.yith-plugin-fw-panel .yith-plugin-ui table.form-table textarea:not(.wp-editor-area),
1811
  border : 0;
1812
  }
1813
 
1814
+ /** MULTI SELECT AND TEXT ARRAY INLINE STYLE **/
1815
+ .yith-plugin-ui .yith-plugin-fw-multi-select .yith-single-select,
1816
+ .yith-plugin-ui .yith-plugin-fw-text-array-inline .yith-single-text {
1817
  display : inline-block;
1818
  width : 30%;
1819
  margin-right : 3%;
1820
  max-width : 400px;
1821
  }
1822
 
1823
+ .yith-plugin-ui .yith-plugin-fw-multi-select .yith-single-select label,
1824
+ .yith-plugin-ui .yith-plugin-fw-text-array-inline .yith-single-text label {
1825
  display : block;
1826
  font-size : 11px;
1827
  font-weight : 600;
1828
  margin : 0 0 10px 0;
1829
  }
1830
 
1831
+ .yith-plugin-ui .yith-plugin-fw-text-array-inline .yith-single-text input,
1832
  .yith-plugin-ui .yith-plugin-fw-multi-select .yith-single-select select,
1833
  .yith-plugin-ui .yith-plugin-fw-multi-select .yith-single-select span.select2 {
1834
  width : 100% !important;
1951
  border-color : #007694;
1952
  }
1953
 
1954
+ /**
1955
+ * Image dimensions
1956
+ */
1957
+ .yith-plugin-ui .yith-plugin-fw-image-dimensions > div {
1958
+ display : inline-block;
1959
+ width : 30%;
1960
+ margin-right : 3%;
1961
+ max-width : 100px;
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
  /**
1973
  * Copy to clipboard
1974
  */
2011
 
2012
  .yith-plugin-fw-copy-to-clipboard input[type=text].yith-plugin-fw-copy-to-clipboard__field,
2013
  .yith-plugin-fw.yith-plugin-ui .yith-plugin-fw-copy-to-clipboard input[type=text].yith-plugin-fw-copy-to-clipboard__field,
2014
+ .yith-plugin-fw-panel .yith-plugin-ui table.form-table input[type=text].yith-plugin-fw-copy-to-clipboard__field,
2015
  .woocommerce.yith-plugin-fw-panel .yith-plugin-ui table.form-table input[type=text].yith-plugin-fw-copy-to-clipboard__field {
2016
  height : 38px;
2017
  width : 100%;
plugin-fw/assets/css/yith-icon.css CHANGED
@@ -6,10 +6,10 @@
6
  /* stylelint-disable function-url-quotes, declaration-colon-newline-after */
7
  @font-face {
8
  font-family: yith-icon;
9
- src: url("../fonts/yith-icon.eot?0e894d67ed2e93cb5f295baa68aeba0d");
10
- src: url("../fonts/yith-icon.eot?0e894d67ed2e93cb5f295baa68aeba0d#iefix") format("embedded-opentype"),
11
- url("data:application/x-font-woff;charset=utf-8;base64,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") format("woff"),
12
- url("../fonts/yith-icon.ttf?0e894d67ed2e93cb5f295baa68aeba0d") format("truetype");
13
  font-weight: 400;
14
  font-style: normal;
15
  }
@@ -123,6 +123,10 @@
123
  content: "\e911";
124
  }
125
 
 
 
 
 
126
  .yith-icon-image:before {
127
  content: "\f10a";
128
  }
@@ -135,6 +139,10 @@
135
  content: "\e90e";
136
  }
137
 
 
 
 
 
138
  .yith-icon-magnifier:before {
139
  content: "\e908";
140
  }
@@ -207,6 +215,10 @@
207
  content: "\f108";
208
  }
209
 
 
 
 
 
210
  .yith-icon-warning-triangle:before {
211
  content: "\e923";
212
  }
@@ -225,7 +237,7 @@
225
 
226
  /** Deprecated: use yith-icon-paypal instead */
227
  .yith-icon-paypal-svgrepo-com:before {
228
- content: "\e91b";
229
  }
230
 
231
  /** Deprecated: use yith-icon-arrow-down instead */
@@ -290,10 +302,10 @@
290
 
291
  /** Deprecated: use yith-icon-edit instead */
292
  .yith-icon-pencil:before {
293
- content: "\e907";
294
  }
295
 
296
  /** Deprecated: use yith-icon-reset instead */
297
  .yith-icon-update:before {
298
- content: "\e910";
299
  }
6
  /* stylelint-disable function-url-quotes, declaration-colon-newline-after */
7
  @font-face {
8
  font-family: yith-icon;
9
+ src: url("../fonts/yith-icon.eot?91e38b491fff50f72e9b5b51960fdee6");
10
+ src: url("../fonts/yith-icon.eot?91e38b491fff50f72e9b5b51960fdee6#iefix") format("embedded-opentype"),
11
+ url("data:application/x-font-woff;charset=utf-8;base64,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") format("woff"),
12
+ url("../fonts/yith-icon.ttf?91e38b491fff50f72e9b5b51960fdee6") format("truetype");
13
  font-weight: 400;
14
  font-style: normal;
15
  }
123
  content: "\e911";
124
  }
125
 
126
+ .yith-icon-helping-hand:before {
127
+ content: "\f10c";
128
+ }
129
+
130
  .yith-icon-image:before {
131
  content: "\f10a";
132
  }
139
  content: "\e90e";
140
  }
141
 
142
+ .yith-icon-list-search:before {
143
+ content: "\f10d";
144
+ }
145
+
146
  .yith-icon-magnifier:before {
147
  content: "\e908";
148
  }
215
  content: "\f108";
216
  }
217
 
218
+ .yith-icon-video:before {
219
+ content: "\f10e";
220
+ }
221
+
222
  .yith-icon-warning-triangle:before {
223
  content: "\e923";
224
  }
237
 
238
  /** Deprecated: use yith-icon-paypal instead */
239
  .yith-icon-paypal-svgrepo-com:before {
240
+ content: "\e91b";
241
  }
242
 
243
  /** Deprecated: use yith-icon-arrow-down instead */
302
 
303
  /** Deprecated: use yith-icon-edit instead */
304
  .yith-icon-pencil:before {
305
+ content: "\e907";
306
  }
307
 
308
  /** Deprecated: use yith-icon-reset instead */
309
  .yith-icon-update:before {
310
+ content: "\e910";
311
  }
plugin-fw/assets/css/yith-plugin-ui.css CHANGED
@@ -25,7 +25,7 @@
25
  --yith-update-focus: #e7eccc;
26
  --yith-outline-text: #0087b3;
27
  --yith-outline-border: #0094c4;
28
- --yith-outline-bg: #ffffff;
29
  --yith-outline-bg-hover: rgba(157, 198, 205, 0.2);
30
  --yith-outline-border-hover: #007ba3;
31
  --yith-outline-focus: #dfeef2;
@@ -268,6 +268,7 @@
268
  display: inline-block;
269
  text-decoration: none;
270
  cursor: pointer;
 
271
  }
272
 
273
  .yith-plugin-ui .button-primary:focus, .yith-plugin-ui .button-secondary:focus, .wp-core-ui .yith-plugin-ui .button-primary:focus, .wp-core-ui .yith-plugin-ui .button-secondary:focus {
@@ -429,6 +430,7 @@
429
  cursor: pointer;
430
  transition: all .3s ease-in-out;
431
  text-decoration: none;
 
432
  }
433
 
434
  .yith-plugin-ui .yith-plugin-fw__button:focus, .yith-plugin-ui [class^="yith-plugin-fw__button--"]:focus, .yith-plugin-ui [class*=" yith-plugin-fw__button--"]:focus,
@@ -838,6 +840,7 @@
838
  cursor: pointer;
839
  display: inline-block;
840
  margin-right: 10px;
 
841
  }
842
 
843
  .yith-plugin-fw__confirm__wrap .yith-plugin-fw__confirm__button:last-child {
@@ -1540,6 +1543,10 @@ table.yith-plugin-fw__boxed-table.wp-list-table tbody tr:hover .yith-plugin-fw__
1540
  /**
1541
  * YITH Animations
1542
  */
 
 
 
 
1543
  .yith-plugin-fw-animate__appear-from-top {
1544
  animation: yith-plugin-fw-appear-from-top .3s forwards;
1545
  }
@@ -1574,6 +1581,32 @@ table.yith-plugin-fw__boxed-table.wp-list-table tbody tr:hover .yith-plugin-fw__
1574
  }
1575
  }
1576
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1577
  @-webkit-keyframes yith-plugin-fw-fade-in {
1578
  from {
1579
  opacity: 0;
25
  --yith-update-focus: #e7eccc;
26
  --yith-outline-text: #0087b3;
27
  --yith-outline-border: #0094c4;
28
+ --yith-outline-bg: rgba(255, 255, 255, 0);
29
  --yith-outline-bg-hover: rgba(157, 198, 205, 0.2);
30
  --yith-outline-border-hover: #007ba3;
31
  --yith-outline-focus: #dfeef2;
268
  display: inline-block;
269
  text-decoration: none;
270
  cursor: pointer;
271
+ white-space: nowrap;
272
  }
273
 
274
  .yith-plugin-ui .button-primary:focus, .yith-plugin-ui .button-secondary:focus, .wp-core-ui .yith-plugin-ui .button-primary:focus, .wp-core-ui .yith-plugin-ui .button-secondary:focus {
430
  cursor: pointer;
431
  transition: all .3s ease-in-out;
432
  text-decoration: none;
433
+ white-space: nowrap;
434
  }
435
 
436
  .yith-plugin-ui .yith-plugin-fw__button:focus, .yith-plugin-ui [class^="yith-plugin-fw__button--"]:focus, .yith-plugin-ui [class*=" yith-plugin-fw__button--"]:focus,
840
  cursor: pointer;
841
  display: inline-block;
842
  margin-right: 10px;
843
+ white-space: nowrap;
844
  }
845
 
846
  .yith-plugin-fw__confirm__wrap .yith-plugin-fw__confirm__button:last-child {
1543
  /**
1544
  * YITH Animations
1545
  */
1546
+ .yith-plugin-fw-animate__appear-from-bottom {
1547
+ animation: yith-plugin-fw-appear-from-bottom .3s forwards;
1548
+ }
1549
+
1550
  .yith-plugin-fw-animate__appear-from-top {
1551
  animation: yith-plugin-fw-appear-from-top .3s forwards;
1552
  }
1581
  }
1582
  }
1583
 
1584
+ @-webkit-keyframes yith-plugin-fw-appear-from-bottom {
1585
+ from {
1586
+ opacity: 0;
1587
+ transform: translateY(30%);
1588
+ -webkit-transform: translateY(30%);
1589
+ }
1590
+ to {
1591
+ opacity: 1;
1592
+ transform: translateY(0);
1593
+ -webkit-transform: translateY(0);
1594
+ }
1595
+ }
1596
+
1597
+ @keyframes yith-plugin-fw-appear-from-bottom {
1598
+ from {
1599
+ opacity: 0;
1600
+ transform: translateY(30%);
1601
+ -webkit-transform: translateY(30%);
1602
+ }
1603
+ to {
1604
+ opacity: 1;
1605
+ transform: translateY(0);
1606
+ -webkit-transform: translateY(0);
1607
+ }
1608
+ }
1609
+
1610
  @-webkit-keyframes yith-plugin-fw-fade-in {
1611
  from {
1612
  opacity: 0;
plugin-fw/assets/fonts/yith-icon.eot CHANGED
Binary file
plugin-fw/assets/fonts/yith-icon.ttf CHANGED
Binary file
plugin-fw/assets/fonts/yith-icon.woff2 CHANGED
Binary file
plugin-fw/assets/js/wp-pages.js CHANGED
@@ -1,12 +1,4 @@
1
- /**
2
- * This file belongs to the YIT Plugin Framework.
3
- *
4
- * This source file is subject to the GNU GENERAL PUBLIC LICENSE (GPL 3.0)
5
- * that is bundled with this package in the file LICENSE.txt.
6
- * It is also available through the world-wide-web at this URL:
7
- * http://www.gnu.org/licenses/gpl-3.0.txt
8
- */
9
-
10
  jQuery( function ( $ ) {
11
  var wrap = $( '.yith-plugin-fw-wp-page-wrapper' ),
12
  notices = $( 'div.updated, div.error, div.notice' ).not( '#message' ),
@@ -28,7 +20,55 @@ jQuery( function ( $ ) {
28
  e.stopPropagation();
29
  message.removeClass( 'yith-plugin-fw-animate__appear-from-top' ).slideUp( 200 );
30
  } )
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
31
 
 
 
32
  }
33
 
34
  } );
1
+ /* global yith_plugin_fw_wp_pages */
 
 
 
 
 
 
 
 
2
  jQuery( function ( $ ) {
3
  var wrap = $( '.yith-plugin-fw-wp-page-wrapper' ),
4
  notices = $( 'div.updated, div.error, div.notice' ).not( '#message' ),
20
  e.stopPropagation();
21
  message.removeClass( 'yith-plugin-fw-animate__appear-from-top' ).slideUp( 200 );
22
  } )
23
+ }
24
+
25
+ // Confirmation window when deleting custom post types and custom terms through Bulk Actions.
26
+ if ( yith_plugin_fw_wp_pages.bulk_delete_confirmation_enabled ) {
27
+ var bulkDeleteConfirmed = false;
28
+
29
+ $( document ).on( 'click', '#doaction, #doaction2', function ( e ) {
30
+ var doActionButton = $( this ),
31
+ bulkActionSelector = doActionButton.siblings( '#bulk-action-selector-top, #bulk-action-selector-bottom' );
32
+
33
+ if ( 'yith' in window && 'ui' in yith ) {
34
+ if ( bulkDeleteConfirmed ) {
35
+ bulkDeleteConfirmed = false;
36
+ } else {
37
+ var confirmOptions = {},
38
+ selectedItems = $( '#the-list .check-column input[type=checkbox]:checked' );
39
+
40
+ if ( selectedItems.length ) {
41
+ switch ( bulkActionSelector.val() ) {
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;
54
+ }
55
+
56
+ if ( !$.isEmptyObject( confirmOptions ) ) {
57
+ e.preventDefault();
58
+
59
+ confirmOptions.closeAfterConfirm = false;
60
+ confirmOptions.onConfirm = function () {
61
+ bulkDeleteConfirmed = true;
62
+ doActionButton.trigger( 'click' );
63
+ };
64
+
65
+ yith.ui.confirm( confirmOptions );
66
+ }
67
+ }
68
+ }
69
 
70
+ }
71
+ } );
72
  }
73
 
74
  } );
plugin-fw/assets/js/wp-pages.min.js CHANGED
@@ -1 +1 @@
1
- jQuery(function(a){var e=a(".yith-plugin-fw-wp-page-wrapper"),p=a("div.updated, div.error, div.notice").not("#message"),i=a("div#message.updated");a(".yith-plugin-fw-wp-page-wrapper .woo-nav-tab-wrapper").removeClass("woo-nav-tab-wrapper").addClass("yith-nav-tab-wrapper"),p.addClass("inline"),e.length&&e.prepend(p),i.length&&(i.addClass("yith-plugin-fw-animate__appear-from-top").show(),i.on("click",".notice-dismiss",function(a){a.stopPropagation(),i.removeClass("yith-plugin-fw-animate__appear-from-top").slideUp(200)}))});
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))}}})}});
plugin-fw/assets/js/yit-plugin-panel.js CHANGED
@@ -217,9 +217,9 @@ jQuery( function ( $ ) {
217
 
218
  function checkButtonPosition() {
219
  if ( isInViewport( saveButton ) ) {
220
- floatSaveButton.fadeOut( 150 );
221
  } else {
222
- floatSaveButton.fadeIn( 300 );
223
  }
224
  }
225
 
@@ -238,7 +238,6 @@ jQuery( function ( $ ) {
238
  }
239
 
240
  if ( floatSaveButton.length > 0 && mainForm.length > 0 ) {
241
- floatSaveButton.hide();
242
  checkButtonPosition();
243
  document.addEventListener( 'scroll', checkButtonPosition, { passive: true } );
244
 
@@ -254,7 +253,7 @@ jQuery( function ( $ ) {
254
  }
255
  );
256
  $.post( document.location.href, mainForm.serialize() )
257
- .done( function ( result ) {
258
  floatSaveButton.unblock()
259
  .addClass( 'green' )
260
  .fadeOut( 300 )
@@ -272,6 +271,11 @@ jQuery( function ( $ ) {
272
  );
273
  next();
274
  } );
 
 
 
 
 
275
  } );
276
  } )
277
  }
217
 
218
  function checkButtonPosition() {
219
  if ( isInViewport( saveButton ) ) {
220
+ floatSaveButton.removeClass( 'visible' );
221
  } else {
222
+ floatSaveButton.addClass( 'visible' );
223
  }
224
  }
225
 
238
  }
239
 
240
  if ( floatSaveButton.length > 0 && mainForm.length > 0 ) {
 
241
  checkButtonPosition();
242
  document.addEventListener( 'scroll', checkButtonPosition, { passive: true } );
243
 
253
  }
254
  );
255
  $.post( document.location.href, mainForm.serialize() )
256
+ .done( function ( response ) {
257
  floatSaveButton.unblock()
258
  .addClass( 'green' )
259
  .fadeOut( 300 )
271
  );
272
  next();
273
  } );
274
+
275
+ // Prevent WooCommerce warning for changes without saving.
276
+ window.onbeforeunload = null;
277
+
278
+ $( document ).trigger( 'yith-plugin-fw-float-save-button-after-saving', [response] );
279
  } );
280
  } )
281
  }
plugin-fw/assets/js/yit-plugin-panel.min.js CHANGED
@@ -1 +1 @@
1
- jQuery(function(e){function t(){e("[data-dep-target]:not( .deps-initialized )").each(function(){var t=e(this);if(!t.closest(".metaboxes-tab").length){t.addClass("deps-initialized");var a="#"+t.data("dep-target"),i="#"+t.data("dep-id"),n=t.data("dep-value"),d=t.data("dep-type");e(i).on("change",function(){!function(t,a,i,n){var d=!0;if("string"==typeof a){":radio"===a.substr(0,6)&&(a+=":checked");var s=e(a),o=s.attr("type"),c=s.val();switch(o){case"checkbox":c=s.is(":checked")?"yes":"no";break;case"radio":c=s.find('input[type="radio"]').filter(":checked").val()}i=i.split(",");for(var r=0;r<i.length;r++){if(c==i[r]){d=!0;break}d=!1}}var l=e(t),h=e(t+"-container").closest("tr");h.length<1&&(h=l.closest(".yith-plugin-fw-panel-wc-row, .yith-toggle-content-row"));var u,p=n.split("-");for(u in p){var f=p[u];if(d)switch(f){case"disable":h.removeClass("yith-disabled"),l.attr("disabled",!1);break;case"hide":case"hideNow":h.show();break;case"hideme":l.show();break;case"fadeOut":h.show();break;case"fadeInOut":case"fadeIn":default:h.show(500)}else switch(f){case"disable":h.addClass("yith-disabled"),l.attr("disabled",!0);break;case"hide":case"hideNow":h.hide();break;case"hideme":l.hide();break;case"fadeInOut":case"fadeOut":h.hide(500);break;case"fadeIn":default:h.hide()}}}(a,i,n.toString(),d)}).trigger("change")}})}t(),e(document).on("yith-add-box-button-toggle",t),e(".rm_connectedlist").each(function(){var t=e(this).find("ul"),a=e(this).find(":hidden");t.sortable({connectWith:t,update:function(i,n){var d={};t.each(function(){var t={};e(this).children().each(function(){t[e(this).data("option")]=e(this).text()}),d[e(this).data("list")]=t}),a.val(JSON.stringify(d).replace(/[\\"']/g,"\\$&").replace(/\u0000/g,"\\0"))}}).disableSelection()}),e(function(){e(".google-analytic-generate").click(function(){var t=e("#"+e(this).data("textarea")).data("codemirrorInstance"),a="(function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){\n";a+="(i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement( o ),\n",a+="m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)\n",a+="})(window,document,'script','//www.google-analytics.com/analytics.js','ga');\n\n",a+="ga('create', '"+e("#"+e(this).data("input")).val()+"', '"+e(this).data("basename")+"');\n",a+="ga('send', 'pageview');\n",t.replaceRange(a,t.getCursor("start"),t.getCursor("end"))})}),e(".yith-plugin-fw-panel .woo-nav-tab-wrapper").removeClass("woo-nav-tab-wrapper").addClass("yith-nav-tab-wrapper");var a=e(".wrap.yith-plugin-ui").first(),i=e("div.updated, div.error, div.notice");i.addClass("inline"),a.length&&a.prepend(i),function(){var t=e(".yith-nav-sub-tab.nav-tab-active"),a=e(".yith-plugin-fw-wp-page__sub-tab-wrap");if(t.length&&!a.length){var i=e(".yith-plugin-fw-wp-page-wrapper");if(i.length||(i=e("#wpbody-content > .yith-plugin-ui")),i){var n=i.find(".yit-admin-panel-content-wrap");n.length?n.addClass("has-subnav"):i.find(".wrap").wrap('<div class="yith-plugin-fw-wp-page__sub-tab-wrap"></div>')}}}(),function(){var t=e("#yith-plugin-fw-float-save-button"),a=e("#plugin-fw-wc"),i=document.querySelector("#main-save-button");function n(){var e,a;e=i.getBoundingClientRect(),a={width:window.innerWidth||document.documentElement.clientWidth,height:window.innerHeight||document.documentElement.clientHeight},e.top>=0&&e.left>=0&&e.top<=a.height&&e.left<=a.width?t.fadeOut(150):t.fadeIn(300)}t.length>0&&a.length>0&&(t.hide(),n(),document.addEventListener("scroll",n,{passive:!0}),e(document).on("click","#yith-plugin-fw-float-save-button",function(i){i.preventDefault(),t.block({message:null,overlayCSS:{background:"transparent",opacity:.6}}),e.post(document.location.href,a.serialize()).done(function(a){t.unblock().addClass("green").fadeOut(300).html('<i class="yith-icon yith-icon-check"></i>'+t.data("saved-label")).fadeIn(300).delay(2500).queue(function(a){t.fadeOut(500,function(){e(this).removeClass("green"),e(this).html('<i class="yith-icon yith-icon-save"></i>'+e(this).data("default-label")).fadeIn(500)}),a()})})}))}()});
1
+ jQuery(function(e){function t(){e("[data-dep-target]:not( .deps-initialized )").each(function(){var t=e(this);if(!t.closest(".metaboxes-tab").length){t.addClass("deps-initialized");var a="#"+t.data("dep-target"),i="#"+t.data("dep-id"),n=t.data("dep-value"),s=t.data("dep-type");e(i).on("change",function(){!function(t,a,i,n){var s=!0;if("string"==typeof a){":radio"===a.substr(0,6)&&(a+=":checked");var d=e(a),o=d.attr("type"),r=d.val();switch(o){case"checkbox":r=d.is(":checked")?"yes":"no";break;case"radio":r=d.find('input[type="radio"]').filter(":checked").val()}i=i.split(",");for(var c=0;c<i.length;c++){if(r==i[c]){s=!0;break}s=!1}}var l=e(t),h=e(t+"-container").closest("tr");h.length<1&&(h=l.closest(".yith-plugin-fw-panel-wc-row, .yith-toggle-content-row"));var u,g=n.split("-");for(u in g){var f=g[u];if(s)switch(f){case"disable":h.removeClass("yith-disabled"),l.attr("disabled",!1);break;case"hide":case"hideNow":h.show();break;case"hideme":l.show();break;case"fadeOut":h.show();break;case"fadeInOut":case"fadeIn":default:h.show(500)}else switch(f){case"disable":h.addClass("yith-disabled"),l.attr("disabled",!0);break;case"hide":case"hideNow":h.hide();break;case"hideme":l.hide();break;case"fadeInOut":case"fadeOut":h.hide(500);break;case"fadeIn":default:h.hide()}}}(a,i,n.toString(),s)}).trigger("change")}})}t(),e(document).on("yith-add-box-button-toggle",t),e(".rm_connectedlist").each(function(){var t=e(this).find("ul"),a=e(this).find(":hidden");t.sortable({connectWith:t,update:function(i,n){var s={};t.each(function(){var t={};e(this).children().each(function(){t[e(this).data("option")]=e(this).text()}),s[e(this).data("list")]=t}),a.val(JSON.stringify(s).replace(/[\\"']/g,"\\$&").replace(/\u0000/g,"\\0"))}}).disableSelection()}),e(function(){e(".google-analytic-generate").click(function(){var t=e("#"+e(this).data("textarea")).data("codemirrorInstance"),a="(function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){\n";a+="(i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement( o ),\n",a+="m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)\n",a+="})(window,document,'script','//www.google-analytics.com/analytics.js','ga');\n\n",a+="ga('create', '"+e("#"+e(this).data("input")).val()+"', '"+e(this).data("basename")+"');\n",a+="ga('send', 'pageview');\n",t.replaceRange(a,t.getCursor("start"),t.getCursor("end"))})}),e(".yith-plugin-fw-panel .woo-nav-tab-wrapper").removeClass("woo-nav-tab-wrapper").addClass("yith-nav-tab-wrapper");var a=e(".wrap.yith-plugin-ui").first(),i=e("div.updated, div.error, div.notice");i.addClass("inline"),a.length&&a.prepend(i),function(){var t=e(".yith-nav-sub-tab.nav-tab-active"),a=e(".yith-plugin-fw-wp-page__sub-tab-wrap");if(t.length&&!a.length){var i=e(".yith-plugin-fw-wp-page-wrapper");if(i.length||(i=e("#wpbody-content > .yith-plugin-ui")),i){var n=i.find(".yit-admin-panel-content-wrap");n.length?n.addClass("has-subnav"):i.find(".wrap").wrap('<div class="yith-plugin-fw-wp-page__sub-tab-wrap"></div>')}}}(),function(){var t=e("#yith-plugin-fw-float-save-button"),a=e("#plugin-fw-wc"),i=document.querySelector("#main-save-button");function n(){var e,a;e=i.getBoundingClientRect(),a={width:window.innerWidth||document.documentElement.clientWidth,height:window.innerHeight||document.documentElement.clientHeight},e.top>=0&&e.left>=0&&e.top<=a.height&&e.left<=a.width?t.removeClass("visible"):t.addClass("visible")}t.length>0&&a.length>0&&(n(),document.addEventListener("scroll",n,{passive:!0}),e(document).on("click","#yith-plugin-fw-float-save-button",function(i){i.preventDefault(),t.block({message:null,overlayCSS:{background:"transparent",opacity:.6}}),e.post(document.location.href,a.serialize()).done(function(a){t.unblock().addClass("green").fadeOut(300).html('<i class="yith-icon yith-icon-check"></i>'+t.data("saved-label")).fadeIn(300).delay(2500).queue(function(a){t.fadeOut(500,function(){e(this).removeClass("green"),e(this).html('<i class="yith-icon yith-icon-save"></i>'+e(this).data("default-label")).fadeIn(500)}),a()}),window.onbeforeunload=null,e(document).trigger("yith-plugin-fw-float-save-button-after-saving",[a])})}))}()});
plugin-fw/assets/js/yith-enhanced-select.js CHANGED
@@ -130,6 +130,69 @@ jQuery( function ( $ ) {
130
  }
131
  } );
132
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
133
  // TERM SEARCH
134
  $( '.yith-term-search' ).filter( ':not(.enhanced)' ).each( function () {
135
  var default_data = {
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 = {
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),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")});
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")});
plugin-fw/assets/js/yith-fields.js CHANGED
@@ -323,7 +323,7 @@
323
 
324
 
325
  slide: function ( event, ui ) {
326
- $( this ).find( 'input' ).val( ui.value );
327
  $( this ).find( '.ui-slider-handle' ).text( ui.value );
328
  $( this ).siblings( '.feedback' ).find( 'strong' ).text( ui.value + labels );
329
  }
@@ -794,7 +794,7 @@
794
 
795
  units.removeClass( fw_dimensions.selectors.units.selectedClass );
796
  unit.addClass( fw_dimensions.selectors.units.selectedClass );
797
- valueField.val( value );
798
  },
799
  linkedChange: function () {
800
  var button = $( this ).closest( fw_dimensions.selectors.linked.button ),
323
 
324
 
325
  slide: function ( event, ui ) {
326
+ $( this ).find( 'input' ).val( ui.value ).trigger( 'change' );
327
  $( this ).find( '.ui-slider-handle' ).text( ui.value );
328
  $( this ).siblings( '.feedback' ).find( 'strong' ).text( ui.value + labels );
329
  }
794
 
795
  units.removeClass( fw_dimensions.selectors.units.selectedClass );
796
  unit.addClass( fw_dimensions.selectors.units.selectedClass );
797
+ valueField.val( value ).trigger( 'change' );
798
  },
799
  linkedChange: function () {
800
  var button = $( this ).closest( fw_dimensions.selectors.linked.button ),
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),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"),d=l.data("name");i.attr("data-font",o),i.attr("data-icon",s),i.attr("data-key",r),i.attr("data-name",d),n.val(o+":"+d),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 d=wp.template("yith-toggle-element-item-"+n),c=e(d({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(c).find("#"+n).prop("checked",!0),(e(i).hasClass("yith-post-search")||e(i).hasClass("yith-term-search"))&&e(c).find("#"+n).html(e("#"+e(i).attr("id")).html()),e(c).find("#"+n).val(a)}}),e(c).formatToggleTitle();var u=e('<input type="hidden">').val("yes");e(document).trigger("yith-toggle-element-item-before-add",[i,c,u]);setTimeout(function(){if("yes"===u.val()){e(l).find(".yith-toggle-elements").append(c),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)},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){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);
plugin-fw/dist/gutenberg/index.asset.php CHANGED
@@ -1 +1 @@
1
- <?php return array('dependencies' => array('lodash', 'react', 'wp-block-editor', 'wp-blocks', 'wp-components', 'wp-compose', 'wp-element', 'wp-hooks', 'wp-polyfill', 'wp-url'), 'version' => 'ef3cdcc6d1490e83026aab4f8e255fab');
1
+ <?php return array('dependencies' => array('lodash', 'react', 'wp-block-editor', 'wp-blocks', 'wp-components', 'wp-compose', 'wp-element', 'wp-hooks', 'wp-polyfill', 'wp-url'), 'version' => '2844b0e480878ce2f72473c4114265fe');
plugin-fw/dist/gutenberg/index.js CHANGED
@@ -1 +1 @@
1
- (window.webpackJsonp_yith_plugin_framewowrk=window.webpackJsonp_yith_plugin_framewowrk||[]).push([[1],{27:function(e,t,n){},28:function(e,t,n){}}]),function(e){function t(t){for(var r,c,i=t[0],l=t[1],s=t[2],f=0,p=[];f<i.length;f++)c=i[f],Object.prototype.hasOwnProperty.call(o,c)&&o[c]&&p.push(o[c][0]),o[c]=0;for(r in l)Object.prototype.hasOwnProperty.call(l,r)&&(e[r]=l[r]);for(u&&u(t);p.length;)p.shift()();return a.push.apply(a,s||[]),n()}function n(){for(var e,t=0;t<a.length;t++){for(var n=a[t],r=!0,i=1;i<n.length;i++){var l=n[i];0!==o[l]&&(r=!1)}r&&(a.splice(t--,1),e=c(c.s=n[0]))}return e}var r={},o={0:0},a=[];function c(t){if(r[t])return r[t].exports;var n=r[t]={i:t,l:!1,exports:{}};return e[t].call(n.exports,n,n.exports,c),n.l=!0,n.exports}c.m=e,c.c=r,c.d=function(e,t,n){c.o(e,t)||Object.defineProperty(e,t,{enumerable:!0,get:n})},c.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},c.t=function(e,t){if(1&t&&(e=c(e)),8&t)return e;if(4&t&&"object"==typeof e&&e&&e.__esModule)return e;var n=Object.create(null);if(c.r(n),Object.defineProperty(n,"default",{enumerable:!0,value:e}),2&t&&"string"!=typeof e)for(var r in e)c.d(n,r,function(t){return e[t]}.bind(null,r));return n},c.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return c.d(t,"a",t),t},c.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},c.p="";var i=window.webpackJsonp_yith_plugin_framewowrk=window.webpackJsonp_yith_plugin_framewowrk||[],l=i.push.bind(i);i.push=t,i=i.slice();for(var s=0;s<i.length;s++)t(i[s]);var u=l;a.push([29,1]),n()}([function(e,t){e.exports=window.wp.element},function(e,t){e.exports=window.wp.components},function(e,t){e.exports=window.React},function(e,t,n){var r=n(17),o=n(18),a=n(19),c=n(21);e.exports=function(e,t){return r(e)||o(e,t)||a(e,t)||c()}},function(e,t){e.exports=window.wp.hooks},function(e,t){e.exports=window.lodash},function(e,t,n){var r,o,a,c,i;r=n(22),o=n(10).utf8,a=n(23),c=n(10).bin,(i=function(e,t){e.constructor==String?e=t&&"binary"===t.encoding?c.stringToBytes(e):o.stringToBytes(e):a(e)?e=Array.prototype.slice.call(e,0):Array.isArray(e)||e.constructor===Uint8Array||(e=e.toString());for(var n=r.bytesToWords(e),l=8*e.length,s=1732584193,u=-271733879,f=-1732584194,p=271733878,h=0;h<n.length;h++)n[h]=16711935&(n[h]<<8|n[h]>>>24)|4278255360&(n[h]<<24|n[h]>>>8);n[l>>>5]|=128<<l%32,n[14+(l+64>>>9<<4)]=l;var d=i._ff,b=i._gg,y=i._hh,g=i._ii;for(h=0;h<n.length;h+=16){var m=s,v=u,_=f,j=p;s=d(s,u,f,p,n[h+0],7,-680876936),p=d(p,s,u,f,n[h+1],12,-389564586),f=d(f,p,s,u,n[h+2],17,606105819),u=d(u,f,p,s,n[h+3],22,-1044525330),s=d(s,u,f,p,n[h+4],7,-176418897),p=d(p,s,u,f,n[h+5],12,1200080426),f=d(f,p,s,u,n[h+6],17,-1473231341),u=d(u,f,p,s,n[h+7],22,-45705983),s=d(s,u,f,p,n[h+8],7,1770035416),p=d(p,s,u,f,n[h+9],12,-1958414417),f=d(f,p,s,u,n[h+10],17,-42063),u=d(u,f,p,s,n[h+11],22,-1990404162),s=d(s,u,f,p,n[h+12],7,1804603682),p=d(p,s,u,f,n[h+13],12,-40341101),f=d(f,p,s,u,n[h+14],17,-1502002290),s=b(s,u=d(u,f,p,s,n[h+15],22,1236535329),f,p,n[h+1],5,-165796510),p=b(p,s,u,f,n[h+6],9,-1069501632),f=b(f,p,s,u,n[h+11],14,643717713),u=b(u,f,p,s,n[h+0],20,-373897302),s=b(s,u,f,p,n[h+5],5,-701558691),p=b(p,s,u,f,n[h+10],9,38016083),f=b(f,p,s,u,n[h+15],14,-660478335),u=b(u,f,p,s,n[h+4],20,-405537848),s=b(s,u,f,p,n[h+9],5,568446438),p=b(p,s,u,f,n[h+14],9,-1019803690),f=b(f,p,s,u,n[h+3],14,-187363961),u=b(u,f,p,s,n[h+8],20,1163531501),s=b(s,u,f,p,n[h+13],5,-1444681467),p=b(p,s,u,f,n[h+2],9,-51403784),f=b(f,p,s,u,n[h+7],14,1735328473),s=y(s,u=b(u,f,p,s,n[h+12],20,-1926607734),f,p,n[h+5],4,-378558),p=y(p,s,u,f,n[h+8],11,-2022574463),f=y(f,p,s,u,n[h+11],16,1839030562),u=y(u,f,p,s,n[h+14],23,-35309556),s=y(s,u,f,p,n[h+1],4,-1530992060),p=y(p,s,u,f,n[h+4],11,1272893353),f=y(f,p,s,u,n[h+7],16,-155497632),u=y(u,f,p,s,n[h+10],23,-1094730640),s=y(s,u,f,p,n[h+13],4,681279174),p=y(p,s,u,f,n[h+0],11,-358537222),f=y(f,p,s,u,n[h+3],16,-722521979),u=y(u,f,p,s,n[h+6],23,76029189),s=y(s,u,f,p,n[h+9],4,-640364487),p=y(p,s,u,f,n[h+12],11,-421815835),f=y(f,p,s,u,n[h+15],16,530742520),s=g(s,u=y(u,f,p,s,n[h+2],23,-995338651),f,p,n[h+0],6,-198630844),p=g(p,s,u,f,n[h+7],10,1126891415),f=g(f,p,s,u,n[h+14],15,-1416354905),u=g(u,f,p,s,n[h+5],21,-57434055),s=g(s,u,f,p,n[h+12],6,1700485571),p=g(p,s,u,f,n[h+3],10,-1894986606),f=g(f,p,s,u,n[h+10],15,-1051523),u=g(u,f,p,s,n[h+1],21,-2054922799),s=g(s,u,f,p,n[h+8],6,1873313359),p=g(p,s,u,f,n[h+15],10,-30611744),f=g(f,p,s,u,n[h+6],15,-1560198380),u=g(u,f,p,s,n[h+13],21,1309151649),s=g(s,u,f,p,n[h+4],6,-145523070),p=g(p,s,u,f,n[h+11],10,-1120210379),f=g(f,p,s,u,n[h+2],15,718787259),u=g(u,f,p,s,n[h+9],21,-343485551),s=s+m>>>0,u=u+v>>>0,f=f+_>>>0,p=p+j>>>0}return r.endian([s,u,f,p])})._ff=function(e,t,n,r,o,a,c){var i=e+(t&n|~t&r)+(o>>>0)+c;return(i<<a|i>>>32-a)+t},i._gg=function(e,t,n,r,o,a,c){var i=e+(t&r|n&~r)+(o>>>0)+c;return(i<<a|i>>>32-a)+t},i._hh=function(e,t,n,r,o,a,c){var i=e+(t^n^r)+(o>>>0)+c;return(i<<a|i>>>32-a)+t},i._ii=function(e,t,n,r,o,a,c){var i=e+(n^(t|~r))+(o>>>0)+c;return(i<<a|i>>>32-a)+t},i._blocksize=16,i._digestsize=16,e.exports=function(e,t){if(null==e)throw new Error("Illegal argument "+e);var n=r.wordsToBytes(i(e,t));return t&&t.asBytes?n:t&&t.asString?c.bytesToString(n):r.bytesToHex(n)}},function(e,t){e.exports=window.wp.blockEditor},function(e,t){e.exports=window.wp.compose},function(e,t){function n(t){return e.exports=n=Object.setPrototypeOf?Object.getPrototypeOf:function(e){return e.__proto__||Object.getPrototypeOf(e)},n(t)}e.exports=n},function(e,t){var n={utf8:{stringToBytes:function(e){return n.bin.stringToBytes(unescape(encodeURIComponent(e)))},bytesToString:function(e){return decodeURIComponent(escape(n.bin.bytesToString(e)))}},bin:{stringToBytes:function(e){for(var t=[],n=0;n<e.length;n++)t.push(255&e.charCodeAt(n));return t},bytesToString:function(e){for(var t=[],n=0;n<e.length;n++)t.push(String.fromCharCode(e[n]));return t.join("")}}};e.exports=n},function(e,t){e.exports=window.wp.blocks},function(e,t){e.exports=window.wp.url},function(e,t){e.exports=function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}},function(e,t){function n(e,t){for(var n=0;n<t.length;n++){var r=t[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(e,r.key,r)}}e.exports=function(e,t,r){return t&&n(e.prototype,t),r&&n(e,r),e}},function(e,t,n){var r=n(24);e.exports=function(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function");e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,writable:!0,configurable:!0}}),t&&r(e,t)}},function(e,t,n){var r=n(25),o=n(26);e.exports=function(e,t){return!t||"object"!==r(t)&&"function"!=typeof t?o(e):t}},function(e,t){e.exports=function(e){if(Array.isArray(e))return e}},function(e,t){e.exports=function(e,t){if("undefined"!=typeof Symbol&&Symbol.iterator in Object(e)){var n=[],r=!0,o=!1,a=void 0;try{for(var c,i=e[Symbol.iterator]();!(r=(c=i.next()).done)&&(n.push(c.value),!t||n.length!==t);r=!0);}catch(e){o=!0,a=e}finally{try{r||null==i.return||i.return()}finally{if(o)throw a}}return n}}},function(e,t,n){var r=n(20);e.exports=function(e,t){if(e){if("string"==typeof e)return r(e,t);var n=Object.prototype.toString.call(e).slice(8,-1);return"Object"===n&&e.constructor&&(n=e.constructor.name),"Map"===n||"Set"===n?Array.from(e):"Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?r(e,t):void 0}}},function(e,t){e.exports=function(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,r=new Array(t);n<t;n++)r[n]=e[n];return r}},function(e,t){e.exports=function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}},function(e,t){var n,r;n="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",r={rotl:function(e,t){return e<<t|e>>>32-t},rotr:function(e,t){return e<<32-t|e>>>t},endian:function(e){if(e.constructor==Number)return 16711935&r.rotl(e,8)|4278255360&r.rotl(e,24);for(var t=0;t<e.length;t++)e[t]=r.endian(e[t]);return e},randomBytes:function(e){for(var t=[];e>0;e--)t.push(Math.floor(256*Math.random()));return t},bytesToWords:function(e){for(var t=[],n=0,r=0;n<e.length;n++,r+=8)t[r>>>5]|=e[n]<<24-r%32;return t},wordsToBytes:function(e){for(var t=[],n=0;n<32*e.length;n+=8)t.push(e[n>>>5]>>>24-n%32&255);return t},bytesToHex:function(e){for(var t=[],n=0;n<e.length;n++)t.push((e[n]>>>4).toString(16)),t.push((15&e[n]).toString(16));return t.join("")},hexToBytes:function(e){for(var t=[],n=0;n<e.length;n+=2)t.push(parseInt(e.substr(n,2),16));return t},bytesToBase64:function(e){for(var t=[],r=0;r<e.length;r+=3)for(var o=e[r]<<16|e[r+1]<<8|e[r+2],a=0;a<4;a++)8*r+6*a<=8*e.length?t.push(n.charAt(o>>>6*(3-a)&63)):t.push("=");return t.join("")},base64ToBytes:function(e){e=e.replace(/[^A-Z0-9+\/]/gi,"");for(var t=[],r=0,o=0;r<e.length;o=++r%4)0!=o&&t.push((n.indexOf(e.charAt(r-1))&Math.pow(2,-2*o+8)-1)<<2*o|n.indexOf(e.charAt(r))>>>6-2*o);return t}},e.exports=r},function(e,t){function n(e){return!!e.constructor&&"function"==typeof e.constructor.isBuffer&&e.constructor.isBuffer(e)}e.exports=function(e){return null!=e&&(n(e)||function(e){return"function"==typeof e.readFloatLE&&"function"==typeof e.slice&&n(e.slice(0,0))}(e)||!!e._isBuffer)}},function(e,t){function n(t,r){return e.exports=n=Object.setPrototypeOf||function(e,t){return e.__proto__=t,e},n(t,r)}e.exports=n},function(e,t){function n(t){return"function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?e.exports=n=function(e){return typeof e}:e.exports=n=function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},n(t)}e.exports=n},function(e,t){e.exports=function(e){if(void 0===e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return e}},,,function(e,t,n){"use strict";n.r(t);var r=n(3),o=n.n(r),a=n(0),c=n(2),i=n(6),l=n.n(i),s=n(11),u=n(12);function f(e){if(e.status>=200&&e.status<300)return e;throw e}function p(e){return e.json?e.json():e.text()}var h=Object(a.createElement)("svg",{viewBox:"0 0 22 22",xmlns:"http://www.w3.org/2000/svg",width:"22",height:"22",role:"img","aria-hidden":"true",focusable:"false"},Object(a.createElement)("path",{width:"22",height:"22",d:"M 18.24 7.628 C 17.291 8.284 16.076 8.971 14.587 9.688 C 15.344 7.186 15.765 4.851 15.849 2.684 C 15.912 0.939 15.133 0.045 13.514 0.003 C 11.558 -0.06 10.275 1.033 9.665 3.284 C 10.007 3.137 10.359 3.063 10.723 3.063 C 11.021 3.063 11.267 3.184 11.459 3.426 C 11.651 3.668 11.736 3.947 11.715 4.262 C 11.695 5.082 11.276 5.961 10.46 6.896 C 9.644 7.833 8.918 8.3 8.282 8.3 C 7.837 8.3 7.625 7.922 7.646 7.165 C 7.667 6.765 7.804 5.955 8.056 4.735 C 8.287 3.579 8.403 2.801 8.403 2.401 C 8.403 1.707 8.224 1.144 7.867 0.713 C 7.509 0.282 6.994 0.098 6.321 0.161 C 5.858 0.203 5.175 0.624 4.27 1.422 C 3.596 2.035 2.923 2.644 2.25 3.254 L 2.976 4.106 C 3.564 3.664 3.922 3.443 4.048 3.443 C 4.448 3.443 4.637 3.717 4.617 4.263 C 4.617 4.306 4.427 4.968 4.049 6.251 C 3.671 7.534 3.471 8.491 3.449 9.122 C 3.407 9.985 3.565 10.647 3.924 11.109 C 4.367 11.677 5.106 11.919 6.142 11.835 C 7.366 11.751 8.591 11.298 9.816 10.479 C 10.323 10.142 10.808 9.753 11.273 9.311 C 11.105 10.153 10.905 10.868 10.673 11.457 C 8.402 12.487 6.762 13.37 5.752 14.107 C 4.321 15.137 3.554 16.241 3.449 17.419 C 3.259 19.459 4.29 20.479 6.541 20.479 C 8.055 20.479 9.517 19.554 10.926 17.703 C 12.125 16.126 13.166 14.022 14.049 11.394 C 15.578 10.635 16.87 9.892 17.928 9.164 C 17.894 9.409 18.319 7.308 18.24 7.628 Z M 7.393 16.095 C 7.056 16.095 6.898 15.947 6.919 15.653 C 6.961 15.106 7.908 14.38 9.759 13.476 C 8.791 15.221 8.002 16.095 7.393 16.095 Z"})),d=n(5),b=n.n(d),y=function(e,t,n){var r=!0;if(t&&t.id&&"value"in t){var o=t.value;["toggle","checkbox"].includes(n)&&(o=!0===o||"yes"===o||1===o),o=b.a.isArray(o)?o:[o],r=void 0!==e[t.id]&&o.includes(e[t.id])}return r},g=function(e,t){var n=e.controlType,r=!0;if(e.deps)if(b.a.isArray(e.deps))for(var o in e.deps){var a=e.deps[o];if(!(r=y(t,a,n)))break}else r=y(t,e.deps,n);return r},m=function(e,t){var n="",r=!1;if(void 0!==e.callback&&(jQuery&&e.callback in jQuery.fn?r=jQuery.fn[e.callback]:e.callback in window&&(r=window[e.callback])),"function"==typeof r)n=r(t,e);else{var a=e.attributes?Object.entries(e.attributes).map((function(e){var n=o()(e,2),r=n[0],a=n[1],c=g(a,t),i=t[r];if(c&&void 0!==i)return r+"="+(a.remove_quotes?i:'"'.concat(i,'"'))})):[],c=a.length?" "+a.join(" "):"";n="[".concat(e.shortcode_name).concat(c,"]")}return n},v=n(1),_=n(7),j=n(13),w=n.n(j),k=n(14),x=n.n(k),O=n(15),C=n.n(O),E=n(16),S=n.n(E),T=n(9),A=n.n(T),B=n(4);n(27);var N=function(e){C()(o,e);var t,n,r=(t=o,n=function(){if("undefined"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"==typeof Proxy)return!0;try{return Date.prototype.toString.call(Reflect.construct(Date,[],(function(){}))),!0}catch(e){return!1}}(),function(){var e,r=A()(t);if(n){var o=A()(this).constructor;e=Reflect.construct(r,arguments,o)}else e=r.apply(this,arguments);return S()(this,e)});function o(){var e;return w()(this,o),(e=r.apply(this,arguments)).state={html:"",shortcode:"",shortcodeHash:"",ajaxUpdated:!1,ajaxSuccess:!1,ajaxResponse:!1,loading:!1,firstLoading:!0},e.ajaxTimeout=!1,e}return x()(o,[{key:"componentDidMount",value:function(){this.updateShortcode()}},{key:"componentDidUpdate",value:function(e,t,n){var r=this.state,o=r.shortcode,a=r.shortcodeHash,c=r.ajaxSuccess,i=r.ajaxResponse,l=r.ajaxUpdated;Object(d.isEqual)(e,this.props)||this.updateShortcode(),this.props.blockArgs.do_shortcode&&l&&(c&&Object(B.doAction)("yith_plugin_fw_gutenberg_success_do_shortcode",o,a,i),Object(B.doAction)("yith_plugin_fw_gutenberg_after_do_shortcode",o,a,i),this.setState({ajaxUpdated:!1}))}},{key:"updateShortcode",value:function(){var e=this,t=this.props,n=t.attributes,r=t.blockArgs;this.setState({loading:!0,ajaxSuccess:!1,ajaxResponse:!1});var o=m(r,n),a=l()(o);r.do_shortcode?(this.ajaxTimeout&&clearTimeout(this.ajaxTimeout),Object(B.doAction)("yith_plugin_fw_gutenberg_before_do_shortcode",o,a),this.ajaxTimeout=setTimeout((function(){(function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:yithGutenberg.ajaxurl;return t=Object(u.addQueryArgs)(t,e),fetch(t).then(f).then(p)})({action:"yith_plugin_fw_gutenberg_do_shortcode",shortcode:o}).then((function(t){e.setState({loading:!1,firstLoading:!1,html:t.html,shortcode:o,shortcodeHash:a,ajaxSuccess:!0,ajaxUpdated:!0,ajaxResponse:t})})).catch((function(e){console.log({error:e})}))}),300)):this.setState({loading:!1,firstLoading:!1,html:o,shortcode:o,shortcodeHash:a})}},{key:"render",value:function(){var e=this.state,t=e.html,n=e.loading,r=e.firstLoading,o=e.shortcode,c=e.shortcodeHash,i=this.props.blockArgs,l=i.do_shortcode,s=i.title,u=i.empty_message,f="block-editor-yith-plugin-fw-shortcode-block",p=[f],d=l?"html":"shortcode",b=t,y="";r&&n?d="first-loading":l&&!t&&(d="empty-html",b=o,!n&&u&&(y=u));var g=["first-loading","empty-html","shortcode"].includes(d),m=!["first-loading","empty-html"].includes(d),_=!!y;return p.push("".concat(f,"--").concat(d)),p.push("".concat(f,_?"--has-message":"--no-message")),p.push("yith_block_".concat(c)),Object(a.createElement)(a.Fragment,null,Object(a.createElement)("div",{className:p.join(" ")},n?Object(a.createElement)("div",{className:"".concat(f,"__spinner-wrap")},Object(a.createElement)(v.Spinner,null)):"",g&&Object(a.createElement)("div",{className:"".concat(f,"__title components-placeholder__label")},h,s),_&&Object(a.createElement)(a.RawHTML,{className:"".concat(f,"__message")},y),m&&Object(a.createElement)(a.RawHTML,{className:"".concat(f,"__content")},b)))}}]),o}(c.Component),R=n(8);function P(e){var t=e.className,n=e.label,r=e.onChange,o=e.value,c=e.help,i=e.disableAlpha,l=Object(R.useInstanceId)(P),s="inspector-yith-color-picker-control-".concat(l);return Object(a.createElement)(v.BaseControl,{id:s,label:n,className:"block-editor-yith-color-control ".concat(t),help:c},Object(a.createElement)(v.ColorPicker,{color:o,disableAlpha:i,onChangeComplete:r}))}function M(e){var t=e.label,n=e.colorValue;return Object(a.createElement)(a.Fragment,null,t,!!n&&Object(a.createElement)(v.ColorIndicator,{colorValue:n}))}function I(e){var t=e.className,n=e.label,r=e.onChange,o=e.value,c=e.help,i=e.palette,l=e.clearable;i=i||Object(_.__experimentalUseEditorFeature)("color.palette");var s=Object(R.useInstanceId)(I),u="inspector-yith-color-palette-control-".concat(s);return Object(a.createElement)(v.BaseControl,{id:u,className:"block-editor-yith-color-palette-control ".concat(t),help:c},Object(a.createElement)("fieldset",null,Object(a.createElement)("legend",null,Object(a.createElement)("div",{className:"block-editor-yith-color-palette-control__color-indicator"},Object(a.createElement)(v.BaseControl.VisualLabel,null,Object(a.createElement)(M,{colorValue:o,label:n})))),Object(a.createElement)(v.ColorPalette,{value:o,onChange:r,colors:i,clearable:l})))}n(28);for(var H=function(e,t){return function(n){var r=n.attributes,c=(n.className,n.setAttributes),i=function(e,t,n){["colorpicker","color"].includes(n)&&(e=e.color.getAlpha()<1?e.color.toRgbString():e.color.toHexString());var r={};r[t]=e,c(r)};return Object(a.createElement)(a.Fragment,null,!!t.attributes&&Object(a.createElement)(_.InspectorControls,null,Object(a.createElement)(v.PanelBody,null,Object.entries(t.attributes).map((function(t){var n=o()(t,2),c=function(t,n){var o=n.controlType,c=r[t],l=function(e,t){var n="";return e.helps&&e.helps.checked&&e.helps.unchecked?n=t?e.helps.checked:e.helps.unchecked:e.help&&(n=e.help),n}(n,c),s="".concat(e,"__").concat(t,"-field-wrapper"),u=g(n,r);n.wrapper_class&&(s+=" "+n.wrapper_class);var f=!1;if(u)switch(o){case"select":f=Object(a.createElement)(v.SelectControl,{className:s,key:t,value:c,label:n.label,options:n.options,selected:c,help:l,multiple:!!n.multiple,onChange:function(e){i(e,t,o)}});break;case"text":f=Object(a.createElement)(v.TextControl,{className:s,key:t,value:c,label:n.label,help:l,onChange:function(e){i(e,t,o)}});break;case"textarea":f=Object(a.createElement)(v.TextareaControl,{className:s,key:t,value:c,label:n.label,help:l,onChange:function(e){i(e,t,o)}});break;case"toggle":f=Object(a.createElement)(v.ToggleControl,{className:s,key:t,value:c,label:n.label,help:l,checked:c,onChange:function(e){i(e,t,o)}});break;case"checkbox":f=Object(a.createElement)(v.CheckboxControl,{className:s,key:t,value:c,label:n.label,help:l,checked:c,onChange:function(e){i(e,t,o)}});break;case"number":case"range":f=Object(a.createElement)(v.RangeControl,{className:s,key:t,value:c,label:n.label,help:l,min:n.min,max:n.max,onChange:function(e){i(e,t,o)}});break;case"color":case"colorpicker":f=Object(a.createElement)(P,{className:s,key:t,label:n.label,help:l,value:c,disableAlpha:n.disableAlpha,onChange:function(e){i(e,t,o)}});break;case"color-palette":f=Object(a.createElement)(I,{className:s,key:t,label:n.label,help:l,value:c,clearable:n.clearable||!1,onChange:function(e){i(e,t,o)}});break;case"radio":f=Object(a.createElement)(v.RadioControl,{key:t,value:c,label:n.label,options:n.options,selected:c,checked:c,help:l,onChange:function(e){i(e,t,o)}});break;default:f=!1}return f}(n[0],n[1]);if(c)return c})))),Object(a.createElement)(N,{attributes:r,blockArgs:t}))}},L=function(){var e=Q[U];Object(B.addAction)(e.key,"yith-plugin-fw/jquery-events",(function(){for(var t=arguments.length,n=new Array(t),r=0;r<t;r++)n[r]=arguments[r];"jQuery"in window&&(e.delay?setTimeout((function(){jQuery(document).trigger(e.key,Object.values(n))}),e.delay):jQuery(document).trigger(e.key,Object.values(n)))}))},U=0,Q=[{key:"yith_plugin_fw_gutenberg_before_do_shortcode",delay:0},{key:"yith_plugin_fw_gutenberg_success_do_shortcode",delay:200},{key:"yith_plugin_fw_gutenberg_after_do_shortcode",delay:200}];U<Q.length;U++)L();for(var F=function(){var e=o()(J[D],2),t=e[0],n=e[1];Object(s.registerBlockType)("yith/"+t,{title:n.title,description:n.description,category:n.category,attributes:n.attributes,icon:void 0!==n.icon?n.icon:h,keywords:n.keywords,edit:H(t,n),save:function(e){var t=e.attributes;return m(n,t)},deprecated:[{attributes:n.attributes,save:function(e){var t=e.attributes,r=m(n,t),o='<span class="yith_block_'+l()(r)+'">'+r+"</span>";return Object(a.createElement)(a.RawHTML,null,o)}}]})},D=0,J=Object.entries(yithGutenbergBlocks);D<J.length;D++)F()}]);
1
+ (window.webpackJsonp_yith_plugin_framewowrk=window.webpackJsonp_yith_plugin_framewowrk||[]).push([[1],{27:function(e,t,o){},28:function(e,t,o){}}]),function(e){function t(t){for(var r,c,l=t[0],s=t[1],i=t[2],p=0,f=[];p<l.length;p++)c=l[p],Object.prototype.hasOwnProperty.call(n,c)&&n[c]&&f.push(n[c][0]),n[c]=0;for(r in s)Object.prototype.hasOwnProperty.call(s,r)&&(e[r]=s[r]);for(u&&u(t);f.length;)f.shift()();return a.push.apply(a,i||[]),o()}function o(){for(var e,t=0;t<a.length;t++){for(var o=a[t],r=!0,l=1;l<o.length;l++){var s=o[l];0!==n[s]&&(r=!1)}r&&(a.splice(t--,1),e=c(c.s=o[0]))}return e}var r={},n={0:0},a=[];function c(t){if(r[t])return r[t].exports;var o=r[t]={i:t,l:!1,exports:{}};return e[t].call(o.exports,o,o.exports,c),o.l=!0,o.exports}c.m=e,c.c=r,c.d=function(e,t,o){c.o(e,t)||Object.defineProperty(e,t,{enumerable:!0,get:o})},c.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},c.t=function(e,t){if(1&t&&(e=c(e)),8&t)return e;if(4&t&&"object"==typeof e&&e&&e.__esModule)return e;var o=Object.create(null);if(c.r(o),Object.defineProperty(o,"default",{enumerable:!0,value:e}),2&t&&"string"!=typeof e)for(var r in e)c.d(o,r,function(t){return e[t]}.bind(null,r));return o},c.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return c.d(t,"a",t),t},c.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},c.p="";var l=window.webpackJsonp_yith_plugin_framewowrk=window.webpackJsonp_yith_plugin_framewowrk||[],s=l.push.bind(l);l.push=t,l=l.slice();for(var i=0;i<l.length;i++)t(l[i]);var u=s;a.push([29,1]),o()}([function(e,t){e.exports=window.wp.element},function(e,t){e.exports=window.wp.components},function(e,t){e.exports=window.React},function(e,t,o){var r=o(17),n=o(18),a=o(19),c=o(21);e.exports=function(e,t){return r(e)||n(e,t)||a(e,t)||c()},e.exports.default=e.exports,e.exports.__esModule=!0},function(e,t){e.exports=window.wp.hooks},function(e,t){e.exports=window.lodash},function(e,t,o){var r,n,a,c,l;r=o(22),n=o(10).utf8,a=o(23),c=o(10).bin,(l=function(e,t){e.constructor==String?e=t&&"binary"===t.encoding?c.stringToBytes(e):n.stringToBytes(e):a(e)?e=Array.prototype.slice.call(e,0):Array.isArray(e)||e.constructor===Uint8Array||(e=e.toString());for(var o=r.bytesToWords(e),s=8*e.length,i=1732584193,u=-271733879,p=-1732584194,f=271733878,d=0;d<o.length;d++)o[d]=16711935&(o[d]<<8|o[d]>>>24)|4278255360&(o[d]<<24|o[d]>>>8);o[s>>>5]|=128<<s%32,o[14+(s+64>>>9<<4)]=s;var h=l._ff,b=l._gg,y=l._hh,g=l._ii;for(d=0;d<o.length;d+=16){var m=i,_=u,v=p,x=f;i=h(i,u,p,f,o[d+0],7,-680876936),f=h(f,i,u,p,o[d+1],12,-389564586),p=h(p,f,i,u,o[d+2],17,606105819),u=h(u,p,f,i,o[d+3],22,-1044525330),i=h(i,u,p,f,o[d+4],7,-176418897),f=h(f,i,u,p,o[d+5],12,1200080426),p=h(p,f,i,u,o[d+6],17,-1473231341),u=h(u,p,f,i,o[d+7],22,-45705983),i=h(i,u,p,f,o[d+8],7,1770035416),f=h(f,i,u,p,o[d+9],12,-1958414417),p=h(p,f,i,u,o[d+10],17,-42063),u=h(u,p,f,i,o[d+11],22,-1990404162),i=h(i,u,p,f,o[d+12],7,1804603682),f=h(f,i,u,p,o[d+13],12,-40341101),p=h(p,f,i,u,o[d+14],17,-1502002290),i=b(i,u=h(u,p,f,i,o[d+15],22,1236535329),p,f,o[d+1],5,-165796510),f=b(f,i,u,p,o[d+6],9,-1069501632),p=b(p,f,i,u,o[d+11],14,643717713),u=b(u,p,f,i,o[d+0],20,-373897302),i=b(i,u,p,f,o[d+5],5,-701558691),f=b(f,i,u,p,o[d+10],9,38016083),p=b(p,f,i,u,o[d+15],14,-660478335),u=b(u,p,f,i,o[d+4],20,-405537848),i=b(i,u,p,f,o[d+9],5,568446438),f=b(f,i,u,p,o[d+14],9,-1019803690),p=b(p,f,i,u,o[d+3],14,-187363961),u=b(u,p,f,i,o[d+8],20,1163531501),i=b(i,u,p,f,o[d+13],5,-1444681467),f=b(f,i,u,p,o[d+2],9,-51403784),p=b(p,f,i,u,o[d+7],14,1735328473),i=y(i,u=b(u,p,f,i,o[d+12],20,-1926607734),p,f,o[d+5],4,-378558),f=y(f,i,u,p,o[d+8],11,-2022574463),p=y(p,f,i,u,o[d+11],16,1839030562),u=y(u,p,f,i,o[d+14],23,-35309556),i=y(i,u,p,f,o[d+1],4,-1530992060),f=y(f,i,u,p,o[d+4],11,1272893353),p=y(p,f,i,u,o[d+7],16,-155497632),u=y(u,p,f,i,o[d+10],23,-1094730640),i=y(i,u,p,f,o[d+13],4,681279174),f=y(f,i,u,p,o[d+0],11,-358537222),p=y(p,f,i,u,o[d+3],16,-722521979),u=y(u,p,f,i,o[d+6],23,76029189),i=y(i,u,p,f,o[d+9],4,-640364487),f=y(f,i,u,p,o[d+12],11,-421815835),p=y(p,f,i,u,o[d+15],16,530742520),i=g(i,u=y(u,p,f,i,o[d+2],23,-995338651),p,f,o[d+0],6,-198630844),f=g(f,i,u,p,o[d+7],10,1126891415),p=g(p,f,i,u,o[d+14],15,-1416354905),u=g(u,p,f,i,o[d+5],21,-57434055),i=g(i,u,p,f,o[d+12],6,1700485571),f=g(f,i,u,p,o[d+3],10,-1894986606),p=g(p,f,i,u,o[d+10],15,-1051523),u=g(u,p,f,i,o[d+1],21,-2054922799),i=g(i,u,p,f,o[d+8],6,1873313359),f=g(f,i,u,p,o[d+15],10,-30611744),p=g(p,f,i,u,o[d+6],15,-1560198380),u=g(u,p,f,i,o[d+13],21,1309151649),i=g(i,u,p,f,o[d+4],6,-145523070),f=g(f,i,u,p,o[d+11],10,-1120210379),p=g(p,f,i,u,o[d+2],15,718787259),u=g(u,p,f,i,o[d+9],21,-343485551),i=i+m>>>0,u=u+_>>>0,p=p+v>>>0,f=f+x>>>0}return r.endian([i,u,p,f])})._ff=function(e,t,o,r,n,a,c){var l=e+(t&o|~t&r)+(n>>>0)+c;return(l<<a|l>>>32-a)+t},l._gg=function(e,t,o,r,n,a,c){var l=e+(t&r|o&~r)+(n>>>0)+c;return(l<<a|l>>>32-a)+t},l._hh=function(e,t,o,r,n,a,c){var l=e+(t^o^r)+(n>>>0)+c;return(l<<a|l>>>32-a)+t},l._ii=function(e,t,o,r,n,a,c){var l=e+(o^(t|~r))+(n>>>0)+c;return(l<<a|l>>>32-a)+t},l._blocksize=16,l._digestsize=16,e.exports=function(e,t){if(null==e)throw new Error("Illegal argument "+e);var o=r.wordsToBytes(l(e,t));return t&&t.asBytes?o:t&&t.asString?c.bytesToString(o):r.bytesToHex(o)}},function(e,t){e.exports=window.wp.blockEditor},function(e,t){e.exports=window.wp.compose},function(e,t){function o(t){return e.exports=o=Object.setPrototypeOf?Object.getPrototypeOf:function(e){return e.__proto__||Object.getPrototypeOf(e)},e.exports.default=e.exports,e.exports.__esModule=!0,o(t)}e.exports=o,e.exports.default=e.exports,e.exports.__esModule=!0},function(e,t){var o={utf8:{stringToBytes:function(e){return o.bin.stringToBytes(unescape(encodeURIComponent(e)))},bytesToString:function(e){return decodeURIComponent(escape(o.bin.bytesToString(e)))}},bin:{stringToBytes:function(e){for(var t=[],o=0;o<e.length;o++)t.push(255&e.charCodeAt(o));return t},bytesToString:function(e){for(var t=[],o=0;o<e.length;o++)t.push(String.fromCharCode(e[o]));return t.join("")}}};e.exports=o},function(e,t){e.exports=window.wp.blocks},function(e,t){e.exports=window.wp.url},function(e,t){e.exports=function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")},e.exports.default=e.exports,e.exports.__esModule=!0},function(e,t){function o(e,t){for(var o=0;o<t.length;o++){var r=t[o];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(e,r.key,r)}}e.exports=function(e,t,r){return t&&o(e.prototype,t),r&&o(e,r),e},e.exports.default=e.exports,e.exports.__esModule=!0},function(e,t,o){var r=o(24);e.exports=function(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function");e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,writable:!0,configurable:!0}}),t&&r(e,t)},e.exports.default=e.exports,e.exports.__esModule=!0},function(e,t,o){var r=o(25).default,n=o(26);e.exports=function(e,t){return!t||"object"!==r(t)&&"function"!=typeof t?n(e):t},e.exports.default=e.exports,e.exports.__esModule=!0},function(e,t){e.exports=function(e){if(Array.isArray(e))return e},e.exports.default=e.exports,e.exports.__esModule=!0},function(e,t){e.exports=function(e,t){var o=e&&("undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"]);if(null!=o){var r,n,a=[],c=!0,l=!1;try{for(o=o.call(e);!(c=(r=o.next()).done)&&(a.push(r.value),!t||a.length!==t);c=!0);}catch(e){l=!0,n=e}finally{try{c||null==o.return||o.return()}finally{if(l)throw n}}return a}},e.exports.default=e.exports,e.exports.__esModule=!0},function(e,t,o){var r=o(20);e.exports=function(e,t){if(e){if("string"==typeof e)return r(e,t);var o=Object.prototype.toString.call(e).slice(8,-1);return"Object"===o&&e.constructor&&(o=e.constructor.name),"Map"===o||"Set"===o?Array.from(e):"Arguments"===o||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(o)?r(e,t):void 0}},e.exports.default=e.exports,e.exports.__esModule=!0},function(e,t){e.exports=function(e,t){(null==t||t>e.length)&&(t=e.length);for(var o=0,r=new Array(t);o<t;o++)r[o]=e[o];return r},e.exports.default=e.exports,e.exports.__esModule=!0},function(e,t){e.exports=function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")},e.exports.default=e.exports,e.exports.__esModule=!0},function(e,t){var o,r;o="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",r={rotl:function(e,t){return e<<t|e>>>32-t},rotr:function(e,t){return e<<32-t|e>>>t},endian:function(e){if(e.constructor==Number)return 16711935&r.rotl(e,8)|4278255360&r.rotl(e,24);for(var t=0;t<e.length;t++)e[t]=r.endian(e[t]);return e},randomBytes:function(e){for(var t=[];e>0;e--)t.push(Math.floor(256*Math.random()));return t},bytesToWords:function(e){for(var t=[],o=0,r=0;o<e.length;o++,r+=8)t[r>>>5]|=e[o]<<24-r%32;return t},wordsToBytes:function(e){for(var t=[],o=0;o<32*e.length;o+=8)t.push(e[o>>>5]>>>24-o%32&255);return t},bytesToHex:function(e){for(var t=[],o=0;o<e.length;o++)t.push((e[o]>>>4).toString(16)),t.push((15&e[o]).toString(16));return t.join("")},hexToBytes:function(e){for(var t=[],o=0;o<e.length;o+=2)t.push(parseInt(e.substr(o,2),16));return t},bytesToBase64:function(e){for(var t=[],r=0;r<e.length;r+=3)for(var n=e[r]<<16|e[r+1]<<8|e[r+2],a=0;a<4;a++)8*r+6*a<=8*e.length?t.push(o.charAt(n>>>6*(3-a)&63)):t.push("=");return t.join("")},base64ToBytes:function(e){e=e.replace(/[^A-Z0-9+\/]/gi,"");for(var t=[],r=0,n=0;r<e.length;n=++r%4)0!=n&&t.push((o.indexOf(e.charAt(r-1))&Math.pow(2,-2*n+8)-1)<<2*n|o.indexOf(e.charAt(r))>>>6-2*n);return t}},e.exports=r},function(e,t){function o(e){return!!e.constructor&&"function"==typeof e.constructor.isBuffer&&e.constructor.isBuffer(e)}e.exports=function(e){return null!=e&&(o(e)||function(e){return"function"==typeof e.readFloatLE&&"function"==typeof e.slice&&o(e.slice(0,0))}(e)||!!e._isBuffer)}},function(e,t){function o(t,r){return e.exports=o=Object.setPrototypeOf||function(e,t){return e.__proto__=t,e},e.exports.default=e.exports,e.exports.__esModule=!0,o(t,r)}e.exports=o,e.exports.default=e.exports,e.exports.__esModule=!0},function(e,t){function o(t){return"function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?(e.exports=o=function(e){return typeof e},e.exports.default=e.exports,e.exports.__esModule=!0):(e.exports=o=function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},e.exports.default=e.exports,e.exports.__esModule=!0),o(t)}e.exports=o,e.exports.default=e.exports,e.exports.__esModule=!0},function(e,t){e.exports=function(e){if(void 0===e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return e},e.exports.default=e.exports,e.exports.__esModule=!0},,,function(e,t,o){"use strict";o.r(t);var r=o(3),n=o.n(r),a=o(0),c=o(2),l=o(6),s=o.n(l),i=o(11),u=o(12);function p(e){if(e.status>=200&&e.status<300)return e;throw e}function f(e){return e.json?e.json():e.text()}var d=Object(a.createElement)("svg",{viewBox:"0 0 22 22",xmlns:"http://www.w3.org/2000/svg",width:"22",height:"22",role:"img","aria-hidden":"true",focusable:"false"},Object(a.createElement)("path",{width:"22",height:"22",d:"M 18.24 7.628 C 17.291 8.284 16.076 8.971 14.587 9.688 C 15.344 7.186 15.765 4.851 15.849 2.684 C 15.912 0.939 15.133 0.045 13.514 0.003 C 11.558 -0.06 10.275 1.033 9.665 3.284 C 10.007 3.137 10.359 3.063 10.723 3.063 C 11.021 3.063 11.267 3.184 11.459 3.426 C 11.651 3.668 11.736 3.947 11.715 4.262 C 11.695 5.082 11.276 5.961 10.46 6.896 C 9.644 7.833 8.918 8.3 8.282 8.3 C 7.837 8.3 7.625 7.922 7.646 7.165 C 7.667 6.765 7.804 5.955 8.056 4.735 C 8.287 3.579 8.403 2.801 8.403 2.401 C 8.403 1.707 8.224 1.144 7.867 0.713 C 7.509 0.282 6.994 0.098 6.321 0.161 C 5.858 0.203 5.175 0.624 4.27 1.422 C 3.596 2.035 2.923 2.644 2.25 3.254 L 2.976 4.106 C 3.564 3.664 3.922 3.443 4.048 3.443 C 4.448 3.443 4.637 3.717 4.617 4.263 C 4.617 4.306 4.427 4.968 4.049 6.251 C 3.671 7.534 3.471 8.491 3.449 9.122 C 3.407 9.985 3.565 10.647 3.924 11.109 C 4.367 11.677 5.106 11.919 6.142 11.835 C 7.366 11.751 8.591 11.298 9.816 10.479 C 10.323 10.142 10.808 9.753 11.273 9.311 C 11.105 10.153 10.905 10.868 10.673 11.457 C 8.402 12.487 6.762 13.37 5.752 14.107 C 4.321 15.137 3.554 16.241 3.449 17.419 C 3.259 19.459 4.29 20.479 6.541 20.479 C 8.055 20.479 9.517 19.554 10.926 17.703 C 12.125 16.126 13.166 14.022 14.049 11.394 C 15.578 10.635 16.87 9.892 17.928 9.164 C 17.894 9.409 18.319 7.308 18.24 7.628 Z M 7.393 16.095 C 7.056 16.095 6.898 15.947 6.919 15.653 C 6.961 15.106 7.908 14.38 9.759 13.476 C 8.791 15.221 8.002 16.095 7.393 16.095 Z"})),h=o(5),b=o.n(h),y=function(e,t,o){var r=!0;if(t&&t.id&&"value"in t){var n=t.value;["toggle","checkbox"].includes(o)&&(n=!0===n||"yes"===n||1===n),n=b.a.isArray(n)?n:[n],r=void 0!==e[t.id]&&n.includes(e[t.id])}return r},g=function(e,t){var o=e.controlType,r=!0;if(e.deps)if(b.a.isArray(e.deps))for(var n in e.deps){var a=e.deps[n];if(!(r=y(t,a,o)))break}else r=y(t,e.deps,o);return r},m=function(e,t){var o="",r=!1;if(void 0!==e.callback&&(jQuery&&e.callback in jQuery.fn?r=jQuery.fn[e.callback]:e.callback in window&&(r=window[e.callback])),"function"==typeof r)o=r(t,e);else{var a=e.attributes?Object.entries(e.attributes).map((function(e){var o=n()(e,2),r=o[0],a=o[1],c=g(a,t),l=t[r];if(c&&void 0!==l)return r+"="+(a.remove_quotes?l:'"'.concat(l,'"'))})):[],c=a.length?" "+a.join(" "):"";o="[".concat(e.shortcode_name).concat(c,"]")}return o},_=o(1),v=o(7),x=o(13),j=o.n(x),w=o(14),k=o.n(w),O=o(15),C=o.n(O),E=o(16),S=o.n(E),T=o(9),A=o.n(T),M=o(4);o(27);var B=function(e){C()(n,e);var t,o,r=(t=n,o=function(){if("undefined"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"==typeof Proxy)return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){}))),!0}catch(e){return!1}}(),function(){var e,r=A()(t);if(o){var n=A()(this).constructor;e=Reflect.construct(r,arguments,n)}else e=r.apply(this,arguments);return S()(this,e)});function n(){var e;return j()(this,n),(e=r.apply(this,arguments)).state={html:"",shortcode:"",shortcodeHash:"",ajaxUpdated:!1,ajaxSuccess:!1,ajaxResponse:!1,loading:!1,firstLoading:!0},e.ajaxTimeout=!1,e}return k()(n,[{key:"componentDidMount",value:function(){this.updateShortcode()}},{key:"componentDidUpdate",value:function(e,t,o){var r=this.state,n=r.shortcode,a=r.shortcodeHash,c=r.ajaxSuccess,l=r.ajaxResponse,s=r.ajaxUpdated;Object(h.isEqual)(e,this.props)||this.updateShortcode(),this.props.blockArgs.do_shortcode&&s&&(c&&Object(M.doAction)("yith_plugin_fw_gutenberg_success_do_shortcode",n,a,l),Object(M.doAction)("yith_plugin_fw_gutenberg_after_do_shortcode",n,a,l),this.setState({ajaxUpdated:!1}))}},{key:"updateShortcode",value:function(){var e=this,t=this.props,o=t.attributes,r=t.blockArgs;this.setState({loading:!0,ajaxSuccess:!1,ajaxResponse:!1});var n=m(r,o),a=s()(n);r.do_shortcode?(this.ajaxTimeout&&clearTimeout(this.ajaxTimeout),Object(M.doAction)("yith_plugin_fw_gutenberg_before_do_shortcode",n,a),this.ajaxTimeout=setTimeout((function(){(function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:yithGutenberg.ajaxurl;return t=Object(u.addQueryArgs)(t,e),fetch(t).then(p).then(f)})({action:"yith_plugin_fw_gutenberg_do_shortcode",shortcode:n}).then((function(t){e.setState({loading:!1,firstLoading:!1,html:t.html,shortcode:n,shortcodeHash:a,ajaxSuccess:!0,ajaxUpdated:!0,ajaxResponse:t})})).catch((function(e){console.log({error:e})}))}),300)):this.setState({loading:!1,firstLoading:!1,html:n,shortcode:n,shortcodeHash:a})}},{key:"render",value:function(){var e=this.state,t=e.html,o=e.loading,r=e.firstLoading,n=e.shortcode,c=e.shortcodeHash,l=this.props.blockArgs,s=l.do_shortcode,i=l.title,u=l.empty_message,p="block-editor-yith-plugin-fw-shortcode-block",f=[p],h=s?"html":"shortcode",b=t,y="";r&&o?h="first-loading":s&&!t&&(h="empty-html",b=n,!o&&u&&(y=u));var g=["first-loading","empty-html","shortcode"].includes(h),m=!["first-loading","empty-html"].includes(h),v=!!y;return f.push("".concat(p,"--").concat(h)),f.push("".concat(p,v?"--has-message":"--no-message")),f.push("yith_block_".concat(c)),Object(a.createElement)(a.Fragment,null,Object(a.createElement)("div",{className:f.join(" ")},o?Object(a.createElement)("div",{className:"".concat(p,"__spinner-wrap")},Object(a.createElement)(_.Spinner,null)):"",g&&Object(a.createElement)("div",{className:"".concat(p,"__title components-placeholder__label")},d,i),v&&Object(a.createElement)(a.RawHTML,{className:"".concat(p,"__message")},y),m&&Object(a.createElement)(a.RawHTML,{className:"".concat(p,"__content")},b)))}}]),n}(c.Component),N=o(8);function R(e){var t=e.className,o=e.label,r=e.onChange,n=e.value,c=e.help,l=e.disableAlpha,s=Object(N.useInstanceId)(R),i="inspector-yith-color-picker-control-".concat(s);return Object(a.createElement)(_.BaseControl,{id:i,label:o,className:"block-editor-yith-color-control ".concat(t),help:c},Object(a.createElement)(_.ColorPicker,{color:n,disableAlpha:l,onChangeComplete:r}))}function P(e){var t=e.label,o=e.colorValue;return Object(a.createElement)(a.Fragment,null,t,!!o&&Object(a.createElement)(_.ColorIndicator,{colorValue:o}))}function I(e){var t=e.className,o=e.label,r=e.onChange,n=e.value,c=e.help,l=e.palette,s=e.clearable;l=l||Object(v.__experimentalUseEditorFeature)("color.palette");var i=Object(N.useInstanceId)(I),u="inspector-yith-color-palette-control-".concat(i);return Object(a.createElement)(_.BaseControl,{id:u,className:"block-editor-yith-color-palette-control ".concat(t),help:c},Object(a.createElement)("fieldset",null,Object(a.createElement)("legend",null,Object(a.createElement)("div",{className:"block-editor-yith-color-palette-control__color-indicator"},Object(a.createElement)(_.BaseControl.VisualLabel,null,Object(a.createElement)(P,{colorValue:n,label:o})))),Object(a.createElement)(_.ColorPalette,{value:n,onChange:r,colors:l,clearable:s})))}o(28);for(var H=function(e,t){return function(o){var r=o.attributes,c=(o.className,o.setAttributes),l=function(e,t,o){["colorpicker","color"].includes(o)&&(e=e.color.getAlpha()<1?e.color.toRgbString():e.color.toHexString());var r={};r[t]=e,c(r)};return Object(a.createElement)(a.Fragment,null,!!t.attributes&&Object(a.createElement)(v.InspectorControls,null,Object(a.createElement)(_.PanelBody,null,Object.entries(t.attributes).map((function(t){var o=n()(t,2),c=function(t,o){var n=o.controlType,c=r[t],s=function(e,t){var o="";return e.helps&&e.helps.checked&&e.helps.unchecked?o=t?e.helps.checked:e.helps.unchecked:e.help&&(o=e.help),o}(o,c),i="".concat(e,"__").concat(t,"-field-wrapper"),u=g(o,r);o.wrapper_class&&(i+=" "+o.wrapper_class);var p=!1;if(u)switch(n){case"select":p=Object(a.createElement)(_.SelectControl,{className:i,key:t,value:c,label:o.label,options:o.options,selected:c,help:s,multiple:!!o.multiple,onChange:function(e){l(e,t,n)}});break;case"text":p=Object(a.createElement)(_.TextControl,{className:i,key:t,value:c,label:o.label,help:s,onChange:function(e){l(e,t,n)}});break;case"textarea":p=Object(a.createElement)(_.TextareaControl,{className:i,key:t,value:c,label:o.label,help:s,onChange:function(e){l(e,t,n)}});break;case"toggle":p=Object(a.createElement)(_.ToggleControl,{className:i,key:t,value:c,label:o.label,help:s,checked:c,onChange:function(e){l(e,t,n)}});break;case"checkbox":p=Object(a.createElement)(_.CheckboxControl,{className:i,key:t,value:c,label:o.label,help:s,checked:c,onChange:function(e){l(e,t,n)}});break;case"number":case"range":p=Object(a.createElement)(_.RangeControl,{className:i,key:t,value:c,label:o.label,help:s,min:o.min,max:o.max,onChange:function(e){l(e,t,n)}});break;case"color":case"colorpicker":p=Object(a.createElement)(R,{className:i,key:t,label:o.label,help:s,value:c,disableAlpha:o.disableAlpha,onChange:function(e){l(e,t,n)}});break;case"color-palette":p=Object(a.createElement)(I,{className:i,key:t,label:o.label,help:s,value:c,clearable:o.clearable||!1,onChange:function(e){l(e,t,n)}});break;case"radio":p=Object(a.createElement)(_.RadioControl,{key:t,value:c,label:o.label,options:o.options,selected:c,checked:c,help:s,onChange:function(e){l(e,t,n)}});break;default:p=!1}return p}(o[0],o[1]);if(c)return c})))),Object(a.createElement)(B,{attributes:r,blockArgs:t}))}},L=function(){var e=Q[U];Object(M.addAction)(e.key,"yith-plugin-fw/jquery-events",(function(){for(var t=arguments.length,o=new Array(t),r=0;r<t;r++)o[r]=arguments[r];"jQuery"in window&&(e.delay?setTimeout((function(){jQuery(document).trigger(e.key,Object.values(o))}),e.delay):jQuery(document).trigger(e.key,Object.values(o)))}))},U=0,Q=[{key:"yith_plugin_fw_gutenberg_before_do_shortcode",delay:0},{key:"yith_plugin_fw_gutenberg_success_do_shortcode",delay:200},{key:"yith_plugin_fw_gutenberg_after_do_shortcode",delay:200}];U<Q.length;U++)L();for(var F=function(){var e=n()(V[J],2),t=e[0],o=e[1];Object(i.registerBlockType)("yith/"+t,{title:o.title,description:o.description,category:o.category,attributes:o.attributes,icon:void 0!==o.icon?o.icon:d,keywords:o.keywords,edit:H(t,o),save:function(e){var t=e.attributes;return m(o,t)},deprecated:[{attributes:o.attributes,save:function(e){var t=e.attributes,r=m(o,t),n='<span class="yith_block_'+s()(r)+'">'+r+"</span>";return Object(a.createElement)(a.RawHTML,null,n)}}]})},J=0,V=Object.entries(yithGutenbergBlocks);J<V.length;J++)F()}]);
plugin-fw/includes/class-yit-assets.php CHANGED
@@ -63,9 +63,11 @@ if ( ! class_exists( 'YIT_Assets' ) ) {
63
  * Register styles and scripts
64
  */
65
  public function register_styles_and_scripts() {
66
- global $wp_scripts, $woocommerce, $wp_version;
67
 
68
- $suffix = defined( 'SCRIPT_DEBUG' ) && SCRIPT_DEBUG ? '' : '.min';
 
 
69
 
70
  // Register scripts.
71
  wp_register_script( 'yith-ui', YIT_CORE_PLUGIN_URL . '/assets/js/yith-ui' . $suffix . '.js', array( 'jquery' ), $this->version, true );
@@ -111,6 +113,7 @@ if ( ! class_exists( 'YIT_Assets' ) ) {
111
  'search_posts_nonce' => wp_create_nonce( 'search-posts' ),
112
  'search_terms_nonce' => wp_create_nonce( 'search-terms' ),
113
  'search_customers_nonce' => wp_create_nonce( 'search-customers' ),
 
114
  )
115
  );
116
 
@@ -134,6 +137,22 @@ if ( ! class_exists( 'YIT_Assets' ) ) {
134
  )
135
  );
136
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
137
  // Localize color-picker to avoid issues with WordPress 5.5.
138
  if ( version_compare( $wp_version, '5.5-RC', '>=' ) ) {
139
  wp_localize_script(
63
  * Register styles and scripts
64
  */
65
  public function register_styles_and_scripts() {
66
+ global $wp_scripts, $woocommerce, $wp_version, $pagenow;
67
 
68
+ $screen = function_exists( 'get_current_screen' ) ? get_current_screen() : false;
69
+ $screen_id = $screen && is_a( $screen, 'WP_Screen' ) ? $screen->id : '';
70
+ $suffix = defined( 'SCRIPT_DEBUG' ) && SCRIPT_DEBUG ? '' : '.min';
71
 
72
  // Register scripts.
73
  wp_register_script( 'yith-ui', YIT_CORE_PLUGIN_URL . '/assets/js/yith-ui' . $suffix . '.js', array( 'jquery' ), $this->version, true );
113
  'search_posts_nonce' => wp_create_nonce( 'search-posts' ),
114
  'search_terms_nonce' => wp_create_nonce( 'search-terms' ),
115
  'search_customers_nonce' => wp_create_nonce( 'search-customers' ),
116
+ 'search_pages_nonce' => wp_create_nonce( 'search-pages' ),
117
  )
118
  );
119
 
137
  )
138
  );
139
 
140
+ wp_localize_script(
141
+ 'yith-plugin-fw-wp-pages',
142
+ 'yith_plugin_fw_wp_pages',
143
+ array(
144
+ 'bulk_delete_confirmation_enabled' => ! ! apply_filters( "yith_plugin_fw_{$screen_id}_bulk_delete_confirmation_enabled", in_array( $pagenow, array( 'edit.php', 'edit-tags.php' ), true ) ),
145
+ 'i18n' => array(
146
+ 'bulk_trash_confirm_title' => __( 'Confirm trash', 'yith-plugin-fw' ),
147
+ 'bulk_trash_confirm_message' => __( 'Are you sure you want to trash the selected items?', 'yith-plugin-fw' ),
148
+ 'bulk_trash_confirm_button' => _x( 'Yes, move to trash', 'Trash confirmation action', 'yith-plugin-fw' ),
149
+ 'bulk_delete_confirm_title' => __( 'Confirm delete', 'yith-plugin-fw' ),
150
+ 'bulk_delete_confirm_message' => __( 'Are you sure you want to delete the selected items?', 'yith-plugin-fw' ) . '<br /><br />' . __( 'This action cannot be undone and you will not be able to recover this data.', 'yith-plugin-fw' ),
151
+ 'bulk_delete_confirm_button' => _x( 'Yes, delete permanently', 'Delete confirmation action', 'yith-plugin-fw' ),
152
+ ),
153
+ )
154
+ );
155
+
156
  // Localize color-picker to avoid issues with WordPress 5.5.
157
  if ( version_compare( $wp_version, '5.5-RC', '>=' ) ) {
158
  wp_localize_script(
plugin-fw/includes/class-yit-help-desk.php ADDED
@@ -0,0 +1,187 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /**
3
+ * YITH Help Desk static Class.
4
+ *
5
+ * @class YIT_Plugin_Panel
6
+ * @package YITH\PluginFramework\Classes
7
+ */
8
+
9
+ defined( 'ABSPATH' ) || exit; // Exit if accessed directly.
10
+
11
+ if ( ! class_exists( 'YIT_Help_Desk' ) ) {
12
+ /**
13
+ * Class YIT_Help_Desk
14
+ *
15
+ * Contains static utilities for help desk integrations
16
+ */
17
+ class YIT_Help_Desk {
18
+
19
+ /**
20
+ * URL to contact to query zendesk API
21
+ * It can be overridden, by defining YIT_HELP_CENTER_DEBUG_URL constant
22
+ *
23
+ * @const string API url.
24
+ */
25
+ const PRODUCTION_URL = 'https://support.yithemes.com/api/v2/help_center/en-us/';
26
+
27
+ /**
28
+ * Retrieves latest articles flagged with a give set of labels (and featured)
29
+ *
30
+ * @param array $labels Array of labest to search; default to empty array (all featured articles will be retrieved).
31
+ *
32
+ * @return array Array of articles, formatted as follows:
33
+ * [
34
+ * [
35
+ * 'title' => 'Lorem ipsum dolor sit amet',
36
+ * 'url' => 'https://example.com/lorem-ipsum-dolor-sit-amet'
37
+ * ],
38
+ * ...
39
+ * ]
40
+ * @author Antonio La Rocca <antonio.larocca@yithemes.com>
41
+ */
42
+ public static function get_latest_articles( $labels = array() ) {
43
+ $latest_articles = get_site_transient( 'yith-plugin-fw-latest-hc-articles' );
44
+ $latest_articles = $latest_articles ? $latest_articles : array();
45
+
46
+ $labels = (array) $labels;
47
+
48
+ // add featured label.
49
+ if ( ! in_array( 'featured', $labels, true ) ) {
50
+ $labels[] = 'featured';
51
+ }
52
+
53
+ // format labels to a valid query string param.
54
+ $labels = implode( ',', array_map( 'sanitize_text_field', $labels ) );
55
+
56
+ if ( ! empty( $latest_articles[ $labels ] ) && ! isset( $_GET['yith_plugin_fw_reset_hc_articles'] ) ) { // phpcs:ignore WordPress.Security.NonceVerification.Recommended
57
+ // if we can find articles in cache, return them.
58
+ return $latest_articles[ $labels ];
59
+ } else {
60
+ // otherwise try to retrieve them.
61
+ try {
62
+ $response = self::call(
63
+ 'articles.json',
64
+ 'GET',
65
+ array(
66
+ 'label_names' => $labels,
67
+ 'sort_by' => 'created_at',
68
+ 'sort_order' => 'desc',
69
+ 'per_page' => 5,
70
+ )
71
+ );
72
+ } catch ( Exception $e ) {
73
+ return array();
74
+ }
75
+
76
+ // invalid answer from Zendesk server.
77
+ if ( ! isset( $response['articles'] ) || ! is_array( $response['articles'] ) ) {
78
+ return array();
79
+ }
80
+
81
+ $formatted_articles = array();
82
+
83
+ foreach ( $response['articles'] as $article ) {
84
+ // invalid article from Zendesk server.
85
+ if ( ! isset( $article['html_url'] ) || ! isset( $article['title'] ) ) {
86
+ continue;
87
+ }
88
+
89
+ // add valid articles.
90
+ $formatted_articles[] = array(
91
+ 'title' => $article['title'],
92
+ 'url' => esc_url( $article['html_url'] ),
93
+ );
94
+ }
95
+
96
+ $latest_articles[ $labels ] = $formatted_articles;
97
+
98
+ // update cache.
99
+ set_site_transient( 'yith-plugin-fw-latest-hc-articles', $latest_articles, 15 * DAY_IN_SECONDS );
100
+
101
+ return $formatted_articles;
102
+ }
103
+ }
104
+
105
+ /**
106
+ * Performs any API request to HC API
107
+ *
108
+ * @param string $request Endpoint to call.
109
+ * @param string $method HTTP method for the call.
110
+ * @param array $query Query string parameters to include with the request.
111
+ * @param array $body Parameters to send as json_encoded content of the request.
112
+ * @param array $args Array of parameters to pass to {wp_remote_request}.
113
+ *
114
+ * @return string Parsed body of the answer; if content is valid JSON string, it will be decoded before return.
115
+ * @throws Exception When an error occurs with API call; error contains more details about the type of problem.
116
+ *
117
+ * @author Antonio La Rocca <antonio.larocca@yithemes.com>
118
+ */
119
+ public static function call( $request, $method = 'GET', $query = array(), $body = array(), $args = array() ) {
120
+ $destination_url = self::get_url( $request );
121
+
122
+ if ( ! empty( $query ) ) {
123
+ $destination_url = add_query_arg( $query, $destination_url );
124
+ }
125
+
126
+ $body = 'GET' === $method ? $body : wp_json_encode( $body );
127
+
128
+ $args = array_merge(
129
+ array(
130
+ 'timeout' => apply_filters( 'yit_plugin_fw_help_desk_request_timeout', 2 ),
131
+ 'reject_unsafe_urls' => true,
132
+ 'blocking' => true,
133
+ 'sslverify' => true,
134
+ 'attempts' => 0,
135
+ ),
136
+ $args,
137
+ array(
138
+ 'method' => $method,
139
+ 'body' => $body,
140
+ )
141
+ );
142
+
143
+ $response = wp_remote_request( $destination_url, $args );
144
+
145
+ if ( is_wp_error( $response ) ) {
146
+ throw new Exception( $response->get_error_message(), 400 );
147
+ } else {
148
+ $resp_body = isset( $response['body'] ) ? @json_decode( $response['body'], true ) : ''; // phpcs:ignore WordPress.PHP.NoSilencedErrors.Discouraged
149
+ $status = isset( $response['response'] ) ? absint( $response['response']['code'] ) : false;
150
+
151
+ if ( ! in_array( $status, apply_filters( 'yit_plugin_fw_help_desk_valid_response_statuses', array( 200 ) ), true ) ) {
152
+ throw new Exception( __( 'There was an error with your request; please try again later.', 'yit-plugin-fw' ), $status );
153
+ } else {
154
+ return $resp_body;
155
+ }
156
+ }
157
+ }
158
+
159
+ /**
160
+ * Get formatted url for API calls
161
+ *
162
+ * @param string $request Endpoint to call with url.
163
+ * @return string Formatted url.
164
+ *
165
+ * @author Antonio La Rocca <antonio.larocca@yithemes.com>
166
+ */
167
+ public static function get_url( $request = '' ) {
168
+ $base_url = self::PRODUCTION_URL;
169
+
170
+ if ( defined( 'YIT_HELP_CENTER_DEBUG_URL' ) ) {
171
+ $alternative_url = filter_var( YIT_HELP_CENTER_DEBUG_URL, FILTER_VALIDATE_URL );
172
+ $base_url = $alternative_url ? $alternative_url : $base_url;
173
+ }
174
+
175
+ if ( 0 !== strrpos( $base_url, '/' ) ) {
176
+ $base_url = trailingslashit( $base_url );
177
+ }
178
+
179
+ if ( $request ) {
180
+ $base_url .= $request;
181
+ }
182
+
183
+ return $base_url;
184
+ }
185
+
186
+ }
187
+ }
plugin-fw/includes/class-yit-plugin-panel-woocommerce.php CHANGED
@@ -216,6 +216,8 @@ if ( ! class_exists( 'YIT_Plugin_Panel_WooCommerce' ) ) {
216
 
217
  if ( 'admin.php' === $pagenow && isset( $_REQUEST['tab'] ) && in_array( $_REQUEST['tab'], $tabs, true ) ) {
218
  $tab = sanitize_key( wp_unslash( $_REQUEST['tab'] ) );
 
 
219
  }
220
 
221
  return apply_filters( 'yith_wc_plugin_panel_current_tab', $tab );
@@ -277,6 +279,8 @@ if ( ! class_exists( 'YIT_Plugin_Panel_WooCommerce' ) ) {
277
 
278
  if ( $custom_tab_options ) {
279
  $this->print_custom_tab( $custom_tab_options );
 
 
280
  } else {
281
  include YIT_CORE_PLUGIN_TEMPLATE_PATH . '/panel/woocommerce/woocommerce-form.php';
282
  }
216
 
217
  if ( 'admin.php' === $pagenow && isset( $_REQUEST['tab'] ) && in_array( $_REQUEST['tab'], $tabs, true ) ) {
218
  $tab = sanitize_key( wp_unslash( $_REQUEST['tab'] ) );
219
+ } elseif ( isset( $_REQUEST['tab'] ) && 'help' === $_REQUEST['tab'] && ! empty( $this->settings['help_tab'] ) ) {
220
+ $tab = 'help';
221
  }
222
 
223
  return apply_filters( 'yith_wc_plugin_panel_current_tab', $tab );
279
 
280
  if ( $custom_tab_options ) {
281
  $this->print_custom_tab( $custom_tab_options );
282
+ } elseif ( $this->is_help_tab() ) {
283
+ $this->print_help_tab();
284
  } else {
285
  include YIT_CORE_PLUGIN_TEMPLATE_PATH . '/panel/woocommerce/woocommerce-form.php';
286
  }
plugin-fw/includes/class-yit-plugin-panel.php CHANGED
@@ -475,37 +475,19 @@ if ( ! class_exists( 'YIT_Plugin_Panel' ) ) {
475
  );
476
  $args = wp_parse_args( $args, $defaults );
477
 
478
- list ( $current_tab, $premium_class, $page, $parent_page, $wrapper_class ) = yith_plugin_fw_extract( $args, 'current_tab', 'premium_class', 'page', 'parent_page', 'wrapper_class' );
479
 
480
  $tabs = '<ul class="yith-plugin-fw-tabs">';
481
 
482
  foreach ( $this->settings['admin-tabs'] as $tab => $tab_value ) {
483
- $active_class = $current_tab === $tab ? ' nav-tab-active' : '';
484
- if ( 'premium' === $tab ) {
485
- $active_class .= ' ' . $premium_class;
486
- }
487
- $active_class = apply_filters( 'yith_plugin_fw_panel_active_tab_class', $active_class, $current_tab, $tab );
488
-
489
- $first_sub_tab = $this->get_first_sub_tab_key( $tab );
490
- $sub_tab = ! ! $first_sub_tab ? $first_sub_tab : '';
491
- $sub_tabs = $this->get_sub_tabs( $tab );
492
- $url = $this->get_nav_url( $page, $tab, $sub_tab, $parent_page );
493
- $icon = ( $current_tab !== $tab && $sub_tabs ) ? '<i class="yith-icon yith-icon-arrow_down"></i>' : '';
494
-
495
- $tabs .= '<li class="yith-plugin-fw-tab-element">';
496
- $tabs .= '<a class="nav-tab' . esc_attr( $active_class ) . '" href="' . esc_url( $url ) . '">' . wp_kses_post( $tab_value ) . $icon . '</a>';
497
-
498
- if ( $current_tab !== $tab && $sub_tabs ) {
499
- $tabs .= '<div class="nav-subtab-wrap"><ul class="nav-subtab">';
500
- foreach ( $sub_tabs as $_key => $_tab ) {
501
- $url = $this->get_nav_url( $page, $tab, $_key );
502
 
503
- $tabs .= '<li class="nav-subtab-item"><a href="' . esc_url( $url ) . '">' . wp_kses_post( $_tab['title'] ) . '</a></li>';
504
- }
505
- $tabs .= '</ul></div>';
506
- }
507
- $tabs .= '</li>';
508
  }
 
509
  $tabs .= '</ul>';
510
  ?>
511
  <h2 class="<?php echo esc_attr( $wrapper_class ); ?>">
@@ -515,6 +497,52 @@ if ( ! class_exists( 'YIT_Plugin_Panel' ) ) {
515
  $this->print_sub_tabs_nav( $args );
516
  }
517
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
518
  /**
519
  * Retrieve the Nav URL.
520
  *
@@ -600,6 +628,10 @@ if ( ! class_exists( 'YIT_Plugin_Panel' ) ) {
600
  if ( $custom_tab_options ) {
601
  $this->print_custom_tab( $custom_tab_options );
602
 
 
 
 
 
603
  return;
604
  }
605
 
@@ -725,6 +757,64 @@ if ( ! class_exists( 'YIT_Plugin_Panel' ) ) {
725
  include YIT_CORE_PLUGIN_TEMPLATE_PATH . '/panel/custom-tab.php';
726
  }
727
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
728
  /**
729
  * Add sections and fields to setting panel.
730
  * Read all options and show sections and fields.
@@ -735,9 +825,10 @@ if ( ! class_exists( 'YIT_Plugin_Panel' ) ) {
735
  $yit_options = $this->get_main_array_options();
736
  $option_key = $this->get_current_option_key();
737
 
738
- if ( ! $option_key ) {
739
  return;
740
  }
 
741
  foreach ( $yit_options[ $option_key ] as $section => $data ) {
742
  add_settings_section( "yit_settings_{$option_key}_{$section}", $this->get_section_title( $section ), $this->get_section_description( $section ), 'yit' );
743
  foreach ( $data as $option ) {
475
  );
476
  $args = wp_parse_args( $args, $defaults );
477
 
478
+ list ( $wrapper_class ) = yith_plugin_fw_extract( $args, 'wrapper_class' );
479
 
480
  $tabs = '<ul class="yith-plugin-fw-tabs">';
481
 
482
  foreach ( $this->settings['admin-tabs'] as $tab => $tab_value ) {
483
+ $tabs .= $this->get_tab_nav( $tab, $tab_value, $args );
484
+ }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
485
 
486
+ // help tab.
487
+ if ( $this->has_help_tab() ) {
488
+ $tabs .= $this->get_tab_nav( 'help', _x( 'Help', 'Help tab name', 'yith-plugin-fw' ), $args );
 
 
489
  }
490
+
491
  $tabs .= '</ul>';
492
  ?>
493
  <h2 class="<?php echo esc_attr( $wrapper_class ); ?>">
497
  $this->print_sub_tabs_nav( $args );
498
  }
499
 
500
+ /**
501
+ * Get HTML for single tab in tabs navigation
502
+ *
503
+ * @param string $tab_slug Tab slug.
504
+ * @param string $tab_name Tab name.
505
+ * @param array $args Nav Arguments.
506
+ *
507
+ * @return string Tab HTML
508
+ *
509
+ * @author Antonio La Rocca <antonio.larocca@yithemes.com>
510
+ * @since 3.4.0
511
+ */
512
+ protected function get_tab_nav( $tab_slug, $tab_name, $args = array() ) {
513
+ list ( $current_tab, $premium_class, $page, $parent_page ) = yith_plugin_fw_extract( $args, 'current_tab', 'premium_class', 'page', 'parent_page' );
514
+
515
+ $active_class = $current_tab === $tab_slug ? ' nav-tab-active' : '';
516
+
517
+ if ( 'premium' === $tab_slug ) {
518
+ $active_class .= ' ' . $premium_class;
519
+ }
520
+ $active_class = apply_filters( 'yith_plugin_fw_panel_active_tab_class', $active_class, $current_tab, $tab_slug );
521
+
522
+ $first_sub_tab = $this->get_first_sub_tab_key( $tab_slug );
523
+ $sub_tab = ! ! $first_sub_tab ? $first_sub_tab : '';
524
+ $sub_tabs = $this->get_sub_tabs( $tab_slug );
525
+ $url = $this->get_nav_url( $page, $tab_slug, $sub_tab, $parent_page );
526
+ $icon = ( $current_tab !== $tab_slug && $sub_tabs ) ? '<i class="yith-icon yith-icon-arrow_down"></i>' : '';
527
+
528
+ $tab = '<li class="yith-plugin-fw-tab-element">';
529
+
530
+ $tab .= '<a class="nav-tab' . esc_attr( $active_class ) . '" href="' . esc_url( $url ) . '">' . wp_kses_post( $tab_name ) . $icon . '</a>';
531
+
532
+ if ( $current_tab !== $tab_slug && $sub_tabs ) {
533
+ $tab .= '<div class="nav-subtab-wrap"><ul class="nav-subtab">';
534
+ foreach ( $sub_tabs as $_key => $_tab ) {
535
+ $url = $this->get_nav_url( $page, $tab_slug, $_key );
536
+
537
+ $tab .= '<li class="nav-subtab-item"><a href="' . esc_url( $url ) . '">' . wp_kses_post( $_tab['title'] ) . '</a></li>';
538
+ }
539
+ $tab .= '</ul></div>';
540
+ }
541
+ $tab .= '</li>';
542
+
543
+ return $tab;
544
+ }
545
+
546
  /**
547
  * Retrieve the Nav URL.
548
  *
628
  if ( $custom_tab_options ) {
629
  $this->print_custom_tab( $custom_tab_options );
630
 
631
+ return;
632
+ } elseif ( $this->is_help_tab() ) {
633
+ $this->print_help_tab();
634
+
635
  return;
636
  }
637
 
757
  include YIT_CORE_PLUGIN_TEMPLATE_PATH . '/panel/custom-tab.php';
758
  }
759
 
760
+ /**
761
+ * Check if panel has help tab
762
+ *
763
+ * @return bool Whether panel has help tab or no.
764
+ */
765
+ public function has_help_tab() {
766
+ return ! empty( $this->settings['help_tab'] ) && ( ! $this->is_free() || ! empty( $this->settings['help_tab']['show_on_free'] ) );
767
+ }
768
+
769
+ /**
770
+ * Checks whether current tab is special Help Tab
771
+ *
772
+ * @return bool Whether current tab is Help Tab
773
+ * @author Antonio La Rocca <antonio.larocca@yithemes.com>
774
+ */
775
+ public function is_help_tab() {
776
+ return 'help' === $this->get_current_tab();
777
+ }
778
+
779
+ /**
780
+ * Prints special Help Tab
781
+ *
782
+ * @return void
783
+ * @author Antonio La Rocca <antonio.larocca@yithemes.com>
784
+ */
785
+ public function print_help_tab() {
786
+ $options = isset( $this->settings['help_tab'] ) ? $this->settings['help_tab'] : array();
787
+ $plugin_title = isset( $this->settings['plugin_title'] ) ? $this->settings['plugin_title'] : $this->settings['page_title'];
788
+
789
+ if ( 0 !== strpos( $plugin_title, 'YITH' ) ) {
790
+ $plugin_title = "YITH {$plugin_title}";
791
+ }
792
+
793
+ // parse options.
794
+ $options = wp_parse_args(
795
+ $options,
796
+ array(
797
+ // translators: 1. Plugin name.
798
+ 'title' => sprintf( _x( 'Thank you for purchasing %s!', 'Help tab default title', 'yith-plugin-fw' ), $plugin_title ),
799
+ 'description' => _x( 'We want to help you to enjoy a wonderful experience with all our products.', 'Help tab default description', 'yith-plugin-fw' ),
800
+ 'main_video' => false,
801
+ 'playlists' => array(),
802
+ 'hc_url' => 'https://support.yithemes.com/hc/',
803
+ 'doc_url' => $this->settings['plugin_slug'] ? 'https://docs.yithemes.com/' . $this->settings['plugin_slug'] : '',
804
+ 'submit_ticket_url' => 'https://yithemes.com/my-account/support/submit-a-ticket/',
805
+ 'show_hc_articles' => true,
806
+ 'show_submit_ticket' => true,
807
+ )
808
+ );
809
+
810
+ // set template variables.
811
+ $current_tab = $this->get_current_tab();
812
+ $current_sub_tab = $this->get_current_sub_tab();
813
+ $latest_articles = $this->settings['plugin_slug'] ? YIT_Help_Desk::get_latest_articles( $this->settings['plugin_slug'] ) : array();
814
+
815
+ include YIT_CORE_PLUGIN_TEMPLATE_PATH . '/panel/help-tab.php';
816
+ }
817
+
818
  /**
819
  * Add sections and fields to setting panel.
820
  * Read all options and show sections and fields.
825
  $yit_options = $this->get_main_array_options();
826
  $option_key = $this->get_current_option_key();
827
 
828
+ if ( ! $option_key || ! isset( $yit_options[ $option_key ] ) ) {
829
  return;
830
  }
831
+
832
  foreach ( $yit_options[ $option_key ] as $section => $data ) {
833
  add_settings_section( "yit_settings_{$option_key}_{$section}", $this->get_section_title( $section ), $this->get_section_description( $section ), 'yit' );
834
  foreach ( $data as $option ) {
plugin-fw/init.php CHANGED
@@ -1,13 +1,13 @@
1
  <?php
2
  /**
3
  * Framework Name: YIT Plugin Framework
4
- * Version: 3.7.0
5
  * Author: YITH
6
  * Text Domain: yith-plugin-fw
7
  * Domain Path: /languages/
8
  *
9
  * @author YITH
10
- * @version 3.7.0
11
  * @package YITH\PluginFramework
12
  */
13
 
1
  <?php
2
  /**
3
  * Framework Name: YIT Plugin Framework
4
+ * Version: 3.7.1
5
  * Author: YITH
6
  * Text Domain: yith-plugin-fw
7
  * Domain Path: /languages/
8
  *
9
  * @author YITH
10
+ * @version 3.7.1
11
  * @package YITH\PluginFramework
12
  */
13
 
plugin-fw/languages/yith-plugin-fw-el.mo CHANGED
Binary file
plugin-fw/languages/yith-plugin-fw-el.po CHANGED
@@ -4,7 +4,7 @@ msgid ""
4
  msgstr ""
5
  "Project-Id-Version: YITH Framework\n"
6
  "Report-Msgid-Bugs-To: YITH <plugins@yithemes.com>\n"
7
- "POT-Creation-Date: 2021-05-17 13:16:23+00:00\n"
8
  "PO-Revision-Date: 2021-02-11 18:07:46+0000\n"
9
  "Language: el_GR\n"
10
  "MIME-Version: 1.0\n"
@@ -13,31 +13,58 @@ msgstr ""
13
  "Plural-Forms: nplurals=2; plural=n != 1;\n"
14
  "X-Generator: GlotPress/3.0.0-alpha.2\n"
15
 
16
- #: includes/class-yit-assets.php:143
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
17
  msgid "Clear"
18
  msgstr "Καθαρισμός"
19
 
20
- #: includes/class-yit-assets.php:144
21
  msgid "Clear color"
22
  msgstr "Καθαρισμός χρώματος"
23
 
24
- #: includes/class-yit-assets.php:145
25
  msgid "Default"
26
  msgstr "Προεπιλεγμένο"
27
 
28
- #: includes/class-yit-assets.php:146
29
  msgid "Select default color"
30
  msgstr "Επιλογή προεπιλεγμένου χρώματος"
31
 
32
- #: includes/class-yit-assets.php:147
33
  msgid "Select Color"
34
  msgstr "Επιλογή Χρώματος"
35
 
36
- #: includes/class-yit-assets.php:148
37
  msgid "Color value"
38
  msgstr "Αξία χρώματος"
39
 
40
- #: includes/class-yit-plugin-panel-woocommerce.php:419
 
 
 
 
41
  msgid "The changes you have made will be lost if you leave this page."
42
  msgstr ""
43
  "Οι αλλαγές που έχετε δημιουργήσει θα χαθούν αν αφήσετε αυτήν την σελίδα."
@@ -55,12 +82,12 @@ msgstr "Ρυθμίσεις"
55
  msgid "How to install premium version"
56
  msgstr "Πώς να εγκαταστήσετε την προηγμένη έκδοση"
57
 
58
- #: includes/class-yit-plugin-panel.php:620
59
  #: includes/class-yit-plugin-subpanel.php:132
60
  msgid "Save Changes"
61
  msgstr "Αποθήκευση Αλλαγών"
62
 
63
- #: includes/class-yit-plugin-panel.php:625
64
  #: includes/class-yit-plugin-subpanel.php:136
65
  #: templates/panel/woocommerce/woocommerce-form.php:14
66
  msgid ""
@@ -69,73 +96,73 @@ msgstr ""
69
  "Αν συνεχίσετε με αυτή την ενέργεια θα επαναφέρετε όλες τις επιλογές στη "
70
  "σελίδα."
71
 
72
- #: includes/class-yit-plugin-panel.php:625
73
  #: includes/class-yit-plugin-subpanel.php:136
74
  #: templates/panel/woocommerce/woocommerce-form.php:14
75
  msgid "Are you sure?"
76
  msgstr "Είστε σίγουρος;"
77
 
78
- #: includes/class-yit-plugin-panel.php:629
79
  #: includes/class-yit-plugin-subpanel.php:139
80
  msgid "Reset to default"
81
  msgstr "Επαναφορά σε προεπιλεγμένο"
82
 
83
- #: includes/class-yit-plugin-panel.php:868
84
  msgid ""
85
  "The element you have entered already exists. Please, enter another name."
86
  msgstr "Το στοιχείο που εισάγατε υπάρχει ήδη. Παρακαλώ, εισάγετε άλλο όνομα."
87
 
88
- #: includes/class-yit-plugin-panel.php:869
89
  msgid "Settings saved"
90
  msgstr "Ρυθμίσεις αποθηκεύτηκαν"
91
 
92
- #: includes/class-yit-plugin-panel.php:870
93
  msgid "Settings reset"
94
  msgstr "Επαναφορά ρυθμίσεων"
95
 
96
- #: includes/class-yit-plugin-panel.php:871
97
  msgid "Element deleted correctly."
98
  msgstr "Το στοιχείο διαγράφηκε επιτυχώς."
99
 
100
- #: includes/class-yit-plugin-panel.php:872
101
- #: includes/class-yit-plugin-panel.php:873
102
  msgid "Element updated correctly."
103
  msgstr "Το στοιχείο αναβαθμίστηκε επιτυχώς."
104
 
105
- #: includes/class-yit-plugin-panel.php:874
106
  msgid "Database imported correctly."
107
  msgstr "Επιτυχής εισαγωγή βάσης δεδομένων."
108
 
109
- #: includes/class-yit-plugin-panel.php:875
110
  msgid "An error has occurred during import. Please try again."
111
  msgstr "Παρουσιάστηκε σφάλμα κατά την εισαγωγή. Παρακαλώ προσπαθήστε ξανά."
112
 
113
- #: includes/class-yit-plugin-panel.php:876
114
  msgid "The added file is not valid."
115
  msgstr "Το προστιθέμενο αρχείο δεν είναι έγκυρο."
116
 
117
- #: includes/class-yit-plugin-panel.php:877
118
  msgid "Sorry, import is disabled."
119
  msgstr "Συγνώμη, η εισαγωγή είναι απενεργοποιημένη."
120
 
121
- #: includes/class-yit-plugin-panel.php:878
122
  msgid "Sorting successful."
123
  msgstr "Διαλογή επιτυχής."
124
 
125
- #: includes/class-yit-plugin-panel.php:1346
126
  msgid "We need your support"
127
  msgstr "Χρειαζόμαστε την υποστήριξή σας"
128
 
129
- #: includes/class-yit-plugin-panel.php:1347
130
  msgid "to keep updating and improving the plugin. Please,"
131
  msgstr ""
132
  "για να διατηρήσετε την ενημέρωση και τη βελτίωση του πρόσθετου. Παρακαλώ,"
133
 
134
- #: includes/class-yit-plugin-panel.php:1349
135
  msgid "help us by leaving a good review"
136
  msgstr ""
137
 
138
- #: includes/class-yit-plugin-panel.php:1350
139
  msgid ":) Thanks!"
140
  msgstr ":) Ευχαριστώ!"
141
 
@@ -588,33 +615,20 @@ msgid "Plugins Requirements"
588
  msgstr "Προϋποθέσεις Πρόσθετων"
589
 
590
  #. translators: %s is the title of the post object.
591
- #: yit-functions.php:1823
592
  msgid "Are you sure you want to move \"%s\" to trash?"
593
  msgstr ""
594
 
595
  #. translators: %s is the title of the post object.
596
- #: yit-functions.php:1825 yit-functions.php:1983
597
  msgid "Are you sure you want to delete \"%s\"?"
598
  msgstr ""
599
 
600
- #: yit-functions.php:1825 yit-functions.php:1983
601
- msgid ""
602
- "This action cannot be undone and you will be not able to recover this data."
603
- msgstr ""
604
-
605
- #: yit-functions.php:1891
606
- msgid "Confirm trash"
607
- msgstr ""
608
-
609
- #: yit-functions.php:1908 yit-functions.php:2035
610
- msgid "Confirm delete"
611
- msgstr ""
612
-
613
- #: yit-functions.php:1921 yit-functions.php:1929 yit-functions.php:2046
614
  msgid "Further actions"
615
  msgstr ""
616
 
617
- #: yit-plugin.php:203
618
  msgid "License"
619
  msgstr "Άδεια χρήσης προϊόντος"
620
 
@@ -633,16 +647,48 @@ msgctxt "[gutenberg]: Category Name"
633
  msgid "YITH"
634
  msgstr "YITH"
635
 
636
- #: includes/class-yit-assets.php:131
637
  msgctxt "Button text"
638
  msgid "Confirm"
639
  msgstr ""
640
 
641
- #: includes/class-yit-assets.php:132
642
  msgctxt "Button text"
643
  msgid "Cancel"
644
  msgstr ""
645
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
646
  #: includes/class-yith-dashboard.php:96
647
  msgctxt "Plugin FW"
648
  msgid "View Changelog"
@@ -747,92 +793,152 @@ msgctxt "YES/NO button: use MAX 4 characters!"
747
  msgid "NO"
748
  msgstr "ΟΧΙ"
749
 
750
- #: yit-functions.php:1837
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
751
  msgctxt "Post action"
752
  msgid "Preview"
753
  msgstr ""
754
 
755
- #: yit-functions.php:1846
756
  msgctxt "Post action"
757
  msgid "View"
758
  msgstr ""
759
 
760
- #: yit-functions.php:1857
761
  msgctxt "Post action"
762
  msgid "Edit"
763
  msgstr ""
764
 
765
- #: yit-functions.php:1865
766
  msgctxt "Post action"
767
  msgid "Duplicate"
768
  msgstr ""
769
 
770
- #: yit-functions.php:1877
771
  msgctxt "Post action"
772
  msgid "Restore"
773
  msgstr ""
774
 
775
- #: yit-functions.php:1885
776
  msgctxt "Post action"
777
  msgid "Trash"
778
  msgstr ""
779
 
780
- #: yit-functions.php:1901
781
  msgctxt "Post action"
782
  msgid "Delete Permanently"
783
  msgstr ""
784
 
785
- #: yit-functions.php:1893
786
- msgctxt "Trash confirmation action"
787
- msgid "Yes, trash"
788
- msgstr ""
789
-
790
- #: yit-functions.php:1910 yit-functions.php:2037
791
- msgctxt "Delete confirmation action"
792
- msgid "Yes, delete"
793
- msgstr ""
794
-
795
- #: yit-functions.php:1997
796
  msgctxt "Term action"
797
  msgid "View"
798
  msgstr ""
799
 
800
- #: yit-functions.php:2007
801
  msgctxt "Term action"
802
  msgid "Edit"
803
  msgstr ""
804
 
805
- #: yit-functions.php:2015
806
  msgctxt "Term action"
807
  msgid "Duplicate"
808
  msgstr ""
809
 
810
- #: yit-functions.php:2028
811
  msgctxt "Term action"
812
  msgid "Delete"
813
  msgstr ""
814
 
815
- #: yit-plugin.php:84
816
  msgctxt "Plugin Row Meta"
817
  msgid "Live Demo"
818
  msgstr "Live Demo"
819
 
820
- #: yit-plugin.php:88
821
  msgctxt "Plugin Row Meta"
822
  msgid "Documentation"
823
  msgstr "Εγχειρίδιο χρήσης"
824
 
825
- #: yit-plugin.php:92
826
  msgctxt "Plugin Row Meta"
827
  msgid "Support"
828
  msgstr "Υποστήριξη"
829
 
830
- #: yit-plugin.php:96
831
  msgctxt "Plugin Row Meta"
832
  msgid "Premium version"
833
  msgstr "Premium έκδοση"
834
 
835
- #: yit-plugin.php:199
836
  msgctxt "Action links"
837
  msgid "Settings"
838
  msgstr "Ρυθμίσεις"
4
  msgstr ""
5
  "Project-Id-Version: YITH Framework\n"
6
  "Report-Msgid-Bugs-To: YITH <plugins@yithemes.com>\n"
7
+ "POT-Creation-Date: 2021-06-08 13:48:44+00:00\n"
8
  "PO-Revision-Date: 2021-02-11 18:07:46+0000\n"
9
  "Language: el_GR\n"
10
  "MIME-Version: 1.0\n"
13
  "Plural-Forms: nplurals=2; plural=n != 1;\n"
14
  "X-Generator: GlotPress/3.0.0-alpha.2\n"
15
 
16
+ #: includes/class-yit-assets.php:145 yit-functions.php:1925
17
+ msgid "Confirm trash"
18
+ msgstr ""
19
+
20
+ #: includes/class-yit-assets.php:146
21
+ msgid "Are you sure you want to trash the selected items?"
22
+ msgstr ""
23
+
24
+ #: includes/class-yit-assets.php:148 yit-functions.php:1942
25
+ #: yit-functions.php:2069
26
+ msgid "Confirm delete"
27
+ msgstr ""
28
+
29
+ #: includes/class-yit-assets.php:149
30
+ msgid "Are you sure you want to delete the selected items?"
31
+ msgstr ""
32
+
33
+ #: includes/class-yit-assets.php:149 yit-functions.php:1859
34
+ #: yit-functions.php:2017
35
+ msgid ""
36
+ "This action cannot be undone and you will not be able to recover this data."
37
+ msgstr ""
38
+
39
+ #: includes/class-yit-assets.php:161
40
  msgid "Clear"
41
  msgstr "Καθαρισμός"
42
 
43
+ #: includes/class-yit-assets.php:162
44
  msgid "Clear color"
45
  msgstr "Καθαρισμός χρώματος"
46
 
47
+ #: includes/class-yit-assets.php:163
48
  msgid "Default"
49
  msgstr "Προεπιλεγμένο"
50
 
51
+ #: includes/class-yit-assets.php:164
52
  msgid "Select default color"
53
  msgstr "Επιλογή προεπιλεγμένου χρώματος"
54
 
55
+ #: includes/class-yit-assets.php:165
56
  msgid "Select Color"
57
  msgstr "Επιλογή Χρώματος"
58
 
59
+ #: includes/class-yit-assets.php:166
60
  msgid "Color value"
61
  msgstr "Αξία χρώματος"
62
 
63
+ #: includes/class-yit-help-desk.php:152
64
+ msgid "There was an error with your request; please try again later."
65
+ msgstr ""
66
+
67
+ #: includes/class-yit-plugin-panel-woocommerce.php:423
68
  msgid "The changes you have made will be lost if you leave this page."
69
  msgstr ""
70
  "Οι αλλαγές που έχετε δημιουργήσει θα χαθούν αν αφήσετε αυτήν την σελίδα."
82
  msgid "How to install premium version"
83
  msgstr "Πώς να εγκαταστήσετε την προηγμένη έκδοση"
84
 
85
+ #: includes/class-yit-plugin-panel.php:651
86
  #: includes/class-yit-plugin-subpanel.php:132
87
  msgid "Save Changes"
88
  msgstr "Αποθήκευση Αλλαγών"
89
 
90
+ #: includes/class-yit-plugin-panel.php:656
91
  #: includes/class-yit-plugin-subpanel.php:136
92
  #: templates/panel/woocommerce/woocommerce-form.php:14
93
  msgid ""
96
  "Αν συνεχίσετε με αυτή την ενέργεια θα επαναφέρετε όλες τις επιλογές στη "
97
  "σελίδα."
98
 
99
+ #: includes/class-yit-plugin-panel.php:656
100
  #: includes/class-yit-plugin-subpanel.php:136
101
  #: templates/panel/woocommerce/woocommerce-form.php:14
102
  msgid "Are you sure?"
103
  msgstr "Είστε σίγουρος;"
104
 
105
+ #: includes/class-yit-plugin-panel.php:660
106
  #: includes/class-yit-plugin-subpanel.php:139
107
  msgid "Reset to default"
108
  msgstr "Επαναφορά σε προεπιλεγμένο"
109
 
110
+ #: includes/class-yit-plugin-panel.php:958
111
  msgid ""
112
  "The element you have entered already exists. Please, enter another name."
113
  msgstr "Το στοιχείο που εισάγατε υπάρχει ήδη. Παρακαλώ, εισάγετε άλλο όνομα."
114
 
115
+ #: includes/class-yit-plugin-panel.php:959
116
  msgid "Settings saved"
117
  msgstr "Ρυθμίσεις αποθηκεύτηκαν"
118
 
119
+ #: includes/class-yit-plugin-panel.php:960
120
  msgid "Settings reset"
121
  msgstr "Επαναφορά ρυθμίσεων"
122
 
123
+ #: includes/class-yit-plugin-panel.php:961
124
  msgid "Element deleted correctly."
125
  msgstr "Το στοιχείο διαγράφηκε επιτυχώς."
126
 
127
+ #: includes/class-yit-plugin-panel.php:962
128
+ #: includes/class-yit-plugin-panel.php:963
129
  msgid "Element updated correctly."
130
  msgstr "Το στοιχείο αναβαθμίστηκε επιτυχώς."
131
 
132
+ #: includes/class-yit-plugin-panel.php:964
133
  msgid "Database imported correctly."
134
  msgstr "Επιτυχής εισαγωγή βάσης δεδομένων."
135
 
136
+ #: includes/class-yit-plugin-panel.php:965
137
  msgid "An error has occurred during import. Please try again."
138
  msgstr "Παρουσιάστηκε σφάλμα κατά την εισαγωγή. Παρακαλώ προσπαθήστε ξανά."
139
 
140
+ #: includes/class-yit-plugin-panel.php:966
141
  msgid "The added file is not valid."
142
  msgstr "Το προστιθέμενο αρχείο δεν είναι έγκυρο."
143
 
144
+ #: includes/class-yit-plugin-panel.php:967
145
  msgid "Sorry, import is disabled."
146
  msgstr "Συγνώμη, η εισαγωγή είναι απενεργοποιημένη."
147
 
148
+ #: includes/class-yit-plugin-panel.php:968
149
  msgid "Sorting successful."
150
  msgstr "Διαλογή επιτυχής."
151
 
152
+ #: includes/class-yit-plugin-panel.php:1436
153
  msgid "We need your support"
154
  msgstr "Χρειαζόμαστε την υποστήριξή σας"
155
 
156
+ #: includes/class-yit-plugin-panel.php:1437
157
  msgid "to keep updating and improving the plugin. Please,"
158
  msgstr ""
159
  "για να διατηρήσετε την ενημέρωση και τη βελτίωση του πρόσθετου. Παρακαλώ,"
160
 
161
+ #: includes/class-yit-plugin-panel.php:1439
162
  msgid "help us by leaving a good review"
163
  msgstr ""
164
 
165
+ #: includes/class-yit-plugin-panel.php:1440
166
  msgid ":) Thanks!"
167
  msgstr ":) Ευχαριστώ!"
168
 
615
  msgstr "Προϋποθέσεις Πρόσθετων"
616
 
617
  #. translators: %s is the title of the post object.
618
+ #: yit-functions.php:1857
619
  msgid "Are you sure you want to move \"%s\" to trash?"
620
  msgstr ""
621
 
622
  #. translators: %s is the title of the post object.
623
+ #: yit-functions.php:1859 yit-functions.php:2017
624
  msgid "Are you sure you want to delete \"%s\"?"
625
  msgstr ""
626
 
627
+ #: yit-functions.php:1955 yit-functions.php:1963 yit-functions.php:2080
 
 
 
 
 
 
 
 
 
 
 
 
 
628
  msgid "Further actions"
629
  msgstr ""
630
 
631
+ #: yit-plugin.php:204
632
  msgid "License"
633
  msgstr "Άδεια χρήσης προϊόντος"
634
 
647
  msgid "YITH"
648
  msgstr "YITH"
649
 
650
+ #: includes/class-yit-assets.php:133
651
  msgctxt "Button text"
652
  msgid "Confirm"
653
  msgstr ""
654
 
655
+ #: includes/class-yit-assets.php:134
656
  msgctxt "Button text"
657
  msgid "Cancel"
658
  msgstr ""
659
 
660
+ #: includes/class-yit-assets.php:147 yit-functions.php:1927
661
+ msgctxt "Trash confirmation action"
662
+ msgid "Yes, move to trash"
663
+ msgstr ""
664
+
665
+ #: includes/class-yit-assets.php:150 yit-functions.php:1944
666
+ msgctxt "Delete confirmation action"
667
+ msgid "Yes, delete permanently"
668
+ msgstr ""
669
+
670
+ #: yit-functions.php:2071
671
+ msgctxt "Delete confirmation action"
672
+ msgid "Yes, delete"
673
+ msgstr ""
674
+
675
+ #: includes/class-yit-plugin-panel.php:488
676
+ msgctxt "Help tab name"
677
+ msgid "Help"
678
+ msgstr ""
679
+
680
+ #. translators: 1. Plugin name.
681
+ #: includes/class-yit-plugin-panel.php:797
682
+ msgctxt "Help tab default title"
683
+ msgid "Thank you for purchasing %s!"
684
+ msgstr ""
685
+
686
+ #: includes/class-yit-plugin-panel.php:798
687
+ msgctxt "Help tab default description"
688
+ msgid ""
689
+ "We want to help you to enjoy a wonderful experience with all our products."
690
+ msgstr ""
691
+
692
  #: includes/class-yith-dashboard.php:96
693
  msgctxt "Plugin FW"
694
  msgid "View Changelog"
793
  msgid "NO"
794
  msgstr "ΟΧΙ"
795
 
796
+ #. translators: 1. Url to EN playlist.
797
+ #: templates/panel/help-tab.php:87
798
+ msgctxt "Help tab view all video link"
799
+ msgid ""
800
+ "Check the full <a href=\"%s\" target=\"_blank\">Playlist on Youtube</a> to "
801
+ "learn more >"
802
+ msgstr ""
803
+
804
+ #: templates/panel/help-tab.php:94
805
+ msgctxt "Help tab Watch Videotutorials link"
806
+ msgid "Videos are also available in:"
807
+ msgstr ""
808
+
809
+ #: templates/panel/help-tab.php:137
810
+ msgctxt "Help tab Watch Videotutorials link"
811
+ msgid "Watch our videotutorials"
812
+ msgstr ""
813
+
814
+ #: templates/panel/help-tab.php:140
815
+ msgctxt "Help tab Watch Videotutorials link"
816
+ msgid "We show you some use cases"
817
+ msgstr ""
818
+
819
+ #: templates/panel/help-tab.php:124
820
+ msgctxt "Help tab Read Documentation link"
821
+ msgid "Read the documentation"
822
+ msgstr ""
823
+
824
+ #: templates/panel/help-tab.php:127
825
+ msgctxt "Help tab Read Documentation link"
826
+ msgid "to learn from basics how it works"
827
+ msgstr ""
828
+
829
+ #: templates/panel/help-tab.php:150
830
+ msgctxt "Help tab view FAQs link"
831
+ msgid "Check the FAQs"
832
+ msgstr ""
833
+
834
+ #: templates/panel/help-tab.php:153
835
+ msgctxt "Help tab view FAQs link"
836
+ msgid "to find answers to your doubts"
837
+ msgstr ""
838
+
839
+ #: templates/panel/help-tab.php:169
840
+ msgctxt "Help tab FAQ title"
841
+ msgid "Last FAQs in our Help Center"
842
+ msgstr ""
843
+
844
+ #: templates/panel/help-tab.php:183
845
+ msgctxt "Help tab FAQ link"
846
+ msgid "View all FAQs >"
847
+ msgstr ""
848
+
849
+ #: templates/panel/help-tab.php:192
850
+ msgctxt "Help tab submit ticket title"
851
+ msgid "Need help?"
852
+ msgstr ""
853
+
854
+ #: templates/panel/help-tab.php:195
855
+ msgctxt "Help tab submit ticket description"
856
+ msgid ""
857
+ "If you are experiencing some technical issue ask help to our developers. "
858
+ "Submit a ticket in our support desk and we will help you as soon as possible."
859
+ msgstr ""
860
+
861
+ #: templates/panel/help-tab.php:203
862
+ msgctxt "Help tab submit ticket button"
863
+ msgid "Submit a ticket"
864
+ msgstr ""
865
+
866
+ #: yit-functions.php:1871
867
  msgctxt "Post action"
868
  msgid "Preview"
869
  msgstr ""
870
 
871
+ #: yit-functions.php:1880
872
  msgctxt "Post action"
873
  msgid "View"
874
  msgstr ""
875
 
876
+ #: yit-functions.php:1891
877
  msgctxt "Post action"
878
  msgid "Edit"
879
  msgstr ""
880
 
881
+ #: yit-functions.php:1899
882
  msgctxt "Post action"
883
  msgid "Duplicate"
884
  msgstr ""
885
 
886
+ #: yit-functions.php:1911
887
  msgctxt "Post action"
888
  msgid "Restore"
889
  msgstr ""
890
 
891
+ #: yit-functions.php:1919
892
  msgctxt "Post action"
893
  msgid "Trash"
894
  msgstr ""
895
 
896
+ #: yit-functions.php:1935
897
  msgctxt "Post action"
898
  msgid "Delete Permanently"
899
  msgstr ""
900
 
901
+ #: yit-functions.php:2031
 
 
 
 
 
 
 
 
 
 
902
  msgctxt "Term action"
903
  msgid "View"
904
  msgstr ""
905
 
906
+ #: yit-functions.php:2041
907
  msgctxt "Term action"
908
  msgid "Edit"
909
  msgstr ""
910
 
911
+ #: yit-functions.php:2049
912
  msgctxt "Term action"
913
  msgid "Duplicate"
914
  msgstr ""
915
 
916
+ #: yit-functions.php:2062
917
  msgctxt "Term action"
918
  msgid "Delete"
919
  msgstr ""
920
 
921
+ #: yit-plugin.php:85
922
  msgctxt "Plugin Row Meta"
923
  msgid "Live Demo"
924
  msgstr "Live Demo"
925
 
926
+ #: yit-plugin.php:89
927
  msgctxt "Plugin Row Meta"
928
  msgid "Documentation"
929
  msgstr "Εγχειρίδιο χρήσης"
930
 
931
+ #: yit-plugin.php:93
932
  msgctxt "Plugin Row Meta"
933
  msgid "Support"
934
  msgstr "Υποστήριξη"
935
 
936
+ #: yit-plugin.php:97
937
  msgctxt "Plugin Row Meta"
938
  msgid "Premium version"
939
  msgstr "Premium έκδοση"
940
 
941
+ #: yit-plugin.php:200
942
  msgctxt "Action links"
943
  msgid "Settings"
944
  msgstr "Ρυθμίσεις"
plugin-fw/languages/yith-plugin-fw-es_ES.mo CHANGED
Binary file
plugin-fw/languages/yith-plugin-fw-es_ES.po CHANGED
@@ -4,8 +4,8 @@ msgid ""
4
  msgstr ""
5
  "Project-Id-Version: YITH Framework\n"
6
  "Report-Msgid-Bugs-To: YITH <plugins@yithemes.com>\n"
7
- "POT-Creation-Date: 2021-05-17 13:16:23+00:00\n"
8
- "PO-Revision-Date: 2021-05-17 07:56:00+0000\n"
9
  "Language: es\n"
10
  "MIME-Version: 1.0\n"
11
  "Content-Type: text/plain; charset=UTF-8\n"
@@ -13,31 +13,60 @@ msgstr ""
13
  "Plural-Forms: nplurals=2; plural=n != 1;\n"
14
  "X-Generator: GlotPress/3.0.0-alpha.2\n"
15
 
16
- #: includes/class-yit-assets.php:143
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
17
  msgid "Clear"
18
  msgstr "Borrar"
19
 
20
- #: includes/class-yit-assets.php:144
21
  msgid "Clear color"
22
  msgstr "Borrar color"
23
 
24
- #: includes/class-yit-assets.php:145
25
  msgid "Default"
26
  msgstr "Predeterminado"
27
 
28
- #: includes/class-yit-assets.php:146
29
  msgid "Select default color"
30
  msgstr "Seleccionar color predeterminado"
31
 
32
- #: includes/class-yit-assets.php:147
33
  msgid "Select Color"
34
  msgstr "Seleccionar color"
35
 
36
- #: includes/class-yit-assets.php:148
37
  msgid "Color value"
38
  msgstr "Valor del color"
39
 
40
- #: includes/class-yit-plugin-panel-woocommerce.php:419
 
 
 
 
 
41
  msgid "The changes you have made will be lost if you leave this page."
42
  msgstr "Los cambios que has hecho se perderán si abandonas esta página."
43
 
@@ -54,12 +83,12 @@ msgstr "Ajustes"
54
  msgid "How to install premium version"
55
  msgstr "Cómo instalar la versión premium"
56
 
57
- #: includes/class-yit-plugin-panel.php:620
58
  #: includes/class-yit-plugin-subpanel.php:132
59
  msgid "Save Changes"
60
  msgstr "Guardar cambios"
61
 
62
- #: includes/class-yit-plugin-panel.php:625
63
  #: includes/class-yit-plugin-subpanel.php:136
64
  #: templates/panel/woocommerce/woocommerce-form.php:14
65
  msgid ""
@@ -68,74 +97,74 @@ msgstr ""
68
  "Si continúas con esta acción, restablecerás todas las opciones en esta "
69
  "página."
70
 
71
- #: includes/class-yit-plugin-panel.php:625
72
  #: includes/class-yit-plugin-subpanel.php:136
73
  #: templates/panel/woocommerce/woocommerce-form.php:14
74
  msgid "Are you sure?"
75
  msgstr "¿Estás seguro?"
76
 
77
- #: includes/class-yit-plugin-panel.php:629
78
  #: includes/class-yit-plugin-subpanel.php:139
79
  msgid "Reset to default"
80
  msgstr "Restablecer valores predeterminados"
81
 
82
- #: includes/class-yit-plugin-panel.php:868
83
  msgid ""
84
  "The element you have entered already exists. Please, enter another name."
85
  msgstr ""
86
  "El elemento que has introducido ya existe. Por favor, introduce otro nombre."
87
 
88
- #: includes/class-yit-plugin-panel.php:869
89
  msgid "Settings saved"
90
  msgstr "Ajustes guardados"
91
 
92
- #: includes/class-yit-plugin-panel.php:870
93
  msgid "Settings reset"
94
  msgstr "Restablecer ajustes"
95
 
96
- #: includes/class-yit-plugin-panel.php:871
97
  msgid "Element deleted correctly."
98
  msgstr "Elemento eliminado correctamente."
99
 
100
- #: includes/class-yit-plugin-panel.php:872
101
- #: includes/class-yit-plugin-panel.php:873
102
  msgid "Element updated correctly."
103
  msgstr "Elemento actualizado correctamente."
104
 
105
- #: includes/class-yit-plugin-panel.php:874
106
  msgid "Database imported correctly."
107
  msgstr "Base de datos importada correctamente."
108
 
109
- #: includes/class-yit-plugin-panel.php:875
110
  msgid "An error has occurred during import. Please try again."
111
  msgstr ""
112
  "Ha ocurrido un error durante la importación. Por favor, inténtalo de nuevo."
113
 
114
- #: includes/class-yit-plugin-panel.php:876
115
  msgid "The added file is not valid."
116
  msgstr "El archivo añadido no es válido."
117
 
118
- #: includes/class-yit-plugin-panel.php:877
119
  msgid "Sorry, import is disabled."
120
  msgstr "Lo siento, la importación está desactivada."
121
 
122
- #: includes/class-yit-plugin-panel.php:878
123
  msgid "Sorting successful."
124
  msgstr "Clasificación realizada con éxito"
125
 
126
- #: includes/class-yit-plugin-panel.php:1346
127
  msgid "We need your support"
128
  msgstr "Necesitamos tu apoyo"
129
 
130
- #: includes/class-yit-plugin-panel.php:1347
131
  msgid "to keep updating and improving the plugin. Please,"
132
  msgstr "para que podamos seguir actualizando y mejorando el plugin. Por favor,"
133
 
134
- #: includes/class-yit-plugin-panel.php:1349
135
  msgid "help us by leaving a good review"
136
  msgstr "ayúdanos dejando una buena valoración"
137
 
138
- #: includes/class-yit-plugin-panel.php:1350
139
  msgid ":) Thanks!"
140
  msgstr ":) ¡Gracias!"
141
 
@@ -551,7 +580,7 @@ msgid ""
551
  "file of your installation"
552
  msgstr ""
553
  "No hay archivo de registro disponible. Activa la depuración de WordPress "
554
- "añadiendo esto en el archivo %s de tu instalación"
555
 
556
  #: templates/sysinfo/tabs/error-log.php:105
557
  msgid "Copied!"
@@ -594,33 +623,20 @@ msgid "Plugins Requirements"
594
  msgstr "Requerimientos de los plugins"
595
 
596
  #. translators: %s is the title of the post object.
597
- #: yit-functions.php:1823
598
  msgid "Are you sure you want to move \"%s\" to trash?"
599
  msgstr "¿Estás seguro de que quieres mover \"%s\" a la papelera?"
600
 
601
  #. translators: %s is the title of the post object.
602
- #: yit-functions.php:1825 yit-functions.php:1983
603
  msgid "Are you sure you want to delete \"%s\"?"
604
  msgstr "¿Estás seguro de que quieres borrar \"%s\"?"
605
 
606
- #: yit-functions.php:1825 yit-functions.php:1983
607
- msgid ""
608
- "This action cannot be undone and you will be not able to recover this data."
609
- msgstr "Esta acción no se puede revertir y no podrá recuperar estos datos."
610
-
611
- #: yit-functions.php:1891
612
- msgid "Confirm trash"
613
- msgstr "Confirmar el traslado a la papelera"
614
-
615
- #: yit-functions.php:1908 yit-functions.php:2035
616
- msgid "Confirm delete"
617
- msgstr "Confirmar el borrado"
618
-
619
- #: yit-functions.php:1921 yit-functions.php:1929 yit-functions.php:2046
620
  msgid "Further actions"
621
  msgstr "Otras acciones"
622
 
623
- #: yit-plugin.php:203
624
  msgid "License"
625
  msgstr "Licencia"
626
 
@@ -639,16 +655,50 @@ msgctxt "[gutenberg]: Category Name"
639
  msgid "YITH"
640
  msgstr "YITH"
641
 
642
- #: includes/class-yit-assets.php:131
643
  msgctxt "Button text"
644
  msgid "Confirm"
645
  msgstr "Confirmar"
646
 
647
- #: includes/class-yit-assets.php:132
648
  msgctxt "Button text"
649
  msgid "Cancel"
650
  msgstr "Cancelar"
651
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
652
  #: includes/class-yith-dashboard.php:96
653
  msgctxt "Plugin FW"
654
  msgid "View Changelog"
@@ -751,92 +801,156 @@ msgctxt "YES/NO button: use MAX 4 characters!"
751
  msgid "NO"
752
  msgstr "NO"
753
 
754
- #: yit-functions.php:1837
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
755
  msgctxt "Post action"
756
  msgid "Preview"
757
  msgstr "Previsualizar"
758
 
759
- #: yit-functions.php:1846
760
  msgctxt "Post action"
761
  msgid "View"
762
  msgstr "Ver"
763
 
764
- #: yit-functions.php:1857
765
  msgctxt "Post action"
766
  msgid "Edit"
767
  msgstr "Editar"
768
 
769
- #: yit-functions.php:1865
770
  msgctxt "Post action"
771
  msgid "Duplicate"
772
  msgstr "Duplicar"
773
 
774
- #: yit-functions.php:1877
775
  msgctxt "Post action"
776
  msgid "Restore"
777
  msgstr "Restaurar"
778
 
779
- #: yit-functions.php:1885
780
  msgctxt "Post action"
781
  msgid "Trash"
782
  msgstr "A la papelera"
783
 
784
- #: yit-functions.php:1901
785
  msgctxt "Post action"
786
  msgid "Delete Permanently"
787
  msgstr "Borrar permanentemente"
788
 
789
- #: yit-functions.php:1893
790
- msgctxt "Trash confirmation action"
791
- msgid "Yes, trash"
792
- msgstr "Si, a la papelera"
793
-
794
- #: yit-functions.php:1910 yit-functions.php:2037
795
- msgctxt "Delete confirmation action"
796
- msgid "Yes, delete"
797
- msgstr "Si, borrar"
798
-
799
- #: yit-functions.php:1997
800
  msgctxt "Term action"
801
  msgid "View"
802
  msgstr "Ver"
803
 
804
- #: yit-functions.php:2007
805
  msgctxt "Term action"
806
  msgid "Edit"
807
  msgstr "Editar"
808
 
809
- #: yit-functions.php:2015
810
  msgctxt "Term action"
811
  msgid "Duplicate"
812
  msgstr "Duplicar"
813
 
814
- #: yit-functions.php:2028
815
  msgctxt "Term action"
816
  msgid "Delete"
817
  msgstr "Borrar"
818
 
819
- #: yit-plugin.php:84
820
  msgctxt "Plugin Row Meta"
821
  msgid "Live Demo"
822
  msgstr "Demostración en vivo"
823
 
824
- #: yit-plugin.php:88
825
  msgctxt "Plugin Row Meta"
826
  msgid "Documentation"
827
  msgstr "Documentación"
828
 
829
- #: yit-plugin.php:92
830
  msgctxt "Plugin Row Meta"
831
  msgid "Support"
832
  msgstr "Soporte"
833
 
834
- #: yit-plugin.php:96
835
  msgctxt "Plugin Row Meta"
836
  msgid "Premium version"
837
  msgstr "Versión premium"
838
 
839
- #: yit-plugin.php:199
840
  msgctxt "Action links"
841
  msgid "Settings"
842
  msgstr "Ajustes"
4
  msgstr ""
5
  "Project-Id-Version: YITH Framework\n"
6
  "Report-Msgid-Bugs-To: YITH <plugins@yithemes.com>\n"
7
+ "POT-Creation-Date: 2021-06-08 13:48:44+00:00\n"
8
+ "PO-Revision-Date: 2021-06-08 11:44:05+0000\n"
9
  "Language: es\n"
10
  "MIME-Version: 1.0\n"
11
  "Content-Type: text/plain; charset=UTF-8\n"
13
  "Plural-Forms: nplurals=2; plural=n != 1;\n"
14
  "X-Generator: GlotPress/3.0.0-alpha.2\n"
15
 
16
+ #: includes/class-yit-assets.php:145 yit-functions.php:1925
17
+ msgid "Confirm trash"
18
+ msgstr "Confirmar el traslado a la papelera"
19
+
20
+ #: includes/class-yit-assets.php:146
21
+ msgid "Are you sure you want to trash the selected items?"
22
+ msgstr ""
23
+ "¿Estás seguro de que quieres mover a la papelera los elementos seleccionados?"
24
+
25
+ #: includes/class-yit-assets.php:148 yit-functions.php:1942
26
+ #: yit-functions.php:2069
27
+ msgid "Confirm delete"
28
+ msgstr "Confirmar el borrado"
29
+
30
+ #: includes/class-yit-assets.php:149
31
+ msgid "Are you sure you want to delete the selected items?"
32
+ msgstr "¿Estás seguro de que quieres borrar los elementos seleccionados?"
33
+
34
+ #: includes/class-yit-assets.php:149 yit-functions.php:1859
35
+ #: yit-functions.php:2017
36
+ msgid ""
37
+ "This action cannot be undone and you will not be able to recover this data."
38
+ msgstr "Esta acción no se puede revertir y no podrá recuperar estos datos."
39
+
40
+ #: includes/class-yit-assets.php:161
41
  msgid "Clear"
42
  msgstr "Borrar"
43
 
44
+ #: includes/class-yit-assets.php:162
45
  msgid "Clear color"
46
  msgstr "Borrar color"
47
 
48
+ #: includes/class-yit-assets.php:163
49
  msgid "Default"
50
  msgstr "Predeterminado"
51
 
52
+ #: includes/class-yit-assets.php:164
53
  msgid "Select default color"
54
  msgstr "Seleccionar color predeterminado"
55
 
56
+ #: includes/class-yit-assets.php:165
57
  msgid "Select Color"
58
  msgstr "Seleccionar color"
59
 
60
+ #: includes/class-yit-assets.php:166
61
  msgid "Color value"
62
  msgstr "Valor del color"
63
 
64
+ #: includes/class-yit-help-desk.php:152
65
+ msgid "There was an error with your request; please try again later."
66
+ msgstr ""
67
+ "Se ha producido un error en tu solicitud; inténtalo de nuevo más tarde."
68
+
69
+ #: includes/class-yit-plugin-panel-woocommerce.php:423
70
  msgid "The changes you have made will be lost if you leave this page."
71
  msgstr "Los cambios que has hecho se perderán si abandonas esta página."
72
 
83
  msgid "How to install premium version"
84
  msgstr "Cómo instalar la versión premium"
85
 
86
+ #: includes/class-yit-plugin-panel.php:651
87
  #: includes/class-yit-plugin-subpanel.php:132
88
  msgid "Save Changes"
89
  msgstr "Guardar cambios"
90
 
91
+ #: includes/class-yit-plugin-panel.php:656
92
  #: includes/class-yit-plugin-subpanel.php:136
93
  #: templates/panel/woocommerce/woocommerce-form.php:14
94
  msgid ""
97
  "Si continúas con esta acción, restablecerás todas las opciones en esta "
98
  "página."
99
 
100
+ #: includes/class-yit-plugin-panel.php:656
101
  #: includes/class-yit-plugin-subpanel.php:136
102
  #: templates/panel/woocommerce/woocommerce-form.php:14
103
  msgid "Are you sure?"
104
  msgstr "¿Estás seguro?"
105
 
106
+ #: includes/class-yit-plugin-panel.php:660
107
  #: includes/class-yit-plugin-subpanel.php:139
108
  msgid "Reset to default"
109
  msgstr "Restablecer valores predeterminados"
110
 
111
+ #: includes/class-yit-plugin-panel.php:958
112
  msgid ""
113
  "The element you have entered already exists. Please, enter another name."
114
  msgstr ""
115
  "El elemento que has introducido ya existe. Por favor, introduce otro nombre."
116
 
117
+ #: includes/class-yit-plugin-panel.php:959
118
  msgid "Settings saved"
119
  msgstr "Ajustes guardados"
120
 
121
+ #: includes/class-yit-plugin-panel.php:960
122
  msgid "Settings reset"
123
  msgstr "Restablecer ajustes"
124
 
125
+ #: includes/class-yit-plugin-panel.php:961
126
  msgid "Element deleted correctly."
127
  msgstr "Elemento eliminado correctamente."
128
 
129
+ #: includes/class-yit-plugin-panel.php:962
130
+ #: includes/class-yit-plugin-panel.php:963
131
  msgid "Element updated correctly."
132
  msgstr "Elemento actualizado correctamente."
133
 
134
+ #: includes/class-yit-plugin-panel.php:964
135
  msgid "Database imported correctly."
136
  msgstr "Base de datos importada correctamente."
137
 
138
+ #: includes/class-yit-plugin-panel.php:965
139
  msgid "An error has occurred during import. Please try again."
140
  msgstr ""
141
  "Ha ocurrido un error durante la importación. Por favor, inténtalo de nuevo."
142
 
143
+ #: includes/class-yit-plugin-panel.php:966
144
  msgid "The added file is not valid."
145
  msgstr "El archivo añadido no es válido."
146
 
147
+ #: includes/class-yit-plugin-panel.php:967
148
  msgid "Sorry, import is disabled."
149
  msgstr "Lo siento, la importación está desactivada."
150
 
151
+ #: includes/class-yit-plugin-panel.php:968
152
  msgid "Sorting successful."
153
  msgstr "Clasificación realizada con éxito"
154
 
155
+ #: includes/class-yit-plugin-panel.php:1436
156
  msgid "We need your support"
157
  msgstr "Necesitamos tu apoyo"
158
 
159
+ #: includes/class-yit-plugin-panel.php:1437
160
  msgid "to keep updating and improving the plugin. Please,"
161
  msgstr "para que podamos seguir actualizando y mejorando el plugin. Por favor,"
162
 
163
+ #: includes/class-yit-plugin-panel.php:1439
164
  msgid "help us by leaving a good review"
165
  msgstr "ayúdanos dejando una buena valoración"
166
 
167
+ #: includes/class-yit-plugin-panel.php:1440
168
  msgid ":) Thanks!"
169
  msgstr ":) ¡Gracias!"
170
 
580
  "file of your installation"
581
  msgstr ""
582
  "No hay archivo de registro disponible. Activa la depuración de WordPress "
583
+ "añadiendo este código en el archivo %s de tu instalación"
584
 
585
  #: templates/sysinfo/tabs/error-log.php:105
586
  msgid "Copied!"
623
  msgstr "Requerimientos de los plugins"
624
 
625
  #. translators: %s is the title of the post object.
626
+ #: yit-functions.php:1857
627
  msgid "Are you sure you want to move \"%s\" to trash?"
628
  msgstr "¿Estás seguro de que quieres mover \"%s\" a la papelera?"
629
 
630
  #. translators: %s is the title of the post object.
631
+ #: yit-functions.php:1859 yit-functions.php:2017
632
  msgid "Are you sure you want to delete \"%s\"?"
633
  msgstr "¿Estás seguro de que quieres borrar \"%s\"?"
634
 
635
+ #: yit-functions.php:1955 yit-functions.php:1963 yit-functions.php:2080
 
 
 
 
 
 
 
 
 
 
 
 
 
636
  msgid "Further actions"
637
  msgstr "Otras acciones"
638
 
639
+ #: yit-plugin.php:204
640
  msgid "License"
641
  msgstr "Licencia"
642
 
655
  msgid "YITH"
656
  msgstr "YITH"
657
 
658
+ #: includes/class-yit-assets.php:133
659
  msgctxt "Button text"
660
  msgid "Confirm"
661
  msgstr "Confirmar"
662
 
663
+ #: includes/class-yit-assets.php:134
664
  msgctxt "Button text"
665
  msgid "Cancel"
666
  msgstr "Cancelar"
667
 
668
+ #: includes/class-yit-assets.php:147 yit-functions.php:1927
669
+ msgctxt "Trash confirmation action"
670
+ msgid "Yes, move to trash"
671
+ msgstr "Sí, mover a la papelera"
672
+
673
+ #: includes/class-yit-assets.php:150 yit-functions.php:1944
674
+ msgctxt "Delete confirmation action"
675
+ msgid "Yes, delete permanently"
676
+ msgstr "Sí, borrar permanentemente"
677
+
678
+ #: yit-functions.php:2071
679
+ msgctxt "Delete confirmation action"
680
+ msgid "Yes, delete"
681
+ msgstr "Si, borrar"
682
+
683
+ #: includes/class-yit-plugin-panel.php:488
684
+ msgctxt "Help tab name"
685
+ msgid "Help"
686
+ msgstr "Ayuda"
687
+
688
+ #. translators: 1. Plugin name.
689
+ #: includes/class-yit-plugin-panel.php:797
690
+ msgctxt "Help tab default title"
691
+ msgid "Thank you for purchasing %s!"
692
+ msgstr "¡Gracias por comprar %s!"
693
+
694
+ #: includes/class-yit-plugin-panel.php:798
695
+ msgctxt "Help tab default description"
696
+ msgid ""
697
+ "We want to help you to enjoy a wonderful experience with all our products."
698
+ msgstr ""
699
+ "Queremos ayudarte a disfrutar de una experiencia maravillosa con todos "
700
+ "nuestros productos."
701
+
702
  #: includes/class-yith-dashboard.php:96
703
  msgctxt "Plugin FW"
704
  msgid "View Changelog"
801
  msgid "NO"
802
  msgstr "NO"
803
 
804
+ #. translators: 1. Url to EN playlist.
805
+ #: templates/panel/help-tab.php:87
806
+ msgctxt "Help tab view all video link"
807
+ msgid ""
808
+ "Check the full <a href=\"%s\" target=\"_blank\">Playlist on Youtube</a> to "
809
+ "learn more >"
810
+ msgstr ""
811
+ "Consulta la <a href=\"%s\" target=\"_blank\">Lista de reproducción en "
812
+ "Youtube</a> para saber más >"
813
+
814
+ #: templates/panel/help-tab.php:94
815
+ msgctxt "Help tab Watch Videotutorials link"
816
+ msgid "Videos are also available in:"
817
+ msgstr "Los vídeos también están disponibles en:"
818
+
819
+ #: templates/panel/help-tab.php:137
820
+ msgctxt "Help tab Watch Videotutorials link"
821
+ msgid "Watch our videotutorials"
822
+ msgstr "Vea nuestros videotutoriales"
823
+
824
+ #: templates/panel/help-tab.php:140
825
+ msgctxt "Help tab Watch Videotutorials link"
826
+ msgid "We show you some use cases"
827
+ msgstr "Te mostramos algunos ejemplos de uso"
828
+
829
+ #: templates/panel/help-tab.php:124
830
+ msgctxt "Help tab Read Documentation link"
831
+ msgid "Read the documentation"
832
+ msgstr "Lee la documentación"
833
+
834
+ #: templates/panel/help-tab.php:127
835
+ msgctxt "Help tab Read Documentation link"
836
+ msgid "to learn from basics how it works"
837
+ msgstr "para aprender desde lo más básico cómo funciona"
838
+
839
+ #: templates/panel/help-tab.php:150
840
+ msgctxt "Help tab view FAQs link"
841
+ msgid "Check the FAQs"
842
+ msgstr "Comprueba los FAQ"
843
+
844
+ #: templates/panel/help-tab.php:153
845
+ msgctxt "Help tab view FAQs link"
846
+ msgid "to find answers to your doubts"
847
+ msgstr "para encontrar respuestas a tus dudas"
848
+
849
+ #: templates/panel/help-tab.php:169
850
+ msgctxt "Help tab FAQ title"
851
+ msgid "Last FAQs in our Help Center"
852
+ msgstr "Últimos FAQs en nuestro Centro de Ayuda"
853
+
854
+ #: templates/panel/help-tab.php:183
855
+ msgctxt "Help tab FAQ link"
856
+ msgid "View all FAQs >"
857
+ msgstr "Ver todos los FAQs >"
858
+
859
+ #: templates/panel/help-tab.php:192
860
+ msgctxt "Help tab submit ticket title"
861
+ msgid "Need help?"
862
+ msgstr "¿Necesitas ayuda?"
863
+
864
+ #: templates/panel/help-tab.php:195
865
+ msgctxt "Help tab submit ticket description"
866
+ msgid ""
867
+ "If you are experiencing some technical issue ask help to our developers. "
868
+ "Submit a ticket in our support desk and we will help you as soon as possible."
869
+ msgstr ""
870
+ "Si tienes algún problema técnico, pide ayuda a nuestros desarrolladores. "
871
+ "Envía un ticket en nuestro panel de soporte y te ayudaremos lo antes posible."
872
+
873
+ #: templates/panel/help-tab.php:203
874
+ msgctxt "Help tab submit ticket button"
875
+ msgid "Submit a ticket"
876
+ msgstr "Enviar ticket"
877
+
878
+ #: yit-functions.php:1871
879
  msgctxt "Post action"
880
  msgid "Preview"
881
  msgstr "Previsualizar"
882
 
883
+ #: yit-functions.php:1880
884
  msgctxt "Post action"
885
  msgid "View"
886
  msgstr "Ver"
887
 
888
+ #: yit-functions.php:1891
889
  msgctxt "Post action"
890
  msgid "Edit"
891
  msgstr "Editar"
892
 
893
+ #: yit-functions.php:1899
894
  msgctxt "Post action"
895
  msgid "Duplicate"
896
  msgstr "Duplicar"
897
 
898
+ #: yit-functions.php:1911
899
  msgctxt "Post action"
900
  msgid "Restore"
901
  msgstr "Restaurar"
902
 
903
+ #: yit-functions.php:1919
904
  msgctxt "Post action"
905
  msgid "Trash"
906
  msgstr "A la papelera"
907
 
908
+ #: yit-functions.php:1935
909
  msgctxt "Post action"
910
  msgid "Delete Permanently"
911
  msgstr "Borrar permanentemente"
912
 
913
+ #: yit-functions.php:2031
 
 
 
 
 
 
 
 
 
 
914
  msgctxt "Term action"
915
  msgid "View"
916
  msgstr "Ver"
917
 
918
+ #: yit-functions.php:2041
919
  msgctxt "Term action"
920
  msgid "Edit"
921
  msgstr "Editar"
922
 
923
+ #: yit-functions.php:2049
924
  msgctxt "Term action"
925
  msgid "Duplicate"
926
  msgstr "Duplicar"
927
 
928
+ #: yit-functions.php:2062
929
  msgctxt "Term action"
930
  msgid "Delete"
931
  msgstr "Borrar"
932
 
933
+ #: yit-plugin.php:85
934
  msgctxt "Plugin Row Meta"
935
  msgid "Live Demo"
936
  msgstr "Demostración en vivo"
937
 
938
+ #: yit-plugin.php:89
939
  msgctxt "Plugin Row Meta"
940
  msgid "Documentation"
941
  msgstr "Documentación"
942
 
943
+ #: yit-plugin.php:93
944
  msgctxt "Plugin Row Meta"
945
  msgid "Support"
946
  msgstr "Soporte"
947
 
948
+ #: yit-plugin.php:97
949
  msgctxt "Plugin Row Meta"
950
  msgid "Premium version"
951
  msgstr "Versión premium"
952
 
953
+ #: yit-plugin.php:200
954
  msgctxt "Action links"
955
  msgid "Settings"
956
  msgstr "Ajustes"
plugin-fw/languages/yith-plugin-fw-it_IT.mo CHANGED
Binary file
plugin-fw/languages/yith-plugin-fw-it_IT.po CHANGED
@@ -4,8 +4,8 @@ msgid ""
4
  msgstr ""
5
  "Project-Id-Version: YITH Framework\n"
6
  "Report-Msgid-Bugs-To: YITH <plugins@yithemes.com>\n"
7
- "POT-Creation-Date: 2021-05-17 13:16:23+00:00\n"
8
- "PO-Revision-Date: 2021-05-17 07:27:22+0000\n"
9
  "Language: it\n"
10
  "MIME-Version: 1.0\n"
11
  "Content-Type: text/plain; charset=UTF-8\n"
@@ -13,31 +13,60 @@ msgstr ""
13
  "Plural-Forms: nplurals=2; plural=n != 1;\n"
14
  "X-Generator: GlotPress/3.0.0-alpha.2\n"
15
 
16
- #: includes/class-yit-assets.php:143
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
17
  msgid "Clear"
18
  msgstr "Rimuovi"
19
 
20
- #: includes/class-yit-assets.php:144
21
  msgid "Clear color"
22
  msgstr "Rimuovi colore"
23
 
24
- #: includes/class-yit-assets.php:145
25
  msgid "Default"
26
  msgstr "Predefinito"
27
 
28
- #: includes/class-yit-assets.php:146
29
  msgid "Select default color"
30
  msgstr "Seleziona il colore predefinito"
31
 
32
- #: includes/class-yit-assets.php:147
33
  msgid "Select Color"
34
  msgstr "Seleziona il colore"
35
 
36
- #: includes/class-yit-assets.php:148
37
  msgid "Color value"
38
  msgstr "Valore del colore"
39
 
40
- #: includes/class-yit-plugin-panel-woocommerce.php:419
 
 
 
 
41
  msgid "The changes you have made will be lost if you leave this page."
42
  msgstr "Perderai tutti i cambiamenti effettuati se lasci questa pagina."
43
 
@@ -54,12 +83,12 @@ msgstr "Impostazioni"
54
  msgid "How to install premium version"
55
  msgstr "Come installare la versione premium"
56
 
57
- #: includes/class-yit-plugin-panel.php:620
58
  #: includes/class-yit-plugin-subpanel.php:132
59
  msgid "Save Changes"
60
  msgstr "Salva modifiche"
61
 
62
- #: includes/class-yit-plugin-panel.php:625
63
  #: includes/class-yit-plugin-subpanel.php:136
64
  #: templates/panel/woocommerce/woocommerce-form.php:14
65
  msgid ""
@@ -68,72 +97,72 @@ msgstr ""
68
  "Se prosegui con questa azione, tutte le opzioni di questa pagina saranno "
69
  "reimpostate."
70
 
71
- #: includes/class-yit-plugin-panel.php:625
72
  #: includes/class-yit-plugin-subpanel.php:136
73
  #: templates/panel/woocommerce/woocommerce-form.php:14
74
  msgid "Are you sure?"
75
  msgstr "Sei sicuro?"
76
 
77
- #: includes/class-yit-plugin-panel.php:629
78
  #: includes/class-yit-plugin-subpanel.php:139
79
  msgid "Reset to default"
80
  msgstr "Ripristina configurazione predefinita"
81
 
82
- #: includes/class-yit-plugin-panel.php:868
83
  msgid ""
84
  "The element you have entered already exists. Please, enter another name."
85
  msgstr "L'elemento inserito esiste già. Per favore, inserisci un altro nome."
86
 
87
- #: includes/class-yit-plugin-panel.php:869
88
  msgid "Settings saved"
89
  msgstr "Impostazioni salvate"
90
 
91
- #: includes/class-yit-plugin-panel.php:870
92
  msgid "Settings reset"
93
  msgstr "Impostazioni azzerate"
94
 
95
- #: includes/class-yit-plugin-panel.php:871
96
  msgid "Element deleted correctly."
97
  msgstr "Elemento rimosso correttamente."
98
 
99
- #: includes/class-yit-plugin-panel.php:872
100
- #: includes/class-yit-plugin-panel.php:873
101
  msgid "Element updated correctly."
102
  msgstr "Elemento aggiornato correttamente."
103
 
104
- #: includes/class-yit-plugin-panel.php:874
105
  msgid "Database imported correctly."
106
  msgstr "Database importato correttamente."
107
 
108
- #: includes/class-yit-plugin-panel.php:875
109
  msgid "An error has occurred during import. Please try again."
110
  msgstr "Si è verificato un errore durante l'importazione. Prova di nuovo."
111
 
112
- #: includes/class-yit-plugin-panel.php:876
113
  msgid "The added file is not valid."
114
  msgstr "Il file aggiunto non è valido."
115
 
116
- #: includes/class-yit-plugin-panel.php:877
117
  msgid "Sorry, import is disabled."
118
  msgstr "Ci dispiace, l'importazione è disabilitata."
119
 
120
- #: includes/class-yit-plugin-panel.php:878
121
  msgid "Sorting successful."
122
  msgstr "Ordinamento effettuato con successo."
123
 
124
- #: includes/class-yit-plugin-panel.php:1346
125
  msgid "We need your support"
126
  msgstr "Abbiamo bisogno del tuo sostegno"
127
 
128
- #: includes/class-yit-plugin-panel.php:1347
129
  msgid "to keep updating and improving the plugin. Please,"
130
  msgstr "per poter continuare ad aggiornare e migliorare il plugin."
131
 
132
- #: includes/class-yit-plugin-panel.php:1349
133
  msgid "help us by leaving a good review"
134
  msgstr "Puoi darci una mano lasciando una recensione positiva"
135
 
136
- #: includes/class-yit-plugin-panel.php:1350
137
  msgid ":) Thanks!"
138
  msgstr ":) Grazie!"
139
 
@@ -594,35 +623,20 @@ msgid "Plugins Requirements"
594
  msgstr "Requisiti plugin"
595
 
596
  #. translators: %s is the title of the post object.
597
- #: yit-functions.php:1823
598
  msgid "Are you sure you want to move \"%s\" to trash?"
599
  msgstr "Sei sicuro di voler spostare \"%s\" nel cestino?"
600
 
601
  #. translators: %s is the title of the post object.
602
- #: yit-functions.php:1825 yit-functions.php:1983
603
  msgid "Are you sure you want to delete \"%s\"?"
604
  msgstr "Sei sicuro di voler eliminare \"%s\"?"
605
 
606
- #: yit-functions.php:1825 yit-functions.php:1983
607
- msgid ""
608
- "This action cannot be undone and you will be not able to recover this data."
609
- msgstr ""
610
- "Quest'azione non può essere annullata e non sarà possibile recuperare questi "
611
- "dati."
612
-
613
- #: yit-functions.php:1891
614
- msgid "Confirm trash"
615
- msgstr "Conferma eliminazione"
616
-
617
- #: yit-functions.php:1908 yit-functions.php:2035
618
- msgid "Confirm delete"
619
- msgstr "Conferma eliminazione"
620
-
621
- #: yit-functions.php:1921 yit-functions.php:1929 yit-functions.php:2046
622
  msgid "Further actions"
623
  msgstr "Altre azioni"
624
 
625
- #: yit-plugin.php:203
626
  msgid "License"
627
  msgstr "Chiave di licenza"
628
 
@@ -641,16 +655,50 @@ msgctxt "[gutenberg]: Category Name"
641
  msgid "YITH"
642
  msgstr "YITH"
643
 
644
- #: includes/class-yit-assets.php:131
645
  msgctxt "Button text"
646
  msgid "Confirm"
647
  msgstr "Conferma"
648
 
649
- #: includes/class-yit-assets.php:132
650
  msgctxt "Button text"
651
  msgid "Cancel"
652
  msgstr "Annulla"
653
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
654
  #: includes/class-yith-dashboard.php:96
655
  msgctxt "Plugin FW"
656
  msgid "View Changelog"
@@ -754,92 +802,157 @@ msgctxt "YES/NO button: use MAX 4 characters!"
754
  msgid "NO"
755
  msgstr "NO"
756
 
757
- #: yit-functions.php:1837
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
758
  msgctxt "Post action"
759
  msgid "Preview"
760
  msgstr "Anteprima"
761
 
762
- #: yit-functions.php:1846
763
  msgctxt "Post action"
764
  msgid "View"
765
  msgstr "Visualizza"
766
 
767
- #: yit-functions.php:1857
768
  msgctxt "Post action"
769
  msgid "Edit"
770
  msgstr "Modifica"
771
 
772
- #: yit-functions.php:1865
773
  msgctxt "Post action"
774
  msgid "Duplicate"
775
  msgstr "Duplica"
776
 
777
- #: yit-functions.php:1877
778
  msgctxt "Post action"
779
  msgid "Restore"
780
  msgstr "Ripristina"
781
 
782
- #: yit-functions.php:1885
783
  msgctxt "Post action"
784
  msgid "Trash"
785
  msgstr "Cestina"
786
 
787
- #: yit-functions.php:1901
788
  msgctxt "Post action"
789
  msgid "Delete Permanently"
790
  msgstr "Cancella definitivamente"
791
 
792
- #: yit-functions.php:1893
793
- msgctxt "Trash confirmation action"
794
- msgid "Yes, trash"
795
- msgstr "Sì, cestina"
796
-
797
- #: yit-functions.php:1910 yit-functions.php:2037
798
- msgctxt "Delete confirmation action"
799
- msgid "Yes, delete"
800
- msgstr "Sì, elimina"
801
-
802
- #: yit-functions.php:1997
803
  msgctxt "Term action"
804
  msgid "View"
805
  msgstr "Visualizza"
806
 
807
- #: yit-functions.php:2007
808
  msgctxt "Term action"
809
  msgid "Edit"
810
  msgstr "Modifica"
811
 
812
- #: yit-functions.php:2015
813
  msgctxt "Term action"
814
  msgid "Duplicate"
815
  msgstr "Duplica"
816
 
817
- #: yit-functions.php:2028
818
  msgctxt "Term action"
819
  msgid "Delete"
820
  msgstr "Elimina"
821
 
822
- #: yit-plugin.php:84
823
  msgctxt "Plugin Row Meta"
824
  msgid "Live Demo"
825
  msgstr "Live Demo"
826
 
827
- #: yit-plugin.php:88
828
  msgctxt "Plugin Row Meta"
829
  msgid "Documentation"
830
  msgstr "Documentazione"
831
 
832
- #: yit-plugin.php:92
833
  msgctxt "Plugin Row Meta"
834
  msgid "Support"
835
  msgstr "Assistenza"
836
 
837
- #: yit-plugin.php:96
838
  msgctxt "Plugin Row Meta"
839
  msgid "Premium version"
840
  msgstr "Versione premium"
841
 
842
- #: yit-plugin.php:199
843
  msgctxt "Action links"
844
  msgid "Settings"
845
  msgstr "Impostazioni"
4
  msgstr ""
5
  "Project-Id-Version: YITH Framework\n"
6
  "Report-Msgid-Bugs-To: YITH <plugins@yithemes.com>\n"
7
+ "POT-Creation-Date: 2021-06-08 13:48:44+00:00\n"
8
+ "PO-Revision-Date: 2021-06-08 08:19:01+0000\n"
9
  "Language: it\n"
10
  "MIME-Version: 1.0\n"
11
  "Content-Type: text/plain; charset=UTF-8\n"
13
  "Plural-Forms: nplurals=2; plural=n != 1;\n"
14
  "X-Generator: GlotPress/3.0.0-alpha.2\n"
15
 
16
+ #: includes/class-yit-assets.php:145 yit-functions.php:1925
17
+ msgid "Confirm trash"
18
+ msgstr "Conferma eliminazione"
19
+
20
+ #: includes/class-yit-assets.php:146
21
+ msgid "Are you sure you want to trash the selected items?"
22
+ msgstr "Se sicuro di voler spostare nel cestino gli elementi selezionati?"
23
+
24
+ #: includes/class-yit-assets.php:148 yit-functions.php:1942
25
+ #: yit-functions.php:2069
26
+ msgid "Confirm delete"
27
+ msgstr "Conferma eliminazione"
28
+
29
+ #: includes/class-yit-assets.php:149
30
+ msgid "Are you sure you want to delete the selected items?"
31
+ msgstr "Se sicuro di voler eliminare gli elementi selezionati?"
32
+
33
+ #: includes/class-yit-assets.php:149 yit-functions.php:1859
34
+ #: yit-functions.php:2017
35
+ msgid ""
36
+ "This action cannot be undone and you will not be able to recover this data."
37
+ msgstr ""
38
+ "Quest'azione non può essere annullata e non sarà possibile recuperare questi "
39
+ "dati."
40
+
41
+ #: includes/class-yit-assets.php:161
42
  msgid "Clear"
43
  msgstr "Rimuovi"
44
 
45
+ #: includes/class-yit-assets.php:162
46
  msgid "Clear color"
47
  msgstr "Rimuovi colore"
48
 
49
+ #: includes/class-yit-assets.php:163
50
  msgid "Default"
51
  msgstr "Predefinito"
52
 
53
+ #: includes/class-yit-assets.php:164
54
  msgid "Select default color"
55
  msgstr "Seleziona il colore predefinito"
56
 
57
+ #: includes/class-yit-assets.php:165
58
  msgid "Select Color"
59
  msgstr "Seleziona il colore"
60
 
61
+ #: includes/class-yit-assets.php:166
62
  msgid "Color value"
63
  msgstr "Valore del colore"
64
 
65
+ #: includes/class-yit-help-desk.php:152
66
+ msgid "There was an error with your request; please try again later."
67
+ msgstr "Si è verificato un errore con la tua richiesta. Riprova più tardi."
68
+
69
+ #: includes/class-yit-plugin-panel-woocommerce.php:423
70
  msgid "The changes you have made will be lost if you leave this page."
71
  msgstr "Perderai tutti i cambiamenti effettuati se lasci questa pagina."
72
 
83
  msgid "How to install premium version"
84
  msgstr "Come installare la versione premium"
85
 
86
+ #: includes/class-yit-plugin-panel.php:651
87
  #: includes/class-yit-plugin-subpanel.php:132
88
  msgid "Save Changes"
89
  msgstr "Salva modifiche"
90
 
91
+ #: includes/class-yit-plugin-panel.php:656
92
  #: includes/class-yit-plugin-subpanel.php:136
93
  #: templates/panel/woocommerce/woocommerce-form.php:14
94
  msgid ""
97
  "Se prosegui con questa azione, tutte le opzioni di questa pagina saranno "
98
  "reimpostate."
99
 
100
+ #: includes/class-yit-plugin-panel.php:656
101
  #: includes/class-yit-plugin-subpanel.php:136
102
  #: templates/panel/woocommerce/woocommerce-form.php:14
103
  msgid "Are you sure?"
104
  msgstr "Sei sicuro?"
105
 
106
+ #: includes/class-yit-plugin-panel.php:660
107
  #: includes/class-yit-plugin-subpanel.php:139
108
  msgid "Reset to default"
109
  msgstr "Ripristina configurazione predefinita"
110
 
111
+ #: includes/class-yit-plugin-panel.php:958
112
  msgid ""
113
  "The element you have entered already exists. Please, enter another name."
114
  msgstr "L'elemento inserito esiste già. Per favore, inserisci un altro nome."
115
 
116
+ #: includes/class-yit-plugin-panel.php:959
117
  msgid "Settings saved"
118
  msgstr "Impostazioni salvate"
119
 
120
+ #: includes/class-yit-plugin-panel.php:960
121
  msgid "Settings reset"
122
  msgstr "Impostazioni azzerate"
123
 
124
+ #: includes/class-yit-plugin-panel.php:961
125
  msgid "Element deleted correctly."
126
  msgstr "Elemento rimosso correttamente."
127
 
128
+ #: includes/class-yit-plugin-panel.php:962
129
+ #: includes/class-yit-plugin-panel.php:963
130
  msgid "Element updated correctly."
131
  msgstr "Elemento aggiornato correttamente."
132
 
133
+ #: includes/class-yit-plugin-panel.php:964
134
  msgid "Database imported correctly."
135
  msgstr "Database importato correttamente."
136
 
137
+ #: includes/class-yit-plugin-panel.php:965
138
  msgid "An error has occurred during import. Please try again."
139
  msgstr "Si è verificato un errore durante l'importazione. Prova di nuovo."
140
 
141
+ #: includes/class-yit-plugin-panel.php:966
142
  msgid "The added file is not valid."
143
  msgstr "Il file aggiunto non è valido."
144
 
145
+ #: includes/class-yit-plugin-panel.php:967
146
  msgid "Sorry, import is disabled."
147
  msgstr "Ci dispiace, l'importazione è disabilitata."
148
 
149
+ #: includes/class-yit-plugin-panel.php:968
150
  msgid "Sorting successful."
151
  msgstr "Ordinamento effettuato con successo."
152
 
153
+ #: includes/class-yit-plugin-panel.php:1436
154
  msgid "We need your support"
155
  msgstr "Abbiamo bisogno del tuo sostegno"
156
 
157
+ #: includes/class-yit-plugin-panel.php:1437
158
  msgid "to keep updating and improving the plugin. Please,"
159
  msgstr "per poter continuare ad aggiornare e migliorare il plugin."
160
 
161
+ #: includes/class-yit-plugin-panel.php:1439
162
  msgid "help us by leaving a good review"
163
  msgstr "Puoi darci una mano lasciando una recensione positiva"
164
 
165
+ #: includes/class-yit-plugin-panel.php:1440
166
  msgid ":) Thanks!"
167
  msgstr ":) Grazie!"
168
 
623
  msgstr "Requisiti plugin"
624
 
625
  #. translators: %s is the title of the post object.
626
+ #: yit-functions.php:1857
627
  msgid "Are you sure you want to move \"%s\" to trash?"
628
  msgstr "Sei sicuro di voler spostare \"%s\" nel cestino?"
629
 
630
  #. translators: %s is the title of the post object.
631
+ #: yit-functions.php:1859 yit-functions.php:2017
632
  msgid "Are you sure you want to delete \"%s\"?"
633
  msgstr "Sei sicuro di voler eliminare \"%s\"?"
634
 
635
+ #: yit-functions.php:1955 yit-functions.php:1963 yit-functions.php:2080
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
636
  msgid "Further actions"
637
  msgstr "Altre azioni"
638
 
639
+ #: yit-plugin.php:204
640
  msgid "License"
641
  msgstr "Chiave di licenza"
642
 
655
  msgid "YITH"
656
  msgstr "YITH"
657
 
658
+ #: includes/class-yit-assets.php:133
659
  msgctxt "Button text"
660
  msgid "Confirm"
661
  msgstr "Conferma"
662
 
663
+ #: includes/class-yit-assets.php:134
664
  msgctxt "Button text"
665
  msgid "Cancel"
666
  msgstr "Annulla"
667
 
668
+ #: includes/class-yit-assets.php:147 yit-functions.php:1927
669
+ msgctxt "Trash confirmation action"
670
+ msgid "Yes, move to trash"
671
+ msgstr "Sì, sposta nel cestino"
672
+
673
+ #: includes/class-yit-assets.php:150 yit-functions.php:1944
674
+ msgctxt "Delete confirmation action"
675
+ msgid "Yes, delete permanently"
676
+ msgstr "Sì, elimina definitivamente"
677
+
678
+ #: yit-functions.php:2071
679
+ msgctxt "Delete confirmation action"
680
+ msgid "Yes, delete"
681
+ msgstr "Sì, elimina"
682
+
683
+ #: includes/class-yit-plugin-panel.php:488
684
+ msgctxt "Help tab name"
685
+ msgid "Help"
686
+ msgstr "Help"
687
+
688
+ #. translators: 1. Plugin name.
689
+ #: includes/class-yit-plugin-panel.php:797
690
+ msgctxt "Help tab default title"
691
+ msgid "Thank you for purchasing %s!"
692
+ msgstr "Grazie per aver acquistato %s!"
693
+
694
+ #: includes/class-yit-plugin-panel.php:798
695
+ msgctxt "Help tab default description"
696
+ msgid ""
697
+ "We want to help you to enjoy a wonderful experience with all our products."
698
+ msgstr ""
699
+ "Vogliamo aiutarti ad avere un'esperienza fantastica con tutti i nostri "
700
+ "prodotti."
701
+
702
  #: includes/class-yith-dashboard.php:96
703
  msgctxt "Plugin FW"
704
  msgid "View Changelog"
802
  msgid "NO"
803
  msgstr "NO"
804
 
805
+ #. translators: 1. Url to EN playlist.
806
+ #: templates/panel/help-tab.php:87
807
+ msgctxt "Help tab view all video link"
808
+ msgid ""
809
+ "Check the full <a href=\"%s\" target=\"_blank\">Playlist on Youtube</a> to "
810
+ "learn more >"
811
+ msgstr ""
812
+ "Per saperne di più, vedi la <a href=\"%s\" target=\"_blank\">Playlist "
813
+ "completa su Youtube</a>>"
814
+
815
+ #: templates/panel/help-tab.php:94
816
+ msgctxt "Help tab Watch Videotutorials link"
817
+ msgid "Videos are also available in:"
818
+ msgstr "I video sono disponibili anche in:"
819
+
820
+ #: templates/panel/help-tab.php:137
821
+ msgctxt "Help tab Watch Videotutorials link"
822
+ msgid "Watch our videotutorials"
823
+ msgstr "Guarda i nostri video tutorial"
824
+
825
+ #: templates/panel/help-tab.php:140
826
+ msgctxt "Help tab Watch Videotutorials link"
827
+ msgid "We show you some use cases"
828
+ msgstr "Ti mostriamo alcuni casi d'uso"
829
+
830
+ #: templates/panel/help-tab.php:124
831
+ msgctxt "Help tab Read Documentation link"
832
+ msgid "Read the documentation"
833
+ msgstr "Consulta la documentazione"
834
+
835
+ #: templates/panel/help-tab.php:127
836
+ msgctxt "Help tab Read Documentation link"
837
+ msgid "to learn from basics how it works"
838
+ msgstr "per imparare dalle basi come funziona"
839
+
840
+ #: templates/panel/help-tab.php:150
841
+ msgctxt "Help tab view FAQs link"
842
+ msgid "Check the FAQs"
843
+ msgstr "Controlla le FAQ"
844
+
845
+ #: templates/panel/help-tab.php:153
846
+ msgctxt "Help tab view FAQs link"
847
+ msgid "to find answers to your doubts"
848
+ msgstr "per trovare le risposte ai tuoi dubbi"
849
+
850
+ #: templates/panel/help-tab.php:169
851
+ msgctxt "Help tab FAQ title"
852
+ msgid "Last FAQs in our Help Center"
853
+ msgstr "Ultime FAQ nel nostro Centro Assistenza"
854
+
855
+ #: templates/panel/help-tab.php:183
856
+ msgctxt "Help tab FAQ link"
857
+ msgid "View all FAQs >"
858
+ msgstr "Vedi tutte le FAQ"
859
+
860
+ #: templates/panel/help-tab.php:192
861
+ msgctxt "Help tab submit ticket title"
862
+ msgid "Need help?"
863
+ msgstr "Ti serve aiuto?"
864
+
865
+ #: templates/panel/help-tab.php:195
866
+ msgctxt "Help tab submit ticket description"
867
+ msgid ""
868
+ "If you are experiencing some technical issue ask help to our developers. "
869
+ "Submit a ticket in our support desk and we will help you as soon as possible."
870
+ msgstr ""
871
+ "Se stai riscontrando problemi tecnici chiedi aiuto ai nostri sviluppatori. "
872
+ "Invia un ticket dalla nostra piattaforma di supporto e ti daremo assistenza "
873
+ "il più presto possibile."
874
+
875
+ #: templates/panel/help-tab.php:203
876
+ msgctxt "Help tab submit ticket button"
877
+ msgid "Submit a ticket"
878
+ msgstr "Invia un ticket"
879
+
880
+ #: yit-functions.php:1871
881
  msgctxt "Post action"
882
  msgid "Preview"
883
  msgstr "Anteprima"
884
 
885
+ #: yit-functions.php:1880
886
  msgctxt "Post action"
887
  msgid "View"
888
  msgstr "Visualizza"
889
 
890
+ #: yit-functions.php:1891
891
  msgctxt "Post action"
892
  msgid "Edit"
893
  msgstr "Modifica"
894
 
895
+ #: yit-functions.php:1899
896
  msgctxt "Post action"
897
  msgid "Duplicate"
898
  msgstr "Duplica"
899
 
900
+ #: yit-functions.php:1911
901
  msgctxt "Post action"
902
  msgid "Restore"
903
  msgstr "Ripristina"
904
 
905
+ #: yit-functions.php:1919
906
  msgctxt "Post action"
907
  msgid "Trash"
908
  msgstr "Cestina"
909
 
910
+ #: yit-functions.php:1935
911
  msgctxt "Post action"
912
  msgid "Delete Permanently"
913
  msgstr "Cancella definitivamente"
914
 
915
+ #: yit-functions.php:2031
 
 
 
 
 
 
 
 
 
 
916
  msgctxt "Term action"
917
  msgid "View"
918
  msgstr "Visualizza"
919
 
920
+ #: yit-functions.php:2041
921
  msgctxt "Term action"
922
  msgid "Edit"
923
  msgstr "Modifica"
924
 
925
+ #: yit-functions.php:2049
926
  msgctxt "Term action"
927
  msgid "Duplicate"
928
  msgstr "Duplica"
929
 
930
+ #: yit-functions.php:2062
931
  msgctxt "Term action"
932
  msgid "Delete"
933
  msgstr "Elimina"
934
 
935
+ #: yit-plugin.php:85
936
  msgctxt "Plugin Row Meta"
937
  msgid "Live Demo"
938
  msgstr "Live Demo"
939
 
940
+ #: yit-plugin.php:89
941
  msgctxt "Plugin Row Meta"
942
  msgid "Documentation"
943
  msgstr "Documentazione"
944
 
945
+ #: yit-plugin.php:93
946
  msgctxt "Plugin Row Meta"
947
  msgid "Support"
948
  msgstr "Assistenza"
949
 
950
+ #: yit-plugin.php:97
951
  msgctxt "Plugin Row Meta"
952
  msgid "Premium version"
953
  msgstr "Versione premium"
954
 
955
+ #: yit-plugin.php:200
956
  msgctxt "Action links"
957
  msgid "Settings"
958
  msgstr "Impostazioni"
plugin-fw/languages/yith-plugin-fw-nl_NL.mo CHANGED
Binary file
plugin-fw/languages/yith-plugin-fw-nl_NL.po CHANGED
@@ -4,8 +4,8 @@ msgid ""
4
  msgstr ""
5
  "Project-Id-Version: YITH Framework\n"
6
  "Report-Msgid-Bugs-To: YITH <plugins@yithemes.com>\n"
7
- "POT-Creation-Date: 2021-05-17 13:16:23+00:00\n"
8
- "PO-Revision-Date: 2021-05-17 13:15:16+0000\n"
9
  "Language: nl\n"
10
  "MIME-Version: 1.0\n"
11
  "Content-Type: text/plain; charset=UTF-8\n"
@@ -13,31 +13,63 @@ msgstr ""
13
  "Plural-Forms: nplurals=2; plural=n != 1;\n"
14
  "X-Generator: GlotPress/3.0.0-alpha.2\n"
15
 
16
- #: includes/class-yit-assets.php:143
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
17
  msgid "Clear"
18
  msgstr "Wissen"
19
 
20
- #: includes/class-yit-assets.php:144
21
  msgid "Clear color"
22
  msgstr "Kleur wissen"
23
 
24
- #: includes/class-yit-assets.php:145
25
  msgid "Default"
26
  msgstr "Standaard"
27
 
28
- #: includes/class-yit-assets.php:146
29
  msgid "Select default color"
30
  msgstr "Standaardkleur selecteren"
31
 
32
- #: includes/class-yit-assets.php:147
33
  msgid "Select Color"
34
  msgstr "Kleur selecteren"
35
 
36
- #: includes/class-yit-assets.php:148
37
  msgid "Color value"
38
  msgstr "Kleurwaarde"
39
 
40
- #: includes/class-yit-plugin-panel-woocommerce.php:419
 
 
 
 
 
41
  msgid "The changes you have made will be lost if you leave this page."
42
  msgstr "Als je deze pagina verlaat zullen alle wijzigingen verloren gaan."
43
 
@@ -54,12 +86,12 @@ msgstr "Instellingen"
54
  msgid "How to install premium version"
55
  msgstr "Hoe installeer ik de premium versie"
56
 
57
- #: includes/class-yit-plugin-panel.php:620
58
  #: includes/class-yit-plugin-subpanel.php:132
59
  msgid "Save Changes"
60
  msgstr "Wijzigingen opslaan"
61
 
62
- #: includes/class-yit-plugin-panel.php:625
63
  #: includes/class-yit-plugin-subpanel.php:136
64
  #: templates/panel/woocommerce/woocommerce-form.php:14
65
  msgid ""
@@ -67,72 +99,72 @@ msgid ""
67
  msgstr ""
68
  "Als je doorgaat met deze actie, zal je alle opties op deze pagina resetten."
69
 
70
- #: includes/class-yit-plugin-panel.php:625
71
  #: includes/class-yit-plugin-subpanel.php:136
72
  #: templates/panel/woocommerce/woocommerce-form.php:14
73
  msgid "Are you sure?"
74
  msgstr "Weet je het zeker?"
75
 
76
- #: includes/class-yit-plugin-panel.php:629
77
  #: includes/class-yit-plugin-subpanel.php:139
78
  msgid "Reset to default"
79
  msgstr "Resetten naar standaard"
80
 
81
- #: includes/class-yit-plugin-panel.php:868
82
  msgid ""
83
  "The element you have entered already exists. Please, enter another name."
84
  msgstr "Het element dat je hebt ingevoerd bestaat al. Voer een andere naam in."
85
 
86
- #: includes/class-yit-plugin-panel.php:869
87
  msgid "Settings saved"
88
  msgstr "Instellingen opgeslagen"
89
 
90
- #: includes/class-yit-plugin-panel.php:870
91
  msgid "Settings reset"
92
  msgstr "Instellingen resetten"
93
 
94
- #: includes/class-yit-plugin-panel.php:871
95
  msgid "Element deleted correctly."
96
  msgstr "Element juist verwijderd."
97
 
98
- #: includes/class-yit-plugin-panel.php:872
99
- #: includes/class-yit-plugin-panel.php:873
100
  msgid "Element updated correctly."
101
  msgstr "Element juist geüpdatet."
102
 
103
- #: includes/class-yit-plugin-panel.php:874
104
  msgid "Database imported correctly."
105
  msgstr "Database juist geïmporteerd."
106
 
107
- #: includes/class-yit-plugin-panel.php:875
108
  msgid "An error has occurred during import. Please try again."
109
  msgstr "Er is een fout opgetreden tijdens importeren. Probeer opnieuw."
110
 
111
- #: includes/class-yit-plugin-panel.php:876
112
  msgid "The added file is not valid."
113
  msgstr "Het toegevoegde bestand is niet geldig."
114
 
115
- #: includes/class-yit-plugin-panel.php:877
116
  msgid "Sorry, import is disabled."
117
  msgstr "Sorry, importeren is uitgeschakeld."
118
 
119
- #: includes/class-yit-plugin-panel.php:878
120
  msgid "Sorting successful."
121
  msgstr "Succesvol gesorteerd."
122
 
123
- #: includes/class-yit-plugin-panel.php:1346
124
  msgid "We need your support"
125
  msgstr "We hebben je hulp nodig"
126
 
127
- #: includes/class-yit-plugin-panel.php:1347
128
  msgid "to keep updating and improving the plugin. Please,"
129
  msgstr "om de plugin te blijven bijwerken en verbeteren. A.u.b.,"
130
 
131
- #: includes/class-yit-plugin-panel.php:1349
132
  msgid "help us by leaving a good review"
133
  msgstr "help ons door een goede beoordeling achter te laten"
134
 
135
- #: includes/class-yit-plugin-panel.php:1350
136
  msgid ":) Thanks!"
137
  msgstr ":) Bedankt!"
138
 
@@ -591,35 +623,20 @@ msgid "Plugins Requirements"
591
  msgstr "Plugin benodigdheden"
592
 
593
  #. translators: %s is the title of the post object.
594
- #: yit-functions.php:1823
595
  msgid "Are you sure you want to move \"%s\" to trash?"
596
  msgstr "Weet je zeker dat je \"%s\" naar de prullenbak wilt verplaatsen?"
597
 
598
  #. translators: %s is the title of the post object.
599
- #: yit-functions.php:1825 yit-functions.php:1983
600
  msgid "Are you sure you want to delete \"%s\"?"
601
  msgstr "Weet je zeker dat je \"%s\" wilt verwijderen?"
602
 
603
- #: yit-functions.php:1825 yit-functions.php:1983
604
- msgid ""
605
- "This action cannot be undone and you will be not able to recover this data."
606
- msgstr ""
607
- "Deze actie kan niet ongedaan gemaakt worden and je zult deze gegevens niet "
608
- "kunnen herstellen."
609
-
610
- #: yit-functions.php:1891
611
- msgid "Confirm trash"
612
- msgstr "Verplaatsen naar prullenbak bevestigen"
613
-
614
- #: yit-functions.php:1908 yit-functions.php:2035
615
- msgid "Confirm delete"
616
- msgstr "Verwijderen bevestigen"
617
-
618
- #: yit-functions.php:1921 yit-functions.php:1929 yit-functions.php:2046
619
  msgid "Further actions"
620
  msgstr "Verdere acties"
621
 
622
- #: yit-plugin.php:203
623
  msgid "License"
624
  msgstr "Licentie"
625
 
@@ -638,16 +655,50 @@ msgctxt "[gutenberg]: Category Name"
638
  msgid "YITH"
639
  msgstr "YITH"
640
 
641
- #: includes/class-yit-assets.php:131
642
  msgctxt "Button text"
643
  msgid "Confirm"
644
  msgstr "Bevestigen"
645
 
646
- #: includes/class-yit-assets.php:132
647
  msgctxt "Button text"
648
  msgid "Cancel"
649
  msgstr "Annuleren"
650
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
651
  #: includes/class-yith-dashboard.php:96
652
  msgctxt "Plugin FW"
653
  msgid "View Changelog"
@@ -750,92 +801,157 @@ msgctxt "YES/NO button: use MAX 4 characters!"
750
  msgid "NO"
751
  msgstr "NEE"
752
 
753
- #: yit-functions.php:1837
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
754
  msgctxt "Post action"
755
  msgid "Preview"
756
  msgstr "Voorbeeld"
757
 
758
- #: yit-functions.php:1846
759
  msgctxt "Post action"
760
  msgid "View"
761
  msgstr "Bekijken"
762
 
763
- #: yit-functions.php:1857
764
  msgctxt "Post action"
765
  msgid "Edit"
766
  msgstr "Bewerken"
767
 
768
- #: yit-functions.php:1865
769
  msgctxt "Post action"
770
  msgid "Duplicate"
771
  msgstr "Dupliceren"
772
 
773
- #: yit-functions.php:1877
774
  msgctxt "Post action"
775
  msgid "Restore"
776
  msgstr "Herstellen"
777
 
778
- #: yit-functions.php:1885
779
  msgctxt "Post action"
780
  msgid "Trash"
781
  msgstr "Prullenbak"
782
 
783
- #: yit-functions.php:1901
784
  msgctxt "Post action"
785
  msgid "Delete Permanently"
786
  msgstr "Permanent verijwderen"
787
 
788
- #: yit-functions.php:1893
789
- msgctxt "Trash confirmation action"
790
- msgid "Yes, trash"
791
- msgstr "Ja, verplaatsen naar prullenbak"
792
-
793
- #: yit-functions.php:1910 yit-functions.php:2037
794
- msgctxt "Delete confirmation action"
795
- msgid "Yes, delete"
796
- msgstr "Ja, verwijderen"
797
-
798
- #: yit-functions.php:1997
799
  msgctxt "Term action"
800
  msgid "View"
801
  msgstr "Bekijken"
802
 
803
- #: yit-functions.php:2007
804
  msgctxt "Term action"
805
  msgid "Edit"
806
  msgstr "Bewerken"
807
 
808
- #: yit-functions.php:2015
809
  msgctxt "Term action"
810
  msgid "Duplicate"
811
  msgstr "Dupliceren"
812
 
813
- #: yit-functions.php:2028
814
  msgctxt "Term action"
815
  msgid "Delete"
816
  msgstr "Verwijderen"
817
 
818
- #: yit-plugin.php:84
819
  msgctxt "Plugin Row Meta"
820
  msgid "Live Demo"
821
  msgstr "Live Demo"
822
 
823
- #: yit-plugin.php:88
824
  msgctxt "Plugin Row Meta"
825
  msgid "Documentation"
826
  msgstr "Documentatie"
827
 
828
- #: yit-plugin.php:92
829
  msgctxt "Plugin Row Meta"
830
  msgid "Support"
831
  msgstr "Ondersteuning"
832
 
833
- #: yit-plugin.php:96
834
  msgctxt "Plugin Row Meta"
835
  msgid "Premium version"
836
  msgstr "Premium versie"
837
 
838
- #: yit-plugin.php:199
839
  msgctxt "Action links"
840
  msgid "Settings"
841
  msgstr "Instellingen"
4
  msgstr ""
5
  "Project-Id-Version: YITH Framework\n"
6
  "Report-Msgid-Bugs-To: YITH <plugins@yithemes.com>\n"
7
+ "POT-Creation-Date: 2021-06-08 13:48:44+00:00\n"
8
+ "PO-Revision-Date: 2021-06-08 08:45:36+0000\n"
9
  "Language: nl\n"
10
  "MIME-Version: 1.0\n"
11
  "Content-Type: text/plain; charset=UTF-8\n"
13
  "Plural-Forms: nplurals=2; plural=n != 1;\n"
14
  "X-Generator: GlotPress/3.0.0-alpha.2\n"
15
 
16
+ #: includes/class-yit-assets.php:145 yit-functions.php:1925
17
+ msgid "Confirm trash"
18
+ msgstr "Verplaatsen naar prullenbak bevestigen"
19
+
20
+ #: includes/class-yit-assets.php:146
21
+ msgid "Are you sure you want to trash the selected items?"
22
+ msgstr ""
23
+ "Weet je zeker dat je het geselecteerde item naar de prullenbak wilt "
24
+ "verplaatsen?"
25
+
26
+ #: includes/class-yit-assets.php:148 yit-functions.php:1942
27
+ #: yit-functions.php:2069
28
+ msgid "Confirm delete"
29
+ msgstr "Verwijderen bevestigen"
30
+
31
+ #: includes/class-yit-assets.php:149
32
+ msgid "Are you sure you want to delete the selected items?"
33
+ msgstr "Weet je zeker dat je de geselecteerde items wilt verwijderen?"
34
+
35
+ #: includes/class-yit-assets.php:149 yit-functions.php:1859
36
+ #: yit-functions.php:2017
37
+ msgid ""
38
+ "This action cannot be undone and you will not be able to recover this data."
39
+ msgstr ""
40
+ "Deze actie kan niet ongedaan gemaakt worden en je zult deze gegevens niet "
41
+ "kunnen herstellen."
42
+
43
+ #: includes/class-yit-assets.php:161
44
  msgid "Clear"
45
  msgstr "Wissen"
46
 
47
+ #: includes/class-yit-assets.php:162
48
  msgid "Clear color"
49
  msgstr "Kleur wissen"
50
 
51
+ #: includes/class-yit-assets.php:163
52
  msgid "Default"
53
  msgstr "Standaard"
54
 
55
+ #: includes/class-yit-assets.php:164
56
  msgid "Select default color"
57
  msgstr "Standaardkleur selecteren"
58
 
59
+ #: includes/class-yit-assets.php:165
60
  msgid "Select Color"
61
  msgstr "Kleur selecteren"
62
 
63
+ #: includes/class-yit-assets.php:166
64
  msgid "Color value"
65
  msgstr "Kleurwaarde"
66
 
67
+ #: includes/class-yit-help-desk.php:152
68
+ msgid "There was an error with your request; please try again later."
69
+ msgstr ""
70
+ "Er is een fout opgetreden met je verzoek, probeer het later opnieuw a.u.b."
71
+
72
+ #: includes/class-yit-plugin-panel-woocommerce.php:423
73
  msgid "The changes you have made will be lost if you leave this page."
74
  msgstr "Als je deze pagina verlaat zullen alle wijzigingen verloren gaan."
75
 
86
  msgid "How to install premium version"
87
  msgstr "Hoe installeer ik de premium versie"
88
 
89
+ #: includes/class-yit-plugin-panel.php:651
90
  #: includes/class-yit-plugin-subpanel.php:132
91
  msgid "Save Changes"
92
  msgstr "Wijzigingen opslaan"
93
 
94
+ #: includes/class-yit-plugin-panel.php:656
95
  #: includes/class-yit-plugin-subpanel.php:136
96
  #: templates/panel/woocommerce/woocommerce-form.php:14
97
  msgid ""
99
  msgstr ""
100
  "Als je doorgaat met deze actie, zal je alle opties op deze pagina resetten."
101
 
102
+ #: includes/class-yit-plugin-panel.php:656
103
  #: includes/class-yit-plugin-subpanel.php:136
104
  #: templates/panel/woocommerce/woocommerce-form.php:14
105
  msgid "Are you sure?"
106
  msgstr "Weet je het zeker?"
107
 
108
+ #: includes/class-yit-plugin-panel.php:660
109
  #: includes/class-yit-plugin-subpanel.php:139
110
  msgid "Reset to default"
111
  msgstr "Resetten naar standaard"
112
 
113
+ #: includes/class-yit-plugin-panel.php:958
114
  msgid ""
115
  "The element you have entered already exists. Please, enter another name."
116
  msgstr "Het element dat je hebt ingevoerd bestaat al. Voer een andere naam in."
117
 
118
+ #: includes/class-yit-plugin-panel.php:959
119
  msgid "Settings saved"
120
  msgstr "Instellingen opgeslagen"
121
 
122
+ #: includes/class-yit-plugin-panel.php:960
123
  msgid "Settings reset"
124
  msgstr "Instellingen resetten"
125
 
126
+ #: includes/class-yit-plugin-panel.php:961
127
  msgid "Element deleted correctly."
128
  msgstr "Element juist verwijderd."
129
 
130
+ #: includes/class-yit-plugin-panel.php:962
131
+ #: includes/class-yit-plugin-panel.php:963
132
  msgid "Element updated correctly."
133
  msgstr "Element juist geüpdatet."
134
 
135
+ #: includes/class-yit-plugin-panel.php:964
136
  msgid "Database imported correctly."
137
  msgstr "Database juist geïmporteerd."
138
 
139
+ #: includes/class-yit-plugin-panel.php:965
140
  msgid "An error has occurred during import. Please try again."
141
  msgstr "Er is een fout opgetreden tijdens importeren. Probeer opnieuw."
142
 
143
+ #: includes/class-yit-plugin-panel.php:966
144
  msgid "The added file is not valid."
145
  msgstr "Het toegevoegde bestand is niet geldig."
146
 
147
+ #: includes/class-yit-plugin-panel.php:967
148
  msgid "Sorry, import is disabled."
149
  msgstr "Sorry, importeren is uitgeschakeld."
150
 
151
+ #: includes/class-yit-plugin-panel.php:968
152
  msgid "Sorting successful."
153
  msgstr "Succesvol gesorteerd."
154
 
155
+ #: includes/class-yit-plugin-panel.php:1436
156
  msgid "We need your support"
157
  msgstr "We hebben je hulp nodig"
158
 
159
+ #: includes/class-yit-plugin-panel.php:1437
160
  msgid "to keep updating and improving the plugin. Please,"
161
  msgstr "om de plugin te blijven bijwerken en verbeteren. A.u.b.,"
162
 
163
+ #: includes/class-yit-plugin-panel.php:1439
164
  msgid "help us by leaving a good review"
165
  msgstr "help ons door een goede beoordeling achter te laten"
166
 
167
+ #: includes/class-yit-plugin-panel.php:1440
168
  msgid ":) Thanks!"
169
  msgstr ":) Bedankt!"
170
 
623
  msgstr "Plugin benodigdheden"
624
 
625
  #. translators: %s is the title of the post object.
626
+ #: yit-functions.php:1857
627
  msgid "Are you sure you want to move \"%s\" to trash?"
628
  msgstr "Weet je zeker dat je \"%s\" naar de prullenbak wilt verplaatsen?"
629
 
630
  #. translators: %s is the title of the post object.
631
+ #: yit-functions.php:1859 yit-functions.php:2017
632
  msgid "Are you sure you want to delete \"%s\"?"
633
  msgstr "Weet je zeker dat je \"%s\" wilt verwijderen?"
634
 
635
+ #: yit-functions.php:1955 yit-functions.php:1963 yit-functions.php:2080
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
636
  msgid "Further actions"
637
  msgstr "Verdere acties"
638
 
639
+ #: yit-plugin.php:204
640
  msgid "License"
641
  msgstr "Licentie"
642
 
655
  msgid "YITH"
656
  msgstr "YITH"
657
 
658
+ #: includes/class-yit-assets.php:133
659
  msgctxt "Button text"
660
  msgid "Confirm"
661
  msgstr "Bevestigen"
662
 
663
+ #: includes/class-yit-assets.php:134
664
  msgctxt "Button text"
665
  msgid "Cancel"
666
  msgstr "Annuleren"
667
 
668
+ #: includes/class-yit-assets.php:147 yit-functions.php:1927
669
+ msgctxt "Trash confirmation action"
670
+ msgid "Yes, move to trash"
671
+ msgstr "Ja, verplaatsen naar prullenbak"
672
+
673
+ #: includes/class-yit-assets.php:150 yit-functions.php:1944
674
+ msgctxt "Delete confirmation action"
675
+ msgid "Yes, delete permanently"
676
+ msgstr "Ja, permanent verwijderen"
677
+
678
+ #: yit-functions.php:2071
679
+ msgctxt "Delete confirmation action"
680
+ msgid "Yes, delete"
681
+ msgstr "Ja, verwijderen"
682
+
683
+ #: includes/class-yit-plugin-panel.php:488
684
+ msgctxt "Help tab name"
685
+ msgid "Help"
686
+ msgstr "Help"
687
+
688
+ #. translators: 1. Plugin name.
689
+ #: includes/class-yit-plugin-panel.php:797
690
+ msgctxt "Help tab default title"
691
+ msgid "Thank you for purchasing %s!"
692
+ msgstr "Bedankt voor het kopen van %s!"
693
+
694
+ #: includes/class-yit-plugin-panel.php:798
695
+ msgctxt "Help tab default description"
696
+ msgid ""
697
+ "We want to help you to enjoy a wonderful experience with all our products."
698
+ msgstr ""
699
+ "We willen je helpen om te genieten van de geweldige ervaringen met al onze "
700
+ "producten."
701
+
702
  #: includes/class-yith-dashboard.php:96
703
  msgctxt "Plugin FW"
704
  msgid "View Changelog"
801
  msgid "NO"
802
  msgstr "NEE"
803
 
804
+ #. translators: 1. Url to EN playlist.
805
+ #: templates/panel/help-tab.php:87
806
+ msgctxt "Help tab view all video link"
807
+ msgid ""
808
+ "Check the full <a href=\"%s\" target=\"_blank\">Playlist on Youtube</a> to "
809
+ "learn more >"
810
+ msgstr ""
811
+ "Bekijk de volledige <a href=\"%s\" target=\"_blank\">Playlist op Youtube</a> "
812
+ "om meer te weten te komen >"
813
+
814
+ #: templates/panel/help-tab.php:94
815
+ msgctxt "Help tab Watch Videotutorials link"
816
+ msgid "Videos are also available in:"
817
+ msgstr "Videos zijn ook beschikbaar in:"
818
+
819
+ #: templates/panel/help-tab.php:137
820
+ msgctxt "Help tab Watch Videotutorials link"
821
+ msgid "Watch our videotutorials"
822
+ msgstr "Bekijk onze video uitleg"
823
+
824
+ #: templates/panel/help-tab.php:140
825
+ msgctxt "Help tab Watch Videotutorials link"
826
+ msgid "We show you some use cases"
827
+ msgstr "We tonen je enkele gebruikscasussen"
828
+
829
+ #: templates/panel/help-tab.php:124
830
+ msgctxt "Help tab Read Documentation link"
831
+ msgid "Read the documentation"
832
+ msgstr "Lees de documentatie"
833
+
834
+ #: templates/panel/help-tab.php:127
835
+ msgctxt "Help tab Read Documentation link"
836
+ msgid "to learn from basics how it works"
837
+ msgstr "om vanaf de basis te leren hoe het werkt"
838
+
839
+ #: templates/panel/help-tab.php:150
840
+ msgctxt "Help tab view FAQs link"
841
+ msgid "Check the FAQs"
842
+ msgstr "Check de FAQs"
843
+
844
+ #: templates/panel/help-tab.php:153
845
+ msgctxt "Help tab view FAQs link"
846
+ msgid "to find answers to your doubts"
847
+ msgstr "om je twijfels te beantwoorden"
848
+
849
+ #: templates/panel/help-tab.php:169
850
+ msgctxt "Help tab FAQ title"
851
+ msgid "Last FAQs in our Help Center"
852
+ msgstr "Laatste FAQs in ons Help Center"
853
+
854
+ #: templates/panel/help-tab.php:183
855
+ msgctxt "Help tab FAQ link"
856
+ msgid "View all FAQs >"
857
+ msgstr "Bekijk alle FAQs >"
858
+
859
+ #: templates/panel/help-tab.php:192
860
+ msgctxt "Help tab submit ticket title"
861
+ msgid "Need help?"
862
+ msgstr "Hulp nodig?"
863
+
864
+ #: templates/panel/help-tab.php:195
865
+ msgctxt "Help tab submit ticket description"
866
+ msgid ""
867
+ "If you are experiencing some technical issue ask help to our developers. "
868
+ "Submit a ticket in our support desk and we will help you as soon as possible."
869
+ msgstr ""
870
+ "Als je een technisch probleem ondervindt, vraag dan hulp aan onze "
871
+ "developers. Je kunt een ticket indienen bij onze supportdesk en we helpen je "
872
+ "zo snel mogelijk verder."
873
+
874
+ #: templates/panel/help-tab.php:203
875
+ msgctxt "Help tab submit ticket button"
876
+ msgid "Submit a ticket"
877
+ msgstr "Verstuur een ticket"
878
+
879
+ #: yit-functions.php:1871
880
  msgctxt "Post action"
881
  msgid "Preview"
882
  msgstr "Voorbeeld"
883
 
884
+ #: yit-functions.php:1880
885
  msgctxt "Post action"
886
  msgid "View"
887
  msgstr "Bekijken"
888
 
889
+ #: yit-functions.php:1891
890
  msgctxt "Post action"
891
  msgid "Edit"
892
  msgstr "Bewerken"
893
 
894
+ #: yit-functions.php:1899
895
  msgctxt "Post action"
896
  msgid "Duplicate"
897
  msgstr "Dupliceren"
898
 
899
+ #: yit-functions.php:1911
900
  msgctxt "Post action"
901
  msgid "Restore"
902
  msgstr "Herstellen"
903
 
904
+ #: yit-functions.php:1919
905
  msgctxt "Post action"
906
  msgid "Trash"
907
  msgstr "Prullenbak"
908
 
909
+ #: yit-functions.php:1935
910
  msgctxt "Post action"
911
  msgid "Delete Permanently"
912
  msgstr "Permanent verijwderen"
913
 
914
+ #: yit-functions.php:2031
 
 
 
 
 
 
 
 
 
 
915
  msgctxt "Term action"
916
  msgid "View"
917
  msgstr "Bekijken"
918
 
919
+ #: yit-functions.php:2041
920
  msgctxt "Term action"
921
  msgid "Edit"
922
  msgstr "Bewerken"
923
 
924
+ #: yit-functions.php:2049
925
  msgctxt "Term action"
926
  msgid "Duplicate"
927
  msgstr "Dupliceren"
928
 
929
+ #: yit-functions.php:2062
930
  msgctxt "Term action"
931
  msgid "Delete"
932
  msgstr "Verwijderen"
933
 
934
+ #: yit-plugin.php:85
935
  msgctxt "Plugin Row Meta"
936
  msgid "Live Demo"
937
  msgstr "Live Demo"
938
 
939
+ #: yit-plugin.php:89
940
  msgctxt "Plugin Row Meta"
941
  msgid "Documentation"
942
  msgstr "Documentatie"
943
 
944
+ #: yit-plugin.php:93
945
  msgctxt "Plugin Row Meta"
946
  msgid "Support"
947
  msgstr "Ondersteuning"
948
 
949
+ #: yit-plugin.php:97
950
  msgctxt "Plugin Row Meta"
951
  msgid "Premium version"
952
  msgstr "Premium versie"
953
 
954
+ #: yit-plugin.php:200
955
  msgctxt "Action links"
956
  msgid "Settings"
957
  msgstr "Instellingen"
plugin-fw/languages/yith-plugin-fw.pot CHANGED
@@ -4,7 +4,7 @@ msgid ""
4
  msgstr ""
5
  "Project-Id-Version: \n"
6
  "Report-Msgid-Bugs-To: YITH <plugins@yithemes.com>\n"
7
- "POT-Creation-Date: 2021-05-17 13:16:23+00:00\n"
8
  "MIME-Version: 1.0\n"
9
  "Content-Type: text/plain; charset=utf-8\n"
10
  "Content-Transfer-Encoding: 8bit\n"
@@ -24,31 +24,57 @@ msgstr ""
24
  "X-Textdomain-Support: yes\n"
25
  "X-Generator: grunt-wp-i18n 1.0.3\n"
26
 
27
- #: includes/class-yit-assets.php:143
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
28
  msgid "Clear"
29
  msgstr ""
30
 
31
- #: includes/class-yit-assets.php:144
32
  msgid "Clear color"
33
  msgstr ""
34
 
35
- #: includes/class-yit-assets.php:145
36
  msgid "Default"
37
  msgstr ""
38
 
39
- #: includes/class-yit-assets.php:146
40
  msgid "Select default color"
41
  msgstr ""
42
 
43
- #: includes/class-yit-assets.php:147
44
  msgid "Select Color"
45
  msgstr ""
46
 
47
- #: includes/class-yit-assets.php:148
48
  msgid "Color value"
49
  msgstr ""
50
 
51
- #: includes/class-yit-plugin-panel-woocommerce.php:419
 
 
 
 
52
  msgid "The changes you have made will be lost if you leave this page."
53
  msgstr ""
54
 
@@ -65,82 +91,82 @@ msgstr ""
65
  msgid "How to install premium version"
66
  msgstr ""
67
 
68
- #: includes/class-yit-plugin-panel.php:620
69
  #: includes/class-yit-plugin-subpanel.php:132
70
  msgid "Save Changes"
71
  msgstr ""
72
 
73
- #: includes/class-yit-plugin-panel.php:625
74
  #: includes/class-yit-plugin-subpanel.php:136
75
  #: templates/panel/woocommerce/woocommerce-form.php:14
76
  msgid "If you continue with this action, you will reset all options in this page."
77
  msgstr ""
78
 
79
- #: includes/class-yit-plugin-panel.php:625
80
  #: includes/class-yit-plugin-subpanel.php:136
81
  #: templates/panel/woocommerce/woocommerce-form.php:14
82
  msgid "Are you sure?"
83
  msgstr ""
84
 
85
- #: includes/class-yit-plugin-panel.php:629
86
  #: includes/class-yit-plugin-subpanel.php:139
87
  msgid "Reset to default"
88
  msgstr ""
89
 
90
- #: includes/class-yit-plugin-panel.php:868
91
  msgid "The element you have entered already exists. Please, enter another name."
92
  msgstr ""
93
 
94
- #: includes/class-yit-plugin-panel.php:869
95
  msgid "Settings saved"
96
  msgstr ""
97
 
98
- #: includes/class-yit-plugin-panel.php:870
99
  msgid "Settings reset"
100
  msgstr ""
101
 
102
- #: includes/class-yit-plugin-panel.php:871
103
  msgid "Element deleted correctly."
104
  msgstr ""
105
 
106
- #: includes/class-yit-plugin-panel.php:872
107
- #: includes/class-yit-plugin-panel.php:873
108
  msgid "Element updated correctly."
109
  msgstr ""
110
 
111
- #: includes/class-yit-plugin-panel.php:874
112
  msgid "Database imported correctly."
113
  msgstr ""
114
 
115
- #: includes/class-yit-plugin-panel.php:875
116
  msgid "An error has occurred during import. Please try again."
117
  msgstr ""
118
 
119
- #: includes/class-yit-plugin-panel.php:876
120
  msgid "The added file is not valid."
121
  msgstr ""
122
 
123
- #: includes/class-yit-plugin-panel.php:877
124
  msgid "Sorry, import is disabled."
125
  msgstr ""
126
 
127
- #: includes/class-yit-plugin-panel.php:878
128
  msgid "Sorting successful."
129
  msgstr ""
130
 
131
- #: includes/class-yit-plugin-panel.php:1346
132
  msgid "We need your support"
133
  msgstr ""
134
 
135
- #: includes/class-yit-plugin-panel.php:1347
136
  msgid "to keep updating and improving the plugin. Please,"
137
  msgstr ""
138
 
139
- #: includes/class-yit-plugin-panel.php:1349
140
  msgid "help us by leaving a good review"
141
  msgstr ""
142
 
143
- #: includes/class-yit-plugin-panel.php:1350
144
  msgid ":) Thanks!"
145
  msgstr ""
146
 
@@ -573,33 +599,21 @@ msgstr ""
573
  msgid "Plugins Requirements"
574
  msgstr ""
575
 
576
- #: yit-functions.php:1823
577
  #. translators: %s is the title of the post object.
578
  msgid "Are you sure you want to move \"%s\" to trash?"
579
  msgstr ""
580
 
581
- #: yit-functions.php:1825 yit-functions.php:1983
582
  #. translators: %s is the title of the post object.
583
  msgid "Are you sure you want to delete \"%s\"?"
584
  msgstr ""
585
 
586
- #: yit-functions.php:1825 yit-functions.php:1983
587
- msgid "This action cannot be undone and you will be not able to recover this data."
588
- msgstr ""
589
-
590
- #: yit-functions.php:1891
591
- msgid "Confirm trash"
592
- msgstr ""
593
-
594
- #: yit-functions.php:1908 yit-functions.php:2035
595
- msgid "Confirm delete"
596
- msgstr ""
597
-
598
- #: yit-functions.php:1921 yit-functions.php:1929 yit-functions.php:2046
599
  msgid "Further actions"
600
  msgstr ""
601
 
602
- #: yit-plugin.php:203
603
  msgid "License"
604
  msgstr ""
605
 
@@ -618,16 +632,47 @@ msgctxt "[gutenberg]: Category Name"
618
  msgid "YITH"
619
  msgstr ""
620
 
621
- #: includes/class-yit-assets.php:131
622
  msgctxt "Button text"
623
  msgid "Confirm"
624
  msgstr ""
625
 
626
- #: includes/class-yit-assets.php:132
627
  msgctxt "Button text"
628
  msgid "Cancel"
629
  msgstr ""
630
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
631
  #: includes/class-yith-dashboard.php:96
632
  msgctxt "Plugin FW"
633
  msgid "View Changelog"
@@ -724,92 +769,153 @@ msgctxt "YES/NO button: use MAX 4 characters!"
724
  msgid "NO"
725
  msgstr ""
726
 
727
- #: yit-functions.php:1837
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
728
  msgctxt "Post action"
729
  msgid "Preview"
730
  msgstr ""
731
 
732
- #: yit-functions.php:1846
733
  msgctxt "Post action"
734
  msgid "View"
735
  msgstr ""
736
 
737
- #: yit-functions.php:1857
738
  msgctxt "Post action"
739
  msgid "Edit"
740
  msgstr ""
741
 
742
- #: yit-functions.php:1865
743
  msgctxt "Post action"
744
  msgid "Duplicate"
745
  msgstr ""
746
 
747
- #: yit-functions.php:1877
748
  msgctxt "Post action"
749
  msgid "Restore"
750
  msgstr ""
751
 
752
- #: yit-functions.php:1885
753
  msgctxt "Post action"
754
  msgid "Trash"
755
  msgstr ""
756
 
757
- #: yit-functions.php:1901
758
  msgctxt "Post action"
759
  msgid "Delete Permanently"
760
  msgstr ""
761
 
762
- #: yit-functions.php:1893
763
- msgctxt "Trash confirmation action"
764
- msgid "Yes, trash"
765
- msgstr ""
766
-
767
- #: yit-functions.php:1910 yit-functions.php:2037
768
- msgctxt "Delete confirmation action"
769
- msgid "Yes, delete"
770
- msgstr ""
771
-
772
- #: yit-functions.php:1997
773
  msgctxt "Term action"
774
  msgid "View"
775
  msgstr ""
776
 
777
- #: yit-functions.php:2007
778
  msgctxt "Term action"
779
  msgid "Edit"
780
  msgstr ""
781
 
782
- #: yit-functions.php:2015
783
  msgctxt "Term action"
784
  msgid "Duplicate"
785
  msgstr ""
786
 
787
- #: yit-functions.php:2028
788
  msgctxt "Term action"
789
  msgid "Delete"
790
  msgstr ""
791
 
792
- #: yit-plugin.php:84
793
  msgctxt "Plugin Row Meta"
794
  msgid "Live Demo"
795
  msgstr ""
796
 
797
- #: yit-plugin.php:88
798
  msgctxt "Plugin Row Meta"
799
  msgid "Documentation"
800
  msgstr ""
801
 
802
- #: yit-plugin.php:92
803
  msgctxt "Plugin Row Meta"
804
  msgid "Support"
805
  msgstr ""
806
 
807
- #: yit-plugin.php:96
808
  msgctxt "Plugin Row Meta"
809
  msgid "Premium version"
810
  msgstr ""
811
 
812
- #: yit-plugin.php:199
813
  msgctxt "Action links"
814
  msgid "Settings"
815
  msgstr ""
4
  msgstr ""
5
  "Project-Id-Version: \n"
6
  "Report-Msgid-Bugs-To: YITH <plugins@yithemes.com>\n"
7
+ "POT-Creation-Date: 2021-06-08 13:48:44+00:00\n"
8
  "MIME-Version: 1.0\n"
9
  "Content-Type: text/plain; charset=utf-8\n"
10
  "Content-Transfer-Encoding: 8bit\n"
24
  "X-Textdomain-Support: yes\n"
25
  "X-Generator: grunt-wp-i18n 1.0.3\n"
26
 
27
+ #: includes/class-yit-assets.php:145 yit-functions.php:1925
28
+ msgid "Confirm trash"
29
+ msgstr ""
30
+
31
+ #: includes/class-yit-assets.php:146
32
+ msgid "Are you sure you want to trash the selected items?"
33
+ msgstr ""
34
+
35
+ #: includes/class-yit-assets.php:148 yit-functions.php:1942
36
+ #: yit-functions.php:2069
37
+ msgid "Confirm delete"
38
+ msgstr ""
39
+
40
+ #: includes/class-yit-assets.php:149
41
+ msgid "Are you sure you want to delete the selected items?"
42
+ msgstr ""
43
+
44
+ #: includes/class-yit-assets.php:149 yit-functions.php:1859
45
+ #: yit-functions.php:2017
46
+ msgid "This action cannot be undone and you will not be able to recover this data."
47
+ msgstr ""
48
+
49
+ #: includes/class-yit-assets.php:161
50
  msgid "Clear"
51
  msgstr ""
52
 
53
+ #: includes/class-yit-assets.php:162
54
  msgid "Clear color"
55
  msgstr ""
56
 
57
+ #: includes/class-yit-assets.php:163
58
  msgid "Default"
59
  msgstr ""
60
 
61
+ #: includes/class-yit-assets.php:164
62
  msgid "Select default color"
63
  msgstr ""
64
 
65
+ #: includes/class-yit-assets.php:165
66
  msgid "Select Color"
67
  msgstr ""
68
 
69
+ #: includes/class-yit-assets.php:166
70
  msgid "Color value"
71
  msgstr ""
72
 
73
+ #: includes/class-yit-help-desk.php:152
74
+ msgid "There was an error with your request; please try again later."
75
+ msgstr ""
76
+
77
+ #: includes/class-yit-plugin-panel-woocommerce.php:423
78
  msgid "The changes you have made will be lost if you leave this page."
79
  msgstr ""
80
 
91
  msgid "How to install premium version"
92
  msgstr ""
93
 
94
+ #: includes/class-yit-plugin-panel.php:651
95
  #: includes/class-yit-plugin-subpanel.php:132
96
  msgid "Save Changes"
97
  msgstr ""
98
 
99
+ #: includes/class-yit-plugin-panel.php:656
100
  #: includes/class-yit-plugin-subpanel.php:136
101
  #: templates/panel/woocommerce/woocommerce-form.php:14
102
  msgid "If you continue with this action, you will reset all options in this page."
103
  msgstr ""
104
 
105
+ #: includes/class-yit-plugin-panel.php:656
106
  #: includes/class-yit-plugin-subpanel.php:136
107
  #: templates/panel/woocommerce/woocommerce-form.php:14
108
  msgid "Are you sure?"
109
  msgstr ""
110
 
111
+ #: includes/class-yit-plugin-panel.php:660
112
  #: includes/class-yit-plugin-subpanel.php:139
113
  msgid "Reset to default"
114
  msgstr ""
115
 
116
+ #: includes/class-yit-plugin-panel.php:958
117
  msgid "The element you have entered already exists. Please, enter another name."
118
  msgstr ""
119
 
120
+ #: includes/class-yit-plugin-panel.php:959
121
  msgid "Settings saved"
122
  msgstr ""
123
 
124
+ #: includes/class-yit-plugin-panel.php:960
125
  msgid "Settings reset"
126
  msgstr ""
127
 
128
+ #: includes/class-yit-plugin-panel.php:961
129
  msgid "Element deleted correctly."
130
  msgstr ""
131
 
132
+ #: includes/class-yit-plugin-panel.php:962
133
+ #: includes/class-yit-plugin-panel.php:963
134
  msgid "Element updated correctly."
135
  msgstr ""
136
 
137
+ #: includes/class-yit-plugin-panel.php:964
138
  msgid "Database imported correctly."
139
  msgstr ""
140
 
141
+ #: includes/class-yit-plugin-panel.php:965
142
  msgid "An error has occurred during import. Please try again."
143
  msgstr ""
144
 
145
+ #: includes/class-yit-plugin-panel.php:966
146
  msgid "The added file is not valid."
147
  msgstr ""
148
 
149
+ #: includes/class-yit-plugin-panel.php:967
150
  msgid "Sorry, import is disabled."
151
  msgstr ""
152
 
153
+ #: includes/class-yit-plugin-panel.php:968
154
  msgid "Sorting successful."
155
  msgstr ""
156
 
157
+ #: includes/class-yit-plugin-panel.php:1436
158
  msgid "We need your support"
159
  msgstr ""
160
 
161
+ #: includes/class-yit-plugin-panel.php:1437
162
  msgid "to keep updating and improving the plugin. Please,"
163
  msgstr ""
164
 
165
+ #: includes/class-yit-plugin-panel.php:1439
166
  msgid "help us by leaving a good review"
167
  msgstr ""
168
 
169
+ #: includes/class-yit-plugin-panel.php:1440
170
  msgid ":) Thanks!"
171
  msgstr ""
172
 
599
  msgid "Plugins Requirements"
600
  msgstr ""
601
 
602
+ #: yit-functions.php:1857
603
  #. translators: %s is the title of the post object.
604
  msgid "Are you sure you want to move \"%s\" to trash?"
605
  msgstr ""
606
 
607
+ #: yit-functions.php:1859 yit-functions.php:2017
608
  #. translators: %s is the title of the post object.
609
  msgid "Are you sure you want to delete \"%s\"?"
610
  msgstr ""
611
 
612
+ #: yit-functions.php:1955 yit-functions.php:1963 yit-functions.php:2080
 
 
 
 
 
 
 
 
 
 
 
 
613
  msgid "Further actions"
614
  msgstr ""
615
 
616
+ #: yit-plugin.php:204
617
  msgid "License"
618
  msgstr ""
619
 
632
  msgid "YITH"
633
  msgstr ""
634
 
635
+ #: includes/class-yit-assets.php:133
636
  msgctxt "Button text"
637
  msgid "Confirm"
638
  msgstr ""
639
 
640
+ #: includes/class-yit-assets.php:134
641
  msgctxt "Button text"
642
  msgid "Cancel"
643
  msgstr ""
644
 
645
+ #: includes/class-yit-assets.php:147 yit-functions.php:1927
646
+ msgctxt "Trash confirmation action"
647
+ msgid "Yes, move to trash"
648
+ msgstr ""
649
+
650
+ #: includes/class-yit-assets.php:150 yit-functions.php:1944
651
+ msgctxt "Delete confirmation action"
652
+ msgid "Yes, delete permanently"
653
+ msgstr ""
654
+
655
+ #: yit-functions.php:2071
656
+ msgctxt "Delete confirmation action"
657
+ msgid "Yes, delete"
658
+ msgstr ""
659
+
660
+ #: includes/class-yit-plugin-panel.php:488
661
+ msgctxt "Help tab name"
662
+ msgid "Help"
663
+ msgstr ""
664
+
665
+ #: includes/class-yit-plugin-panel.php:797
666
+ #. translators: 1. Plugin name.
667
+ msgctxt "Help tab default title"
668
+ msgid "Thank you for purchasing %s!"
669
+ msgstr ""
670
+
671
+ #: includes/class-yit-plugin-panel.php:798
672
+ msgctxt "Help tab default description"
673
+ msgid "We want to help you to enjoy a wonderful experience with all our products."
674
+ msgstr ""
675
+
676
  #: includes/class-yith-dashboard.php:96
677
  msgctxt "Plugin FW"
678
  msgid "View Changelog"
769
  msgid "NO"
770
  msgstr ""
771
 
772
+ #: templates/panel/help-tab.php:87
773
+ #. translators: 1. Url to EN playlist.
774
+ msgctxt "Help tab view all video link"
775
+ msgid ""
776
+ "Check the full <a href=\"%s\" target=\"_blank\">Playlist on Youtube</a> to "
777
+ "learn more >"
778
+ msgstr ""
779
+
780
+ #: templates/panel/help-tab.php:94
781
+ msgctxt "Help tab Watch Videotutorials link"
782
+ msgid "Videos are also available in:"
783
+ msgstr ""
784
+
785
+ #: templates/panel/help-tab.php:137
786
+ msgctxt "Help tab Watch Videotutorials link"
787
+ msgid "Watch our videotutorials"
788
+ msgstr ""
789
+
790
+ #: templates/panel/help-tab.php:140
791
+ msgctxt "Help tab Watch Videotutorials link"
792
+ msgid "We show you some use cases"
793
+ msgstr ""
794
+
795
+ #: templates/panel/help-tab.php:124
796
+ msgctxt "Help tab Read Documentation link"
797
+ msgid "Read the documentation"
798
+ msgstr ""
799
+
800
+ #: templates/panel/help-tab.php:127
801
+ msgctxt "Help tab Read Documentation link"
802
+ msgid "to learn from basics how it works"
803
+ msgstr ""
804
+
805
+ #: templates/panel/help-tab.php:150
806
+ msgctxt "Help tab view FAQs link"
807
+ msgid "Check the FAQs"
808
+ msgstr ""
809
+
810
+ #: templates/panel/help-tab.php:153
811
+ msgctxt "Help tab view FAQs link"
812
+ msgid "to find answers to your doubts"
813
+ msgstr ""
814
+
815
+ #: templates/panel/help-tab.php:169
816
+ msgctxt "Help tab FAQ title"
817
+ msgid "Last FAQs in our Help Center"
818
+ msgstr ""
819
+
820
+ #: templates/panel/help-tab.php:183
821
+ msgctxt "Help tab FAQ link"
822
+ msgid "View all FAQs >"
823
+ msgstr ""
824
+
825
+ #: templates/panel/help-tab.php:192
826
+ msgctxt "Help tab submit ticket title"
827
+ msgid "Need help?"
828
+ msgstr ""
829
+
830
+ #: templates/panel/help-tab.php:195
831
+ msgctxt "Help tab submit ticket description"
832
+ msgid ""
833
+ "If you are experiencing some technical issue ask help to our developers. "
834
+ "Submit a ticket in our support desk and we will help you as soon as "
835
+ "possible."
836
+ msgstr ""
837
+
838
+ #: templates/panel/help-tab.php:203
839
+ msgctxt "Help tab submit ticket button"
840
+ msgid "Submit a ticket"
841
+ msgstr ""
842
+
843
+ #: yit-functions.php:1871
844
  msgctxt "Post action"
845
  msgid "Preview"
846
  msgstr ""
847
 
848
+ #: yit-functions.php:1880
849
  msgctxt "Post action"
850
  msgid "View"
851
  msgstr ""
852
 
853
+ #: yit-functions.php:1891
854
  msgctxt "Post action"
855
  msgid "Edit"
856
  msgstr ""
857
 
858
+ #: yit-functions.php:1899
859
  msgctxt "Post action"
860
  msgid "Duplicate"
861
  msgstr ""
862
 
863
+ #: yit-functions.php:1911
864
  msgctxt "Post action"
865
  msgid "Restore"
866
  msgstr ""
867
 
868
+ #: yit-functions.php:1919
869
  msgctxt "Post action"
870
  msgid "Trash"
871
  msgstr ""
872
 
873
+ #: yit-functions.php:1935
874
  msgctxt "Post action"
875
  msgid "Delete Permanently"
876
  msgstr ""
877
 
878
+ #: yit-functions.php:2031
 
 
 
 
 
 
 
 
 
 
879
  msgctxt "Term action"
880
  msgid "View"
881
  msgstr ""
882
 
883
+ #: yit-functions.php:2041
884
  msgctxt "Term action"
885
  msgid "Edit"
886
  msgstr ""
887
 
888
+ #: yit-functions.php:2049
889
  msgctxt "Term action"
890
  msgid "Duplicate"
891
  msgstr ""
892
 
893
+ #: yit-functions.php:2062
894
  msgctxt "Term action"
895
  msgid "Delete"
896
  msgstr ""
897
 
898
+ #: yit-plugin.php:85
899
  msgctxt "Plugin Row Meta"
900
  msgid "Live Demo"
901
  msgstr ""
902
 
903
+ #: yit-plugin.php:89
904
  msgctxt "Plugin Row Meta"
905
  msgid "Documentation"
906
  msgstr ""
907
 
908
+ #: yit-plugin.php:93
909
  msgctxt "Plugin Row Meta"
910
  msgid "Support"
911
  msgstr ""
912
 
913
+ #: yit-plugin.php:97
914
  msgctxt "Plugin Row Meta"
915
  msgid "Premium version"
916
  msgstr ""
917
 
918
+ #: yit-plugin.php:200
919
  msgctxt "Action links"
920
  msgid "Settings"
921
  msgstr ""
plugin-fw/templates/fields/ajax-pages.php ADDED
@@ -0,0 +1,96 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /**
3
+ * Template for displaying the ajax-pages field
4
+ * Note: the stored value is an array if WooCommerce >= 3.0; string otherwise
5
+ *
6
+ * @var array $field The field.
7
+ * @package YITH\PluginFramework\Templates\Fields
8
+ */
9
+
10
+ defined( 'ABSPATH' ) || exit; // Exit if accessed directly.
11
+
12
+ yith_plugin_fw_enqueue_enhanced_select();
13
+
14
+ $default_field = array(
15
+ 'id' => '',
16
+ 'name' => '',
17
+ 'class' => 'yith-page-search',
18
+ 'no_value' => false,
19
+ 'multiple' => false,
20
+ 'data' => array(),
21
+ 'style' => 'width:400px',
22
+ 'value' => '',
23
+ );
24
+
25
+ foreach ( $default_field as $field_key => $field_value ) {
26
+ if ( empty( $field[ $field_key ] ) ) {
27
+ $field[ $field_key ] = $field_value;
28
+ }
29
+ }
30
+ unset( $field_key );
31
+ unset( $field_value );
32
+
33
+ list ( $field_id, $class, $no_value, $multiple, $data, $name, $style, $value ) = yith_plugin_fw_extract( $field, 'id', 'class', 'no_value', 'multiple', 'data', 'name', 'style', 'value' );
34
+
35
+ if ( $no_value ) {
36
+ $value = array();
37
+ }
38
+
39
+ $default_data = array(
40
+ 'action' => 'woocommerce_json_search_pages',
41
+ 'placeholder' => __( 'Search Pages', 'yith-plugin-fw' ),
42
+ 'allow_clear' => false,
43
+ );
44
+ $data = wp_parse_args( $data, $default_data );
45
+ $show_id = isset( $data['show_id'] ) && $data['show_id'];
46
+
47
+ // Separate select2 needed data and other data.
48
+ $select2_custom_attributes = array();
49
+ $select2_data = array();
50
+ $select2_data_keys = array( 'placeholder', 'allow_clear', 'action' );
51
+ foreach ( $data as $d_key => $d_value ) {
52
+ if ( in_array( $d_key, $select2_data_keys, true ) ) {
53
+ $select2_data[ $d_key ] = $d_value;
54
+ } else {
55
+ $select2_custom_attributes[ 'data-' . $d_key ] = $d_value;
56
+ }
57
+ }
58
+
59
+ // Populate data-selected by value.
60
+ $data_selected = array();
61
+ if ( ! empty( $value ) ) {
62
+ if ( $multiple ) {
63
+ $value = is_array( $value ) ? $value : explode( ',', $value );
64
+ foreach ( $value as $page_id ) {
65
+ $data_selected[ $page_id ] = get_the_title( $page_id );
66
+ }
67
+ } else {
68
+ $page_id = absint( $value );
69
+ $data_selected[ $page_id ] = get_the_title( $page_id );
70
+ }
71
+ }
72
+
73
+ // Parse $value to string to prevent issue with wc2.6.
74
+ $value = is_array( $value ) ? implode( ',', $value ) : $value;
75
+ ?>
76
+ <div class="yith-plugin-fw-select2-wrapper">
77
+ <?php
78
+ if ( function_exists( 'yit_add_select2_fields' ) ) {
79
+ yit_add_select2_fields(
80
+ array(
81
+ 'id' => $field_id,
82
+ 'name' => $name,
83
+ 'class' => $class,
84
+ 'data-multiple' => $multiple,
85
+ 'data-placeholder' => $select2_data['placeholder'],
86
+ 'data-allow_clear' => $select2_data['allow_clear'],
87
+ 'data-action' => $select2_data['action'],
88
+ 'custom-attributes' => $select2_custom_attributes,
89
+ 'style' => $style,
90
+ 'value' => $value,
91
+ 'data-selected' => $data_selected,
92
+ )
93
+ );
94
+ }
95
+ ?>
96
+ </div>
plugin-fw/templates/fields/image-dimensions.php ADDED
@@ -0,0 +1,27 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /**
3
+ * Template for displaying the image-dimensions field
4
+ *
5
+ * @var array $field The field.
6
+ * @package YITH\PluginFramework\Templates\Fields
7
+ */
8
+
9
+ defined( 'ABSPATH' ) || exit; // Exit if accessed directly.
10
+
11
+ list ( $field_id, $class, $name, $value ) = yith_plugin_fw_extract( $field, 'id', 'class', 'name', 'value' );
12
+
13
+ $value = isset( $value ) && is_array( $value ) ? $value : array();
14
+
15
+ ?>
16
+ <div class="yith-plugin-fw-image-dimensions" id="<?php echo esc_attr( $field_id ); ?>">
17
+ <div class="yith-image-width">
18
+ <label for="<?php echo esc_attr( $name . '_width' ); ?>"><?php echo esc_html_x( 'Width', 'Image width field label', 'yith-plugin-fw' ); ?></label>
19
+ <input type="number" id="<?php echo esc_attr( $name . '_width' ); ?>" name="<?php echo esc_attr( $name . '[width]' ); ?>"
20
+ value="<?php echo isset( $value['width'] ) ? absint( $value['width'] ) : 0; ?>" step="1" min="0" />
21
+ </div>
22
+ <div class="yith-image-height">
23
+ <label for="<?php echo esc_attr( $name . '_height' ); ?>"><?php echo esc_html_x( 'Height', 'Image height field label', 'yith-plugin-fw' ); ?></label>
24
+ <input type="number" id="<?php echo esc_attr( $name . '_height' ); ?>" name="<?php echo esc_attr( $name . '[height]' ); ?>"
25
+ value="<?php echo isset( $value['height'] ) ? absint( $value['height'] ) : 0; ?>" step="1" min="0" />
26
+ </div>
27
+ </div>
plugin-fw/templates/fields/text-array.php CHANGED
@@ -8,28 +8,58 @@
8
 
9
  defined( 'ABSPATH' ) || exit; // Exit if accessed directly.
10
 
11
- list ( $field_id, $name, $value, $fields, $size ) = yith_plugin_fw_extract( $field, 'id', 'name', 'value', 'fields', 'size' );
 
 
 
 
12
 
13
  $value = isset( $value ) && is_array( $value ) ? $value : array();
14
- ?>
15
- <table class="yith-plugin-fw-text-array-table">
16
- <?php foreach ( $fields as $field_name => $field_label ) : ?>
17
- <?php
18
- $current_name = "{$name}[{$field_name}]";
19
- $current_id = "{$field_id}_{$field_name}";
20
- $current_value = isset( $value[ $field_name ] ) ? $value[ $field_name ] : '';
21
- ?>
22
- <tr>
23
- <td><?php echo esc_html( $field_label ); ?></td>
24
- <td>
25
- <input type="text" id="<?php echo esc_attr( $current_id ); ?>"
26
- name="<?php echo esc_attr( $current_name ); ?>"
27
- value="<?php echo esc_attr( $current_value ); ?>"
28
- <?php if ( isset( $size ) ) : ?>
29
- style="width: <?php echo absint( $size ); ?>px"
30
- <?php endif; ?>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
31
  />
32
- </td>
33
- </tr>
34
- <?php endforeach ?>
35
- </table>
 
8
 
9
  defined( 'ABSPATH' ) || exit; // Exit if accessed directly.
10
 
11
+ list ( $field_id, $name, $value, $fields, $size, $inline ) = yith_plugin_fw_extract( $field, 'id', 'name', 'value', 'fields', 'size', 'inline' );
12
+
13
+ if ( empty( $fields ) ) {
14
+ return;
15
+ }
16
 
17
  $value = isset( $value ) && is_array( $value ) ? $value : array();
18
+
19
+ // Let's build the text array!
20
+ $text_array = array();
21
+ foreach ( $fields as $field_name => $single_field ) {
22
+ $text_array[ $field_name ]['label'] = $single_field;
23
+ $text_array[ $field_name ]['name'] = "{$name}[{$field_name}]";
24
+ $text_array[ $field_name ]['id'] = "{$field_id}_{$field_name}";
25
+ $text_array[ $field_name ]['value'] = isset( $value[ $field_name ] ) ? $value[ $field_name ] : '';
26
+ }
27
+
28
+ if ( empty( $inline ) ) : ?>
29
+
30
+ <table class="yith-plugin-fw-text-array-table">
31
+ <?php foreach ( $text_array as $id => $single ) : ?>
32
+ <tr>
33
+ <td><?php echo esc_html( $single['label'] ); ?></td>
34
+ <td>
35
+ <input type="text" id="<?php echo esc_attr( $single['id'] ); ?>"
36
+ name="<?php echo esc_attr( $single['name'] ); ?>"
37
+ value="<?php echo esc_attr( $single['value'] ); ?>"
38
+ <?php if ( isset( $size ) ) : ?>
39
+ style="width: <?php echo absint( $size ); ?>px"
40
+ <?php endif; ?>
41
+ />
42
+ </td>
43
+ </tr>
44
+ <?php endforeach ?>
45
+ </table>
46
+
47
+ <?php else : ?>
48
+
49
+ <div class="yith-plugin-fw-text-array-inline">
50
+ <?php foreach ( $text_array as $id => $single ) : ?>
51
+ <div class="yith-single-text"
52
+ <?php if ( isset( $size ) ) : ?>
53
+ style="width: <?php echo absint( $size ); ?>px"
54
+ <?php endif; ?>
55
+ >
56
+ <label for="<?php echo esc_attr( $single['id'] ); ?>"><?php echo esc_html( $single['label'] ); ?></label>
57
+ <input type="text" id="<?php echo esc_attr( $single['id'] ); ?>"
58
+ name="<?php echo esc_attr( $single['name'] ); ?>"
59
+ value="<?php echo esc_attr( $single['value'] ); ?>"
60
  />
61
+ </div>
62
+ <?php endforeach ?>
63
+ </div>
64
+
65
+ <?php endif;
plugin-fw/templates/panel/help-tab.php ADDED
@@ -0,0 +1,211 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /**
3
+ * The Template for displaying the Help tab.
4
+ *
5
+ * @var array $options Array of options.
6
+ * @var string $current_tab The current tab.
7
+ * @var string $current_sub_tab The current sub-tab.
8
+ * @var array $latest_articles Latest HC articles.
9
+ *
10
+ * @package YITH\PluginFramework\Templates
11
+ */
12
+
13
+ defined( 'ABSPATH' ) || exit; // Exit if accessed directly.
14
+
15
+ $current_locale = substr( get_user_locale(), 0, 2 );
16
+ $the_title = $options['title'];
17
+ $the_description = $options['description'];
18
+ $show_articles = $options['show_hc_articles'] && ! empty( $latest_articles );
19
+ $show_submit_ticket = $options['show_submit_ticket'] && $options['submit_ticket_url'];
20
+ $has_video = $options['main_video'] && ! empty( $options['main_video']['url'] );
21
+ $show_view_all_faq = ! ! $options['hc_url'];
22
+ $has_any_playlist = ! ! $options['playlists'];
23
+ $has_additional_links = $has_any_playlist || ! ! $options['doc_url'] || $show_view_all_faq;
24
+ $has_default_playlist = $options['playlists'] && ! empty( $options['playlists'] );
25
+
26
+ // search for correct video url.
27
+ $video_url = false;
28
+
29
+ if ( $has_video ) {
30
+ if ( is_array( $options['main_video']['url'] ) ) {
31
+ if ( ! empty( $options['main_video']['url'][ $current_locale ] ) ) {
32
+ $video_url = $options['main_video']['url'][ $current_locale ];
33
+ } elseif ( ! empty( $options['main_video']['url']['en'] ) ) {
34
+ $video_url = $options['main_video']['url']['en'];
35
+ }
36
+ } else {
37
+ $video_url = $options['main_video']['url'];
38
+ }
39
+ }
40
+
41
+ // search for correct playlist.
42
+ $default_playlist = false;
43
+
44
+ if ( $has_default_playlist ) {
45
+ if ( is_array( $options['playlists'] ) ) {
46
+ if ( ! empty( $options['playlists'][ $current_locale ] ) ) {
47
+ $default_playlist = $options['playlists'][ $current_locale ];
48
+ } elseif ( ! empty( $options['playlists']['en'] ) ) {
49
+ $default_playlist = $options['playlists']['en'];
50
+ }
51
+ } else {
52
+ $default_playlist = $options['playlists'];
53
+ }
54
+ }
55
+ ?>
56
+
57
+ <div id='yith_plugin_fw_panel_help_tab' class='yith-plugin-fw-panel-help-tab-container'>
58
+ <div class="yith-plugin-fw-panel-help-tab-content">
59
+ <?php if ( $the_title ) : ?>
60
+ <h2 class="yith-plugin-fw-panel-help-tab-title"><?php echo wp_kses_post( $the_title ); ?></h2>
61
+ <?php endif; ?>
62
+
63
+ <?php if ( $the_description ) : ?>
64
+ <p class="yith-plugin-fw-panel-tab-description">
65
+ <?php echo wp_kses_post( $the_description ); ?>
66
+ </p>
67
+ <?php endif; ?>
68
+
69
+ <?php if ( $has_video || $has_additional_links ) : ?>
70
+ <div class="row">
71
+ <?php if ( $video_url ) : ?>
72
+ <div class="yith-plugin-fw-help-tab-video <?php echo $has_additional_links ? 'column-left' : 'full-width'; ?>">
73
+ <?php if ( isset( $options['main_video']['desc'] ) ) : ?>
74
+ <p class="video-description"><?php echo wp_kses_post( $options['main_video']['desc'] ); ?></p>
75
+ <?php endif; ?>
76
+
77
+ <div class="video-container">
78
+ <iframe src="<?php echo esc_url( $video_url ); ?>"></iframe>
79
+ </div>
80
+
81
+ <?php if ( $has_any_playlist ) : ?>
82
+ <div class="video-caption">
83
+ <?php if ( $default_playlist ) : ?>
84
+ <p>
85
+ <?php
86
+ // translators: 1. Url to EN playlist.
87
+ echo wp_kses_post( sprintf( _x( 'Check the full <a href="%s" target="_blank">Playlist on Youtube</a> to learn more >', 'Help tab view all video link', 'yit-plugin-fw' ), $default_playlist ) );
88
+ ?>
89
+ </p>
90
+ <?php endif; ?>
91
+
92
+ <p>
93
+ <b>
94
+ <?php echo esc_html_x( 'Videos are also available in:', 'Help tab Watch Videotutorials link', 'yit-plugin-fw' ); ?>
95
+ </b>
96
+ <?php $first = true; ?>
97
+ <?php foreach ( $options['playlists'] as $lang => $url ) : ?>
98
+ <?php
99
+ if ( $url === $default_playlist ) {
100
+ continue;
101
+ }
102
+ ?>
103
+ <?php if ( ! $first ) : ?>
104
+ <span class="separator">|</span>
105
+ <?php endif; ?>
106
+
107
+ <a target="_blank" href="<?php echo esc_url( $url ); ?>"><?php echo esc_html( yit_get_language_from_locale( $lang, true ) ); ?></a>
108
+
109
+ <?php $first = false; ?>
110
+ <?php endforeach; ?>
111
+ </p>
112
+ </div>
113
+ <?php endif; ?>
114
+ </div>
115
+ <?php endif; ?>
116
+
117
+ <?php if ( $has_additional_links ) : ?>
118
+ <ul class="yith-plugin-fw-help-tab-actions <?php echo $video_url ? 'column-right' : 'full-width'; ?>">
119
+
120
+ <?php if ( $options['doc_url'] ) : ?>
121
+ <li class="read-documentation box-with-shadow">
122
+ <a target="_blank" href="<?php echo esc_url( $options['doc_url'] ); ?>">
123
+ <h4>
124
+ <?php echo esc_html_x( 'Read the documentation', 'Help tab Read Documentation link', 'yit-plugin-fw' ); ?>
125
+ </h4>
126
+ <p class="description">
127
+ <?php echo esc_html_x( 'to learn from basics how it works', 'Help tab Read Documentation link', 'yit-plugin-fw' ); ?>
128
+ </p>
129
+ </a>
130
+ </li>
131
+ <?php endif; ?>
132
+
133
+ <?php if ( $default_playlist ) : ?>
134
+ <li class="watch-videotutorials box-with-shadow">
135
+ <a target="_blank" href="<?php echo esc_url( $default_playlist ); ?>">
136
+ <h4>
137
+ <?php echo esc_html_x( 'Watch our videotutorials', 'Help tab Watch Videotutorials link', 'yit-plugin-fw' ); ?>
138
+ </h4>
139
+ <p class="description">
140
+ <?php echo esc_html_x( 'We show you some use cases', 'Help tab Watch Videotutorials link', 'yit-plugin-fw' ); ?>
141
+ </p>
142
+ </a>
143
+ </li>
144
+ <?php endif; ?>
145
+
146
+ <?php if ( $show_view_all_faq ) : ?>
147
+ <li class="check-faqs box-with-shadow">
148
+ <a target="_blank" href="<?php echo esc_url( $options['hc_url'] ); ?>">
149
+ <h4>
150
+ <?php echo esc_html_x( 'Check the FAQs', 'Help tab view FAQs link', 'yit-plugin-fw' ); ?>
151
+ </h4>
152
+ <p class="description">
153
+ <?php echo esc_html_x( 'to find answers to your doubts', 'Help tab view FAQs link', 'yit-plugin-fw' ); ?>
154
+ </p>
155
+ </a>
156
+ </li>
157
+ <?php endif; ?>
158
+
159
+ </ul>
160
+ <?php endif; ?>
161
+ </div>
162
+ <?php endif; ?>
163
+
164
+
165
+ <?php if ( $show_articles || $show_submit_ticket ) : ?>
166
+ <div class="row">
167
+ <?php if ( $show_articles ) : ?>
168
+ <div class="yith-plugin-fw-hc-articles <?php echo $show_submit_ticket ? 'column-left' : 'full-width'; ?>">
169
+ <h3 class="yith-plugin-fw-hc-articles-title"><?php echo esc_html_x( 'Last FAQs in our Help Center', 'Help tab FAQ title', 'yit-plugin-fw' ); ?></h3>
170
+
171
+ <ul class="yith-plugin-fw-hc-articles-list">
172
+ <?php foreach ( $latest_articles as $article ) : ?>
173
+ <li>
174
+ <a target="_blank" href="<?php echo esc_url( $article['url'] ); ?>">
175
+ <?php echo esc_html( $article['title'] ); ?>
176
+ </a>
177
+ </li>
178
+ <?php endforeach; ?>
179
+ </ul>
180
+
181
+ <?php if ( $show_view_all_faq ) : ?>
182
+ <a target="_blank" class="button button-secondary" href="<?php echo esc_url( $options['hc_url'] ); ?>">
183
+ <?php echo esc_html_x( 'View all FAQs >', 'Help tab FAQ link', 'yit-plugin-fw' ); ?>
184
+ </a>
185
+ <?php endif; ?>
186
+ </div>
187
+ <?php endif; ?>
188
+
189
+ <?php if ( $show_submit_ticket ) : ?>
190
+ <div class="yith-plugin-fw-submit-ticket <?php echo $show_articles ? 'column-right' : 'full-width'; ?>">
191
+ <div class="box-with-shadow">
192
+ <h3><?php echo esc_html_x( 'Need help?', 'Help tab submit ticket title', 'yit-plugin-fw' ); ?></h3>
193
+ <p>
194
+ <?php
195
+ echo esc_html_x(
196
+ 'If you are experiencing some technical issue ask help to our developers. Submit a ticket in our support desk and we will help you as soon as possible.',
197
+ 'Help tab submit ticket description',
198
+ 'yit-plugin-fw'
199
+ );
200
+ ?>
201
+ </p>
202
+ <a target="_blank" href="<?php echo esc_url( $options['submit_ticket_url'] ); ?>" class="yit-plugin-fw-submit-ticket-button button button-primary">
203
+ <?php echo esc_html_x( 'Submit a ticket', 'Help tab submit ticket button', 'yit-plugin-fw' ); ?>
204
+ </a>
205
+ </div>
206
+ </div>
207
+ <?php endif; ?>
208
+ <?php endif; ?>
209
+ </div>
210
+ </div>
211
+ </div>
plugin-fw/templates/panel/woocommerce/woocommerce-form.php CHANGED
@@ -29,7 +29,7 @@ $reset_warning = __( 'If you continue with this action, you will reset all optio
29
  </p>
30
 
31
  <?php if ( apply_filters( 'yit_framework_show_float_save_button', true ) ) : ?>
32
- <button id="yith-plugin-fw-float-save-button" class="button-primary" data-default-label="<?php esc_attr_e( 'Save Options', 'yith-plugin-fw' ); ?>" data-saved-label="<?php esc_attr_e( 'Options Saved', 'yith-plugin-fw' ); ?>"><i class="yith-icon yith-icon-save"></i> <?php esc_html_e( 'Save Options', 'yith-plugin-fw' ); ?></button>
33
  <?php endif; ?>
34
  </form>
35
  <form id="plugin-fw-wc-reset" method="post">
29
  </p>
30
 
31
  <?php if ( apply_filters( 'yit_framework_show_float_save_button', true ) ) : ?>
32
+ <button id="yith-plugin-fw-float-save-button" class="yith-plugin-fw__button--primary yith-plugin-fw-animate__appear-from-bottom" data-default-label="<?php esc_attr_e( 'Save Options', 'yith-plugin-fw' ); ?>" data-saved-label="<?php esc_attr_e( 'Options Saved', 'yith-plugin-fw' ); ?>"><i class="yith-icon yith-icon-save"></i> <?php esc_html_e( 'Save Options', 'yith-plugin-fw' ); ?></button>
33
  <?php endif; ?>
34
  </form>
35
  <form id="plugin-fw-wc-reset" method="post">
plugin-fw/yit-functions.php CHANGED
@@ -905,6 +905,76 @@ if ( ! function_exists( 'yit_wpml_object_id' ) ) {
905
  }
906
  }
907
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
908
  if ( ! function_exists( 'yith_get_formatted_price' ) ) {
909
  /**
910
  * Format the price with a currency symbol.
@@ -1822,7 +1892,7 @@ if ( ! function_exists( 'yith_plugin_fw_get_default_post_actions' ) ) {
1822
  // translators: %s is the title of the post object.
1823
  'confirm-trash-message' => sprintf( __( 'Are you sure you want to move "%s" to trash?', 'yith-plugin-fw' ), '<strong>' . $title . '</strong>' ),
1824
  // translators: %s is the title of the post object.
1825
- 'confirm-delete-message' => sprintf( __( 'Are you sure you want to delete "%s"?', 'yith-plugin-fw' ), '<strong>' . $title . '</strong>' ) . '<br /><br />' . __( 'This action cannot be undone and you will be not able to recover this data.', 'yith-plugin-fw' ),
1826
  );
1827
 
1828
  $args = wp_parse_args( $args, $defaults );
@@ -1890,7 +1960,7 @@ if ( ! function_exists( 'yith_plugin_fw_get_default_post_actions' ) ) {
1890
  $actions['trash']['confirm_data'] = array(
1891
  'title' => __( 'Confirm trash', 'yith-plugin-fw' ),
1892
  'message' => $args['confirm-trash-message'],
1893
- 'confirm-button' => _x( 'Yes, trash', 'Trash confirmation action', 'yith-plugin-fw' ),
1894
  'confirm-button-type' => 'delete',
1895
  );
1896
  }
@@ -1907,7 +1977,7 @@ if ( ! function_exists( 'yith_plugin_fw_get_default_post_actions' ) ) {
1907
  $actions['delete']['confirm_data'] = array(
1908
  'title' => __( 'Confirm delete', 'yith-plugin-fw' ),
1909
  'message' => $args['confirm-delete-message'],
1910
- 'confirm-button' => _x( 'Yes, delete', 'Delete confirmation action', 'yith-plugin-fw' ),
1911
  'confirm-button-type' => 'delete',
1912
  );
1913
  }
@@ -1980,7 +2050,7 @@ if ( ! function_exists( 'yith_plugin_fw_get_default_term_actions' ) ) {
1980
  'more-menu' => array(),
1981
  'duplicate-url' => false,
1982
  // translators: %s is the title of the post object.
1983
- 'confirm-delete-message' => sprintf( __( 'Are you sure you want to delete "%s"?', 'yith-plugin-fw' ), '<strong>' . $title . '</strong>' ) . '<br /><br />' . __( 'This action cannot be undone and you will be not able to recover this data.', 'yith-plugin-fw' ),
1984
  );
1985
 
1986
  $args = wp_parse_args( $args, $defaults );
905
  }
906
  }
907
 
908
+ if ( ! function_exists( 'yit_get_language_from_locale' ) ) {
909
+ /**
910
+ * Returns language name from locale code
911
+ *
912
+ * @param string $locale Locale to search for.
913
+ * @param bool $show_native Whether to return native language instead of english one.
914
+ * @return string Language name for passed locale; if can't find any, local itself is returned.
915
+ * @since 3.7.1
916
+ * @author Antonio La Rocca <antonio.larocca@yithemes.com>
917
+ */
918
+ function yit_get_language_from_locale( $locale, $show_native = false ) {
919
+ require_once ABSPATH . 'wp-admin/includes/translation-install.php';
920
+ $translations = wp_get_available_translations();
921
+
922
+ if ( in_array( $locale, array( 'en', 'en_US' ), true ) ) {
923
+ /**
924
+ * English (United States) is not included in translations array
925
+ * We return fixed, non-localized string, as WordPress does
926
+ *
927
+ * @see {wp_dropdown_languages}
928
+ */
929
+ return 'English';
930
+ }
931
+
932
+ if ( empty( $translations ) ) {
933
+ return $locale;
934
+ }
935
+
936
+ // perfect match.
937
+ $translation = isset( $translations[ $locale ] ) ? $translations[ $locale ] : false;
938
+
939
+ // check for no-dialect.
940
+ if ( 2 === strlen( $locale ) ) {
941
+
942
+ // first check for common occurrences.
943
+ if ( 'it' === $locale && isset( $translations['it_IT'] ) ) {
944
+ $translation = $translations['it_IT'];
945
+ } elseif ( 'es' === $locale && isset( $translations['es_ES'] ) ) {
946
+ $translation = $translations['es_ES'];
947
+ } elseif ( 'de' === $locale && isset( $translations['de_DE'] ) ) {
948
+ $translation = $translations['de_DE'];
949
+ } else {
950
+ foreach ( $translations as $translation_locale => $translation_details ) {
951
+ $no_dialect_locale = isset( $translation_details['iso'][1] ) ? $translation_details['iso'][1] : substr( $translation_locale, 0, 2 );
952
+
953
+ if ( $locale !== $no_dialect_locale ) {
954
+ continue;
955
+ }
956
+
957
+ $translation = $translation_details;
958
+
959
+ // remove dialect from names.
960
+ $translation['english_name'] = preg_replace( '/(.+) \(.*\)/', '$1', $translation['english_name'] );
961
+
962
+ // we found what we were looking for; break.
963
+ break;
964
+ }
965
+ }
966
+ }
967
+
968
+ if ( ! $translation ) {
969
+ return $locale;
970
+ }
971
+
972
+ $language_name = $show_native ? $translation['native_name'] : $translation['english_name'];
973
+
974
+ return $language_name;
975
+ }
976
+ }
977
+
978
  if ( ! function_exists( 'yith_get_formatted_price' ) ) {
979
  /**
980
  * Format the price with a currency symbol.
1892
  // translators: %s is the title of the post object.
1893
  'confirm-trash-message' => sprintf( __( 'Are you sure you want to move "%s" to trash?', 'yith-plugin-fw' ), '<strong>' . $title . '</strong>' ),
1894
  // translators: %s is the title of the post object.
1895
+ 'confirm-delete-message' => sprintf( __( 'Are you sure you want to delete "%s"?', 'yith-plugin-fw' ), '<strong>' . $title . '</strong>' ) . '<br /><br />' . __( 'This action cannot be undone and you will not be able to recover this data.', 'yith-plugin-fw' ),
1896
  );
1897
 
1898
  $args = wp_parse_args( $args, $defaults );
1960
  $actions['trash']['confirm_data'] = array(
1961
  'title' => __( 'Confirm trash', 'yith-plugin-fw' ),
1962
  'message' => $args['confirm-trash-message'],
1963
+ 'confirm-button' => _x( 'Yes, move to trash', 'Trash confirmation action', 'yith-plugin-fw' ),
1964
  'confirm-button-type' => 'delete',
1965
  );
1966
  }
1977
  $actions['delete']['confirm_data'] = array(
1978
  'title' => __( 'Confirm delete', 'yith-plugin-fw' ),
1979
  'message' => $args['confirm-delete-message'],
1980
+ 'confirm-button' => _x( 'Yes, delete permanently', 'Delete confirmation action', 'yith-plugin-fw' ),
1981
  'confirm-button-type' => 'delete',
1982
  );
1983
  }
2050
  'more-menu' => array(),
2051
  'duplicate-url' => false,
2052
  // translators: %s is the title of the post object.
2053
+ 'confirm-delete-message' => sprintf( __( 'Are you sure you want to delete "%s"?', 'yith-plugin-fw' ), '<strong>' . $title . '</strong>' ) . '<br /><br />' . __( 'This action cannot be undone and you will not be able to recover this data.', 'yith-plugin-fw' ),
2054
  );
2055
 
2056
  $args = wp_parse_args( $args, $defaults );
plugin-fw/yit-plugin.php CHANGED
@@ -25,6 +25,7 @@ require_once 'includes/class-yit-plugin-common.php';
25
  require_once 'includes/class-yit-gradients.php';
26
  require_once 'includes/class-yit-plugin-licence.php';
27
  require_once 'includes/class-yit-theme-licence.php';
 
28
  require_once 'includes/class-yit-video.php';
29
  require_once 'includes/class-yit-upgrade.php';
30
  require_once 'includes/class-yit-pointers.php';
25
  require_once 'includes/class-yit-gradients.php';
26
  require_once 'includes/class-yit-plugin-licence.php';
27
  require_once 'includes/class-yit-theme-licence.php';
28
+ require_once 'includes/class-yit-help-desk.php';
29
  require_once 'includes/class-yit-video.php';
30
  require_once 'includes/class-yit-upgrade.php';
31
  require_once 'includes/class-yit-pointers.php';
plugin-options/filter-options.php CHANGED
@@ -9,12 +9,16 @@
9
 
10
  $supported_taxonomies = YITH_WCAN_Query()->get_supported_taxonomies();
11
  $taxonomy_options = array();
12
- $term_counts = array();
13
 
14
  if ( ! empty( $supported_taxonomies ) ) {
15
  foreach ( $supported_taxonomies as $taxonomy_slug => $taxonomy_obj ) {
16
  $taxonomy_options[ $taxonomy_slug ] = $taxonomy_obj->label;
17
- $term_counts[ $taxonomy_slug ] = wp_count_terms( $taxonomy_slug );
 
 
 
 
18
  }
19
  }
20
 
@@ -27,7 +31,7 @@ return apply_filters(
27
  'title' => array(
28
  'label' => _x( 'Filter name', '[Admin] Filter edit form', 'yith-woocommerce-ajax-navigation' ),
29
  'type' => 'text',
30
- 'class' => 'heading-field',
31
  'desc' => _x( 'Enter a name to identify this filter', '[Admin] Filter edit form', 'yith-woocommerce-ajax-navigation' ),
32
  ),
33
  ),
@@ -36,7 +40,7 @@ return apply_filters(
36
  'type' => array(
37
  'label' => _x( 'Filter for', '[Admin] Filter edit form', 'yith-woocommerce-ajax-navigation' ),
38
  'type' => 'select',
39
- 'class' => 'wc-enhanced-select',
40
  'options' => YITH_WCAN_Filter_Factory::get_supported_types(),
41
  'desc' => _x( 'Select the parameters you wish to filter for', '[Admin] Filter edit form', 'yith-woocommerce-ajax-navigation' ),
42
  ),
@@ -49,10 +53,21 @@ return apply_filters(
49
  'class' => 'wc-enhanced-select taxonomy',
50
  'options' => $taxonomy_options,
51
  'desc' => _x( 'Select which taxonomy to use for this filter', '[Admin] Filter edit form', 'yith-woocommerce-ajax-navigation' ),
52
- 'custom_attributes' => 'data-counts="' . wc_esc_json( wp_json_encode( $term_counts ) ) . '"',
53
  ),
54
 
55
- 'terms' => array(
 
 
 
 
 
 
 
 
 
 
 
56
  'label' => _x( 'Choose terms', '[Admin] Filter edit form', 'yith-woocommerce-ajax-navigation' ),
57
  'type' => 'select-buttons',
58
  'multiple' => true,
@@ -64,20 +79,22 @@ return apply_filters(
64
  'filter_design' => array(
65
  'label' => _x( 'Filter type', '[Admin] Filter edit form', 'yith-woocommerce-ajax-navigation' ),
66
  'type' => 'select',
67
- 'class' => 'wc-enhanced-select',
68
- 'options' => apply_filters(
69
- 'yith_wcan_supported_filter_designs',
70
- array(
71
- 'checkbox' => _x( 'Checkbox', '[Admin] Filter edit form', 'yith-woocommerce-ajax-navigation' ),
72
- 'select' => _x( 'Select', '[Admin] Filter edit form', 'yith-woocommerce-ajax-navigation' ),
73
- 'text' => _x( 'Text', '[Admin] Filter edit form', 'yith-woocommerce-ajax-navigation' ),
74
- 'color' => _x( 'Color Swatches', '[Admin] Filter edit form', 'yith-woocommerce-ajax-navigation' ),
75
- 'label' => _x( 'Label', '[Admin] Filter edit form', 'yith-woocommerce-ajax-navigation' ),
76
- )
77
- ),
78
  'desc' => _x( 'Select the filter type for this filter', '[Admin] Filter edit form', 'yith-woocommerce-ajax-navigation' ),
79
  ),
80
 
 
 
 
 
 
 
 
 
 
 
 
81
  'column_number' => array(
82
  'label' => _x( 'Columns number', '[Admin] Filter edit form', 'yith-woocommerce-ajax-navigation' ),
83
  'type' => 'number',
@@ -87,8 +104,21 @@ return apply_filters(
87
  'desc' => _x( 'Set the number of items per row you want to show for this design', '[Admin] Filter edit form', 'yith-woocommerce-ajax-navigation' ),
88
  ),
89
 
90
- 'terms_options' => array(
91
  'label' => _x( 'Customize terms', '[Admin] Filter edit form', 'yith-woocommerce-ajax-navigation' ),
 
 
 
 
 
 
 
 
 
 
 
 
 
92
  'type' => 'custom',
93
  'action' => 'yith_wcan_terms_options',
94
  ),
9
 
10
  $supported_taxonomies = YITH_WCAN_Query()->get_supported_taxonomies();
11
  $taxonomy_options = array();
12
+ $taxonomy_details = array();
13
 
14
  if ( ! empty( $supported_taxonomies ) ) {
15
  foreach ( $supported_taxonomies as $taxonomy_slug => $taxonomy_obj ) {
16
  $taxonomy_options[ $taxonomy_slug ] = $taxonomy_obj->label;
17
+ $taxonomy_details[ $taxonomy_slug ] = array(
18
+ 'terms_count' => wp_count_terms( $taxonomy_slug ),
19
+ 'is_attribute' => 0 === strpos( $taxonomy_slug, 'pa_' ),
20
+ 'supports_images' => apply_filters( 'yith_wcan_taxonomy_supports_images', 'product_cat' === $taxonomy_slug, $taxonomy_slug ),
21
+ );
22
  }
23
  }
24
 
31
  'title' => array(
32
  'label' => _x( 'Filter name', '[Admin] Filter edit form', 'yith-woocommerce-ajax-navigation' ),
33
  'type' => 'text',
34
+ 'class' => 'filter-title heading-field',
35
  'desc' => _x( 'Enter a name to identify this filter', '[Admin] Filter edit form', 'yith-woocommerce-ajax-navigation' ),
36
  ),
37
  ),
40
  'type' => array(
41
  'label' => _x( 'Filter for', '[Admin] Filter edit form', 'yith-woocommerce-ajax-navigation' ),
42
  'type' => 'select',
43
+ 'class' => 'wc-enhanced-select filter-type',
44
  'options' => YITH_WCAN_Filter_Factory::get_supported_types(),
45
  'desc' => _x( 'Select the parameters you wish to filter for', '[Admin] Filter edit form', 'yith-woocommerce-ajax-navigation' ),
46
  ),
53
  'class' => 'wc-enhanced-select taxonomy',
54
  'options' => $taxonomy_options,
55
  'desc' => _x( 'Select which taxonomy to use for this filter', '[Admin] Filter edit form', 'yith-woocommerce-ajax-navigation' ),
56
+ 'custom_attributes' => 'data-taxonomies="' . wc_esc_json( wp_json_encode( $taxonomy_details ) ) . '"',
57
  ),
58
 
59
+ 'use_all_terms' => array(
60
+ 'label' => _x( 'Auto-populate with all terms', '[Admin] Filter edit form', 'yith-woocommerce-ajax-navigation' ),
61
+ 'type' => 'onoff',
62
+ 'desc' => _x(
63
+ 'Populate this filter with all existing terms of the selected taxonomy.
64
+ <span class="future-terms-notice"><b>Notice:</b> if you enable this option, all terms created in the future will be added to this filter as well.</span>',
65
+ '[Admin] Filter edit form',
66
+ 'yith-woocommerce-ajax-navigation'
67
+ ),
68
+ ),
69
+
70
+ 'term_ids' => array(
71
  'label' => _x( 'Choose terms', '[Admin] Filter edit form', 'yith-woocommerce-ajax-navigation' ),
72
  'type' => 'select-buttons',
73
  'multiple' => true,
79
  'filter_design' => array(
80
  'label' => _x( 'Filter type', '[Admin] Filter edit form', 'yith-woocommerce-ajax-navigation' ),
81
  'type' => 'select',
82
+ 'class' => 'wc-enhanced-select filter-design',
83
+ 'options' => YITH_WCAN_Filter_Factory::get_supported_designs(),
 
 
 
 
 
 
 
 
 
84
  'desc' => _x( 'Select the filter type for this filter', '[Admin] Filter edit form', 'yith-woocommerce-ajax-navigation' ),
85
  ),
86
 
87
+ 'label_position' => array(
88
+ 'label' => _x( 'Labels', '[Admin] Filter edit form', 'yith-woocommerce-ajax-navigation' ),
89
+ 'type' => 'radio',
90
+ 'options' => array(
91
+ 'below' => _x( 'Show below', '[Admin] Filter edit form', 'yith-woocommerce-ajax-navigation' ),
92
+ 'right' => _x( 'Show on the right', '[Admin] Filter edit form', 'yith-woocommerce-ajax-navigation' ),
93
+ 'hide' => _x( 'Hide', '[Admin] Filter edit form', 'yith-woocommerce-ajax-navigation' ),
94
+ ),
95
+ 'desc' => _x( 'Choose if and where to show the label inside your filter', '[Admin] Filter edit form', 'yith-woocommerce-ajax-navigation' ),
96
+ ),
97
+
98
  'column_number' => array(
99
  'label' => _x( 'Columns number', '[Admin] Filter edit form', 'yith-woocommerce-ajax-navigation' ),
100
  'type' => 'number',
104
  'desc' => _x( 'Set the number of items per row you want to show for this design', '[Admin] Filter edit form', 'yith-woocommerce-ajax-navigation' ),
105
  ),
106
 
107
+ 'customize_terms' => array(
108
  'label' => _x( 'Customize terms', '[Admin] Filter edit form', 'yith-woocommerce-ajax-navigation' ),
109
+ 'class' => 'customize-terms',
110
+ 'type' => 'onoff',
111
+ 'desc' => _x(
112
+ 'Configure your terms individually; system will otherwise use default labels/images for terms.
113
+ <span class="wccl-notice"><b>Notice:</b> optionally, you can configure labels/images/colors for your attributes using YITH WooCommerce Color and Label Variations options, in the term\'s edit page. Otherwise, just enable this option and use boxes below.</span>
114
+ <span class="images-notice"><b>Notice:</b> optionally, you can configure the images in ‘edit page’ for the terms. Otherwise, just enable this option and use the boxes below</span>',
115
+ '[Admin] Filter edit form',
116
+ 'yith-woocommerce-ajax-navigation'
117
+ ),
118
+ ),
119
+
120
+ 'terms_options' => array(
121
+ 'label' => _x( 'Terms options', '[Admin] Filter edit form', 'yith-woocommerce-ajax-navigation' ),
122
  'type' => 'custom',
123
  'action' => 'yith_wcan_terms_options',
124
  ),
plugin-options/preset-options.php ADDED
@@ -0,0 +1,19 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /**
3
+ * Preset options
4
+ *
5
+ * @author YITH
6
+ * @package YITH WooCommerce Ajax Product Filter
7
+ * @version 4.0.0
8
+ */
9
+
10
+ return apply_filters(
11
+ 'yith_wcan_panel_preset_options',
12
+ array(
13
+ 'preset_title' => array(
14
+ 'label' => _x( 'Preset name', '[Admin] Label in new preset page', 'yith-woocommerce-ajax-navigation' ),
15
+ 'type' => 'text',
16
+ 'desc' => _x( 'Enter a name to identify this filter preset', '[Admin] Label in new preset page', 'yith-woocommerce-ajax-navigation' ),
17
+ ),
18
+ )
19
+ );
templates/admin/preset-edit.php CHANGED
@@ -18,16 +18,18 @@ if ( ! defined( 'YITH_WCAN' ) ) {
18
 
19
  <?php
20
  $preset_id = $preset ? $preset->get_id() : false;
 
21
  ?>
22
 
23
  <div id="yith_wcan_panel_filter-preset-edit" class="yith-plugin-fw yit-admin-panel-container">
24
  <div class="yit-admin-panel-content-wrap">
25
  <form id="plugin-fw-wc" method="post" action="admin.php?action=yith_wcan_save_preset">
26
  <span class="view-all-presets">
27
- <a href="<?php echo $this->get_panel_url( 'filter-preset' ); ?>">
28
  <?php echo esc_html_x( '< back to preset list', '[Admin] Back link in new preset page', 'yith-woocommerce-ajax-navigation' ); ?>
29
  </a>
30
  </span>
 
31
  <h2>
32
  <?php
33
  if ( $preset ) {
@@ -38,25 +40,45 @@ $preset_id = $preset ? $preset->get_id() : false;
38
  ?>
39
  </h2>
40
 
 
 
 
 
 
 
41
  <?php do_action( 'yith_wcan_preset_edit_before_title', $preset_id, $preset ); ?>
42
 
43
- <table class="form-table">
44
- <tbody>
45
- <tr valign="top" class="yith-plugin-fw-panel-wc-row text">
46
- <th scope="row" class="titledesc">
47
- <label for="preset_title"><?php echo esc_html_x( 'Preset name', '[Admin] Label in new preset page', 'yith-woocommerce-ajax-navigation' ); ?></label>
48
- </th>
49
- <td class="forminp forminp-text">
50
- <div class="yith-plugin-fw-field-wrapper yith-plugin-fw-text-field-wrapper">
51
- <input type="text" name="preset_title" id="preset_title" value="<?php echo $preset ? esc_attr( $preset->get_title() ) : ''; ?>"/>
52
- </div>
53
- <span class="description">
54
- <?php echo esc_html_x( 'Enter a name to identify this filter preset', '[Admin] Label in new preset page', 'yith-woocommerce-ajax-navigation' ); ?>
55
- </span>
56
- </td>
57
- </tr>
 
 
 
 
 
 
 
 
 
 
 
 
 
58
  </tbody>
59
  </table>
 
60
 
61
  <?php do_action( 'yith_wcan_preset_edit_before_filters', $preset_id, $preset ); ?>
62
 
18
 
19
  <?php
20
  $preset_id = $preset ? $preset->get_id() : false;
21
+ $fields = YITH_WCAN_Preset::get_fields();
22
  ?>
23
 
24
  <div id="yith_wcan_panel_filter-preset-edit" class="yith-plugin-fw yit-admin-panel-container">
25
  <div class="yit-admin-panel-content-wrap">
26
  <form id="plugin-fw-wc" method="post" action="admin.php?action=yith_wcan_save_preset">
27
  <span class="view-all-presets">
28
+ <a href="<?php echo esc_url( $this->get_panel_url( 'filter-preset' ) ); ?>">
29
  <?php echo esc_html_x( '< back to preset list', '[Admin] Back link in new preset page', 'yith-woocommerce-ajax-navigation' ); ?>
30
  </a>
31
  </span>
32
+
33
  <h2>
34
  <?php
35
  if ( $preset ) {
40
  ?>
41
  </h2>
42
 
43
+ <?php if ( isset( $_GET['status'] ) && 'success' === $_GET['status'] ) : ?>
44
+ <div class="preset-saved">
45
+ <p><?php echo esc_html_x( 'Preset saved correctly', '[ADMIN] Preset save message', 'yith-woocommerce-ajax-navigation' ); ?></p>
46
+ </div>
47
+ <?php endif; ?>
48
+
49
  <?php do_action( 'yith_wcan_preset_edit_before_title', $preset_id, $preset ); ?>
50
 
51
+ <?php if ( ! empty( $fields ) ) : ?>
52
+ <table class="form-table">
53
+ <tbody>
54
+ <?php foreach ( $fields as $field_slug => $field ) : ?>
55
+ <tr valign="top" class="yith-plugin-fw-panel-wc-row <?php echo esc_attr( $field['type'] ); ?>">
56
+ <th scope="row" class="titledesc">
57
+ <label for="<?php echo esc_attr( $field_slug ); ?>>"><?php echo esc_html( $field['label'] ); ?></label>
58
+ </th>
59
+ <td class="forminp forminp-<?php echo esc_attr( $field['type'] ); ?>">
60
+ <?php
61
+ $field_name = str_replace( 'preset_', '', $field_slug );
62
+ $field_args = array_merge(
63
+ $field,
64
+ array(
65
+ 'id' => $field_slug,
66
+ 'name' => $field_slug,
67
+ 'preset' => $preset,
68
+ 'value' => method_exists( $preset, "get_{$field_name}" ) ? $preset->{"get_{$field_name}"}() : '',
69
+ )
70
+ );
71
+ yith_plugin_fw_get_field( $field_args, true );
72
+ ?>
73
+ <span class="description">
74
+ <?php echo wp_kses_post( $field['desc'] ); ?>
75
+ </span>
76
+ </td>
77
+ </tr>
78
+ <?php endforeach; ?>
79
  </tbody>
80
  </table>
81
+ <?php endif; ?>
82
 
83
  <?php do_action( 'yith_wcan_preset_edit_before_filters', $preset_id, $preset ); ?>
84
 
templates/admin/preset-filter.php CHANGED
@@ -43,12 +43,12 @@ if ( ! defined( 'YITH_WCAN' ) ) {
43
  true
44
  );
45
  ?>
46
- <span class="show-on-hover delete material-icons">delete_outline</span>
47
- <span class="show-on-hover clone material-icons">filter_none</span>
48
  </div>
49
  <div class="yith-toggle-content">
50
  <?php
51
- $fields = $filter->get_fields();
52
 
53
  if ( ! empty( $fields ) ) :
54
  foreach ( $fields as $field_slug => $field ) :
@@ -67,7 +67,7 @@ if ( ! defined( 'YITH_WCAN' ) ) {
67
  );
68
 
69
  // special case for terms.
70
- if ( 'terms' === $field_slug ) {
71
  $field_args['options'] = $filter->get_terms( 'id=>name' );
72
  }
73
 
@@ -77,7 +77,7 @@ if ( ! defined( 'YITH_WCAN' ) ) {
77
  <?php yith_plugin_fw_get_field( $field_args, true ); ?>
78
 
79
  <?php if ( ! empty( $field['desc'] ) ) : ?>
80
- <span class="description"><?php echo esc_html( $field['desc'] ); ?></span>
81
  <?php endif; ?>
82
  </div>
83
  <?php
43
  true
44
  );
45
  ?>
46
+ <span class="show-on-hover delete yith-icon-trash"></span>
47
+ <span class="show-on-hover clone yith-icon-edit"></span>
48
  </div>
49
  <div class="yith-toggle-content">
50
  <?php
51
+ $fields = YITH_WCAN_Filter::get_fields();
52
 
53
  if ( ! empty( $fields ) ) :
54
  foreach ( $fields as $field_slug => $field ) :
67
  );
68
 
69
  // special case for terms.
70
+ if ( 'term_ids' === $field_slug ) {
71
  $field_args['options'] = $filter->get_terms( 'id=>name' );
72
  }
73
 
77
  <?php yith_plugin_fw_get_field( $field_args, true ); ?>
78
 
79
  <?php if ( ! empty( $field['desc'] ) ) : ?>
80
+ <span class="description"><?php echo wp_kses_post( $field['desc'] ); ?></span>
81
  <?php endif; ?>
82
  </div>
83
  <?php
templates/filters/filter-tax/items/color.php CHANGED
@@ -39,13 +39,13 @@ if ( ! defined( 'YITH_WCAN' ) ) {
39
  </span>
40
  <?php endif; ?>
41
 
42
- <?php if ( 'color' === $mode ) : ?>
43
  <span class="term-color <?php echo ! empty( $color_2 ) ? 'bi-color' : 'single-color'; ?>">
44
  <span class="color-swatch" style="background-color: <?php echo esc_attr( $color_1 ); ?>; border-color: <?php echo esc_attr( ! empty( $color_2 ) ? $color_2 : $color_1 ); ?>"></span>
45
  </span>
46
  <?php endif; ?>
47
 
48
- <?php if( ! empty( $label ) ): ?>
49
  <span class="term-label">
50
  <?php echo esc_html( $label ); ?>
51
  <?php echo $filter->render_term_count( $term, $count ); // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped ?>
39
  </span>
40
  <?php endif; ?>
41
 
42
+ <?php if ( 'color' === $mode && ! empty( $color_1 ) ) : ?>
43
  <span class="term-color <?php echo ! empty( $color_2 ) ? 'bi-color' : 'single-color'; ?>">
44
  <span class="color-swatch" style="background-color: <?php echo esc_attr( $color_1 ); ?>; border-color: <?php echo esc_attr( ! empty( $color_2 ) ? $color_2 : $color_1 ); ?>"></span>
45
  </span>
46
  <?php endif; ?>
47
 
48
+ <?php if ( ! empty( $label ) ) : ?>
49
  <span class="term-label">
50
  <?php echo esc_html( $label ); ?>
51
  <?php echo $filter->render_term_count( $term, $count ); // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped ?>