PluginProbe
aBlocks – Gutenberg Blocks, User Dashboard Builder, Popup Builder, Form Builder & Animation Builder / 2.14.0
aBlocks – Gutenberg Blocks, User Dashboard Builder, Popup Builder, Form Builder & Animation Builder v2.14.0
2.14.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 All 81 releases
← All changes | includes/controls/range.php +34 -90 2.13.1 → 2.14.0 View file →
@@ -105,72 +105,24 @@
105 105 }
106 106 return $css;
107 107 }
108 108
109 - // ✅ Get values per device
110 - $desktop_key = $args['attributeObjectKey'];
111 - $tablet_key = $args['attributeObjectKey'] . 'Tablet';
112 - $mobile_key = $args['attributeObjectKey'] . 'Mobile';
109 + // ✅ Resolve value by device and inheritance: the device's own value, then
110 + // its declared default (defaultValue / defaultValueTablet / …Mobile), then
111 + // the same for each containing wider device — custom breakpoints included.
112 + // Mirrors getCSS() in src/controls/range/helper.js.
113 + $device_defaults = [
114 + '' => $args['defaultValue'],
115 + 'Tablet' => $args['defaultValueTablet'],
116 + 'Mobile' => $args['defaultValueMobile'],
117 + ];
118 + $device_value = self::resolve( $args['device'], function ( $suffix ) use ( $value, $args, $device_defaults ) {
119 + $stored = self::get_filled_value( $value, $args['attributeObjectKey'] . $suffix );
120 + return Helper::has_responsive_value( $stored ) ? $stored : ( $device_defaults[ $suffix ] ?? '' );
121 + } );
113 122
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 );
119 -
120 - $device_value = '';
121 -
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 -
131 - case 'Mobile':
132 - if ( $mobile_val !== '' ) {
133 - $device_value = $mobile_val;
134 - } elseif ( $args['defaultValueMobile'] !== '' ) {
135 - $device_value = $args['defaultValueMobile'];
136 - } elseif ( $tablet_val !== '' ) {
137 - $device_value = $tablet_val;
138 - } elseif ( $args['defaultValueTablet'] !== '' ) {
139 - $device_value = $args['defaultValueTablet'];
140 - } elseif ( $desktop_val !== '' ) {
141 - $device_value = $desktop_val;
142 - } else {
143 - $device_value = $args['defaultValue'];
144 - }
145 - break;
146 -
147 - case 'Tablet':
148 - if ( $tablet_val !== '' ) {
149 - $device_value = $tablet_val;
150 - } elseif ( $args['defaultValueTablet'] !== '' ) {
151 - $device_value = $args['defaultValueTablet'];
152 - } elseif ( $desktop_val !== '' ) {
153 - $device_value = $desktop_val;
154 - } else {
155 - $device_value = $args['defaultValue'];
156 - }
157 - break;
158 -
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 !== '' ) {
164 - $device_value = $desktop_val;
165 - } else {
166 - $device_value = $args['defaultValue'];
167 - }
168 - break;
169 - }//end switch
170 -
171 123 // ✅ If value exists, apply unit and return
172 - if ( $device_value !== '' ) {
124 + if ( Helper::has_responsive_value( $device_value ) ) {
173 125 $unit = self::get_unit( [
174 126 'attributeValue' => $value,
175 127 'attributeObjectKey' => $args['attributeObjectKey'],
176 128 'unitDefaultValue' => $args['unitDefaultValue'],
@@ -189,38 +141,30 @@
189 141 }
190 142
191 143
192 144 public static function get_unit( $args ) {
193 - $defaultUnit = $args['unitDefaultValue'];
194 - $value = $args['attributeValue'];
195 - $device = $args['device'];
196 - $keyPrefix = $args['attributeObjectKey'] . 'Unit';
145 + $key_prefix = $args['attributeObjectKey'] . 'Unit';
146 + $value = $args['attributeValue'];
147 + $unit = self::resolve( $args['device'], function ( $suffix ) use ( $value, $key_prefix ) {
148 + return self::get_filled_value( $value, $key_prefix . $suffix );
149 + } );
150 + return Helper::has_responsive_value( $unit ) ? $unit : $args['unitDefaultValue'];
151 + }
197 152
198 - // Retrieve units with fallback to default
199 - $unitDesktop = Helper::get_array_value( $value, $keyPrefix, $defaultUnit ); // Desktop
200 - $unitTablet = Helper::get_array_value( $value, $keyPrefix . 'Tablet', $unitDesktop ); // Tablet inherits from Desktop
201 - $unitMobile = Helper::get_array_value( $value, $keyPrefix . 'Mobile', $unitTablet ); // Mobile inherits from Tablet
202 -
203 - // Return the appropriate unit based on the device
204 - if ( '' === $device ) {
205 - return $unitDesktop; // Desktop
153 + /**
154 + * The device's own value, else the nearest containing wider device's (see
155 + * Helper::get_responsive_ancestors()), as read by $read_at( $suffix ).
156 + * Returns null when nothing is set.
157 + */
158 + private static function resolve( $device, $read_at ) {
159 + $target = 'Desktop' === $device ? '' : (string) $device;
160 + foreach ( array_merge( [ $target ], Helper::get_responsive_ancestors( $target ) ) as $suffix ) {
161 + $v = $read_at( $suffix );
162 + if ( Helper::has_responsive_value( $v ) ) {
163 + return $v;
164 + }
206 165 }
207 -
208 - if ( 'Tablet' === $device ) {
209 - return $unitTablet; // Tablet
210 - }
211 -
212 - if ( 'Mobile' === $device ) {
213 - return $unitMobile; // Mobile
214 - }
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 -
222 - return $defaultUnit; // Default fallback
166 + return null;
223 167 }
224 168
225 169 /**
226 170 * A stored responsive member, or '' when it is missing, null or an empty