Passed
Push — develop ( 36eccf...39ad60 )
by Paul
13:49
created

BricksSiteReviewsForm   A

Complexity

Total Complexity 4

Size/Duplication

Total Lines 299
Duplicated Lines 0 %

Test Coverage

Coverage 0%

Importance

Changes 0
Metric Value
wmc 4
eloc 213
dl 0
loc 299
ccs 0
cts 289
cp 0
rs 10
c 0
b 0
f 0

3 Methods

Rating   Name   Duplication   Size   Complexity  
B designConfig() 0 281 1
A shortcodeClass() 0 3 1
A render() 0 9 2
1
<?php
2
3
namespace GeminiLabs\SiteReviews\Integrations\Bricks\Elements;
4
5
use GeminiLabs\SiteReviews\Integrations\Bricks\BricksElement;
6
use GeminiLabs\SiteReviews\Shortcodes\SiteReviewsFormShortcode;
7
8
class BricksSiteReviewsForm extends BricksElement
9
{
10
    public function designConfig(): array
11
    {
12
        $config = [
13
            'style_col_gap' => [
14
                'css' => [
15
                    [
16
                        'selector' => '.glsr',
17
                        'property' => '--glsr-form-col-gap',
18
                    ],
19
                ],
20
                'group' => 'design',
21
                'hasDynamicData' => false,
22
                'hasVariables' => true,
23
                'inline' => true,
24
                'label' => esc_html_x('Column Gap', 'admin-text', 'site-reviews'),
25
                'placeholder' => '',
26
                'tab' => 'content',
27
                'themeStyle' => true,
28
                'type' => 'number',
29
                'units' => true,
30
            ],
31
            'style_row_gap' => [
32
                'css' => [
33
                    [
34
                        'selector' => '.glsr',
35
                        'property' => '--glsr-form-row-gap',
36
                    ],
37
                ],
38
                'group' => 'design',
39
                'hasDynamicData' => false,
40
                'hasVariables' => true,
41
                'inline' => true,
42
                'label' => esc_html_x('Row Gap', 'admin-text', 'site-reviews'),
43
                'placeholder' => '',
44
                'tab' => 'content',
45
                'themeStyle' => true,
46
                'type' => 'number',
47
                'units' => true,
48
            ],
49
            'style_field_separator' => [
50
                'group' => 'design',
51
                'label' => esc_html_x('Fields', 'admin-text', 'site-reviews'),
52
                'tab' => 'content',
53
                'themeStyle' => true,
54
                'type' => 'separator',
55
            ],
56
            'style_field_background_color' => [
57
                'css' => [
58
                    [
59
                        'selector' => '.glsr-textarea, .glsr-input',
60
                        'property' => 'background-color',
61
                    ],
62
                ],
63
                'group' => 'design',
64
                'label' => esc_html_x('Background color', 'admin-text', 'site-reviews'),
65
                'tab' => 'content',
66
                'themeStyle' => true,
67
                'type' => 'color',
68
            ],
69
            'style_field_border' => [
70
                'css' => [
71
                    [
72
                        'selector' => '.glsr-textarea, .glsr-input',
73
                        'property' => 'border',
74
                    ],
75
                ],
76
                'group' => 'design',
77
                'label' => esc_html_x('Border', 'admin-text', 'site-reviews'),
78
                'tab' => 'content',
79
                'themeStyle' => true,
80
                'type' => 'border',
81
            ],
82
            'style_field_typography' => [
83
                'css' => [
84
                    [
85
                        'selector' => '.glsr-textarea, .glsr-input, .glsr-toggle label, .glsr-toggle',
86
                        'property' => 'font',
87
                    ],
88
                ],
89
                'group' => 'design',
90
                'label' => esc_html_x('Typography', 'admin-text', 'site-reviews'),
91
                'tab' => 'content',
92
                'themeStyle' => true,
93
                'type' => 'typography',
94
            ],
95
            'style_field_label_typography' => [
96
                'css' => [
97
                    [
98
                        'selector' => 'label.glsr-label',
99
                        'property' => 'font',
100
                    ],
101
                ],
102
                'group' => 'design',
103
                'label' => esc_html_x('Labels', 'admin-text', 'site-reviews'),
104
                'tab' => 'content',
105
                'themeStyle' => true,
106
                'type' => 'typography',
107
            ],
108
            'style_field_placeholder' => [
109
                'css' => [
110
                    [
111
                        'selector' => '::placeholder',
112
                        'property' => 'font',
113
                    ],
114
                ],
115
                'group' => 'design',
116
                'label' => esc_html_x('Placeholder', 'admin-text', 'site-reviews'),
117
                'tab' => 'content',
118
                'themeStyle' => true,
119
                'type' => 'typography',
120
            ],
121
            'style_rating_separator' => [
122
                'group' => 'design',
123
                'label' => esc_html_x('Rating Field', 'admin-text', 'site-reviews'),
124
                'tab' => 'content',
125
                'themeStyle' => true,
126
                'type' => 'separator',
127
            ],
128
            'style_rating_color' => [
129
                'css' => [
130
                    [
131
                        'selector' => '.glsr:not([data-theme])',
132
                        'property' => '--glsr-form-star-bg',
133
                    ],
134
                    [
135
                        'selector' => '.glsr:not([data-theme]) .glsr-field:not(.glsr-field-is-invalid) .glsr-star-rating--stars > span',
136
                        'property' => 'background',
137
                        'value' => 'var(--glsr-form-star-bg)',
138
                    ],
139
                    [
140
                        'selector' => '.glsr:not([data-theme]) .glsr-field:not(.glsr-field-is-invalid) .glsr-star-rating--stars > span',
141
                        'property' => 'mask-image',
142
                        'value' => 'var(--glsr-star-empty)',
143
                    ],
144
                    [
145
                        'selector' => '.glsr:not([data-theme]) .glsr-field:not(.glsr-field-is-invalid) .glsr-star-rating--stars > span',
146
                        'property' => 'mask-size',
147
                        'value' => '100%',
148
                    ],
149
                    [
150
                        'selector' => '.glsr:not([data-theme]) .glsr-field .glsr-star-rating--stars > span:is(.gl-active, .gl-active.gl-selected)',
151
                        'property' => 'background',
152
                        'value' => 'var(--glsr-form-star-bg)',
153
                    ],
154
                    [
155
                        'selector' => '.glsr:not([data-theme]) .glsr-field .glsr-star-rating--stars > span:is(.gl-active, .gl-active.gl-selected)',
156
                        'property' => 'mask-image',
157
                        'value' => 'var(--glsr-star-full)',
158
                    ],
159
                ],
160
                'group' => 'design',
161
                'label' => esc_html_x('Star Color', 'admin-text', 'site-reviews'),
162
                'tab' => 'content',
163
                'themeStyle' => true,
164
                'type' => 'color',
165
            ],
166
            'style_rating_size' => [
167
                'css' => [
168
                    [
169
                        'selector' => '.glsr',
170
                        'property' => '--glsr-form-star',
171
                    ],
172
                ],
173
                'group' => 'design',
174
                'hasDynamicData' => false,
175
                'hasVariables' => true,
176
                'inline' => true,
177
                'label' => esc_html_x('Star Size', 'admin-text', 'site-reviews'),
178
                'placeholder' => '',
179
                'tab' => 'content',
180
                'themeStyle' => true,
181
                'type' => 'number',
182
                'units' => true,
183
            ],
184
            'style_rating_gap' => [
185
                'css' => [
186
                    [
187
                        'selector' => '.glsr-field-rating span[data-rating]',
188
                        'property' => 'column-gap',
189
                    ],
190
                ],
191
                'group' => 'design',
192
                'hasDynamicData' => false,
193
                'hasVariables' => true,
194
                'inline' => true,
195
                'label' => esc_html_x('Star Spacing', 'admin-text', 'site-reviews'),
196
                'placeholder' => '',
197
                'tab' => 'content',
198
                'themeStyle' => true,
199
                'type' => 'number',
200
                'units' => true,
201
            ],
202
            'style_toggle_separator' => [
203
                'group' => 'design',
204
                'label' => esc_html_x('Toggle Field', 'admin-text', 'site-reviews'),
205
                'tab' => 'content',
206
                'themeStyle' => true,
207
                'type' => 'separator',
208
            ],
209
            'style_toggle_color' => [
210
                'css' => [
211
                    [
212
                        'selector' => '.glsr-field-toggle',
213
                        'property' => '--glsr-toggle-bg-1',
214
                    ],
215
                ],
216
                'group' => 'design',
217
                'label' => esc_html_x('Toggle Color', 'admin-text', 'site-reviews'),
218
                'tab' => 'content',
219
                'themeStyle' => true,
220
                'type' => 'color',
221
            ],
222
            'style_button_separator' => [
223
                'group' => 'design',
224
                'label' => esc_html_x('Submit Button', 'admin-text', 'site-reviews'),
225
                'tab' => 'content',
226
                'themeStyle' => true,
227
                'type' => 'separator',
228
            ],
229
            'style_button_size' => [
230
                'group' => 'design',
231
                'inline' => true,
232
                'label' => esc_html_x('Size', 'admin-text', 'site-reviews'),
233
                'options' => $this->control_options['buttonSizes'] ?? [],
234
                'placeholder' => esc_html_x('Default', 'admin-text', 'site-reviews'),
235
                'tab' => 'content',
236
                'themeStyle' => true,
237
                'type' => 'select',
238
            ],
239
            'style_button_preset' => [
240
                'default' => 'primary',
241
                'group' => 'design',
242
                'inline' => true,
243
                'label' => esc_html_x('Style', 'admin-text', 'site-reviews'),
244
                'options' => $this->control_options['styles'] ?? [],
245
                'placeholder' => esc_html_x('None', 'admin-text', 'site-reviews'),
246
                'tab' => 'content',
247
                'themeStyle' => true,
248
                'type' => 'select',
249
            ],
250
            'style_button_background_color' => [
251
                'css' => [
252
                    [
253
                        'selector' => '.bricks-button',
254
                        'property' => 'background-color',
255
                    ],
256
                ],
257
                'group' => 'design',
258
                'label' => esc_html_x('Background', 'admin-text', 'site-reviews'),
259
                'tab' => 'content',
260
                'themeStyle' => true,
261
                'type' => 'color',
262
            ],
263
            'style_button_border' => [
264
                'css' => [
265
                    [
266
                        'selector' => '.bricks-button',
267
                        'property' => 'border',
268
                    ],
269
                ],
270
                'group' => 'design',
271
                'label' => esc_html_x('Border', 'admin-text', 'site-reviews'),
272
                'tab' => 'content',
273
                'themeStyle' => true,
274
                'type' => 'border',
275
            ],
276
            'style_button_typography' => [
277
                'css' => [
278
                    [
279
                        'selector' => '.bricks-button',
280
                        'property' => 'font',
281
                    ],
282
                ],
283
                'group' => 'design',
284
                'label' => esc_html_x('Typography', 'admin-text', 'site-reviews'),
285
                'tab' => 'content',
286
                'themeStyle' => true,
287
                'type' => 'typography',
288
            ],
289
        ];
290
        return $config;
291
    }
292
293
    public function render()
294
    {
295
        if (!$this->shortcodeInstance()->hasVisibleFields($this->settings)) {
296
            $this->render_element_placeholder([
297
                'title' => esc_html_x('You have hidden all of the fields.', 'admin-text', 'site-reviews'),
298
            ]);
299
            return;
300
        }
301
        parent::render();
302
    }
303
304
    public static function shortcodeClass(): string
305
    {
306
        return SiteReviewsFormShortcode::class;
307
    }
308
}
309