<?php
/**
* Button Widget
*/
namespace Elementor;
class Cyarb_Button extends Widget_Base {
public function get_name() {
return 'CyarbButton';
}
public function get_title() {
return __( 'Cyarb Button', 'cyarb-toolkit' );
}
public function get_icon() {
return 'eicon-handle';
}
public function get_categories() {
return [ 'cyarb-elements' ];
}
protected function register_controls() {
$this->start_controls_section(
'cyarb_Button',
[
'label' => __( 'Cyarb Button', 'cyarb-toolkit' ),
'tab' => Controls_Manager::TAB_CONTENT,
]
);
$this->add_control(
'button_text',
[
'label' => __( 'Button Text', 'cyarb-toolkit' ),
'type' => Controls_Manager::TEXT,
'default' => __('Get In Touch', 'cyarb-toolkit'),
]
);
$this->add_control(
'button_link',
[
'label' => __( 'Button Link', 'cyarb-toolkit' ),
'type' => Controls_Manager::URL,
]
);
$this->add_control(
'button_alignment',
[
'label' => __( 'Button Alignment', 'cyarb-toolkit' ),
'type' => Controls_Manager::SELECT,
'options' => [
'text-start' => __( 'Left', 'cyarb-toolkit' ),
'text-center' => __( 'Center', 'cyarb-toolkit' ),
'text-end' => __( 'Right', 'cyarb-toolkit' ),
],
'default' => 'text-start',
]
);
$this->end_controls_section();
$this->start_controls_section(
'Button_style',
[
'label' => __( 'Style', 'cyarb-toolkit' ),
'tab' => Controls_Manager::TAB_STYLE,
]
);
$this->add_control(
'btn_text_color',
[
'label' => __( 'Button Text Color', 'cyarb-toolkit' ),
'type' => Controls_Manager::COLOR,
'selectors' => [
'{{WRAPPER}} .default-btn' => 'color: {{VALUE}}',
],
]
);
$this->add_control(
'btn_bg_color',
[
'label' => __( 'Button Background Color', 'cyarb-toolkit' ),
'type' => Controls_Manager::COLOR,
'selectors' => [
'{{WRAPPER}} .default-btn' => 'background: {{VALUE}}',
],
]
);
$this->add_control(
'btn_hover_text_color',
[
'label' => __( 'Button Hover Text Color', 'cyarb-toolkit' ),
'type' => Controls_Manager::COLOR,
'selectors' => [
'{{WRAPPER}} .default-btn:hover' => 'color: {{VALUE}}',
],
]
);
$this->add_control(
'btn_hbg_color',
[
'label' => __( 'Button Hover Background Color', 'cyarb-toolkit' ),
'type' => Controls_Manager::COLOR,
'selectors' => [
'{{WRAPPER}} .default-btn:before, .default-btn::after' => 'background-color: {{VALUE}}',
],
]
);
$this->add_group_control(
Group_Control_Typography::get_type(),
[
'name' => 'btn_typography',
'label' => __( 'Button Typography', 'cyarb-toolkit' ),
'selector' => '{{WRAPPER}} .default-btn',
]
);
$this->add_responsive_control(
'border_radius',
[
'label' => esc_html__( 'Border Radius', 'cyarb-toolkit' ),
'type' => Controls_Manager::DIMENSIONS,
'size_units' => [ 'px', '%', 'em', 'rem', 'custom' ],
'selectors' => [
'{{WRAPPER}} .default-btn' => 'border-radius: {{TOP}}{{UNIT}} {{RIGHT}}{{UNIT}} {{BOTTOM}}{{UNIT}} {{LEFT}}{{UNIT}};',
],
]
);
$this->add_responsive_control(
'text_padding',
[
'label' => esc_html__( 'Padding', 'cyarb-toolkit' ),
'type' => Controls_Manager::DIMENSIONS,
'size_units' => [ 'px', '%', 'em', 'rem', 'vw', 'custom' ],
'selectors' => [
'{{WRAPPER}} .default-btn' => 'padding: {{TOP}}{{UNIT}} {{RIGHT}}{{UNIT}} {{BOTTOM}}{{UNIT}} {{LEFT}}{{UNIT}};',
],
'separator' => 'before',
]
);
$this->end_controls_section();
}
protected function render() {
$settings = $this->get_settings_for_display();
if ( ! empty( $settings['button_link']['url'] ) ) {
$this->add_link_attributes( 'button_link', $settings['button_link'] );
}
if( $settings['button_text'] != '' ): ?>
<div class="cyarb-button <?php echo esc_attr($settings['button_alignment']); ?>">
<a <?php echo $this->get_render_attribute_string( 'button_link' ); ?> class="default-btn">
<span> <?php echo esc_html( $settings['button_text'] ); ?></span>
</a>
</div>
<?php endif; ?>
<?php
}
}
Plugin::instance()->widgets_manager->register( new Cyarb_Button );