PluginProbe
Elementor Website Builder – more than just a page builder / 3.29.0-beta4
Elementor Website Builder – more than just a page builder v3.29.0-beta4
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 4.1.0-beta2 All 456 releases
← All changes | modules/atomic-widgets/styles/style-schema.php +90 -207 4.0.9 → 3.29.0-beta4 View file →
@@ -1,11 +1,7 @@
1 1 <?php
2 -
3 2 namespace Elementor\Modules\AtomicWidgets\Styles;
4 3
5 -use Elementor\Modules\AtomicWidgets\DynamicTags\Dynamic_Prop_Types_Mapping;
6 -use Elementor\Modules\AtomicWidgets\PropTypes\Background_Image_Overlay_Prop_Type;
7 -use Elementor\Modules\AtomicWidgets\PropTypes\Background_Overlay_Prop_Type;
8 4 use Elementor\Modules\AtomicWidgets\PropTypes\Background_Prop_Type;
9 5 use Elementor\Modules\AtomicWidgets\PropTypes\Box_Shadow_Prop_Type;
10 6 use Elementor\Modules\AtomicWidgets\PropTypes\Border_Radius_Prop_Type;
11 7 use Elementor\Modules\AtomicWidgets\PropTypes\Border_Width_Prop_Type;
@@ -10,21 +6,14 @@
10 6 use Elementor\Modules\AtomicWidgets\PropTypes\Border_Radius_Prop_Type;
11 7 use Elementor\Modules\AtomicWidgets\PropTypes\Border_Width_Prop_Type;
12 8 use Elementor\Modules\AtomicWidgets\PropTypes\Color_Prop_Type;
13 9 use Elementor\Modules\AtomicWidgets\PropTypes\Dimensions_Prop_Type;
14 -use Elementor\Modules\AtomicWidgets\PropTypes\Filters\Backdrop_Filter_Prop_Type;
15 -use Elementor\Modules\AtomicWidgets\PropTypes\Filters\Filter_Prop_Type;
16 10 use Elementor\Modules\AtomicWidgets\PropTypes\Layout_Direction_Prop_Type;
17 -use Elementor\Modules\AtomicWidgets\PropTypes\Position_Prop_Type;
18 11 use Elementor\Modules\AtomicWidgets\PropTypes\Primitives\Number_Prop_Type;
19 12 use Elementor\Modules\AtomicWidgets\PropTypes\Size_Prop_Type;
20 13 use Elementor\Modules\AtomicWidgets\PropTypes\Primitives\String_Prop_Type;
21 14 use Elementor\Modules\AtomicWidgets\PropTypes\Stroke_Prop_Type;
22 -use Elementor\Modules\AtomicWidgets\PropTypes\Transform\Transform_Prop_Type;
23 -use Elementor\Modules\AtomicWidgets\PropTypes\Transition_Prop_Type;
24 15 use Elementor\Modules\AtomicWidgets\PropTypes\Union_Prop_Type;
25 -use Elementor\Modules\AtomicWidgets\PropTypes\Flex_Prop_Type;
26 -use Elementor\Modules\AtomicWidgets\PropDependencies\Manager as Dependency_Manager;
27 16
28 17 if ( ! defined( 'ABSPATH' ) ) {
29 18 exit; // Exit if accessed directly.
30 19 }
@@ -44,75 +33,64 @@
44 33 self::get_background_props(),
45 34 self::get_effects_props(),
46 35 self::get_layout_props(),
47 36 self::get_alignment_props(),
48 - self::get_special_props(),
49 37 );
50 38 }
51 39
52 40 private static function get_size_props() {
53 41 return [
54 - 'width' => Size_Prop_Type::make()->description( 'The width of the element' ),
55 - 'height' => Size_Prop_Type::make()->description( 'The height of the element' ),
56 - 'min-width' => Size_Prop_Type::make()->description( 'The minimum width of the element' ),
57 - 'min-height' => Size_Prop_Type::make()->description( 'The minimum height of the element' ),
58 - 'max-width' => Size_Prop_Type::make()->description( 'The maximum width of the element' ),
59 - 'max-height' => Size_Prop_Type::make()->description( 'The maximum height of the element' ),
60 - 'overflow' => String_Prop_Type::make()->enum( [
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([
61 57 'visible',
62 58 'hidden',
63 59 'auto',
64 - ] )->description( 'The overflow CSS property. CSS values: visible, hidden, auto' ),
65 - 'aspect-ratio' => String_Prop_Type::make()->description( 'Equivalent to CSS aspect-ration property' ),
66 - 'object-fit' => String_Prop_Type::make()->enum( [
67 - 'fill',
68 - 'cover',
69 - 'contain',
70 - 'none',
71 - 'scale-down',
72 - ] )->description( 'The object-fit CSS. CSS values: fill, cover, contain, none, scale-down' ),
73 - 'object-position' => Union_Prop_Type::make()
74 - ->add_prop_type( String_Prop_Type::make()->enum( Position_Prop_Type::get_position_enum_values() ) )
75 - ->add_prop_type( Position_Prop_Type::make() )
76 - ->set_dependencies(
77 - Dependency_Manager::make( Dependency_Manager::RELATION_AND )
78 - ->where( [
79 - 'operator' => 'ne',
80 - 'path' => [ 'object-fit' ],
81 - 'value' => 'fill',
82 - ] )
83 - ->where( [
84 - 'operator' => 'exists',
85 - 'path' => [ 'object-fit' ],
86 - ] )
87 - ->get()
88 - ),
60 + ]),
89 61 ];
90 62 }
91 63
92 64 private static function get_position_props() {
93 65 return [
94 - 'position' => String_Prop_Type::make()->enum( [
66 + 'position' => String_Prop_Type::make()->enum([
95 67 'static',
96 68 'relative',
97 69 'absolute',
98 70 'fixed',
99 71 'sticky',
100 - ] )->description( 'The CSS position property specifies the type of positioning method used for an element (static, relative, absolute, fixed, or sticky).' ),
101 - 'inset-block-start' => Size_Prop_Type::make()->description( 'Size PropType for the inset-block-start CSS property' ),
102 - 'inset-inline-end' => Size_Prop_Type::make()->description( 'Size PropType for the inset-inline-end CSS property' ),
103 - 'inset-block-end' => Size_Prop_Type::make()->description( 'Size PropType for the inset-block-end CSS property' ),
104 - 'inset-inline-start' => Size_Prop_Type::make()->description( 'Size PropType for the inset-inline-start CSS property' ),
105 - 'z-index' => Number_Prop_Type::make()
106 - ->description( 'The z-index CSS property sets the z-order of a positioned element and its descendants or flex items. It specifies the stack order of elements.' ),
107 - 'scroll-margin-top' => Size_Prop_Type::make()->units( Size_Constants::anchor_offset() ),
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(),
108 86 ];
109 87 }
110 88
111 89 private static function get_typography_props() {
112 90 return [
113 - 'font-family' => String_Prop_Type::make()->description( 'The font family of the text content.' ),
114 - 'font-weight' => String_Prop_Type::make()->enum( [
91 + 'font-family' => String_Prop_Type::make(),
92 + 'font-weight' => String_Prop_Type::make()->enum([
115 93 '100',
116 94 '200',
117 95 '300',
118 96 '400',
@@ -124,66 +102,48 @@
124 102 'normal',
125 103 'bold',
126 104 'bolder',
127 105 'lighter',
128 - ] )
129 - ->description( 'The weight (or boldness) of the font. Values should match css font-weight specifications.' ),
130 - 'font-size' => Size_Prop_Type::make()->units( Size_Constants::typography() )->description( 'The font size in Size PropType Format' ),
131 - 'color' => Color_Prop_Type::make()
132 - ->description( 'The text color, specified as a hex code, rgb(a), hsl(a), or a standard css color name.' ),
133 - 'letter-spacing' => Size_Prop_Type::make()->units( Size_Constants::typography() )->description( 'The spacing between letters in Size PropType format' ),
134 - 'word-spacing' => Size_Prop_Type::make()->units( Size_Constants::typography() )->description( 'The spacing between words in Size PropType format' ),
135 - 'column-count' => Number_Prop_Type::make()->description( 'The number of columns the text content should be divided into.' ),
136 - 'column-gap' => Size_Prop_Type::make()
137 - ->set_dependencies(
138 - Dependency_Manager::make()
139 - ->where( [
140 - 'operator' => 'gte',
141 - 'path' => [ 'column-count' ],
142 - 'value' => 1,
143 - ] )
144 - ->get()
145 - ),
146 - 'line-height' => Size_Prop_Type::make()->units( Size_Constants::typography() )->description( 'The line height of the text content in Size PropType format' ),
147 - 'text-align' => String_Prop_Type::make()->enum( [
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([
148 113 'start',
149 114 'center',
150 115 'end',
151 116 'justify',
152 - ] )
153 - ->description( 'The horizontal alignment of the text content. Allowed values: start, center, end, justify.' ),
154 - 'font-style' => String_Prop_Type::make()->enum( [
117 + ]),
118 + 'font-style' => String_Prop_Type::make()->enum([
155 119 'normal',
156 120 'italic',
157 121 'oblique',
158 - ] )
159 - ->description( 'The font style of the text content. CSS values: normal, italic, oblique' ),
122 + ]),
160 123 // TODO: validate text-decoration in more specific way [EDS-524]
161 - 'text-decoration' => String_Prop_Type::make()
162 - ->description( 'The text decoration style. CSS values like: none, underline, overline, line-through, blink, etc.' ),
163 - 'text-transform' => String_Prop_Type::make()->enum( [
124 + 'text-decoration' => String_Prop_Type::make(),
125 + 'text-transform' => String_Prop_Type::make()->enum([
164 126 'none',
165 127 'capitalize',
166 128 'uppercase',
167 129 'lowercase',
168 - ] )
169 - ->description( 'Controls the capitalization of text. CSS values: none, capitalize, uppercase, lowercase' ),
170 - 'direction' => String_Prop_Type::make()->enum( [
130 + ]),
131 + 'direction' => String_Prop_Type::make()->enum([
171 132 'ltr',
172 133 'rtl',
173 - ] )->description( 'The text direction. CSS values: ltr (left to right), rtl (right to left)' ),
134 + ]),
174 135 'stroke' => Stroke_Prop_Type::make(),
175 - 'all' => String_Prop_Type::make()->enum( [
136 + 'all' => String_Prop_Type::make()->enum([
176 137 'initial',
177 138 'inherit',
178 139 'unset',
179 140 'revert',
180 141 'revert-layer',
181 - ] )->description( 'The all CSS property. CSS values: initial, inherit, unset, revert, revert-layer' ),
182 - 'cursor' => String_Prop_Type::make()->enum( [
142 + ]),
143 + 'cursor' => String_Prop_Type::make()->enum([
183 144 'pointer',
184 - ] )
185 - ->description( 'The type of cursor to be displayed when pointing over the element. E.g., pointer.' ),
145 + ]),
186 146 ];
187 147 }
188 148
189 149 private static function get_spacing_props() {
@@ -188,21 +148,14 @@
188 148
189 149 private static function get_spacing_props() {
190 150 return [
191 151 'padding' => Union_Prop_Type::make()
192 - ->add_prop_type( Dimensions_Prop_Type::make_with_units( Size_Constants::spacing() ) )
193 - ->add_prop_type(
194 - Size_Prop_Type::make()
195 - ->units( Size_Constants::spacing() )
196 - ->description( 'Padding css in Size PropType format' )
197 - ),
152 + ->add_prop_type( Dimensions_Prop_Type::make() )
153 + ->add_prop_type( Size_Prop_Type::make() ),
198 154 'margin' => Union_Prop_Type::make()
199 - ->add_prop_type( Dimensions_Prop_Type::make_with_units( Size_Constants::spacing_margin() ) )
200 - ->add_prop_type(
201 - Size_Prop_Type::make()
202 - ->units( Size_Constants::spacing_margin() )
203 - ->description( 'Margin css in Size PropType format' )
204 - ),
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' ] ) ),
205 158 ];
206 159 }
207 160
208 161 private static function get_border_props() {
@@ -207,15 +160,15 @@
207 160
208 161 private static function get_border_props() {
209 162 return [
210 163 'border-radius' => Union_Prop_Type::make()
211 - ->add_prop_type( Border_Radius_Prop_Type::make() )
212 - ->add_prop_type( Size_Prop_Type::make()->units( Size_Constants::border() ) ),
164 + ->add_prop_type( Size_Prop_Type::make() )
165 + ->add_prop_type( Border_Radius_Prop_Type::make() ),
213 166 'border-width' => Union_Prop_Type::make()
214 - ->add_prop_type( Border_Width_Prop_Type::make() )
215 - ->add_prop_type( Size_Prop_Type::make()->units( Size_Constants::border() ) ),
216 - 'border-color' => Color_Prop_Type::make()->description( 'The border color, specified as a hex code, rgb(a), hsl(a), or a standard css color name.' ),
217 - 'border-style' => String_Prop_Type::make()->enum( [
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([
218 171 'none',
219 172 'hidden',
220 173 'dotted',
221 174 'dashed',
@@ -224,77 +177,27 @@
224 177 'groove',
225 178 'ridge',
226 179 'inset',
227 180 'outset',
228 - ] )
229 - ->description( 'The border style in CSS values' ),
230 - 'outline-width' => Size_Prop_Type::make()
231 - ->units( Size_Constants::border() )
232 - ->description( 'The width of the outline in Size PropType format' ),
233 - 'outline-color' => Color_Prop_Type::make()->description( 'The color of the outline, specified as a hex code, rgb(a), hsl(a), or a standard css color name.' ),
234 - 'outline-style' => String_Prop_Type::make()->enum( [
235 - 'none',
236 - 'hidden',
237 - 'dotted',
238 - 'dashed',
239 - 'solid',
240 - 'double',
241 - 'groove',
242 - 'ridge',
243 - 'inset',
244 - 'outset',
245 - ] )->description( 'The outline style in CSS values' ),
246 - 'outline-offset' => Size_Prop_Type::make()->units( Size_Constants::border() )->description( 'The offset of the outline, specified as a length in Size PropType format' ),
247 -
181 + ]),
248 182 ];
249 183 }
250 184
251 185 private static function get_background_props() {
252 - // Background image overlay as an exception
253 - $background_prop_type = Background_Prop_Type::make();
254 - $bg_overlay_prop_type = $background_prop_type->get_shape_field( Background_Overlay_Prop_Type::get_key() );
255 - $bg_image_overlay_prop_type = $bg_overlay_prop_type->get_item_type()->get_prop_type( Background_Image_Overlay_Prop_Type::get_key() );
256 - Dynamic_Prop_Types_Mapping::make()->get_extended_schema( $bg_image_overlay_prop_type->get_shape() );
257 186 return [
258 - 'background' => $background_prop_type,
187 + 'background' => Background_Prop_Type::make(),
259 188 ];
260 189 }
261 190
262 191 private static function get_effects_props() {
263 192 return [
264 - 'mix-blend-mode' => String_Prop_Type::make()->enum( [
265 - 'normal',
266 - 'multiply',
267 - 'screen',
268 - 'overlay',
269 - 'darken',
270 - 'lighten',
271 - 'color-dodge',
272 - 'saturation',
273 - 'color',
274 - 'difference',
275 - 'exclusion',
276 - 'hue',
277 - 'luminosity',
278 - 'soft-light',
279 - 'hard-light',
280 - 'color-burn',
281 - ] )->description( 'Applied as mix-blend mode css effect.' ),
282 193 'box-shadow' => Box_Shadow_Prop_Type::make(),
283 - 'opacity' => Size_Prop_Type::make()
284 - ->description( 'The opacity of the element, specified as a percentage between 0 (fully transparent) and 100 (fully opaque).' )
285 - ->units( Size_Constants::opacity() )
286 - ->default_unit( Size_Constants::UNIT_PERCENT ),
287 - 'filter' => Filter_Prop_Type::make(),
288 - 'backdrop-filter' => Backdrop_Filter_Prop_Type::make(),
289 - 'transform' => Transform_Prop_Type::make(),
290 - 'transition' => Transition_Prop_Type::make(),
291 194 ];
292 195 }
293 196
294 197 private static function get_layout_props() {
295 198 return [
296 - 'display' => String_Prop_Type::make()->enum( [
199 + 'display' => String_Prop_Type::make()->enum([
297 200 'block',
298 201 'inline',
299 202 'inline-block',
300 203 'flex',
@@ -303,32 +206,34 @@
303 206 'inline-grid',
304 207 'flow-root',
305 208 'none',
306 209 'contents',
307 - ] )->description( 'The CSS display property defines the display behavior (the type of rendering box) of an element.' ),
308 - 'flex-direction' => String_Prop_Type::make()
309 - ->description( 'The direction of the contained items.' )
310 - ->enum( [
311 - 'row',
312 - 'row-reverse',
313 - 'column',
314 - 'column-reverse',
315 - ] ),
210 + ]),
211 + 'flex-direction' => String_Prop_Type::make()->enum([
212 + 'row',
213 + 'row-reverse',
214 + 'column',
215 + 'column-reverse',
216 + ]),
316 217 'gap' => Union_Prop_Type::make()
317 218 ->add_prop_type( Layout_Direction_Prop_Type::make() )
318 - ->add_prop_type( Size_Prop_Type::make()->units( Size_Constants::layout() ) ),
319 - 'flex-wrap' => String_Prop_Type::make()->enum( [
219 + ->add_prop_type( Size_Prop_Type::make() ),
220 + 'flex-wrap' => String_Prop_Type::make()->enum([
320 221 'wrap',
321 222 'nowrap',
322 223 'wrap-reverse',
323 - ] )->description( 'Specifies whether the flex items should wrap or not. CSS values: wrap, nowrap, wrap-reverse' ),
324 - 'flex' => Flex_Prop_Type::make(),
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' ] ) ),
325 230 ];
326 231 }
327 232
328 233 private static function get_alignment_props() {
329 234 return [
330 - 'justify-content' => String_Prop_Type::make()->enum( [
235 + 'justify-content' => String_Prop_Type::make()->enum([
331 236 'center',
332 237 'start',
333 238 'end',
334 239 'flex-start',
@@ -339,32 +244,18 @@
339 244 'space-between',
340 245 'space-around',
341 246 'space-evenly',
342 247 'stretch',
343 - ] )
344 - ->description( 'Defines how the browser distributes space between and around content items along the main-axis of a flex container. CSS values: center, start, end, flex-start, flex-end, left, right, normal, space-between, space-around, space-evenly, stretch' ),
345 - 'justify-items' => String_Prop_Type::make()->enum( [
346 - 'normal',
347 - 'stretch',
248 + ]),
249 + 'align-content' => String_Prop_Type::make()->enum([
348 250 'center',
349 251 'start',
350 252 'end',
351 - 'flex-start',
352 - 'flex-end',
353 - 'left',
354 - 'right',
355 - 'anchor-center',
356 - ] )->description( 'Defines how the browser distributes space between and around content items along the inline axis of a grid container. CSS values: center, start, end, flex-start, flex-end, left, right' ),
357 - 'align-content' => String_Prop_Type::make()->enum( [
358 - 'center',
359 - 'start',
360 - 'end',
361 253 'space-between',
362 254 'space-around',
363 255 'space-evenly',
364 - ] )
365 - ->description( 'Aligns a flex container\'s lines within when there is extra space in the cross-axis. CSS values: center, start, end, space-between, space-around, space-evenly' ),
366 - 'align-items' => String_Prop_Type::make()->enum( [
256 + ]),
257 + 'align-items' => String_Prop_Type::make()->enum([
367 258 'normal',
368 259 'stretch',
369 260 'center',
370 261 'start',
@@ -373,10 +264,10 @@
373 264 'flex-end',
374 265 'self-start',
375 266 'self-end',
376 267 'anchor-center',
377 - ] )->description( 'Defines the default behavior for how flex items are laid out along the cross axis on the current line. CSS values: normal, stretch, center, start, end, flex-start, flex-end, self-start, self-end, anchor-center' ),
378 - 'align-self' => String_Prop_Type::make()->enum( [
268 + ]),
269 + 'align-self' => String_Prop_Type::make()->enum([
379 270 'auto',
380 271 'normal',
381 272 'center',
382 273 'start',
@@ -389,17 +280,9 @@
389 280 'baseline',
390 281 'first baseline',
391 282 'last baseline',
392 283 'stretch',
393 - ] )->description( 'Allows the default alignment (or the one specified by align-items) to be overridden for individual flex items. CSS values: auto, normal, center, start, end, self-start, self-end, flex-start, flex-end, anchor-center, baseline, first baseline, last baseline, stretch' ),
394 - 'order' => Number_Prop_Type::make()->description( 'Specifies the order of the flex items. Items with lower order values are displayed first.' ),
395 - ];
396 - }
397 -
398 - private static function get_special_props() {
399 - return [
400 - 'content' => String_Prop_Type::make()->description( 'The string content for pseudo-element content property' ),
401 - 'appearance' => String_Prop_Type::make()->enum( [ 'none', 'auto' ] )->description( 'The appearance of the element. CSS values: none, auto' ),
402 - 'clip-path' => String_Prop_Type::make()->description( 'The clip-path CSS property defines a shape to be used as clipping region.' ),
284 + ]),
285 + 'order' => Number_Prop_Type::make(),
403 286 ];
404 287 }
405 288 }