File "widget-carousel.php"

Full Path: /home/bytebmoc/tideswithin.com/wp-content/plugins/themesflat-addons-for-elementor/widgets/widget-carousel.php
File size: 29.98 KB
MIME-type: text/x-php
Charset: utf-8

<?php
class TFCarousel_Widget_Free extends \Elementor\Widget_Base {

	public function get_name() {
        return 'tfcarousel';
    }
    
    public function get_title() {
        return esc_html__( 'TF Carousel', 'themesflat-addons-for-elementor' );
    }

    public function get_icon() {
        return 'eicon-slider-push';
    }
    
    public function get_categories() {
        return [ 'themesflat_addons' ];
    }

    public function get_style_depends() {
		return ['tf-font-awesome','tf-regular','owl-carousel','tf-carousel'];
	}
	public function get_script_depends() {
		return ['owl-carousel','tf-carousel'];
	}	

	protected function register_controls() {
        // Start Carousel Setting        
		$this->start_controls_section( 
			'section_carousel',
            [
                'label' => esc_html__('Carousel', 'themesflat-addons-for-elementor'),
            ]
        );	    

		$repeater = new \Elementor\Repeater();

		$repeater->add_control( 
			'list_content_type',
			[
				'label' => esc_html__( 'Content type', 'themesflat-addons-for-elementor' ),
				'type' => \Elementor\Controls_Manager::SELECT,
				'default' => 'content',
				'options' => [
					'content'  => esc_html__( 'Content', 'themesflat-addons-for-elementor' ),
					'template' => esc_html__( 'Template', 'themesflat-addons-for-elementor' ),
				],
			]
		);

		$repeater->add_control(
			'image',
			[
				'label' => __( 'Choose Image', 'themesflat-addons-for-elementor' ),
				'type' => \Elementor\Controls_Manager::MEDIA,
				'default' => [
					'url' => URL_THEMESFLAT_ADDONS_ELEMENTOR_FREE."assets/img/placeholder.jpg",
				],
				'condition' => [
					'list_content_type' => 'content',
				],
			]
		);

		$repeater->add_control( 
			'list_content_template',
			[
				'label' => esc_html__( 'Template', 'themesflat-addons-for-elementor' ),
				'type' => \Elementor\Controls_Manager::SELECT,
				'options' => ThemesFlat_Addon_For_Elementor_Free::tf_get_template_elementor(),
				'condition' => [
					'list_content_type' => 'template',
				],				
			]
		);	

		$this->add_control( 
			'carousel_list',
				[					
					'type' => \Elementor\Controls_Manager::REPEATER,
					'fields' => $repeater->get_controls(),
					'default' => [
						[ ],
						[ ],
						[ ],
					],					
				]
			);
		
		$this->end_controls_section();
        // /.End Carousel	

        // Start Setting        
		$this->start_controls_section( 
			'section_setting',
            [
                'label' => esc_html__('Setting', 'themesflat-addons-for-elementor'),
            ]
        );	

		$this->add_control( 
			'carousel_loop',
			[
				'label' => esc_html__( 'Loop', 'themesflat-addons-for-elementor' ),
				'type' => \Elementor\Controls_Manager::SWITCHER,
				'label_on' => esc_html__( 'On', 'themesflat-addons-for-elementor' ),
				'label_off' => esc_html__( 'Off', 'themesflat-addons-for-elementor' ),
				'return_value' => 'yes',
				'default' => 'yes',				
			]
		);

		$this->add_control( 
			'carousel_auto',
			[
				'label' => esc_html__( 'Auto Play', 'themesflat-addons-for-elementor' ),
				'type' => \Elementor\Controls_Manager::SWITCHER,
				'label_on' => esc_html__( 'On', 'themesflat-addons-for-elementor' ),
				'label_off' => esc_html__( 'Off', 'themesflat-addons-for-elementor' ),
				'return_value' => 'yes',
				'default' => 'yes',				
			]
		);	

		$this->add_control(
			'carousel_spacer',
			[
				'label' => esc_html__( 'Spacer', 'themesflat-addons-for-elementor' ),
				'type' => \Elementor\Controls_Manager::NUMBER,
				'min' => 0,
				'max' => 100,
				'step' => 1,
				'default' => 30,				
			]
		);

		$this->add_control( 
        	'carousel_column_desk',
			[
				'label' => esc_html__( 'Columns Desktop', 'themesflat-addons-for-elementor' ),
				'type' => \Elementor\Controls_Manager::SELECT,
				'default' => '2',
				'options' => [
					'1' => esc_html__( '1', 'themesflat-addons-for-elementor' ),
					'2' => esc_html__( '2', 'themesflat-addons-for-elementor' ),
					'3' => esc_html__( '3', 'themesflat-addons-for-elementor' ),
					'4' => esc_html__( '4', 'themesflat-addons-for-elementor' ),
					'5' => esc_html__( '5', 'themesflat-addons-for-elementor' ),
					'6' => esc_html__( '6', 'themesflat-addons-for-elementor' ),
				],				
			]
		);

		$this->add_control( 
        	'carousel_column_tablet',
			[
				'label' => esc_html__( 'Columns Tablet', 'themesflat-addons-for-elementor' ),
				'type' => \Elementor\Controls_Manager::SELECT,
				'default' => '1',
				'options' => [
					'1' => esc_html__( '1', 'themesflat-addons-for-elementor' ),
					'2' => esc_html__( '2', 'themesflat-addons-for-elementor' ),
					'3' => esc_html__( '3', 'themesflat-addons-for-elementor' ),
					'4' => esc_html__( '4', 'themesflat-addons-for-elementor' ),
					'5' => esc_html__( '5', 'themesflat-addons-for-elementor' ),
					'6' => esc_html__( '6', 'themesflat-addons-for-elementor' ),
				],				
			]
		);

		$this->add_control( 
        	'carousel_column_mobile',
			[
				'label' => esc_html__( 'Columns Mobile', 'themesflat-addons-for-elementor' ),
				'type' => \Elementor\Controls_Manager::SELECT,
				'default' => '1',
				'options' => [
					'1' => esc_html__( '1', 'themesflat-addons-for-elementor' ),
					'2' => esc_html__( '2', 'themesflat-addons-for-elementor' ),
					'3' => esc_html__( '3', 'themesflat-addons-for-elementor' ),
					'4' => esc_html__( '4', 'themesflat-addons-for-elementor' ),
					'5' => esc_html__( '5', 'themesflat-addons-for-elementor' ),
					'6' => esc_html__( '6', 'themesflat-addons-for-elementor' ),
				],				
			]
		);		
        $this->end_controls_section();
        // /.End Setting

        // Start Arrow        
		$this->start_controls_section( 
			'section_arrow',
            [
                'label' => esc_html__('Arrow', 'themesflat-addons-for-elementor'),
            ]
        );

        $this->add_control( 
			'carousel_arrow',
			[
				'label' => esc_html__( 'Arrow', 'themesflat-addons-for-elementor' ),
				'type' => \Elementor\Controls_Manager::SWITCHER,
				'label_on' => esc_html__( 'Show', 'themesflat-addons-for-elementor' ),
				'label_off' => esc_html__( 'Hide', 'themesflat-addons-for-elementor' ),
				'return_value' => 'yes',
				'default' => 'yes',				
				'description'	=> 'Just show when you have two slide',
				'separator' => 'before',
			]
		);

        $this->add_control( 
			'carousel_prev_icon', [
                'label' => esc_html__( 'Prev Icon', 'themesflat-addons-for-elementor' ),
                'type' => \Elementor\Controls_Manager::ICON,
                'default' => 'fa fa-chevron-left',
                'include' => [
					'fa fa-angle-double-left',
					'fa fa-angle-left',
					'fa fa-chevron-left',
					'fa fa-arrow-left',
				],  
                'condition' => [                	
                    'carousel_arrow' => 'yes',
                ]
            ]
        );

    	$this->add_control( 
    		'carousel_next_icon', [
                'label' => esc_html__( 'Next Icon', 'themesflat-addons-for-elementor' ),
                'type' => \Elementor\Controls_Manager::ICON,
                'default' => 'fa fa-chevron-right',
                'include' => [
					'fa fa-angle-double-right',
					'fa fa-angle-right',
					'fa fa-chevron-right',
					'fa fa-arrow-right',
				], 
                'condition' => [                	
                    'carousel_arrow' => 'yes',
                ]
            ]
        );

        $this->add_responsive_control( 
        	'carousel_arrow_fontsize',
			[
				'label' => esc_html__( 'Font Size', 'themesflat-addons-for-elementor' ),
				'type' => \Elementor\Controls_Manager::SLIDER,
				'size_units' => [ 'px' ],
				'range' => [
					'px' => [
						'min' => 0,
						'max' => 100,
						'step' => 1,
					]
				],
				'default' => [
					'unit' => 'px',
					'size' => 20,
				],
				'selectors' => [
					'{{WRAPPER}} .tf-carousel-box .owl-nav .owl-prev, {{WRAPPER}} .tf-carousel-box .owl-nav .owl-next' => 'font-size: {{SIZE}}{{UNIT}};',
				],
				'condition' => [					
                    'carousel_arrow' => 'yes',
                ]
			]
		);

		$this->add_responsive_control( 
			'w_size_carousel_arrow',
			[
				'label' => esc_html__( 'Width', 'themesflat-addons-for-elementor' ),
				'type' => \Elementor\Controls_Manager::SLIDER,
				'size_units' => [ 'px' ],
				'range' => [
					'px' => [
						'min' => 0,
						'max' => 200,
						'step' => 1,
					]
				],
				'default' => [
					'unit' => 'px',
					'size' => 70,
				],
				'selectors' => [
					'{{WRAPPER}} .tf-carousel-box .owl-nav .owl-prev, {{WRAPPER}} .tf-carousel-box .owl-nav .owl-next' => 'width: {{SIZE}}{{UNIT}};',
				],
				'condition' => [					
                    'carousel_arrow' => 'yes',
                ]
			]
		);

		$this->add_responsive_control( 
			'h_size_carousel_arrow',
			[
				'label' => esc_html__( 'Height', 'themesflat-addons-for-elementor' ),
				'type' => \Elementor\Controls_Manager::SLIDER,
				'size_units' => [ 'px' ],
				'range' => [
					'px' => [
						'min' => 0,
						'max' => 200,
						'step' => 1,
					]
				],
				'default' => [
					'unit' => 'px',
					'size' => 70,
				],
				'selectors' => [
					'{{WRAPPER}} .tf-carousel-box .owl-nav .owl-prev, {{WRAPPER}} .tf-carousel-box .owl-nav .owl-next' => 'height: {{SIZE}}{{UNIT}};line-height: {{SIZE}}{{UNIT}};',
				],
				'condition' => [					
                    'carousel_arrow' => 'yes',
                ]
			]
		);	

		$this->add_responsive_control( 
			'carousel_arrow_horizontal_position_prev',
			[
				'label' => esc_html__( 'Horizontal Position Previous', 'themesflat-addons-for-elementor' ),
				'type' => \Elementor\Controls_Manager::SLIDER,
				'size_units' => [ 'px', '%' ],
				'range' => [
					'px' => [
						'min' => -200,
						'max' => 2000,
						'step' => 1,
					],
					'%' => [
						'min' => 0,
						'max' => 100,
					],
				],
				'default' => [
					'unit' => 'px',
					'size' => 0,
				],
				'selectors' => [
					'{{WRAPPER}} .tf-carousel-box .owl-nav .owl-prev' => 'left: {{SIZE}}{{UNIT}};',
				],
				'condition' => [					
                    'carousel_arrow' => 'yes',
                ]
			]
		);

		$this->add_responsive_control( 
			'carousel_arrow_horizontal_position_next',
			[
				'label' => esc_html__( 'Horizontal Position Next', 'themesflat-addons-for-elementor' ),
				'type' => \Elementor\Controls_Manager::SLIDER,
				'size_units' => [ 'px', '%' ],
				'range' => [
					'px' => [
						'min' => -200,
						'max' => 2000,
						'step' => 1,
					],
					'%' => [
						'min' => 0,
						'max' => 100,
					],
				],
				'default' => [
					'unit' => 'px',
					'size' => 0,
				],
				'selectors' => [
					'{{WRAPPER}} .tf-carousel-box .owl-nav .owl-next' => 'right: {{SIZE}}{{UNIT}};',
				],
				'condition' => [					
                    'carousel_arrow' => 'yes',
                ]
			]
		);

		$this->add_responsive_control( 
			'carousel_arrow_vertical_position',
			[
				'label' => esc_html__( 'Vertical Position', 'themesflat-addons-for-elementor' ),
				'type' => \Elementor\Controls_Manager::SLIDER,
				'size_units' => [ 'px', '%' ],
				'range' => [
					'px' => [
						'min' => -1000,
						'max' => 1000,
						'step' => 1,
					],
					'%' => [
						'min' => 0,
						'max' => 100,
					],
				],
				'default' => [
					'unit' => '%',
					'size' => 50,
				],
				'selectors' => [
					'{{WRAPPER}} .tf-carousel-box .owl-nav .owl-prev, {{WRAPPER}} .tf-carousel-box .owl-nav .owl-next' => 'top: {{SIZE}}{{UNIT}};',
				],
				'condition' => [					
                    'carousel_arrow' => 'yes',
                ]
			]
		);

		$this->start_controls_tabs( 
			'carousel_arrow_tabs',
			[
				'condition' => [
	                'carousel_arrow' => 'yes',	                
	            ]
			] );

			$this->start_controls_tab( 
				'carousel_arrow_normal_tab',
				[
					'label' => esc_html__( 'Normal', 'themesflat-addons-for-elementor' ),						
				]
			);

			$this->add_control( 
				'carousel_arrow_color',
	            [
	                'label' => esc_html__( 'Color', 'themesflat-addons-for-elementor' ),
	                'type' => \Elementor\Controls_Manager::COLOR,
	                'default' => '#ffffff',
	                'selectors' => [
						'{{WRAPPER}} .tf-carousel-box .owl-nav .owl-prev, {{WRAPPER}} .tf-carousel-box .owl-nav .owl-next' => 'color: {{VALUE}}',
					],
					'condition' => [
	                    'carousel_arrow' => 'yes',
	                ]
	            ]
	        );

	        $this->add_control( 
	        	'carousel_arrow_bg_color',
	            [
	                'label' => esc_html__( 'Background Color', 'themesflat-addons-for-elementor' ),
	                'type' => \Elementor\Controls_Manager::COLOR,
	                'default' => '#0080f0',
	                'selectors' => [
						'{{WRAPPER}} .tf-carousel-box .owl-nav .owl-prev, {{WRAPPER}} .tf-carousel-box .owl-nav .owl-next' => 'background-color: {{VALUE}};',
					],
					'condition' => [
	                    'carousel_arrow' => 'yes',
	                ]
	            ]
	        );	

	        $this->add_group_control( 
	        	\Elementor\Group_Control_Border::get_type(),
				[
					'name' => 'carousel_arrow_border',
					'label' => esc_html__( 'Border', 'themesflat-addons-for-elementor' ),
					'selector' => '{{WRAPPER}} .tf-carousel-box .owl-nav .owl-prev, {{WRAPPER}} .tf-carousel-box .owl-nav .owl-next',
					'condition' => [
	                    'carousel_arrow' => 'yes',
	                ]
				]
			);

			$this->add_responsive_control( 
				'carousel_arrow_border_radius',
	            [
	                'label' => esc_html__( 'Border Radius Previous', 'themesflat-addons-for-elementor' ),
	                'type' => \Elementor\Controls_Manager::DIMENSIONS,
	                'size_units' => [ 'px', '%', 'em' ],
	                'selectors' => [
	                    '{{WRAPPER}} .tf-carousel-box .owl-nav .owl-prev' => 'border-radius: {{TOP}}{{UNIT}} {{RIGHT}}{{UNIT}} {{BOTTOM}}{{UNIT}} {{LEFT}}{{UNIT}};',
	                ],
	                'condition' => [
	                    'carousel_arrow' => 'yes',
	                ]
	            ]
	        );

	        $this->add_responsive_control( 
				'carousel_arrow_border_radius_next',
	            [
	                'label' => esc_html__( 'Border Radius Next', 'themesflat-addons-for-elementor' ),
	                'type' => \Elementor\Controls_Manager::DIMENSIONS,
	                'size_units' => [ 'px', '%', 'em' ],
	                'selectors' => [
	                    '{{WRAPPER}} .tf-carousel-box .owl-nav .owl-next' => 'border-radius: {{TOP}}{{UNIT}} {{RIGHT}}{{UNIT}} {{BOTTOM}}{{UNIT}} {{LEFT}}{{UNIT}};',
	                ],
	                'condition' => [
	                    'carousel_arrow' => 'yes',
	                ]
	            ]
	        );

	        $this->end_controls_tab();

	        $this->start_controls_tab( 
		    	'carousel_arrow_hover_tab',
				[
					'label' => esc_html__( 'Hover', 'themesflat-addons-for-elementor' ),
				]
			);

	    	$this->add_control( 
	    		'carousel_arrow_color_hover',
	            [
	                'label' => esc_html__( 'Color', 'themesflat-addons-for-elementor' ),
	                'type' => \Elementor\Controls_Manager::COLOR,
	                'default' => '#ffffff',
	                'selectors' => [
						'{{WRAPPER}} .tf-carousel-box .owl-nav .owl-prev:hover, {{WRAPPER}} .tf-carousel-box .owl-nav .owl-next:hover' => 'color: {{VALUE}}',
					],
					'condition' => [
	                    'carousel_arrow' => 'yes',
	                ]
	            ]
	        );

	        $this->add_control( 
	        	'carousel_arrow_hover_bg_color',
	            [
	                'label' => esc_html__( 'Background Color', 'themesflat-addons-for-elementor' ),
	                'type' => \Elementor\Controls_Manager::COLOR,
	                'default' => '#222222',
	                'selectors' => [
						'{{WRAPPER}} .tf-carousel-box .owl-nav .owl-prev:hover, {{WRAPPER}} .tf-carousel-box .owl-nav .owl-next:hover' => 'background-color: {{VALUE}};',
					],
					'condition' => [
	                    'carousel_arrow' => 'yes',
	                ]
	            ]
	        );

	        $this->add_group_control( 
	        	\Elementor\Group_Control_Border::get_type(),
				[
					'name' => 'carousel_arrow_border_hover',
					'label' => esc_html__( 'Border', 'themesflat-addons-for-elementor' ),
					'selector' => '{{WRAPPER}} .tf-carousel-box .owl-nav .owl-prev:hover, {{WRAPPER}} .tf-carousel-box .owl-nav .owl-next:hover',
					'condition' => [
	                    'carousel_arrow' => 'yes',
	                ]
				]
			);

			$this->add_responsive_control( 
				'carousel_arrow_border_radius_hover',
	            [
	                'label' => esc_html__( 'Border Radius Previous', 'themesflat-addons-for-elementor' ),
	                'type' => \Elementor\Controls_Manager::DIMENSIONS,
	                'size_units' => [ 'px', '%', 'em' ],
	                'selectors' => [
	                    '{{WRAPPER}} .tf-carousel-box .owl-nav .owl-prev:hover, {{WRAPPER}} .tf-carousel-box .owl-nav .owl-next:hover' => 'border-radius: {{TOP}}{{UNIT}} {{RIGHT}}{{UNIT}} {{BOTTOM}}{{UNIT}} {{LEFT}}{{UNIT}};',
	                ],
	                'condition' => [
	                    'carousel_arrow' => 'yes',
	                ]
	            ]
	        );

       		$this->end_controls_tab();

        $this->end_controls_tabs();

        $this->end_controls_section();
        // /.End Arrow

        // Start Arrow        
		$this->start_controls_section( 
			'section_bullets',
            [
                'label' => esc_html__('Bullets', 'themesflat-addons-for-elementor'),
            ]
        );

		$this->add_control( 
			'carousel_bullets',
            [
                'label'         => esc_html__( 'Bullets', 'themesflat-addons-for-elementor' ),
                'type'          => \Elementor\Controls_Manager::SWITCHER,
                'label_on'      => esc_html__( 'Show', 'themesflat-addons-for-elementor' ),
                'label_off'     => esc_html__( 'Hide', 'themesflat-addons-for-elementor' ),
                'return_value'  => 'yes',
                'default'       => 'yes',
                'separator' => 'before',
            ]
        );        

		$this->add_responsive_control( 
			'carousel_bullets_horizontal_position',
			[
				'label' => esc_html__( 'Horizonta Offset', 'themesflat-addons-for-elementor' ),
				'type' => \Elementor\Controls_Manager::SLIDER,
				'size_units' => [ 'px', '%' ],
				'range' => [
					'px' => [
						'min' => 0,
						'max' => 2000,
						'step' => 1,
					],
					'%' => [
						'min' => 0,
						'max' => 100,
					],
				],
				'default' => [
					'unit' => '%',
					'size' => 50,
				],
				'selectors' => [
					'{{WRAPPER}} .tf-carousel-box .owl-dots' => 'left: {{SIZE}}{{UNIT}};',
				],
				'condition' => [					
                    'carousel_bullets' => 'yes',
                ]
			]
		);

		$this->add_responsive_control( 
			'carousel_bullets_vertical_position',
			[
				'label' => esc_html__( 'Vertical Offset', 'themesflat-addons-for-elementor' ),
				'type' => \Elementor\Controls_Manager::SLIDER,
				'size_units' => [ 'px', '%' ],
				'range' => [
					'px' => [
						'min' => -200,
						'max' => 1000,
						'step' => 1,
					],
					'%' => [
						'min' => 0,
						'max' => 100,
					],
				],
				'default' => [
					'unit' => 'px',
					'size' => -40,
				],
				'selectors' => [
					'{{WRAPPER}} .tf-carousel-box .owl-dots' => 'bottom: {{SIZE}}{{UNIT}};',
				],
				'condition' => [					
                    'carousel_bullets' => 'yes',
                ]
			]
		);

		$this->add_responsive_control( 
			'carousel_bullets_margin',
			[
				'label' => esc_html__( 'Spacing', 'themesflat-addons-for-elementor' ),
				'type' => \Elementor\Controls_Manager::SLIDER,
				'size_units' => [ 'px' ],
				'range' => [
					'px' => [
						'min' => 0,
						'max' => 50,
						'step' => 1,
					],
				],
				'default' => [
					'unit' => 'px',
					'size' => 5,
				],
				'selectors' => [
					'{{WRAPPER}} .tf-carousel-box .owl-dots .owl-dot' => 'margin: 0 {{SIZE}}{{UNIT}};',
				],
				'condition' => [
                    'carousel_bullets' => 'yes',
                ]
			]
		);

		$this->start_controls_tabs( 
			'carousel_bullets_tabs',
				[
					'condition' => [						
	                    'carousel_bullets' => 'yes',
	                ]
				] );
			$this->start_controls_tab( 
				'carousel_bullets_normal_tab',
				[
					'label' => esc_html__( 'Normal', 'themesflat-addons-for-elementor' ),						
				]
			);

			$this->add_responsive_control( 
	        	'w_size_carousel_bullets',
					[
						'label' => esc_html__( 'Width', 'themesflat-addons-for-elementor' ),
						'type' => \Elementor\Controls_Manager::SLIDER,
						'size_units' => [ 'px' ],
						'range' => [
							'px' => [
								'min' => 0,
								'max' => 100,
								'step' => 1,
							]
						],
						'default' => [
							'unit' => 'px',
							'size' => 15,
						],
						'selectors' => [
							'{{WRAPPER}} .tf-carousel-box .owl-dots .owl-dot' => 'width: {{SIZE}}{{UNIT}};',
						],
						'condition' => [						
		                    'carousel_bullets' => 'yes',
		                ]
					]
			);			

			$this->add_responsive_control( 
				'h_size_carousel_bullets',
				[
					'label' => esc_html__( 'Height', 'themesflat-addons-for-elementor' ),
					'type' => \Elementor\Controls_Manager::SLIDER,
					'size_units' => [ 'px' ],
					'range' => [
						'px' => [
							'min' => 0,
							'max' => 100,
							'step' => 1,
						]
					],
					'default' => [
						'unit' => 'px',
						'size' => 15,
					],
					'selectors' => [
						'{{WRAPPER}} .tf-carousel-box .owl-dots .owl-dot' => 'height: {{SIZE}}{{UNIT}};line-height: {{SIZE}}{{UNIT}};',
					],
					'condition' => [					
	                    'carousel_bullets' => 'yes',
	                ]
				]
			);

			$this->add_control( 
				'carousel_bullets_bg_color',
	            [
	                'label' => esc_html__( 'Background Color', 'themesflat-addons-for-elementor' ),
	                'type' => \Elementor\Controls_Manager::COLOR,
	                'default' => '#0080f0',
	                'selectors' => [
						'{{WRAPPER}} .tf-carousel-box .owl-dots .owl-dot' => 'background-color: {{VALUE}}',
					],
					'condition' => [
	                    'carousel_bullets' => 'yes',
	                ]
	            ]
	        );

	        $this->add_group_control( 
	        	\Elementor\Group_Control_Border::get_type(),
				[
					'name' => 'carousel_bullets_border',
					'label' => esc_html__( 'Border', 'themesflat-addons-for-elementor' ),
					'selector' => '{{WRAPPER}} .tf-carousel-box .owl-dots .owl-dot',
					'condition' => [
	                    'carousel_bullets' => 'yes',
	                ]
				]
			);

			$this->add_responsive_control( 
				'carousel_bullets_border_radius',
	            [
	                'label' => esc_html__( 'Border Radius', 'themesflat-addons-for-elementor' ),
	                'type' => \Elementor\Controls_Manager::DIMENSIONS,
	                'size_units' => [ 'px', '%', 'em' ],
	                'selectors' => [
	                    '{{WRAPPER}} .tf-carousel-box .owl-dots .owl-dot' => 'border-radius: {{TOP}}{{UNIT}} {{RIGHT}}{{UNIT}} {{BOTTOM}}{{UNIT}} {{LEFT}}{{UNIT}};',
	                ],
	                'condition' => [
	                    'carousel_bullets' => 'yes',
	                ]
	            ]
	        );

		    $this->end_controls_tab();

	        $this->start_controls_tab( 
	        	'carousel_bullets_hover_tab',
				[
					'label' => esc_html__( 'Active', 'themesflat-addons-for-elementor' ),
				]
			);

			$this->add_responsive_control( 
	        	'w_size_carousel_bullets_active',
					[
						'label' => esc_html__( 'Width', 'themesflat-addons-for-elementor' ),
						'type' => \Elementor\Controls_Manager::SLIDER,
						'size_units' => [ 'px' ],
						'range' => [
							'px' => [
								'min' => 0,
								'max' => 100,
								'step' => 1,
							]
						],
						'default' => [
							'unit' => 'px',
							'size' => 15,
						],
						'selectors' => [
							'{{WRAPPER}} .tf-carousel-box .owl-dots .owl-dot.active' => 'width: {{SIZE}}{{UNIT}};',
						],
						'condition' => [						
		                    'carousel_bullets' => 'yes',
		                ]
					]
			);

			$this->add_responsive_control( 
				'h_size_carousel_bullets_active',
				[
					'label' => esc_html__( 'Height', 'themesflat-addons-for-elementor' ),
					'type' => \Elementor\Controls_Manager::SLIDER,
					'size_units' => [ 'px' ],
					'range' => [
						'px' => [
							'min' => 0,
							'max' => 100,
							'step' => 1,
						]
					],
					'default' => [
						'unit' => 'px',
						'size' => 15,
					],
					'selectors' => [
						'{{WRAPPER}} .tf-carousel-box .owl-dots .owl-dot.active' => 'height: {{SIZE}}{{UNIT}};line-height: {{SIZE}}{{UNIT}};',
					],
					'condition' => [					
	                    'carousel_bullets' => 'yes',
	                ]
				]
			);

			$this->add_control( 
				'size_carousel_bullets_active_scale_hover',
				[
					'label' => esc_html__( 'Scale', 'themesflat-addons-for-elementor' ),
					'type' => \Elementor\Controls_Manager::SLIDER,
					'size_units' => [ 'px' ],
					'range' => [
						'px' => [
							'min' => 1,
							'max' => 2,
							'step' => 0.1,
						],
					],
					'default' => [
						'unit' => 'px',
						'size' => 1,
					],
					'selectors' => [
						'{{WRAPPER}} .tf-carousel-box .owl-dots .owl-dot.active, {{WRAPPER}} .tf-carousel-box .owl-dots .owl-dot:hover' => 'transform: scale({{SIZE}});',
					],
				]
			);	

        	$this->add_control( 
        		'carousel_bullets_hover_bg_color',
	            [
	                'label' => esc_html__( 'Background Color', 'themesflat-addons-for-elementor' ),
	                'type' => \Elementor\Controls_Manager::COLOR,
	                'default' => '#000000',
	                'selectors' => [
						'{{WRAPPER}} .tf-carousel-box .owl-dots .owl-dot:hover, {{WRAPPER}} .tf-carousel-box .owl-dots .owl-dot.active' => 'background-color: {{VALUE}}',
					],
					'condition' => [
	                    'carousel_bullets' => 'yes',
	                ]
	            ]
	        );

        	$this->add_group_control( 
        		\Elementor\Group_Control_Border::get_type(),
				[
					'name' => 'carousel_bullets_border_hover',
					'label' => esc_html__( 'Border', 'themesflat-addons-for-elementor' ),
					'selector' => '{{WRAPPER}} .tf-carousel-box .owl-dots .owl-dot:hover, {{WRAPPER}} .tf-carousel-box .owl-dots .owl-dot.active',
					'condition' => [
	                    'carousel_bullets' => 'yes',
	                ]
				]
			);

			$this->add_responsive_control( 
				'carousel_bullets_border_radius_hover',
	            [
	                'label' => esc_html__( 'Border Radius', 'themesflat-addons-for-elementor' ),
	                'type' => \Elementor\Controls_Manager::DIMENSIONS,
	                'size_units' => [ 'px', '%', 'em' ],
	                'selectors' => [
	                    '{{WRAPPER}} .tf-carousel-box .owl-dots .owl-dot:hover, {{WRAPPER}} .tf-carousel-box .owl-dots .owl-dot.active' => 'border-radius: {{TOP}}{{UNIT}} {{RIGHT}}{{UNIT}} {{BOTTOM}}{{UNIT}} {{LEFT}}{{UNIT}};',
	                ],
	                'condition' => [
	                    'carousel_bullets' => 'yes',
	                ]
	            ]
	        );

			$this->end_controls_tab();

	    $this->end_controls_tabs();	

        $this->end_controls_section();
        // /.End Arrow    
	    
	}

