PluginProbe
aBlocks – Gutenberg Blocks, User Dashboard Builder, Popup Builder, Form Builder & Animation Builder / 2.13.0
aBlocks – Gutenberg Blocks, User Dashboard Builder, Popup Builder, Form Builder & Animation Builder v2.13.0
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 +35 -5 2.11.02.13.0 View file →
@@ -110,15 +110,25 @@
110 110 $desktop_key = $args['attributeObjectKey'];
111 111 $tablet_key = $args['attributeObjectKey'] . 'Tablet';
112 112 $mobile_key = $args['attributeObjectKey'] . 'Mobile';
113 113
114 - $desktop_val = ! empty( $value[ $desktop_key ] ) ? $value[ $desktop_key ] : '';
115 - $tablet_val = ! empty( $value[ $tablet_key ] ) ? $value[ $tablet_key ] : '';
116 - $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 );
117 119
118 120 $device_value = '';
119 121
120 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 +
121 131 case 'Mobile':
122 132 if ( $mobile_val !== '' ) {
123 133 $device_value = $mobile_val;
124 134 } elseif ( $args['defaultValueMobile'] !== '' ) {
@@ -145,10 +155,13 @@
145 155 $device_value = $args['defaultValue'];
146 156 }
147 157 break;
148 158
149 - default: // Desktop
150 - 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 !== '' ) {
151 164 $device_value = $desktop_val;
152 165 } else {
153 166 $device_value = $args['defaultValue'];
154 167 }
@@ -199,7 +212,24 @@
199 212 if ( 'Mobile' === $device ) {
200 213 return $unitMobile; // Mobile
201 214 }
202 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 +
203 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 ];
204 234 }
205 235 }