PluginProbe
aBlocks – Gutenberg Blocks, User Dashboard Builder, Popup Builder, Form Builder & Animation Builder / 2.8.0
aBlocks – Gutenberg Blocks, User Dashboard Builder, Popup Builder, Form Builder & Animation Builder v2.8.0
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 1.2.0 1.2.1 All 78 releases
ablocks / includes / controls / range.php

range.php in aBlocks – Gutenberg Blocks, User Dashboard Builder, Popup Builder, Form Builder & Animation Builder 2.8.0, at includes/controls/range.php

206 lines 5.5 KB
No matching file
Up and down to move Enter to open Esc to close
Raw Download Zip
1 <?php
2 namespace ABlocks\Controls;
3
4 if ( ! defined( 'ABSPATH' ) ) {
5 exit;
6 }
7
8 use ABlocks\Helper;
9
10 class Range {
11
12 public static function get_attribute_default_value( $args ) {
13
14 $unitObject = $args['hasUnit'] ? [
15 $args['attributeObjectKey'] . 'Unit' => $args['unitDefaultValue'],
16 $args['attributeObjectKey'] . 'UnitTablet' => '',
17 $args['attributeObjectKey'] . 'UnitMobile' => '',
18 ] : [];
19
20 if ( $args['isResponsive'] ) {
21 return array_merge([
22 $args['attributeObjectKey'] => $args['defaultValue'],
23 $args['attributeObjectKey'] . 'Tablet' => $args['defaultValueTablet'],
24 $args['attributeObjectKey'] . 'Mobile' => $args['defaultValueMobile']
25 ], $unitObject);
26 } elseif ( ! $args['isResponsive'] && $args['hasUnit'] ) {
27 return array_merge([
28 $args['attributeObjectKey'] => $args['defaultValue'],
29 $args['attributeObjectKey'] . 'Unit' => $args['unitDefaultValue']
30 ], $unitObject);
31 }
32
33 return $args['defaultValue'];
34 }
35
36 public static function get_attribute( $args ) {
37 $defaults = [
38 'attributeName' => '',
39 'isResponsive' => false,
40 'defaultValue' => '',
41 'defaultValueTablet' => '',
42 'defaultValueMobile' => '',
43 'hasUnit' => false,
44 'unitDefaultValue' => 'px',
45 'attributeObjectKey' => 'value',
46 ];
47
48 $args = wp_parse_args( $args, $defaults );
49
50 if ( $args['isResponsive'] ) {
51 return [
52 $args['attributeName'] => [
53 'type' => 'object',
54 'default' => self::get_attribute_default_value( $args )
55 ]
56 ];
57 } elseif ( ! $args['isResponsive'] && $args['hasUnit'] ) {
58 return [
59 $args['attributeName'] => [
60 'type' => 'object',
61 'default' => self::get_attribute_default_value( $args )
62 ]
63 ];
64 }
65
66 return [
67 $args['attributeName'] => [
68 'type' => 'number',
69 'default' => $args['defaultValue']
70 ]
71 ];
72 }
73
74 public static function get_css( $args ) {
75 if ( ! isset( $args['property'] ) || empty( $args['property'] ) ) {
76 return [];
77 }
78
79 // Set default values for missing arguments
80 $args = wp_parse_args( $args, [
81 'attributeValue' => '',
82 'isResponsive' => false,
83 'defaultValue' => '',
84 'defaultValueTablet' => '',
85 'defaultValueMobile' => '',
86 'hasUnit' => false,
87 'unitDefaultValue' => 'px',
88 'attributeObjectKey' => 'value',
89 'device' => '',
90 ]);
91
92 $value = $args['attributeValue'];
93 $css = [];
94
95 // �
96 Basic non-responsive + non-unit handling
97 if ( ! $args['isResponsive'] && ! $args['hasUnit'] ) {
98 if ( $args['property'] === 'value' ) {
99 $css['value'] = $value;
100 $css['valueUnit'] = $args['unitDefaultValue'];
101 } else {
102 $css[ $args['property'] ] = $value . $args['unitDefaultValue'];
103 }
104 return $css;
105 }
106
107 // �
108 Get values per device
109 $desktop_key = $args['attributeObjectKey'];
110 $tablet_key = $args['attributeObjectKey'] . 'Tablet';
111 $mobile_key = $args['attributeObjectKey'] . 'Mobile';
112
113 $desktop_val = ! empty( $value[ $desktop_key ] ) ? $value[ $desktop_key ] : '';
114 $tablet_val = ! empty( $value[ $tablet_key ] ) ? $value[ $tablet_key ] : '';
115 $mobile_val = ! empty( $value[ $mobile_key ] ) ? $value[ $mobile_key ] : '';
116
117 $device_value = '';
118
119 switch ( $args['device'] ) {
120 case 'Mobile':
121 if ( $mobile_val !== '' ) {
122 $device_value = $mobile_val;
123 } elseif ( $args['defaultValueMobile'] !== '' ) {
124 $device_value = $args['defaultValueMobile'];
125 } elseif ( $tablet_val !== '' ) {
126 $device_value = $tablet_val;
127 } elseif ( $args['defaultValueTablet'] !== '' ) {
128 $device_value = $args['defaultValueTablet'];
129 } elseif ( $desktop_val !== '' ) {
130 $device_value = $desktop_val;
131 } else {
132 $device_value = $args['defaultValue'];
133 }
134 break;
135
136 case 'Tablet':
137 if ( $tablet_val !== '' ) {
138 $device_value = $tablet_val;
139 } elseif ( $args['defaultValueTablet'] !== '' ) {
140 $device_value = $args['defaultValueTablet'];
141 } elseif ( $desktop_val !== '' ) {
142 $device_value = $desktop_val;
143 } else {
144 $device_value = $args['defaultValue'];
145 }
146 break;
147
148 default: // Desktop
149 if ( $desktop_val !== '' ) {
150 $device_value = $desktop_val;
151 } else {
152 $device_value = $args['defaultValue'];
153 }
154 break;
155 }//end switch
156
157 // �
158 If value exists, apply unit and return
159 if ( $device_value !== '' ) {
160 $unit = self::get_unit( [
161 'attributeValue' => $value,
162 'attributeObjectKey' => $args['attributeObjectKey'],
163 'unitDefaultValue' => $args['unitDefaultValue'],
164 'device' => $args['device'],
165 ] );
166
167 if ( $args['property'] === 'value' ) {
168 $css['value'] = $device_value;
169 $css['valueUnit'] = $unit;
170 } else {
171 $css[ $args['property'] ] = $device_value . $unit;
172 }
173 }
174
175 return $css;
176 }
177
178
179 public static function get_unit( $args ) {
180 $defaultUnit = $args['unitDefaultValue'];
181 $value = $args['attributeValue'];
182 $device = $args['device'];
183 $keyPrefix = $args['attributeObjectKey'] . 'Unit';
184
185 // Retrieve units with fallback to default
186 $unitDesktop = Helper::get_array_value( $value, $keyPrefix, $defaultUnit ); // Desktop
187 $unitTablet = Helper::get_array_value( $value, $keyPrefix . 'Tablet', $unitDesktop ); // Tablet inherits from Desktop
188 $unitMobile = Helper::get_array_value( $value, $keyPrefix . 'Mobile', $unitTablet ); // Mobile inherits from Tablet
189
190 // Return the appropriate unit based on the device
191 if ( '' === $device ) {
192 return $unitDesktop; // Desktop
193 }
194
195 if ( 'Tablet' === $device ) {
196 return $unitTablet; // Tablet
197 }
198
199 if ( 'Mobile' === $device ) {
200 return $unitMobile; // Mobile
201 }
202
203 return $defaultUnit; // Default fallback
204 }
205 }
206