PluginProbe
Elementor Website Builder – more than just a page builder / 3.28.4
Elementor Website Builder – more than just a page builder v3.28.4
4.3.0-beta2 4.3.0-beta1 4.2.4 4.2.3 4.2.2 4.2.1 4.2.0 4.1.5 4.2.0-beta2 4.2.0-dev2 4.2.0-beta1 4.1.4 4.1.3 4.1.2 4.1.1 4.1.0 4.1.0-beta3 4.1.0-dev3 4.0.9 4.1.0-beta2 4.1.0-dev2 4.0.8 4.1.0-beta1 4.1.0-dev1 4.0.7 All 451 releases
elementor / modules / atomic-widgets / elements / atomic-button / atomic-button.php

atomic-button.php in Elementor Website Builder – more than just a page builder 3.28.4, at modules/atomic-widgets/elements/atomic-button/atomic-button.php

130 lines 3.8 KB
No matching file
Up and down to move Enter to open Esc to close
Raw Download Zip
1 <?php
2
3 namespace Elementor\Modules\AtomicWidgets\Elements\Atomic_Button;
4
5 use Elementor\Modules\AtomicWidgets\Controls\Types\Text_Control;
6 use Elementor\Modules\AtomicWidgets\Elements\Atomic_Widget_Base;
7 use Elementor\Modules\AtomicWidgets\Controls\Section;
8 use Elementor\Modules\AtomicWidgets\Controls\Types\Link_Control;
9 use Elementor\Modules\AtomicWidgets\Elements\Has_Template;
10 use Elementor\Modules\AtomicWidgets\PropTypes\Background_Prop_Type;
11 use Elementor\Modules\AtomicWidgets\PropTypes\Classes_Prop_Type;
12 use Elementor\Modules\AtomicWidgets\PropTypes\Color_Prop_Type;
13 use Elementor\Modules\AtomicWidgets\PropTypes\Link_Prop_Type;
14 use Elementor\Modules\AtomicWidgets\PropTypes\Dimensions_Prop_Type;
15 use Elementor\Modules\AtomicWidgets\PropTypes\Primitives\String_Prop_Type;
16 use Elementor\Modules\AtomicWidgets\PropTypes\Size_Prop_Type;
17 use Elementor\Modules\AtomicWidgets\Styles\Style_Definition;
18 use Elementor\Modules\AtomicWidgets\Styles\Style_Variant;
19 use Elementor\Modules\WpRest\Classes\WP_Post;
20
21 if ( ! defined( 'ABSPATH' ) ) {
22 exit;
23 }
24
25 class Atomic_Button extends Atomic_Widget_Base {
26 use Has_Template;
27
28 public static function get_element_type(): string {
29 return 'a-button';
30 }
31
32 public function get_title() {
33 return esc_html__( 'Atomic Button', 'elementor' );
34 }
35
36 public function get_icon() {
37 return 'eicon-e-button';
38 }
39
40 protected static function define_props_schema(): array {
41 return [
42 'classes' => Classes_Prop_Type::make()
43 ->default( [] ),
44
45 'text' => String_Prop_Type::make()
46 ->default( __( 'Click here', 'elementor' ) ),
47
48 'link' => Link_Prop_Type::make(),
49 ];
50 }
51
52 protected function define_atomic_controls(): array {
53 return [
54 Section::make()
55 ->set_label( __( 'Content', 'elementor' ) )
56 ->set_items( [
57 Text_Control::bind_to( 'text' )
58 ->set_label( __( 'Button text', 'elementor' ) )
59 ->set_placeholder( __( 'Type your button text here', 'elementor' ) ),
60
61 Link_Control::bind_to( 'link' ),
62 ] ),
63 ];
64 }
65
66 protected function define_base_styles(): array {
67 $color_value = Color_Prop_Type::generate( 'white' );
68 $font_family_value = String_Prop_Type::generate( 'Poppins' );
69 $font_size_value = Size_Prop_Type::generate( [
70 'size' => 16,
71 'unit' => 'px',
72 ] );
73 $background_color_value = Background_Prop_Type::generate( [
74 'color' => Color_Prop_Type::generate( '#375EFB' ),
75 ] );
76 $display_value = String_Prop_Type::generate( 'inline-block' );
77 $padding_value = Dimensions_Prop_Type::generate( [
78 'top' => Size_Prop_Type::generate( [
79 'size' => 12,
80 'unit' => 'px',
81 ]),
82 'right' => Size_Prop_Type::generate( [
83 'size' => 24,
84 'unit' => 'px',
85 ]),
86 'bottom' => Size_Prop_Type::generate( [
87 'size' => 12,
88 'unit' => 'px',
89 ]),
90 'left' => Size_Prop_Type::generate( [
91 'size' => 24,
92 'unit' => 'px',
93 ]),
94 ]);
95 $border_radius_value = Size_Prop_Type::generate( [
96 'size' => 2,
97 'unit' => 'px',
98 ] );
99 $border_width_value = Size_Prop_Type::generate( [
100 'size' => 0,
101 'unit' => 'px',
102 ] );
103 $text_align_value = String_Prop_Type::generate( 'center' );
104 $font_weight_value = String_Prop_Type::generate( '500' );
105
106 return [
107 'base' => Style_Definition::make()
108 ->add_variant(
109 Style_Variant::make()
110 ->add_prop( 'color', $color_value )
111 ->add_prop( 'font-family', $font_family_value )
112 ->add_prop( 'font-size', $font_size_value )
113 ->add_prop( 'background', $background_color_value )
114 ->add_prop( 'display', $display_value )
115 ->add_prop( 'font-weight', $font_weight_value )
116 ->add_prop( 'padding', $padding_value )
117 ->add_prop( 'text-align', $text_align_value )
118 ->add_prop( 'border-radius', $border_radius_value )
119 ->add_prop( 'border-width', $border_width_value )
120 ),
121 ];
122 }
123
124 protected function get_templates(): array {
125 return [
126 'elementor/elements/atomic-button' => __DIR__ . '/atomic-button.html.twig',
127 ];
128 }
129 }
130