balmet.com

Unnamed repository; edit this file 'description' to name the repository.
Log | Files | Refs

theme-style-buttons.php (5699B)


      1 <?php
      2 
      3 namespace Elementor\Core\Kits\Documents\Tabs;
      4 
      5 use Elementor\Controls_Manager;
      6 use Elementor\Group_Control_Background;
      7 use Elementor\Group_Control_Border;
      8 use Elementor\Group_Control_Box_Shadow;
      9 use Elementor\Group_Control_Text_Shadow;
     10 use Elementor\Group_Control_Typography;
     11 
     12 if ( ! defined( 'ABSPATH' ) ) {
     13 	exit; // Exit if accessed directly
     14 }
     15 
     16 class Theme_Style_Buttons extends Tab_Base {
     17 
     18 	public function get_id() {
     19 		return 'theme-style-buttons';
     20 	}
     21 
     22 	public function get_title() {
     23 		return esc_html__( 'Buttons', 'elementor' );
     24 	}
     25 
     26 	public function get_group() {
     27 		return 'theme-style';
     28 	}
     29 
     30 	public function get_icon() {
     31 		return 'eicon-button';
     32 	}
     33 
     34 	public function get_help_url() {
     35 		return 'https://go.elementor.com/global-theme-style-buttons';
     36 	}
     37 
     38 	protected function register_tab_controls() {
     39 		$button_selectors = [
     40 			'{{WRAPPER}} button',
     41 			'{{WRAPPER}} input[type="button"]',
     42 			'{{WRAPPER}} input[type="submit"]',
     43 			'{{WRAPPER}} .elementor-button',
     44 		];
     45 
     46 		$button_hover_selectors = [
     47 			'{{WRAPPER}} button:hover',
     48 			'{{WRAPPER}} button:focus',
     49 			'{{WRAPPER}} input[type="button"]:hover',
     50 			'{{WRAPPER}} input[type="button"]:focus',
     51 			'{{WRAPPER}} input[type="submit"]:hover',
     52 			'{{WRAPPER}} input[type="submit"]:focus',
     53 			'{{WRAPPER}} .elementor-button:hover',
     54 			'{{WRAPPER}} .elementor-button:focus',
     55 		];
     56 
     57 		$button_selector = implode( ',', $button_selectors );
     58 		$button_hover_selector = implode( ',', $button_hover_selectors );
     59 
     60 		$this->start_controls_section(
     61 			'section_buttons',
     62 			[
     63 				'label' => esc_html__( 'Buttons', 'elementor' ),
     64 				'tab' => $this->get_id(),
     65 			]
     66 		);
     67 
     68 		$this->add_default_globals_notice();
     69 
     70 		$this->add_group_control(
     71 			Group_Control_Typography::get_type(),
     72 			[
     73 				'label' => esc_html__( 'Typography', 'elementor' ),
     74 				'name' => 'button_typography',
     75 				'selector' => $button_selector,
     76 			]
     77 		);
     78 
     79 		$this->add_group_control(
     80 			Group_Control_Text_Shadow::get_type(),
     81 			[
     82 				'name' => 'button_text_shadow',
     83 				'selector' => $button_selector,
     84 			]
     85 		);
     86 
     87 		$this->start_controls_tabs( 'tabs_button_style' );
     88 
     89 		$this->start_controls_tab(
     90 			'tab_button_normal',
     91 			[
     92 				'label' => esc_html__( 'Normal', 'elementor' ),
     93 			]
     94 		);
     95 
     96 		$this->add_control(
     97 			'button_text_color',
     98 			[
     99 				'label' => esc_html__( 'Text Color', 'elementor' ),
    100 				'type' => Controls_Manager::COLOR,
    101 				'dynamic' => [],
    102 				'selectors' => [
    103 					$button_selector => 'color: {{VALUE}};',
    104 				],
    105 			]
    106 		);
    107 
    108 		$this->add_group_control(
    109 			Group_Control_Background::get_type(),
    110 			[
    111 				'name' => 'button_background',
    112 				'types' => [ 'classic', 'gradient' ],
    113 				'exclude' => [ 'image' ],
    114 				'selector' => $button_selector,
    115 				'fields_options' => [
    116 					'background' => [
    117 						'default' => 'classic',
    118 					],
    119 					'color' => [
    120 						'dynamic' => [],
    121 					],
    122 					'color_b' => [
    123 						'dynamic' => [],
    124 					],
    125 				],
    126 			]
    127 		);
    128 
    129 		$this->add_group_control(
    130 			Group_Control_Box_Shadow::get_type(),
    131 			[
    132 				'name' => 'button_box_shadow',
    133 				'selector' => $button_selector,
    134 			]
    135 		);
    136 
    137 		$this->add_group_control(
    138 			Group_Control_Border::get_type(),
    139 			[
    140 				'name' => 'button_border',
    141 				'selector' => $button_selector,
    142 				'fields_options' => [
    143 					'color' => [
    144 						'dynamic' => [],
    145 					],
    146 				],
    147 			]
    148 		);
    149 
    150 		$this->add_control(
    151 			'button_border_radius',
    152 			[
    153 				'label' => esc_html__( 'Border Radius', 'elementor' ),
    154 				'type' => Controls_Manager::DIMENSIONS,
    155 				'size_units' => [ 'px', '%' ],
    156 				'selectors' => [
    157 					$button_selector => 'border-radius: {{TOP}}{{UNIT}} {{RIGHT}}{{UNIT}} {{BOTTOM}}{{UNIT}} {{LEFT}}{{UNIT}};',
    158 				],
    159 			]
    160 		);
    161 
    162 		$this->end_controls_tab();
    163 
    164 		$this->start_controls_tab(
    165 			'tab_button_hover',
    166 			[
    167 				'label' => esc_html__( 'Hover', 'elementor' ),
    168 			]
    169 		);
    170 
    171 		$this->add_control(
    172 			'button_hover_text_color',
    173 			[
    174 				'label' => esc_html__( 'Text Color', 'elementor' ),
    175 				'type' => Controls_Manager::COLOR,
    176 				'dynamic' => [],
    177 				'selectors' => [
    178 					$button_hover_selector => 'color: {{VALUE}};',
    179 				],
    180 			]
    181 		);
    182 
    183 		$this->add_group_control(
    184 			Group_Control_Background::get_type(),
    185 			[
    186 				'name' => 'button_hover_background',
    187 				'types' => [ 'classic', 'gradient' ],
    188 				'exclude' => [ 'image' ],
    189 				'selector' => $button_hover_selector,
    190 				'fields_options' => [
    191 					'background' => [
    192 						'default' => 'classic',
    193 					],
    194 					'color' => [
    195 						'dynamic' => [],
    196 					],
    197 					'color_b' => [
    198 						'dynamic' => [],
    199 					],
    200 				],
    201 			]
    202 		);
    203 
    204 		$this->add_group_control(
    205 			Group_Control_Box_Shadow::get_type(),
    206 			[
    207 				'name' => 'button_hover_box_shadow',
    208 				'selector' => $button_hover_selector,
    209 			]
    210 		);
    211 
    212 		$this->add_group_control(
    213 			Group_Control_Border::get_type(),
    214 			[
    215 				'name' => 'button_hover_border',
    216 				'selector' => $button_hover_selector,
    217 				'fields_options' => [
    218 					'color' => [
    219 						'dynamic' => [],
    220 					],
    221 				],
    222 			]
    223 		);
    224 
    225 		$this->add_control(
    226 			'button_hover_border_radius',
    227 			[
    228 				'label' => esc_html__( 'Border Radius', 'elementor' ),
    229 				'type' => Controls_Manager::DIMENSIONS,
    230 				'size_units' => [ 'px', '%' ],
    231 				'selectors' => [
    232 					$button_hover_selector => 'border-radius: {{TOP}}{{UNIT}} {{RIGHT}}{{UNIT}} {{BOTTOM}}{{UNIT}} {{LEFT}}{{UNIT}};',
    233 				],
    234 			]
    235 		);
    236 
    237 		$this->end_controls_tab();
    238 
    239 		$this->end_controls_tabs();
    240 
    241 		$this->add_responsive_control(
    242 			'button_padding',
    243 			[
    244 				'label' => esc_html__( 'Padding', 'elementor' ),
    245 				'type' => Controls_Manager::DIMENSIONS,
    246 				'size_units' => [ 'px', 'em', '%' ],
    247 				'selectors' => [
    248 					$button_selector => 'padding: {{TOP}}{{UNIT}} {{RIGHT}}{{UNIT}} {{BOTTOM}}{{UNIT}} {{LEFT}}{{UNIT}};',
    249 				],
    250 				'separator' => 'before',
    251 			]
    252 		);
    253 
    254 		$this->end_controls_section();
    255 	}
    256 }