PluginProbe
ShopBuilder – WooCommerce Builder For Elementor / 1.1.4
ShopBuilder – WooCommerce Builder For Elementor v1.1.4
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
shopbuilder / app / Elementor / Widgets / Controls / StyleFields.php

StyleFields.php in ShopBuilder – WooCommerce Builder For Elementor 1.1.4, at app/Elementor/Widgets/Controls/StyleFields.php

1,976 lines 73.0 KB
No matching file
Up and down to move Enter to open Esc to close
Raw Download Zip
1 <?php
2 /**
3 * Elementor Style Fields Class.
4 *
5 * This class contains all the common fields for Style tab.
6 *
7 * @package RadiusTheme\SB
8 */
9
10 namespace RadiusTheme\SB\Elementor\Widgets\Controls;
11
12 use Elementor\Controls_Manager;
13 use RadiusTheme\SB\Helpers\Fns;
14 use RadiusTheme\SB\Elementor\Helper\ControlHelper;
15
16
17 // Do not allow directly accessing this file.
18 if ( ! defined( 'ABSPATH' ) ) {
19 exit( 'This script cannot be accessed directly.' );
20 }
21
22 /**
23 * Elementor Style Fields Class.
24 */
25 class StyleFields {
26 /**
27 * Tab name.
28 *
29 * @access private
30 * @static
31 *
32 * @var string
33 */
34 private static $tab = 'style';
35
36 /**
37 * Color Scheme Section
38 *
39 * @param object $obj Reference object.
40 * @return array
41 */
42 public static function color_scheme( $obj ): array {
43 $css_selectors = $obj->selectors['color_scheme'];
44
45 $fields['color_scheme_section'] = $obj->start_section( esc_html__( 'Color Scheme', 'shopbuilder' ), self::$tab );
46
47 $fields['primary_color'] = [
48 'type' => 'color',
49 'label' => esc_html__( 'Primary Color', 'shopbuilder' ),
50 'separator' => 'default',
51 'default' => '#0066ff',
52 'selectors' => [
53 $css_selectors['primary_color'] => '--rtsb-color-primary: {{VALUE}}',
54 ],
55 ];
56
57 $fields['secondary_color'] = [
58 'type' => 'color',
59 'label' => esc_html__( 'Secondary Color', 'shopbuilder' ),
60 'separator' => 'default',
61 'default' => '#111',
62 'selectors' => [
63 $css_selectors['secondary_color'] => '--rtsb-color-secondary: {{VALUE}}',
64 ],
65 ];
66
67 $fields['color_scheme_section_end'] = $obj->end_section();
68
69 return apply_filters( 'rtsb/elements/elementor/color_style_control', $fields, $obj );
70 }
71
72 /**
73 * Product Title Section
74 *
75 * @param object $obj Reference object.
76 * @return array
77 */
78 public static function product_title( $obj ): array {
79 $css_selectors = $obj->selectors['product_title'];
80 $title = esc_html__( 'Product Title', 'shopbuilder' );
81 $condition = [
82 'show_title' => [ 'yes' ],
83 ];
84 $selectors = self::title_selectors( $css_selectors );
85
86 $fields = ControlHelper::general_elementor_style( 'product_title', $title, $obj, $condition, $selectors );
87
88 return apply_filters( 'rtsb/elements/elementor/title_style_control', $fields, $obj );
89 }
90
91 public static function section_title( $obj ): array {
92 $css_selectors = $obj->selectors['section_title'];
93 $title = esc_html__( 'Section Title', 'shopbuilder' );
94 $condition = [
95 'show_section_title' => [ 'yes' ],
96 ];
97 $selectors = self::title_selectors( $css_selectors );
98
99 $fields = ControlHelper::general_elementor_style( 'section_title', $title, $obj, $condition, $selectors );
100
101 return apply_filters( 'rtsb/elements/elementor/section_title_style_control', $fields, $obj );
102 }
103
104 /**
105 * Category Title Section
106 *
107 * @param object $obj Reference object.
108 * @return array
109 */
110 public static function cat_title( $obj ): array {
111 $css_selectors = $obj->selectors['cat_title'];
112 $title = esc_html__( 'Category Title', 'shopbuilder' );
113 $condition = [
114 'show_title' => [ 'yes' ],
115 ];
116 $selectors = self::title_selectors( $css_selectors );
117
118 $fields = ControlHelper::general_elementor_style('category_title', $title, $obj, $condition, $selectors );
119
120 return apply_filters( 'rtsb/elements/elementor/cat_title_style_control', $fields, $obj );
121 }
122
123 /**
124 * Short Description Section
125 *
126 * @param object $obj Reference object.
127 * @return array
128 */
129 public static function short_description( $obj ): array {
130 $css_selectors = $obj->selectors['short_description'];
131 $title = esc_html__( 'Short Description', 'shopbuilder' );
132 $condition = [
133 'show_short_desc' => [ 'yes' ],
134 ];
135 $selectors = self::excerpt_selectors( $css_selectors );
136
137 $fields = ControlHelper::general_elementor_style( 'short_description', $title, $obj, $condition, $selectors );
138
139 unset(
140 $fields['short_description_color_tabs'],
141 $fields['short_description_color_tab'],
142 $fields['short_description_color_tab_end'],
143 $fields['short_description_hover_color_tab'],
144 $fields['short_description_hover_color'],
145 $fields['short_description_hover_bg_color'],
146 $fields['short_description_hover_color_tab_end'],
147 $fields['short_description_color_tabs_end'],
148 $fields['short_description_border_hover_color']
149 );
150
151 return apply_filters( 'rtsb/elements/elementor/excerpt_style_control', $fields, $obj );
152 }
153
154 /**
155 * Category Description Section
156 *
157 * @param object $obj Reference object.
158 * @return array
159 */
160 public static function cat_description( $obj ): array {
161 $css_selectors = $obj->selectors['cat_description'];
162 $title = esc_html__( 'Category Description', 'shopbuilder' );
163 $condition = [
164 'show_short_desc' => [ 'yes' ],
165 ];
166 $selectors = self::excerpt_selectors( $css_selectors );
167
168 $fields = ControlHelper::general_elementor_style( 'category_description', $title, $obj, $condition, $selectors );
169
170 unset(
171 $fields['category_description_color_tabs'],
172 $fields['category_description_color_tab'],
173 $fields['category_description_color_tab_end'],
174 $fields['category_description_hover_color_tab'],
175 $fields['category_description_hover_color'],
176 $fields['category_description_hover_bg_color'],
177 $fields['category_description_hover_color_tab_end'],
178 $fields['category_description_color_tabs_end'],
179 $fields['category_description_border_hover_color']
180 );
181
182 return apply_filters( 'rtsb/elements/elementor/cat_excerpt_style_control', $fields, $obj );
183 }
184
185 /**
186 * Count Section
187 *
188 * @param object $obj Reference object.
189 * @return array
190 */
191 public static function count( $obj ): array {
192 $css_selectors = $obj->selectors['count'];
193 $title = esc_html__( 'Product Count', 'shopbuilder' );
194 $condition = [
195 'show_count' => [ 'yes' ],
196 ];
197 $selectors = [
198 'typography' => $css_selectors['typography'],
199 'alignment' => [ $css_selectors['alignment'] => 'text-align: {{VALUE}};' ],
200 'color' => [ $css_selectors['color'] => 'color: {{VALUE}};' ],
201 'bg_color' => [ $css_selectors['bg_color'] => 'background-color: {{VALUE}};' ],
202 'hover_color' => [ $css_selectors['hover_color'] => 'color: {{VALUE}};' ],
203 'hover_bg_color' => [ $css_selectors['hover_bg_color'] => 'background-color: {{VALUE}};' ],
204 'border' => $css_selectors['border'],
205 'border_hover_color' => [ $css_selectors['border_hover_color'] => 'border-color: {{VALUE}};' ],
206 'border_radius' => [ $css_selectors['border_radius'] => 'border-radius: {{TOP}}{{UNIT}} {{RIGHT}}{{UNIT}} {{BOTTOM}}{{UNIT}} {{LEFT}}{{UNIT}};' ],
207 'padding' => [ $css_selectors['padding'] => 'padding: {{TOP}}{{UNIT}} {{RIGHT}}{{UNIT}} {{BOTTOM}}{{UNIT}} {{LEFT}}{{UNIT}};' ],
208 'margin' => [ $css_selectors['margin'] => 'margin: {{TOP}}{{UNIT}} {{RIGHT}}{{UNIT}} {{BOTTOM}}{{UNIT}} {{LEFT}}{{UNIT}};' ],
209 ];
210
211 $fields = ControlHelper::general_elementor_style( 'product_count' , $title, $obj, $condition, $selectors );
212
213 $extra_controls = [];
214
215 $extra_controls['product_count_radius'] = [
216 'mode' => 'responsive',
217 'type' => 'dimensions',
218 'label' => esc_html__( 'Border Radius', 'shopbuilder' ),
219 'size_units' => [ 'px', '%', 'em' ],
220 'selectors' => $selectors['border_radius'],
221 ];
222
223 $fields = Fns::insert_controls( 'product_count_border_hover_color', $fields, $extra_controls, true );
224
225 return apply_filters( 'rtsb/elements/elementor/cat_count_style_control', $fields, $obj );
226 }
227
228 /**
229 * Product Price Section
230 *
231 * @param object $obj Reference object.
232 * @return array
233 */
234 public static function product_price( $obj ): array {
235 $css_selectors = $obj->selectors['product_price'];
236 $title = esc_html__( 'Product Price', 'shopbuilder' );
237 $condition = [
238 'show_price' => [ 'yes' ],
239 ];
240 $selectors = [
241 'typography' => $css_selectors['typography'],
242 'alignment' => [ $css_selectors['alignment'] => 'text-align: {{VALUE}};' ],
243 'color' => [ $css_selectors['color'] => 'color: {{VALUE}};' ],
244 'regular_color' => [ $css_selectors['regular_color'] => 'color: {{VALUE}};' ],
245 'border' => $css_selectors['border'],
246 'border_hover_color' => [ $css_selectors['border_hover_color'] => 'border-color: {{VALUE}};' ],
247 'padding' => [ $css_selectors['padding'] => 'padding: {{TOP}}{{UNIT}} {{RIGHT}}{{UNIT}} {{BOTTOM}}{{UNIT}} {{LEFT}}{{UNIT}};' ],
248 'margin' => [ $css_selectors['margin'] => 'margin: {{TOP}}{{UNIT}} {{RIGHT}}{{UNIT}} {{BOTTOM}}{{UNIT}} {{LEFT}}{{UNIT}};' ],
249 ];
250
251 $fields = ControlHelper::general_elementor_style( 'product_price', $title, $obj, $condition, $selectors );
252
253 unset(
254 $fields['product_price_color_tabs'],
255 $fields['product_price_color_tab'],
256 $fields['product_price_color_tab_end'],
257 $fields['product_price_hover_color_tab'],
258 $fields['product_price_hover_color'],
259 $fields['product_price_hover_bg_color'],
260 $fields['product_price_hover_color_tab_end'],
261 $fields['product_price_color_tabs_end'],
262 $fields['product_price_border_hover_color']
263 );
264
265 $fields['product_price_color']['label'] = esc_html__( 'Sale Price Color', 'shopbuilder' );
266 $fields['product_price_bg_color']['label'] = esc_html__( 'Regular Price Color', 'shopbuilder' );
267 $fields['product_price_bg_color']['selectors'] = $selectors['regular_color'];
268
269 return apply_filters( 'rtsb/elements/elementor/price_style_control', $fields, $obj );
270 }
271
272 /**
273 * Product Rating Section
274 *
275 * @param object $obj Reference object.
276 * @return array
277 */
278 public static function product_rating( $obj ): array {
279 $css_selectors = $obj->selectors['product_rating'];
280 $title = esc_html__( 'Product Rating', 'shopbuilder' );
281 $condition = [
282 'show_rating' => [ 'yes' ],
283 ];
284 $selectors = [
285 'typography' => [ $css_selectors['typography'] => 'font-size: {{SIZE}}{{UNIT}};' ],
286 'alignment' => [ $css_selectors['alignment'] => 'justify-content: {{VALUE}};' ],
287 'color' => [ $css_selectors['color'] => 'color: {{VALUE}} !important;' ],
288 'bg_color' => [ $css_selectors['bg_color'] => 'color: {{VALUE}} !important;' ],
289 'padding' => [ $css_selectors['padding'] => 'letter-spacing: {{SIZE}}{{UNIT}};' ],
290 'margin' => [ $css_selectors['margin'] => 'margin: {{TOP}}{{UNIT}} {{RIGHT}}{{UNIT}} {{BOTTOM}}{{UNIT}} {{LEFT}}{{UNIT}};' ],
291 ];
292
293 $fields = ControlHelper::general_elementor_style( 'product_rating', $title, $obj, $condition, $selectors );
294
295 unset(
296 $fields['product_rating_color_tabs'],
297 $fields['product_rating_color_tab'],
298 $fields['product_rating_color_tab_end'],
299 $fields['product_rating_hover_color_tab'],
300 $fields['product_rating_hover_color'],
301 $fields['product_rating_hover_bg_color'],
302 $fields['product_rating_hover_color_tab_end'],
303 $fields['product_rating_color_tabs_end'],
304 $fields['product_rating_border_note'],
305 $fields['rtsb_el_product_rating_border'],
306 $fields['product_rating_border_hover_color']
307 );
308
309 $fields['rtsb_el_product_rating_typography'] = [
310 'type' => 'slider',
311 'mode' => 'responsive',
312 'label' => esc_html__( 'Star Size', 'shopbuilder' ),
313 'size_units' => [ 'px' ],
314 'range' => [
315 'px' => [
316 'min' => 0,
317 'max' => 100,
318 ],
319 ],
320 'default' => [
321 'unit' => 'px',
322 'size' => 14,
323 ],
324 'separator' => 'default',
325 'selectors' => $selectors['typography'],
326 ];
327
328 $fields['product_rating_bg_color']['label'] = esc_html__( 'Star Border Color', 'shopbuilder' );
329
330 $fields['product_rating_padding'] = [
331 'type' => 'slider',
332 'mode' => 'responsive',
333 'label' => esc_html__( 'Spacing', 'shopbuilder' ),
334 'size_units' => [ 'px' ],
335 'range' => [
336 'px' => [
337 'min' => -10,
338 'max' => 50,
339 ],
340 ],
341 'default' => [
342 'unit' => 'px',
343 'size' => 3,
344 ],
345 'selectors' => $selectors['padding'],
346 'separator' => 'default',
347 ];
348
349 return apply_filters( 'rtsb/elements/elementor/rating_style_control', $fields, $obj );
350 }
351
352 /**
353 * Product Badges Section
354 *
355 * @param object $obj Reference object.
356 * @return array
357 */
358 public static function product_badges( $obj ): array {
359 $css_selectors = $obj->selectors['product_badges'];
360 $title = esc_html__( 'Badges', 'shopbuilder' );
361 $condition = [
362 'show_badges' => [ 'yes' ],
363 'layout!' => [ 'category-layout1', 'category-layout2' ],
364 ];
365 $selectors = [
366 'typography' => $css_selectors['typography'],
367 'color' => [ $css_selectors['color'] => 'color: {{VALUE}};' ],
368 'bg_color' => [ $css_selectors['bg_color'] => 'background-color: {{VALUE}};' ],
369 'border_color' => [ $css_selectors['border_color'] => 'border-color: {{VALUE}};' ],
370 'border_radius' => [ $css_selectors['border_radius'] => 'border-radius: {{TOP}}{{UNIT}} {{RIGHT}}{{UNIT}} {{BOTTOM}}{{UNIT}} {{LEFT}}{{UNIT}};' ],
371 'padding' => [ $css_selectors['padding'] => 'padding: {{TOP}}{{UNIT}} {{RIGHT}}{{UNIT}} {{BOTTOM}}{{UNIT}} {{LEFT}}{{UNIT}};' ],
372 'margin' => [ $css_selectors['margin'] => 'margin: {{TOP}}{{UNIT}} {{RIGHT}}{{UNIT}} {{BOTTOM}}{{UNIT}} {{LEFT}}{{UNIT}};' ],
373 'position_x' => [ $css_selectors['position_x'] => 'left: {{SIZE}}{{UNIT}};' ],
374 'position_y' => [ $css_selectors['position_y'] => 'top: {{SIZE}}{{UNIT}};' ],
375 ];
376
377 $fields = ControlHelper::general_elementor_style( 'badges', $title, $obj, $condition, $selectors );
378
379 unset(
380 $fields['badges_color_tabs'],
381 $fields['badges_color_tab'],
382 $fields['badges_color_tab_end'],
383 $fields['badges_hover_color_tab'],
384 $fields['badges_hover_color'],
385 $fields['badges_hover_bg_color'],
386 $fields['badges_hover_color_tab_end'],
387 $fields['badges_color_tabs_end'],
388 $fields['badges_border_note'],
389 $fields['rtsb_el_badges_border'],
390 $fields['badges_border_hover_color']
391 );
392
393 $extra_controls = [];
394
395 $extra_controls['badges_position'] = [
396 'type' => 'select2',
397 'label' => esc_html__( 'Vertical Alignment', 'shopbuilder' ),
398 'options' => [
399 'top' => esc_html__( 'Top', 'shopbuilder' ),
400 'middle' => esc_html__( 'Middle', 'shopbuilder' ),
401 'bottom' => esc_html__( 'Bottom', 'shopbuilder' ),
402 ],
403 'default' => 'top',
404 ];
405
406 $extra_controls['badge_x_position'] = [
407 'type' => 'slider',
408 'mode' => 'responsive',
409 'label' => esc_html__( 'Badge Position (Horizontal)', 'shopbuilder' ),
410 'size_units' => [ 'px', '%' ],
411 'range' => [
412 'px' => [
413 'min' => 0,
414 'max' => 300,
415 'step' => 1,
416 ],
417 '%' => [
418 'min' => 0,
419 'max' => 100,
420 'step' => 1,
421 ],
422 ],
423 'description' => esc_html__( 'Please select the horizontal badge position.', 'shopbuilder' ),
424 'selectors' => $selectors['position_x'],
425 ];
426
427 $extra_controls['badge_y_position'] = [
428 'type' => 'slider',
429 'mode' => 'responsive',
430 'label' => esc_html__( 'Badge Position (Vertical)', 'shopbuilder' ),
431 'size_units' => [ 'px', '%' ],
432 'range' => [
433 'px' => [
434 'min' => 0,
435 'max' => 300,
436 'step' => 1,
437 ],
438 '%' => [
439 'min' => 0,
440 'max' => 100,
441 'step' => 1,
442 ],
443 ],
444 'description' => esc_html__( 'Please select the vertical badge position.', 'shopbuilder' ),
445 'selectors' => $selectors['position_y'],
446 ];
447
448 $fields = Fns::insert_controls( 'badges_alignment', $fields, $extra_controls, true );
449
450 $extra_controls['badges_border_color'] = [
451 'type' => 'color',
452 'label' => esc_html__( 'border Color', 'shopbuilder' ),
453 'selectors' => ! empty( $selectors['border_color'] ) ? $selectors['border_color'] : [],
454 'separator' => 'default',
455 ];
456
457 $extra_controls['badges_border_radius'] = [
458 'mode' => 'responsive',
459 'type' => 'dimensions',
460 'label' => esc_html__( 'Border Radius', 'shopbuilder' ),
461 'size_units' => [ 'px', '%', 'em' ],
462 'selectors' => $selectors['border_radius'],
463 ];
464
465 $fields = Fns::insert_controls( 'badges_bg_color', $fields, $extra_controls, true );
466
467 return apply_filters( 'rtsb/elements/elementor/badges_style_control', $fields, $obj );
468 }
469
470 /**
471 * Product Categories Section
472 *
473 * @param object $obj Reference object.
474 * @return array
475 */
476 public static function product_categories( $obj ): array {
477 $css_selectors = $obj->selectors['product_categories'];
478 $title = esc_html__( 'Product Categories', 'shopbuilder' );
479 $condition = [
480 'show_categories' => [ 'yes' ],
481 ];
482 $selectors = [
483 'typography' => $css_selectors['typography'],
484 'alignment' => [ $css_selectors['alignment'] => 'justify-content: {{VALUE}};' ],
485 'color' => [ $css_selectors['color'] => 'color: {{VALUE}};' ],
486 'bg_color' => [ $css_selectors['bg_color'] => 'background-color: {{VALUE}};' ],
487 'hover_color' => [ $css_selectors['hover_color'] => 'color: {{VALUE}};' ],
488 'hover_bg_color' => [ $css_selectors['hover_bg_color'] => 'background-color: {{VALUE}};' ],
489 'border' => $css_selectors['typography'],
490 'border_hover_color' => [ $css_selectors['border_hover_color'] => 'border-color: {{VALUE}};' ],
491 'border_radius' => [ $css_selectors['border_radius'] => 'border-radius: {{TOP}}{{UNIT}} {{RIGHT}}{{UNIT}} {{BOTTOM}}{{UNIT}} {{LEFT}}{{UNIT}};' ],
492 'padding' => [ $css_selectors['padding'] => 'padding: {{TOP}}{{UNIT}} {{RIGHT}}{{UNIT}} {{BOTTOM}}{{UNIT}} {{LEFT}}{{UNIT}};' ],
493 'margin' => [ $css_selectors['margin'] => 'margin: {{TOP}}{{UNIT}} {{RIGHT}}{{UNIT}} {{BOTTOM}}{{UNIT}} {{LEFT}}{{UNIT}};' ],
494 'wrapper_margin' => [ $css_selectors['wrapper_margin'] => 'margin: {{TOP}}{{UNIT}} {{RIGHT}}{{UNIT}} {{BOTTOM}}{{UNIT}} {{LEFT}}{{UNIT}};' ],
495 ];
496
497 $fields = ControlHelper::general_elementor_style( 'product_categories', $title, $obj, $condition, $selectors );
498
499 $fields['product_categories_alignment']['options'] = [
500 'flex-start' => [
501 'title' => esc_html__( 'Left', 'shopbuilder' ),
502 'icon' => 'eicon-text-align-left',
503 ],
504 'center' => [
505 'title' => esc_html__( 'Center', 'shopbuilder' ),
506 'icon' => 'eicon-text-align-center',
507 ],
508 'flex-end' => [
509 'title' => esc_html__( 'Right', 'shopbuilder' ),
510 'icon' => 'eicon-text-align-right',
511 ],
512 ];
513
514 $extra_controls = [];
515
516 $extra_controls['product_categories_radius'] = [
517 'mode' => 'responsive',
518 'type' => 'dimensions',
519 'label' => esc_html__( 'Border Radius', 'shopbuilder' ),
520 'size_units' => [ 'px', '%', 'em' ],
521 'selectors' => $selectors['border_radius'],
522 ];
523
524 $fields = Fns::insert_controls( 'product_categories_border_hover_color', $fields, $extra_controls, true );
525
526 $extra_controls['product_categories_wrapper_margin'] = [
527 'mode' => 'responsive',
528 'type' => 'dimensions',
529 'label' => esc_html__( 'Wrapper Margin', 'shopbuilder' ),
530 'size_units' => [ 'px', '%', 'em' ],
531 'selectors' => $selectors['wrapper_margin'],
532 ];
533
534 $fields = Fns::insert_controls( 'product_categories_margin', $fields, $extra_controls, true );
535
536 return apply_filters( 'rtsb/elements/elementor/categories_style_control', $fields, $obj );
537 }
538
539 /**
540 * Image Section
541 *
542 * @param object $obj Reference object.
543 * @param array $conditions Conditions.
544 * @return array
545 */
546 public static function image( $obj, $conditions ): array {
547 $css_selectors = $obj->selectors['image'];
548 $title = esc_html__( 'Image Styles', 'shopbuilder' );
549 $selectors = [
550 'overlay' => $css_selectors['overlay'],
551 'hover_overlay' => $css_selectors['hover_overlay'],
552 'border' => $css_selectors['border'],
553 'width' => [ $css_selectors['width'] => 'width: {{SIZE}}{{UNIT}};' ],
554 'max_width' => [ $css_selectors['max_width'] => 'max-width: {{SIZE}}{{UNIT}};' ],
555 'border_radius' => [ $css_selectors['border_radius'] => 'border-radius: {{TOP}}{{UNIT}} {{RIGHT}}{{UNIT}} {{BOTTOM}}{{UNIT}} {{LEFT}}{{UNIT}};' ],
556 'margin' => [ $css_selectors['margin'] => 'margin: {{TOP}}{{UNIT}} {{RIGHT}}{{UNIT}} {{BOTTOM}}{{UNIT}} {{LEFT}}{{UNIT}};' ],
557 ];
558
559 $fields = ControlHelper::general_elementor_style( 'image_styles', $title, $obj, [], $selectors, $conditions );
560
561 unset(
562 $fields['rtsb_el_image_styles_typography'],
563 $fields['image_styles_alignment'],
564 $fields['image_styles_color_tabs'],
565 $fields['image_styles_color_tab'],
566 $fields['image_styles_color_note'],
567 $fields['image_styles_color'],
568 $fields['image_styles_bg_color'],
569 $fields['image_styles_color_tab_end'],
570 $fields['image_styles_hover_color_tab'],
571 $fields['image_styles_hover_color'],
572 $fields['image_styles_hover_bg_color'],
573 $fields['image_styles_hover_color_tab_end'],
574 $fields['image_styles_color_tabs_end'],
575 $fields['image_styles_border_hover_color'],
576 $fields['image_styles_padding']
577 );
578
579 $fields['image_styles_typo_note']['raw'] = sprintf(
580 '<h3 class="rtsb-elementor-group-heading">%s</h3>',
581 esc_html__( 'Overlay', 'shopbuilder' )
582 );
583 $fields['image_styles_typo_note']['separator'] = 'before';
584 $fields['image_styles_typo_note']['condition'] = [ 'show_overlay' => [ 'yes' ] ];
585 $fields['image_styles_margin']['separator'] = 'default';
586
587 $extra_controls = [];
588
589 $extra_controls['image_styles_dimension_note'] = $obj->el_heading( esc_html__( 'Dimension', 'shopbuilder' ), 'default' );
590
591 $extra_controls['image_styles_width'] = [
592 'type' => 'slider',
593 'label' => esc_html__( 'Image Width', 'shopbuilder' ),
594 'size_units' => [ '%' , 'px'],
595 'range' => [
596 '%' => [
597 'min' => 0,
598 'max' => 100,
599 'step' => 1,
600 ],
601 'px' => [
602 'min' => 0,
603 'max' => 500,
604 'step' => 1,
605 ],
606 ],
607 'separator' => 'default',
608 'selectors' => $selectors['width'],
609 ];
610
611 $extra_controls['image_styles_max_width'] = [
612 'type' => 'slider',
613 'label' => esc_html__( 'Image Max-Width', 'shopbuilder' ),
614 'size_units' => [ '%', 'px' ],
615 'range' => [
616 '%' => [
617 'min' => 0,
618 'max' => 100,
619 'step' => 1,
620 ],
621 'px' => [
622 'min' => 0,
623 'max' => 500,
624 'step' => 1,
625 ],
626
627 ],
628 'selectors' => $selectors['max_width'],
629 ];
630
631 $fields = Fns::insert_controls( 'image_styles_typo_note', $fields, $extra_controls );
632
633 $extra_controls['rtsb_el_image_styles_overlay'] = [
634 'mode' => 'group',
635 'type' => 'background',
636 'label' => esc_html__( 'Image Overlay', 'shopbuilder' ),
637 'types' => [ 'classic', 'gradient' ],
638 'exclude' => [ 'image' ],
639 'fields_options' => [
640 'background' => [
641 'label' => esc_html__( 'Overlay Background Type', 'shopbuilder' ),
642 ],
643 'color' => [
644 'label' => 'Background',
645 ],
646 'color_b' => [
647 'label' => 'Background 2',
648 ],
649 ],
650 'separator' => 'default',
651 'selector' => $selectors['overlay'],
652 'condition' => [ 'show_overlay' => [ 'yes' ] ],
653 ];
654
655 $extra_controls['rtsb_el_image_styles_hover_overlay'] = [
656 'mode' => 'group',
657 'type' => 'background',
658 'label' => esc_html__( 'Hover Image Overlay', 'shopbuilder' ),
659 'types' => [ 'classic', 'gradient' ],
660 'exclude' => [ 'image' ],
661 'fields_options' => [
662 'background' => [
663 'label' => esc_html__( 'Hover Overlay Background Type', 'shopbuilder' ),
664 ],
665 'color' => [
666 'label' => 'Hover Background',
667 ],
668 'color_b' => [
669 'label' => 'Hover Background 2',
670 ],
671 ],
672 'separator' => 'default',
673 'selector' => $selectors['hover_overlay'],
674 'condition' => [ 'show_overlay' => [ 'yes' ] ],
675 ];
676
677 $fields = Fns::insert_controls( 'image_styles_typo_note', $fields, $extra_controls, true );
678
679 $extra_controls['image_styles_radius'] = [
680 'mode' => 'responsive',
681 'type' => 'dimensions',
682 'label' => esc_html__( 'Border Radius', 'shopbuilder' ),
683 'size_units' => [ 'px', '%', 'em' ],
684 'selectors' => $selectors['border_radius'],
685 ];
686
687 $fields = Fns::insert_controls( 'rtsb_el_image_styles_border', $fields, $extra_controls, true );
688
689 return apply_filters( 'rtsb/elements/elementor/image_style_control', $fields, $obj );
690 }
691
692 /**
693 * Product Image Section
694 *
695 * @param object $obj Reference object.
696 * @return array
697 */
698 public static function product_image( $obj ): array {
699 $conditions = [
700 'relation' => 'and',
701 'terms' => [
702 [
703 'relation' => 'or',
704 'terms' => [
705 [
706 'name' => 'show_featured_image',
707 'operator' => '==',
708 'value' => 'yes',
709 ],
710 ],
711 ],
712 ],
713 ];
714
715 return self::image( $obj, $conditions );
716 }
717
718 /**
719 * Category Image Section
720 *
721 * @param object $obj Reference object.
722 * @return array
723 */
724 public static function category_image( $obj ): array {
725 $conditions = [
726 'relation' => 'and',
727 'terms' => [
728 [
729 'relation' => 'or',
730 'terms' => [
731 [
732 'name' => 'show_cat_image',
733 'operator' => '==',
734 'value' => 'yes',
735 ],
736 [
737 'name' => 'show_custom_image',
738 'operator' => '==',
739 'value' => 'yes',
740 ],
741 ],
742 ],
743 ],
744 ];
745
746 return self::image( $obj, $conditions );
747 }
748
749 /**
750 * Pagination Section
751 *
752 * @param object $obj Reference object.
753 * @return array
754 */
755 public static function pagination( $obj ): array {
756 $css_selectors = $obj->selectors['pagination'];
757 $title = esc_html__( 'Pagination Buttons', 'shopbuilder' );
758 $condition = [ 'show_pagination' => [ 'yes' ] ];
759 $selectors = [
760 'typography' => $css_selectors['typography'],
761 'alignment' => [ $css_selectors['alignment'] => 'justify-content: {{VALUE}};' ],
762 'width' => [ $css_selectors['width'] => 'width: {{SIZE}}{{UNIT}};' ],
763 'height' => [ $css_selectors['height'] => 'height: {{SIZE}}{{UNIT}};' ],
764 'color' => [ $css_selectors['color'] => 'color: {{VALUE}};' ],
765 'bg_color' => [ $css_selectors['bg_color'] => 'background-color: {{VALUE}};' ],
766 'active_color' => [ $css_selectors['active_color'] => 'color: {{VALUE}};' ],
767 'active_bg_color' => [ $css_selectors['active_bg_color'] => 'background-color: {{VALUE}};' ],
768 'hover_color' => [ $css_selectors['hover_color'] => 'color: {{VALUE}};' ],
769 'hover_bg_color' => [ $css_selectors['hover_bg_color'] => 'background-color: {{VALUE}};' ],
770 'border' => $css_selectors['border'],
771 'border_hover_color' => [ $css_selectors['border_hover_color'] => 'border-color: {{VALUE}};' ],
772 'border_active_color' => [ $css_selectors['border_active_color'] => 'border-color: {{VALUE}};' ],
773 'border_radius' => [ $css_selectors['border_radius'] => 'border-radius: {{TOP}}{{UNIT}} {{RIGHT}}{{UNIT}} {{BOTTOM}}{{UNIT}} {{LEFT}}{{UNIT}};' ],
774 'spacing' => [ $css_selectors['spacing'] => 'gap: {{SIZE}}{{UNIT}};' ],
775 'margin' => [ $css_selectors['margin'] => 'margin: {{TOP}}{{UNIT}} {{RIGHT}}{{UNIT}} {{BOTTOM}}{{UNIT}} {{LEFT}}{{UNIT}};' ],
776 ];
777
778 $fields = ControlHelper::general_elementor_style( 'pagination_buttons', $title, $obj, $condition, $selectors );
779
780 unset( $fields['pagination_buttons_padding'] );
781
782 $fields['pagination_buttons_alignment']['options'] = [
783 'flex-start' => [
784 'title' => esc_html__( 'Left', 'shopbuilder' ),
785 'icon' => 'eicon-text-align-left',
786 ],
787 'center' => [
788 'title' => esc_html__( 'Center', 'shopbuilder' ),
789 'icon' => 'eicon-text-align-center',
790 ],
791 'flex-end' => [
792 'title' => esc_html__( 'Right', 'shopbuilder' ),
793 'icon' => 'eicon-text-align-right',
794 ],
795 ];
796
797 $extra_controls = [];
798
799 $extra_controls['pagination_buttons_width'] = [
800 'type' => 'slider',
801 'mode' => 'responsive',
802 'label' => esc_html__( 'Width', 'shopbuilder' ),
803 'size_units' => [ 'px' ],
804 'range' => [
805 'px' => [
806 'min' => 0,
807 'max' => 100,
808 ],
809 ],
810 'default' => [
811 'unit' => 'px',
812 'size' => 36,
813 ],
814 'selectors' => $selectors['width'],
815 ];
816
817 $extra_controls['pagination_buttons_height'] = [
818 'type' => 'slider',
819 'mode' => 'responsive',
820 'label' => esc_html__( 'Height', 'shopbuilder' ),
821 'size_units' => [ 'px' ],
822 'range' => [
823 'px' => [
824 'min' => 0,
825 'max' => 100,
826 ],
827 ],
828 'default' => [
829 'unit' => 'px',
830 'size' => 36,
831 ],
832 'selectors' => $selectors['height'],
833 ];
834
835 $fields = Fns::insert_controls( 'pagination_buttons_color_note', $fields, $extra_controls );
836
837 $extra_controls['pagination_buttons_active_color'] = [
838 'type' => 'color',
839 'label' => esc_html__( 'Active Color', 'shopbuilder' ),
840 'selectors' => $selectors['active_color'],
841 'separator' => 'default',
842 ];
843
844 $extra_controls['pagination_buttons_active_bg_color'] = [
845 'type' => 'color',
846 'label' => esc_html__( 'Active Background Color', 'shopbuilder' ),
847 'selectors' => $selectors['active_bg_color'],
848 'separator' => 'default',
849 ];
850
851 $fields = Fns::insert_controls( 'pagination_buttons_bg_color', $fields, $extra_controls, true );
852
853 $extra_controls['pagination_buttons_active_border_color'] = [
854 'type' => 'color',
855 'label' => esc_html__( 'Active Border Color', 'shopbuilder' ),
856 'condition' => [ 'rtsb_el_pagination_buttons_border_border!' => [ '' ] ],
857 'selectors' => $selectors['border_active_color'],
858 ];
859
860 $extra_controls['pagination_buttons_radius'] = [
861 'mode' => 'responsive',
862 'type' => 'dimensions',
863 'label' => esc_html__( 'Border Radius', 'shopbuilder' ),
864 'size_units' => [ 'px', '%', 'em' ],
865 'selectors' => $selectors['border_radius'],
866 ];
867
868 $fields = Fns::insert_controls( 'pagination_buttons_border_hover_color', $fields, $extra_controls, true );
869
870 $extra_controls['pagination_buttons_spacing'] = [
871 'type' => 'slider',
872 'mode' => 'responsive',
873 'label' => esc_html__( 'Spacing', 'shopbuilder' ),
874 'size_units' => [ 'px' ],
875 'range' => [
876 'px' => [
877 'min' => 0,
878 'max' => 100,
879 ],
880 ],
881 'default' => [
882 'unit' => 'px',
883 'size' => 3,
884 ],
885 'selectors' => $selectors['spacing'],
886 'separator' => 'default',
887 ];
888
889 $fields = Fns::insert_controls( 'pagination_buttons_spacing_note', $fields, $extra_controls, true );
890
891 return apply_filters( 'rtsb/elements/elementor/pagination_style_control', $fields, $obj );
892 }
893
894 /**
895 * Product Add to Cart Section
896 *
897 * @param object $obj Reference object.
898 * @return array
899 */
900 public static function product_add_to_cart( $obj ): array {
901 $css_selectors = $obj->selectors['product_add_to_cart'];
902 $title = esc_html__( 'Add to Cart Button', 'shopbuilder' );
903 $condition = [
904 'show_add_to_cart' => [ 'yes' ],
905 ];
906 $selectors = [
907 'typography' => $css_selectors['typography'],
908 'icon_size' => [
909 $css_selectors['icon_size']['font_size'] => 'font-size: {{SIZE}}{{UNIT}};',
910 $css_selectors['icon_size']['width'] => 'width: {{SIZE}}{{UNIT}};',
911 ],
912 'cart_icon_spacing' => [
913 $css_selectors['cart_icon_spacing']['margin_left'] => 'margin-left: {{SIZE}}{{UNIT}};',
914 $css_selectors['cart_icon_spacing']['margin_right'] => 'margin-right: {{SIZE}}{{UNIT}};',
915 ],
916 'color' => [ $css_selectors['color'] => 'color: {{VALUE}};' ],
917 'bg_color' => [ $css_selectors['bg_color'] => 'background-color: {{VALUE}};' ],
918 'icon_color' => [ $css_selectors['icon_color'] => 'color: {{VALUE}};' ],
919 'hover_color' => [ $css_selectors['hover_color'] => 'color: {{VALUE}};' ],
920 'hover_bg_color' => [ $css_selectors['hover_bg_color'] => 'background-color: {{VALUE}};' ],
921 'hover_icon_color' => [ $css_selectors['hover_icon_color'] => 'color: {{VALUE}};' ],
922 'border' => $css_selectors['border'],
923 'border_hover_color' => [ $css_selectors['border_hover_color'] => 'border-color: {{VALUE}};' ],
924 'border_radius' => [ $css_selectors['border_radius'] => 'border-radius: {{TOP}}{{UNIT}} {{RIGHT}}{{UNIT}} {{BOTTOM}}{{UNIT}} {{LEFT}}{{UNIT}};' ],
925 'padding' => [ $css_selectors['padding'] => 'padding: {{TOP}}{{UNIT}} {{RIGHT}}{{UNIT}} {{BOTTOM}}{{UNIT}} {{LEFT}}{{UNIT}};' ],
926 'margin' => [ $css_selectors['margin'] => 'margin: {{TOP}}{{UNIT}} {{RIGHT}}{{UNIT}} {{BOTTOM}}{{UNIT}} {{LEFT}}{{UNIT}};' ],
927 ];
928
929 $fields = ControlHelper::general_elementor_style('add_to_cart_button', $title, $obj, $condition, $selectors );
930
931 $fields['add_to_cart_button_alignment'] = [
932 'type' => 'slider',
933 'mode' => 'responsive',
934 'label' => esc_html__( 'Icon Size', 'shopbuilder' ),
935 'size_units' => [ 'px' ],
936 'range' => [
937 'px' => [
938 'min' => 0,
939 'max' => 100,
940 ],
941 ],
942 'condition' => [
943 'show_cart_icon' => [ 'yes' ],
944 ],
945 'selectors' => $selectors['icon_size'],
946 ];
947
948 $extra_controls = [];
949
950 $extra_controls['cart_icon_alignment'] = [
951 'type' => 'choose',
952 'label' => esc_html__( 'Icon Alignment', 'shopbuilder' ),
953 'options' => [
954 'left' => [
955 'title' => esc_html__( 'Left', 'shopbuilder' ),
956 'icon' => 'eicon-arrow-left',
957 ],
958 'right' => [
959 'title' => esc_html__( 'Right', 'shopbuilder' ),
960 'icon' => 'eicon-arrow-right',
961 ],
962 ],
963 'default' => 'left',
964 'toggle' => true,
965 'condition' => [
966 'show_cart_text' => [ 'yes' ],
967 'show_cart_icon' => [ 'yes' ],
968 ],
969 ];
970
971 $extra_controls['cart_icon_spacing'] = [
972 'type' => 'slider',
973 'mode' => 'responsive',
974 'label' => esc_html__( 'Icon Spacing', 'shopbuilder' ),
975 'size_units' => [ 'px' ],
976 'range' => [
977 'px' => [
978 'min' => 0,
979 'max' => 100,
980 ],
981 ],
982 'default' => [
983 'unit' => 'px',
984 'size' => 8,
985 ],
986 'condition' => [
987 'show_cart_text' => [ 'yes' ],
988 'show_cart_icon' => [ 'yes' ],
989 ],
990 'selectors' => $selectors['cart_icon_spacing'],
991 ];
992
993 $fields = Fns::insert_controls( 'add_to_cart_button_alignment', $fields, $extra_controls, true );
994
995 $extra_controls['add_to_cart_button_icon_color'] = [
996 'type' => 'color',
997 'label' => esc_html__( 'Icon Color', 'shopbuilder' ),
998 'selectors' => $selectors['icon_color'],
999 'separator' => 'default',
1000 ];
1001
1002 $fields = Fns::insert_controls( 'add_to_cart_button_bg_color', $fields, $extra_controls, true );
1003
1004 $extra_controls['add_to_cart_button_hover_icon_color'] = [
1005 'type' => 'color',
1006 'label' => esc_html__( 'Hover Icon Color', 'shopbuilder' ),
1007 'selectors' => $selectors['hover_icon_color'],
1008 'separator' => 'default',
1009 ];
1010
1011 $fields = Fns::insert_controls( 'add_to_cart_button_hover_bg_color', $fields, $extra_controls, true );
1012
1013 $extra_controls['add_to_cart_button_radius'] = [
1014 'mode' => 'responsive',
1015 'type' => 'dimensions',
1016 'label' => esc_html__( 'Border Radius', 'shopbuilder' ),
1017 'size_units' => [ 'px', '%', 'em' ],
1018 'selectors' => $selectors['border_radius'],
1019 ];
1020
1021 $fields = Fns::insert_controls( 'add_to_cart_button_border_hover_color', $fields, $extra_controls, true );
1022
1023 return apply_filters( 'rtsb/elements/elementor/add_to_cart_style_control', $fields, $obj );
1024 }
1025
1026 /**
1027 * Product Compare Section
1028 *
1029 * @param object $obj Reference object.
1030 * @return array
1031 */
1032 public static function product_compare( $obj ): array {
1033 $css_selectors = $obj->selectors['product_compare'];
1034 $title = esc_html__( 'Compare Button', 'shopbuilder' );
1035 $condition = [
1036 'show_compare' => [ 'yes' ],
1037 ];
1038 $selectors = self::action_btn_selectors( $css_selectors );
1039
1040 $fields = ControlHelper::general_elementor_style( 'compare_button', $title, $obj, $condition, $selectors );
1041
1042 unset( $fields['compare_button_alignment'] );
1043
1044 $fields['rtsb_el_compare_button_typography'] = [
1045 'type' => 'slider',
1046 'mode' => 'responsive',
1047 'label' => esc_html__( 'Icon Size', 'shopbuilder' ),
1048 'size_units' => [ 'px' ],
1049 'range' => [
1050 'px' => [
1051 'min' => 0,
1052 'max' => 100,
1053 ],
1054 ],
1055 'condition' => [
1056 'show_cart_icon' => [ 'yes' ],
1057 ],
1058 'selectors' => $selectors['icon_size'],
1059 'separator' => 'default',
1060 ];
1061
1062 $extra_controls = [];
1063
1064 $extra_controls['compare_button_radius'] = [
1065 'mode' => 'responsive',
1066 'type' => 'dimensions',
1067 'label' => esc_html__( 'Border Radius', 'shopbuilder' ),
1068 'size_units' => [ 'px', '%', 'em' ],
1069 'selectors' => $selectors['border_radius'],
1070 ];
1071
1072 $fields = Fns::insert_controls( 'compare_button_border_hover_color', $fields, $extra_controls, true );
1073
1074 return apply_filters( 'rtsb/elements/elementor/compare_style_control', $fields, $obj );
1075 }
1076
1077 /**
1078 * Product Wishlist Section
1079 *
1080 * @param object $obj Reference object.
1081 * @return array
1082 */
1083 public static function product_wishlist( $obj ): array {
1084 $css_selectors = $obj->selectors['product_wishlist'];
1085 $title = esc_html__( 'Wishlist Button', 'shopbuilder' );
1086 $condition = [
1087 'show_wishlist' => [ 'yes' ],
1088 ];
1089 $selectors = self::action_btn_selectors( $css_selectors );
1090
1091 $fields = ControlHelper::general_elementor_style( 'wishlist_button', $title, $obj, $condition, $selectors );
1092
1093 unset( $fields['wishlist_button_alignment'] );
1094
1095 $fields['rtsb_el_wishlist_button_typography'] = [
1096 'type' => 'slider',
1097 'mode' => 'responsive',
1098 'label' => esc_html__( 'Icon Size', 'shopbuilder' ),
1099 'size_units' => [ 'px' ],
1100 'range' => [
1101 'px' => [
1102 'min' => 0,
1103 'max' => 100,
1104 ],
1105 ],
1106 'condition' => [
1107 'show_cart_icon' => [ 'yes' ],
1108 ],
1109 'selectors' => $selectors['icon_size'],
1110 'separator' => 'default',
1111 ];
1112
1113 $extra_controls = [];
1114
1115 $extra_controls['wishlist_button_radius'] = [
1116 'mode' => 'responsive',
1117 'type' => 'dimensions',
1118 'label' => esc_html__( 'Border Radius', 'shopbuilder' ),
1119 'size_units' => [ 'px', '%', 'em' ],
1120 'selectors' => $selectors['border_radius'],
1121 ];
1122
1123 $fields = Fns::insert_controls( 'wishlist_button_border_hover_color', $fields, $extra_controls, true );
1124
1125 return apply_filters( 'rtsb/elements/elementor/wishlist_style_control', $fields, $obj );
1126 }
1127
1128 /**
1129 * Product Quick View Section
1130 *
1131 * @param object $obj Reference object.
1132 * @return array
1133 */
1134 public static function product_quick_view( $obj ): array {
1135 $css_selectors = $obj->selectors['product_quick_view'];
1136 $title = esc_html__( 'Quick View Button', 'shopbuilder' );
1137 $condition = [
1138 'show_quick_view' => [ 'yes' ],
1139 ];
1140 $selectors = self::action_btn_selectors( $css_selectors );
1141
1142 $fields = ControlHelper::general_elementor_style('quick_view_button', $title, $obj, $condition, $selectors );
1143
1144 unset( $fields['quick_view_button_alignment'] );
1145
1146 $fields['rtsb_el_quick_view_button_typography'] = [
1147 'type' => 'slider',
1148 'mode' => 'responsive',
1149 'label' => esc_html__( 'Icon Size', 'shopbuilder' ),
1150 'size_units' => [ 'px' ],
1151 'range' => [
1152 'px' => [
1153 'min' => 0,
1154 'max' => 100,
1155 ],
1156 ],
1157 'condition' => [
1158 'show_cart_icon' => [ 'yes' ],
1159 ],
1160 'selectors' => $selectors['icon_size'],
1161 'separator' => 'default',
1162 ];
1163
1164 $extra_controls = [];
1165
1166 $extra_controls['quick_view_button_radius'] = [
1167 'mode' => 'responsive',
1168 'type' => 'dimensions',
1169 'label' => esc_html__( 'Border Radius', 'shopbuilder' ),
1170 'size_units' => [ 'px', '%', 'em' ],
1171 'selectors' => $selectors['border_radius'],
1172 ];
1173
1174 $fields = Fns::insert_controls( 'quick_view_button_border_hover_color', $fields, $extra_controls, true );
1175
1176 return apply_filters( 'rtsb/elements/elementor/quick_view_style_control', $fields, $obj );
1177 }
1178
1179 /**
1180 * Hover Icon Button Section
1181 *
1182 * @param object $obj Reference object.
1183 * @return array
1184 */
1185 public static function hover_icon_button( $obj ): array {
1186 $css_selectors = $obj->selectors['hover_icon_button'];
1187 $title = esc_html__( 'Hover Icon Button', 'shopbuilder' );
1188 $condition = [
1189 'layout' => [ 'grid-layout2', 'slider-layout2' ],
1190 ];
1191 $selectors = [
1192 'typography' => $css_selectors['typography'],
1193 'icon_size' => [ $css_selectors['icon_size'] => 'font-size: {{SIZE}}{{UNIT}}' ],
1194 'hover_icon_spacing' => [ $css_selectors['hover_icon_spacing'] => 'margin-left: {{SIZE}}{{UNIT}}' ],
1195 'color' => [ $css_selectors['color'] => 'color: {{VALUE}}' ],
1196 'bg_color' => [ $css_selectors['bg_color'] => 'background-color: {{VALUE}}' ],
1197 'icon_color' => [ $css_selectors['icon_color'] => 'color: {{VALUE}}' ],
1198 'hover_color' => [ $css_selectors['hover_color'] => 'color: {{VALUE}}' ],
1199 'hover_bg_color' => [ $css_selectors['hover_bg_color'] => 'background-color: {{VALUE}}' ],
1200 'hover_icon_color' => [ $css_selectors['hover_icon_color'] => 'color: {{VALUE}}' ],
1201 'border' => $css_selectors['border'],
1202 'border_hover_color' => [ $css_selectors['border_hover_color'] => 'border-color: {{VALUE}}' ],
1203 'border_radius' => [ $css_selectors['border_radius'] => 'border-radius: {{TOP}}{{UNIT}} {{RIGHT}}{{UNIT}} {{BOTTOM}}{{UNIT}} {{LEFT}}{{UNIT}}' ],
1204 'padding' => [ $css_selectors['padding'] => 'padding: {{TOP}}{{UNIT}} {{RIGHT}}{{UNIT}} {{BOTTOM}}{{UNIT}} {{LEFT}}{{UNIT}};' ],
1205 'margin' => [ $css_selectors['margin'] => 'margin: {{TOP}}{{UNIT}} {{RIGHT}}{{UNIT}} {{BOTTOM}}{{UNIT}} {{LEFT}}{{UNIT}};' ],
1206 ];
1207
1208 $fields = ControlHelper::general_elementor_style( 'hover_icon_button', $title, $obj, $condition, $selectors );
1209
1210 $fields['hover_icon_button_alignment'] = [
1211 'type' => 'slider',
1212 'mode' => 'responsive',
1213 'label' => esc_html__( 'Icon Size', 'shopbuilder' ),
1214 'size_units' => [ 'px' ],
1215 'range' => [
1216 'px' => [
1217 'min' => 0,
1218 'max' => 100,
1219 ],
1220 ],
1221 'default' => [
1222 'unit' => 'px',
1223 'size' => 14,
1224 ],
1225 'condition' => [
1226 'show_hover_btn_icon' => [ 'yes' ],
1227 ],
1228 'selectors' => $selectors['icon_size'],
1229 ];
1230
1231 $extra_controls = [];
1232
1233 $extra_controls['hover_icon_button_spacing'] = [
1234 'type' => 'slider',
1235 'mode' => 'responsive',
1236 'label' => esc_html__( 'Icon Spacing', 'shopbuilder' ),
1237 'size_units' => [ 'px' ],
1238 'range' => [
1239 'px' => [
1240 'min' => 0,
1241 'max' => 100,
1242 ],
1243 ],
1244 'default' => [
1245 'unit' => 'px',
1246 'size' => 3,
1247 ],
1248 'condition' => [
1249 'show_hover_btn_icon' => [ 'yes' ],
1250 ],
1251 'selectors' => $selectors['hover_icon_spacing'],
1252 ];
1253
1254 $fields = Fns::insert_controls( 'hover_icon_button_alignment', $fields, $extra_controls, true );
1255
1256 $extra_controls['hover_icon_button_icon_color'] = [
1257 'type' => 'color',
1258 'label' => esc_html__( 'Icon Color', 'shopbuilder' ),
1259 'condition' => [
1260 'show_hover_btn_icon' => [ 'yes' ],
1261 ],
1262 'selectors' => $selectors['icon_color'],
1263 'separator' => 'default',
1264 ];
1265
1266 $fields = Fns::insert_controls( 'hover_icon_button_bg_color', $fields, $extra_controls, true );
1267
1268 $extra_controls['hover_icon_button_hover_icon_color'] = [
1269 'type' => 'color',
1270 'label' => esc_html__( 'Hover Icon Color', 'shopbuilder' ),
1271 'condition' => [
1272 'show_hover_btn_icon' => [ 'yes' ],
1273 ],
1274 'selectors' => $selectors['hover_icon_color'],
1275 'separator' => 'default',
1276 ];
1277
1278 $fields = Fns::insert_controls( 'hover_icon_button_hover_bg_color', $fields, $extra_controls, true );
1279
1280 $extra_controls['hover_icon_button_radius'] = [
1281 'mode' => 'responsive',
1282 'type' => 'dimensions',
1283 'label' => esc_html__( 'Border Radius', 'shopbuilder' ),
1284 'size_units' => [ 'px', '%', 'em' ],
1285 'selectors' => $selectors['border_radius'],
1286 ];
1287
1288 $fields = Fns::insert_controls( 'hover_icon_button_border_hover_color', $fields, $extra_controls, true );
1289
1290 return apply_filters( 'rtsb/elements/elementor/hover_icon_btn_style_control', $fields, $obj );
1291 }
1292
1293 /**
1294 * Share Items Section
1295 *
1296 * @param object $obj Reference object.
1297 * @return array
1298 */
1299 public static function share_items( $obj ): array {
1300 $css_selectors = $obj->selectors['share_items'];
1301 $title = esc_html__( 'Share Items', 'shopbuilder' );
1302 $condition = [
1303 'layout!' => [ 'default' ],
1304 ];
1305 $selectors = [
1306 'share_icons_spacing' => [ $css_selectors['share_icons_spacing'] => 'gap: {{SIZE}}{{UNIT}}' ],
1307 'facebook_color' => [ $css_selectors['facebook_color'] => 'fill: {{VALUE}}; color: {{VALUE}}' ],
1308 'twitter_color' => [ $css_selectors['twitter_color'] => 'fill: {{VALUE}}; color: {{VALUE}}' ],
1309 'linkedin_color' => [ $css_selectors['linkedin_color'] => 'fill: {{VALUE}}; color: {{VALUE}}' ],
1310 'pinterest_color' => [ $css_selectors['pinterest_color'] => 'fill: {{VALUE}}; color: {{VALUE}}' ],
1311 'skype_color' => [ $css_selectors['skype_color'] => 'fill: {{VALUE}}; color: {{VALUE}}' ],
1312 'whatsapp_color' => [ $css_selectors['whatsapp_color'] => 'fill: {{VALUE}}; color: {{VALUE}}' ],
1313 'reddit_color' => [ $css_selectors['reddit_color'] => 'fill: {{VALUE}}; color: {{VALUE}}' ],
1314 'telegram_color' => [ $css_selectors['telegram_color'] => 'fill: {{VALUE}}; color: {{VALUE}}' ],
1315 'facebook_bg_color' => [ $css_selectors['facebook_bg_color'] => 'background-color: {{VALUE}}' ],
1316 'twitter_bg_color' => [ $css_selectors['twitter_bg_color'] => 'background-color: {{VALUE}}' ],
1317 'linkedin_bg_color' => [ $css_selectors['linkedin_bg_color'] => 'background-color: {{VALUE}}' ],
1318 'pinterest_bg_color' => [ $css_selectors['pinterest_bg_color'] => 'background-color: {{VALUE}}' ],
1319 'skype_bg_color' => [ $css_selectors['skype_bg_color'] => 'background-color: {{VALUE}}' ],
1320 'whatsapp_bg_color' => [ $css_selectors['whatsapp_bg_color'] => 'background-color: {{VALUE}}' ],
1321 'reddit_bg_color' => [ $css_selectors['reddit_bg_color'] => 'background-color: {{VALUE}}' ],
1322 'telegram_bg_color' => [ $css_selectors['telegram_bg_color'] => 'background-color: {{VALUE}}' ],
1323 'facebook_hover_color' => [ $css_selectors['facebook_hover_color'] => 'fill: {{VALUE}}; color: {{VALUE}}' ],
1324 'twitter_hover_color' => [ $css_selectors['twitter_hover_color'] => 'fill: {{VALUE}}; color: {{VALUE}}' ],
1325 'linkedin_hover_color' => [ $css_selectors['linkedin_hover_color'] => 'fill: {{VALUE}}; color: {{VALUE}}' ],
1326 'pinterest_hover_color' => [ $css_selectors['pinterest_hover_color'] => 'fill: {{VALUE}}; color: {{VALUE}}' ],
1327 'skype_hover_color' => [ $css_selectors['skype_hover_color'] => 'fill: {{VALUE}}; color: {{VALUE}}' ],
1328 'whatsapp_hover_color' => [ $css_selectors['whatsapp_hover_color'] => 'fill: {{VALUE}}; color: {{VALUE}}' ],
1329 'reddit_hover_color' => [ $css_selectors['reddit_hover_color'] => 'fill: {{VALUE}}; color: {{VALUE}}' ],
1330 'telegram_hover_color' => [ $css_selectors['telegram_hover_color'] => 'fill: {{VALUE}}; color: {{VALUE}}' ],
1331 'facebook_hover_bg_color' => [ $css_selectors['facebook_hover_bg_color'] => 'background-color: {{VALUE}}' ],
1332 'twitter_hover_bg_color' => [ $css_selectors['twitter_hover_bg_color'] => 'background-color: {{VALUE}}' ],
1333 'linkedin_hover_bg_color' => [ $css_selectors['linkedin_hover_bg_color'] => 'background-color: {{VALUE}}' ],
1334 'pinterest_hover_bg_color' => [ $css_selectors['pinterest_hover_bg_color'] => 'background-color: {{VALUE}}' ],
1335 'skype_hover_bg_color' => [ $css_selectors['skype_hover_bg_color'] => 'background-color: {{VALUE}}' ],
1336 'whatsapp_hover_bg_color' => [ $css_selectors['whatsapp_hover_bg_color'] => 'background-color: {{VALUE}}' ],
1337 'reddit_hover_bg_color' => [ $css_selectors['reddit_hover_bg_color'] => 'background-color: {{VALUE}}' ],
1338 'telegram_hover_bg_color' => [ $css_selectors['telegram_hover_bg_color'] => 'background-color: {{VALUE}}' ],
1339 'border' => $css_selectors['border'],
1340 'border_hover_color' => [ $css_selectors['border_hover_color'] => 'border-color: {{VALUE}}' ],
1341 'border_radius' => [ $css_selectors['border_radius'] => 'border-radius: {{TOP}}{{UNIT}} {{RIGHT}}{{UNIT}} {{BOTTOM}}{{UNIT}} {{LEFT}}{{UNIT}}' ],
1342 'padding' => [ $css_selectors['padding'] => 'padding: {{TOP}}{{UNIT}} {{RIGHT}}{{UNIT}} {{BOTTOM}}{{UNIT}} {{LEFT}}{{UNIT}};' ],
1343 'margin' => [ $css_selectors['margin'] => 'margin: {{TOP}}{{UNIT}} {{RIGHT}}{{UNIT}} {{BOTTOM}}{{UNIT}} {{LEFT}}{{UNIT}};' ],
1344 ];
1345
1346 $fields = ControlHelper::general_elementor_style('share_items', $title, $obj, $condition, $selectors );
1347
1348 unset(
1349 $fields['rtsb_el_share_items_typography'],
1350 $fields['share_items_alignment'],
1351 $fields['share_items_hover_color'],
1352 $fields['share_items_hover_bg_color'],
1353 $fields['share_items_color'],
1354 $fields['share_items_bg_color']
1355 );
1356
1357 $extra_controls = [];
1358
1359 $extra_controls['share_items_spacing'] = [
1360 'type' => 'slider',
1361 'mode' => 'responsive',
1362 'label' => esc_html__( 'Items Spacing', 'shopbuilder' ),
1363 'size_units' => [ 'px' ],
1364 'range' => [
1365 'px' => [
1366 'min' => 0,
1367 'max' => 100,
1368 ],
1369 ],
1370 'separator' => 'default',
1371 'selectors' => $selectors['share_icons_spacing'],
1372 ];
1373
1374 $fields = Fns::insert_controls( 'share_items_typo_note', $fields, $extra_controls, true );
1375
1376 $share_platforms = ControlHelper::sharing_settings();
1377
1378 foreach ( $share_platforms as $share_platform ) {
1379 $extra_controls[ $share_platform . '_color' ] = [
1380 'type' => 'color',
1381 'label' => ucfirst( $share_platform ) . esc_html__( ' Color', 'shopbuilder' ),
1382 'selectors' => $selectors[ $share_platform . '_color' ],
1383 ];
1384
1385 $extra_controls[ $share_platform . '_bg_color' ] = [
1386 'type' => 'color',
1387 'label' => ucfirst( $share_platform ) . esc_html__( ' Background', 'shopbuilder' ),
1388 'selectors' => $selectors[ $share_platform . '_bg_color' ],
1389 ];
1390
1391 $fields = Fns::insert_controls( 'share_items_color_tab', $fields, $extra_controls, true );
1392 }
1393
1394 foreach ( $share_platforms as $share_platform ) {
1395 $extra_controls[ $share_platform . '_hover_color' ] = [
1396 'type' => 'color',
1397 'label' => ucfirst( $share_platform ) . esc_html__( ' Hover Color', 'shopbuilder' ),
1398 'selectors' => $selectors[ $share_platform . '_hover_color' ],
1399 ];
1400
1401 $extra_controls[ $share_platform . '_hover_bg_color' ] = [
1402 'type' => 'color',
1403 'label' => ucfirst( $share_platform ) . esc_html__( ' Hover Background', 'shopbuilder' ),
1404 'selectors' => $selectors[ $share_platform . '_hover_bg_color' ],
1405 ];
1406
1407 $fields = Fns::insert_controls( 'share_items_hover_color_tab', $fields, $extra_controls, true );
1408 }
1409
1410 $extra_controls['share_items_radius'] = [
1411 'mode' => 'responsive',
1412 'type' => 'dimensions',
1413 'label' => esc_html__( 'Border Radius', 'shopbuilder' ),
1414 'size_units' => [ 'px', '%', 'em' ],
1415 'selectors' => $selectors['border_radius'],
1416 ];
1417
1418 $fields = Fns::insert_controls( 'share_items_border_hover_color', $fields, $extra_controls, true );
1419
1420 return apply_filters( 'rtsb/elements/elementor/share_icons_style_control', $fields, $obj );
1421 }
1422
1423 /**
1424 * Share Icons Section
1425 *
1426 * @param object $obj Reference object.
1427 * @return array
1428 */
1429 public static function share_icons( $obj ): array {
1430 $css_selectors = $obj->selectors['share_icons'];
1431 $title = esc_html__( 'Share Icons', 'shopbuilder' );
1432 $condition = [
1433 'layout!' => [ 'default' ],
1434 ];
1435 $selectors = [
1436 'share_icons_width' => [ $css_selectors['share_icons_width'] => 'width: {{SIZE}}{{UNIT}}' ],
1437 'share_icons_height' => [ $css_selectors['share_icons_height'] => 'height: {{SIZE}}{{UNIT}}' ],
1438 'color' => [ $css_selectors['color'] => 'fill: {{VALUE}}' ],
1439 'bg_color' => [ $css_selectors['bg_color'] => 'background-color: {{VALUE}}' ],
1440 'hover_color' => [ $css_selectors['hover_color'] => 'fill: {{VALUE}}' ],
1441 'hover_bg_color' => [ $css_selectors['hover_bg_color'] => 'background-color: {{VALUE}}' ],
1442 'border' => $css_selectors['border'],
1443 'border_hover_color' => [ $css_selectors['border_hover_color'] => 'border-color: {{VALUE}}' ],
1444 'padding' => [ $css_selectors['padding'] => 'padding: {{TOP}}{{UNIT}} {{RIGHT}}{{UNIT}} {{BOTTOM}}{{UNIT}} {{LEFT}}{{UNIT}};' ],
1445 'margin' => [ $css_selectors['margin'] => 'margin: {{TOP}}{{UNIT}} {{RIGHT}}{{UNIT}} {{BOTTOM}}{{UNIT}} {{LEFT}}{{UNIT}};' ],
1446 ];
1447
1448 $fields = ControlHelper::general_elementor_style( 'share_icons', $title, $obj, $condition, $selectors );
1449
1450 unset(
1451 $fields['rtsb_el_share_icons_typography'],
1452 $fields['share_icons_alignment'],
1453 );
1454
1455 $extra_controls = [];
1456
1457 $extra_controls['share_icons_width'] = [
1458 'type' => 'slider',
1459 'mode' => 'responsive',
1460 'label' => esc_html__( 'Icon Width', 'shopbuilder' ),
1461 'size_units' => [ 'px' ],
1462 'range' => [
1463 'px' => [
1464 'min' => 0,
1465 'max' => 100,
1466 ],
1467 ],
1468 'separator' => 'default',
1469 'selectors' => $selectors['share_icons_width'],
1470 ];
1471
1472 $extra_controls['share_icons_height'] = [
1473 'type' => 'slider',
1474 'mode' => 'responsive',
1475 'label' => esc_html__( 'Icon Height', 'shopbuilder' ),
1476 'size_units' => [ 'px' ],
1477 'range' => [
1478 'px' => [
1479 'min' => 0,
1480 'max' => 100,
1481 ],
1482 ],
1483 'seperator' => 'default',
1484 'selectors' => $selectors['share_icons_height'],
1485 ];
1486
1487 $fields = Fns::insert_controls( 'share_icons_typo_note', $fields, $extra_controls, true );
1488
1489 $fields['share_icons_typo_note']['raw'] = sprintf(
1490 '<h3 class="rtsb-elementor-group-heading">%s</h3>',
1491 esc_html__( 'Dimension', 'shopbuilder' )
1492 );
1493
1494 return apply_filters( 'rtsb/elements/elementor/share_icons_style_control', $fields, $obj );
1495 }
1496
1497 /**
1498 * Share Text Section
1499 *
1500 * @param object $obj Reference object.
1501 * @return array
1502 */
1503 public static function share_text( $obj ): array {
1504 $css_selectors = $obj->selectors['share_text'];
1505 $title = esc_html__( 'Share Text', 'shopbuilder' );
1506 $condition = [
1507 'layout!' => [ 'default' ],
1508 ];
1509 $selectors = [
1510 'typography' => $css_selectors['typography'],
1511 'alignment' => [ $css_selectors['alignment'] => 'text-align: {{VALUE}};' ],
1512 'color' => [ $css_selectors['color'] => 'color: {{VALUE}};' ],
1513 'bg_color' => [ $css_selectors['bg_color'] => 'background-color: {{VALUE}}' ],
1514 'hover_color' => [ $css_selectors['hover_color'] => 'color: {{VALUE}}' ],
1515 'hover_bg_color' => [ $css_selectors['hover_bg_color'] => 'background-color: {{VALUE}}' ],
1516 'border' => $css_selectors['border'],
1517 'border_hover_color' => [ $css_selectors['border_hover_color'] => 'border-color: {{VALUE}}' ],
1518 'padding' => [ $css_selectors['padding'] => 'padding: {{TOP}}{{UNIT}} {{RIGHT}}{{UNIT}} {{BOTTOM}}{{UNIT}} {{LEFT}}{{UNIT}};' ],
1519 'margin' => [ $css_selectors['margin'] => 'margin: {{TOP}}{{UNIT}} {{RIGHT}}{{UNIT}} {{BOTTOM}}{{UNIT}} {{LEFT}}{{UNIT}};' ],
1520 ];
1521
1522 $fields = ControlHelper::general_elementor_style( 'share_text',$title, $obj, $condition, $selectors );
1523
1524 return apply_filters( 'rtsb/elements/elementor/share_text_style_control', $fields, $obj );
1525 }
1526
1527 /**
1528 * Advanced section
1529 *
1530 * @param object $obj Reference object.
1531 * @return array
1532 */
1533 public static function advanced( $obj ): array {
1534 $css_selectors = $obj->selectors['advanced'];
1535
1536 $fields['advanced_section'] = $obj->start_section( esc_html__( 'Advanced', 'shopbuilder' ), self::$tab );
1537
1538 $fields['advanced_spacing_note'] = $obj->el_heading( esc_html__( 'Spacing', 'shopbuilder' ), 'default' );
1539
1540 $fields['content_padding'] = [
1541 'mode' => 'responsive',
1542 'type' => 'dimensions',
1543 'label' => esc_html__( 'Content Padding', 'shopbuilder' ),
1544 'size_units' => [ 'px', '%', 'em' ],
1545 'separator' => 'default',
1546 'selectors' => [ $css_selectors['content_padding'] => 'padding: {{TOP}}{{UNIT}} {{RIGHT}}{{UNIT}} {{BOTTOM}}{{UNIT}} {{LEFT}}{{UNIT}};' ],
1547 ];
1548
1549 $fields['element_margin'] = [
1550 'mode' => 'responsive',
1551 'type' => 'dimensions',
1552 'label' => esc_html__( 'Element Margin', 'shopbuilder' ),
1553 'size_units' => [ 'px', '%', 'em' ],
1554 'allowed_dimensions' => 'vertical',
1555 'selectors' => [ $css_selectors['element_margin'] => 'margin-top: {{TOP}}{{UNIT}}; margin-bottom: {{BOTTOM}}{{UNIT}};' ],
1556 ];
1557
1558 $fields['wrapper_color_note'] = $obj->el_heading( esc_html__( 'Colors & Shadow', 'shopbuilder' ), 'before' );
1559
1560 $fields['advanced_color_tabs'] = $obj->start_tab_group();
1561 $fields['advanced_color_tab'] = $obj->start_tab( esc_html__( 'Normal', 'shopbuilder' ) );
1562
1563 $fields['content_bg_color'] = [
1564 'type' => 'color',
1565 'label' => esc_html__( 'Content Background', 'shopbuilder' ),
1566 'separator' => 'default',
1567 'selectors' => [ $css_selectors['content_bg_color'] => 'background-color: {{VALUE}};' ],
1568 ];
1569
1570 $fields['element_bg_color'] = [
1571 'type' => 'color',
1572 'label' => esc_html__( 'Element Background', 'shopbuilder' ),
1573 'separator' => 'default',
1574 'selectors' => [ $css_selectors['element_bg_color'] => 'background-color: {{VALUE}};' ],
1575 ];
1576
1577 $fields['rtsb_el_element_shadow'] = [
1578 'type' => 'box-shadow',
1579 'mode' => 'group',
1580 'label' => esc_html__( 'Element Drop Shadow', 'shopbuilder' ),
1581 'selector' => $css_selectors['rtsb_el_element_shadow'],
1582 ];
1583
1584 $fields['advanced_color_tab_end'] = $obj->end_tab();
1585 $fields['advanced_hover_color_tab'] = $obj->start_tab( esc_html__( 'Hover', 'shopbuilder' ) );
1586
1587 $fields['content_hover_bg_color'] = [
1588 'type' => 'color',
1589 'label' => esc_html__( 'Content Hover Background', 'shopbuilder' ),
1590 'separator' => 'default',
1591 'selectors' => [ $css_selectors['content_hover_bg_color'] => 'background-color: {{VALUE}};' ],
1592 ];
1593
1594 $fields['element_hover_bg_color'] = [
1595 'type' => 'color',
1596 'label' => esc_html__( 'Element Hover Background', 'shopbuilder' ),
1597 'separator' => 'default',
1598 'selectors' => [ $css_selectors['element_hover_bg_color'] => 'background-color: {{VALUE}};' ],
1599 ];
1600
1601 $fields['rtsb_el_element_hover_shadow'] = [
1602 'type' => 'box-shadow',
1603 'mode' => 'group',
1604 'label' => esc_html__( 'Element Hover Drop Shadow', 'shopbuilder' ),
1605 'selector' => $css_selectors['rtsb_el_element_hover_shadow'],
1606 ];
1607
1608 $fields['advanced_hover_color_tab_end'] = $obj->end_tab();
1609 $fields['advanced_color_tabs_end'] = $obj->end_tab_group();
1610
1611 $fields['wrapper_note'] = $obj->el_heading( esc_html__( 'Border', 'shopbuilder' ), 'before' );
1612
1613 $fields['rtsb_el_element_border'] = [
1614 'mode' => 'group',
1615 'type' => 'border',
1616 'label' => esc_html__( 'Element Border', 'shopbuilder' ),
1617 'separator' => 'default',
1618 'fields_options' => [
1619 'border' => [
1620 'label' => esc_html__( 'Element Border Type', 'shopbuilder' ),
1621 'label_block' => true,
1622 ],
1623 'color' => [
1624 'label' => esc_html__( 'Border Color', 'shopbuilder' ),
1625 ],
1626 ],
1627 'selector' => $css_selectors['rtsb_el_element_border'],
1628 ];
1629
1630 $fields['element_border_hover_color'] = [
1631 'type' => 'color',
1632 'label' => esc_html__( 'Hover Border Color', 'shopbuilder' ),
1633 'condition' => [ 'rtsb_el_element_border_border!' => [ '' ] ],
1634 'selectors' => [ $css_selectors['element_border_hover_color'] => 'border-color: {{VALUE}};' ],
1635 ];
1636
1637 $fields['element_border_radius'] = [
1638 'mode' => 'responsive',
1639 'type' => 'dimensions',
1640 'label' => esc_html__( 'Border Radius', 'shopbuilder' ),
1641 'size_units' => [ 'px', '%', 'em' ],
1642 'selectors' => [ $css_selectors['element_border_radius'] => 'border-radius: {{TOP}}{{UNIT}} {{RIGHT}}{{UNIT}} {{BOTTOM}}{{UNIT}} {{LEFT}}{{UNIT}}; overflow: hidden;' ],
1643 ];
1644
1645 $fields['rtsb_el_content_border'] = [
1646 'mode' => 'group',
1647 'type' => 'border',
1648 'label' => esc_html__( 'Content Border', 'shopbuilder' ),
1649 'fields_options' => [
1650 'border' => [
1651 'label' => esc_html__( 'Content Border Type', 'shopbuilder' ),
1652 'label_block' => true,
1653 ],
1654 'color' => [
1655 'label' => esc_html__( 'Border Color', 'shopbuilder' ),
1656 ],
1657 ],
1658 'selector' => $css_selectors['rtsb_el_content_border'],
1659 ];
1660
1661 $fields['content_border_hover_color'] = [
1662 'type' => 'color',
1663 'label' => esc_html__( 'Hover Border Color', 'shopbuilder' ),
1664 'condition' => [ 'rtsb_el_content_border_border!' => [ '' ] ],
1665 'selectors' => [ $css_selectors['content_border_hover_color'] => 'border-color: {{VALUE}};' ],
1666 ];
1667
1668 $fields['content_border_radius'] = [
1669 'mode' => 'responsive',
1670 'type' => 'dimensions',
1671 'label' => esc_html__( 'Border Radius', 'shopbuilder' ),
1672 'size_units' => [ 'px', '%', 'em' ],
1673 'selectors' => [ $css_selectors['content_border_radius'] => 'border-radius: {{TOP}}{{UNIT}} {{RIGHT}}{{UNIT}} {{BOTTOM}}{{UNIT}} {{LEFT}}{{UNIT}}; overflow: hidden;' ],
1674 ];
1675
1676 $fields['gutter_section_end'] = $obj->end_section();
1677
1678 return apply_filters( 'rtsb/elements/elementor/advanced_control', $fields, $obj );
1679 }
1680
1681 /**
1682 * Slider buttons section
1683 *
1684 * @param object $obj Reference object.
1685 * @return array
1686 */
1687 public static function slider_buttons( $obj ): array {
1688 $css_selectors = $obj->selectors['slider_buttons'];
1689 $title = esc_html__( 'Slider Buttons', 'shopbuilder' );
1690 $selectors = [
1691 'arrow_size' => [ $css_selectors['arrow_size'] => 'font-size: {{SIZE}}{{UNIT}};' ],
1692 'arrow_width' => [ $css_selectors['arrow_width'] => 'width: {{SIZE}}{{UNIT}};' ],
1693 'arrow_height' => [ $css_selectors['arrow_height'] => 'height: {{SIZE}}{{UNIT}};' ],
1694 'arrow_line_height' => [ $css_selectors['arrow_line_height'] => 'line-height: {{SIZE}}{{UNIT}};' ],
1695 'dot_width' => [ $css_selectors['dot_width'] => 'width: {{SIZE}}{{UNIT}};' ],
1696 'dot_height' => [ $css_selectors['dot_height'] => 'height: {{SIZE}}{{UNIT}};' ],
1697 'dot_spacing' => [ $css_selectors['dot_spacing'] => 'margin-left: calc({{SIZE}}{{UNIT}} / 2); margin-right: calc({{SIZE}}{{UNIT}} / 2);' ],
1698 'color' => [ $css_selectors['color'] => 'color: {{VALUE}};' ],
1699 'bg_color' => [ $css_selectors['bg_color'] => 'background-color: {{VALUE}};' ],
1700 'hover_color' => [ $css_selectors['hover_color'] => 'color: {{VALUE}};' ],
1701 'hover_bg_color' => [ $css_selectors['hover_bg_color'] => 'background-color: {{VALUE}};' ],
1702 'dot_color' => [ $css_selectors['dot_color'] => 'background-color: {{VALUE}};' ],
1703 'dot_active_color' => [ $css_selectors['dot_active_color'] => 'background-color: {{VALUE}};' ],
1704 'border' => $css_selectors['border'],
1705 'border_hover_color' => [ $css_selectors['border_hover_color'] => 'border-color: {{VALUE}};' ],
1706 'active_border_color' => [ $css_selectors['active_border_color'] => 'border-color: {{VALUE}};' ],
1707 'border_radius' => [ $css_selectors['border_radius'] => 'border-radius: {{TOP}}{{UNIT}} {{RIGHT}}{{UNIT}} {{BOTTOM}}{{UNIT}} {{LEFT}}{{UNIT}};' ],
1708 'wrapper_padding' => [ $css_selectors['wrapper_padding'] => 'padding: {{TOP}}{{UNIT}} {{RIGHT}}{{UNIT}} {{BOTTOM}}{{UNIT}} {{LEFT}}{{UNIT}};' ],
1709 ];
1710
1711 $conditions = [
1712 'relation' => 'or',
1713 'terms' => [
1714 [
1715 'name' => 'slider_nav',
1716 'operator' => '==',
1717 'value' => 'yes',
1718 ],
1719 [
1720 'name' => 'slider_pagi',
1721 'operator' => '==',
1722 'value' => 'yes',
1723 ],
1724 ],
1725 ];
1726
1727 $fields = ControlHelper::general_elementor_style('slider_buttons', $title, $obj, [], $selectors, $conditions );
1728
1729 unset(
1730 $fields['rtsb_el_slider_buttons_typography'],
1731 $fields['slider_buttons_alignment'],
1732 $fields['slider_buttons_padding'],
1733 $fields['slider_buttons_margin']
1734 );
1735
1736 $extra_controls = [];
1737 $arrow_condition = [ 'slider_nav' => [ 'yes' ] ];
1738 $dot_condition = [ 'slider_pagi' => [ 'yes' ] ];
1739
1740 $fields['slider_buttons_typo_note']['raw'] = sprintf(
1741 '<h3 class="rtsb-elementor-group-heading">%s</h3>',
1742 esc_html__( 'Arrow Size (px)', 'shopbuilder' )
1743 );
1744
1745 $fields['slider_buttons_typo_note']['condition'] = $arrow_condition;
1746
1747 $extra_controls['slider_buttons_arrow_size'] = [
1748 'type' => 'slider',
1749 'mode' => 'responsive',
1750 'label' => esc_html__( 'Arrow Size', 'shopbuilder' ),
1751 'range' => [
1752 'px' => [
1753 'min' => 1,
1754 'max' => 100,
1755 'step' => 1,
1756 ],
1757 ],
1758 'separator' => 'default',
1759 'condition' => $arrow_condition,
1760 'selectors' => $selectors['arrow_size'],
1761 ];
1762
1763 $extra_controls['slider_buttons_arrow_width'] = [
1764 'type' => 'slider',
1765 'mode' => 'responsive',
1766 'label' => esc_html__( 'Arrow Width', 'shopbuilder' ),
1767 'range' => [
1768 'px' => [
1769 'min' => 1,
1770 'max' => 100,
1771 'step' => 1,
1772 ],
1773 ],
1774 'condition' => $arrow_condition,
1775 'selectors' => $selectors['arrow_width'],
1776 ];
1777
1778 $extra_controls['slider_buttons_arrow_height'] = [
1779 'type' => 'slider',
1780 'mode' => 'responsive',
1781 'label' => esc_html__( 'Arrow Height', 'shopbuilder' ),
1782 'range' => [
1783 'px' => [
1784 'min' => 1,
1785 'max' => 100,
1786 'step' => 1,
1787 ],
1788 ],
1789 'condition' => $arrow_condition,
1790 'selectors' => $selectors['arrow_height'],
1791 ];
1792
1793 $extra_controls['slider_buttons_arrow_line_height'] = [
1794 'type' => 'slider',
1795 'mode' => 'responsive',
1796 'label' => esc_html__( 'Arrow Line Height', 'shopbuilder' ),
1797 'range' => [
1798 'px' => [
1799 'min' => 1,
1800 'max' => 100,
1801 'step' => 1,
1802 ],
1803 ],
1804 'condition' => $arrow_condition,
1805 'selectors' => $selectors['arrow_line_height'],
1806 ];
1807
1808 $extra_controls['slider_buttons_dot_size_note'] = $obj->el_heading(
1809 esc_html__( 'Dot Size (px)', 'shopbuilder' ),
1810 'before',
1811 [],
1812 $dot_condition
1813 );
1814
1815 $extra_controls['slider_buttons_dot_width'] = [
1816 'type' => 'slider',
1817 'mode' => 'responsive',
1818 'label' => esc_html__( 'Dot Width', 'shopbuilder' ),
1819 'range' => [
1820 'px' => [
1821 'min' => 1,
1822 'max' => 100,
1823 'step' => 1,
1824 ],
1825 ],
1826 'separator' => 'default',
1827 'selectors' => $selectors['dot_width'],
1828 'condition' => $dot_condition,
1829 ];
1830
1831 $extra_controls['slider_buttons_dot_height'] = [
1832 'type' => 'slider',
1833 'mode' => 'responsive',
1834 'label' => esc_html__( 'Dot Height', 'shopbuilder' ),
1835 'range' => [
1836 'px' => [
1837 'min' => 1,
1838 'max' => 100,
1839 'step' => 1,
1840 ],
1841 ],
1842 'selectors' => $selectors['dot_height'],
1843 'condition' => $dot_condition,
1844 ];
1845
1846 $extra_controls['slider_buttons_dot_spacing'] = [
1847 'type' => 'slider',
1848 'mode' => 'responsive',
1849 'label' => esc_html__( 'Dot Spacing', 'shopbuilder' ),
1850 'range' => [
1851 'px' => [
1852 'min' => 1,
1853 'max' => 100,
1854 'step' => 1,
1855 ],
1856 ],
1857 'selectors' => $selectors['dot_spacing'],
1858 'condition' => $dot_condition,
1859 ];
1860
1861 $fields = Fns::insert_controls( 'slider_buttons_typo_note', $fields, $extra_controls, true );
1862
1863 $extra_controls['slider_buttons_active_color_tab'] = $obj->start_tab( esc_html__( 'Dot', 'shopbuilder' ) );
1864
1865 $extra_controls['slider_buttons_active_color'] = [
1866 'type' => 'color',
1867 'label' => esc_html__( 'Dot Color', 'shopbuilder' ),
1868 'selectors' => $selectors['dot_color'],
1869 'separator' => 'default',
1870 ];
1871
1872 $extra_controls['slider_buttons_active_bg_color'] = [
1873 'type' => 'color',
1874 'label' => esc_html__( 'Dot Active Color', 'shopbuilder' ),
1875 'selectors' => $selectors['dot_active_color'],
1876 'separator' => 'default',
1877 ];
1878
1879 $extra_controls['slider_buttons_active_color_tab_end'] = $obj->end_tab();
1880
1881 $fields = Fns::insert_controls( 'slider_buttons_hover_color_tab_end', $fields, $extra_controls, true );
1882
1883 $extra_controls['slider_buttons_border_active_color'] = [
1884 'type' => 'color',
1885 'label' => esc_html__( 'Active Color', 'shopbuilder' ),
1886 'condition' => [ 'rtsb_el_slider_buttons_border_border!' => [ '' ] ],
1887 'selectors' => $selectors['active_border_color'],
1888 ];
1889
1890 $extra_controls['slider_buttons_buttons_radius'] = [
1891 'mode' => 'responsive',
1892 'type' => 'dimensions',
1893 'label' => esc_html__( 'Border Radius', 'shopbuilder' ),
1894 'size_units' => [ 'px', '%', 'em' ],
1895 'selectors' => $selectors['border_radius'],
1896 ];
1897
1898 $fields = Fns::insert_controls( 'slider_buttons_border_hover_color', $fields, $extra_controls, true );
1899
1900 $extra_controls['slider_buttons_wrapper_padding'] = [
1901 'mode' => 'responsive',
1902 'type' => 'dimensions',
1903 'label' => esc_html__( 'Wrapper Margin', 'shopbuilder' ),
1904 'size_units' => [ 'px', '%', 'em' ],
1905 'selectors' => $selectors['wrapper_padding'],
1906 ];
1907
1908 $fields = Fns::insert_controls( 'slider_buttons_spacing_note', $fields, $extra_controls, true );
1909
1910 return apply_filters( 'rtsb/elements/elementor/slider_buttons_style_control', $fields, $obj );
1911 }
1912
1913 /**
1914 * Title Selectors.
1915 *
1916 * @param array $selectors Selector array.
1917 * @return array
1918 */
1919 private static function title_selectors( $selectors ): array {
1920 return [
1921 'typography' => $selectors['typography'],
1922 'alignment' => [ $selectors['alignment'] => 'text-align: {{VALUE}};' ],
1923 'color' => [ $selectors['color'] => 'color: {{VALUE}};' ],
1924 'bg_color' => [ $selectors['bg_color'] => 'background-color: {{VALUE}};' ],
1925 'hover_color' => [ $selectors['hover_color'] => 'color: {{VALUE}};' ],
1926 'hover_bg_color' => [ $selectors['hover_bg_color'] => 'background-color: {{VALUE}};' ],
1927 'border' => $selectors['border'],
1928 'border_hover_color' => [ $selectors['border_hover_color'] => 'border-color: {{VALUE}};' ],
1929 'padding' => [ $selectors['padding'] => 'padding: {{TOP}}{{UNIT}} {{RIGHT}}{{UNIT}} {{BOTTOM}}{{UNIT}} {{LEFT}}{{UNIT}};' ],
1930 'margin' => [ $selectors['margin'] => 'margin: {{TOP}}{{UNIT}} {{RIGHT}}{{UNIT}} {{BOTTOM}}{{UNIT}} {{LEFT}}{{UNIT}};' ],
1931 ];
1932 }
1933
1934 /**
1935 * Excerpt Selectors.
1936 *
1937 * @param array $selectors Selector array.
1938 * @return array
1939 */
1940 private static function excerpt_selectors( $selectors ): array {
1941 return [
1942 'typography' => $selectors['typography'],
1943 'alignment' => [ $selectors['alignment'] => 'text-align: {{VALUE}};' ],
1944 'color' => [ $selectors['color'] => 'color: {{VALUE}};' ],
1945 'bg_color' => [ $selectors['bg_color'] => 'background-color: {{VALUE}};' ],
1946 'border' => $selectors['border'],
1947 'padding' => [ $selectors['padding'] => 'padding: {{TOP}}{{UNIT}} {{RIGHT}}{{UNIT}} {{BOTTOM}}{{UNIT}} {{LEFT}}{{UNIT}};' ],
1948 'margin' => [ $selectors['margin'] => 'margin: {{TOP}}{{UNIT}} {{RIGHT}}{{UNIT}} {{BOTTOM}}{{UNIT}} {{LEFT}}{{UNIT}};' ],
1949 ];
1950 }
1951
1952 /**
1953 * Action Button Selectors.
1954 *
1955 * @param array $selectors Selector array.
1956 * @return array
1957 */
1958 private static function action_btn_selectors( $selectors ): array {
1959 return [
1960 'icon_size' => [
1961 $selectors['icon_size']['font_size'] => 'font-size: {{SIZE}}{{UNIT}};',
1962 $selectors['icon_size']['width'] => 'width: {{SIZE}}{{UNIT}};',
1963 ],
1964 'color' => [ $selectors['color'] => 'color: {{VALUE}};' ],
1965 'bg_color' => [ $selectors['bg_color'] => 'background-color: {{VALUE}};' ],
1966 'hover_color' => [ $selectors['hover_color'] => 'color: {{VALUE}};' ],
1967 'hover_bg_color' => [ $selectors['hover_bg_color'] => 'background-color: {{VALUE}};' ],
1968 'border' => $selectors['border'],
1969 'border_hover_color' => [ $selectors['border_hover_color'] => 'border-color: {{VALUE}};' ],
1970 'border_radius' => [ $selectors['border_radius'] => 'border-radius: {{TOP}}{{UNIT}} {{RIGHT}}{{UNIT}} {{BOTTOM}}{{UNIT}} {{LEFT}}{{UNIT}};' ],
1971 'padding' => [ $selectors['padding'] => 'padding: {{TOP}}{{UNIT}} {{RIGHT}}{{UNIT}} {{BOTTOM}}{{UNIT}} {{LEFT}}{{UNIT}};' ],
1972 'margin' => [ $selectors['margin'] => 'margin: {{TOP}}{{UNIT}} {{RIGHT}}{{UNIT}} {{BOTTOM}}{{UNIT}} {{LEFT}}{{UNIT}};' ],
1973 ];
1974 }
1975 }
1976