359 lines
9.2 KiB
PHP
359 lines
9.2 KiB
PHP
|
<?php
|
||
|
/**
|
||
|
* Class: Counter
|
||
|
* Name: Counter
|
||
|
* Slug: stratum-counter
|
||
|
*/
|
||
|
|
||
|
namespace Stratum;
|
||
|
|
||
|
use \Elementor\Controls_Manager;
|
||
|
use \Elementor\Utils;
|
||
|
use \Elementor\Plugin;
|
||
|
|
||
|
if ( ! defined( 'ABSPATH' ) ) exit; // Exit if accessed directly
|
||
|
|
||
|
class Counter extends Stratum_Widget_Base {
|
||
|
protected $widget_name = 'counter';
|
||
|
|
||
|
public function __construct($data = [], $args = null) {
|
||
|
parent::__construct( $data, $args );
|
||
|
}
|
||
|
|
||
|
public function get_script_depends() {
|
||
|
return [ 'countup', 'waypoints' ];
|
||
|
}
|
||
|
|
||
|
public function get_title() {
|
||
|
return esc_html__( 'Counter', 'stratum' );
|
||
|
}
|
||
|
|
||
|
public function get_icon() {
|
||
|
return 'stratum-icon-counter';
|
||
|
}
|
||
|
|
||
|
public function get_categories() {
|
||
|
return [ 'stratum-widgets' ];
|
||
|
}
|
||
|
|
||
|
protected function register_controls() {
|
||
|
$controls = $this;
|
||
|
|
||
|
/*-----------------------------------------------------------------------------------*/
|
||
|
/* Content Tab
|
||
|
/*-----------------------------------------------------------------------------------*/
|
||
|
|
||
|
$controls->start_controls_section(
|
||
|
'section_content',
|
||
|
[
|
||
|
'label' => esc_html__( 'Content', 'stratum' )
|
||
|
]
|
||
|
);
|
||
|
|
||
|
$controls->add_control(
|
||
|
'start',
|
||
|
[
|
||
|
'label' => esc_html__( 'Start Value', 'stratum' ),
|
||
|
'type' => Controls_Manager::NUMBER,
|
||
|
'dynamic' => [ 'active' => true ],
|
||
|
'default' => 0
|
||
|
]
|
||
|
);
|
||
|
|
||
|
$controls->add_control(
|
||
|
'end',
|
||
|
[
|
||
|
'label' => esc_html__( 'End Value', 'stratum' ),
|
||
|
'type' => Controls_Manager::NUMBER,
|
||
|
'dynamic' => [ 'active' => true ],
|
||
|
'default' => 100
|
||
|
]
|
||
|
);
|
||
|
|
||
|
$controls->add_control(
|
||
|
'duration',
|
||
|
[
|
||
|
'label' => esc_html__( 'Animation Duration', 'stratum' ),
|
||
|
'type' => Controls_Manager::NUMBER,
|
||
|
'dynamic' => [ 'active' => true ],
|
||
|
'default' => 3
|
||
|
]
|
||
|
);
|
||
|
|
||
|
$controls->add_control(
|
||
|
'smooth_animation',
|
||
|
[
|
||
|
'label' => esc_html__( 'Smooth Animation', 'stratum' ),
|
||
|
'type' => Controls_Manager::SWITCHER,
|
||
|
'default' => ''
|
||
|
]
|
||
|
);
|
||
|
|
||
|
$controls->add_control(
|
||
|
'prefix',
|
||
|
[
|
||
|
'label' => esc_html__( 'Counter Prefix', 'stratum' ),
|
||
|
'label_block' => true,
|
||
|
'type' => Controls_Manager::TEXT,
|
||
|
'default' => ''
|
||
|
]
|
||
|
);
|
||
|
|
||
|
$controls->add_control(
|
||
|
'suffix',
|
||
|
[
|
||
|
'label' => esc_html__( 'Counter Suffix', 'stratum' ),
|
||
|
'label_block' => true,
|
||
|
'type' => Controls_Manager::TEXT,
|
||
|
'default' => ''
|
||
|
]
|
||
|
);
|
||
|
|
||
|
$controls->add_responsive_control(
|
||
|
'horizontal_alignment',
|
||
|
[
|
||
|
'label' => esc_html__( 'Horizontal Alignment', 'stratum' ),
|
||
|
'type' => Controls_Manager::CHOOSE,
|
||
|
'default' => 'flex-start',
|
||
|
'toggle' => false,
|
||
|
'options' => [
|
||
|
'flex-start' => [
|
||
|
'title' => esc_html__( 'Left', 'stratum' ),
|
||
|
'icon' => 'eicon-h-align-left',
|
||
|
],
|
||
|
'center' => [
|
||
|
'title' => esc_html__( 'Center', 'stratum' ),
|
||
|
'icon' => 'eicon-h-align-center',
|
||
|
],
|
||
|
'flex-end' => [
|
||
|
'title' => esc_html__( 'Right', 'stratum' ),
|
||
|
'icon' => 'eicon-h-align-right',
|
||
|
],
|
||
|
],
|
||
|
'selectors' => [
|
||
|
'{{WRAPPER}} .stratum-counter' => 'justify-content: {{VALUE}};'
|
||
|
]
|
||
|
]
|
||
|
);
|
||
|
|
||
|
$controls->end_controls_section();
|
||
|
|
||
|
/*-----------------------------------------------------------------------------------*/
|
||
|
/* Style Tab
|
||
|
/*-----------------------------------------------------------------------------------*/
|
||
|
|
||
|
$controls->start_controls_section(
|
||
|
'section_style',
|
||
|
[
|
||
|
'label' => esc_html__( 'Style', 'stratum' ),
|
||
|
'tab' => Controls_Manager::TAB_STYLE
|
||
|
]
|
||
|
);
|
||
|
|
||
|
$controls->add_control(
|
||
|
'animation_effect',
|
||
|
[
|
||
|
'label' => esc_html__( 'Animation Effect', 'stratum' ),
|
||
|
'type' => Controls_Manager::SELECT,
|
||
|
'default' => 'outExpo',
|
||
|
'options' => [
|
||
|
'outExpo' => esc_html__( 'OutExpo' , 'stratum' ),
|
||
|
'outQuintic' => esc_html__( 'OutQuintic', 'stratum' ),
|
||
|
'outCubic' => esc_html__( 'OutCubic' , 'stratum' )
|
||
|
]
|
||
|
]
|
||
|
);
|
||
|
|
||
|
$controls->add_control(
|
||
|
'display_separator',
|
||
|
[
|
||
|
'label' => esc_html__( 'Display Thousands Separator', 'stratum' ),
|
||
|
'type' => Controls_Manager::SWITCHER,
|
||
|
'default' => ''
|
||
|
]
|
||
|
);
|
||
|
|
||
|
$controls->add_control(
|
||
|
'thousands_separator',
|
||
|
[
|
||
|
'label' => esc_html__( 'Thousands Separator', 'stratum' ),
|
||
|
'label_block' => true,
|
||
|
'type' => Controls_Manager::TEXT,
|
||
|
'default' => ','
|
||
|
]
|
||
|
);
|
||
|
|
||
|
$controls->add_group_control(
|
||
|
Stratum_Group_Control_Typography::get_type(),
|
||
|
[
|
||
|
'name' => 'prefix__typography',
|
||
|
'selector' => '{{WRAPPER}} .stratum-counter__prefix',
|
||
|
'label' => esc_html__( 'Prefix Typography', 'stratum' ),
|
||
|
'render_type' => 'ui',
|
||
|
'exclude' => ['html_tag']
|
||
|
]
|
||
|
);
|
||
|
|
||
|
$controls->add_group_control(
|
||
|
Stratum_Group_Control_Typography::get_type(),
|
||
|
[
|
||
|
'name' => 'number__typography',
|
||
|
'selector' => '{{WRAPPER}} .stratum-counter__number',
|
||
|
'label' => esc_html__( 'Number Typography', 'stratum' ),
|
||
|
'render_type' => 'ui',
|
||
|
'exclude' => ['html_tag']
|
||
|
]
|
||
|
);
|
||
|
|
||
|
$controls->add_group_control(
|
||
|
Stratum_Group_Control_Typography::get_type(),
|
||
|
[
|
||
|
'name' => 'suffix__typography',
|
||
|
'selector' => '{{WRAPPER}} .stratum-counter__suffix',
|
||
|
'label' => esc_html__( 'Suffix Typography', 'stratum' ),
|
||
|
'render_type' => 'ui',
|
||
|
'exclude' => ['html_tag']
|
||
|
]
|
||
|
);
|
||
|
|
||
|
$controls->add_control(
|
||
|
'decimal_places',
|
||
|
[
|
||
|
'label' => esc_html__( 'Decimal Places', 'stratum' ),
|
||
|
'type' => Controls_Manager::NUMBER,
|
||
|
'dynamic' => [ 'active' => true ],
|
||
|
'min' => '0',
|
||
|
'default' => '0'
|
||
|
]
|
||
|
);
|
||
|
|
||
|
$controls->add_control(
|
||
|
'decimal_separator',
|
||
|
[
|
||
|
'label' => esc_html__( 'Decimal Separator', 'stratum' ),
|
||
|
'label_block' => true,
|
||
|
'type' => Controls_Manager::TEXT,
|
||
|
'default' => '.'
|
||
|
]
|
||
|
);
|
||
|
|
||
|
$controls->add_control(
|
||
|
'numerals',
|
||
|
[
|
||
|
'label' => esc_html__( 'Numerals', 'stratum' ),
|
||
|
'type' => Controls_Manager::SELECT,
|
||
|
'options' => [
|
||
|
'default' => esc_html__( 'Default' , 'stratum' ),
|
||
|
'eastern_arabic' => esc_html__( 'Eastern Arabic', 'stratum' ),
|
||
|
'farsi' => esc_html__( 'Farsi' , 'stratum' )
|
||
|
],
|
||
|
'default' => 'default'
|
||
|
]
|
||
|
);
|
||
|
|
||
|
$controls->start_controls_tabs( 'counter_styles' );
|
||
|
|
||
|
$controls->start_controls_tab(
|
||
|
'counter_normal',
|
||
|
array(
|
||
|
'label' => esc_html__( 'Normal', 'stratum' ),
|
||
|
)
|
||
|
);
|
||
|
|
||
|
$controls->add_control(
|
||
|
'prefix_color',
|
||
|
[
|
||
|
'label' => esc_html__( 'Prefix Color', 'stratum' ),
|
||
|
'type' => Controls_Manager::COLOR,
|
||
|
'selectors' => [
|
||
|
'{{WRAPPER}} .stratum-counter .stratum-counter__prefix' => 'color: {{VALUE}}'
|
||
|
]
|
||
|
]
|
||
|
);
|
||
|
|
||
|
$controls->add_control(
|
||
|
'number_color',
|
||
|
[
|
||
|
'label' => esc_html__( 'Number Color', 'stratum' ),
|
||
|
'type' => Controls_Manager::COLOR,
|
||
|
'selectors' => [
|
||
|
'{{WRAPPER}} .stratum-counter .stratum-counter__number' => 'color: {{VALUE}}'
|
||
|
]
|
||
|
]
|
||
|
);
|
||
|
|
||
|
$controls->add_control(
|
||
|
'suffix_color',
|
||
|
[
|
||
|
'label' => esc_html__( 'Suffix Color', 'stratum' ),
|
||
|
'type' => Controls_Manager::COLOR,
|
||
|
'selectors' => [
|
||
|
'{{WRAPPER}} .stratum-counter .stratum-counter__suffix' => 'color: {{VALUE}}'
|
||
|
]
|
||
|
]
|
||
|
);
|
||
|
|
||
|
$controls->end_controls_tab();
|
||
|
|
||
|
$controls->start_controls_tab(
|
||
|
'counter_hover',
|
||
|
array(
|
||
|
'label' => esc_html__( 'Hover', 'stratum' ),
|
||
|
)
|
||
|
);
|
||
|
|
||
|
$controls->add_control(
|
||
|
'hover_prefix_color',
|
||
|
[
|
||
|
'label' => esc_html__( 'Prefix Color', 'stratum' ),
|
||
|
'type' => Controls_Manager::COLOR,
|
||
|
'selectors' => [
|
||
|
'{{WRAPPER}}:hover .stratum-counter .stratum-counter__prefix' => 'color: {{VALUE}}'
|
||
|
]
|
||
|
]
|
||
|
);
|
||
|
|
||
|
$controls->add_control(
|
||
|
'hover_number_color',
|
||
|
[
|
||
|
'label' => esc_html__( 'Number Color', 'stratum' ),
|
||
|
'type' => Controls_Manager::COLOR,
|
||
|
'selectors' => [
|
||
|
'{{WRAPPER}}:hover .stratum-counter .stratum-counter__number' => 'color: {{VALUE}}'
|
||
|
]
|
||
|
]
|
||
|
);
|
||
|
|
||
|
$controls->add_control(
|
||
|
'hover_suffix_color',
|
||
|
[
|
||
|
'label' => esc_html__( 'Suffix Color', 'stratum' ),
|
||
|
'type' => Controls_Manager::COLOR,
|
||
|
'selectors' => [
|
||
|
'{{WRAPPER}}:hover .stratum-counter .stratum-counter__suffix' => 'color: {{VALUE}}'
|
||
|
]
|
||
|
]
|
||
|
);
|
||
|
|
||
|
$controls->end_controls_tab();
|
||
|
|
||
|
$controls->end_controls_tabs();
|
||
|
|
||
|
$controls->end_controls_section();
|
||
|
}
|
||
|
|
||
|
//PHP template (refresh elements)
|
||
|
protected function render() {
|
||
|
$this->render_widget( 'php' );
|
||
|
}
|
||
|
|
||
|
//JavaScript "Backbone" template (live preview)
|
||
|
protected function content_template() {
|
||
|
$this->render_widget( 'js' );
|
||
|
}
|
||
|
|
||
|
public function render_plain_content( $instance = [] ) {}
|
||
|
}
|
||
|
|
||
|
Plugin::instance()->widgets_manager->register( new Counter() );
|