PluginProbe
ShopBuilder – WooCommerce Builder For Elementor / 2.1.0
ShopBuilder – WooCommerce Builder For Elementor v2.1.0
3.4.2 3.4.1 3.4.0 2.0.1 2.0.2 2.0.3 2.1.0 2.1.1 2.1.10 2.1.11 2.1.12 2.1.13 2.1.14 2.1.15 2.1.2 2.1.3 2.1.4 2.1.5 2.1.6 2.1.7 2.1.8 2.1.9 2.2.0 2.2.1 2.2.2 All 63 releases
shopbuilder / app / Elementor / Widgets / Controls / StyleFields.php

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

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