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

BricksSiteReview   A

Complexity

Total Complexity 4

Size/Duplication

Total Lines 248
Duplicated Lines 0 %

Test Coverage

Coverage 0%

Importance

Changes 0
Metric Value
wmc 4
eloc 160
dl 0
loc 248
ccs 0
cts 238
cp 0
rs 10
c 0
b 0
f 0

3 Methods

Rating   Name   Duplication   Size   Complexity  
A shortcodeClass() 0 3 1
A render() 0 9 2
B designConfig() 0 230 1
1
<?php
2
3
namespace GeminiLabs\SiteReviews\Integrations\Bricks\Elements;
4
5
use GeminiLabs\SiteReviews\Integrations\Bricks\BricksElement;
6
use GeminiLabs\SiteReviews\Shortcodes\SiteReviewShortcode;
7
8
class BricksSiteReview extends BricksElement
9
{
10
    public function designConfig(): array
11
    {
12
        $config = [
13
            'style_align' => [
14
                'css' => [
15
                    [
16
                        'selector' => '.glsr:not([data-theme]) .glsr-review',
17
                        'property' => 'text-align',
18
                    ],
19
                    [
20
                        'selector' => '.glsr:not([data-theme]) .nav-links',
21
                        'property' => 'text-align',
22
                    ],
23
                    [
24
                        'selector' => '.glsr:not([data-theme]) .glsr-ajax-loadmore',
25
                        'property' => 'display',
26
                        'value' => 'flex',
27
                    ],
28
                    [
29
                        'required' => 'left',
30
                        'selector' => '.glsr:not([data-theme]) .glsr-review',
31
                        'property' => 'justify-content',
32
                        'value' => 'start',
33
                    ],
34
                    [
35
                        'required' => 'left',
36
                        'selector' => '.glsr:not([data-theme]) .glsr-review-rating',
37
                        'property' => 'flex',
38
                        'value' => '0',
39
                    ],
40
                    [
41
                        'required' => 'left',
42
                        'selector' => '.glsr:not([data-theme]) .glsr-review-date',
43
                        'property' => 'flex',
44
                        'value' => '1',
45
                    ],
46
                    [
47
                        'required' => 'left',
48
                        'selector' => '.glsr:not([data-theme]) .glsr-review-date',
49
                        'property' => 'justify-content',
50
                        'value' => 'start',
51
                    ],
52
                    [
53
                        'required' => 'left',
54
                        'selector' => '.glsr:not([data-theme]) .glsr-review-actions',
55
                        'property' => 'justify-content',
56
                        'value' => 'start',
57
                    ],
58
                    [
59
                        'required' => 'left',
60
                        'selector' => '.glsr:not([data-theme]) .glsr-review-author_actions',
61
                        'property' => 'justify-content',
62
                        'value' => 'start',
63
                    ],
64
                    [
65
                        'required' => 'left',
66
                        'selector' => '.glsr:not([data-theme]) .glsr-ajax-loadmore',
67
                        'property' => 'justify-content',
68
                        'value' => 'start',
69
                    ],
70
                    [
71
                        'required' => 'center',
72
                        'selector' => '.glsr:not([data-theme]) .glsr-review',
73
                        'property' => 'justify-content',
74
                    ],
75
                    [
76
                        'required' => 'center',
77
                        'selector' => '.glsr:not([data-theme]) .glsr-review-rating',
78
                        'property' => 'flex',
79
                        'value' => 'auto',
80
                    ],
81
                    [
82
                        'required' => 'center',
83
                        'selector' => '.glsr:not([data-theme]) .glsr-review-rating',
84
                        'property' => 'justify-content',
85
                        'value' => 'end',
86
                    ],
87
                    [
88
                        'required' => 'center',
89
                        'selector' => '.glsr:not([data-theme]) .glsr-review-date',
90
                        'property' => 'flex',
91
                        'value' => 'auto',
92
                    ],
93
                    [
94
                        'required' => 'center',
95
                        'selector' => '.glsr:not([data-theme]) .glsr-review-date',
96
                        'property' => 'justify-content',
97
                        'value' => 'start',
98
                    ],
99
                    [
100
                        'required' => 'center',
101
                        'selector' => '.glsr:not([data-theme]) .glsr-review-actions',
102
                        'property' => 'justify-content',
103
                    ],
104
                    [
105
                        'required' => 'center',
106
                        'selector' => '.glsr:not([data-theme]) .glsr-review-author_actions',
107
                        'property' => 'justify-content',
108
                    ],
109
                    [
110
                        'required' => 'center',
111
                        'selector' => '.glsr:not([data-theme]) .glsr-ajax-loadmore',
112
                        'property' => 'justify-content',
113
                    ],
114
                    [
115
                        'required' => 'right',
116
                        'selector' => '.glsr:not([data-theme]) .glsr-review',
117
                        'property' => 'justify-content',
118
                        'value' => 'end',
119
                    ],
120
                    [
121
                        'required' => 'right',
122
                        'selector' => '.glsr:not([data-theme]) .glsr-review-rating',
123
                        'property' => 'flex',
124
                        'value' => '1',
125
                    ],
126
                    [
127
                        'required' => 'right',
128
                        'selector' => '.glsr:not([data-theme]) .glsr-review-rating',
129
                        'property' => 'justify-content',
130
                        'value' => 'end',
131
                    ],
132
                    [
133
                        'required' => 'right',
134
                        'selector' => '.glsr:not([data-theme]) .glsr-review-date',
135
                        'property' => 'flex',
136
                        'value' => '0',
137
                    ],
138
                    [
139
                        'required' => 'right',
140
                        'selector' => '.glsr:not([data-theme]) .glsr-review-actions',
141
                        'property' => 'justify-content',
142
                        'value' => 'end',
143
                    ],
144
                    [
145
                        'required' => 'right',
146
                        'selector' => '.glsr:not([data-theme]) .glsr-review-author_actions',
147
                        'property' => 'justify-content',
148
                        'value' => 'end',
149
                    ],
150
                    [
151
                        'required' => 'right',
152
                        'selector' => '.glsr:not([data-theme]) .glsr-ajax-loadmore',
153
                        'property' => 'justify-content',
154
                        'value' => 'end',
155
                    ],
156
                ],
157
                'exclude' => ['auto', 'justify'],
158
                'group' => 'design',
159
                'inline' => true,
160
                'label' => esc_html_x('Alignment', 'admin-text', 'site-reviews'),
161
                'rerender' => true,
162
                'tab' => 'content',
163
                'themeStyle' => true,
164
                'type' => 'text-align',
165
            ],
166
            'style_heading' => [
167
                'css' => [
168
                    [
169
                        'selector' => '.glsr:not([data-theme]) h2, .glsr:not([data-theme]) h3, .glsr:not([data-theme]) h4',
170
                        'property' => 'font',
171
                    ],
172
                ],
173
                'group' => 'design',
174
                'label' => esc_html_x('Heading', 'admin-text', 'site-reviews'),
175
                'tab' => 'content',
176
                'themeStyle' => true,
177
                'type' => 'typography',
178
            ],
179
            'style_text' => [
180
                'css' => [
181
                    [
182
                        'selector' => '.glsr:not([data-theme])',
183
                        'property' => 'font',
184
                    ],
185
                ],
186
                'group' => 'design',
187
                'label' => esc_html_x('Text', 'admin-text', 'site-reviews'),
188
                'tab' => 'content',
189
                'themeStyle' => true,
190
                'type' => 'typography',
191
            ],
192
            'style_rating_size' => [
193
                'css' => [
194
                    [
195
                        'selector' => '.glsr:not([data-theme])',
196
                        'property' => '--glsr-review-star',
197
                    ],
198
                ],
199
                'group' => 'design',
200
                'hasDynamicData' => false,
201
                'hasVariables' => true,
202
                'inline' => true,
203
                'label' => esc_html_x('Star Size', 'admin-text', 'site-reviews'),
204
                'placeholder' => '',
205
                'tab' => 'content',
206
                'themeStyle' => true,
207
                'type' => 'number',
208
                'units' => true,
209
            ],
210
            'style_rating_color' => [
211
                'css' => [
212
                    [
213
                        'selector' => '.glsr:not([data-theme]) .glsr-star',
214
                        'property' => 'mask-size',
215
                        'value' => '100%',
216
                    ],
217
                    [
218
                        'selector' => '.glsr:not([data-theme]) .glsr-star',
219
                        'property' => 'background',
220
                    ],
221
                    [
222
                        'selector' => '.glsr:not([data-theme]) .glsr-star-full',
223
                        'property' => 'mask-image',
224
                        'value' => 'var(--glsr-star-full)',
225
                    ],
226
                    [
227
                        'selector' => '.glsr:not([data-theme]) .glsr-star-empty',
228
                        'property' => 'mask-image',
229
                        'value' => 'var(--glsr-star-empty)',
230
                    ],
231
                ],
232
                'group' => 'design',
233
                'label' => esc_html_x('Star Color', 'admin-text', 'site-reviews'),
234
                'tab' => 'content',
235
                'themeStyle' => true,
236
                'type' => 'color',
237
            ],
238
        ];
239
        return $config;
240
    }
241
242
    public function render()
243
    {
244
        if (!$this->shortcodeInstance()->hasVisibleFields($this->settings)) {
245
            $this->render_element_placeholder([
246
                'title' => esc_html_x('You have hidden all of the fields.', 'admin-text', 'site-reviews'),
247
            ]);
248
            return;
249
        }
250
        parent::render();
251
    }
252
253
    public static function shortcodeClass(): string
254
    {
255
        return SiteReviewShortcode::class;
256
    }
257
}
258