PluginProbe
Elementor Website Builder – more than just a page builder / 3.28.0-dev1
Elementor Website Builder – more than just a page builder v3.28.0-dev1
4.3.0-beta3 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 All 452 releases
elementor / modules / atomic-widgets / styles / style-schema.php

style-schema.php in Elementor Website Builder – more than just a page builder 3.28.0-dev1, at modules/atomic-widgets/styles/style-schema.php

245 lines 6.0 KB
No matching file
Up and down to move Enter to open Esc to close
Raw Download Zip
1 <?php
2 namespace Elementor\Modules\AtomicWidgets\Styles;
3
4 use Elementor\Modules\AtomicWidgets\PropTypes\Background_Prop_Type;
5 use Elementor\Modules\AtomicWidgets\PropTypes\Box_Shadow_Prop_Type;
6 use Elementor\Modules\AtomicWidgets\PropTypes\Border_Radius_Prop_Type;
7 use Elementor\Modules\AtomicWidgets\PropTypes\Border_Width_Prop_Type;
8 use Elementor\Modules\AtomicWidgets\PropTypes\Color_Prop_Type;
9 use Elementor\Modules\AtomicWidgets\PropTypes\Dimensions_Prop_Type;
10 use Elementor\Modules\AtomicWidgets\PropTypes\Layout_Direction_Prop_Type;
11 use Elementor\Modules\AtomicWidgets\PropTypes\Primitives\Number_Prop_Type;
12 use Elementor\Modules\AtomicWidgets\PropTypes\Size_Prop_Type;
13 use Elementor\Modules\AtomicWidgets\PropTypes\Primitives\String_Prop_Type;
14 use Elementor\Modules\AtomicWidgets\PropTypes\Stroke_Prop_Type;
15 use Elementor\Modules\AtomicWidgets\PropTypes\Union_Prop_Type;
16 use Elementor\Modules\AtomicWidgets\PropTypes\Gap_Prop_Type;
17
18 if ( ! defined( 'ABSPATH' ) ) {
19 exit; // Exit if accessed directly.
20 }
21
22 class Style_Schema {
23 public static function get() {
24 return array_merge(
25 self::get_size_props(),
26 self::get_position_props(),
27 self::get_typography_props(),
28 self::get_spacing_props(),
29 self::get_border_props(),
30 self::get_background_props(),
31 self::get_effects_props(),
32 self::get_layout_props(),
33 self::get_alignment_props(),
34 );
35 }
36
37 private static function get_size_props() {
38 return [
39 'width' => Size_Prop_Type::make(),
40 'height' => Size_Prop_Type::make(),
41 'min-width' => Size_Prop_Type::make(),
42 'min-height' => Size_Prop_Type::make(),
43 'max-width' => Size_Prop_Type::make(),
44 'max-height' => Size_Prop_Type::make(),
45 'overflow' => String_Prop_Type::make()->enum([
46 'visible',
47 'hidden',
48 'auto',
49 ]),
50 ];
51 }
52
53 private static function get_position_props() {
54 return [
55 'position' => String_Prop_Type::make()->enum([
56 'static',
57 'relative',
58 'absolute',
59 'fixed',
60 'sticky',
61 ]),
62 'top' => Size_Prop_Type::make(),
63 'right' => Size_Prop_Type::make(),
64 'bottom' => Size_Prop_Type::make(),
65 'left' => Size_Prop_Type::make(),
66 'z-index' => Number_Prop_Type::make(),
67 ];
68 }
69
70 private static function get_typography_props() {
71 return [
72 'font-family' => String_Prop_Type::make(),
73 'font-weight' => String_Prop_Type::make()->enum([
74 '100',
75 '200',
76 '300',
77 '400',
78 '500',
79 '600',
80 '700',
81 '800',
82 '900',
83 'normal',
84 'bold',
85 'bolder',
86 'lighter',
87 ]),
88 'font-size' => Size_Prop_Type::make(),
89 'color' => Color_Prop_Type::make(),
90 'letter-spacing' => Size_Prop_Type::make(),
91 'word-spacing' => Size_Prop_Type::make(),
92 'line-height' => Size_Prop_Type::make(),
93 'text-align' => String_Prop_Type::make()->enum([
94 'start',
95 'center',
96 'end',
97 'justify',
98 ]),
99 'font-style' => String_Prop_Type::make()->enum([
100 'normal',
101 'italic',
102 'oblique',
103 ]),
104 // TODO: validate text-decoration in more specific way [EDS-524]
105 'text-decoration' => String_Prop_Type::make(),
106 'text-transform' => String_Prop_Type::make()->enum([
107 'none',
108 'capitalize',
109 'uppercase',
110 'lowercase',
111 ]),
112 'direction' => String_Prop_Type::make()->enum([
113 'ltr',
114 'rtl',
115 ]),
116 '-webkit-text-stroke' => Stroke_Prop_Type::make(),
117 ];
118 }
119
120 private static function get_spacing_props() {
121 return [
122 'padding' => Union_Prop_Type::make()->add_prop_type( Dimensions_Prop_Type::make() )->add_prop_type( Size_Prop_Type::make() ),
123 'margin' => Union_Prop_Type::make()->add_prop_type( Dimensions_Prop_Type::make() )->add_prop_type( Size_Prop_Type::make() ),
124 ];
125 }
126
127 private static function get_border_props() {
128 return [
129 'border-radius' => Union_Prop_Type::make()->add_prop_type(
130 Size_Prop_Type::make()
131 )->add_prop_type(
132 Border_Radius_Prop_Type::make()
133 ),
134 'border-width' => Union_Prop_Type::make()->add_prop_type( Size_Prop_Type::make() )->add_prop_type( Border_Width_Prop_Type::make() ),
135 'border-color' => Color_Prop_Type::make(),
136 'border-style' => String_Prop_Type::make()->enum([
137 'none',
138 'hidden',
139 'dotted',
140 'dashed',
141 'solid',
142 'double',
143 'groove',
144 'ridge',
145 'inset',
146 'outset',
147 ]),
148 ];
149 }
150
151 private static function get_background_props() {
152 return [
153 'background' => Background_Prop_Type::make(),
154 ];
155 }
156
157 private static function get_effects_props() {
158 return [
159 'box-shadow' => Box_Shadow_Prop_Type::make(),
160 ];
161 }
162
163 private static function get_layout_props() {
164 return [
165 'display' => String_Prop_Type::make()->enum([
166 'block',
167 'inline',
168 'inline-block',
169 'flex',
170 'inline-flex',
171 'grid',
172 'inline-grid',
173 'flow-root',
174 'none',
175 'contents',
176 ]),
177 'flex-direction' => String_Prop_Type::make()->enum([
178 'row',
179 'row-reverse',
180 'column',
181 'column-reverse',
182 ]),
183 'gap' => Union_Prop_Type::make()
184 ->add_prop_type( Layout_Direction_Prop_Type::make() )
185 ->add_prop_type( Size_Prop_Type::make() ),
186 'flex-wrap' => String_Prop_Type::make()->enum([
187 'wrap',
188 'nowrap',
189 'wrap-reverse',
190 ]),
191 'flex-grow' => Number_Prop_Type::make(),
192 'flex-shrink' => Number_Prop_Type::make(),
193 'flex-basis' => Size_Prop_Type::make(),
194 ];
195 }
196
197 private static function get_alignment_props() {
198 return [
199 'justify-content' => String_Prop_Type::make()->enum([
200 'center',
201 'start',
202 'end',
203 'flex-start',
204 'flex-end',
205 'left',
206 'right',
207 'normal',
208 'space-between',
209 'space-around',
210 'space-evenly',
211 'stretch',
212 ]),
213 'align-items' => String_Prop_Type::make()->enum([
214 'normal',
215 'stretch',
216 'center',
217 'start',
218 'end',
219 'flex-start',
220 'flex-end',
221 'self-start',
222 'self-end',
223 'anchor-center',
224 ]),
225 'align-self' => String_Prop_Type::make()->enum([
226 'auto',
227 'normal',
228 'center',
229 'start',
230 'end',
231 'self-start',
232 'self-end',
233 'flex-start',
234 'flex-end',
235 'anchor-center',
236 'baseline',
237 'first baseline',
238 'last baseline',
239 'stretch',
240 ]),
241 'order' => Number_Prop_Type::make(),
242 ];
243 }
244 }
245