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

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