PluginProbe
aBlocks – Gutenberg Blocks, User Dashboard Builder, Popup Builder, Form Builder & Animation Builder / 2.13.1
aBlocks – Gutenberg Blocks, User Dashboard Builder, Popup Builder, Form Builder & Animation Builder v2.13.1
2.13.0 2.13.1 2.12.0 2.11.1 2.11.0 2.10.0 2.9.0 2.7.4 2.7.5 2.7.6 2.7.7 2.8.0 2.8.1 2.9.1 trunk 1.0 1.0-beta1 1.0-beta2 1.0-beta3 1.0.1 1.0.2 1.0.3 1.1.0 1.1.1 1.1.2 All 80 releases
← All changes | includes/controls/range.php +39 -6 2.10.02.13.1 View file →
@@ -96,9 +96,12 @@
96 96 if ( ! $args['isResponsive'] && ! $args['hasUnit'] ) {
97 97 if ( $args['property'] === 'value' ) {
98 98 $css['value'] = $value;
99 99 $css['valueUnit'] = $args['unitDefaultValue'];
100 - } else {
100 + } elseif ( '' !== (string) $value ) {
101 + // Skip when there's no value — otherwise we emit the unit alone
102 + // (e.g. "transition-duration:s"), invalid CSS that bloats every
103 + // block's generated stylesheet.
101 104 $css[ $args['property'] ] = $value . $args['unitDefaultValue'];
102 105 }
103 106 return $css;
104 107 }
@@ -107,15 +110,25 @@
107 110 $desktop_key = $args['attributeObjectKey'];
108 111 $tablet_key = $args['attributeObjectKey'] . 'Tablet';
109 112 $mobile_key = $args['attributeObjectKey'] . 'Mobile';
110 113
111 - $desktop_val = ! empty( $value[ $desktop_key ] ) ? $value[ $desktop_key ] : '';
112 - $tablet_val = ! empty( $value[ $tablet_key ] ) ? $value[ $tablet_key ] : '';
113 - $mobile_val = ! empty( $value[ $mobile_key ] ) ? $value[ $mobile_key ] : '';
114 + // A stored 0 is a real value (e.g. "top: 0" at Tablet), so only a missing
115 + // or empty-string key counts as unset — matching the editor helper.
116 + $desktop_val = self::get_filled_value( $value, $desktop_key );
117 + $tablet_val = self::get_filled_value( $value, $tablet_key );
118 + $mobile_val = self::get_filled_value( $value, $mobile_key );
114 119
115 120 $device_value = '';
116 121
117 122 switch ( $args['device'] ) {
123 + case '':
124 + if ( $desktop_val !== '' ) {
125 + $device_value = $desktop_val;
126 + } else {
127 + $device_value = $args['defaultValue'];
128 + }
129 + break;
130 +
118 131 case 'Mobile':
119 132 if ( $mobile_val !== '' ) {
120 133 $device_value = $mobile_val;
121 134 } elseif ( $args['defaultValueMobile'] !== '' ) {
@@ -142,10 +155,13 @@
142 155 $device_value = $args['defaultValue'];
143 156 }
144 157 break;
145 158
146 - default: // Desktop
147 - if ( $desktop_val !== '' ) {
159 + default: // Custom breakpoint suffix (e.g. "Bp1024")
160 + $custom_val = self::get_filled_value( $value, $desktop_key . $args['device'] );
161 + if ( $custom_val !== '' ) {
162 + $device_value = $custom_val;
163 + } elseif ( $desktop_val !== '' ) {
148 164 $device_value = $desktop_val;
149 165 } else {
150 166 $device_value = $args['defaultValue'];
151 167 }
@@ -196,7 +212,24 @@
196 212 if ( 'Mobile' === $device ) {
197 213 return $unitMobile; // Mobile
198 214 }
199 215
216 + if ( is_string( $device ) && '' !== $device ) {
217 + // Custom breakpoint inherits the desktop unit when it has none of its own.
218 + $unitCustom = self::get_filled_value( $value, $keyPrefix . $device );
219 + return '' !== $unitCustom ? $unitCustom : $unitDesktop;
220 + }
221 +
200 222 return $defaultUnit; // Default fallback
223 + }
224 +
225 + /**
226 + * A stored responsive member, or '' when it is missing, null or an empty
227 + * string. Unlike empty(), a 0 value is kept.
228 + */
229 + private static function get_filled_value( $value, $key ) {
230 + if ( ! is_array( $value ) || ! isset( $value[ $key ] ) || is_array( $value[ $key ] ) || '' === (string) $value[ $key ] ) {
231 + return '';
232 + }
233 + return $value[ $key ];
201 234 }
202 235 }