PluginProbe
Elementor Website Builder – more than just a page builder / 3.30.1
Elementor Website Builder – more than just a page builder v3.30.1
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 / styles / style-schema.php

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

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