PluginProbe
Elementor Website Builder – more than just a page builder / 3.29.0-dev4
Elementor Website Builder – more than just a page builder v3.29.0-dev4
4.3.4 4.3.3 4.3.2 4.3.1 4.3.0 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 All 457 releases
elementor / modules / atomic-widgets / styles / style-schema.php

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

289 lines 7.5 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
17 if ( ! defined( 'ABSPATH' ) ) {
18 exit; // Exit if accessed directly.
19 }
20
21 class Style_Schema {
22 public static function get() {
23 return apply_filters( 'elementor/atomic-widgets/styles/schema', static::get_style_schema() );
24 }
25
26 public static function get_style_schema(): array {
27 return array_merge(
28 self::get_size_props(),
29 self::get_position_props(),
30 self::get_typography_props(),
31 self::get_spacing_props(),
32 self::get_border_props(),
33 self::get_background_props(),
34 self::get_effects_props(),
35 self::get_layout_props(),
36 self::get_alignment_props(),
37 );
38 }
39
40 private static function get_size_props() {
41 return [
42 'width' => Union_Prop_Type::make()
43 ->add_prop_type( Size_Prop_Type::make() )
44 ->add_prop_type( String_Prop_Type::make()->enum( [ 'auto' ] ) ),
45 'height' => Union_Prop_Type::make()
46 ->add_prop_type( Size_Prop_Type::make() )
47 ->add_prop_type( String_Prop_Type::make()->enum( [ 'auto' ] ) ),
48 'min-width' => Union_Prop_Type::make()
49 ->add_prop_type( Size_Prop_Type::make() )
50 ->add_prop_type( String_Prop_Type::make()->enum( [ 'auto' ] ) ),
51 'min-height' => Union_Prop_Type::make()
52 ->add_prop_type( Size_Prop_Type::make() )
53 ->add_prop_type( String_Prop_Type::make()->enum( [ 'auto' ] ) ),
54 'max-width' => Size_Prop_Type::make(),
55 'max-height' => Size_Prop_Type::make(),
56 'overflow' => String_Prop_Type::make()->enum([
57 'visible',
58 'hidden',
59 'auto',
60 ]),
61 ];
62 }
63
64 private static function get_position_props() {
65 return [
66 'position' => String_Prop_Type::make()->enum([
67 'static',
68 'relative',
69 'absolute',
70 'fixed',
71 'sticky',
72 ]),
73 'inset-block-start' => Union_Prop_Type::make()
74 ->add_prop_type( Size_Prop_Type::make() )
75 ->add_prop_type( String_Prop_Type::make()->enum( [ 'auto' ] ) ),
76 'inset-inline-end' => Union_Prop_Type::make()
77 ->add_prop_type( Size_Prop_Type::make() )
78 ->add_prop_type( String_Prop_Type::make()->enum( [ 'auto' ] ) ),
79 'inset-block-end' => Union_Prop_Type::make()
80 ->add_prop_type( Size_Prop_Type::make() )
81 ->add_prop_type( String_Prop_Type::make()->enum( [ 'auto' ] ) ),
82 'inset-inline-start' => Union_Prop_Type::make()
83 ->add_prop_type( Size_Prop_Type::make() )
84 ->add_prop_type( String_Prop_Type::make()->enum( [ 'auto' ] ) ),
85 'z-index' => Number_Prop_Type::make(),
86 ];
87 }
88
89 private static function get_typography_props() {
90 return [
91 'font-family' => String_Prop_Type::make(),
92 'font-weight' => String_Prop_Type::make()->enum([
93 '100',
94 '200',
95 '300',
96 '400',
97 '500',
98 '600',
99 '700',
100 '800',
101 '900',
102 'normal',
103 'bold',
104 'bolder',
105 'lighter',
106 ]),
107 'font-size' => Size_Prop_Type::make(),
108 'color' => Color_Prop_Type::make(),
109 'letter-spacing' => Size_Prop_Type::make(),
110 'word-spacing' => Size_Prop_Type::make(),
111 'line-height' => Size_Prop_Type::make(),
112 'text-align' => String_Prop_Type::make()->enum([
113 'start',
114 'center',
115 'end',
116 'justify',
117 ]),
118 'font-style' => String_Prop_Type::make()->enum([
119 'normal',
120 'italic',
121 'oblique',
122 ]),
123 // TODO: validate text-decoration in more specific way [EDS-524]
124 'text-decoration' => String_Prop_Type::make(),
125 'text-transform' => String_Prop_Type::make()->enum([
126 'none',
127 'capitalize',
128 'uppercase',
129 'lowercase',
130 ]),
131 'direction' => String_Prop_Type::make()->enum([
132 'ltr',
133 'rtl',
134 ]),
135 'stroke' => Stroke_Prop_Type::make(),
136 'all' => String_Prop_Type::make()->enum([
137 'initial',
138 'inherit',
139 'unset',
140 'revert',
141 'revert-layer',
142 ]),
143 'cursor' => String_Prop_Type::make()->enum([
144 'pointer',
145 ]),
146 ];
147 }
148
149 private static function get_spacing_props() {
150 return [
151 'padding' => Union_Prop_Type::make()
152 ->add_prop_type( Dimensions_Prop_Type::make() )
153 ->add_prop_type( Size_Prop_Type::make() ),
154 'margin' => Union_Prop_Type::make()
155 ->add_prop_type( Dimensions_Prop_Type::make() )
156 ->add_prop_type( Size_Prop_Type::make() )
157 ->add_prop_type( String_Prop_Type::make()->enum( [ 'auto' ] ) ),
158 ];
159 }
160
161 private static function get_border_props() {
162 return [
163 'border-radius' => Union_Prop_Type::make()
164 ->add_prop_type( Size_Prop_Type::make() )
165 ->add_prop_type( Border_Radius_Prop_Type::make() ),
166 'border-width' => Union_Prop_Type::make()
167 ->add_prop_type( Size_Prop_Type::make() )
168 ->add_prop_type( Border_Width_Prop_Type::make() ),
169 'border-color' => Color_Prop_Type::make(),
170 'border-style' => String_Prop_Type::make()->enum([
171 'none',
172 'hidden',
173 'dotted',
174 'dashed',
175 'solid',
176 'double',
177 'groove',
178 'ridge',
179 'inset',
180 'outset',
181 ]),
182 ];
183 }
184
185 private static function get_background_props() {
186 return [
187 'background' => Background_Prop_Type::make(),
188 ];
189 }
190
191 private static function get_effects_props() {
192 return [
193 'box-shadow' => Box_Shadow_Prop_Type::make(),
194 ];
195 }
196
197 private static function get_layout_props() {
198 return [
199 'display' => String_Prop_Type::make()->enum([
200 'block',
201 'inline',
202 'inline-block',
203 'flex',
204 'inline-flex',
205 'grid',
206 'inline-grid',
207 'flow-root',
208 'none',
209 'contents',
210 ]),
211 'flex-direction' => String_Prop_Type::make()->enum([
212 'row',
213 'row-reverse',
214 'column',
215 'column-reverse',
216 ]),
217 'gap' => Union_Prop_Type::make()
218 ->add_prop_type( Layout_Direction_Prop_Type::make() )
219 ->add_prop_type( Size_Prop_Type::make() ),
220 'flex-wrap' => String_Prop_Type::make()->enum([
221 'wrap',
222 'nowrap',
223 'wrap-reverse',
224 ]),
225 'flex-grow' => Number_Prop_Type::make(),
226 'flex-shrink' => Number_Prop_Type::make(),
227 'flex-basis' => Union_Prop_Type::make()
228 ->add_prop_type( Size_Prop_Type::make() )
229 ->add_prop_type( String_Prop_Type::make()->enum( [ 'auto' ] ) ),
230 ];
231 }
232
233 private static function get_alignment_props() {
234 return [
235 'justify-content' => String_Prop_Type::make()->enum([
236 'center',
237 'start',
238 'end',
239 'flex-start',
240 'flex-end',
241 'left',
242 'right',
243 'normal',
244 'space-between',
245 'space-around',
246 'space-evenly',
247 'stretch',
248 ]),
249 'align-content' => String_Prop_Type::make()->enum([
250 'center',
251 'start',
252 'end',
253 'space-between',
254 'space-around',
255 'space-evenly',
256 ]),
257 'align-items' => String_Prop_Type::make()->enum([
258 'normal',
259 'stretch',
260 'center',
261 'start',
262 'end',
263 'flex-start',
264 'flex-end',
265 'self-start',
266 'self-end',
267 'anchor-center',
268 ]),
269 'align-self' => String_Prop_Type::make()->enum([
270 'auto',
271 'normal',
272 'center',
273 'start',
274 'end',
275 'self-start',
276 'self-end',
277 'flex-start',
278 'flex-end',
279 'anchor-center',
280 'baseline',
281 'first baseline',
282 'last baseline',
283 'stretch',
284 ]),
285 'order' => Number_Prop_Type::make(),
286 ];
287 }
288 }
289