File: /home/buildfft/public_html/wp-content/plugins/jet-tricks/includes/ext/element-widget-extension.php
<?php
/**
* Class description
*
* @package package_name
* @author Cherry Team
* @license GPL-2.0+
*/
// If this file is called directly, abort.
if ( ! defined( 'WPINC' ) ) {
die;
}
if ( ! class_exists( 'Jet_Tricks_Elementor_Widget_Extension' ) ) {
/**
* Define Jet_Tricks_Elementor_Widget_Extension class
*/
class Jet_Tricks_Elementor_Widget_Extension {
/**
* Widgets Data
*
* @var array
*/
public $widgets_data = array();
/**
* [$default_widget_settings description]
* @var array
*/
public $default_widget_settings = array(
'jet_tricks_widget_parallax' => 'false',
'jet_tricks_widget_parallax_invert' => 'false',
'jet_tricks_widget_parallax_speed' => array(
'unit' => '%',
'size' => 50
),
'jet_tricks_widget_parallax_on' => array(
'desktop',
'tablet',
'mobile',
),
'jet_tricks_widget_satellite' => 'false',
'jet_tricks_widget_satellite_type' => 'text',
'jet_tricks_widget_satellite_position' => 'top-center',
'jet_tricks_widget_satellite_image' => array(
'url' => '',
'id' => '',
),
'jet_tricks_widget_tooltip' => 'false',
'jet_tricks_widget_tooltip_description' => 'This is Tooltip!',
'jet_tricks_widget_tooltip_placement' => 'top',
'jet_tricks_widget_tooltip_arrow' => true,
'jet_tricks_widget_tooltip_x_offset' => 0,
'jet_tricks_widget_tooltip_y_offset' => 0,
'jet_tricks_widget_tooltip_animation' => 'fade',
'jet_tricks_widget_tooltip_trigger' => 'mouseenter',
'jet_tricks_widget_tooltip_z_index' => 999,
'jet_tricks_widget_tooltip_custom_selector' => '',
'jet_tricks_widget_tooltip_delay' => 0,
);
/**
* [$avaliable_extensions description]
* @var array
*/
public $avaliable_extensions = array();
/**
* [$tooltip_widgets description]
* @var array
*/
public $tooltip_widgets = array();
/**
* A reference to an instance of this class.
*
* @since 1.0.0
* @access private
* @var object
*/
private static $instance = null;
public $__new_icon_prefix = '';
/**
* Init Handler
*/
public function init() {
$this->__new_icon_prefix = Jet_Tricks_Tools::$new_icon_prefix;
$this->avaliable_extensions = jet_tricks_settings()->get( 'avaliable_extensions', jet_tricks_settings()->default_avaliable_extensions );
if ( ! filter_var( $this->avaliable_extensions['widget_parallax'], FILTER_VALIDATE_BOOLEAN ) &&
! filter_var( $this->avaliable_extensions['widget_satellite'], FILTER_VALIDATE_BOOLEAN ) &&
! filter_var( $this->avaliable_extensions['widget_tooltip'], FILTER_VALIDATE_BOOLEAN )
) {
return false;
}
add_action( 'elementor/element/common/_section_style/after_section_end', array( $this, 'after_common_section_responsive' ), 10, 2 );
add_action( 'elementor/frontend/widget/before_render', array( $this, 'widget_before_render' ) );
//add_action( 'elementor/widget/before_render_content', array( $this, 'widget_before_render_content' ) );
add_filter( 'elementor/widget/render_content', array( $this, 'widget_before_render_content' ), 10, 2 );
add_action( 'elementor/frontend/before_enqueue_scripts', array( $this, 'enqueue_scripts' ), 9 );
}
/**
* After section_layout callback
*
* @param object $obj
* @param array $args
* @return void
*/
public function after_common_section_responsive( $obj, $args ) {
$obj->start_controls_section(
'widget_jet_tricks',
array(
'label' => esc_html__( 'JetTricks', 'jet-tricks' ),
'tab' => Elementor\Controls_Manager::TAB_ADVANCED,
)
);
$this->register_parallax_ext_settings( $obj );
$this->register_satellite_ext_settings( $obj );
$this->register_tooltip_ext_settings( $obj );
$obj->end_controls_section();
}
/**
* [register_parallax_settings description]
* @param [type] $obj [description]
* @return [type] [description]
*/
public function register_parallax_ext_settings( $obj ) {
if ( ! filter_var( $this->avaliable_extensions['widget_parallax'], FILTER_VALIDATE_BOOLEAN ) ) {
return false;
}
$obj->add_control(
'parallax_heading',
array(
'label' => esc_html__( 'Parallax', 'jet-tricks' ),
'type' => Elementor\Controls_Manager::HEADING,
)
);
$obj->add_control(
'jet_tricks_widget_parallax',
array(
'label' => esc_html__( 'Use Parallax?', 'jet-tricks' ),
'type' => Elementor\Controls_Manager::SWITCHER,
'label_on' => esc_html__( 'Yes', 'jet-tricks' ),
'label_off' => esc_html__( 'No', 'jet-tricks' ),
'return_value' => 'true',
'default' => 'false',
)
);
if ( \Elementor\Plugin::$instance->breakpoints && method_exists( \Elementor\Plugin::$instance->breakpoints, 'get_active_breakpoints') ) {
$active_breakpoints = \Elementor\Plugin::$instance->breakpoints->get_active_breakpoints();
$breakpoints_list = array();
foreach ($active_breakpoints as $key => $value) {
$breakpoints_list[$key] = $value->get_label();
}
$breakpoints_list['desktop'] = 'Desktop';
$breakpoints_list = array_reverse($breakpoints_list);
} else {
$breakpoints_list = array(
'desktop' => 'Desktop',
'tablet' => 'Tablet',
'mobile' => 'Mobile'
);
}
$obj->add_control(
'jet_tricks_widget_parallax_speed',
array(
'label' => esc_html__( 'Parallax Speed(%)', 'jet-tricks' ),
'type' => Elementor\Controls_Manager::SLIDER,
'size_units' => array( '%' ),
'range' => array(
'%' => array(
'min' => 1,
'max' => 100,
),
),
'default' => array(
'size' => 50,
'unit' => '%',
),
'condition' => array(
'jet_tricks_widget_parallax' => 'true',
),
)
);
$obj->add_control(
'jet_tricks_widget_parallax_invert',
array(
'label' => esc_html__( 'Invert', 'jet-tricks' ),
'type' => Elementor\Controls_Manager::SWITCHER,
'label_on' => esc_html__( 'Yes', 'jet-tricks' ),
'label_off' => esc_html__( 'No', 'jet-tricks' ),
'return_value' => 'true',
'default' => 'false',
'condition' => array(
'jet_tricks_widget_parallax' => 'true',
),
)
);
$obj->add_control(
'jet_tricks_widget_parallax_on',
array(
'label' => __( 'Active On', 'jet-tricks' ),
'type' => Elementor\Controls_Manager::SELECT2,
'multiple' => true,
'label_block' => 'true',
'default' => array(
'desktop',
'tablet',
),
'options' => $breakpoints_list,
'condition' => array(
'jet_tricks_widget_parallax' => 'true',
),
'render_type' => 'template',
)
);
}
/**
* [register_satellite_ext_settings description]
* @param [type] $obj [description]
* @return [type] [description]
*/
public function register_satellite_ext_settings( $obj ) {
if ( ! filter_var( $this->avaliable_extensions['widget_satellite'], FILTER_VALIDATE_BOOLEAN ) ) {
return false;
}
$obj->add_control(
'satellite_heading',
array(
'label' => esc_html__( 'Satellite', 'jet-tricks' ),
'type' => Elementor\Controls_Manager::HEADING,
'separator' => 'before',
)
);
$obj->add_control(
'jet_tricks_widget_satellite',
array(
'label' => esc_html__( 'Use Satellite?', 'jet-tricks' ),
'type' => Elementor\Controls_Manager::SWITCHER,
'label_on' => esc_html__( 'Yes', 'jet-tricks' ),
'label_off' => esc_html__( 'No', 'jet-tricks' ),
'return_value' => 'true',
'default' => 'false',
'render_type' => 'template',
)
);
$obj->start_controls_tabs( 'jet_tricks_widget_satellite_tabs' );
$obj->start_controls_tab(
'jet_tricks_widget_satellite_settings_tab',
array(
'label' => esc_html__( 'Settings', 'jet-tricks' ),
'condition' => array(
'jet_tricks_widget_satellite' => 'true',
),
)
);
$obj->add_control(
'jet_tricks_widget_satellite_type',
array(
'label' => esc_html__( 'Type', 'jet-tricks' ),
'type' => Elementor\Controls_Manager::SELECT,
'default' => 'text',
'options' => array(
'text' => esc_html__( 'Text', 'jet-tricks' ),
'icon' => esc_html__( 'Icon', 'jet-tricks' ),
'image' => esc_html__( 'Image', 'jet-tricks' ),
),
'condition' => array(
'jet_tricks_widget_satellite' => 'true',
),
'render_type' => 'template',
)
);
$obj->add_control(
'jet_tricks_widget_satellite_text',
array(
'label' => esc_html__( 'Text', 'jet-tricks' ),
'type' => Elementor\Controls_Manager::TEXT,
'default' => '',
'placeholder' => 'Lorem Ipsum',
'dynamic' => array( 'active' => true ),
'condition' => array(
'jet_tricks_widget_satellite' => 'true',
'jet_tricks_widget_satellite_type' => 'text',
),
'render_type' => 'template',
)
);
$obj->add_control(
$this->__new_icon_prefix . 'jet_tricks_widget_satellite_icon',
array(
'label' => esc_html__( 'Icon', 'jet-tricks' ),
'type' => Elementor\Controls_Manager::ICONS,
'label_block' => false,
'skin' => 'inline',
'fa4compatibility' => 'jet_tricks_widget_satellite_icon',
'default' => array(
'value' => 'fas fa-plus',
'library' => 'fa-solid',
),
'condition' => array(
'jet_tricks_widget_satellite' => 'true',
'jet_tricks_widget_satellite_type' => 'icon',
),
'render_type' => 'template',
)
);
$obj->add_control(
'jet_tricks_widget_satellite_image',
array(
'label' => esc_html__( 'Image', 'jet-tricks' ),
'type' => Elementor\Controls_Manager::MEDIA,
'default' => array(
'url' => Elementor\Utils::get_placeholder_image_src(),
),
'dynamic' => array( 'active' => true ),
'condition' => array(
'jet_tricks_widget_satellite' => 'true',
'jet_tricks_widget_satellite_type' => 'image',
),
//'render_type' => 'template',
)
);
$obj->add_control(
'jet_tricks_widget_satellite_position',
array(
'label' => esc_html__( 'Position', 'jet-tricks' ),
'type' => Elementor\Controls_Manager::SELECT,
'default' => 'top-center',
'options' => array(
'top-left' => esc_html__( 'Top Left', 'jet-tricks' ),
'top-center' => esc_html__( 'Top Center', 'jet-tricks' ),
'top-right' => esc_html__( 'Top Right', 'jet-tricks' ),
'middle-left' => esc_html__( 'Middle Left', 'jet-tricks' ),
'middle-center' => esc_html__( 'Middle Center', 'jet-tricks' ),
'middle-right' => esc_html__( 'Middle Right', 'jet-tricks' ),
'bottom-left' => esc_html__( 'Bottom Left', 'jet-tricks' ),
'bottom-center' => esc_html__( 'Bottom Center', 'jet-tricks' ),
'bottom-right' => esc_html__( 'Bottom Right', 'jet-tricks' ),
),
'condition' => array(
'jet_tricks_widget_satellite' => 'true',
),
'render_type' => 'template',
)
);
$obj->add_responsive_control(
'jet_tricks_widget_satellite_x_offset',
array(
'label' => esc_html__( 'Offset X', 'jet-tricks' ),
'type' => Elementor\Controls_Manager::SLIDER,
'size_units' => array( 'px' ),
'range' => array(
'px' => array(
'min' => -500,
'max' => 500,
),
),
'default' => array(
'size' => 0,
'unit' => 'px',
),
'selectors' => array(
'{{WRAPPER}} .jet-tricks-satellite' => 'transform: translateX({{SIZE}}px);',
),
'condition' => array(
'jet_tricks_widget_satellite' => 'true',
),
)
);
$obj->add_responsive_control(
'jet_tricks_widget_satellite_y_offset',
array(
'label' => esc_html__( 'Offset Y', 'jet-tricks' ),
'type' => Elementor\Controls_Manager::SLIDER,
'size_units' => array( 'px' ),
'range' => array(
'px' => array(
'min' => -500,
'max' => 500,
),
),
'default' => array(
'size' => 0,
'unit' => 'px',
),
'selectors' => array(
'{{WRAPPER}} .jet-tricks-satellite__inner' => 'transform: translateY({{SIZE}}px);',
),
'condition' => array(
'jet_tricks_widget_satellite' => 'true',
),
)
);
$obj->add_responsive_control(
'jet_tricks_widget_satellite_rotate',
array(
'label' => esc_html__( 'Rotate', 'jet-tricks' ),
'type' => Elementor\Controls_Manager::SLIDER,
'size_units' => array( 'deg' ),
'range' => array(
'deg' => array(
'min' => -180,
'max' => 180,
),
),
'default' => array(
'size' => 0,
'unit' => 'deg',
),
'selectors' => array(
'{{WRAPPER}} .jet-tricks-satellite .jet-tricks-satellite__text span' => 'transform: rotate({{SIZE}}deg)',
'{{WRAPPER}} .jet-tricks-satellite .jet-tricks-satellite__icon .jet-tricks-satellite__icon-instance' => 'transform: rotate({{SIZE}}deg)',
'{{WRAPPER}} .jet-tricks-satellite .jet-tricks-satellite__image .jet-tricks-satellite__image-instance' => 'transform: rotate({{SIZE}}deg)',
),
'condition' => array(
'jet_tricks_widget_satellite' => 'true',
),
)
);
$obj->add_responsive_control(
'jet_tricks_widget_satellite_z',
array(
'label' => esc_html__( 'Z-Index', 'jet-tricks' ),
'type' => Elementor\Controls_Manager::NUMBER,
'default' => 2,
'min' => -10,
'max' => 999,
'step' => 1,
'condition' => array(
'jet_tricks_widget_satellite' => 'true',
),
'selectors' => array(
'{{WRAPPER}} .jet-tricks-satellite' => 'z-index:{{VALUE}}',
),
)
);
$obj->end_controls_tab();
$obj->start_controls_tab(
'jet_tricks_widget_satellite_styles_tab',
array(
'label' => esc_html__( 'Styles', 'jet-tricks' ),
'condition' => array(
'jet_tricks_widget_satellite' => 'true',
),
)
);
$obj->add_control(
'jet_tricks_widget_satellite_text_color',
array(
'label' => esc_html__( 'Color', 'jet-tricks' ),
'type' => Elementor\Controls_Manager::COLOR,
'condition' => array(
'jet_tricks_widget_satellite' => 'true',
'jet_tricks_widget_satellite_type' => 'text',
),
'selectors' => array(
'{{WRAPPER}} .jet-tricks-satellite .jet-tricks-satellite__text' => 'color: {{VALUE}}',
),
)
);
$obj->add_group_control(
Elementor\Group_Control_Typography::get_type(),
array(
'name' => 'jet_tricks_widget_satellite_text_typography',
'selector' => '{{WRAPPER}} .jet-tricks-satellite .jet-tricks-satellite__text',
'condition' => array(
'jet_tricks_widget_satellite' => 'true',
'jet_tricks_widget_satellite_type' => 'text',
),
)
);
$obj->add_group_control(
Elementor\Group_Control_Text_Shadow::get_type(),
array(
'name' => 'jet_tricks_widget_satellite_text_shadow',
'selector' => '{{WRAPPER}} .jet-tricks-satellite .jet-tricks-satellite__text',
'condition' => array(
'jet_tricks_widget_satellite' => 'true',
'jet_tricks_widget_satellite_type' => 'text',
),
)
);
$obj->add_responsive_control(
'jet_tricks_widget_satellite_image_width',
array(
'label' => esc_html__( 'Width', 'jet-tricks' ),
'type' => Elementor\Controls_Manager::NUMBER,
'default' => 200,
'min' => 10,
'max' => 1000,
'step' => 1,
'condition' => array(
'jet_tricks_widget_satellite' => 'true',
'jet_tricks_widget_satellite_type' => 'image',
),
'selectors' => array(
'{{WRAPPER}} .jet-tricks-satellite .jet-tricks-satellite__image' => 'width:{{VALUE}}px',
),
)
);
$obj->add_responsive_control(
'jet_tricks_widget_satellite_image_height',
array(
'label' => esc_html__( 'Height', 'jet-tricks' ),
'type' => Elementor\Controls_Manager::NUMBER,
'default' => 200,
'min' => 10,
'max' => 1000,
'step' => 1,
'condition' => array(
'jet_tricks_widget_satellite' => 'true',
'jet_tricks_widget_satellite_type' => 'image',
),
'selectors' => array(
'{{WRAPPER}} .jet-tricks-satellite .jet-tricks-satellite__image' => 'height:{{VALUE}}px',
),
)
);
$obj->add_group_control(
\Jet_Tricks_Group_Control_Box_Style::get_type(),
array(
'label' => esc_html__( 'Icon Box', 'jet-tricks' ),
'name' => 'jet_tricks_widget_satellite_icon_box',
'selector' => '{{WRAPPER}} .jet-tricks-satellite .jet-tricks-satellite__icon-instance',
'condition' => array(
'jet_tricks_widget_satellite' => 'true',
'jet_tricks_widget_satellite_type' => 'icon',
),
)
);
if ( class_exists( 'Elementor\Group_Control_Css_Filter' ) ) {
$obj->add_group_control(
Elementor\Group_Control_Css_Filter::get_type(),
array(
'name' => 'jet_tricks_widget_satellite_css_filters',
'selector' => '{{WRAPPER}} .jet-tricks-satellite',
'condition' => array(
'jet_tricks_widget_satellite' => 'true',
),
)
);
}
$obj->end_controls_tab();
$obj->end_controls_tabs();
}
/**
* [register_tooltip_ext_settings description]
* @param [type] $obj [description]
* @return [type] [description]
*/
public function register_tooltip_ext_settings( $obj ) {
if ( ! filter_var( $this->avaliable_extensions['widget_tooltip'], FILTER_VALIDATE_BOOLEAN ) ) {
return false;
}
$obj->add_control(
'tooltip_heading',
array(
'label' => esc_html__( 'Tooltip', 'jet-tricks' ),
'type' => Elementor\Controls_Manager::HEADING,
'separator' => 'before',
)
);
$obj->add_control(
'jet_tricks_widget_tooltip',
array(
'label' => esc_html__( 'Use Tooltip?', 'jet-tricks' ),
'type' => Elementor\Controls_Manager::SWITCHER,
'label_on' => esc_html__( 'Yes', 'jet-tricks' ),
'label_off' => esc_html__( 'No', 'jet-tricks' ),
'return_value' => 'true',
'default' => 'false',
'render_type' => 'template',
)
);
$obj->start_controls_tabs( 'jet_tricks_widget_tooltip_tabs' );
$obj->start_controls_tab(
'jet_tricks_widget_tooltip_settings_tab',
array(
'label' => esc_html__( 'Settings', 'jet-tricks' ),
'condition' => array(
'jet_tricks_widget_tooltip' => 'true',
),
)
);
$obj->add_control(
'jet_tricks_widget_tooltip_description',
array(
'label' => esc_html__( 'Description', 'jet-tricks' ),
'type' => Elementor\Controls_Manager::WYSIWYG,
'render_type' => 'template',
'default' => esc_html__( 'This is Tooltip!', 'jet-tricks' ),
'dynamic' => array ( 'active' => true ),
'condition' => array (
'jet_tricks_widget_tooltip' => 'true',
),
)
);
$obj->add_control(
'jet_tricks_widget_tooltip_placement',
array(
'label' => esc_html__( 'Placement', 'jet-tricks' ),
'type' => Elementor\Controls_Manager::SELECT,
'default' => 'top',
'options' => array(
'top-start' => esc_html__( 'Top Start', 'jet-tricks' ),
'top' => esc_html__( 'Top', 'jet-tricks' ),
'top-end' => esc_html__( 'Top End', 'jet-tricks' ),
'right-start' => esc_html__( 'Right Start', 'jet-tricks' ),
'right' => esc_html__( 'Right', 'jet-tricks' ),
'right-end' => esc_html__( 'Right End', 'jet-tricks' ),
'bottom-start' => esc_html__( 'Bottom Start', 'jet-tricks' ),
'bottom' => esc_html__( 'Bottom', 'jet-tricks' ),
'bottom-end' => esc_html__( 'Bottom End', 'jet-tricks' ),
'left-start' => esc_html__( 'Left Start', 'jet-tricks' ),
'left' => esc_html__( 'Left', 'jet-tricks' ),
'left-end' => esc_html__( 'Left End', 'jet-tricks' ),
),
'render_type' => 'template',
'condition' => array(
'jet_tricks_widget_tooltip' => 'true',
),
)
);
$obj->add_control(
'jet_tricks_widget_tooltip_arrow',
array(
'label' => esc_html__( 'Use Arrow?', 'jet-tricks' ),
'type' => Elementor\Controls_Manager::SWITCHER,
'label_on' => esc_html__( 'Yes', 'jet-tricks' ),
'label_off' => esc_html__( 'No', 'jet-tricks' ),
'return_value' => 'true',
'default' => 'true',
'render_type' => 'template',
'condition' => array(
'jet_tricks_widget_tooltip' => 'true',
),
)
);
$obj->add_control(
'jet_tricks_widget_tooltip_animation',
array(
'label' => esc_html__( 'Animation', 'jet-tricks' ),
'type' => Elementor\Controls_Manager::SELECT,
'default' => 'fade',
'options' => array(
'fade' => esc_html__( 'Fade', 'jet-tricks' ),
'shift-away' => esc_html__( 'Shift-Away', 'jet-tricks' ),
'shift-toward' => esc_html__( 'Shift-Toward', 'jet-tricks' ),
'scale' => esc_html__( 'Scale', 'jet-tricks' ),
'perspective' => esc_html__( 'Perspective', 'jet-tricks' ),
),
'render_type' => 'template',
'condition' => array(
'jet_tricks_widget_tooltip' => 'true',
),
)
);
$obj->add_control(
'jet_tricks_widget_tooltip_trigger',
array(
'label' => esc_html__( 'Trigger', 'jet-tricks' ),
'type' => Elementor\Controls_Manager::SELECT,
'default' => 'mouseenter',
'options' => array(
'mouseenter' => esc_html__( 'Mouse Enter', 'jet-tricks' ),
'click' => esc_html__( 'Click', 'jet-tricks' ),
'focus' => esc_html__( 'Focus', 'jet-tricks' ),
'mouseenter click' => esc_html__( 'Mouse Enter + Click', 'jet-tricks' ),
'mouseenter focus' => esc_html__( 'Mouse Enter + Focus', 'jet-tricks' ),
),
'render_type' => 'template',
'condition' => array(
'jet_tricks_widget_tooltip' => 'true',
),
)
);
$obj->add_control(
'jet_tricks_widget_tooltip_delay',
array(
'label' => esc_html__( 'Delay', 'jet-tricks' ),
'type' => Elementor\Controls_Manager::SLIDER,
'size_units' => array( 'px'),
'range' => array(
'px' => array(
'min' => 0,
'max' => 1000,
'step' => 100,
),
),
'default' => array(
'size' => 0,
'unit' => 'px',
),
'condition' => array(
'jet_tricks_widget_tooltip' => 'true',
),
)
);
$obj->add_control(
'jet_tricks_widget_tooltip_x_offset',
array(
'label' => esc_html__( 'Offset', 'jet-tricks' ),
'type' => Elementor\Controls_Manager::NUMBER,
'default' => 0,
'min' => -1000,
'max' => 1000,
'step' => 1,
'condition' => array(
'jet_tricks_widget_tooltip' => 'true',
),
)
);
$obj->add_control(
'jet_tricks_widget_tooltip_y_offset',
array(
'label' => esc_html__( 'Distance', 'jet-tricks' ),
'type' => Elementor\Controls_Manager::NUMBER,
'default' => 0,
'min' => -1000,
'max' => 1000,
'step' => 1,
'condition' => array(
'jet_tricks_widget_tooltip' => 'true',
),
)
);
$obj->add_control(
'jet_tricks_widget_tooltip_z_index',
array(
'label' => esc_html__( 'Z-Index', 'jet-tricks' ),
'type' => Elementor\Controls_Manager::NUMBER,
'default' => 999,
'min' => 0,
'max' => 999,
'step' => 1,
'condition' => array(
'jet_tricks_widget_tooltip' => 'true',
),
)
);
$obj->add_control(
'jet_tricks_widget_tooltip_custom_selector',
array(
'label' => esc_html__( 'Custom Selector', 'jet-tricks' ),
'type' => Elementor\Controls_Manager::TEXT,
'default' => '',
'condition' => array(
'jet_tricks_widget_tooltip' => 'true',
),
)
);
$obj->end_controls_tab();
$obj->start_controls_tab(
'jet_tricks_widget_tooltip_styles_tab',
array(
'label' => esc_html__( 'Style', 'jet-tricks' ),
'condition' => array(
'jet_tricks_widget_tooltip' => 'true',
),
)
);
$obj->add_responsive_control(
'jet_tricks_widget_tooltip_width',
array(
'label' => esc_html__( 'Width', 'jet-tricks' ),
'type' => Elementor\Controls_Manager::SLIDER,
'size_units' => array(
'px', 'em',
),
'range' => array(
'px' => array(
'min' => 50,
'max' => 1000,
),
),
'selectors' => array(
'{{WRAPPER}} > [data-tippy-root] .tippy-box' => 'width: {{SIZE}}{{UNIT}};',
),
'condition' => array(
'jet_tricks_widget_tooltip' => 'true',
),
'render_type' => 'template',
)
);
$obj->add_group_control(
Elementor\Group_Control_Typography::get_type(),
array(
'name' => 'jet_tricks_widget_tooltip_typography',
'selector' => '{{WRAPPER}} > [data-tippy-root] .tippy-box .tippy-content',
'condition' => array(
'jet_tricks_widget_tooltip' => 'true',
),
)
);
$obj->add_control(
'jet_tricks_widget_tooltip_color',
array(
'label' => esc_html__( 'Text Color', 'jet-tricks' ),
'type' => Elementor\Controls_Manager::COLOR,
'selectors' => array(
'{{WRAPPER}} > [data-tippy-root] .tippy-box .tippy-content' => 'color: {{VALUE}}',
),
'condition' => array(
'jet_tricks_widget_tooltip' => 'true',
),
)
);
$obj->add_control(
'jet_tricks_widget_tooltip_text_align',
array(
'label' => esc_html__( 'Text Alignment', 'jet-tricks' ),
'type' => Elementor\Controls_Manager::CHOOSE,
'default' => 'center',
'options' => array(
'left' => array(
'title' => esc_html__( 'Left', 'jet-tricks' ),
'icon' => 'fa fa-align-left',
),
'center' => array(
'title' => esc_html__( 'Center', 'jet-tricks' ),
'icon' => 'fa fa-align-center',
),
'right' => array(
'title' => esc_html__( 'Right', 'jet-tricks' ),
'icon' => 'fa fa-align-right',
),
),
'selectors' => array(
'{{WRAPPER}} > [data-tippy-root] .tippy-box .tippy-content' => 'text-align: {{VALUE}};',
),
'condition' => array(
'jet_tricks_widget_tooltip' => 'true',
),
'classes' => 'jet-tricks-text-align-control',
)
);
$obj->add_group_control(
Elementor\Group_Control_Background::get_type(),
array(
'name' => 'jet_tricks_widget_tooltip_background',
'selector' => '{{WRAPPER}} > [data-tippy-root] .tippy-box',
'condition' => array(
'jet_tricks_widget_tooltip' => 'true',
),
)
);
$obj->add_control(
'jet_tricks_widget_tooltip_arrow_color',
array(
'label' => esc_html__( 'Arrow Color', 'jet-tricks' ),
'type' => Elementor\Controls_Manager::COLOR,
'selectors' => array(
'{{WRAPPER}} > [data-tippy-root] .tippy-box[data-placement^=left] .tippy-arrow:before'=> 'border-left-color: {{VALUE}}',
'{{WRAPPER}} > [data-tippy-root] .tippy-box[data-placement^=right] .tippy-arrow:before'=> 'border-right-color: {{VALUE}}',
'{{WRAPPER}} > [data-tippy-root] .tippy-box[data-placement^=top] .tippy-arrow:before'=> 'border-top-color: {{VALUE}}',
'{{WRAPPER}} > [data-tippy-root] .tippy-box[data-placement^=bottom] .tippy-arrow:before'=> 'border-bottom-color: {{VALUE}}',
),
'condition' => array(
'jet_tricks_widget_tooltip' => 'true',
),
)
);
$obj->add_responsive_control(
'jet_tricks_widget_tooltip_padding',
array(
'label' => __( 'Padding', 'jet-tricks' ),
'type' => Elementor\Controls_Manager::DIMENSIONS,
'size_units' => array( 'px', '%' ),
'selectors' => array(
'{{WRAPPER}} > [data-tippy-root] .tippy-box .tippy-content' => 'padding: {{TOP}}{{UNIT}} {{RIGHT}}{{UNIT}} {{BOTTOM}}{{UNIT}} {{LEFT}}{{UNIT}};',
),
'render_type' => 'template',
'condition' => array(
'jet_tricks_widget_tooltip' => 'true',
),
)
);
$obj->add_group_control(
Elementor\Group_Control_Border::get_type(),
array(
'name' => 'jet_tricks_widget_tooltip_border',
'label' => esc_html__( 'Border', 'jet-tricks' ),
'placeholder' => '1px',
'default' => '1px',
'selector' => '{{WRAPPER}} > [data-tippy-root] .tippy-box',
'condition' => array(
'jet_tricks_widget_tooltip' => 'true',
),
)
);
$obj->add_responsive_control(
'jet_tricks_widget_tooltip_border_radius',
array(
'label' => __( 'Border Radius', 'jet-tricks' ),
'type' => Elementor\Controls_Manager::DIMENSIONS,
'size_units' => array( 'px', '%' ),
'selectors' => array(
'{{WRAPPER}} > [data-tippy-root] .tippy-box ' => 'border-radius: {{TOP}}{{UNIT}} {{RIGHT}}{{UNIT}} {{BOTTOM}}{{UNIT}} {{LEFT}}{{UNIT}};',
),
'condition' => array(
'jet_tricks_widget_tooltip' => 'true',
),
)
);
$obj->add_group_control(
Elementor\Group_Control_Box_Shadow::get_type(),
array(
'name' => 'jet_tricks_widget_tooltip_box_shadow',
'selector' => '{{WRAPPER}} > [data-tippy-root] .tippy-box',
'condition' => array(
'jet_tricks_widget_tooltip' => 'true',
),
)
);
$obj->end_controls_tab();
$obj->end_controls_tabs();
}
/**
* [widget_before_render description]
* @param [type] $widget [description]
* @return [type] [description]
*/
public function widget_before_render( $widget ) {
$data = $widget->get_data();
$settings = $data['settings'];
$settings = wp_parse_args( $settings, $this->default_widget_settings );
$widget_settings = array();
static $enqueue_tooltip_scripts = false;
if (
filter_var( $settings['jet_tricks_widget_parallax'], FILTER_VALIDATE_BOOLEAN ) &&
filter_var( $this->avaliable_extensions['widget_parallax'], FILTER_VALIDATE_BOOLEAN )
) {
$widget_settings['parallax'] = filter_var( $settings['jet_tricks_widget_parallax'], FILTER_VALIDATE_BOOLEAN ) ? 'true' : 'false';
$widget_settings['invert'] = filter_var( $settings['jet_tricks_widget_parallax_invert'], FILTER_VALIDATE_BOOLEAN ) ? 'true' : 'false';
$widget_settings['speed'] = $settings['jet_tricks_widget_parallax_speed'];
$widget_settings['stickyOn'] = $settings['jet_tricks_widget_parallax_on'];
$widget->add_render_attribute( '_wrapper', array(
'class' => 'jet-parallax-widget',
) );
}
if (
filter_var( $settings['jet_tricks_widget_satellite'], FILTER_VALIDATE_BOOLEAN ) &&
filter_var( $this->avaliable_extensions['widget_satellite'], FILTER_VALIDATE_BOOLEAN )
) {
$widget_settings['satellite'] = filter_var( $settings['jet_tricks_widget_satellite'], FILTER_VALIDATE_BOOLEAN ) ? 'true' : 'false';
$widget_settings['satelliteType'] = $settings['jet_tricks_widget_satellite_type'];
$widget_settings['satellitePosition'] = $settings['jet_tricks_widget_satellite_position'];
$widget->add_render_attribute( '_wrapper', array(
'class' => 'jet-satellite-widget',
) );
}
if (
filter_var( $settings[ 'jet_tricks_widget_tooltip' ], FILTER_VALIDATE_BOOLEAN ) &&
filter_var( $this->avaliable_extensions[ 'widget_tooltip' ], FILTER_VALIDATE_BOOLEAN )
) {
$widget_settings[ 'tooltip' ] = filter_var( $settings[ 'jet_tricks_widget_tooltip' ], FILTER_VALIDATE_BOOLEAN ) ? 'true' : 'false';
$widget_settings[ 'tooltipDescription' ] = $settings[ 'jet_tricks_widget_tooltip_description' ];
$widget_settings[ 'tooltipPlacement' ] = $settings[ 'jet_tricks_widget_tooltip_placement' ];
$widget_settings[ 'tooltipArrow' ] = filter_var( $settings[ 'jet_tricks_widget_tooltip_arrow' ], FILTER_VALIDATE_BOOLEAN ) ? true : false;
$widget_settings[ 'xOffset' ] = $settings[ 'jet_tricks_widget_tooltip_x_offset' ];
$widget_settings[ 'yOffset' ] = $settings[ 'jet_tricks_widget_tooltip_y_offset' ];
$widget_settings[ 'tooltipAnimation' ] = $settings[ 'jet_tricks_widget_tooltip_animation' ];
$widget_settings[ 'tooltipTrigger' ] = $settings[ 'jet_tricks_widget_tooltip_trigger' ];
$widget_settings[ 'zIndex' ] = $settings[ 'jet_tricks_widget_tooltip_z_index' ];
$widget_settings[ 'customSelector' ] = $settings[ 'jet_tricks_widget_tooltip_custom_selector' ];
$widget_settings['delay'] = $settings['jet_tricks_widget_tooltip_delay'];
$widget->add_render_attribute( '_wrapper', array (
'class' => 'jet-tooltip-widget',
) );
$this->tooltip_widgets[] = $data[ 'id' ];
if ( ! $enqueue_tooltip_scripts ) {
wp_enqueue_script( 'jet-tricks-tippy-bundle' );
$enqueue_tooltip_scripts = true;
}
}
$widget_settings = apply_filters(
'jet-tricks/frontend/widget/settings',
$widget_settings,
$widget,
$this
);
if ( ! empty( $widget_settings ) ) {
$widget->add_render_attribute( '_wrapper', array (
'data-jet-tricks-settings' => json_encode( $widget_settings ),
) );
}
$this->widgets_data[ $data[ 'id' ] ] = $widget_settings;
}
/**
* [widget_before_render_content description]
* @return [type] [description]
*/
public function widget_before_render_content( $widget_content, $widget ) {
$data = $widget->get_data();
$settings = $widget->get_settings_for_display();
$settings = wp_parse_args( $settings, $this->default_widget_settings );
foreach ( array( 'jet_tricks_widget_tooltip_description', 'jet_tricks_widget_satellite_text' ) as $setting_name ) {
if ( empty( $settings[ $setting_name ] ) ) {
$settings[ $setting_name ] = 'Lorem Ipsum';
}
}
$settings = apply_filters( 'jet-tricks/frontend/widget-content/settings', $settings, $widget, $this );
if (
filter_var( $settings['jet_tricks_widget_satellite'], FILTER_VALIDATE_BOOLEAN ) &&
filter_var( $this->avaliable_extensions['widget_satellite'], FILTER_VALIDATE_BOOLEAN )
) {
switch ( $settings['jet_tricks_widget_satellite_type'] ) {
case 'text':
if ( ! empty( $settings['jet_tricks_widget_satellite_text'] ) ) {
echo sprintf( '<div class="jet-tricks-satellite jet-tricks-satellite--%1$s"><div class="jet-tricks-satellite__inner"><div class="jet-tricks-satellite__text"><span>%2$s</span></div></div></div>', $settings['jet_tricks_widget_satellite_position'], $settings['jet_tricks_widget_satellite_text'] );
}
break;
case 'icon':
$icon_html = Jet_Tricks_Tools::get_icon( 'jet_tricks_widget_satellite_icon', $settings );
if ( ! empty( $icon_html ) ) {
echo sprintf(
'<div class="jet-tricks-satellite jet-tricks-satellite--%1$s"><div class="jet-tricks-satellite__inner"><div class="jet-tricks-satellite__icon"><div class="jet-tricks-satellite__icon-instance jet-tricks-icon">%2$s</div></div></div></div>',
$settings['jet_tricks_widget_satellite_position'],
$icon_html
);
}
break;
case 'image':
if ( ! empty( $settings['jet_tricks_widget_satellite_image']['url'] ) ) {
echo sprintf( '<div class="jet-tricks-satellite jet-tricks-satellite--%1$s"><div class="jet-tricks-satellite__inner"><div class="jet-tricks-satellite__image"><img class="jet-tricks-satellite__image-instance" src="%2$s" alt=""></div></div></div>', $settings['jet_tricks_widget_satellite_position'], $settings['jet_tricks_widget_satellite_image']['url'] );
}
break;
}
}
if (
filter_var( $settings['jet_tricks_widget_tooltip'], FILTER_VALIDATE_BOOLEAN ) &&
filter_var( $this->avaliable_extensions['widget_tooltip'], FILTER_VALIDATE_BOOLEAN ) &&
! empty( $settings['jet_tricks_widget_tooltip_description'] )
) {
echo sprintf( '<div id="jet-tricks-tooltip-content-%1$s" class="jet-tooltip-widget__content">%2$s</div>', $data['id'], $settings['jet_tricks_widget_tooltip_description'] );
}
return $widget_content;
}
/**
* [enqueue_scripts description]
*
* @return void
*/
public function enqueue_scripts() {
jet_tricks_assets()->elements_data['widgets'] = $this->widgets_data;
}
/**
* Returns the instance.
*
* @since 1.0.0
* @access public
* @return object
*/
public static function get_instance() {
// If the single instance hasn't been set, set it now.
if ( null == self::$instance ) {
self::$instance = new self;
}
return self::$instance;
}
}
}
/**
* Returns instance of Jet_Tricks_Elementor_Widget_Extension
*
* @return object
*/
function jet_tricks_elementor_widget_extension() {
return Jet_Tricks_Elementor_Widget_Extension::get_instance();
}