PluginProbe
ShopBuilder – WooCommerce Builder For Elementor / 2.0.1
ShopBuilder – WooCommerce Builder For Elementor v2.0.1
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.0.1, at app/Elementor/Widgets/Controls/StyleFields.php

2,405 lines 83.9 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 $css_selectors['element_margin'] => 'margin-bottom: {{SIZE}}{{UNIT}};',
116 ],
117 'condition' => [ 'cols!' => [ '1' ] ],
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 'max_width' => [ $css_selectors['max_width'] => 'max-width: {{SIZE}}{{UNIT}};' ],
847 'border_radius' => [ $css_selectors['border_radius'] => 'border-radius: {{TOP}}{{UNIT}} {{RIGHT}}{{UNIT}} {{BOTTOM}}{{UNIT}} {{LEFT}}{{UNIT}};' ],
848 'margin' => [ $css_selectors['margin'] => 'margin: {{TOP}}{{UNIT}} {{RIGHT}}{{UNIT}} {{BOTTOM}}{{UNIT}} {{LEFT}}{{UNIT}} !important;' ],
849 ];
850
851 $fields = ControlHelper::general_elementor_style( 'image_styles', $title, $obj, [], $selectors, $conditions );
852
853 unset(
854 $fields['rtsb_el_image_styles_typography'],
855 $fields['image_styles_alignment'],
856 $fields['image_styles_color_tabs'],
857 $fields['image_styles_color_tab'],
858 $fields['image_styles_color_note'],
859 $fields['image_styles_color'],
860 $fields['image_styles_bg_color'],
861 $fields['image_styles_color_tab_end'],
862 $fields['image_styles_hover_color_tab'],
863 $fields['image_styles_hover_color'],
864 $fields['image_styles_hover_bg_color'],
865 $fields['image_styles_hover_color_tab_end'],
866 $fields['image_styles_color_tabs_end'],
867 $fields['image_styles_border_hover_color'],
868 $fields['image_styles_padding']
869 );
870
871 $fields['image_styles_typo_note']['raw'] = sprintf(
872 '<h3 class="rtsb-elementor-group-heading">%s</h3>',
873 esc_html__( 'Overlay', 'shopbuilder' )
874 );
875 $fields['image_styles_border_note']['separator'] = 'before-short';
876 $fields['image_styles_typo_note']['separator'] = 'before';
877 $fields['image_styles_typo_note']['condition'] = [ 'show_overlay' => [ 'yes' ] ];
878
879 $extra_controls = [];
880
881 $extra_controls['image_styles_dimension_note'] = $obj->el_heading( esc_html__( 'Dimension', 'shopbuilder' ) );
882
883 $extra_controls['image_styles_width'] = [
884 'type' => 'slider',
885 'label' => esc_html__( 'Image Width', 'shopbuilder' ),
886 'size_units' => [ '%', 'px' ],
887 'range' => [
888 '%' => [
889 'min' => 0,
890 'max' => 100,
891 'step' => 1,
892 ],
893 'px' => [
894 'min' => 0,
895 'max' => 500,
896 'step' => 1,
897 ],
898 ],
899 'selectors' => $selectors['width'],
900 ];
901
902 $extra_controls['image_styles_max_width'] = [
903 'type' => 'slider',
904 'label' => esc_html__( 'Image Max-Width', 'shopbuilder' ),
905 'size_units' => [ '%', 'px' ],
906 'range' => [
907 '%' => [
908 'min' => 0,
909 'max' => 100,
910 'step' => 1,
911 ],
912 'px' => [
913 'min' => 0,
914 'max' => 500,
915 'step' => 1,
916 ],
917
918 ],
919 'selectors' => $selectors['max_width'],
920 ];
921
922 $extra_controls['image_styles_color_note'] = $obj->el_heading( esc_html__( 'Colors', 'shopbuilder' ), 'before' );
923
924 $extra_controls['image_styles_color'] = [
925 'type' => 'color',
926 'label' => esc_html__( 'Background Color', 'shopbuilder' ),
927 'selectors' => $selectors['img_bg_color'],
928 ];
929
930 $fields = Fns::insert_controls( 'image_styles_typo_note', $fields, $extra_controls );
931
932 $extra_controls['rtsb_el_image_styles_overlay'] = [
933 'mode' => 'group',
934 'type' => 'background',
935 'label' => esc_html__( 'Image Overlay', 'shopbuilder' ),
936 'types' => [ 'classic', 'gradient' ],
937 'exclude' => [ 'image' ],
938 'fields_options' => [
939 'background' => [
940 'label' => esc_html__( 'Overlay Background Type', 'shopbuilder' ),
941 ],
942 'color' => [
943 'label' => 'Background',
944 ],
945 'color_b' => [
946 'label' => 'Background 2',
947 ],
948 ],
949 'selector' => $selectors['overlay'],
950 'condition' => [ 'show_overlay' => [ 'yes' ] ],
951 ];
952
953 $extra_controls['rtsb_el_image_styles_hover_overlay'] = [
954 'mode' => 'group',
955 'type' => 'background',
956 'label' => esc_html__( 'Hover Image Overlay', 'shopbuilder' ),
957 'types' => [ 'classic', 'gradient' ],
958 'exclude' => [ 'image' ],
959 'fields_options' => [
960 'background' => [
961 'label' => esc_html__( 'Hover Overlay Background Type', 'shopbuilder' ),
962 ],
963 'color' => [
964 'label' => 'Hover Background',
965 ],
966 'color_b' => [
967 'label' => 'Hover Background 2',
968 ],
969 ],
970 'selector' => $selectors['hover_overlay'],
971 'condition' => [ 'show_overlay' => [ 'yes' ] ],
972 ];
973
974 $fields = Fns::insert_controls( 'image_styles_typo_note', $fields, $extra_controls, true );
975
976 $extra_controls['image_styles_radius'] = [
977 'mode' => 'responsive',
978 'type' => 'dimensions',
979 'label' => esc_html__( 'Border Radius', 'shopbuilder' ),
980 'size_units' => [ 'px', '%', 'em' ],
981 'selectors' => $selectors['border_radius'],
982 ];
983
984 $fields = Fns::insert_controls( 'rtsb_el_image_styles_border', $fields, $extra_controls, true );
985
986 return apply_filters( 'rtsb/elements/elementor/image_style_control', $fields, $obj );
987 }
988
989 /**
990 * Product Image Section
991 *
992 * @param object $obj Reference object.
993 *
994 * @return array
995 */
996 public static function product_image( $obj ): array {
997 $conditions = [
998 'relation' => 'and',
999 'terms' => [
1000 [
1001 'relation' => 'or',
1002 'terms' => [
1003 [
1004 'name' => 'show_featured_image',
1005 'operator' => '==',
1006 'value' => 'yes',
1007 ],
1008 ],
1009 ],
1010 ],
1011 ];
1012
1013 return self::image( $obj, $conditions );
1014 }
1015
1016 /**
1017 * Category Image Section
1018 *
1019 * @param object $obj Reference object.
1020 *
1021 * @return array
1022 */
1023 public static function category_image( $obj ): array {
1024 $conditions = [
1025 'relation' => 'and',
1026 'terms' => [
1027 [
1028 'relation' => 'or',
1029 'terms' => [
1030 [
1031 'name' => 'show_cat_image',
1032 'operator' => '==',
1033 'value' => 'yes',
1034 ],
1035 [
1036 'name' => 'show_custom_image',
1037 'operator' => '==',
1038 'value' => 'yes',
1039 ],
1040 ],
1041 ],
1042 ],
1043 ];
1044
1045 return self::image( $obj, $conditions );
1046 }
1047
1048 /**
1049 * Pagination Section
1050 *
1051 * @param object $obj Reference object.
1052 *
1053 * @return array
1054 */
1055 public static function pagination( $obj ): array {
1056 $css_selectors = $obj->selectors['pagination'];
1057 $title = esc_html__( 'Pagination Buttons', 'shopbuilder' );
1058 $condition = [ 'show_pagination' => [ 'yes' ] ];
1059 $selectors = [
1060 'typography' => $css_selectors['typography'],
1061 'alignment' => [ $css_selectors['alignment'] => 'justify-content: {{VALUE}};' ],
1062 'width' => [ $css_selectors['width'] => 'width: {{SIZE}}{{UNIT}};' ],
1063 'height' => [ $css_selectors['height'] => 'height: {{SIZE}}{{UNIT}};' ],
1064 'color' => [ $css_selectors['color'] => 'color: {{VALUE}};' ],
1065 'bg_color' => [ $css_selectors['bg_color'] => 'background-color: {{VALUE}};' ],
1066 'active_color' => [ $css_selectors['active_color'] => 'color: {{VALUE}};' ],
1067 'active_bg_color' => [ $css_selectors['active_bg_color'] => 'background-color: {{VALUE}};' ],
1068 'hover_color' => [ $css_selectors['hover_color'] => 'color: {{VALUE}};' ],
1069 'hover_bg_color' => [ $css_selectors['hover_bg_color'] => 'background-color: {{VALUE}};' ],
1070 'border' => $css_selectors['border'],
1071 'border_hover_color' => [ $css_selectors['border_hover_color'] => 'border-color: {{VALUE}};' ],
1072 'border_active_color' => [ $css_selectors['border_active_color'] => 'border-color: {{VALUE}};' ],
1073 'border_radius' => [ $css_selectors['border_radius'] => 'border-radius: {{TOP}}{{UNIT}} {{RIGHT}}{{UNIT}} {{BOTTOM}}{{UNIT}} {{LEFT}}{{UNIT}};' ],
1074 'spacing' => [ $css_selectors['spacing'] => 'gap: {{SIZE}}{{UNIT}};' ],
1075 'padding' => [ $css_selectors['padding'] => 'padding: {{TOP}}{{UNIT}} {{RIGHT}}{{UNIT}} {{BOTTOM}}{{UNIT}} {{LEFT}}{{UNIT}};' ],
1076 'margin' => [ $css_selectors['margin'] => 'margin: {{TOP}}{{UNIT}} {{RIGHT}}{{UNIT}} {{BOTTOM}}{{UNIT}} {{LEFT}}{{UNIT}};' ],
1077 ];
1078
1079 $fields = ControlHelper::general_elementor_style( 'pagination_buttons', $title, $obj, $condition, $selectors );
1080
1081 unset( $fields['pagination_buttons_padding'] );
1082
1083 $fields['pagination_buttons_alignment']['options'] = [
1084 'flex-start' => [
1085 'title' => esc_html__( 'Left', 'shopbuilder' ),
1086 'icon' => 'eicon-text-align-left',
1087 ],
1088 'center' => [
1089 'title' => esc_html__( 'Center', 'shopbuilder' ),
1090 'icon' => 'eicon-text-align-center',
1091 ],
1092 'flex-end' => [
1093 'title' => esc_html__( 'Right', 'shopbuilder' ),
1094 'icon' => 'eicon-text-align-right',
1095 ],
1096 ];
1097
1098 $extra_controls = [];
1099
1100 $extra_controls['pagination_buttons_width'] = [
1101 'type' => 'slider',
1102 'mode' => 'responsive',
1103 'label' => esc_html__( 'Width', 'shopbuilder' ),
1104 'size_units' => [ 'px' ],
1105 'range' => [
1106 'px' => [
1107 'min' => 0,
1108 'max' => 100,
1109 ],
1110 ],
1111 'selectors' => $selectors['width'],
1112 ];
1113
1114 $extra_controls['pagination_buttons_height'] = [
1115 'type' => 'slider',
1116 'mode' => 'responsive',
1117 'label' => esc_html__( 'Height', 'shopbuilder' ),
1118 'size_units' => [ 'px' ],
1119 'range' => [
1120 'px' => [
1121 'min' => 0,
1122 'max' => 100,
1123 ],
1124 ],
1125 'selectors' => $selectors['height'],
1126 ];
1127
1128 $fields = Fns::insert_controls( 'pagination_buttons_color_note', $fields, $extra_controls );
1129
1130 $extra_controls['pagination_buttons_active_color'] = [
1131 'type' => 'color',
1132 'label' => esc_html__( 'Active Color', 'shopbuilder' ),
1133 'selectors' => $selectors['active_color'],
1134 'condition' => [
1135 'pagination_type!' => 'load_more',
1136 ],
1137 ];
1138
1139 $extra_controls['pagination_buttons_active_bg_color'] = [
1140 'type' => 'color',
1141 'label' => esc_html__( 'Active Background Color', 'shopbuilder' ),
1142 'selectors' => $selectors['active_bg_color'],
1143 'condition' => [
1144 'pagination_type!' => 'load_more',
1145 ],
1146 ];
1147
1148 $fields = Fns::insert_controls( 'pagination_buttons_bg_color', $fields, $extra_controls, true );
1149
1150 $extra_controls['pagination_buttons_active_border_color'] = [
1151 'type' => 'color',
1152 'label' => esc_html__( 'Active Border Color', 'shopbuilder' ),
1153 'condition' => [ 'rtsb_el_pagination_buttons_border_border!' => [ '' ] ],
1154 'selectors' => $selectors['border_active_color'],
1155 ];
1156
1157 $extra_controls['pagination_buttons_radius'] = [
1158 'mode' => 'responsive',
1159 'type' => 'dimensions',
1160 'label' => esc_html__( 'Border Radius', 'shopbuilder' ),
1161 'size_units' => [ 'px', '%', 'em' ],
1162 'selectors' => $selectors['border_radius'],
1163 ];
1164
1165 $fields = Fns::insert_controls( 'pagination_buttons_border_hover_color', $fields, $extra_controls, true );
1166
1167 $extra_controls['pagination_buttons_spacing'] = [
1168 'type' => 'slider',
1169 'mode' => 'responsive',
1170 'label' => esc_html__( 'Spacing', 'shopbuilder' ),
1171 'size_units' => [ 'px' ],
1172 'range' => [
1173 'px' => [
1174 'min' => 0,
1175 'max' => 100,
1176 ],
1177 ],
1178 'selectors' => $selectors['spacing'],
1179 'condition' => [
1180 'pagination_type!' => 'load_more',
1181 ],
1182 ];
1183
1184 $extra_controls['pagination_buttons_padding'] = [
1185 'mode' => 'responsive',
1186 'type' => 'dimensions',
1187 'label' => esc_html__( 'Padding', 'shopbuilder' ),
1188 'size_units' => [ 'px', '%', 'em' ],
1189 'selectors' => ! empty( $selectors['padding'] ) ? $selectors['padding'] : [],
1190 'condition' => [
1191 'pagination_type' => 'load_more',
1192 ],
1193 ];
1194
1195 $fields = Fns::insert_controls( 'pagination_buttons_spacing_note', $fields, $extra_controls, true );
1196
1197 return apply_filters( 'rtsb/elements/elementor/pagination_style_control', $fields, $obj );
1198 }
1199
1200 /**
1201 * Product Add to Cart Section
1202 *
1203 * @param object $obj Reference object.
1204 *
1205 * @return array
1206 */
1207 public static function product_add_to_cart( $obj ): array {
1208 $css_selectors = $obj->selectors['product_add_to_cart'];
1209 $title = esc_html__( 'Add to Cart Button', 'shopbuilder' );
1210 $condition = [
1211 'show_add_to_cart' => [ 'yes' ],
1212 ];
1213 $selectors = [
1214 'typography' => $css_selectors['typography'],
1215 'icon_size' => [
1216 $css_selectors['icon_size']['font_size'] => 'font-size: {{SIZE}}{{UNIT}};',
1217 $css_selectors['icon_size']['width'] => 'height: {{SIZE}}{{UNIT}};',
1218 ],
1219 'cart_icon_spacing' => [
1220 $css_selectors['cart_icon_spacing']['margin_left'] => 'margin-left: {{SIZE}}{{UNIT}};',
1221 $css_selectors['cart_icon_spacing']['margin_right'] => 'margin-right: {{SIZE}}{{UNIT}};',
1222 ],
1223 'cart_width' => [ $css_selectors['cart_width'] => 'width: {{SIZE}}{{UNIT}} !important;' ],
1224 'cart_height' => [ $css_selectors['cart_height'] => 'height: {{SIZE}}{{UNIT}} !important;' ],
1225 'color' => [ $css_selectors['color'] => 'color: {{VALUE}};' ],
1226 'bg_color' => [ $css_selectors['bg_color'] => 'background-color: {{VALUE}};' ],
1227 'icon_color' => [ $css_selectors['icon_color'] => 'color: {{VALUE}};' ],
1228 'hover_color' => [ $css_selectors['hover_color'] => 'color: {{VALUE}};' ],
1229 'hover_bg_color' => [ $css_selectors['hover_bg_color'] => 'background-color: {{VALUE}};' ],
1230 'hover_icon_color' => [ $css_selectors['hover_icon_color'] => 'color: {{VALUE}};' ],
1231 'border' => $css_selectors['border'],
1232 'border_hover_color' => [ $css_selectors['border_hover_color'] => 'border-color: {{VALUE}};' ],
1233 'border_radius' => [ $css_selectors['border_radius'] => 'border-radius: {{TOP}}{{UNIT}} {{RIGHT}}{{UNIT}} {{BOTTOM}}{{UNIT}} {{LEFT}}{{UNIT}};' ],
1234 'padding' => [ $css_selectors['padding'] => 'padding: {{TOP}}{{UNIT}} {{RIGHT}}{{UNIT}} {{BOTTOM}}{{UNIT}} {{LEFT}}{{UNIT}};' ],
1235 'margin' => [ $css_selectors['margin'] => 'margin: {{TOP}}{{UNIT}} {{RIGHT}}{{UNIT}} {{BOTTOM}}{{UNIT}} {{LEFT}}{{UNIT}};' ],
1236 ];
1237
1238 $fields = ControlHelper::general_elementor_style( 'add_to_cart_button', $title, $obj, $condition, $selectors );
1239
1240 $fields['add_to_cart_button_alignment'] = [
1241 'type' => 'slider',
1242 'mode' => 'responsive',
1243 'label' => esc_html__( 'Icon Size', 'shopbuilder' ),
1244 'size_units' => [ 'px' ],
1245 'range' => [
1246 'px' => [
1247 'min' => 0,
1248 'max' => 100,
1249 ],
1250 ],
1251 'condition' => [
1252 'show_cart_icon' => [ 'yes' ],
1253 ],
1254 'selectors' => $selectors['icon_size'],
1255 ];
1256
1257 $extra_controls = [];
1258
1259 $extra_controls['cart_icon_alignment'] = [
1260 'type' => 'choose',
1261 'label' => esc_html__( 'Icon Alignment', 'shopbuilder' ),
1262 'options' => [
1263 'left' => [
1264 'title' => esc_html__( 'Left', 'shopbuilder' ),
1265 'icon' => 'eicon-arrow-left',
1266 ],
1267 'right' => [
1268 'title' => esc_html__( 'Right', 'shopbuilder' ),
1269 'icon' => 'eicon-arrow-right',
1270 ],
1271 ],
1272 'default' => 'left',
1273 'toggle' => true,
1274 'condition' => [
1275 'show_cart_text' => [ 'yes' ],
1276 'show_cart_icon' => [ 'yes' ],
1277 ],
1278 ];
1279
1280 $extra_controls['cart_icon_spacing'] = [
1281 'type' => 'slider',
1282 'mode' => 'responsive',
1283 'label' => esc_html__( 'Icon Spacing', 'shopbuilder' ),
1284 'size_units' => [ 'px' ],
1285 'range' => [
1286 'px' => [
1287 'min' => 0,
1288 'max' => 100,
1289 ],
1290 ],
1291 'default' => [
1292 'unit' => 'px',
1293 'size' => 8,
1294 ],
1295 'condition' => [
1296 'show_cart_text' => [ 'yes' ],
1297 'show_cart_icon' => [ 'yes' ],
1298 ],
1299 'selectors' => $selectors['cart_icon_spacing'],
1300 ];
1301
1302 $extra_controls['cart_width'] = [
1303 'type' => 'slider',
1304 'mode' => 'responsive',
1305 'label' => esc_html__( 'Width', 'shopbuilder' ),
1306 'size_units' => [ 'px', '%' ],
1307 'range' => [
1308 'px' => [
1309 'min' => 0,
1310 'max' => 1000,
1311 ],
1312 ],
1313 'selectors' => $selectors['cart_width'],
1314 ];
1315
1316 $extra_controls['cart_height'] = [
1317 'type' => 'slider',
1318 'mode' => 'responsive',
1319 'label' => esc_html__( 'height', 'shopbuilder' ),
1320 'size_units' => [ 'px', '%' ],
1321 'range' => [
1322 'px' => [
1323 'min' => 0,
1324 'max' => 1000,
1325 ],
1326 ],
1327 'selectors' => $selectors['cart_height'],
1328 ];
1329
1330 $fields = Fns::insert_controls( 'add_to_cart_button_alignment', $fields, $extra_controls, true );
1331
1332 $extra_controls['add_to_cart_button_icon_color'] = [
1333 'type' => 'color',
1334 'label' => esc_html__( 'Icon Color', 'shopbuilder' ),
1335 'selectors' => $selectors['icon_color'],
1336 ];
1337
1338 $fields = Fns::insert_controls( 'add_to_cart_button_bg_color', $fields, $extra_controls, true );
1339
1340 $extra_controls['add_to_cart_button_hover_icon_color'] = [
1341 'type' => 'color',
1342 'label' => esc_html__( 'Hover Icon Color', 'shopbuilder' ),
1343 'selectors' => $selectors['hover_icon_color'],
1344 ];
1345
1346 $fields = Fns::insert_controls( 'add_to_cart_button_hover_bg_color', $fields, $extra_controls, true );
1347
1348 $extra_controls['add_to_cart_button_radius'] = [
1349 'mode' => 'responsive',
1350 'type' => 'dimensions',
1351 'label' => esc_html__( 'Border Radius', 'shopbuilder' ),
1352 'size_units' => [ 'px', '%', 'em' ],
1353 'selectors' => $selectors['border_radius'],
1354 ];
1355
1356 $fields = Fns::insert_controls( 'add_to_cart_button_border_hover_color', $fields, $extra_controls, true );
1357
1358 return apply_filters( 'rtsb/elements/elementor/add_to_cart_style_control', $fields, $obj );
1359 }
1360
1361 /**
1362 * Product Compare Section
1363 *
1364 * @param object $obj Reference object.
1365 *
1366 * @return array
1367 */
1368 public static function product_compare( $obj ): array {
1369 $css_selectors = $obj->selectors['product_compare'];
1370 $title = esc_html__( 'Compare Button', 'shopbuilder' );
1371 $condition = [
1372 'show_compare' => [ 'yes' ],
1373 ];
1374 $selectors = self::action_btn_selectors( $css_selectors );
1375
1376 $fields = ControlHelper::general_elementor_style( 'compare_button', $title, $obj, $condition, $selectors );
1377
1378 unset( $fields['compare_button_alignment'] );
1379
1380 $fields['rtsb_el_compare_button_typography'] = [
1381 'type' => 'slider',
1382 'mode' => 'responsive',
1383 'label' => esc_html__( 'Icon Size', 'shopbuilder' ),
1384 'size_units' => [ 'px' ],
1385 'range' => [
1386 'px' => [
1387 'min' => 0,
1388 'max' => 100,
1389 ],
1390 ],
1391 'condition' => [
1392 'show_cart_icon' => [ 'yes' ],
1393 ],
1394 'selectors' => $selectors['icon_size'],
1395 ];
1396
1397 $extra_controls = [];
1398
1399 $extra_controls['compare_width'] = [
1400 'type' => 'slider',
1401 'mode' => 'responsive',
1402 'label' => esc_html__( 'Width', 'shopbuilder' ),
1403 'size_units' => [ 'px' ],
1404 'range' => [
1405 'px' => [
1406 'min' => 0,
1407 'max' => 100,
1408 ],
1409 ],
1410 'selectors' => $selectors['width'],
1411 ];
1412
1413 $extra_controls['compare_height'] = [
1414 'type' => 'slider',
1415 'mode' => 'responsive',
1416 'label' => esc_html__( 'height', 'shopbuilder' ),
1417 'size_units' => [ 'px' ],
1418 'range' => [
1419 'px' => [
1420 'min' => 0,
1421 'max' => 100,
1422 ],
1423 ],
1424 'selectors' => $selectors['height'],
1425 ];
1426
1427 $fields = Fns::insert_controls( 'compare_button_color_note', $fields, $extra_controls );
1428
1429 $extra_controls['compare_button_radius'] = [
1430 'mode' => 'responsive',
1431 'type' => 'dimensions',
1432 'label' => esc_html__( 'Border Radius', 'shopbuilder' ),
1433 'size_units' => [ 'px', '%', 'em' ],
1434 'selectors' => $selectors['border_radius'],
1435 ];
1436
1437 $fields = Fns::insert_controls( 'compare_button_border_hover_color', $fields, $extra_controls, true );
1438
1439 return apply_filters( 'rtsb/elements/elementor/compare_style_control', $fields, $obj );
1440 }
1441
1442 /**
1443 * Product Wishlist Section
1444 *
1445 * @param object $obj Reference object.
1446 *
1447 * @return array
1448 */
1449 public static function product_wishlist( $obj ): array {
1450 $css_selectors = $obj->selectors['product_wishlist'];
1451 $title = esc_html__( 'Wishlist Button', 'shopbuilder' );
1452 $condition = [
1453 'show_wishlist' => [ 'yes' ],
1454 ];
1455 $selectors = self::action_btn_selectors( $css_selectors );
1456
1457 $fields = ControlHelper::general_elementor_style( 'wishlist_button', $title, $obj, $condition, $selectors );
1458
1459 unset( $fields['wishlist_button_alignment'] );
1460
1461 $fields['rtsb_el_wishlist_button_typography'] = [
1462 'type' => 'slider',
1463 'mode' => 'responsive',
1464 'label' => esc_html__( 'Icon Size', 'shopbuilder' ),
1465 'size_units' => [ 'px' ],
1466 'range' => [
1467 'px' => [
1468 'min' => 0,
1469 'max' => 100,
1470 ],
1471 ],
1472 'condition' => [
1473 'show_cart_icon' => [ 'yes' ],
1474 ],
1475 'selectors' => $selectors['icon_size'],
1476 ];
1477
1478 $extra_controls = [];
1479
1480 $extra_controls['wishlist_width'] = [
1481 'type' => 'slider',
1482 'mode' => 'responsive',
1483 'label' => esc_html__( 'Width', 'shopbuilder' ),
1484 'size_units' => [ 'px' ],
1485 'range' => [
1486 'px' => [
1487 'min' => 0,
1488 'max' => 100,
1489 ],
1490 ],
1491 'selectors' => $selectors['width'],
1492 ];
1493
1494 $extra_controls['wishlist_height'] = [
1495 'type' => 'slider',
1496 'mode' => 'responsive',
1497 'label' => esc_html__( 'height', 'shopbuilder' ),
1498 'size_units' => [ 'px' ],
1499 'range' => [
1500 'px' => [
1501 'min' => 0,
1502 'max' => 100,
1503 ],
1504 ],
1505 'selectors' => $selectors['height'],
1506 ];
1507
1508 $fields = Fns::insert_controls( 'wishlist_button_color_note', $fields, $extra_controls );
1509
1510 $extra_controls['wishlist_button_radius'] = [
1511 'mode' => 'responsive',
1512 'type' => 'dimensions',
1513 'label' => esc_html__( 'Border Radius', 'shopbuilder' ),
1514 'size_units' => [ 'px', '%', 'em' ],
1515 'selectors' => $selectors['border_radius'],
1516 ];
1517
1518 $fields = Fns::insert_controls( 'wishlist_button_border_hover_color', $fields, $extra_controls, true );
1519
1520 return apply_filters( 'rtsb/elements/elementor/wishlist_style_control', $fields, $obj );
1521 }
1522
1523 /**
1524 * Product Quick View Section
1525 *
1526 * @param object $obj Reference object.
1527 *
1528 * @return array
1529 */
1530 public static function product_quick_view( $obj ): array {
1531 $css_selectors = $obj->selectors['product_quick_view'];
1532 $title = esc_html__( 'Quick View Button', 'shopbuilder' );
1533 $condition = [
1534 'show_quick_view' => [ 'yes' ],
1535 ];
1536 $selectors = self::action_btn_selectors( $css_selectors );
1537
1538 $fields = ControlHelper::general_elementor_style( 'quick_view_button', $title, $obj, $condition, $selectors );
1539
1540 unset( $fields['quick_view_button_alignment'] );
1541
1542 $fields['rtsb_el_quick_view_button_typography'] = [
1543 'type' => 'slider',
1544 'mode' => 'responsive',
1545 'label' => esc_html__( 'Icon Size', 'shopbuilder' ),
1546 'size_units' => [ 'px' ],
1547 'range' => [
1548 'px' => [
1549 'min' => 0,
1550 'max' => 100,
1551 ],
1552 ],
1553 'condition' => [
1554 'show_cart_icon' => [ 'yes' ],
1555 ],
1556 'selectors' => $selectors['icon_size'],
1557 ];
1558
1559 $extra_controls = [];
1560
1561 $extra_controls['quick_view_width'] = [
1562 'type' => 'slider',
1563 'mode' => 'responsive',
1564 'label' => esc_html__( 'Width', 'shopbuilder' ),
1565 'size_units' => [ 'px' ],
1566 'range' => [
1567 'px' => [
1568 'min' => 0,
1569 'max' => 100,
1570 ],
1571 ],
1572 'selectors' => $selectors['width'],
1573 ];
1574
1575 $extra_controls['quick_view_height'] = [
1576 'type' => 'slider',
1577 'mode' => 'responsive',
1578 'label' => esc_html__( 'height', 'shopbuilder' ),
1579 'size_units' => [ 'px' ],
1580 'range' => [
1581 'px' => [
1582 'min' => 0,
1583 'max' => 100,
1584 ],
1585 ],
1586 'selectors' => $selectors['height'],
1587 ];
1588
1589 $fields = Fns::insert_controls( 'quick_view_button_color_note', $fields, $extra_controls );
1590
1591 $extra_controls['quick_view_button_radius'] = [
1592 'mode' => 'responsive',
1593 'type' => 'dimensions',
1594 'label' => esc_html__( 'Border Radius', 'shopbuilder' ),
1595 'size_units' => [ 'px', '%', 'em' ],
1596 'selectors' => $selectors['border_radius'],
1597 ];
1598
1599 $fields = Fns::insert_controls( 'quick_view_button_border_hover_color', $fields, $extra_controls, true );
1600
1601 return apply_filters( 'rtsb/elements/elementor/quick_view_style_control', $fields, $obj );
1602 }
1603
1604 /**
1605 * Hover Icon Button Section
1606 *
1607 * @param object $obj Reference object.
1608 *
1609 * @return array
1610 */
1611 public static function hover_icon_button( $obj ): array {
1612 $css_selectors = $obj->selectors['hover_icon_button'];
1613 $title = esc_html__( 'Hover Icon Button', 'shopbuilder' );
1614 $condition = [
1615 'layout' => [ 'grid-layout2', 'slider-layout2' ],
1616 ];
1617 $selectors = [
1618 'typography' => $css_selectors['typography'],
1619 'icon_size' => [ $css_selectors['icon_size'] => 'font-size: {{SIZE}}{{UNIT}}' ],
1620 'hover_icon_spacing' => [ $css_selectors['hover_icon_spacing'] => 'margin-left: {{SIZE}}{{UNIT}}' ],
1621 'color' => [ $css_selectors['color'] => 'color: {{VALUE}}' ],
1622 'bg_color' => [ $css_selectors['bg_color'] => 'background-color: {{VALUE}}' ],
1623 'icon_color' => [ $css_selectors['icon_color'] => 'color: {{VALUE}}' ],
1624 'hover_color' => [ $css_selectors['hover_color'] => 'color: {{VALUE}}' ],
1625 'hover_bg_color' => [ $css_selectors['hover_bg_color'] => 'background-color: {{VALUE}}' ],
1626 'hover_icon_color' => [ $css_selectors['hover_icon_color'] => 'color: {{VALUE}}' ],
1627 'border' => $css_selectors['border'],
1628 'border_hover_color' => [ $css_selectors['border_hover_color'] => 'border-color: {{VALUE}}' ],
1629 'border_radius' => [ $css_selectors['border_radius'] => 'border-radius: {{TOP}}{{UNIT}} {{RIGHT}}{{UNIT}} {{BOTTOM}}{{UNIT}} {{LEFT}}{{UNIT}}' ],
1630 'padding' => [ $css_selectors['padding'] => 'padding: {{TOP}}{{UNIT}} {{RIGHT}}{{UNIT}} {{BOTTOM}}{{UNIT}} {{LEFT}}{{UNIT}};' ],
1631 'margin' => [ $css_selectors['margin'] => 'margin: {{TOP}}{{UNIT}} {{RIGHT}}{{UNIT}} {{BOTTOM}}{{UNIT}} {{LEFT}}{{UNIT}};' ],
1632 ];
1633
1634 $fields = ControlHelper::general_elementor_style( 'hover_icon_button', $title, $obj, $condition, $selectors );
1635
1636 $fields['hover_icon_button_alignment'] = [
1637 'type' => 'slider',
1638 'mode' => 'responsive',
1639 'label' => esc_html__( 'Icon Size', 'shopbuilder' ),
1640 'size_units' => [ 'px' ],
1641 'range' => [
1642 'px' => [
1643 'min' => 0,
1644 'max' => 100,
1645 ],
1646 ],
1647 'default' => [
1648 'unit' => 'px',
1649 'size' => 14,
1650 ],
1651 'condition' => [
1652 'show_hover_btn_icon' => [ 'yes' ],
1653 ],
1654 'selectors' => $selectors['icon_size'],
1655 ];
1656
1657 $extra_controls = [];
1658
1659 $extra_controls['hover_icon_button_spacing'] = [
1660 'type' => 'slider',
1661 'mode' => 'responsive',
1662 'label' => esc_html__( 'Icon Spacing', 'shopbuilder' ),
1663 'size_units' => [ 'px' ],
1664 'range' => [
1665 'px' => [
1666 'min' => 0,
1667 'max' => 100,
1668 ],
1669 ],
1670 'default' => [
1671 'unit' => 'px',
1672 'size' => 3,
1673 ],
1674 'condition' => [
1675 'show_hover_btn_icon' => [ 'yes' ],
1676 ],
1677 'selectors' => $selectors['hover_icon_spacing'],
1678 ];
1679
1680 $fields = Fns::insert_controls( 'hover_icon_button_alignment', $fields, $extra_controls, true );
1681
1682 $extra_controls['hover_icon_button_icon_color'] = [
1683 'type' => 'color',
1684 'label' => esc_html__( 'Icon Color', 'shopbuilder' ),
1685 'condition' => [
1686 'show_hover_btn_icon' => [ 'yes' ],
1687 ],
1688 'selectors' => $selectors['icon_color'],
1689 ];
1690
1691 $fields = Fns::insert_controls( 'hover_icon_button_bg_color', $fields, $extra_controls, true );
1692
1693 $extra_controls['hover_icon_button_hover_icon_color'] = [
1694 'type' => 'color',
1695 'label' => esc_html__( 'Hover Icon Color', 'shopbuilder' ),
1696 'condition' => [
1697 'show_hover_btn_icon' => [ 'yes' ],
1698 ],
1699 'selectors' => $selectors['hover_icon_color'],
1700 ];
1701
1702 $fields = Fns::insert_controls( 'hover_icon_button_hover_bg_color', $fields, $extra_controls, true );
1703
1704 $extra_controls['hover_icon_button_radius'] = [
1705 'mode' => 'responsive',
1706 'type' => 'dimensions',
1707 'label' => esc_html__( 'Border Radius', 'shopbuilder' ),
1708 'size_units' => [ 'px', '%', 'em' ],
1709 'selectors' => $selectors['border_radius'],
1710 ];
1711
1712 $fields = Fns::insert_controls( 'hover_icon_button_border_hover_color', $fields, $extra_controls, true );
1713
1714 return apply_filters( 'rtsb/elements/elementor/hover_icon_btn_style_control', $fields, $obj );
1715 }
1716
1717 /**
1718 * Share Items Section
1719 *
1720 * @param object $obj Reference object.
1721 *
1722 * @return array
1723 */
1724 public static function share_items( $obj ): array {
1725 $css_selectors = $obj->selectors['share_items'];
1726 $title = esc_html__( 'Share Items', 'shopbuilder' );
1727 $condition = [
1728 'layout!' => [ 'default' ],
1729 ];
1730 $selectors = [
1731 'share_icons_spacing' => [ $css_selectors['share_icons_spacing'] => 'gap: {{SIZE}}{{UNIT}}' ],
1732 'share_items_min_width' => [ $css_selectors['share_items_min_width'] => 'min-width: {{SIZE}}{{UNIT}}' ],
1733 'social_items_color' => [ $css_selectors['social_items_color'] => 'fill: {{VALUE}}; color: {{VALUE}}' ],
1734 'social_items_bg_color' => [ $css_selectors['social_items_bg_color'] => 'background-color: {{VALUE}}' ],
1735 'facebook_color' => [ $css_selectors['facebook_color'] => 'fill: {{VALUE}}; color: {{VALUE}}' ],
1736 'twitter_color' => [ $css_selectors['twitter_color'] => 'fill: {{VALUE}}; color: {{VALUE}}' ],
1737 'linkedin_color' => [ $css_selectors['linkedin_color'] => 'fill: {{VALUE}}; color: {{VALUE}}' ],
1738 'pinterest_color' => [ $css_selectors['pinterest_color'] => 'fill: {{VALUE}}; color: {{VALUE}}' ],
1739 'skype_color' => [ $css_selectors['skype_color'] => 'fill: {{VALUE}}; color: {{VALUE}}' ],
1740 'whatsapp_color' => [ $css_selectors['whatsapp_color'] => 'fill: {{VALUE}}; color: {{VALUE}}' ],
1741 'reddit_color' => [ $css_selectors['reddit_color'] => 'fill: {{VALUE}}; color: {{VALUE}}' ],
1742 'telegram_color' => [ $css_selectors['telegram_color'] => 'fill: {{VALUE}}; color: {{VALUE}}' ],
1743 'facebook_bg_color' => [ $css_selectors['facebook_bg_color'] => 'background-color: {{VALUE}}' ],
1744 'twitter_bg_color' => [ $css_selectors['twitter_bg_color'] => 'background-color: {{VALUE}}' ],
1745 'linkedin_bg_color' => [ $css_selectors['linkedin_bg_color'] => 'background-color: {{VALUE}}' ],
1746 'pinterest_bg_color' => [ $css_selectors['pinterest_bg_color'] => 'background-color: {{VALUE}}' ],
1747 'skype_bg_color' => [ $css_selectors['skype_bg_color'] => 'background-color: {{VALUE}}' ],
1748 'whatsapp_bg_color' => [ $css_selectors['whatsapp_bg_color'] => 'background-color: {{VALUE}}' ],
1749 'reddit_bg_color' => [ $css_selectors['reddit_bg_color'] => 'background-color: {{VALUE}}' ],
1750 'telegram_bg_color' => [ $css_selectors['telegram_bg_color'] => 'background-color: {{VALUE}}' ],
1751 'social_items_hover_color' => [ $css_selectors['social_items_hover_color'] => 'fill: {{VALUE}}; color: {{VALUE}}' ],
1752 'social_items_hover_bg_color' => [ $css_selectors['social_items_hover_bg_color'] => 'background-color: {{VALUE}}' ],
1753 'facebook_hover_color' => [ $css_selectors['facebook_hover_color'] => 'fill: {{VALUE}}; color: {{VALUE}}' ],
1754 'twitter_hover_color' => [ $css_selectors['twitter_hover_color'] => 'fill: {{VALUE}}; color: {{VALUE}}' ],
1755 'linkedin_hover_color' => [ $css_selectors['linkedin_hover_color'] => 'fill: {{VALUE}}; color: {{VALUE}}' ],
1756 'pinterest_hover_color' => [ $css_selectors['pinterest_hover_color'] => 'fill: {{VALUE}}; color: {{VALUE}}' ],
1757 'skype_hover_color' => [ $css_selectors['skype_hover_color'] => 'fill: {{VALUE}}; color: {{VALUE}}' ],
1758 'whatsapp_hover_color' => [ $css_selectors['whatsapp_hover_color'] => 'fill: {{VALUE}}; color: {{VALUE}}' ],
1759 'reddit_hover_color' => [ $css_selectors['reddit_hover_color'] => 'fill: {{VALUE}}; color: {{VALUE}}' ],
1760 'telegram_hover_color' => [ $css_selectors['telegram_hover_color'] => 'fill: {{VALUE}}; color: {{VALUE}}' ],
1761 'facebook_hover_bg_color' => [ $css_selectors['facebook_hover_bg_color'] => 'background-color: {{VALUE}}' ],
1762 'twitter_hover_bg_color' => [ $css_selectors['twitter_hover_bg_color'] => 'background-color: {{VALUE}}' ],
1763 'linkedin_hover_bg_color' => [ $css_selectors['linkedin_hover_bg_color'] => 'background-color: {{VALUE}}' ],
1764 'pinterest_hover_bg_color' => [ $css_selectors['pinterest_hover_bg_color'] => 'background-color: {{VALUE}}' ],
1765 'skype_hover_bg_color' => [ $css_selectors['skype_hover_bg_color'] => 'background-color: {{VALUE}}' ],
1766 'whatsapp_hover_bg_color' => [ $css_selectors['whatsapp_hover_bg_color'] => 'background-color: {{VALUE}}' ],
1767 'reddit_hover_bg_color' => [ $css_selectors['reddit_hover_bg_color'] => 'background-color: {{VALUE}}' ],
1768 'telegram_hover_bg_color' => [ $css_selectors['telegram_hover_bg_color'] => 'background-color: {{VALUE}}' ],
1769 'border' => $css_selectors['border'],
1770 'border_hover_color' => [ $css_selectors['border_hover_color'] => 'border-color: {{VALUE}}' ],
1771 'border_radius' => [ $css_selectors['border_radius'] => 'border-radius: {{TOP}}{{UNIT}} {{RIGHT}}{{UNIT}} {{BOTTOM}}{{UNIT}} {{LEFT}}{{UNIT}}' ],
1772 'padding' => [ $css_selectors['padding'] => 'padding: {{TOP}}{{UNIT}} {{RIGHT}}{{UNIT}} {{BOTTOM}}{{UNIT}} {{LEFT}}{{UNIT}};' ],
1773 'margin' => [ $css_selectors['margin'] => 'margin: {{TOP}}{{UNIT}} {{RIGHT}}{{UNIT}} {{BOTTOM}}{{UNIT}} {{LEFT}}{{UNIT}};' ],
1774 ];
1775
1776 $fields = ControlHelper::general_elementor_style( 'share_items', $title, $obj, $condition, $selectors );
1777
1778 unset(
1779 $fields['rtsb_el_share_items_typography'],
1780 $fields['share_items_alignment'],
1781 $fields['share_items_hover_color'],
1782 $fields['share_items_hover_bg_color'],
1783 $fields['share_items_color'],
1784 $fields['share_items_bg_color']
1785 );
1786
1787 $extra_controls = [];
1788
1789 $extra_controls['share_items_spacing'] = [
1790 'type' => 'slider',
1791 'mode' => 'responsive',
1792 'label' => esc_html__( 'Items Spacing', 'shopbuilder' ),
1793 'size_units' => [ 'px' ],
1794 'range' => [
1795 'px' => [
1796 'min' => 0,
1797 'max' => 100,
1798 ],
1799 ],
1800 'selectors' => $selectors['share_icons_spacing'],
1801 ];
1802
1803 $extra_controls['share_items_min_width'] = [
1804 'type' => 'slider',
1805 'mode' => 'responsive',
1806 'label' => esc_html__( 'Items Min Width', 'shopbuilder' ),
1807 'size_units' => [ 'px' ],
1808 'range' => [
1809 'px' => [
1810 'min' => 0,
1811 'max' => 300,
1812 ],
1813 ],
1814 'selectors' => $selectors['share_items_min_width'],
1815 ];
1816
1817 $fields = Fns::insert_controls( 'share_items_typo_note', $fields, $extra_controls, true );
1818
1819 $share_platforms = ControlHelper::sharing_settings();
1820
1821 $extra_controls['social_items_color'] = [
1822 'type' => 'color',
1823 'label' => esc_html__( 'Items Color', 'shopbuilder' ),
1824 'selectors' => $selectors['social_items_color'],
1825 ];
1826
1827 $extra_controls['social_items_bg_color'] = [
1828 'type' => 'color',
1829 'label' => esc_html__( 'Items Background Color', 'shopbuilder' ),
1830 'selectors' => $selectors['social_items_bg_color'],
1831 ];
1832
1833 foreach ( $share_platforms as $share_platform ) {
1834 $extra_controls[ $share_platform . '_color' ] = [
1835 'type' => 'color',
1836 'label' => ucfirst( $share_platform ) . esc_html__( ' Color', 'shopbuilder' ),
1837 'selectors' => $selectors[ $share_platform . '_color' ],
1838 ];
1839
1840 $extra_controls[ $share_platform . '_bg_color' ] = [
1841 'type' => 'color',
1842 'label' => ucfirst( $share_platform ) . esc_html__( ' Background', 'shopbuilder' ),
1843 'selectors' => $selectors[ $share_platform . '_bg_color' ],
1844 ];
1845
1846 $fields = Fns::insert_controls( 'share_items_color_tab', $fields, $extra_controls, true );
1847 }
1848
1849 $extra_controls['social_items_hover_color'] = [
1850 'type' => 'color',
1851 'label' => esc_html__( 'Items Hover Color', 'shopbuilder' ),
1852 'selectors' => $selectors['social_items_hover_color'],
1853 ];
1854
1855 $extra_controls['social_items_hover_bg_color'] = [
1856 'type' => 'color',
1857 'label' => esc_html__( 'Items Background Hover Color', 'shopbuilder' ),
1858 'selectors' => $selectors['social_items_hover_bg_color'],
1859 ];
1860
1861 foreach ( $share_platforms as $share_platform ) {
1862 $extra_controls[ $share_platform . '_hover_color' ] = [
1863 'type' => 'color',
1864 'label' => ucfirst( $share_platform ) . esc_html__( ' Hover Color', 'shopbuilder' ),
1865 'selectors' => $selectors[ $share_platform . '_hover_color' ],
1866 ];
1867
1868 $extra_controls[ $share_platform . '_hover_bg_color' ] = [
1869 'type' => 'color',
1870 'label' => ucfirst( $share_platform ) . esc_html__( ' Hover Background', 'shopbuilder' ),
1871 'selectors' => $selectors[ $share_platform . '_hover_bg_color' ],
1872 ];
1873
1874 $fields = Fns::insert_controls( 'share_items_hover_color_tab', $fields, $extra_controls, true );
1875 }
1876
1877 $extra_controls['share_items_radius'] = [
1878 'mode' => 'responsive',
1879 'type' => 'dimensions',
1880 'label' => esc_html__( 'Border Radius', 'shopbuilder' ),
1881 'size_units' => [ 'px', '%', 'em' ],
1882 'selectors' => $selectors['border_radius'],
1883 ];
1884
1885 $fields = Fns::insert_controls( 'share_items_border_hover_color', $fields, $extra_controls, true );
1886
1887 return apply_filters( 'rtsb/elements/elementor/share_icons_style_control', $fields, $obj );
1888 }
1889
1890 /**
1891 * Share Icons Section
1892 *
1893 * @param object $obj Reference object.
1894 *
1895 * @return array
1896 */
1897 public static function share_icons( $obj ): array {
1898 $css_selectors = $obj->selectors['share_icons'];
1899 $title = esc_html__( 'Share Icons', 'shopbuilder' );
1900 $condition = [
1901 'layout!' => [ 'default' ],
1902 ];
1903 $selectors = [
1904 'share_icons_width' => [ $css_selectors['share_icons_width'] => 'width: {{SIZE}}{{UNIT}}' ],
1905 'share_icons_height' => [ $css_selectors['share_icons_height'] => 'height: {{SIZE}}{{UNIT}}' ],
1906 'color' => [ $css_selectors['color'] => 'fill: {{VALUE}}' ],
1907 'bg_color' => [ $css_selectors['bg_color'] => 'background-color: {{VALUE}}' ],
1908 'hover_color' => [ $css_selectors['hover_color'] => 'fill: {{VALUE}}' ],
1909 'hover_bg_color' => [ $css_selectors['hover_bg_color'] => 'background-color: {{VALUE}}' ],
1910 'border' => $css_selectors['border'],
1911 'border_hover_color' => [ $css_selectors['border_hover_color'] => 'border-color: {{VALUE}}' ],
1912 'padding' => [ $css_selectors['padding'] => 'padding: {{TOP}}{{UNIT}} {{RIGHT}}{{UNIT}} {{BOTTOM}}{{UNIT}} {{LEFT}}{{UNIT}};' ],
1913 'margin' => [ $css_selectors['margin'] => 'margin: {{TOP}}{{UNIT}} {{RIGHT}}{{UNIT}} {{BOTTOM}}{{UNIT}} {{LEFT}}{{UNIT}};' ],
1914 ];
1915
1916 $fields = ControlHelper::general_elementor_style( 'share_icons', $title, $obj, $condition, $selectors );
1917
1918 unset(
1919 $fields['rtsb_el_share_icons_typography'],
1920 $fields['share_icons_alignment'],
1921 );
1922
1923 $extra_controls = [];
1924
1925 $extra_controls['share_icons_width'] = [
1926 'type' => 'slider',
1927 'mode' => 'responsive',
1928 'label' => esc_html__( 'Icon Width', 'shopbuilder' ),
1929 'size_units' => [ 'px' ],
1930 'range' => [
1931 'px' => [
1932 'min' => 0,
1933 'max' => 100,
1934 ],
1935 ],
1936 'selectors' => $selectors['share_icons_width'],
1937 ];
1938
1939 $extra_controls['share_icons_height'] = [
1940 'type' => 'slider',
1941 'mode' => 'responsive',
1942 'label' => esc_html__( 'Icon Height', 'shopbuilder' ),
1943 'size_units' => [ 'px' ],
1944 'range' => [
1945 'px' => [
1946 'min' => 0,
1947 'max' => 100,
1948 ],
1949 ],
1950 'selectors' => $selectors['share_icons_height'],
1951 ];
1952
1953 $fields = Fns::insert_controls( 'share_icons_typo_note', $fields, $extra_controls, true );
1954
1955 $fields['share_icons_typo_note']['raw'] = sprintf(
1956 '<h3 class="rtsb-elementor-group-heading">%s</h3>',
1957 esc_html__( 'Dimension', 'shopbuilder' )
1958 );
1959
1960 return apply_filters( 'rtsb/elements/elementor/share_icons_style_control', $fields, $obj );
1961 }
1962
1963 /**
1964 * Share Text Section
1965 *
1966 * @param object $obj Reference object.
1967 *
1968 * @return array
1969 */
1970 public static function share_text( $obj ): array {
1971 $css_selectors = $obj->selectors['share_text'];
1972 $title = esc_html__( 'Share Text', 'shopbuilder' );
1973 $condition = [
1974 'layout!' => [ 'default' ],
1975 ];
1976 $selectors = [
1977 'typography' => $css_selectors['typography'],
1978 'alignment' => [ $css_selectors['alignment'] => 'text-align: {{VALUE}};' ],
1979 'color' => [ $css_selectors['color'] => 'color: {{VALUE}};' ],
1980 'bg_color' => [ $css_selectors['bg_color'] => 'background-color: {{VALUE}}' ],
1981 'hover_color' => [ $css_selectors['hover_color'] => 'color: {{VALUE}}' ],
1982 'hover_bg_color' => [ $css_selectors['hover_bg_color'] => 'background-color: {{VALUE}}' ],
1983 'border' => $css_selectors['border'],
1984 'border_hover_color' => [ $css_selectors['border_hover_color'] => 'border-color: {{VALUE}}' ],
1985 'padding' => [ $css_selectors['padding'] => 'padding: {{TOP}}{{UNIT}} {{RIGHT}}{{UNIT}} {{BOTTOM}}{{UNIT}} {{LEFT}}{{UNIT}};' ],
1986 'margin' => [ $css_selectors['margin'] => 'margin: {{TOP}}{{UNIT}} {{RIGHT}}{{UNIT}} {{BOTTOM}}{{UNIT}} {{LEFT}}{{UNIT}};' ],
1987 ];
1988
1989 $fields = ControlHelper::general_elementor_style( 'share_text', $title, $obj, $condition, $selectors );
1990
1991 return apply_filters( 'rtsb/elements/elementor/share_text_style_control', $fields, $obj );
1992 }
1993
1994 /**
1995 * Share Text Section
1996 *
1997 * @param object $obj Reference object.
1998 *
1999 * @return array
2000 */
2001 public static function share_header( $obj ): array {
2002 $css_selectors = $obj->selectors['share_header'];
2003 $title = esc_html__( 'Share Header', 'shopbuilder' );
2004 $condition = [
2005 'show_share_pre_text' => [ 'yes' ],
2006 ];
2007 $selectors = [
2008 'typography' => $css_selectors['typography'],
2009 'share_header_type' => [ $css_selectors['share_header_type'] => 'display: {{VALUE}};' ],
2010 'color' => [ $css_selectors['color'] => 'color: {{VALUE}};' ],
2011 'bg_color' => [ $css_selectors['bg_color'] => 'background-color: {{VALUE}}' ],
2012 'border' => $css_selectors['border'],
2013 'padding' => [ $css_selectors['padding'] => 'padding: {{TOP}}{{UNIT}} {{RIGHT}}{{UNIT}} {{BOTTOM}}{{UNIT}} {{LEFT}}{{UNIT}};' ],
2014 'margin' => [ $css_selectors['margin'] => 'margin: {{TOP}}{{UNIT}} {{RIGHT}}{{UNIT}} {{BOTTOM}}{{UNIT}} {{LEFT}}{{UNIT}} !important;' ],
2015 ];
2016
2017 $fields = ControlHelper::general_elementor_style( 'share_header', $title, $obj, $condition, $selectors );
2018
2019 unset(
2020 $fields['share_header_alignment'],
2021 $fields['share_header_color_tabs'],
2022 $fields['share_header_color_tab'],
2023 $fields['share_header_color_tab_end'],
2024 $fields['share_header_hover_color_tab'],
2025 $fields['share_header_hover_color'],
2026 $fields['share_header_hover_bg_color'],
2027 $fields['share_header_hover_color_tab_end'],
2028 $fields['share_header_color_tabs_end'],
2029 $fields['share_header_border_hover_color'],
2030 );
2031
2032 $extra_controls = [];
2033
2034 $extra_controls['share_header_type'] = [
2035 'type' => 'choose',
2036 'label' => esc_html__( 'Display Type', 'shopbuilder' ),
2037 'options' => [
2038 'flex' => [
2039 'title' => esc_html__( 'Inline', 'shopbuilder' ),
2040 'icon' => 'eicon-h-align-right',
2041 ],
2042 'block' => [
2043 'title' => esc_html__( 'New Line', 'shopbuilder' ),
2044 'icon' => 'eicon-v-align-bottom',
2045 ],
2046 ],
2047 'default' => 'flex',
2048 'toggle' => true,
2049 'selectors' => $selectors['share_header_type'],
2050 ];
2051
2052 return Fns::insert_controls( 'share_header_color_note', $fields, $extra_controls );
2053 }
2054
2055 /**
2056 * Advanced section
2057 *
2058 * @param object $obj Reference object.
2059 *
2060 * @return array
2061 */
2062 public static function advanced( $obj ): array {
2063
2064 $fields['advanced_section'] = $obj->start_section( esc_html__( 'Advanced', 'shopbuilder' ), self::$tab );
2065
2066 $fields['gutter_section_end'] = $obj->end_section();
2067
2068 return apply_filters( 'rtsb/elements/elementor/advanced_control', $fields, $obj );
2069 }
2070
2071 /**
2072 * Slider buttons section
2073 *
2074 * @param object $obj Reference object.
2075 *
2076 * @return array
2077 */
2078 public static function slider_buttons( $obj ): array {
2079 $css_selectors = $obj->selectors['slider_buttons'];
2080 $title = esc_html__( 'Slider Buttons', 'shopbuilder' );
2081 $selectors = [
2082 'arrow_size' => [ $css_selectors['arrow_size'] => 'font-size: {{SIZE}}{{UNIT}};' ],
2083 'arrow_width' => [ $css_selectors['arrow_width'] => 'width: {{SIZE}}{{UNIT}};' ],
2084 'arrow_height' => [ $css_selectors['arrow_height'] => 'height: {{SIZE}}{{UNIT}};' ],
2085 'arrow_line_height' => [ $css_selectors['arrow_line_height'] => 'line-height: {{SIZE}}{{UNIT}};' ],
2086 'dot_width' => [ $css_selectors['dot_width'] => 'width: {{SIZE}}{{UNIT}};' ],
2087 'dot_height' => [ $css_selectors['dot_height'] => 'height: {{SIZE}}{{UNIT}};' ],
2088 'dot_spacing' => [ $css_selectors['dot_spacing'] => 'margin-left: calc({{SIZE}}{{UNIT}} / 2); margin-right: calc({{SIZE}}{{UNIT}} / 2);' ],
2089 'color' => [ $css_selectors['color'] => 'color: {{VALUE}};' ],
2090 'bg_color' => [ $css_selectors['bg_color'] => 'background-color: {{VALUE}};' ],
2091 'hover_color' => [ $css_selectors['hover_color'] => 'color: {{VALUE}};' ],
2092 'hover_bg_color' => [ $css_selectors['hover_bg_color'] => 'background-color: {{VALUE}};' ],
2093 'dot_color' => [ $css_selectors['dot_color'] => 'background-color: {{VALUE}};' ],
2094 'dot_active_color' => [ $css_selectors['dot_active_color'] => 'background-color: {{VALUE}};' ],
2095 'border' => $css_selectors['border'],
2096 'border_hover_color' => [ $css_selectors['border_hover_color'] => 'border-color: {{VALUE}};' ],
2097 'active_border_color' => [ $css_selectors['active_border_color'] => 'border-color: {{VALUE}};' ],
2098 'border_radius' => [ $css_selectors['border_radius'] => 'border-radius: {{TOP}}{{UNIT}} {{RIGHT}}{{UNIT}} {{BOTTOM}}{{UNIT}} {{LEFT}}{{UNIT}};' ],
2099 'wrapper_padding' => [ $css_selectors['wrapper_padding'] => 'margin: {{TOP}}{{UNIT}} {{RIGHT}}{{UNIT}} {{BOTTOM}}{{UNIT}} {{LEFT}}{{UNIT}};' ],
2100 ];
2101
2102 $conditions = [
2103 'relation' => 'or',
2104 'terms' => [
2105 [
2106 'name' => 'slider_nav',
2107 'operator' => '==',
2108 'value' => 'yes',
2109 ],
2110 [
2111 'name' => 'slider_pagi',
2112 'operator' => '==',
2113 'value' => 'yes',
2114 ],
2115 ],
2116 ];
2117
2118 $fields = ControlHelper::general_elementor_style( 'slider_buttons', $title, $obj, [], $selectors, $conditions );
2119
2120 unset(
2121 $fields['rtsb_el_slider_buttons_typography'],
2122 $fields['slider_buttons_alignment'],
2123 $fields['slider_buttons_padding'],
2124 $fields['slider_buttons_margin']
2125 );
2126
2127 $extra_controls = [];
2128 $arrow_condition = [ 'slider_nav' => [ 'yes' ] ];
2129 $dot_condition = [ 'slider_pagi' => [ 'yes' ] ];
2130
2131 $fields['slider_buttons_typo_note']['raw'] = sprintf(
2132 '<h3 class="rtsb-elementor-group-heading">%s</h3>',
2133 esc_html__( 'Arrow Size (px)', 'shopbuilder' )
2134 );
2135
2136 $fields['slider_buttons_typo_note']['condition'] = $arrow_condition;
2137
2138 $extra_controls['slider_buttons_arrow_size'] = [
2139 'type' => 'slider',
2140 'mode' => 'responsive',
2141 'label' => esc_html__( 'Arrow Size', 'shopbuilder' ),
2142 'range' => [
2143 'px' => [
2144 'min' => 1,
2145 'max' => 100,
2146 'step' => 1,
2147 ],
2148 ],
2149 'condition' => $arrow_condition,
2150 'selectors' => $selectors['arrow_size'],
2151 ];
2152
2153 $extra_controls['slider_buttons_arrow_width'] = [
2154 'type' => 'slider',
2155 'mode' => 'responsive',
2156 'label' => esc_html__( 'Arrow Width', 'shopbuilder' ),
2157 'range' => [
2158 'px' => [
2159 'min' => 1,
2160 'max' => 100,
2161 'step' => 1,
2162 ],
2163 ],
2164 'condition' => $arrow_condition,
2165 'selectors' => $selectors['arrow_width'],
2166 ];
2167
2168 $extra_controls['slider_buttons_arrow_height'] = [
2169 'type' => 'slider',
2170 'mode' => 'responsive',
2171 'label' => esc_html__( 'Arrow Height', 'shopbuilder' ),
2172 'range' => [
2173 'px' => [
2174 'min' => 1,
2175 'max' => 100,
2176 'step' => 1,
2177 ],
2178 ],
2179 'condition' => $arrow_condition,
2180 'selectors' => $selectors['arrow_height'],
2181 ];
2182
2183 $extra_controls['slider_buttons_arrow_line_height'] = [
2184 'type' => 'slider',
2185 'mode' => 'responsive',
2186 'label' => esc_html__( 'Arrow Line Height', 'shopbuilder' ),
2187 'range' => [
2188 'px' => [
2189 'min' => 1,
2190 'max' => 100,
2191 'step' => 1,
2192 ],
2193 ],
2194 'condition' => $arrow_condition,
2195 'selectors' => $selectors['arrow_line_height'],
2196 ];
2197
2198 $extra_controls['slider_buttons_dot_size_note'] = $obj->el_heading(
2199 esc_html__( 'Dot Size (px)', 'shopbuilder' ),
2200 'before',
2201 [],
2202 $dot_condition
2203 );
2204
2205 $extra_controls['slider_buttons_dot_width'] = [
2206 'type' => 'slider',
2207 'mode' => 'responsive',
2208 'label' => esc_html__( 'Dot Width', 'shopbuilder' ),
2209 'range' => [
2210 'px' => [
2211 'min' => 1,
2212 'max' => 100,
2213 'step' => 1,
2214 ],
2215 ],
2216 'selectors' => $selectors['dot_width'],
2217 'condition' => $dot_condition,
2218 ];
2219
2220 $extra_controls['slider_buttons_dot_height'] = [
2221 'type' => 'slider',
2222 'mode' => 'responsive',
2223 'label' => esc_html__( 'Dot Height', 'shopbuilder' ),
2224 'range' => [
2225 'px' => [
2226 'min' => 1,
2227 'max' => 100,
2228 'step' => 1,
2229 ],
2230 ],
2231 'selectors' => $selectors['dot_height'],
2232 'condition' => $dot_condition,
2233 ];
2234
2235 $extra_controls['slider_buttons_dot_spacing'] = [
2236 'type' => 'slider',
2237 'mode' => 'responsive',
2238 'label' => esc_html__( 'Dot Spacing', 'shopbuilder' ),
2239 'range' => [
2240 'px' => [
2241 'min' => 1,
2242 'max' => 100,
2243 'step' => 1,
2244 ],
2245 ],
2246 'selectors' => $selectors['dot_spacing'],
2247 'condition' => $dot_condition,
2248 ];
2249
2250 $fields = Fns::insert_controls( 'slider_buttons_typo_note', $fields, $extra_controls, true );
2251
2252 $extra_controls['slider_buttons_active_color_tab'] = $obj->start_tab( esc_html__( 'Dot', 'shopbuilder' ) );
2253
2254 $extra_controls['slider_buttons_active_color'] = [
2255 'type' => 'color',
2256 'label' => esc_html__( 'Dot Color', 'shopbuilder' ),
2257 'selectors' => $selectors['dot_color'],
2258 ];
2259
2260 $extra_controls['slider_buttons_active_bg_color'] = [
2261 'type' => 'color',
2262 'label' => esc_html__( 'Dot Active Color', 'shopbuilder' ),
2263 'selectors' => $selectors['dot_active_color'],
2264 ];
2265
2266 $extra_controls['slider_buttons_active_color_tab_end'] = $obj->end_tab();
2267
2268 $fields = Fns::insert_controls( 'slider_buttons_hover_color_tab_end', $fields, $extra_controls, true );
2269
2270 $extra_controls['slider_buttons_border_active_color'] = [
2271 'type' => 'color',
2272 'label' => esc_html__( 'Active Color', 'shopbuilder' ),
2273 'condition' => [ 'rtsb_el_slider_buttons_border_border!' => [ '' ] ],
2274 'selectors' => $selectors['active_border_color'],
2275 ];
2276
2277 $extra_controls['slider_buttons_buttons_radius'] = [
2278 'mode' => 'responsive',
2279 'type' => 'dimensions',
2280 'label' => esc_html__( 'Border Radius', 'shopbuilder' ),
2281 'size_units' => [ 'px', '%', 'em' ],
2282 'selectors' => $selectors['border_radius'],
2283 ];
2284
2285 $fields = Fns::insert_controls( 'slider_buttons_border_hover_color', $fields, $extra_controls, true );
2286
2287 $extra_controls['slider_buttons_wrapper_padding'] = [
2288 'mode' => 'responsive',
2289 'type' => 'dimensions',
2290 'label' => esc_html__( 'Wrapper Margin', 'shopbuilder' ),
2291 'size_units' => [ 'px', '%', 'em' ],
2292 'selectors' => $selectors['wrapper_padding'],
2293 ];
2294
2295 $fields = Fns::insert_controls( 'slider_buttons_spacing_note', $fields, $extra_controls, true );
2296
2297 return apply_filters( 'rtsb/elements/elementor/slider_buttons_style_control', $fields, $obj );
2298 }
2299
2300 /**
2301 * Not Found Notice Section
2302 *
2303 * @param object $obj Reference object.
2304 *
2305 * @return array
2306 */
2307 public static function not_found_notice( $obj ): array {
2308 $css_selectors = $obj->selectors['not_found_notice'];
2309 $title = esc_html__( 'Not Found Notice', 'shopbuilder' );
2310 $selectors = [
2311 'typography' => $css_selectors['typography'],
2312 'alignment' => [ $css_selectors['alignment'] => 'text-align: {{VALUE}}; justify-content: {{VALUE}};' ],
2313 'color' => [ $css_selectors['color'] => 'color: {{VALUE}};' ],
2314 'bg_color' => [ $css_selectors['bg_color'] => 'background-color: {{VALUE}};' ],
2315 'border' => $css_selectors['border'],
2316 'padding' => [ $css_selectors['padding'] => 'padding: {{TOP}}{{UNIT}} {{RIGHT}}{{UNIT}} {{BOTTOM}}{{UNIT}} {{LEFT}}{{UNIT}};' ],
2317 'margin' => [ $css_selectors['margin'] => 'margin: {{TOP}}{{UNIT}} {{RIGHT}}{{UNIT}} {{BOTTOM}}{{UNIT}} {{LEFT}}{{UNIT}} !important;' ],
2318 ];
2319
2320 $fields = ControlHelper::general_elementor_style( 'not_found_notice', $title, $obj, [], $selectors );
2321
2322 unset(
2323 $fields['not_found_notice_color_tabs'],
2324 $fields['not_found_notice_color_tab'],
2325 $fields['not_found_notice_color_tab_end'],
2326 $fields['not_found_notice_hover_color_tab'],
2327 $fields['not_found_notice_hover_color'],
2328 $fields['not_found_notice_hover_bg_color'],
2329 $fields['not_found_notice_hover_color_tab_end'],
2330 $fields['not_found_notice_color_tabs_end'],
2331 $fields['not_found_notice_border_hover_color']
2332 );
2333
2334 return $fields;
2335 }
2336
2337 /**
2338 * Title Selectors.
2339 *
2340 * @param array $selectors Selector array.
2341 *
2342 * @return array
2343 */
2344 public static function title_selectors( $selectors ): array {
2345 return [
2346 'typography' => $selectors['typography'],
2347 'alignment' => [ $selectors['alignment'] => 'text-align: {{VALUE}};' ],
2348 'color' => [ $selectors['color'] => 'color: {{VALUE}};' ],
2349 'bg_color' => [ $selectors['bg_color'] => 'background-color: {{VALUE}};' ],
2350 'hover_color' => [ $selectors['hover_color'] => 'color: {{VALUE}};' ],
2351 'hover_bg_color' => [ $selectors['hover_bg_color'] => 'background-color: {{VALUE}};' ],
2352 'border' => $selectors['border'],
2353 'border_hover_color' => [ $selectors['border_hover_color'] => 'border-color: {{VALUE}};' ],
2354 'padding' => [ $selectors['padding'] => 'padding: {{TOP}}{{UNIT}} {{RIGHT}}{{UNIT}} {{BOTTOM}}{{UNIT}} {{LEFT}}{{UNIT}};' ],
2355 'margin' => [ $selectors['margin'] => 'margin: {{TOP}}{{UNIT}} {{RIGHT}}{{UNIT}} {{BOTTOM}}{{UNIT}} {{LEFT}}{{UNIT}} !important;' ],
2356 ];
2357 }
2358
2359 /**
2360 * Excerpt Selectors.
2361 *
2362 * @param array $selectors Selector array.
2363 *
2364 * @return array
2365 */
2366 private static function excerpt_selectors( $selectors ): array {
2367 return [
2368 'typography' => $selectors['typography'],
2369 'alignment' => [ $selectors['alignment'] => 'text-align: {{VALUE}};' ],
2370 'color' => [ $selectors['color'] => 'color: {{VALUE}};' ],
2371 'bg_color' => [ $selectors['bg_color'] => 'background-color: {{VALUE}};' ],
2372 'border' => $selectors['border'],
2373 'padding' => [ $selectors['padding'] => 'padding: {{TOP}}{{UNIT}} {{RIGHT}}{{UNIT}} {{BOTTOM}}{{UNIT}} {{LEFT}}{{UNIT}};' ],
2374 'margin' => [ $selectors['margin'] => 'margin: {{TOP}}{{UNIT}} {{RIGHT}}{{UNIT}} {{BOTTOM}}{{UNIT}} {{LEFT}}{{UNIT}};' ],
2375 ];
2376 }
2377
2378 /**
2379 * Action Button Selectors.
2380 *
2381 * @param array $selectors Selector array.
2382 *
2383 * @return array
2384 */
2385 public static function action_btn_selectors( $selectors ): array {
2386 return [
2387 'icon_size' => [
2388 $selectors['icon_size']['font_size'] => 'font-size: {{SIZE}}{{UNIT}};',
2389 $selectors['icon_size']['width'] => 'width: {{SIZE}}{{UNIT}};',
2390 ],
2391 'width' => [ $selectors['width'] => 'width: {{SIZE}}{{UNIT}} !important;' ],
2392 'height' => [ $selectors['height'] => 'height: {{SIZE}}{{UNIT}} !important;' ],
2393 'color' => [ $selectors['color'] => 'color: {{VALUE}};' ],
2394 'bg_color' => [ $selectors['bg_color'] => 'background-color: {{VALUE}};' ],
2395 'hover_color' => [ $selectors['hover_color'] => 'color: {{VALUE}};' ],
2396 'hover_bg_color' => [ $selectors['hover_bg_color'] => 'background-color: {{VALUE}};' ],
2397 'border' => $selectors['border'],
2398 'border_hover_color' => [ $selectors['border_hover_color'] => 'border-color: {{VALUE}};' ],
2399 'border_radius' => [ $selectors['border_radius'] => 'border-radius: {{TOP}}{{UNIT}} {{RIGHT}}{{UNIT}} {{BOTTOM}}{{UNIT}} {{LEFT}}{{UNIT}};' ],
2400 'padding' => [ $selectors['padding'] => 'padding: {{TOP}}{{UNIT}} {{RIGHT}}{{UNIT}} {{BOTTOM}}{{UNIT}} {{LEFT}}{{UNIT}};' ],
2401 'margin' => [ $selectors['margin'] => 'margin: {{TOP}}{{UNIT}} {{RIGHT}}{{UNIT}} {{BOTTOM}}{{UNIT}} {{LEFT}}{{UNIT}};' ],
2402 ];
2403 }
2404 }
2405