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

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

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