| Server IP : 65.108.144.40 / Your IP : 216.73.217.165 Web Server : Apache/2.4.52 (Ubuntu) System : Linux ubuntu-8gb-hel1-1 5.15.0-173-generic #183-Ubuntu SMP Fri Mar 6 13:29:34 UTC 2026 x86_64 User : dev ( 1000) PHP Version : 8.2.30 Disable Function : NONE MySQL : OFF | cURL : ON | WGET : ON | Perl : ON | Python : ON | Sudo : ON | Pkexec : ON Directory : /var/www/html/pia/wp-content/plugins/premium-addons-pro/widgets/ |
Upload File : |
<?php
/**
* Class: Premium_Content_Toggle
* Name: Content Switcher
* Slug: premium-addon-content-toggle
*/
namespace PremiumAddonsPro\Widgets;
// PremiumAddonsPro Classes.
use PremiumAddonsPro\Includes\PAPRO_Helper;
// Elementor Classes.
use Elementor\Plugin;
use Elementor\Widget_Base;
use Elementor\Controls_Manager;
use Elementor\Core\Kits\Documents\Tabs\Global_Colors;
use Elementor\Group_Control_Border;
use Elementor\Group_Control_Typography;
use Elementor\Group_Control_Text_Shadow;
use Elementor\Group_Control_Box_Shadow;
use Elementor\Group_Control_Background;
// PremiumAddons Classes.
use PremiumAddons\Includes\Helper_Functions;
use PremiumAddons\Includes\Controls\Premium_Post_Filter;
if ( ! defined( 'ABSPATH' ) ) {
exit; // Exit if accessed directly.
}
/**
* Class Premium_Content_Toggle
*/
class Premium_Content_Toggle extends Widget_Base {
/**
* Retrieve Widget Name.
*
* @since 1.0.0
* @access public
*/
public function get_name() {
return 'premium-addon-content-toggle';
}
/**
* Retrieve Widget Title.
*
* @since 1.0.0
* @access public
*/
public function get_title() {
return __( 'Content Toggle', 'premium-addons-pro' );
}
/**
* Retrieve Widget Icon.
*
* @since 1.0.0
* @access public
*
* @return string widget icon.
*/
public function get_icon() {
return 'pa-pro-content-switcher';
}
/**
* Retrieve Widget Categories.
*
* @since 1.5.1
* @access public
*
* @return array Widget categories.
*/
public function get_categories() {
return array( 'premium-elements' );
}
/**
* Retrieve Widget Keywords.
*
* @since 1.0.0
* @access public
*
* @return string Widget keywords.
*/
public function get_keywords() {
return array( 'pa', 'premium', 'premium content switcher', 'toggle' );
}
protected function is_dynamic_content():bool {
return false;
}
/**
* Retrieve Widget Dependent CSS.
*
* @since 1.0.0
* @access public
*
* @return array CSS style handles.
*/
public function get_style_depends() {
return array(
'premium-pro',
);
}
/**
* Retrieve Widget Dependent JS.
*
* @since 1.0.0
* @access public
*
* @return array JS script handles.
*/
public function get_script_depends() {
return array( 'premium-pro' );
}
/**
* Widget preview refresh button.
*
* @since 1.0.0
* @access public
*/
public function is_reload_preview_required() {
return true;
}
/**
* Retrieve Widget Support URL.
*
* @access public
*
* @return string support URL.
*/
public function get_custom_help_url() {
return 'https://premiumaddons.com/support/';
}
public function has_widget_inner_wrapper(): bool {
return ! Plugin::$instance->experiments->is_feature_active( 'e_optimized_markup' );
}
/**
* Register Content Toggle controls.
*
* @since 1.0.0
* @access protected
*/
protected function register_controls() { // phpcs:ignore PSR2.Methods.MethodDeclaration.Underscore
$this->start_controls_section(
'premium_content_toggle_headings_section',
array(
'label' => __( 'Switcher', 'premium-addons-pro' ),
)
);
$this->add_control(
'premium_content_toggle_labels_switcher',
array(
'label' => __( 'Show Labels', 'premium-addons-pro' ),
'type' => Controls_Manager::SWITCHER,
'label_on' => 'Show',
'label_off' => 'Hide',
'default' => 'yes',
)
);
$this->add_control(
'premium_content_toggle_heading_one',
array(
'label' => __( 'First Label', 'premium-addons-pro' ),
'default' => __( 'Content #1', 'premium-addons-pro' ),
'type' => Controls_Manager::TEXT,
'dynamic' => array(
'active' => true,
),
'condition' => array(
'premium_content_toggle_labels_switcher' => 'yes',
),
)
);
$this->add_control(
'premium_content_toggle_heading_two',
array(
'label' => __( 'Second Label', 'premium-addons-pro' ),
'default' => __( 'Content #2', 'premium-addons-pro' ),
'type' => Controls_Manager::TEXT,
'dynamic' => array(
'active' => true,
),
'condition' => array(
'premium_content_toggle_labels_switcher' => 'yes',
),
)
);
$this->add_control(
'premium_content_toggle_headings_size',
array(
'label' => __( 'HTML Tag', 'premium-addons-pro' ),
'type' => Controls_Manager::SELECT,
'options' => array(
'h1' => 'H1',
'h2' => 'H2',
'h3' => 'H3',
'h4' => 'H4',
'h5' => 'H5',
'h6' => 'H6',
),
'default' => 'h3',
'condition' => array(
'premium_content_toggle_labels_switcher' => 'yes',
),
)
);
$this->add_responsive_control(
'premium_content_toggle_heading_layout',
array(
'label' => __( 'Display', 'premium-addons-pro' ),
'type' => Controls_Manager::SELECT,
'options' => array(
'no' => __( 'Inline', 'premium-addons-pro' ),
'yes' => __( 'Block', 'premium-addons-pro' ),
),
'default' => 'no',
'condition' => array(
'premium_content_toggle_labels_switcher' => 'yes',
),
'selectors' => array(
'{{WRAPPER}}' => '--pa-content-toggle-stack: {{VALUE}}',
),
)
);
$this->add_responsive_control(
'premium_content_toggle_headings_alignment',
array(
'label' => __( 'Alignment', 'premium-addons-pro' ),
'type' => Controls_Manager::CHOOSE,
'default' => 'center',
'options' => array(
'flex-start' => array(
'title' => __( 'Left', 'premium-addons-pro' ),
'icon' => 'eicon-text-align-left',
),
'center' => array(
'title' => __( 'Center', 'premium-addons-pro' ),
'icon' => 'eicon-text-align-center',
),
'flex-end' => array(
'title' => __( 'Right', 'premium-addons-pro' ),
'icon' => 'eicon-text-align-right',
),
),
'selectors' => array(
'{{WRAPPER}} .premium-content-toggle-switcher' => 'justify-content: {{VALUE}};',
'{{WRAPPER}}.premium-toggle-stack-yes .premium-content-toggle-switcher' => 'align-items: {{VALUE}};',
),
)
);
$this->end_controls_section();
$this->start_controls_section(
'premium_content_toggle_first_content_section',
array(
'label' => __( 'Content 1', 'premium-addons-pro' ),
)
);
$this->add_control(
'premium_content_toggle_first_content_tools',
array(
'label' => __( 'Content to Show', 'premium-addons-pro' ),
'type' => Controls_Manager::SELECT,
'options' => array(
'text_editor' => __( 'Text Editor', 'premium-addons-pro' ),
'elementor_templates' => __( 'Elementor Template', 'premium-addons-pro' ),
),
'default' => 'text_editor',
)
);
$this->add_control(
'premium_content_toggle_first_content_text',
array(
'type' => Controls_Manager::WYSIWYG,
'default' => 'Donec id elit non mi porta gravida at eget metus. Vivamus sagittis lacus vel augue laoreet rutrum faucibus dolor auctor. Cras mattis consectetur purus sit amet fermentum. Nullam id dolor id nibh ultricies vehicula ut id elit. Donec id elit non mi porta gravida at eget metus.',
'label_block' => true,
'dynamic' => array( 'active' => true ),
'condition' => array(
'premium_content_toggle_first_content_tools' => 'text_editor',
),
)
);
$this->add_responsive_control(
'premium_content_toggle_first_content_alignment',
array(
'label' => __( 'Alignment', 'premium-addons-pro' ),
'type' => Controls_Manager::CHOOSE,
'default' => 'center',
'options' => array(
'left' => array(
'title' => __( 'Left', 'premium-addons-pro' ),
'icon' => 'eicon-text-align-left',
),
'center' => array(
'title' => __( 'Center', 'premium-addons-pro' ),
'icon' => 'eicon-text-align-center',
),
'right' => array(
'title' => __( 'Right', 'premium-addons-pro' ),
'icon' => 'eicon-text-align-right',
),
'justify' => array(
'title' => __( 'Justify', 'premium-addons-pro' ),
'icon' => 'eicon-text-align-justify',
),
),
'condition' => array(
'premium_content_toggle_first_content_tools' => 'text_editor',
),
'selectors' => array(
'{{WRAPPER}} .premium-content-toggle-monthly-text' => 'text-align: {{VALUE}};',
),
)
);
$this->add_control(
'live_temp_content',
array(
'label' => __( 'Template Title', 'premium-addons-pro' ),
'type' => Controls_Manager::TEXT,
'classes' => 'premium-live-temp-title control-hidden',
'label_block' => true,
'condition' => array(
'premium_content_toggle_first_content_tools' => 'elementor_templates',
),
)
);
$this->add_control(
'premium_content_toggle_first_content_templates_live',
array(
'type' => Controls_Manager::BUTTON,
'label_block' => true,
'button_type' => 'default papro-btn-block',
'text' => __( 'Create / Edit Template', 'premium-addons-pro' ),
'event' => 'createLiveTemp',
'condition' => array(
'premium_content_toggle_first_content_tools' => 'elementor_templates',
),
)
);
$this->add_control(
'premium_content_toggle_first_content_templates',
array(
'label' => __( 'OR Select Existing Template', 'premium-addons-pro' ),
'type' => Premium_Post_Filter::TYPE,
'classes' => 'premium-live-temp-label',
'label_block' => true,
'multiple' => false,
'source' => 'elementor_library',
'condition' => array(
'premium_content_toggle_first_content_tools' => 'elementor_templates',
),
)
);
$this->end_controls_section();
$this->start_controls_section(
'premium_content_toggle_second_content_section',
array(
'label' => __( 'Content 2', 'premium-addons-pro' ),
)
);
$this->add_control(
'premium_content_toggle_second_content_tools',
array(
'label' => __( 'Content', 'premium-addons-pro' ),
'type' => Controls_Manager::SELECT,
'options' => array(
'text_editor' => __( 'Text Editor', 'premium-addons-pro' ),
'elementor_templates' => __( 'Elementor Template', 'premium-addons-pro' ),
),
'default' => 'text_editor',
)
);
$this->add_control(
'premium_content_toggle_second_content_text',
array(
'label' => __( 'Text Editor', 'premium-addons-pro' ),
'type' => Controls_Manager::WYSIWYG,
'dynamic' => array( 'active' => true ),
'default' => 'Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat.',
'label_block' => true,
'condition' => array(
'premium_content_toggle_second_content_tools' => 'text_editor',
),
)
);
$this->add_responsive_control(
'premium_content_toggle_second_content_alignment',
array(
'label' => __( 'Alignment', 'premium-addons-pro' ),
'type' => Controls_Manager::CHOOSE,
'default' => 'center',
'options' => array(
'left' => array(
'title' => __( 'Left', 'premium-addons-pro' ),
'icon' => 'eicon-text-align-left',
),
'center' => array(
'title' => __( 'Center', 'premium-addons-pro' ),
'icon' => 'eicon-text-align-center',
),
'right' => array(
'title' => __( 'Right', 'premium-addons-pro' ),
'icon' => 'eicon-text-align-right',
),
'justify' => array(
'title' => __( 'Justify', 'premium-addons-pro' ),
'icon' => 'eicon-text-align-justify',
),
),
'condition' => array(
'premium_content_toggle_second_content_tools' => 'text_editor',
),
'selectors' => array(
'{{WRAPPER}} .premium-content-toggle-yearly-text' => 'text-align: {{VALUE}};',
),
)
);
$this->add_control(
'live_temp_content_extra',
array(
'label' => __( 'Template Title', 'premium-addons-pro' ),
'type' => Controls_Manager::TEXT,
'classes' => 'premium-live-temp-title control-hidden',
'label_block' => true,
'condition' => array(
'premium_content_toggle_second_content_tools' => 'elementor_templates',
),
)
);
$this->add_control(
'premium_content_toggle_second_content_templates_live',
array(
'type' => Controls_Manager::BUTTON,
'label_block' => true,
'button_type' => 'default papro-btn-block',
'text' => __( 'Create / Edit Template', 'premium-addons-pro' ),
'event' => 'createLiveTemp',
'condition' => array(
'premium_content_toggle_second_content_tools' => 'elementor_templates',
),
)
);
$this->add_control(
'premium_content_toggle_second_content_templates',
array(
'label' => __( 'OR Select Existing Template', 'premium-addons-pro' ),
'type' => Premium_Post_Filter::TYPE,
'classes' => 'premium-live-temp-label',
'label_block' => true,
'multiple' => false,
'source' => 'elementor_library',
'condition' => array(
'premium_content_toggle_second_content_tools' => 'elementor_templates',
),
)
);
$this->end_controls_section();
$this->start_controls_section(
'premium_content_toggle_content_display',
array(
'label' => __( 'Display Options', 'premium-addons-pro' ),
)
);
$this->add_control(
'premium_content_toggle_animation',
array(
'label' => __( 'Animation', 'premium-addons-pro' ),
'type' => Controls_Manager::SELECT,
'options' => array(
'opacity' => __( 'Fade', 'premium-addons-pro' ),
'fade' => __( 'Slide', 'premium-addons-pro' ),
),
'default' => 'opacity',
)
);
$this->add_control(
'premium_content_toggle_fade_dir',
array(
'label' => __( 'Direction', 'premium-addons-pro' ),
'type' => Controls_Manager::CHOOSE,
'options' => array(
'top' => array(
'title' => __( 'Top', 'premium-addons-pro' ),
'icon' => 'eicon-arrow-down',
),
'right' => array(
'title' => __( 'Right', 'premium-addons-pro' ),
'icon' => 'eicon-arrow-left',
),
'bottom' => array(
'title' => __( 'Bottom', 'premium-addons-pro' ),
'icon' => 'eicon-arrow-up',
),
'left' => array(
'title' => __( 'Left', 'premium-addons-pro' ),
'icon' => 'eicon-arrow-right',
),
),
'default' => 'top',
'condition' => array(
'premium_content_toggle_animation' => 'fade',
),
)
);
$this->end_controls_section();
$this->start_controls_section(
'premium_content_toggle_switcher_headings_container_style_section',
array(
'label' => __( 'Switcher', 'premium-addons-pro' ),
'tab' => Controls_Manager::TAB_STYLE,
)
);
$this->start_controls_tabs( 'premium_content_toggle_swithcer_headings_container_tabs' );
$this->start_controls_tab(
'premium_content_toggle_switcher_style_tab',
array(
'label' => __( 'Switcher', 'premium-addons-pro' ),
)
);
$this->add_responsive_control(
'premium_content_toggle_switch_size',
array(
'label' => __( 'Size', 'premium-addons-pro' ),
'type' => Controls_Manager::SLIDER,
'default' => array(
'size' => 15,
),
'range' => array(
'px' => array(
'min' => 1,
'max' => 40,
),
),
'selectors' => array(
'{{WRAPPER}} .premium-content-toggle-button' => 'font-size: {{SIZE}}px',
),
)
);
$this->add_control(
'controller_border_radius',
array(
'label' => __( 'Controller Border Radius', 'premium-addons-pro' ),
'type' => Controls_Manager::SLIDER,
'size_units' => array( 'px', 'em', '%' ),
'selectors' => array(
'{{WRAPPER}} .premium-content-toggle-switch-control:before' => 'border-radius: {{SIZE}}{{UNIT}}',
),
)
);
$this->add_control(
'switcher_border_radius',
array(
'label' => __( 'Switcher Border Radius', 'premium-addons-pro' ),
'type' => Controls_Manager::SLIDER,
'size_units' => array( 'px', 'em', '%' ),
'selectors' => array(
'{{WRAPPER}} .premium-content-toggle-switch-control' => 'border-radius: {{SIZE}}{{UNIT}}',
),
)
);
$this->add_control(
'premium_content_toggle_switcher_colors_popver',
array(
'label' => __( 'Colors', 'premium-addons-pro' ),
'type' => Controls_Manager::POPOVER_TOGGLE,
)
);
$this->start_popover();
$this->add_control(
'premium_content_toggle_popover_switch_first_content_color',
array(
'label' => __( 'Controller State 1 Color', 'premium-addons-pro' ),
'type' => Controls_Manager::HEADING,
)
);
$this->add_group_control(
Group_Control_Background::get_type(),
array(
'name' => 'premium_content_toggle_switch_normal_background_color',
'types' => array( 'classic', 'gradient' ),
'selector' => '{{WRAPPER}} .premium-content-toggle-switch-control:before',
)
);
$this->add_control(
'premium_content_toggle_popover_switch_second_content_color',
array(
'label' => __( 'Controller State 2 Color', 'premium-addons-pro' ),
'type' => Controls_Manager::HEADING,
)
);
$this->add_group_control(
Group_Control_Background::get_type(),
array(
'name' => 'premium_content_toggle_switch_active_background_color',
'types' => array( 'classic', 'gradient' ),
'selector' => '{{WRAPPER}} .premium-content-toggle-switch:checked + .premium-content-toggle-switch-control:before',
)
);
$this->add_control(
'premium_content_toggle_popover_switch_background',
array(
'label' => __( 'Switcher Background', 'premium-addons-pro' ),
'type' => Controls_Manager::HEADING,
)
);
$this->add_group_control(
Group_Control_Background::get_type(),
array(
'name' => 'premium_content_toggle_fieldset_active_background_color',
'types' => array( 'classic', 'gradient' ),
'selector' => '{{WRAPPER}} .premium-content-toggle-switch-control',
)
);
$this->end_popover();
$this->end_popover();
$this->add_group_control(
Group_Control_Box_Shadow::get_type(),
array(
'label' => __( 'Controller Shadow', 'premium-addons-pro' ),
'name' => 'premium_content_toggle_switch_box_shadow',
'selector' => '{{WRAPPER}} .premium-content-toggle-switch-control:before',
)
);
$this->add_group_control(
Group_Control_Box_Shadow::get_type(),
array(
'label' => __( 'Switcher Shadow', 'premium-addons-pro' ),
'name' => 'premium_content_toggle_fieldset_box_shadow',
'selector' => '{{WRAPPER}} .premium-content-toggle-switch-control',
)
);
$this->end_controls_tab();
$this->start_controls_tab(
'premium_content_toggle_headings_style_tab',
array(
'label' => __( 'Labels', 'premium-addons-pro' ),
'condition' => array(
'premium_content_toggle_labels_switcher' => 'yes',
),
)
);
$this->add_responsive_control(
'premium_content_toggle_switcher_headings_spacing',
array(
'label' => __( 'Spacing', 'premium-addons-pro' ),
'type' => Controls_Manager::SLIDER,
'range' => array(
'px' => array(
'min' => 0,
'max' => 150,
'step' => 1,
),
),
'selectors' => array(
'{{WRAPPER}}.premium-toggle-stack-no .premium-content-toggle-heading-one' => 'margin-right: {{SIZE}}px;',
'{{WRAPPER}}.premium-toggle-stack-no .premium-content-toggle-heading-two' => 'margin-left: {{SIZE}}px;',
'{{WRAPPER}}.premium-toggle-stack-yes .premium-content-toggle-heading-one' => 'margin-bottom: {{SIZE}}px;',
'{{WRAPPER}}.premium-toggle-stack-yes .premium-content-toggle-heading-two' => 'margin-top: {{SIZE}}px;',
),
)
);
$this->add_control(
'premium_content_toggle_left_heading_head',
array(
'label' => __( 'First Label', 'premium-addons-pro' ),
'type' => Controls_Manager::HEADING,
)
);
$this->add_control(
'premium_content_toggle_left_heading_color',
array(
'label' => __( 'Text Color', 'premium-addons-pro' ),
'type' => Controls_Manager::COLOR,
'global' => array(
'default' => Global_Colors::COLOR_SECONDARY,
),
'selectors' => array(
'{{WRAPPER}} .premium-content-toggle-heading-one *' => 'color: {{VALUE}};',
),
)
);
$this->add_group_control(
Group_Control_Typography::get_type(),
array(
'name' => 'premium_content_toggle_left_heading_typhography',
'selector' => '{{WRAPPER}} .premium-content-toggle-heading-one *',
)
);
$this->add_group_control(
Group_Control_Text_Shadow::get_type(),
array(
'name' => 'premium_content_toggle_left_heading_text_shadow',
'selector' => '{{WRAPPER}} .premium-content-toggle-heading-one *',
)
);
$this->add_control(
'premium_content_toggle_left_heading_background_color',
array(
'label' => __( 'Background', 'premium-addons-pro' ),
'type' => Controls_Manager::COLOR,
'selectors' => array(
'{{WRAPPER}} .premium-content-toggle-heading-one *' => 'background: {{VALUE}};',
),
)
);
$this->add_group_control(
Group_Control_Border::get_type(),
array(
'name' => 'premium_content_toggle_left_heading_border',
'selector' => '{{WRAPPER}} .premium-content-toggle-heading-one *',
)
);
$this->add_control(
'premium_content_toggle_left_heading_border_radius',
array(
'label' => __( 'Border Radius', 'premium-addons-pro' ),
'type' => Controls_Manager::SLIDER,
'size_units' => array( 'px', 'em', '%' ),
'selectors' => array(
'{{WRAPPER}} .premium-content-toggle-heading-one *' => 'border-radius: {{SIZE}}{{UNIT}};',
),
)
);
$this->add_group_control(
Group_Control_Box_Shadow::get_type(),
array(
'name' => 'premium_content_toggle_left_heading_box_shadow',
'selector' => '{{WRAPPER}} .premium-content-toggle-heading-one *',
)
);
$this->add_responsive_control(
'premium_content_toggle_left_headings_padding',
array(
'label' => __( 'Padding', 'premium-addons-pro' ),
'type' => Controls_Manager::DIMENSIONS,
'size_units' => array( 'px', 'em', '%' ),
'selectors' => array(
'{{WRAPPER}} .premium-content-toggle-heading-one *' => 'padding: {{TOP}}{{UNIT}} {{RIGHT}}{{UNIT}} {{BOTTOM}}{{UNIT}} {{LEFT}}{{UNIT}};',
),
)
);
$this->add_control(
'premium_content_toggle_right_heading_head',
array(
'label' => __( 'Second Label', 'premium-addons-pro' ),
'type' => Controls_Manager::HEADING,
)
);
$this->add_control(
'premium_content_toggle_right_heading_color',
array(
'label' => __( 'Text Color', 'premium-addons-pro' ),
'type' => Controls_Manager::COLOR,
'global' => array(
'default' => Global_Colors::COLOR_SECONDARY,
),
'selectors' => array(
'{{WRAPPER}} .premium-content-toggle-heading-two *' => 'color: {{VALUE}};',
),
)
);
$this->add_group_control(
Group_Control_Typography::get_type(),
array(
'name' => 'premium_content_toggle_right_heading_typhography',
'selector' => '{{WRAPPER}} .premium-content-toggle-heading-two *',
)
);
$this->add_group_control(
Group_Control_Text_Shadow::get_type(),
array(
'name' => 'premium_content_toggle_right_heading_text_shadow',
'selector' => '{{WRAPPER}} .premium-content-toggle-heading-two *',
)
);
$this->add_control(
'premium_content_toggle_right_heading_background_color',
array(
'label' => __( 'Background', 'premium-addons-pro' ),
'type' => Controls_Manager::COLOR,
'selectors' => array(
'{{WRAPPER}} .premium-content-toggle-heading-two *' => 'background: {{VALUE}};',
),
)
);
$this->add_group_control(
Group_Control_Border::get_type(),
array(
'name' => 'premium_content_right_heading_content_border',
'selector' => '{{WRAPPER}} .premium-content-toggle-heading-two *',
)
);
$this->add_control(
'premium_content_toggle_right_heading_border_radius',
array(
'label' => __( 'Border Radius', 'premium-addons-pro' ),
'type' => Controls_Manager::SLIDER,
'size_units' => array( 'px', 'em', '%' ),
'selectors' => array(
'{{WRAPPER}} .premium-content-toggle-heading-two *' => 'border-radius: {{SIZE}}{{UNIT}};',
),
)
);
$this->add_group_control(
Group_Control_Box_Shadow::get_type(),
array(
'name' => 'premium_content_toggle_right_heading_box_shadow',
'selector' => '{{WRAPPER}} .premium-content-toggle-heading-two *',
)
);
$this->add_responsive_control(
'premium_content_toggle_right_heading_padding',
array(
'label' => __( 'Padding', 'premium-addons-pro' ),
'type' => Controls_Manager::DIMENSIONS,
'size_units' => array( 'px', 'em', '%' ),
'selectors' => array(
'{{WRAPPER}} .premium-content-toggle-heading-two *' => 'padding: {{TOP}}{{UNIT}} {{RIGHT}}{{UNIT}} {{BOTTOM}}{{UNIT}} {{LEFT}}{{UNIT}};',
),
)
);
$this->end_controls_tab();
$this->start_controls_tab(
'premium_content_toggle_container_tab',
array(
'label' => __( 'Container', 'premium-addons-pro' ),
)
);
$this->add_control(
'premium_content_toggle_switcher_container_background_color',
array(
'label' => __( 'Background', 'premium-addons-pro' ),
'type' => Controls_Manager::COLOR,
'selectors' => array(
'{{WRAPPER}} .premium-content-toggle-switcher' => 'background: {{VALUE}};',
),
)
);
$this->add_group_control(
Group_Control_Border::get_type(),
array(
'name' => 'premium_content_toggle_switcher_container_border',
'selector' => '{{WRAPPER}} .premium-content-toggle-switcher',
)
);
$this->add_control(
'premium_content_toggle_switcher_container_border_radius',
array(
'label' => __( 'Border Radius', 'premium-addons-pro' ),
'type' => Controls_Manager::SLIDER,
'size_units' => array( 'px', 'em', '%' ),
'selectors' => array(
'{{WRAPPER}} .premium-content-toggle-switcher' => 'border-radius: {{SIZE}}{{UNIT}};',
),
)
);
$this->add_group_control(
Group_Control_Box_Shadow::get_type(),
array(
'name' => 'premium_content_toggle_switcher_container_box_shadow',
'selector' => '{{WRAPPER}} .premium-content-toggle-switcher',
)
);
$this->add_responsive_control(
'premium_content_toggle_switcher_container_padding',
array(
'label' => __( 'Padding', 'premium-addons-pro' ),
'type' => Controls_Manager::DIMENSIONS,
'size_units' => array( 'px', 'em', '%' ),
'selectors' => array(
'{{WRAPPER}} .premium-content-toggle-switcher' => 'padding: {{TOP}}{{UNIT}} {{RIGHT}}{{UNIT}} {{BOTTOM}}{{UNIT}} {{LEFT}}{{UNIT}};',
),
)
);
$this->add_responsive_control(
'premium_content_toggle_switcher_container_margin',
array(
'label' => __( 'Margin', 'premium-addons-pro' ),
'type' => Controls_Manager::DIMENSIONS,
'size_units' => array( 'px', 'em', '%' ),
'selectors' => array(
'{{WRAPPER}} .premium-content-toggle-switcher' => 'margin: {{TOP}}{{UNIT}} {{RIGHT}}{{UNIT}} {{BOTTOM}}{{UNIT}} {{LEFT}}{{UNIT}};',
),
)
);
$this->end_controls_tab();
$this->end_controls_tabs();
$this->end_controls_section();
$this->start_controls_section(
'premium_content_toggle_content_style_section',
array(
'label' => __( 'Content', 'premium-addons-pro' ),
'tab' => Controls_Manager::TAB_STYLE,
)
);
$this->add_control(
'premium_content_toggle_two_content_height',
array(
'label' => __( 'Height', 'premium-addons-pro' ),
'type' => Controls_Manager::SLIDER,
'size_units' => array( 'px', 'em', '%', 'custom' ),
'range' => array(
'px' => array(
'min' => 0,
'step' => 1,
'max' => 1000,
),
),
'selectors' => array(
'{{WRAPPER}} .premium-content-toggle-container .premium-content-toggle-two-content > li' => 'min-height: {{SIZE}}{{UNIT}};',
),
)
);
$this->start_controls_tabs( 'premium_content_toggle_content_style_tabs' );
$this->start_controls_tab(
'premium_content_toggle_first_content_style_tab',
array(
'label' => __( 'First Content', 'premium-addons-pro' ),
)
);
$this->add_control(
'premium_content_toggle_first_content_color',
array(
'label' => __( 'Text Color', 'premium-addons-pro' ),
'type' => Controls_Manager::COLOR,
'global' => array(
'default' => Global_Colors::COLOR_SECONDARY,
),
'selectors' => array(
'{{WRAPPER}} .premium-content-toggle-monthly-text' => 'color: {{VALUE}};',
'{{WRAPPER}} .premium-content-toggle-monthly-text *' => 'color: {{VALUE}};',
),
'condition' => array(
'premium_content_toggle_first_content_tools' => 'text_editor',
),
)
);
$this->add_group_control(
Group_Control_Typography::get_type(),
array(
'name' => 'premium_content_toggle_first_content_typhography',
'selector' => '{{WRAPPER}} .premium-content-toggle-monthly-text',
'condition' => array(
'premium_content_toggle_first_content_tools' => 'text_editor',
),
)
);
$this->add_group_control(
Group_Control_Text_Shadow::get_type(),
array(
'name' => 'premium_content_toggle_first_content_text_shadow',
'selector' => '{{WRAPPER}} .premium-content-toggle-monthly-text',
'condition' => array(
'premium_content_toggle_first_content_tools' => 'text_editor',
),
)
);
$this->add_control(
'premium_content_toggle_first_content_background_color',
array(
'label' => __( 'Background', 'premium-addons-pro' ),
'type' => Controls_Manager::COLOR,
'selectors' => array(
'{{WRAPPER}} .premium-content-toggle-monthly' => 'background: {{VALUE}};',
),
)
);
$this->add_group_control(
Group_Control_Border::get_type(),
array(
'name' => 'premium_content_toggle_first_content_border',
'selector' => '{{WRAPPER}} .premium-content-toggle-monthly',
)
);
$this->add_control(
'premium_content_toggle_first_content_border_radius',
array(
'label' => __( 'Border Radius', 'premium-addons-pro' ),
'type' => Controls_Manager::SLIDER,
'size_units' => array( 'px', 'em', '%' ),
'selectors' => array(
'{{WRAPPER}} .premium-content-toggle-monthly' => 'border-radius: {{SIZE}}{{UNIT}};',
),
)
);
$this->add_group_control(
Group_Control_Box_Shadow::get_type(),
array(
'name' => 'premium_content_toggle_first_content_box_shadow',
'selector' => '{{WRAPPER}} .premium-content-toggle-monthly',
)
);
$this->end_controls_tab();
$this->start_controls_tab(
'premium_content_toggle_second_content_style_tab',
array(
'label' => __( 'Second Content', 'premium-addons-pro' ),
)
);
$this->add_control(
'premium_content_toggle_second_content_color',
array(
'label' => __( 'Text Color', 'premium-addons-pro' ),
'type' => Controls_Manager::COLOR,
'global' => array(
'default' => Global_Colors::COLOR_SECONDARY,
),
'selectors' => array(
'{{WRAPPER}} .premium-content-toggle-yearly-text' => 'color: {{VALUE}};',
'{{WRAPPER}} .premium-content-toggle-yearly-text *' => 'color: {{VALUE}};',
),
'condition' => array(
'premium_content_toggle_second_content_tools' => 'text_editor',
),
)
);
$this->add_group_control(
Group_Control_Typography::get_type(),
array(
'name' => 'premium_content_toggle_second_content_typhography',
'selector' => '{{WRAPPER}} .premium-content-toggle-yearly-text',
'condition' => array(
'premium_content_toggle_second_content_tools' => 'text_editor',
),
)
);
$this->add_group_control(
Group_Control_Text_Shadow::get_type(),
array(
'name' => 'premium_content_toggle_second_content_text_shadow',
'selector' => '{{WRAPPER}} .premium-content-toggle-yearly-text',
'condition' => array(
'premium_content_toggle_second_content_tools' => 'text_editor',
),
)
);
$this->add_control(
'premium_content_toggle_second_content_background_color',
array(
'label' => __( 'Background', 'premium-addons-pro' ),
'type' => Controls_Manager::COLOR,
'selectors' => array(
'{{WRAPPER}} .premium-content-toggle-yearly' => 'background: {{VALUE}};',
),
)
);
$this->add_group_control(
Group_Control_Border::get_type(),
array(
'name' => 'premium_content_toggle_second_content_border',
'selector' => '{{WRAPPER}} .premium-content-toggle-yearly',
)
);
$this->add_control(
'premium_content_toggle_second_content_border_radius',
array(
'label' => __( 'Border Radius', 'premium-addons-pro' ),
'type' => Controls_Manager::SLIDER,
'size_units' => array( 'px', 'em', '%' ),
'selectors' => array(
'{{WRAPPER}} .premium-content-toggle-yearly' => 'border-radius: {{SIZE}}{{UNIT}};',
),
)
);
$this->add_group_control(
Group_Control_Box_Shadow::get_type(),
array(
'name' => 'premium_content_toggle_second_content_box_shadow',
'selector' => '{{WRAPPER}} .premium-content-toggle-yearly',
)
);
$this->end_controls_tab();
$this->end_controls_tabs();
$this->add_responsive_control(
'premium_content_toggle_contents_margin',
array(
'label' => __( 'Margin', 'premium-addons-pro' ),
'type' => Controls_Manager::DIMENSIONS,
'size_units' => array( 'px', 'em', '%' ),
'selectors' => array(
'{{WRAPPER}} .premium-content-toggle-list' => 'margin: {{TOP}}{{UNIT}} {{RIGHT}}{{UNIT}} {{BOTTOM}}{{UNIT}} {{LEFT}}{{UNIT}};',
),
'separator' => 'before',
)
);
$this->add_responsive_control(
'premium_content_toggle_contents_padding',
array(
'label' => __( 'Padding', 'premium-addons-pro' ),
'type' => Controls_Manager::DIMENSIONS,
'size_units' => array( 'px', 'em', '%' ),
'selectors' => array(
'{{WRAPPER}} .premium-content-toggle-monthly, {{WRAPPER}} .premium-content-toggle-yearly' => 'padding: {{TOP}}{{UNIT}} {{RIGHT}}{{UNIT}} {{BOTTOM}}{{UNIT}} {{LEFT}}{{UNIT}};',
),
)
);
$this->end_controls_section();
$this->start_controls_section(
'premium_content_toggle_container_style',
array(
'label' => __( 'Container', 'premium-addons-pro' ),
'tab' => Controls_Manager::TAB_STYLE,
)
);
$this->add_group_control(
Group_Control_Background::get_type(),
array(
'name' => 'premium_content_toggle_container_background',
'types' => array( 'classic', 'gradient' ),
'selector' => '{{WRAPPER}} .premium-content-toggle-container',
)
);
$this->add_group_control(
Group_Control_Border::get_type(),
array(
'name' => 'premium_content_toggle_container_border',
'selector' => '{{WRAPPER}} .premium-content-toggle-container',
)
);
$this->add_control(
'premium_content_toggle_container_border_radius',
array(
'label' => __( 'Border Radius', 'premium-addons-pro' ),
'type' => Controls_Manager::SLIDER,
'size_units' => array( 'px', 'em', '%' ),
'selectors' => array(
'{{WRAPPER}} .premium-content-toggle-container' => 'border-radius: {{SIZE}}{{UNIT}};',
),
)
);
$this->add_group_control(
Group_Control_Box_Shadow::get_type(),
array(
'name' => 'premium_content_toggle_container_box_shadow',
'selector' => '{{WRAPPER}} .premium-content-toggle-container',
)
);
$this->add_responsive_control(
'premium_content_toggle_container_margin',
array(
'label' => __( 'Margin', 'premium-addons-pro' ),
'type' => Controls_Manager::DIMENSIONS,
'size_units' => array( 'px', 'em', '%' ),
'selectors' => array(
'{{WRAPPER}} .premium-content-toggle-container' => 'margin: {{TOP}}{{UNIT}} {{RIGHT}}{{UNIT}} {{BOTTOM}}{{UNIT}} {{LEFT}}{{UNIT}};',
),
)
);
$this->add_responsive_control(
'premium_content_toggle_container_padding',
array(
'label' => __( 'Padding', 'premium-addons-pro' ),
'type' => Controls_Manager::DIMENSIONS,
'size_units' => array( 'px', 'em', '%' ),
'selectors' => array(
'{{WRAPPER}} .premium-content-toggle-container' => 'padding: {{TOP}}{{UNIT}} {{RIGHT}}{{UNIT}} {{BOTTOM}}{{UNIT}} {{LEFT}}{{UNIT}};',
),
)
);
$this->end_controls_section();
}
/**
* Render Content Toggle widget output on the frontend.
*
* Written in PHP and used to generate the final HTML.
*
* @since 1.0.0
* @access protected
*/
protected function render() {
$settings = $this->get_settings_for_display();
if ( 'opacity' === $settings['premium_content_toggle_animation'] ) {
$animation = 'opacity';
} elseif ( 'fade' === $settings['premium_content_toggle_animation'] ) {
$animation = 'fade-' . $settings['premium_content_toggle_fade_dir'];
}
$this->add_inline_editing_attributes( 'premium_content_toggle_heading_one', 'basic' );
$this->add_inline_editing_attributes( 'premium_content_toggle_heading_two', 'basic' );
$this->add_inline_editing_attributes( 'premium_content_toggle_first_content_text', 'advanced' );
$this->add_inline_editing_attributes( 'premium_content_toggle_second_content_text', 'advanced' );
$this->add_render_attribute( 'premium_content_toggle_first_content_text', 'class', 'premium-content-toggle-monthly-text' );
$this->add_render_attribute( 'premium_content_toggle_second_content_text', 'class', 'premium-content-toggle-yearly-text' );
$heading_size = PAPRO_Helper::validate_html_tag( $settings['premium_content_toggle_headings_size'] );
?>
<div class='premium-content-toggle-container'>
<div class="premium-content-toggle-switcher">
<?php if ( 'yes' === $settings['premium_content_toggle_labels_switcher'] ) : ?>
<div class="premium-content-toggle-heading-one">
<<?php echo wp_kses_post( $heading_size . ' ' . $this->get_render_attribute_string( 'premium_content_toggle_heading_one' ) ); ?>>
<?php echo wp_kses_post( $settings['premium_content_toggle_heading_one'] ); ?>
</<?php echo wp_kses_post( $heading_size ); ?>>
</div>
<?php endif; ?>
<div class="premium-content-toggle-button">
<label class="premium-content-toggle-switch-label">
<input class="premium-content-toggle-switch premium-content-toggle-switch-normal elementor-clickable" type="checkbox">
<span class="premium-content-toggle-switch-control elementor-clickable"></span>
</label>
</div>
<?php if ( 'yes' === $settings['premium_content_toggle_labels_switcher'] ) : ?>
<div class="premium-content-toggle-heading-two">
<<?php echo wp_kses_post( $heading_size . ' ' . $this->get_render_attribute_string( 'premium_content_toggle_heading_two' ) ); ?>>
<?php echo wp_kses_post( $settings['premium_content_toggle_heading_two'] ); ?>
</<?php echo wp_kses_post( $heading_size ); ?>>
</div>
<?php endif; ?>
</div>
<div class="premium-content-toggle-list <?php echo esc_attr( $animation ); ?>">
<ul class="premium-content-toggle-two-content">
<li data-type="premium-content-toggle-monthly" class="premium-content-toggle-is-visible premium-content-toggle-monthly">
<?php if ( 'text_editor' === $settings['premium_content_toggle_first_content_tools'] ) : ?>
<div <?php echo wp_kses_post( $this->get_render_attribute_string( 'premium_content_toggle_first_content_text' ) ); ?>>
<?php echo $this->parse_text_editor( $settings['premium_content_toggle_first_content_text'] ); ?>
</div>
<?php
elseif ( 'elementor_templates' === $settings['premium_content_toggle_first_content_tools'] ) :
$first_template = empty( $settings['premium_content_toggle_first_content_templates'] ) ? $settings['live_temp_content'] : $settings['premium_content_toggle_first_content_templates'];
?>
<div class="premium-content-toggle-first-content-item-wrapper">
<?php echo Helper_Functions::render_elementor_template( $first_template ); // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped ?>
</div>
<?php endif; ?>
</li>
<li data-type="premium-content-toggle-yearly" class="premium-content-toggle-is-hidden premium-content-toggle-yearly">
<?php if ( 'text_editor' === $settings['premium_content_toggle_second_content_tools'] ) : ?>
<div <?php echo wp_kses_post( $this->get_render_attribute_string( 'premium_content_toggle_second_content_text' ) ); ?>>
<?php echo $this->parse_text_editor( $settings['premium_content_toggle_second_content_text'] ); ?>
</div>
<?php
elseif ( 'elementor_templates' === $settings['premium_content_toggle_second_content_tools'] ) :
$second_template = empty( $settings['premium_content_toggle_second_content_templates'] ) ? $settings['live_temp_content_extra'] : $settings['premium_content_toggle_second_content_templates'];
?>
<div class="premium-content-toggle-second-content-item-wrapper">
<?php echo Helper_Functions::render_elementor_template( $second_template ); // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped ?>
</div>
<?php endif; ?>
</li>
</ul>
</div>
</div>
<?php
}
}