PluginProbe
ShopBuilder – WooCommerce Builder For Elementor / 3.1.3
ShopBuilder – WooCommerce Builder For Elementor v3.1.3
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 +163 -670 3.4.03.1.3 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;
@@ -68,8 +65,9 @@
68 65 'badge' => 'new',
69 66 'package' => 'free',
70 67 'active' => 'on',
71 68 'base_class' => VariationSwatches::class,
69 + 'category' => 'general',
72 70 'active_field' => [
73 71 'label' => esc_html__( 'Enable Variation Swatches Module?', 'shopbuilder' ),
74 72 'help' => esc_html__( 'Switch on to enable variation swatches module.', 'shopbuilder' ),
75 73 ],
@@ -95,8 +93,9 @@
95 93 'rtsb/module/variation_swatches/options',
96 94 [
97 95 'id' => 'variation_swatches',
98 96 'external' => true,
97 + 'category' => 'general',
99 98 'title' => esc_html__( 'Variation Swatches', 'shopbuilder' ),
100 99 'pluginSlug' => 'woo-product-variation-swatches',
101 100 'pluginIsInstalled' => Fns::check_plugin_installed( 'woo-product-variation-swatches/woo-product-variation-swatches.php' ),
102 101 'pluginIsActive' => Fns::check_plugin_active( 'woo-product-variation-swatches/woo-product-variation-swatches.php' ),
@@ -126,8 +125,9 @@
126 125 'badge' => 'new',
127 126 'package' => 'free',
128 127 'active' => 'on',
129 128 'base_class' => VariationGalleryInit::class,
129 + 'category' => 'general',
130 130 'active_field' => [
131 131 'label' => esc_html__( 'Enable Variation Gallery Module?', 'shopbuilder' ),
132 132 'help' => esc_html__( 'Switch on to enable variation gallery module.', 'shopbuilder' ),
133 133 ],
@@ -149,8 +149,9 @@
149 149 'rtsb/module/variation_gallery/options',
150 150 [
151 151 'id' => 'variation_gallery',
152 152 'external' => true,
153 + 'category' => 'general',
153 154 'title' => esc_html__( 'Variation Gallery', 'shopbuilder' ),
154 155 'pluginSlug' => 'woo-product-variation-gallery',
155 156 'pluginIsInstalled' => Fns::check_plugin_installed( 'woo-product-variation-gallery/woo-product-variation-gallery.php' ),
156 157 'pluginIsActive' => Fns::check_plugin_active( 'woo-product-variation-gallery/woo-product-variation-gallery.php' ),
@@ -178,8 +179,9 @@
178 179 [
179 180 'id' => 'quick_view',
180 181 'title' => esc_html__( 'Quick View', 'shopbuilder' ),
181 182 'base_class' => QuickView::class,
183 + 'category' => 'general',
182 184 'active' => 'on',
183 185 'package' => 'free',
184 186 'active_field' => [
185 187 'label' => esc_html__( 'Enable Quick View?', 'shopbuilder' ),
@@ -199,14 +201,14 @@
199 201 'loop_btn_position' => [
200 202 'id' => 'loop_btn_position',
201 203 'type' => 'select',
202 204 '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' ),
205 + 'label' => esc_html__( 'Shop Page Button Position', 'shopbuilder' ),
206 + 'help' => esc_html__( 'You can manage quick view button position in shop page.', 'shopbuilder' ),
205 207 'tab' => 'general',
206 208 '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' ),
209 + 'before_add_to_cart' => esc_html__( 'Before Add To Cart', 'shopbuilder' ),
210 + 'after_add_to_cart' => esc_html__( 'After Add To Cart', 'shopbuilder' ),
209 211 'shortcode' => esc_html__( 'Use Shortcode', 'shopbuilder' ),
210 212 'custom' => esc_html__( 'Custom Position', 'shopbuilder' ),
211 213 ],
212 214
@@ -290,11 +292,11 @@
290 292 ],
291 293
292 294 'modal_height' => [
293 295 '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',
296 + 'label' => esc_html__( 'Modal Height', 'shopbuilder' ),
297 + 'help' => esc_html__( 'Quick view button modal height. Example: 450px', 'shopbuilder' ),
298 + 'type' => 'text',
297 299 'value' => '',
298 300 'tab' => 'style',
299 301 ],
300 302
@@ -343,8 +345,9 @@
343 345 'title' => esc_html__( 'Wishlist', 'shopbuilder' ),
344 346 'package' => 'free',
345 347 'active' => 'on',
346 348 'base_class' => Wishlist::class,
349 + 'category' => 'general',
347 350 'active_field' => [
348 351 'label' => esc_html__( 'Enable Wishlist?', 'shopbuilder' ),
349 352 'help' => esc_html__( 'Switch on to enable wishlist module.', 'shopbuilder' ),
350 353 ],
@@ -376,9 +379,9 @@
376 379 ],
377 380 'wishlist_shop_wrapper_heading' => [
378 381 'id' => 'wishlist_shop_wrapper_heading',
379 382 'type' => 'title',
380 - 'label' => esc_html__( 'Product Showcase Settings', 'shopbuilder' ),
383 + 'label' => esc_html__( 'Shop Page Settings', 'shopbuilder' ),
381 384 'tab' => 'button',
382 385 ],
383 386 'show_btn_on_loop' => [
384 387 'id' => 'show_btn_on_loop',
@@ -383,9 +386,9 @@
383 386 'show_btn_on_loop' => [
384 387 'id' => 'show_btn_on_loop',
385 388 'value' => 'on',
386 389 'type' => 'switch',
387 - 'label' => esc_html__( 'Show in Product Showcase', 'shopbuilder' ),
390 + 'label' => esc_html__( 'Show in Shop Page', 'shopbuilder' ),
388 391 'tab' => 'button',
389 392 ],
390 393 'loop_btn_position' => [
391 394 'id' => 'loop_btn_position',
@@ -390,13 +393,13 @@
390 393 'loop_btn_position' => [
391 394 'id' => 'loop_btn_position',
392 395 'type' => 'select',
393 396 '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' ),
397 + 'label' => esc_html__( 'Shop Page Button Position', 'shopbuilder' ),
398 + 'help' => esc_html__( 'You can manage wishlist button position in shop page.', 'shopbuilder' ),
396 399 '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' ),
400 + 'before_add_to_cart' => esc_html__( 'Before Add To Cart', 'shopbuilder' ),
401 + 'after_add_to_cart' => esc_html__( 'After Add To Cart', 'shopbuilder' ),
399 402 'shortcode' => esc_html__( 'Use Shortcode', 'shopbuilder' ),
400 403 'custom' => esc_html__( 'Custom Position', 'shopbuilder' ),
401 404 ],
402 405 'dependency' => [
@@ -503,10 +506,10 @@
503 506 'help' => esc_html__( 'You can manage compare button position in single product page.', 'shopbuilder' ),
504 507 'type' => 'select',
505 508 'value' => 'custom',
506 509 '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' ),
510 + 'before_add_to_cart' => esc_html__( 'Before Add To Cart', 'shopbuilder' ),
511 + 'after_add_to_cart' => esc_html__( 'After Add To Cart', 'shopbuilder' ),
509 512 'after_thumbnail' => esc_html__( 'After Image', 'shopbuilder' ),
510 513 'after_summary' => esc_html__( 'After Summary', 'shopbuilder' ),
511 514 'shortcode' => esc_html__( 'Use Shortcode', 'shopbuilder' ),
512 515 'custom' => esc_html__( 'Custom Position', 'shopbuilder' ),
@@ -655,54 +658,20 @@
655 658 'label' => esc_html__( 'Wishlist Table Fields Visibility', 'shopbuilder' ),
656 659 'tab' => 'page',
657 660 ],
658 661
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 662 ]
691 663 ),
692 664 'tabs' => [
693 - 'general' => [
665 + 'general' => [
694 666 'title' => esc_html__( 'General', 'shopbuilder' ),
695 667 ],
696 - 'button' => [
668 + 'button' => [
697 669 'title' => esc_html__( 'Button', 'shopbuilder' ),
698 670 ],
699 - 'page' => [
671 + 'page' => [
700 672 'title' => esc_html__( 'Page', 'shopbuilder' ),
701 673 ],
702 - 'shortcodes' => [
703 - 'title' => esc_html__( 'Shortcodes', 'shopbuilder' ),
704 - ],
705 674 ],
706 675 ]
707 676 ),
708 677 'compare' => apply_filters(
@@ -709,8 +678,9 @@
709 678 'rtsb/module/compare/options',
710 679 [
711 680 'id' => 'compare',
712 681 'base_class' => Compare::class,
682 + 'category' => 'general',
713 683 'title' => esc_html__( 'Product Compare', 'shopbuilder' ),
714 684 'package' => 'free',
715 685 'active' => 'on',
716 686 'active_field' => [
@@ -722,9 +692,9 @@
722 692 [
723 693 'compare_shop_wrapper_heading' => [
724 694 'id' => 'compare_shop_wrapper_heading',
725 695 'type' => 'title',
726 - 'label' => esc_html__( 'Product Showcase Settings', 'shopbuilder' ),
696 + 'label' => esc_html__( 'Shop Page Settings', 'shopbuilder' ),
727 697 'tab' => 'button',
728 698 ],
729 699 'show_btn_on_loop' => [
730 700 'id' => 'show_btn_on_loop',
@@ -729,9 +699,9 @@
729 699 'show_btn_on_loop' => [
730 700 'id' => 'show_btn_on_loop',
731 701 'value' => 'on',
732 702 'type' => 'switch',
733 - 'label' => esc_html__( 'Show in Product Showcase', 'shopbuilder' ),
703 + 'label' => esc_html__( 'Show in Shop Page', 'shopbuilder' ),
734 704 'tab' => 'button',
735 705 ],
736 706 'loop_btn_position' => [
737 707 'id' => 'loop_btn_position',
@@ -736,13 +706,13 @@
736 706 'loop_btn_position' => [
737 707 'id' => 'loop_btn_position',
738 708 'type' => 'select',
739 709 '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' ),
710 + 'label' => esc_html__( 'Shop Page Button Position', 'shopbuilder' ),
711 + 'help' => esc_html__( 'You can manage wishlist button position in shop page.', 'shopbuilder' ),
742 712 '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' ),
713 + 'before_add_to_cart' => esc_html__( 'Before Add To Cart', 'shopbuilder' ),
714 + 'after_add_to_cart' => esc_html__( 'After Add To Cart', 'shopbuilder' ),
745 715 'shortcode' => esc_html__( 'Use Shortcode', 'shopbuilder' ),
746 716 'custom' => esc_html__( 'Custom Position', 'shopbuilder' ),
747 717 ],
748 718 'dependency' => [
@@ -849,10 +819,10 @@
849 819 'help' => esc_html__( 'You can manage compare button position in single product page.', 'shopbuilder' ),
850 820 'type' => 'select',
851 821 'value' => 'custom',
852 822 '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' ),
823 + 'before_add_to_cart' => esc_html__( 'Before Add To Cart', 'shopbuilder' ),
824 + 'after_add_to_cart' => esc_html__( 'After Add To Cart', 'shopbuilder' ),
855 825 'after_thumbnail' => esc_html__( 'After Image', 'shopbuilder' ),
856 826 'after_summary' => esc_html__( 'After Summary', 'shopbuilder' ),
857 827 'shortcode' => esc_html__( 'Use Shortcode', 'shopbuilder' ),
858 828 'custom' => esc_html__( 'Custom Position', 'shopbuilder' ),
@@ -1432,9 +1402,9 @@
1432 1402 'rtsb/module/bulk_discounts/options',
1433 1403 [
1434 1404 'id' => 'bulk_discounts',
1435 1405 'active' => '',
1436 - 'title' => esc_html__( 'Volume Discount', 'shopbuilder' ),
1406 + 'title' => esc_html__( 'Bulk Discounts', 'shopbuilder' ),
1437 1407 'active_field' => [
1438 1408 'label' => esc_html__( 'Enable Bulk Discounts?', 'shopbuilder' ),
1439 1409 'help' => esc_html__( 'Switch on to enable bulk discounts module.', 'shopbuilder' ),
1440 1410 ],
@@ -1488,8 +1458,9 @@
1488 1458 'rtsb/module/pdf_invoice/options',
1489 1459 [
1490 1460 'id' => 'pdf_invoice',
1491 1461 'active' => '',
1462 + 'badge' => 'new',
1492 1463 'title' => esc_html__( 'PDF Invoice', 'shopbuilder' ),
1493 1464 'active_field' => [
1494 1465 'label' => esc_html__( 'Enable PDF Invoice?', 'shopbuilder' ),
1495 1466 'help' => esc_html__( 'Switch on to enable PDF Invoice module.', 'shopbuilder' ),
@@ -1497,278 +1468,14 @@
1497 1468 'package' => $this->pro_package(),
1498 1469 'fields' => Fns::pro_version_notice( '2.1.0', 'general', 'ShopBuilder Pro', false ),
1499 1470 ]
1500 1471 ),
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 - ),
1472 +
1608 1473 ];
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 1474 return apply_filters( 'rtsb/core/modules/raw_list', $list );
1627 1475 }
1628 1476
1629 1477 /**
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 1478 * Get All Menu
1772 1479 */
1773 1480 public function get_all_menu() {
1774 1481 $manus = [
@@ -3050,179 +2757,8 @@
3050 2757 ],
3051 2758 ],
3052 2759 ],
3053 2760 ],
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 2761 'footer_menu_styles_settings' => [
3226 2762 'id' => 'footer_menu_styles_settings',
3227 2763 'type' => 'title',
3228 2764 'tab' => 'styles',
@@ -3442,10 +2978,10 @@
3442 2978 'options' => [
3443 2979 'above_image' => esc_html__( 'Floating Above Image', 'shopbuilder' ),
3444 2980 'before_product_title' => esc_html__( 'Before Product Title', 'shopbuilder' ),
3445 2981 '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' ),
2982 + 'before_add_to_cart' => esc_html__( 'Before Add To Cart', 'shopbuilder' ),
2983 + 'after_add_to_cart' => esc_html__( 'After Add To Cart', 'shopbuilder' ),
3448 2984 'custom' => esc_html__( 'Custom Position', 'shopbuilder' ),
3449 2985 ],
3450 2986 'tab' => 'group',
3451 2987 ],
@@ -3524,10 +3060,10 @@
3524 3060 'label' => esc_html__( 'Product Page Group Position', 'shopbuilder' ),
3525 3061 'help' => esc_html__( 'Choose the group badges position in product page.', 'shopbuilder' ),
3526 3062 'options' => [
3527 3063 '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' ),
3064 + 'before_add_to_cart' => esc_html__( 'Before Add To Cart', 'shopbuilder' ),
3065 + 'after_add_to_cart' => esc_html__( 'After Add To Cart', 'shopbuilder' ),
3530 3066 'after_summary' => esc_html__( 'After Summary', 'shopbuilder' ),
3531 3067 'after_short_desc' => esc_html__( 'After Short Description', 'shopbuilder' ),
3532 3068 'shortcode' => esc_html__( 'Use Shortcode', 'shopbuilder' ),
3533 3069 'custom' => esc_html__( 'Custom Position', 'shopbuilder' ),
@@ -3627,8 +3163,9 @@
3627 3163 'type' => 'repeaters',
3628 3164 'label' => '',
3629 3165 'tab' => 'badges',
3630 3166 'repeat' => [
3167 +
3631 3168 'title' => [
3632 3169 'id' => 'title',
3633 3170 'label' => esc_html__( 'Badge Name', 'shopbuilder' ),
3634 3171 'help' => esc_html__( 'Enter badge name.', 'shopbuilder' ),
@@ -4133,8 +3670,26 @@
4133 3670 'label' => esc_html__( 'Enable Tooltip', 'shopbuilder' ),
4134 3671 'help' => esc_html__( 'Enable / Disable plugin default tooltip on each product attribute.', 'shopbuilder' ),
4135 3672 'tab' => 'general',
4136 3673 ],
3674 + 'shape_style' => [
3675 + 'id' => 'shape_style',
3676 + 'label' => esc_html__( 'Default Shape Style', 'shopbuilder' ),
3677 + 'help' => esc_html__( 'Attribute Shape Style. Note: This option will not be applied to radio and button attributes.', 'shopbuilder' ),
3678 + 'type' => 'image_select',
3679 + 'value' => 'rounded',
3680 + 'options' => [
3681 + 'rounded' => [
3682 + 'label' => esc_html__( 'Rounded Shape', 'shopbuilder' ),
3683 + 'url' => esc_url( rtsb()->get_assets_uri( 'images/variation-swatch/rounded-shape.svg' ) ),
3684 + ],
3685 + 'squared' => [
3686 + 'label' => esc_html__( 'Squared Shape', 'shopbuilder' ),
3687 + 'url' => esc_url( rtsb()->get_assets_uri( 'images/variation-swatch/squared-shape.svg' ) ),
3688 + ],
3689 + ],
3690 + 'tab' => 'general',
3691 + ],
4137 3692 'shape_style_checkmark' => [
4138 3693 'id' => 'shape_style_checkmark',
4139 3694 'type' => 'switch',
4140 3695 'isPro' => ! rtsb()->has_pro(),
@@ -4304,27 +3859,8 @@
4304 3859 ],
4305 3860 ],
4306 3861 'tab' => 'showcase_shop',
4307 3862 ],
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 3863 'showcase_swatches_position' => [
4328 3864 'id' => 'showcase_swatches_position',
4329 3865 'label' => esc_html__( 'Swatches Position', 'shopbuilder' ),
4330 3866 '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' ),
@@ -4334,10 +3870,10 @@
4334 3870 'options' => apply_filters(
4335 3871 'rtsb_showcase_swatches_positions',
4336 3872 [
4337 3873 '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' ),
3874 + 'before_add_to_cart' => esc_html__( 'Before Add To Cart', 'shopbuilder' ),
3875 + 'after_add_to_cart' => esc_html__( 'After Add To Cart', 'shopbuilder' ),
4340 3876 ]
4341 3877 ),
4342 3878 'dependency' => [
4343 3879 'rules' => [
@@ -4568,9 +4104,9 @@
4568 4104 'attribute_border_radius' => [
4569 4105 'id' => 'attribute_border_radius',
4570 4106 'label' => esc_html__( 'Attribute Border Radius', 'shopbuilder' ),
4571 4107 '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' ),
4108 + 'help' => esc_html__( 'Set the border radius (in px) for attribute items to control how rounded the corners appear.', 'shopbuilder' ),
4573 4109 'type' => 'slider',
4574 4110 'min' => 0,
4575 4111 'max' => 200,
4576 4112 'unit' => 'px',
@@ -4632,19 +4168,8 @@
4632 4168 'unit' => 'px',
4633 4169 'value' => 16,
4634 4170 'tab' => 'style',
4635 4171 ],
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 4172 'showcase_attribute_size' => [
4648 4173 'id' => 'showcase_attribute_size',
4649 4174 'type' => 'title',
4650 4175 'label' => esc_html__( 'Shop Page / Product Showcase Attributes Size', 'shopbuilder' ),
@@ -4682,19 +4207,8 @@
4682 4207 'unit' => 'px',
4683 4208 'value' => 16,
4684 4209 'tab' => 'style',
4685 4210 ],
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 4211 'tooltip_style' => [
4698 4212 'id' => 'tooltip_style',
4699 4213 'type' => 'title',
4700 4214 'label' => esc_html__( 'Tooltip Style', 'shopbuilder' ),
@@ -4699,22 +4213,8 @@
4699 4213 'type' => 'title',
4700 4214 'label' => esc_html__( 'Tooltip Style', 'shopbuilder' ),
4701 4215 'tab' => 'style',
4702 4216 ],
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 4217 'tooltip_images_padding' => [
4718 4218 'id' => 'tooltip_images_padding',
4719 4219 'label' => esc_html__( 'Tooltip Images Padding', 'shopbuilder' ),
4720 4220 'type' => 'slider',
@@ -4723,16 +4223,29 @@
4723 4223 'unit' => 'px',
4724 4224 'value' => 3,
4725 4225 'tab' => 'style',
4726 4226 ],
4227 + 'tooltip_bg_color' => [
4228 + 'id' => 'tooltip_bg_color',
4229 + 'label' => esc_html__( 'Tooltip Background Color', 'shopbuilder' ),
4230 + 'type' => 'color',
4231 + 'value' => '#333333',
4232 + 'tab' => 'style',
4233 + ],
4727 4234 'tooltip_image_bg_color' => [
4728 - 'id' => 'tooltip_image_bg_color',
4235 + 'id' => 'tooltip_bg_color',
4729 4236 'label' => esc_html__( 'Tooltip Image Background Color', 'shopbuilder' ),
4730 4237 'type' => 'color',
4731 4238 'value' => '#333333',
4732 4239 'tab' => 'style',
4733 4240 ],
4734 -
4241 + 'tooltip_text_color' => [
4242 + 'id' => 'tooltip_text_color',
4243 + 'label' => esc_html__( 'Tooltip Text Color', 'shopbuilder' ),
4244 + 'type' => 'color',
4245 + 'value' => '#ffffff',
4246 + 'tab' => 'style',
4247 + ],
4735 4248 ]
4736 4249 ); // @phpstan-ignore-line
4737 4250 }
4738 4251 /**
@@ -4741,15 +4254,9 @@
4741 4254 public function get_variation_gallery_fields() {
4742 4255 return apply_filters(
4743 4256 'rtsb/module/variation_gallery/fields',
4744 4257 [
4745 - 'main_image_controls_title' => [
4746 - 'id' => 'main_image_controls_title',
4747 - 'type' => 'title',
4748 - 'label' => esc_html__( 'Main Image Controls', 'shopbuilder' ),
4749 - 'tab' => 'general',
4750 - ],
4751 - 'image_zoom' => [
4258 + 'image_zoom' => [
4752 4259 'id' => 'image_zoom',
4753 4260 'type' => 'switch',
4754 4261 'default' => false,
4755 4262 'label' => esc_html__( 'Zoom Gallery image', 'shopbuilder' ),
@@ -4754,9 +4261,9 @@
4754 4261 'default' => false,
4755 4262 'label' => esc_html__( 'Zoom Gallery image', 'shopbuilder' ),
4756 4263 'tab' => 'general',
4757 4264 ],
4758 - 'lightBox' => [
4265 + 'lightBox' => [
4759 4266 'id' => 'lightBox',
4760 4267 'type' => 'switch',
4761 4268 'default' => false,
4762 4269 'label' => esc_html__( 'Enable Images lightBox', 'shopbuilder' ),
@@ -4761,9 +4268,9 @@
4761 4268 'default' => false,
4762 4269 'label' => esc_html__( 'Enable Images lightBox', 'shopbuilder' ),
4763 4270 'tab' => 'general',
4764 4271 ],
4765 - 'lightBox_button_position' => [
4272 + 'lightBox_button_position' => [
4766 4273 'id' => 'lightBox_button_position',
4767 4274 'type' => 'select',
4768 4275 'value' => 'top-right',
4769 4276 'label' => esc_html__( 'Zoom Button Position', 'shopbuilder' ),
@@ -4775,26 +4282,61 @@
4775 4282 'bottom-left' => esc_html__( 'Bottom Left', 'shopbuilder' ),
4776 4283 ],
4777 4284 'tab' => 'general',
4778 4285 ],
4779 -
4780 - 'adaptive_height' => [
4286 + 'thumbnails_columns' => [
4287 + 'id' => 'thumbnails_columns',
4288 + 'type' => 'slider',
4289 + 'label' => esc_html__( 'Thumbnails Items per row / slider view', 'shopbuilder' ),
4290 + 'help' => esc_html__( 'Product Thumbnails Item Image. Default value is: 4. Limit: 2-8. The field required for slider.', 'shopbuilder' ),
4291 + 'min' => 2,
4292 + 'max' => 8,
4293 + 'unit' => '',
4294 + 'value' => 4,
4295 + 'tab' => 'general',
4296 + ],
4297 + 'thumbnails_gap' => [
4298 + 'id' => 'thumbnails_gap',
4299 + 'type' => 'slider',
4300 + 'label' => esc_html__( 'Thumbnails Gap', 'shopbuilder' ),
4301 + 'help' => esc_html__( 'Product Thumbnails Gap In Pixel. Default value is: 0. Limit: 0-50.', 'shopbuilder' ),
4302 + 'min' => 0,
4303 + 'max' => 50,
4304 + 'unit' => 'px',
4305 + 'value' => 0,
4306 + 'tab' => 'general',
4307 + ],
4308 + 'gallery_style' => [
4309 + 'id' => 'gallery_style',
4310 + 'type' => 'select',
4311 + 'value' => 'bottom',
4312 + 'label' => esc_html__( 'Gallery Style', 'shopbuilder' ),
4313 + 'isPro' => ! rtsb()->has_pro(),
4314 + 'options' => [
4315 + 'bottom' => esc_html__( 'Thumbnail Position Bottom', 'shopbuilder' ),
4316 + 'left' => esc_html__( 'Thumbnail Position Left', 'shopbuilder' ),
4317 + 'right' => esc_html__( 'Thumbnail Position Right', 'shopbuilder' ),
4318 + 'grid' => esc_html__( 'Grid View Images', 'shopbuilder' ),
4319 + ],
4320 + 'tab' => 'general',
4321 + ],
4322 + 'adaptive_height' => [
4781 4323 'id' => 'adaptive_height',
4782 4324 'type' => 'switch',
4783 4325 'default' => false,
4784 - 'label' => esc_html__( 'Main Images Slider Adaptive Height', 'shopbuilder' ),
4326 + 'label' => esc_html__( 'Main Slider Adaptive Height', 'shopbuilder' ),
4785 4327 'tab' => 'general',
4786 4328 'dependency' => [
4787 4329 'rules' => [
4788 4330 [
4789 4331 'item' => 'modules.variation_gallery.gallery_style',
4790 - 'value' => 'grid',
4791 - 'operator' => '!=',
4332 + 'value' => 'bottom',
4333 + 'operator' => '==',
4792 4334 ],
4793 4335 ],
4794 4336 ],
4795 4337 ],
4796 - 'main_slider_alignment' => [
4338 + 'main_slider_alignment' => [
4797 4339 'id' => 'main_slider_alignment',
4798 4340 'type' => 'switch',
4799 4341 'value' => 'center',
4800 4342 'label' => esc_html__( 'Main Image Middle Position', 'shopbuilder' ),
@@ -4809,13 +4351,14 @@
4809 4351 ],
4810 4352 ],
4811 4353 ],
4812 4354 ],
4813 - 'main_image_transition_effect' => [
4355 +
4356 + 'main_image_transition_effect' => [
4814 4357 'id' => 'main_image_transition_effect',
4815 4358 'type' => 'select',
4816 4359 'value' => 'slide',
4817 - 'label' => esc_html__( 'Transition Effect For Main Image Carousel', 'shopbuilder' ),
4360 + 'label' => esc_html__( 'Main Image Transition Effect', 'shopbuilder' ),
4818 4361 'isPro' => ! rtsb()->has_pro(),
4819 4362 'options' => [
4820 4363 'slide' => esc_html__( 'Slide', 'shopbuilder' ),
4821 4364 'fade' => esc_html__( 'Fade', 'shopbuilder' ),
@@ -4830,92 +4373,49 @@
4830 4373 ],
4831 4374 ],
4832 4375 ],
4833 4376 ],
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' => [
4377 + 'thumb_image_section_width' => [
4378 + 'id' => 'thumb_image_section_width',
4379 + 'type' => 'slider',
4380 + 'label' => esc_html__( 'Thumbnail Image Section Width', 'shopbuilder' ),
4381 + 'help' => esc_html__( 'Product Thumbnails Section Width In Pixel.', 'shopbuilder' ),
4382 + 'min' => 150,
4383 + 'max' => 1000,
4384 + 'unit' => 'px',
4385 + 'value' => 150,
4386 + 'tab' => 'general',
4387 + 'dependency' => [
4852 4388 'rules' => [
4853 4389 [
4854 - 'item' => 'modules.variation_gallery.preloader',
4855 - 'value' => 'on',
4856 - 'operator' => '==',
4390 + 'item' => 'modules.variation_gallery.gallery_style',
4391 + 'value' => [ 'left', 'right' ],
4392 + 'operator' => 'in',
4857 4393 ],
4858 4394 ],
4859 4395 ],
4860 4396 ],
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' ),
4397 + 'image_section_height' => [
4398 + 'id' => 'image_section_height',
4399 + 'type' => 'slider',
4400 + 'label' => esc_html__( 'Slider Height/Image Section Height', 'shopbuilder' ),
4401 + 'help' => esc_html__( 'Product Thumbnails And Main Image Section Height In Pixel.', 'shopbuilder' ),
4402 + 'min' => 400,
4403 + 'max' => 2000,
4404 + 'unit' => 'px',
4405 + 'value' => 500,
4406 + 'tab' => 'general',
4407 + 'dependency' => [
4408 + 'rules' => [
4409 + [
4410 + 'item' => 'modules.variation_gallery.gallery_style',
4411 + 'value' => [ 'left', 'right' ],
4412 + 'operator' => 'in',
4413 + ],
4414 + ],
4872 4415 ],
4873 - 'tab' => 'general',
4874 4416 ],
4875 - 'gallery_thumbnail_controls_title' => [
4876 - 'id' => 'gallery_thumbnail_controls_title',
4877 - 'type' => 'title',
4878 - 'label' => esc_html__( 'Gallery / Thumbnail Item Controls', 'shopbuilder' ),
4879 - 'tab' => 'general',
4880 - ],
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',
4897 - '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' ),
4900 - 'min' => 2,
4901 - 'max' => 8,
4902 - 'unit' => '',
4903 - 'value' => 4,
4904 - 'tab' => 'general',
4905 - ],
4906 - 'thumbnails_gap' => [
4907 - 'id' => 'thumbnails_gap',
4908 - 'type' => 'slider',
4909 - 'label' => esc_html__( 'Thumbnails Gap', 'shopbuilder' ),
4910 - 'help' => esc_html__( 'Product Thumbnails Gap In Pixel. Default value is: 0. Limit: 0-50.', 'shopbuilder' ),
4911 - 'min' => 0,
4912 - 'max' => 50,
4913 - 'unit' => 'px',
4914 - 'value' => 10,
4915 - 'tab' => 'general',
4916 - ],
4917 - 'main_image_border_color' => [
4417 + 'main_image_border_color' => [
4918 4418 'id' => 'main_image_border_color',
4919 4419 'label' => esc_html__( 'Main Image Border Color', 'shopbuilder' ),
4920 4420 'tab' => 'styles',
4921 4421 'type' => 'color',
@@ -4928,22 +4428,15 @@
4928 4428 ],
4929 4429 ],
4930 4430 ],
4931 4431 ],
4932 - 'thumbnail_item_border_color' => [
4432 + 'thumbnail_item_border_color' => [
4933 4433 'id' => 'thumbnail_item_border_color',
4934 4434 'label' => esc_html__( 'Thumbnail item Border Color', 'shopbuilder' ),
4935 4435 'tab' => 'styles',
4936 4436 'type' => 'color',
4937 4437 ],
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' => [
4438 + 'thumbnail_item_inner_padding' => [
4946 4439 'id' => 'thumbnail_item_inner_padding',
4947 4440 'type' => 'slider',
4948 4441 'label' => esc_html__( 'Thumbnail Item Inner Padding', 'shopbuilder' ),
4949 4442 'min' => 0,
@@ -4951,9 +4444,9 @@
4951 4444 'unit' => 'px',
4952 4445 'value' => 10,
4953 4446 'tab' => 'styles',
4954 4447 ],
4955 - 'thumbnail_item_border_radius' => [
4448 + 'thumbnail_item_border_radius' => [
4956 4449 'id' => 'thumbnail_item_border_radius',
4957 4450 'type' => 'slider',
4958 4451 'label' => esc_html__( 'Thumbnail Item Border Radius', 'shopbuilder' ),
4959 4452 'min' => 0,