PluginProbe
ShopBuilder – WooCommerce Builder For Elementor / 3.0.0
ShopBuilder – WooCommerce Builder For Elementor v3.0.0
3.4.2 3.4.1 3.4.0 2.0.1 2.0.2 2.0.3 2.1.0 2.1.1 2.1.10 2.1.11 2.1.12 2.1.13 2.1.14 2.1.15 2.1.2 2.1.3 2.1.4 2.1.5 2.1.6 2.1.7 2.1.8 2.1.9 2.2.0 2.2.1 2.2.2 All 63 releases
← All changes | app/Models/ModuleList.php +223 -943 3.4.03.0.0 View file →
@@ -7,19 +7,16 @@
7 7
8 8 namespace RadiusTheme\SB\Models;
9 9
10 10 use RadiusTheme\SB\Helpers\Fns;
11 -use RadiusTheme\SB\Helpers\SvgIcons;
12 11 use RadiusTheme\SB\Models\Base\ListModel;
13 12 use RadiusTheme\SB\Modules\Badges\Badges;
13 +use RadiusTheme\SB\Modules\CheckoutEditor\CheckoutEditorInit;
14 14 use RadiusTheme\SB\Modules\CheckoutEditor\CheckoutFns;
15 +use RadiusTheme\SB\Modules\ShopifyCheckout\ShopifyCheckout;
16 +use RadiusTheme\SB\Modules\VariationGallery\VariationGalleryInit;
15 17 use RadiusTheme\SB\Modules\VariationSwatches\SwatchesFns;
16 -use RadiusTheme\SB\Modules\ShopifyCheckout\ShopifyCheckout;
17 -use RadiusTheme\SB\Modules\CheckoutEditor\CheckoutEditorInit;
18 -use RadiusTheme\SB\Modules\AbandonedCartRecovery\CartRecoveryInit;
19 18 use RadiusTheme\SB\Modules\VariationSwatches\VariationSwatches;
20 -use RadiusTheme\SB\Modules\VariationGallery\VariationGalleryInit;
21 -use RadiusTheme\SB\Modules\AbandonedCartRecovery\CartRecoveryOptions;
22 19 use RadiusTheme\SB\Traits\SingletonTrait;
23 20 use RadiusTheme\SB\Modules\Compare\Compare;
24 21 use RadiusTheme\SB\Modules\WishList\Wishlist;
25 22 use RadiusTheme\SB\Modules\Compare\CompareFns;
@@ -57,122 +54,8 @@
57 54 *
58 55 * @return mixed|null
59 56 */
60 57 protected function raw_list() {
61 - $isSwatchActive = false;
62 - $isGalleryActive = false;
63 - $variationSwatch = apply_filters(
64 - 'rtsb/module/variation_swatches/options',
65 - [
66 - 'id' => 'variation_swatches',
67 - 'title' => esc_html__( 'Variation Swatches', 'shopbuilder' ),
68 - 'badge' => 'new',
69 - 'package' => 'free',
70 - 'active' => 'on',
71 - 'base_class' => VariationSwatches::class,
72 - 'active_field' => [
73 - 'label' => esc_html__( 'Enable Variation Swatches Module?', 'shopbuilder' ),
74 - 'help' => esc_html__( 'Switch on to enable variation swatches module.', 'shopbuilder' ),
75 - ],
76 - 'tabs' => [
77 - 'general' => [
78 - 'title' => esc_html__( 'General', 'shopbuilder' ),
79 - ],
80 - 'showcase_shop' => [
81 - 'title' => esc_html__( 'Showcase / Shop', 'shopbuilder' ),
82 - ],
83 - 'style' => [
84 - 'title' => esc_html__( 'Style', 'shopbuilder' ),
85 - ],
86 - ],
87 - 'fields' => $this->get_variation_swatches_fields(),
88 - ],
89 - $isSwatchActive
90 - );
91 -
92 - if ( Fns::check_plugin_active( 'woo-product-variation-swatches/woo-product-variation-swatches.php' ) ) {
93 - $isSwatchActive = true;
94 - $variationSwatch = apply_filters(
95 - 'rtsb/module/variation_swatches/options',
96 - [
97 - 'id' => 'variation_swatches',
98 - 'external' => true,
99 - 'title' => esc_html__( 'Variation Swatches', 'shopbuilder' ),
100 - 'pluginSlug' => 'woo-product-variation-swatches',
101 - 'pluginIsInstalled' => Fns::check_plugin_installed( 'woo-product-variation-swatches/woo-product-variation-swatches.php' ),
102 - 'pluginIsActive' => Fns::check_plugin_active( 'woo-product-variation-swatches/woo-product-variation-swatches.php' ),
103 - 'pluginActiveUrl' => add_query_arg(
104 - [
105 - '_wpnonce' => wp_create_nonce( 'activate-plugin_woo-product-variation-swatches/woo-product-variation-swatches.php' ),
106 - 'action' => 'activate',
107 - 'plugin' => 'woo-product-variation-swatches/woo-product-variation-swatches.php',
108 - ],
109 - admin_url( 'plugins.php' )
110 - ),
111 - 'help' => __( 'Currently using an external plugin. You can disable the external plugin and enable the built-in module for better performance. You’ll need to reconfigure settings if you switch to built-in module.', 'shopbuilder' ),
112 - 'package' => 'free',
113 - 'active_field' => [
114 - 'disable' => false,
115 - ],
116 - 'fields' => [],
117 - ],
118 - $isSwatchActive
119 - );
120 - }
121 - $variationGallery = apply_filters(
122 - 'rtsb/module/variation_gallery/options',
123 - [
124 - 'id' => 'variation_gallery',
125 - 'title' => esc_html__( 'Variation Gallery', 'shopbuilder' ),
126 - 'badge' => 'new',
127 - 'package' => 'free',
128 - 'active' => 'on',
129 - 'base_class' => VariationGalleryInit::class,
130 - 'active_field' => [
131 - 'label' => esc_html__( 'Enable Variation Gallery Module?', 'shopbuilder' ),
132 - 'help' => esc_html__( 'Switch on to enable variation gallery module.', 'shopbuilder' ),
133 - ],
134 - 'tabs' => [
135 - 'general' => [
136 - 'title' => esc_html__( 'General', 'shopbuilder' ),
137 - ],
138 - 'styles' => [
139 - 'title' => esc_html__( 'Styles', 'shopbuilder' ),
140 - ],
141 - ],
142 - 'fields' => $this->get_variation_gallery_fields(),
143 - ],
144 - $isGalleryActive
145 - );
146 - if ( Fns::check_plugin_active( 'woo-product-variation-gallery/woo-product-variation-gallery.php' ) ) {
147 - $isGalleryActive = true;
148 - $variationGallery = apply_filters(
149 - 'rtsb/module/variation_gallery/options',
150 - [
151 - 'id' => 'variation_gallery',
152 - 'external' => true,
153 - 'title' => esc_html__( 'Variation Gallery', 'shopbuilder' ),
154 - 'pluginSlug' => 'woo-product-variation-gallery',
155 - 'pluginIsInstalled' => Fns::check_plugin_installed( 'woo-product-variation-gallery/woo-product-variation-gallery.php' ),
156 - 'pluginIsActive' => Fns::check_plugin_active( 'woo-product-variation-gallery/woo-product-variation-gallery.php' ),
157 - 'pluginActiveUrl' => add_query_arg(
158 - [
159 - '_wpnonce' => wp_create_nonce( 'activate-plugin_woo-product-variation-gallery/woo-product-variation-gallery.php' ),
160 - 'action' => 'activate',
161 - 'plugin' => 'woo-product-variation-gallery/woo-product-variation-gallery.php',
162 - ],
163 - admin_url( 'plugins.php' )
164 - ),
165 - 'help' => __( 'Currently using an external plugin. You can disable the external plugin and enable the built-in module for better performance. You’ll need to reconfigure settings if you switch to built-in module.', 'shopbuilder' ),
166 - 'package' => 'free',
167 - 'active_field' => [
168 - 'disable' => false,
169 - ],
170 - 'fields' => [],
171 - ],
172 - $isGalleryActive
173 - );
174 - }
175 58 $list = [
176 59 'quick_view' => apply_filters(
177 60 'rtsb/module/quick_view/options',
178 61 [
@@ -178,8 +61,9 @@
178 61 [
179 62 'id' => 'quick_view',
180 63 'title' => esc_html__( 'Quick View', 'shopbuilder' ),
181 64 'base_class' => QuickView::class,
65 + 'category' => 'general',
182 66 'active' => 'on',
183 67 'package' => 'free',
184 68 'active_field' => [
185 69 'label' => esc_html__( 'Enable Quick View?', 'shopbuilder' ),
@@ -199,14 +83,14 @@
199 83 'loop_btn_position' => [
200 84 'id' => 'loop_btn_position',
201 85 'type' => 'select',
202 86 'value' => 'custom',
203 - 'label' => esc_html__( 'Showcase Button Position', 'shopbuilder' ),
204 - 'help' => esc_html__( 'Manage quick view button position in product showcases (Shop, Related, Upsells, Cross-sells, etc.).', 'shopbuilder' ),
87 + 'label' => esc_html__( 'Shop Page Button Position', 'shopbuilder' ),
88 + 'help' => esc_html__( 'You can manage quick view button position in shop page.', 'shopbuilder' ),
205 89 'tab' => 'general',
206 90 'options' => [
207 - 'before_add_to_cart' => esc_html__( 'Above Add To Cart', 'shopbuilder' ),
208 - 'after_add_to_cart' => esc_html__( 'Below Add To Cart', 'shopbuilder' ),
91 + 'before_add_to_cart' => esc_html__( 'Before Add To Cart', 'shopbuilder' ),
92 + 'after_add_to_cart' => esc_html__( 'After Add To Cart', 'shopbuilder' ),
209 93 'shortcode' => esc_html__( 'Use Shortcode', 'shopbuilder' ),
210 94 'custom' => esc_html__( 'Custom Position', 'shopbuilder' ),
211 95 ],
212 96
@@ -290,11 +174,11 @@
290 174 ],
291 175
292 176 'modal_height' => [
293 177 'id' => 'modal_height',
294 - 'label' => esc_html__( 'Modal Height (in px)', 'shopbuilder' ),
295 - 'help' => esc_html__( 'Quick view button modal height. Example: 450', 'shopbuilder' ),
296 - 'type' => 'number',
178 + 'label' => esc_html__( 'Modal Height', 'shopbuilder' ),
179 + 'help' => esc_html__( 'Quick view button modal height. Example: 450px', 'shopbuilder' ),
180 + 'type' => 'text',
297 181 'value' => '',
298 182 'tab' => 'style',
299 183 ],
300 184
@@ -343,8 +227,9 @@
343 227 'title' => esc_html__( 'Wishlist', 'shopbuilder' ),
344 228 'package' => 'free',
345 229 'active' => 'on',
346 230 'base_class' => Wishlist::class,
231 + 'category' => 'general',
347 232 'active_field' => [
348 233 'label' => esc_html__( 'Enable Wishlist?', 'shopbuilder' ),
349 234 'help' => esc_html__( 'Switch on to enable wishlist module.', 'shopbuilder' ),
350 235 ],
@@ -376,9 +261,9 @@
376 261 ],
377 262 'wishlist_shop_wrapper_heading' => [
378 263 'id' => 'wishlist_shop_wrapper_heading',
379 264 'type' => 'title',
380 - 'label' => esc_html__( 'Product Showcase Settings', 'shopbuilder' ),
265 + 'label' => esc_html__( 'Shop Page Settings', 'shopbuilder' ),
381 266 'tab' => 'button',
382 267 ],
383 268 'show_btn_on_loop' => [
384 269 'id' => 'show_btn_on_loop',
@@ -383,9 +268,9 @@
383 268 'show_btn_on_loop' => [
384 269 'id' => 'show_btn_on_loop',
385 270 'value' => 'on',
386 271 'type' => 'switch',
387 - 'label' => esc_html__( 'Show in Product Showcase', 'shopbuilder' ),
272 + 'label' => esc_html__( 'Show in Shop Page', 'shopbuilder' ),
388 273 'tab' => 'button',
389 274 ],
390 275 'loop_btn_position' => [
391 276 'id' => 'loop_btn_position',
@@ -390,13 +275,13 @@
390 275 'loop_btn_position' => [
391 276 'id' => 'loop_btn_position',
392 277 'type' => 'select',
393 278 'value' => 'custom',
394 - 'label' => esc_html__( 'Showcase Button Position', 'shopbuilder' ),
395 - 'help' => esc_html__( 'Manage wishlist button position in product showcases (Shop, Related, Upsells, Cross-sells, etc.).', 'shopbuilder' ),
279 + 'label' => esc_html__( 'Shop Page Button Position', 'shopbuilder' ),
280 + 'help' => esc_html__( 'You can manage wishlist button position in shop page.', 'shopbuilder' ),
396 281 'options' => [
397 - 'before_add_to_cart' => esc_html__( 'Above Add To Cart', 'shopbuilder' ),
398 - 'after_add_to_cart' => esc_html__( 'Below Add To Cart', 'shopbuilder' ),
282 + 'before_add_to_cart' => esc_html__( 'Before Add To Cart', 'shopbuilder' ),
283 + 'after_add_to_cart' => esc_html__( 'After Add To Cart', 'shopbuilder' ),
399 284 'shortcode' => esc_html__( 'Use Shortcode', 'shopbuilder' ),
400 285 'custom' => esc_html__( 'Custom Position', 'shopbuilder' ),
401 286 ],
402 287 'dependency' => [
@@ -503,10 +388,10 @@
503 388 'help' => esc_html__( 'You can manage compare button position in single product page.', 'shopbuilder' ),
504 389 'type' => 'select',
505 390 'value' => 'custom',
506 391 'options' => [
507 - 'before_add_to_cart' => esc_html__( 'Above Add To Cart', 'shopbuilder' ),
508 - 'after_add_to_cart' => esc_html__( 'Below Add To Cart', 'shopbuilder' ),
392 + 'before_add_to_cart' => esc_html__( 'Before Add To Cart', 'shopbuilder' ),
393 + 'after_add_to_cart' => esc_html__( 'After Add To Cart', 'shopbuilder' ),
509 394 'after_thumbnail' => esc_html__( 'After Image', 'shopbuilder' ),
510 395 'after_summary' => esc_html__( 'After Summary', 'shopbuilder' ),
511 396 'shortcode' => esc_html__( 'Use Shortcode', 'shopbuilder' ),
512 397 'custom' => esc_html__( 'Custom Position', 'shopbuilder' ),
@@ -655,54 +540,20 @@
655 540 'label' => esc_html__( 'Wishlist Table Fields Visibility', 'shopbuilder' ),
656 541 'tab' => 'page',
657 542 ],
658 543
659 - 'shortcode_list_heading' => [
660 - 'id' => 'shortcode_list_heading',
661 - 'type' => 'title',
662 - 'label' => esc_html__( 'Available Shortcodes', 'shopbuilder' ),
663 - 'tab' => 'shortcodes',
664 - ],
665 - 'shortcode_wishlist_table' => [
666 - 'type' => 'raw',
667 - 'label' => esc_html__( 'Wishlist Table', 'shopbuilder' ),
668 - 'html' => '<code>[rtsb_wishlist]</code><p class="description">'
669 - . esc_html__( 'Displays the wishlist table with all added products. Use this shortcode on the wishlist page.', 'shopbuilder' )
670 - . '</p>',
671 - 'tab' => 'shortcodes',
672 - ],
673 - 'shortcode_wishlist_button' => [
674 - 'type' => 'raw',
675 - 'label' => esc_html__( 'Wishlist Button', 'shopbuilder' ),
676 - 'html' => '<code>[rtsb_wishlist_button]</code><p class="description">'
677 - . esc_html__( 'Displays the "Add to Wishlist" button. Use inside a product loop or on a single product page.', 'shopbuilder' )
678 - . '</p>',
679 - 'tab' => 'shortcodes',
680 - ],
681 - 'shortcode_wishlist_counter' => [
682 - 'type' => 'raw',
683 - 'label' => esc_html__( 'Wishlist Counter', 'shopbuilder' ),
684 - 'html' => '<code>[rtsb_wishlist_counter]</code><p class="description">'
685 - . esc_html__( 'Displays the wishlist item count. Place it in the header or menu to show total wishlist items.', 'shopbuilder' )
686 - . '</p>',
687 - 'tab' => 'shortcodes',
688 - ],
689 -
690 544 ]
691 545 ),
692 546 'tabs' => [
693 - 'general' => [
547 + 'general' => [
694 548 'title' => esc_html__( 'General', 'shopbuilder' ),
695 549 ],
696 - 'button' => [
550 + 'button' => [
697 551 'title' => esc_html__( 'Button', 'shopbuilder' ),
698 552 ],
699 - 'page' => [
553 + 'page' => [
700 554 'title' => esc_html__( 'Page', 'shopbuilder' ),
701 555 ],
702 - 'shortcodes' => [
703 - 'title' => esc_html__( 'Shortcodes', 'shopbuilder' ),
704 - ],
705 556 ],
706 557 ]
707 558 ),
708 559 'compare' => apply_filters(
@@ -709,8 +560,9 @@
709 560 'rtsb/module/compare/options',
710 561 [
711 562 'id' => 'compare',
712 563 'base_class' => Compare::class,
564 + 'category' => 'general',
713 565 'title' => esc_html__( 'Product Compare', 'shopbuilder' ),
714 566 'package' => 'free',
715 567 'active' => 'on',
716 568 'active_field' => [
@@ -722,9 +574,9 @@
722 574 [
723 575 'compare_shop_wrapper_heading' => [
724 576 'id' => 'compare_shop_wrapper_heading',
725 577 'type' => 'title',
726 - 'label' => esc_html__( 'Product Showcase Settings', 'shopbuilder' ),
578 + 'label' => esc_html__( 'Shop Page Settings', 'shopbuilder' ),
727 579 'tab' => 'button',
728 580 ],
729 581 'show_btn_on_loop' => [
730 582 'id' => 'show_btn_on_loop',
@@ -729,9 +581,9 @@
729 581 'show_btn_on_loop' => [
730 582 'id' => 'show_btn_on_loop',
731 583 'value' => 'on',
732 584 'type' => 'switch',
733 - 'label' => esc_html__( 'Show in Product Showcase', 'shopbuilder' ),
585 + 'label' => esc_html__( 'Show in Shop Page', 'shopbuilder' ),
734 586 'tab' => 'button',
735 587 ],
736 588 'loop_btn_position' => [
737 589 'id' => 'loop_btn_position',
@@ -736,13 +588,13 @@
736 588 'loop_btn_position' => [
737 589 'id' => 'loop_btn_position',
738 590 'type' => 'select',
739 591 'value' => 'custom',
740 - 'label' => esc_html__( 'Showcase Button Position', 'shopbuilder' ),
741 - 'help' => esc_html__( 'Manage compare button position in product showcases (Shop, Related, Upsells, Cross-sells, etc.).', 'shopbuilder' ),
592 + 'label' => esc_html__( 'Shop Page Button Position', 'shopbuilder' ),
593 + 'help' => esc_html__( 'You can manage wishlist button position in shop page.', 'shopbuilder' ),
742 594 'options' => [
743 - 'before_add_to_cart' => esc_html__( 'Above Add To Cart', 'shopbuilder' ),
744 - 'after_add_to_cart' => esc_html__( 'Below Add To Cart', 'shopbuilder' ),
595 + 'before_add_to_cart' => esc_html__( 'Before Add To Cart', 'shopbuilder' ),
596 + 'after_add_to_cart' => esc_html__( 'After Add To Cart', 'shopbuilder' ),
745 597 'shortcode' => esc_html__( 'Use Shortcode', 'shopbuilder' ),
746 598 'custom' => esc_html__( 'Custom Position', 'shopbuilder' ),
747 599 ],
748 600 'dependency' => [
@@ -849,10 +701,10 @@
849 701 'help' => esc_html__( 'You can manage compare button position in single product page.', 'shopbuilder' ),
850 702 'type' => 'select',
851 703 'value' => 'custom',
852 704 'options' => [
853 - 'before_add_to_cart' => esc_html__( 'Above Add To Cart', 'shopbuilder' ),
854 - 'after_add_to_cart' => esc_html__( 'Below Add To Cart', 'shopbuilder' ),
705 + 'before_add_to_cart' => esc_html__( 'Before Add To Cart', 'shopbuilder' ),
706 + 'after_add_to_cart' => esc_html__( 'After Add To Cart', 'shopbuilder' ),
855 707 'after_thumbnail' => esc_html__( 'After Image', 'shopbuilder' ),
856 708 'after_summary' => esc_html__( 'After Summary', 'shopbuilder' ),
857 709 'shortcode' => esc_html__( 'Use Shortcode', 'shopbuilder' ),
858 710 'custom' => esc_html__( 'Custom Position', 'shopbuilder' ),
@@ -1027,10 +879,113 @@
1027 879
1028 880 ],
1029 881 ]
1030 882 ),
1031 - 'variation_swatches' => $variationSwatch,
1032 - 'variation_gallery' => $variationGallery,
883 + /**
884 + 'variation_swatches' => apply_filters(
885 + 'rtsb/module/variation_swatches/options',
886 + [
887 + 'id' => 'variation_swatches',
888 + 'title' => esc_html__( 'Variation Swatches', 'shopbuilder' ),
889 + 'package' => 'free',
890 + 'active' => 'on',
891 + 'base_class' => VariationSwatches::class,
892 + 'category' => 'general',
893 + 'active_field' => [
894 + 'label' => esc_html__( 'Enable Variation Swatches Module?', 'shopbuilder' ),
895 + 'help' => esc_html__( 'Switch on to enable variation swatches module.', 'shopbuilder' ),
896 + ],
897 + 'tabs' => [
898 + 'general' => [
899 + 'title' => esc_html__( 'General', 'shopbuilder' ),
900 + ],
901 + 'showcase_shop' => [
902 + 'title' => esc_html__( 'Showcase / Shop', 'shopbuilder' ),
903 + ],
904 + 'style' => [
905 + 'title' => esc_html__( 'Style', 'shopbuilder' ),
906 + ],
907 + ],
908 + 'fields' => $this->get_variation_swatches_fields(),
909 + ]
910 + ),
911 + 'variation_gallery' => apply_filters(
912 + 'rtsb/module/variation_gallery/options',
913 + [
914 + 'id' => 'variation_gallery',
915 + 'title' => esc_html__( 'Variation Gallery', 'shopbuilder' ),
916 + 'package' => 'free',
917 + 'active' => 'on',
918 + 'base_class' => VariationGalleryInit::class,
919 + 'category' => 'general',
920 + 'active_field' => [
921 + 'label' => esc_html__( 'Enable Variation Gallery Module?', 'shopbuilder' ),
922 + 'help' => esc_html__( 'Switch on to enable variation gallery module.', 'shopbuilder' ),
923 + ],
924 + 'tabs' => [
925 + 'general' => [
926 + 'title' => esc_html__( 'General', 'shopbuilder' ),
927 + ],
928 + 'style' => [
929 + 'title' => esc_html__( 'Style', 'shopbuilder' ),
930 + ],
931 + ],
932 + 'fields' => $this->get_variation_gallery_fields(),
933 + ]
934 + ),
935 + */
936 + 'variation_swatches' => apply_filters(
937 + 'rtsb/module/variation_swatches/options',
938 + [
939 + 'id' => 'variation_swatches',
940 + 'external' => true,
941 + 'category' => 'general',
942 + 'title' => esc_html__( 'Variation Swatches', 'shopbuilder' ),
943 + 'pluginSlug' => 'woo-product-variation-swatches',
944 + 'pluginIsInstalled' => Fns::check_plugin_installed( 'woo-product-variation-swatches/woo-product-variation-swatches.php' ),
945 + 'pluginIsActive' => Fns::check_plugin_active( 'woo-product-variation-swatches/woo-product-variation-swatches.php' ),
946 + 'pluginActiveUrl' => add_query_arg(
947 + [
948 + '_wpnonce' => wp_create_nonce( 'activate-plugin_woo-product-variation-swatches/woo-product-variation-swatches.php' ),
949 + 'action' => 'activate',
950 + 'plugin' => 'woo-product-variation-swatches/woo-product-variation-swatches.php',
951 + ],
952 + admin_url( 'plugins.php' )
953 + ),
954 + 'help' => __( 'This module requires: <a href="https://wordpress.org/plugins/woo-product-variation-swatches/">Variation Swatches for WooCommerce</a>.', 'shopbuilder' ),
955 + 'package' => 'free',
956 + 'active_field' => [
957 + 'disable' => false,
958 + ],
959 + 'fields' => [],
960 + ]
961 + ),
962 + 'variation_gallery' => apply_filters(
963 + 'rtsb/module/variation_gallery/options',
964 + [
965 + 'id' => 'variation_gallery',
966 + 'external' => true,
967 + 'category' => 'general',
968 + 'title' => esc_html__( 'Variation Gallery', 'shopbuilder' ),
969 + 'pluginSlug' => 'woo-product-variation-gallery',
970 + 'pluginIsInstalled' => Fns::check_plugin_installed( 'woo-product-variation-gallery/woo-product-variation-gallery.php' ),
971 + 'pluginIsActive' => Fns::check_plugin_active( 'woo-product-variation-gallery/woo-product-variation-gallery.php' ),
972 + 'pluginActiveUrl' => add_query_arg(
973 + [
974 + '_wpnonce' => wp_create_nonce( 'activate-plugin_woo-product-variation-gallery/woo-product-variation-gallery.php' ),
975 + 'action' => 'activate',
976 + 'plugin' => 'woo-product-variation-gallery/woo-product-variation-gallery.php',
977 + ],
978 + admin_url( 'plugins.php' )
979 + ),
980 + 'help' => __( 'This module requires: <a href="https://wordpress.org/plugins/woo-product-variation-gallery/">Variation Images Gallery for WooCommerce</a>.', 'shopbuilder' ),
981 + 'package' => 'free',
982 + 'active_field' => [
983 + 'disable' => false,
984 + ],
985 + 'fields' => [],
986 + ]
987 + ),
1033 988 'product_badges' => apply_filters(
1034 989 'rtsb/module/product_badges/options',
1035 990 [
1036 991 'id' => 'product_badges',
@@ -1432,9 +1387,9 @@
1432 1387 'rtsb/module/bulk_discounts/options',
1433 1388 [
1434 1389 'id' => 'bulk_discounts',
1435 1390 'active' => '',
1436 - 'title' => esc_html__( 'Volume Discount', 'shopbuilder' ),
1391 + 'title' => esc_html__( 'Bulk Discounts', 'shopbuilder' ),
1437 1392 'active_field' => [
1438 1393 'label' => esc_html__( 'Enable Bulk Discounts?', 'shopbuilder' ),
1439 1394 'help' => esc_html__( 'Switch on to enable bulk discounts module.', 'shopbuilder' ),
1440 1395 ],
@@ -1483,292 +1438,13 @@
1483 1438 'package' => $this->pro_package(),
1484 1439 'fields' => Fns::pro_version_notice( '1.10.0' ),
1485 1440 ]
1486 1441 ),
1487 - 'pdf_invoice' => apply_filters(
1488 - 'rtsb/module/pdf_invoice/options',
1489 - [
1490 - 'id' => 'pdf_invoice',
1491 - 'active' => '',
1492 - 'title' => esc_html__( 'PDF Invoice', 'shopbuilder' ),
1493 - 'active_field' => [
1494 - 'label' => esc_html__( 'Enable PDF Invoice?', 'shopbuilder' ),
1495 - 'help' => esc_html__( 'Switch on to enable PDF Invoice module.', 'shopbuilder' ),
1496 - ],
1497 - 'package' => $this->pro_package(),
1498 - 'fields' => Fns::pro_version_notice( '2.1.0', 'general', 'ShopBuilder Pro', false ),
1499 - ]
1500 - ),
1501 - 'extended_cross_sell' => apply_filters(
1502 - 'rtsb/module/extended_cross_sell/options',
1503 - [
1504 - 'id' => 'extended_cross_sell',
1505 - 'active' => '',
1506 - 'title' => esc_html__( 'Extended Cross Sell', 'shopbuilder' ),
1507 - 'active_field' => [
1508 - 'label' => esc_html__( 'Enable Extended Cross Sell?', 'shopbuilder' ),
1509 - 'help' => esc_html__( 'Switch on to enable Extended Cross Sell.', 'shopbuilder' ),
1510 - ],
1511 - 'package' => $this->pro_package(),
1512 - 'fields' => Fns::pro_version_notice( '2.1.4', 'general', 'ShopBuilder Pro', false ),
1513 - ]
1514 - ),
1515 - 'abandoned_cart_recovery' => apply_filters(
1516 - 'rtsb/module/abandoned_cart_recovery/options',
1517 - [
1518 - 'id' => 'abandoned_cart_recovery',
1519 - 'active' => '',
1520 - 'badge' => 'new',
1521 - 'title' => esc_html__( 'Abandoned Cart Recovery', 'shopbuilder' ),
1522 - 'active_field' => [
1523 - 'label' => esc_html__( 'Enable Abandoned Cart Recovery?', 'shopbuilder' ),
1524 - 'help' => esc_html__( 'Cart will be considered abandoned if order is not completed in cut-off time.', 'shopbuilder' ),
1525 - ],
1526 - 'fields' => CartRecoveryOptions::get_cart_recovery_fields(),
1527 - 'base_class' => CartRecoveryInit::class,
1528 - 'tabs' => [
1529 - 'general' => [
1530 - 'title' => esc_html__( 'General', 'shopbuilder' ),
1531 - ],
1532 - 'emailTemplates' => [
1533 - 'title' => esc_html__( 'Email Templates', 'shopbuilder' ),
1534 - ],
1535 - ],
1536 - ]
1537 - ),
1538 - 'popup_builder' => apply_filters(
1539 - 'rtsb/module/popup_builder/options',
1540 - [
1541 - 'id' => 'popup_builder',
1542 - 'active' => '',
1543 - 'title' => esc_html__( 'Popup Builder', 'shopbuilder' ),
1544 - 'active_field' => [
1545 - 'label' => esc_html__( 'Enable Popup Builder?', 'shopbuilder' ),
1546 - 'help' => esc_html__( 'Switch on to enable Popup Builder.', 'shopbuilder' ),
1547 - ],
1548 - 'package' => $this->pro_package(),
1549 - 'fields' => Fns::pro_version_notice( '2.1.5', 'general', 'ShopBuilder Pro', false ),
1550 - ]
1551 - ),
1552 - 'save_for_buy_later' => apply_filters(
1553 - 'rtsb/module/save_for_buy_later/options',
1554 - [
1555 - 'id' => 'save_for_buy_later',
1556 - 'active' => '',
1557 - 'title' => esc_html__( 'Save Cart For Buy Later', 'shopbuilder' ),
1558 - 'active_field' => [
1559 - 'label' => esc_html__( 'Enable Save Cart For Buy Later?', 'shopbuilder' ),
1560 - 'help' => esc_html__( 'Switch on to enable Save Cart For Buy Later.', 'shopbuilder' ),
1561 - ],
1562 - 'package' => $this->pro_package(),
1563 - 'fields' => Fns::pro_version_notice( '2.1.8', 'general', 'ShopBuilder Pro', false ),
1564 - ]
1565 - ),
1566 - 'catalog_mode' => apply_filters(
1567 - 'rtsb/module/catalog_mode/options',
1568 - [
1569 - 'id' => 'catalog_mode',
1570 - 'active' => '',
1571 - 'title' => esc_html__( 'Catalog Mode', 'shopbuilder' ),
1572 - 'active_field' => [
1573 - 'label' => esc_html__( 'Enable Catalog Mode?', 'shopbuilder' ),
1574 - 'help' => esc_html__( 'Switch on to enable Catalog Mode.', 'shopbuilder' ),
1575 - ],
1576 - 'package' => $this->pro_package(),
1577 - 'fields' => Fns::pro_version_notice( '2.1.9', 'general', 'ShopBuilder Pro', false ),
1578 - ]
1579 - ),
1580 - 'back_in_stock_notifier' => apply_filters(
1581 - 'rtsb/module/back_in_stock_notifier/options',
1582 - [
1583 - 'id' => 'back_in_stock_notifier',
1584 - 'active' => '',
1585 - 'title' => esc_html__( 'Back In Stock Notifier', 'shopbuilder' ),
1586 - 'active_field' => [
1587 - 'label' => esc_html__( 'Enable Back In Stock Notifier?', 'shopbuilder' ),
1588 - 'help' => esc_html__( 'Switch on to enable Back In Stock Notifier.', 'shopbuilder' ),
1589 - ],
1590 - 'package' => $this->pro_package(),
1591 - 'fields' => Fns::pro_version_notice( '2.1.11', 'general', 'ShopBuilder Pro', false ),
1592 - ]
1593 - ),
1594 - 'mega_menu' => apply_filters(
1595 - 'rtsb/module/mega_menu/options',
1596 - [
1597 - 'id' => 'mega_menu',
1598 - 'active' => '',
1599 - 'title' => esc_html__( 'Mega Menu', 'shopbuilder' ),
1600 - 'active_field' => [
1601 - 'label' => esc_html__( 'Enable Mega Menu?', 'shopbuilder' ),
1602 - 'help' => esc_html__( 'Switch on to enable Mega Menu module.', 'shopbuilder' ),
1603 - ],
1604 - 'package' => $this->pro_package(),
1605 - 'fields' => Fns::pro_version_notice( '2.1.12', 'general', 'ShopBuilder Pro', false ),
1606 - ]
1607 - ),
1608 1442 ];
1609 - // Inject icons, descriptions and links per module.
1610 - $meta = self::module_meta();
1611 - foreach ( $list as $key => &$item ) {
1612 - if ( isset( $meta[ $key ] ) ) {
1613 - $item['icon'] = SvgIcons::get( $meta[ $key ]['icon'] ?? 'default' );
1614 - $item['description'] = $meta[ $key ]['desc'] ?? '';
1615 - } else {
1616 - $item['icon'] = SvgIcons::get( 'default' );
1617 - $item['description'] = '';
1618 - }
1619 - $item['links'] = [
1620 - 'doc' => '',
1621 - 'video' => '',
1622 - ];
1623 - }
1624 - unset( $item );
1625 -
1626 1443 return apply_filters( 'rtsb/core/modules/raw_list', $list );
1627 1444 }
1628 1445
1629 1446 /**
1630 - * Module icon and description metadata.
1631 - *
1632 - * @return array<string, array{icon: string, desc: string}>
1633 - */
1634 - private static function module_meta() {
1635 - return [
1636 - 'variation_swatches' => [
1637 - 'icon' => 'dots',
1638 - 'desc' => 'Replace dropdowns with color, image, label, or radio swatches.',
1639 - ],
1640 - 'variation_gallery' => [
1641 - 'icon' => 'image',
1642 - 'desc' => 'Show a unique product gallery for every variation.',
1643 - ],
1644 - 'quick_view' => [
1645 - 'icon' => 'eye',
1646 - 'desc' => 'Open a popup product preview from grids without a full page load.',
1647 - ],
1648 - 'wishlist' => [
1649 - 'icon' => 'heart',
1650 - 'desc' => 'Let customers save products to a wishlist they can revisit or share.',
1651 - ],
1652 - 'compare' => [
1653 - 'icon' => 'flip_box',
1654 - 'desc' => 'Side-by-side product attribute comparison with sticky header.',
1655 - ],
1656 - 'product_badges' => [
1657 - 'icon' => 'onsale',
1658 - 'desc' => 'Sale, new, featured, low-stock, and custom badges with rules.',
1659 - ],
1660 - 'checkout_fields_editor' => [
1661 - 'icon' => 'form',
1662 - 'desc' => 'Add, edit, reorder, or remove billing, shipping, and checkout fields.',
1663 - ],
1664 - 'shopify_checkout' => [
1665 - 'icon' => 'cart',
1666 - 'desc' => 'Single-page Shopify-style checkout with autofill and express pay.',
1667 - ],
1668 - 'mini_cart' => [
1669 - 'icon' => 'cart',
1670 - 'desc' => 'Sliding cart drawer with AJAX add-to-cart and quantity edits.',
1671 - ],
1672 - 'product_size_chart' => [
1673 - 'icon' => 'ruler',
1674 - 'desc' => 'Per-category size guides with units, conversion, and modal preview.',
1675 - ],
1676 - 'customize_my_account' => [
1677 - 'icon' => 'user',
1678 - 'desc' => 'Build the customer dashboard with custom tabs, fields, and layouts.',
1679 - ],
1680 - 'pre_order' => [
1681 - 'icon' => 'countdown',
1682 - 'desc' => 'Accept orders before launch with deposit and scheduled release.',
1683 - ],
1684 - 'currency_switcher' => [
1685 - 'icon' => 'currency',
1686 - 'desc' => 'Geo-detected switcher with live exchange rates and pricing rules.',
1687 - ],
1688 - 'product_add_ons' => [
1689 - 'icon' => 'grid',
1690 - 'desc' => 'Optional extras like gift wrap and warranties with conditional pricing.',
1691 - ],
1692 - 'sales_notification' => [
1693 - 'icon' => 'notification',
1694 - 'desc' => 'Real-time sales popups to create social proof and urgency.',
1695 - ],
1696 - 'flash_sale_countdown' => [
1697 - 'icon' => 'flash',
1698 - 'desc' => 'Scheduled flash sale countdown timers with auto-pricing.',
1699 - ],
1700 - 'quick_checkout' => [
1701 - 'icon' => 'checkout',
1702 - 'desc' => 'One-click checkout from product pages, skipping the cart.',
1703 - ],
1704 - 'multi_step_checkout' => [
1705 - 'icon' => 'multi_step',
1706 - 'desc' => 'Break checkout into guided steps with progress indicator.',
1707 - ],
1708 - 'back_order' => [
1709 - 'icon' => 'document',
1710 - 'desc' => 'Allow orders on out-of-stock products with availability dates.',
1711 - ],
1712 - 'sticky_add_to_cart' => [
1713 - 'icon' => 'button',
1714 - 'desc' => 'Sticky add-to-cart bar that follows the user on product pages.',
1715 - ],
1716 - 'smart_coupons' => [
1717 - 'icon' => 'discount',
1718 - 'desc' => 'Advanced coupon rules, URL coupons, and auto-apply conditions.',
1719 - ],
1720 - 'bulk_discounts' => [
1721 - 'icon' => 'pricing',
1722 - 'desc' => 'Tiered quantity-based pricing tables for bulk purchases.',
1723 - ],
1724 - 'bogo_bxgy_free_gift_discounts' => [
1725 - 'icon' => 'star',
1726 - 'desc' => 'Buy-one-get-one, buy-X-get-Y, and free gift promotions.',
1727 - ],
1728 - 'partial_pay' => [
1729 - 'icon' => 'payment',
1730 - 'desc' => 'Allow customers to pay in installments or deposits.',
1731 - ],
1732 - 'gift_card' => [
1733 - 'icon' => 'coupon',
1734 - 'desc' => 'Digital gift cards with email delivery and balance management.',
1735 - ],
1736 - 'pdf_invoice' => [
1737 - 'icon' => 'note',
1738 - 'desc' => 'Auto-generated PDF invoices and packing slips for orders.',
1739 - ],
1740 - 'extended_cross_sell' => [
1741 - 'icon' => 'grid',
1742 - 'desc' => 'Extended cross-sell recommendations across cart and checkout.',
1743 - ],
1744 - 'abandoned_cart_recovery' => [
1745 - 'icon' => 'cart',
1746 - 'desc' => 'Automated email nudges, discount triggers, and recovery analytics.',
1747 - ],
1748 - 'popup_builder' => [
1749 - 'icon' => 'popup',
1750 - 'desc' => 'Create promotional popups with triggers, targeting, and templates.',
1751 - ],
1752 - 'save_for_buy_later' => [
1753 - 'icon' => 'heart',
1754 - 'desc' => 'Save cart items for later purchase with one-click restore.',
1755 - ],
1756 - 'catalog_mode' => [
1757 - 'icon' => 'list',
1758 - 'desc' => 'Hide prices and add-to-cart buttons for catalog-only browsing.',
1759 - ],
1760 - 'back_in_stock_notifier' => [
1761 - 'icon' => 'notification',
1762 - 'desc' => 'Email notifications when out-of-stock products become available.',
1763 - ],
1764 - 'mega_menu' => [
1765 - 'icon' => 'grid',
1766 - 'desc' => 'Multi-column mega menus with widgets, images, and icons.',
1767 - ],
1768 - ];
1769 - }
1770 - /**
1771 1447 * Get All Menu
1772 1448 */
1773 1449 public function get_all_menu() {
1774 1450 $manus = [
@@ -3050,179 +2726,8 @@
3050 2726 ],
3051 2727 ],
3052 2728 ],
3053 2729 ],
3054 - 'cart_button_styles_settings' => [
3055 - 'id' => 'cart_button_styles_settings',
3056 - 'type' => 'title',
3057 - 'tab' => 'styles',
3058 - 'label' => esc_html__( 'Cart Button Style', 'shopbuilder' ),
3059 - 'dependency' => [
3060 - 'rules' => [
3061 - [
3062 - 'item' => 'modules.shopify_checkout.cart_icon_source',
3063 - 'value' => 'select_icon',
3064 - 'operator' => '==',
3065 - ],
3066 - ],
3067 - ],
3068 - ],
3069 - 'cart_button_height' => [
3070 - 'id' => 'cart_button_height',
3071 - 'label' => esc_html__( 'Button Height (px)', 'shopbuilder' ),
3072 - 'type' => 'slider',
3073 - 'min' => 10,
3074 - 'max' => 200,
3075 - 'unit' => 'px',
3076 - 'tab' => 'styles',
3077 - 'dependency' => [
3078 - 'rules' => [
3079 - [
3080 - 'item' => 'modules.shopify_checkout.cart_icon_source',
3081 - 'value' => 'select_icon',
3082 - 'operator' => '==',
3083 - ],
3084 - ],
3085 - ],
3086 - ],
3087 - 'cart_button_width' => [
3088 - 'id' => 'cart_button_width',
3089 - 'label' => esc_html__( 'Button Width (px)', 'shopbuilder' ),
3090 - 'type' => 'slider',
3091 - 'min' => 10,
3092 - 'max' => 200,
3093 - 'unit' => 'px',
3094 - 'tab' => 'styles',
3095 - 'dependency' => [
3096 - 'rules' => [
3097 - [
3098 - 'item' => 'modules.shopify_checkout.cart_icon_source',
3099 - 'value' => 'select_icon',
3100 - 'operator' => '==',
3101 - ],
3102 - ],
3103 - ],
3104 - ],
3105 - 'cart_button_padding' => [
3106 - 'id' => 'cart_button_padding',
3107 - 'label' => esc_html__( 'Padding (px)', 'shopbuilder' ),
3108 - 'type' => 'slider',
3109 - 'min' => 0,
3110 - 'max' => 50,
3111 - 'unit' => 'px',
3112 - 'tab' => 'styles',
3113 - 'dependency' => [
3114 - 'rules' => [
3115 - [
3116 - 'item' => 'modules.shopify_checkout.cart_icon_source',
3117 - 'value' => 'select_icon',
3118 - 'operator' => '==',
3119 - ],
3120 - ],
3121 - ],
3122 - ],
3123 - 'cart_button_border_style' => [
3124 - 'id' => 'cart_button_border_style',
3125 - 'label' => esc_html__( 'Border Style', 'shopbuilder' ),
3126 - 'type' => 'select',
3127 - 'options' => [
3128 - 'none' => esc_html__( 'None', 'shopbuilder' ),
3129 - 'solid' => esc_html__( 'Solid', 'shopbuilder' ),
3130 - 'dashed' => esc_html__( 'Dashed', 'shopbuilder' ),
3131 - 'dotted' => esc_html__( 'Dotted', 'shopbuilder' ),
3132 - ],
3133 - 'tab' => 'styles',
3134 - 'dependency' => [
3135 - 'rules' => [
3136 - [
3137 - 'item' => 'modules.shopify_checkout.cart_icon_source',
3138 - 'value' => 'select_icon',
3139 - 'operator' => '==',
3140 - ],
3141 - ],
3142 - ],
3143 - ],
3144 - 'cart_button_border_width' => [
3145 - 'id' => 'cart_button_border_width',
3146 - 'label' => esc_html__( 'Border Width (px)', 'shopbuilder' ),
3147 - 'type' => 'slider',
3148 - 'min' => 0,
3149 - 'max' => 10,
3150 - 'unit' => 'px',
3151 - 'tab' => 'styles',
3152 - 'dependency' => [
3153 - 'rules' => [
3154 - [
3155 - 'item' => 'modules.shopify_checkout.cart_icon_source',
3156 - 'value' => 'select_icon',
3157 - 'operator' => '==',
3158 - ],
3159 - ],
3160 - ],
3161 - ],
3162 - 'cart_button_border_color' => [
3163 - 'id' => 'cart_button_border_color',
3164 - 'label' => esc_html__( 'Border Color', 'shopbuilder' ),
3165 - 'tab' => 'styles',
3166 - 'type' => 'color',
3167 - 'dependency' => [
3168 - 'rules' => [
3169 - [
3170 - 'item' => 'modules.shopify_checkout.cart_icon_source',
3171 - 'value' => 'select_icon',
3172 - 'operator' => '==',
3173 - ],
3174 - ],
3175 - ],
3176 - ],
3177 - 'cart_button_border_radius' => [
3178 - 'id' => 'cart_button_border_radius',
3179 - 'label' => esc_html__( 'Border Radius (px)', 'shopbuilder' ),
3180 - 'type' => 'slider',
3181 - 'min' => 0,
3182 - 'max' => 100,
3183 - 'unit' => 'px',
3184 - 'tab' => 'styles',
3185 - 'dependency' => [
3186 - 'rules' => [
3187 - [
3188 - 'item' => 'modules.shopify_checkout.cart_icon_source',
3189 - 'value' => 'select_icon',
3190 - 'operator' => '==',
3191 - ],
3192 - ],
3193 - ],
3194 - ],
3195 - 'cart_button_bg_color' => [
3196 - 'id' => 'cart_button_bg_color',
3197 - 'label' => esc_html__( 'Background Color', 'shopbuilder' ),
3198 - 'tab' => 'styles',
3199 - 'type' => 'color',
3200 - 'dependency' => [
3201 - 'rules' => [
3202 - [
3203 - 'item' => 'modules.shopify_checkout.cart_icon_source',
3204 - 'value' => 'select_icon',
3205 - 'operator' => '==',
3206 - ],
3207 - ],
3208 - ],
3209 - ],
3210 - 'cart_button_hover_bg_color' => [
3211 - 'id' => 'cart_button_hover_bg_color',
3212 - 'label' => esc_html__( 'Hover Background Color', 'shopbuilder' ),
3213 - 'tab' => 'styles',
3214 - 'type' => 'color',
3215 - 'dependency' => [
3216 - 'rules' => [
3217 - [
3218 - 'item' => 'modules.shopify_checkout.cart_icon_source',
3219 - 'value' => 'select_icon',
3220 - 'operator' => '==',
3221 - ],
3222 - ],
3223 - ],
3224 - ],
3225 2730 'footer_menu_styles_settings' => [
3226 2731 'id' => 'footer_menu_styles_settings',
3227 2732 'type' => 'title',
3228 2733 'tab' => 'styles',
@@ -3442,10 +2947,10 @@
3442 2947 'options' => [
3443 2948 'above_image' => esc_html__( 'Floating Above Image', 'shopbuilder' ),
3444 2949 'before_product_title' => esc_html__( 'Before Product Title', 'shopbuilder' ),
3445 2950 'after_product_title' => esc_html__( 'After Product Title', 'shopbuilder' ),
3446 - 'before_add_to_cart' => esc_html__( 'Above Add To Cart', 'shopbuilder' ),
3447 - 'after_add_to_cart' => esc_html__( 'Below Add To Cart', 'shopbuilder' ),
2951 + 'before_add_to_cart' => esc_html__( 'Before Add To Cart', 'shopbuilder' ),
2952 + 'after_add_to_cart' => esc_html__( 'After Add To Cart', 'shopbuilder' ),
3448 2953 'custom' => esc_html__( 'Custom Position', 'shopbuilder' ),
3449 2954 ],
3450 2955 'tab' => 'group',
3451 2956 ],
@@ -3524,10 +3029,10 @@
3524 3029 'label' => esc_html__( 'Product Page Group Position', 'shopbuilder' ),
3525 3030 'help' => esc_html__( 'Choose the group badges position in product page.', 'shopbuilder' ),
3526 3031 'options' => [
3527 3032 'above_image' => esc_html__( 'Floating Above Image', 'shopbuilder' ),
3528 - 'before_add_to_cart' => esc_html__( 'Above Add To Cart', 'shopbuilder' ),
3529 - 'after_add_to_cart' => esc_html__( 'Below Add To Cart', 'shopbuilder' ),
3033 + 'before_add_to_cart' => esc_html__( 'Before Add To Cart', 'shopbuilder' ),
3034 + 'after_add_to_cart' => esc_html__( 'After Add To Cart', 'shopbuilder' ),
3530 3035 'after_summary' => esc_html__( 'After Summary', 'shopbuilder' ),
3531 3036 'after_short_desc' => esc_html__( 'After Short Description', 'shopbuilder' ),
3532 3037 'shortcode' => esc_html__( 'Use Shortcode', 'shopbuilder' ),
3533 3038 'custom' => esc_html__( 'Custom Position', 'shopbuilder' ),
@@ -3627,8 +3132,9 @@
3627 3132 'type' => 'repeaters',
3628 3133 'label' => '',
3629 3134 'tab' => 'badges',
3630 3135 'repeat' => [
3136 +
3631 3137 'title' => [
3632 3138 'id' => 'title',
3633 3139 'label' => esc_html__( 'Badge Name', 'shopbuilder' ),
3634 3140 'help' => esc_html__( 'Enter badge name.', 'shopbuilder' ),
@@ -4133,8 +3639,26 @@
4133 3639 'label' => esc_html__( 'Enable Tooltip', 'shopbuilder' ),
4134 3640 'help' => esc_html__( 'Enable / Disable plugin default tooltip on each product attribute.', 'shopbuilder' ),
4135 3641 'tab' => 'general',
4136 3642 ],
3643 + 'shape_style' => [
3644 + 'id' => 'shape_style',
3645 + 'label' => esc_html__( 'Default Shape Style', 'shopbuilder' ),
3646 + 'help' => esc_html__( 'Attribute Shape Style. Note: This option will not be applied to radio and button attributes.', 'shopbuilder' ),
3647 + 'type' => 'image_select',
3648 + 'value' => 'rounded',
3649 + 'options' => [
3650 + 'rounded' => [
3651 + 'label' => esc_html__( 'Rounded Shape', 'shopbuilder' ),
3652 + 'url' => esc_url( rtsb()->get_assets_uri( 'images/variation-swatch/rounded-shape.svg' ) ),
3653 + ],
3654 + 'squared' => [
3655 + 'label' => esc_html__( 'Squared Shape', 'shopbuilder' ),
3656 + 'url' => esc_url( rtsb()->get_assets_uri( 'images/variation-swatch/squared-shape.svg' ) ),
3657 + ],
3658 + ],
3659 + 'tab' => 'general',
3660 + ],
4137 3661 'shape_style_checkmark' => [
4138 3662 'id' => 'shape_style_checkmark',
4139 3663 'type' => 'switch',
4140 3664 'isPro' => ! rtsb()->has_pro(),
@@ -4146,13 +3670,15 @@
4146 3670 'default_dropdown_convert' => [
4147 3671 'id' => 'default_dropdown_convert',
4148 3672 'label' => esc_html__( 'Default Dropdown Convert', 'shopbuilder' ),
4149 3673 'help' => esc_html__( 'Dropdown Convert To Button Or Image', 'shopbuilder' ),
4150 - 'isPro' => ! rtsb()->has_pro(),
3674 + /**
3675 + * 'isPro' => ! rtsb()->has_pro(),
3676 + */
4151 3677 'type' => 'select',
4152 - 'value' => 'button',
3678 + 'value' => '',
4153 3679 'options' => [
4154 - 'select' => esc_html__( 'Select ( Default, Not Convert )', 'shopbuilder' ),
3680 + 'select' => esc_html__( 'Select ( Default )', 'shopbuilder' ),
4155 3681 'button' => esc_html__( 'Button', 'shopbuilder' ),
4156 3682 'image' => esc_html__( 'Image', 'shopbuilder' ),
4157 3683 ],
4158 3684 'tab' => 'general',
@@ -4170,9 +3696,9 @@
4170 3696 'id' => 'disabled_attribute_behavior',
4171 3697 'label' => esc_html__( 'Disabled Attribute behavior', 'shopbuilder' ),
4172 3698 'help' => esc_html__( 'Disabled attribute will be hide / blur.', 'shopbuilder' ) . ' <span>' . __( ' Note: This feature will be operational for variation quantities below the "Ajax variation threshold.', 'shopbuilder' ) . '</span>',
4173 3699 'type' => 'select',
4174 - 'value' => 'blur-cross',
3700 + 'value' => 'blur',
4175 3701 'options' => [
4176 3702 'blur-cross' => esc_html__( 'Blur And Cross', 'shopbuilder' ),
4177 3703 'blur-no-cross' => esc_html__( 'Only Blur', 'shopbuilder' ),
4178 3704 'hide' => esc_html__( 'Hide', 'shopbuilder' ),
@@ -4292,9 +3818,9 @@
4292 3818 'type' => 'text',
4293 3819 'isPro' => ! rtsb()->has_pro(),
4294 3820 'label' => esc_html__( 'Image Selector', 'shopbuilder' ),
4295 3821 'help' => esc_html__( 'Archive product image selector to show variation image. You can also use multiple selectors separated by comma (.attachment-woocommerce_thumbnail, .wp-post-image) ', 'shopbuilder' ),
4296 - 'value' => '.wp-post-image, .attachment-woocommerce_thumbnail, .rtsb-product-image',
3822 + 'value' => '.wp-post-image, .attachment-woocommerce_thumbnail',
4297 3823 'dependency' => [
4298 3824 'rules' => [
4299 3825 [
4300 3826 'item' => 'modules.variation_swatches.enable_showcase_swatches',
@@ -4304,27 +3830,8 @@
4304 3830 ],
4305 3831 ],
4306 3832 'tab' => 'showcase_shop',
4307 3833 ],
4308 - 'showcase_image_size' => [
4309 - 'id' => 'showcase_image_size',
4310 - 'label' => esc_html__( 'Showcase Image Size', 'shopbuilder' ),
4311 - 'help' => __( 'Choose showcase variation image size.', 'shopbuilder' ) ,
4312 - 'type' => 'select',
4313 - 'isPro' => ! rtsb()->has_pro(),
4314 - 'value' => 'woocommerce_thumbnail',
4315 - 'options' => array_diff_key( Fns::get_image_sizes(), [ 'rtsb_custom' => '' ] ),
4316 - 'dependency' => [
4317 - 'rules' => [
4318 - [
4319 - 'item' => 'modules.variation_swatches.enable_showcase_swatches',
4320 - 'value' => 'on',
4321 - 'operator' => '==',
4322 - ],
4323 - ],
4324 - ],
4325 - 'tab' => 'showcase_shop',
4326 - ],
4327 3834 'showcase_swatches_position' => [
4328 3835 'id' => 'showcase_swatches_position',
4329 3836 'label' => esc_html__( 'Swatches Position', 'shopbuilder' ),
4330 3837 'help' => esc_html__( 'Display showcase swatches in a specific position.', 'shopbuilder' ) . '<br/>' . __( 'Note: Some themes remove or override default WooCommerce hooks. If the swatches do not appear as expected, you may need to manually set a custom position.', 'shopbuilder' ),
@@ -4329,15 +3836,15 @@
4329 3836 'label' => esc_html__( 'Swatches Position', 'shopbuilder' ),
4330 3837 'help' => esc_html__( 'Display showcase swatches in a specific position.', 'shopbuilder' ) . '<br/>' . __( 'Note: Some themes remove or override default WooCommerce hooks. If the swatches do not appear as expected, you may need to manually set a custom position.', 'shopbuilder' ),
4331 3838 'isPro' => ! rtsb()->has_pro(),
4332 3839 'type' => 'select',
4333 - 'value' => 'before_add_to_cart',
3840 + 'value' => 'after_title_and_price',
4334 3841 'options' => apply_filters(
4335 3842 'rtsb_showcase_swatches_positions',
4336 3843 [
4337 3844 'custom_hook' => esc_html__( 'Custom Hook', 'shopbuilder' ),
4338 - 'before_add_to_cart' => esc_html__( 'Above Add To Cart', 'shopbuilder' ),
4339 - 'after_add_to_cart' => esc_html__( 'Below Add To Cart', 'shopbuilder' ),
3845 + 'before_add_to_cart' => esc_html__( 'Before Add To Cart', 'shopbuilder' ),
3846 + 'after_add_to_cart' => esc_html__( 'After Add To Cart', 'shopbuilder' ),
4340 3847 ]
4341 3848 ),
4342 3849 'dependency' => [
4343 3850 'rules' => [
@@ -4508,8 +4015,16 @@
4508 4015 'type' => 'color',
4509 4016 'value' => '#333333',
4510 4017 'tab' => 'style',
4511 4018 ],
4019 + 'checkmark_icon_color' => [
4020 + 'id' => 'checkmark_icon_color',
4021 + 'label' => esc_html__( 'Checkmark Icon Color', 'shopbuilder' ),
4022 + 'isPro' => ! rtsb()->has_pro(),
4023 + 'type' => 'color',
4024 + 'value' => '#ffffff',
4025 + 'tab' => 'style',
4026 + ],
4512 4027 'attribute_checkmark_width' => [
4513 4028 'id' => 'attribute_checkmark_width',
4514 4029 'label' => esc_html__( 'Checkmark Width', 'shopbuilder' ),
4515 4030 'isPro' => ! rtsb()->has_pro(),
@@ -4514,12 +4029,12 @@
4514 4029 'label' => esc_html__( 'Checkmark Width', 'shopbuilder' ),
4515 4030 'isPro' => ! rtsb()->has_pro(),
4516 4031 'help' => esc_html__( 'Set the width (in px) for selected attribute checkmark,', 'shopbuilder' ),
4517 4032 'type' => 'slider',
4518 - 'min' => 15,
4033 + 'min' => 10,
4519 4034 'max' => 200,
4520 4035 'unit' => 'px',
4521 - 'value' => 18,
4036 + 'value' => 15,
4522 4037 'tab' => 'style',
4523 4038 ],
4524 4039 'attribute_checkmark_height' => [
4525 4040 'id' => 'attribute_checkmark_height',
@@ -4526,12 +4041,12 @@
4526 4041 'label' => esc_html__( 'Checkmark Height', 'shopbuilder' ),
4527 4042 'isPro' => ! rtsb()->has_pro(),
4528 4043 'help' => esc_html__( 'Set the height (in px) for selected attribute checkmark,', 'shopbuilder' ),
4529 4044 'type' => 'slider',
4530 - 'min' => 15,
4045 + 'min' => 10,
4531 4046 'max' => 200,
4532 4047 'unit' => 'px',
4533 - 'value' => 18,
4048 + 'value' => 15,
4534 4049 'tab' => 'style',
4535 4050 ],
4536 4051 'attribute_checkmark_icon_size' => [
4537 4052 'id' => 'attribute_checkmark_icon_size',
@@ -4538,12 +4053,12 @@
4538 4053 'isPro' => ! rtsb()->has_pro(),
4539 4054 'label' => esc_html__( 'Checkmark Icon Size', 'shopbuilder' ),
4540 4055 'help' => esc_html__( 'Checkmark Icon Size.', 'shopbuilder' ),
4541 4056 'type' => 'slider',
4542 - 'min' => 10,
4057 + 'min' => 8,
4543 4058 'max' => 30,
4544 4059 'unit' => 'px',
4545 - 'value' => 13,
4060 + 'value' => 11,
4546 4061 'tab' => 'style',
4547 4062 ],
4548 4063 'attribute_style' => [
4549 4064 'id' => 'attribute_style',
@@ -4554,9 +4069,9 @@
4554 4069 'attribute_border_color' => [
4555 4070 'id' => 'attribute_border_color',
4556 4071 'label' => esc_html__( 'Attribute Border Color', 'shopbuilder' ),
4557 4072 'type' => 'color',
4558 - 'value' => '#D1D5DB',
4073 + 'value' => '#333333',
4559 4074 'tab' => 'style',
4560 4075 ],
4561 4076 'attribute_border_color_hover' => [
4562 4077 'id' => 'attribute_border_color_hover',
@@ -4564,43 +4079,14 @@
4564 4079 'type' => 'color',
4565 4080 'value' => '#333333',
4566 4081 'tab' => 'style',
4567 4082 ],
4568 - 'attribute_border_radius' => [
4569 - 'id' => 'attribute_border_radius',
4570 - 'label' => esc_html__( 'Attribute Border Radius', 'shopbuilder' ),
4571 - 'isPro' => ! rtsb()->has_pro(),
4572 - 'help' => esc_html__( 'Set the border radius (in px) for attribute items. Use a small value for squared corners or a large value (e.g. 100+) for fully rounded / circular swatches.', 'shopbuilder' ),
4573 - 'type' => 'slider',
4574 - 'min' => 0,
4575 - 'max' => 200,
4576 - 'unit' => 'px',
4577 - 'value' => 4,
4578 - 'tab' => 'style',
4579 - ],
4580 4083 'details_page_attribute_size' => [
4581 4084 'id' => 'details_page_attribute_size',
4582 4085 'type' => 'title',
4583 - 'label' => esc_html__( 'Details Page Attributes', 'shopbuilder' ),
4086 + 'label' => esc_html__( 'Details Page Attributes Size', 'shopbuilder' ),
4584 4087 'tab' => 'style',
4585 4088 ],
4586 - 'details_page_attr_label_color' => [
4587 - 'id' => 'details_page_attr_label_color',
4588 - 'label' => esc_html__( 'Product Page Attribute Label Color', 'shopbuilder' ),
4589 - 'type' => 'color',
4590 - 'value' => '#333333',
4591 - 'tab' => 'style',
4592 - ],
4593 - 'details_page_attr_label_font_size' => [
4594 - 'id' => 'details_page_attr_label_font_size',
4595 - 'label' => esc_html__( 'Product Page Attribute Label Font Size', 'shopbuilder' ),
4596 - 'type' => 'slider',
4597 - 'min' => 8,
4598 - 'max' => 50,
4599 - 'unit' => 'px',
4600 - 'value' => 16,
4601 - 'tab' => 'style',
4602 - ],
4603 4089 'details_page_attribute_width' => [
4604 4090 'id' => 'details_page_attribute_width',
4605 4091 'label' => esc_html__( 'Variation Item Width', 'shopbuilder' ),
4606 4092 'help' => esc_html__( 'Set the width (in px) for each variation attribute option, Note: This option will not be applied to radio and button attributes.', 'shopbuilder' ),
@@ -4632,23 +4118,12 @@
4632 4118 'unit' => 'px',
4633 4119 'value' => 16,
4634 4120 'tab' => 'style',
4635 4121 ],
4636 - 'details_page_radio_size' => [
4637 - 'id' => 'details_page_radio_size',
4638 - 'label' => esc_html__( 'Radio Attribute Size', 'shopbuilder' ),
4639 - 'help' => esc_html__( 'Set the size (in px) for radio-button variation attributes. Independent from the Variation Item Width/Height settings.', 'shopbuilder' ),
4640 - 'type' => 'slider',
4641 - 'min' => 10,
4642 - 'max' => 80,
4643 - 'unit' => 'px',
4644 - 'value' => 25,
4645 - 'tab' => 'style',
4646 - ],
4647 4122 'showcase_attribute_size' => [
4648 4123 'id' => 'showcase_attribute_size',
4649 4124 'type' => 'title',
4650 - 'label' => esc_html__( 'Shop Page / Product Showcase Attributes Size', 'shopbuilder' ),
4125 + 'label' => esc_html__( 'Product Showcase Attributes Size', 'shopbuilder' ),
4651 4126 'tab' => 'style',
4652 4127 ],
4653 4128 'showcase_attribute_width' => [
4654 4129 'id' => 'showcase_attribute_width',
@@ -4682,19 +4157,8 @@
4682 4157 'unit' => 'px',
4683 4158 'value' => 16,
4684 4159 'tab' => 'style',
4685 4160 ],
4686 - 'showcase_radio_size' => [
4687 - 'id' => 'showcase_radio_size',
4688 - 'label' => esc_html__( 'Radio Attribute Size', 'shopbuilder' ),
4689 - 'help' => esc_html__( 'Set the size (in px) for radio-button variation attributes in shop/showcase contexts.', 'shopbuilder' ),
4690 - 'type' => 'slider',
4691 - 'min' => 10,
4692 - 'max' => 80,
4693 - 'unit' => 'px',
4694 - 'value' => 25,
4695 - 'tab' => 'style',
4696 - ],
4697 4161 'tooltip_style' => [
4698 4162 'id' => 'tooltip_style',
4699 4163 'type' => 'title',
4700 4164 'label' => esc_html__( 'Tooltip Style', 'shopbuilder' ),
@@ -4699,22 +4163,8 @@
4699 4163 'type' => 'title',
4700 4164 'label' => esc_html__( 'Tooltip Style', 'shopbuilder' ),
4701 4165 'tab' => 'style',
4702 4166 ],
4703 - 'tooltip_text_color' => [
4704 - 'id' => 'tooltip_text_color',
4705 - 'label' => esc_html__( 'Tooltip Text Color', 'shopbuilder' ),
4706 - 'type' => 'color',
4707 - 'value' => '#ffffff',
4708 - 'tab' => 'style',
4709 - ],
4710 - 'tooltip_bg_color' => [
4711 - 'id' => 'tooltip_bg_color',
4712 - 'label' => esc_html__( 'Tooltip Background Color', 'shopbuilder' ),
4713 - 'type' => 'color',
4714 - 'value' => '#333333',
4715 - 'tab' => 'style',
4716 - ],
4717 4167 'tooltip_images_padding' => [
4718 4168 'id' => 'tooltip_images_padding',
4719 4169 'label' => esc_html__( 'Tooltip Images Padding', 'shopbuilder' ),
4720 4170 'type' => 'slider',
@@ -4723,16 +4173,22 @@
4723 4173 'unit' => 'px',
4724 4174 'value' => 3,
4725 4175 'tab' => 'style',
4726 4176 ],
4727 - 'tooltip_image_bg_color' => [
4728 - 'id' => 'tooltip_image_bg_color',
4729 - 'label' => esc_html__( 'Tooltip Image Background Color', 'shopbuilder' ),
4177 + 'tooltip_bg_color' => [
4178 + 'id' => 'tooltip_bg_color',
4179 + 'label' => esc_html__( 'Tooltip Background Color', 'shopbuilder' ),
4730 4180 'type' => 'color',
4731 4181 'value' => '#333333',
4732 4182 'tab' => 'style',
4733 4183 ],
4734 -
4184 + 'tooltip_text_color' => [
4185 + 'id' => 'tooltip_text_color',
4186 + 'label' => esc_html__( 'Tooltip Text Color', 'shopbuilder' ),
4187 + 'type' => 'color',
4188 + 'value' => '#ffffff',
4189 + 'tab' => 'style',
4190 + ],
4735 4191 ]
4736 4192 ); // @phpstan-ignore-line
4737 4193 }
4738 4194 /**
@@ -4741,170 +4197,42 @@
4741 4197 public function get_variation_gallery_fields() {
4742 4198 return apply_filters(
4743 4199 'rtsb/module/variation_gallery/fields',
4744 4200 [
4745 - 'main_image_controls_title' => [
4746 - 'id' => 'main_image_controls_title',
4747 - 'type' => 'title',
4748 - 'label' => esc_html__( 'Main Image Controls', 'shopbuilder' ),
4201 + 'thumbnails_columns' => [
4202 + 'id' => 'thumbnails_columns',
4203 + 'type' => 'slider',
4204 + 'label' => esc_html__( 'Thumbnails Items per row / slider view', 'shopbuilder' ),
4205 + 'help' => esc_html__( 'Product Thumbnails Item Image. Default value is: 4. Limit: 2-8. The field required for slider.', 'shopbuilder' ),
4206 + 'min' => 2,
4207 + 'max' => 8,
4208 + 'unit' => '',
4209 + 'value' => 4,
4749 4210 'tab' => 'general',
4750 4211 ],
4751 - 'image_zoom' => [
4752 - 'id' => 'image_zoom',
4753 - 'type' => 'switch',
4754 - 'default' => false,
4755 - 'label' => esc_html__( 'Zoom Gallery image', 'shopbuilder' ),
4756 - 'tab' => 'general',
4757 - ],
4758 - 'lightBox' => [
4759 - 'id' => 'lightBox',
4760 - 'type' => 'switch',
4761 - 'default' => false,
4762 - 'label' => esc_html__( 'Enable Images lightBox', 'shopbuilder' ),
4763 - 'tab' => 'general',
4764 - ],
4765 - 'lightBox_button_position' => [
4766 - 'id' => 'lightBox_button_position',
4767 - 'type' => 'select',
4768 - 'value' => 'top-right',
4769 - 'label' => esc_html__( 'Zoom Button Position', 'shopbuilder' ),
4770 - 'isPro' => ! rtsb()->has_pro(),
4771 - 'options' => [
4772 - 'top-right' => esc_html__( 'Top Right', 'shopbuilder' ),
4773 - 'top-left' => esc_html__( 'Top Left', 'shopbuilder' ),
4774 - 'bottom-right' => esc_html__( 'Bottom Right', 'shopbuilder' ),
4775 - 'bottom-left' => esc_html__( 'Bottom Left', 'shopbuilder' ),
4776 - ],
4777 - 'tab' => 'general',
4778 - ],
4779 -
4780 - 'adaptive_height' => [
4781 - 'id' => 'adaptive_height',
4782 - 'type' => 'switch',
4783 - 'default' => false,
4784 - 'label' => esc_html__( 'Main Images Slider Adaptive Height', 'shopbuilder' ),
4785 - 'tab' => 'general',
4786 - 'dependency' => [
4787 - 'rules' => [
4788 - [
4789 - 'item' => 'modules.variation_gallery.gallery_style',
4790 - 'value' => 'grid',
4791 - 'operator' => '!=',
4792 - ],
4793 - ],
4794 - ],
4795 - ],
4796 - 'main_slider_alignment' => [
4797 - 'id' => 'main_slider_alignment',
4798 - 'type' => 'switch',
4799 - 'value' => 'center',
4800 - 'label' => esc_html__( 'Main Image Middle Position', 'shopbuilder' ),
4801 - 'help' => esc_html__( 'The main image area will align vertically in the center if the inner content is shorter than the adjacent content.', 'shopbuilder' ),
4802 - 'tab' => 'general',
4803 - 'dependency' => [
4804 - 'rules' => [
4805 - [
4806 - 'item' => 'modules.variation_gallery.gallery_style',
4807 - 'value' => [ 'left', 'right' ],
4808 - 'operator' => 'in',
4809 - ],
4810 - ],
4811 - ],
4812 - ],
4813 - 'main_image_transition_effect' => [
4814 - 'id' => 'main_image_transition_effect',
4815 - 'type' => 'select',
4816 - 'value' => 'slide',
4817 - 'label' => esc_html__( 'Transition Effect For Main Image Carousel', 'shopbuilder' ),
4818 - 'isPro' => ! rtsb()->has_pro(),
4819 - 'options' => [
4820 - 'slide' => esc_html__( 'Slide', 'shopbuilder' ),
4821 - 'fade' => esc_html__( 'Fade', 'shopbuilder' ),
4822 - ],
4823 - 'tab' => 'general',
4824 - 'dependency' => [
4825 - 'rules' => [
4826 - [
4827 - 'item' => 'modules.variation_gallery.gallery_style',
4828 - 'value' => 'grid',
4829 - 'operator' => '!=',
4830 - ],
4831 - ],
4832 - ],
4833 - ],
4834 - 'preloader' => [
4835 - 'id' => 'preloader',
4836 - 'type' => 'switch',
4837 - 'default' => false,
4838 - 'label' => esc_html__( 'Preloader', 'shopbuilder' ),
4839 - 'help' => esc_html__( 'Show a loading animation while the gallery images are being loaded.', 'shopbuilder' ),
4840 - 'tab' => 'general',
4841 - ],
4842 - 'preloader_image' => [
4843 - 'id' => 'preloader_image',
4844 - 'type' => 'fileupload',
4845 - 'label' => esc_html__( 'Preloader Image', 'shopbuilder' ),
4846 - 'help' => esc_html__( 'Upload a custom preloader image to replace the default loading animation. Recommended size: 60x60 pixels.', 'shopbuilder' ),
4847 - 'tab' => 'general',
4848 - // Preserve the { id, source } media array on save (the default text
4849 - // sanitizer would flatten it to an empty string and drop the upload).
4850 - 'sanitize_fn' => [ Fns::class, 'sanitize_fileupload_value' ],
4851 - 'dependency' => [
4852 - 'rules' => [
4853 - [
4854 - 'item' => 'modules.variation_gallery.preloader',
4855 - 'value' => 'on',
4856 - 'operator' => '==',
4857 - ],
4858 - ],
4859 - ],
4860 - ],
4861 - 'gallery_change_effect' => [
4862 - 'id' => 'gallery_change_effect',
4863 - 'type' => 'select',
4864 - 'value' => 'blur',
4865 - 'label' => esc_html__( 'Gallery Change Effect', 'shopbuilder' ),
4866 - 'help' => esc_html__( 'Choose the visual effect applied to the gallery when switching between variations.', 'shopbuilder' ),
4867 - 'options' => [
4868 - 'blur' => esc_html__( 'Blur', 'shopbuilder' ),
4869 - 'fade' => esc_html__( 'Fade', 'shopbuilder' ),
4870 - 'gray' => esc_html__( 'Gray', 'shopbuilder' ),
4871 - 'none' => esc_html__( 'No Effect', 'shopbuilder' ),
4872 - ],
4873 - 'tab' => 'general',
4874 - ],
4875 - 'gallery_thumbnail_controls_title' => [
4876 - 'id' => 'gallery_thumbnail_controls_title',
4877 - 'type' => 'title',
4878 - 'label' => esc_html__( 'Gallery / Thumbnail Item Controls', 'shopbuilder' ),
4212 + 'thumbnails_columns_sm' => [
4213 + 'id' => 'thumbnails_columns_sm',
4214 + 'type' => 'slider',
4215 + 'label' => esc_html__( 'Thumbnails Items per row / slider view (Medium Device)', 'shopbuilder' ),
4216 + 'help' => esc_html__( 'Product Thumbnails Item Image. Default value is: 4. Limit: 2-8. The field required for slider.', 'shopbuilder' ),
4217 + 'min' => 2,
4218 + 'max' => 8,
4219 + 'unit' => '',
4220 + 'value' => 4,
4879 4221 'tab' => 'general',
4880 4222 ],
4881 - 'gallery_style' => [
4882 - 'id' => 'gallery_style',
4883 - 'type' => 'select',
4884 - 'value' => 'bottom',
4885 - 'label' => esc_html__( 'Thumbnail Position/Gallery Style', 'shopbuilder' ),
4886 - 'isPro' => ! rtsb()->has_pro(),
4887 - 'options' => [
4888 - 'bottom' => esc_html__( 'Thumbnail Position Bottom', 'shopbuilder' ),
4889 - 'left' => esc_html__( 'Thumbnail Position Left', 'shopbuilder' ),
4890 - 'right' => esc_html__( 'Thumbnail Position Right', 'shopbuilder' ),
4891 - 'grid' => esc_html__( 'Grid View Images', 'shopbuilder' ),
4892 - ],
4893 - 'tab' => 'general',
4894 - ],
4895 - 'thumbnails_columns' => [
4896 - 'id' => 'thumbnails_columns',
4223 + 'thumbnails_columns_xs' => [
4224 + 'id' => 'thumbnails_columns_xs',
4897 4225 'type' => 'slider',
4898 - 'label' => esc_html__( 'Thumbnail Items', 'shopbuilder' ),
4899 - 'help' => esc_html__( 'Add slides per view, or items per row if the slider is not activated.', 'shopbuilder' ),
4226 + 'label' => esc_html__( 'Product Thumbnails Item Image For (Small Device)', 'shopbuilder' ),
4227 + 'help' => esc_html__( 'Product Thumbnails Item Image. Default value is: 3. Limit: 2-8. The field required for slider.', 'shopbuilder' ),
4900 4228 'min' => 2,
4901 4229 'max' => 8,
4902 4230 'unit' => '',
4903 - 'value' => 4,
4231 + 'value' => 3,
4904 4232 'tab' => 'general',
4905 4233 ],
4906 - 'thumbnails_gap' => [
4234 + 'thumbnails_gap' => [
4907 4235 'id' => 'thumbnails_gap',
4908 4236 'type' => 'slider',
4909 4237 'label' => esc_html__( 'Thumbnails Gap', 'shopbuilder' ),
4910 4238 'help' => esc_html__( 'Product Thumbnails Gap In Pixel. Default value is: 0. Limit: 0-50.', 'shopbuilder' ),
@@ -4910,58 +4238,10 @@
4910 4238 'help' => esc_html__( 'Product Thumbnails Gap In Pixel. Default value is: 0. Limit: 0-50.', 'shopbuilder' ),
4911 4239 'min' => 0,
4912 4240 'max' => 50,
4913 4241 'unit' => 'px',
4914 - 'value' => 10,
4242 + 'value' => 0,
4915 4243 'tab' => 'general',
4916 - ],
4917 - 'main_image_border_color' => [
4918 - 'id' => 'main_image_border_color',
4919 - 'label' => esc_html__( 'Main Image Border Color', 'shopbuilder' ),
4920 - 'tab' => 'styles',
4921 - 'type' => 'color',
4922 - 'dependency' => [
4923 - 'rules' => [
4924 - [
4925 - 'item' => 'modules.variation_gallery.gallery_style',
4926 - 'value' => 'grid',
4927 - 'operator' => '!=',
4928 - ],
4929 - ],
4930 - ],
4931 - ],
4932 - 'thumbnail_item_border_color' => [
4933 - 'id' => 'thumbnail_item_border_color',
4934 - 'label' => esc_html__( 'Thumbnail item Border Color', 'shopbuilder' ),
4935 - 'tab' => 'styles',
4936 - 'type' => 'color',
4937 - ],
4938 - 'thumbnail_active_border_color' => [
4939 - 'id' => 'thumbnail_active_border_color',
4940 - 'label' => esc_html__( 'Active Thumbnail Border Color', 'shopbuilder' ),
4941 - 'help' => esc_html__( 'Border color of the currently selected thumbnail.', 'shopbuilder' ),
4942 - 'tab' => 'styles',
4943 - 'type' => 'color',
4944 - ],
4945 - 'thumbnail_item_inner_padding' => [
4946 - 'id' => 'thumbnail_item_inner_padding',
4947 - 'type' => 'slider',
4948 - 'label' => esc_html__( 'Thumbnail Item Inner Padding', 'shopbuilder' ),
4949 - 'min' => 0,
4950 - 'max' => 30,
4951 - 'unit' => 'px',
4952 - 'value' => 10,
4953 - 'tab' => 'styles',
4954 - ],
4955 - 'thumbnail_item_border_radius' => [
4956 - 'id' => 'thumbnail_item_border_radius',
4957 - 'type' => 'slider',
4958 - 'label' => esc_html__( 'Thumbnail Item Border Radius', 'shopbuilder' ),
4959 - 'min' => 0,
4960 - 'max' => 30,
4961 - 'unit' => 'px',
4962 - 'value' => 5,
4963 - 'tab' => 'styles',
4964 4244 ],
4965 4245 ]
4966 4246 );
4967 4247 }