	protected function render($instance = []) {
		$settings = $this->get_settings_for_display();
		
		$carousel_arrow = 'no-arrow';
		if ( $settings['carousel_arrow'] == 'yes' ) {
			$carousel_arrow = 'has-arrow';
		}

		$carousel_bullets = 'no-bullets';
		if ( $settings['carousel_bullets'] == 'yes' ) {
			$carousel_bullets = 'has-bullets';
		}

		?>
		<div class="tf-carousel-box <?php echo esc_attr($carousel_arrow); ?> <?php echo esc_attr($carousel_bullets); ?>" data-loop="<?php echo esc_attr($settings['carousel_loop']); ?>" data-auto="<?php echo esc_attr($settings['carousel_auto']); ?>" data-column="<?php echo esc_attr($settings['carousel_column_desk']); ?>" data-column2="<?php echo esc_attr($settings['carousel_column_tablet']); ?>" data-column3="<?php echo esc_attr($settings['carousel_column_mobile']); ?>" data-spacer="<?php echo esc_attr($settings['carousel_spacer']); ?>" data-prev_icon="<?php echo esc_attr($settings['carousel_prev_icon']) ?>" data-next_icon="<?php echo esc_attr($settings['carousel_next_icon']) ?>">
			<div class="owl-carousel owl-theme">
			<?php foreach ($settings['carousel_list'] as $carousel): ?>
				<?php if($carousel['list_content_type'] == 'content') : ?>
					<div class="item"><img src="<?php echo esc_url($carousel['image']['url']); ?>" alt="image"></div>
				<?php elseif($carousel['list_content_type'] == 'template') : ?>
					<div class="item">
						<?php 
						if ( !empty($carousel['list_content_template']) ) {
				            $post_id = flat_get_post_page_content($carousel['list_content_template']);
				            echo \Elementor\Plugin::instance()->frontend->get_builder_content_for_display($post_id);	
				        }	
						?>
					</div>
				<?php endif; ?>
			<?php endforeach;?>
			<?php if ( $settings['carousel_arrow'] == 'yes' ) { ?>
				<div class="owl-nav">
					<div class="tf-car-prev"><i class="<?php echo esc_attr($settings['carousel_prev_icon']) ?>"></i></div>
					<div class="tf-car-next"><i class="<?php echo esc_attr($settings['carousel_next_icon']) ?>"></i></div>
				</div>
			<?php } ?>	
			</div>
		</div>
		<?php	
	}	

}