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
ablocks / includes / blocks / filterable-cards / block.php

block.php in aBlocks – Gutenberg Blocks, User Dashboard Builder, Popup Builder, Form Builder & Animation Builder 2.14.0, at includes/blocks/filterable-cards/block.php

404 lines 19.8 KB
No matching file
Up and down to move Enter to open Esc to close
Raw Download Zip
1 <?php
2 namespace ABlocks\Blocks\FilterableCards;
3
4 if ( ! defined( 'ABSPATH' ) ) {
5 exit;
6 }
7
8 use ABlocks\Classes\BlockBaseAbstract;
9 use ABlocks\Classes\CssGenerator;
10 use ABlocks\Controls\Typography;
11 use ABlocks\Controls\Border;
12 use ABlocks\Controls\Dimensions;
13 use ABlocks\Controls\Range;
14 use ABlocks\Controls\Alignment;
15 use ABlocks\Controls\BoxShadow;
16 use ABlocks\Classes\CssGeneratorV2;
17 use ABlocks\Controls\Color;
18
19
20 class Block extends BlockBaseAbstract {
21 protected $block_name = 'filterable-cards';
22
23 public function build_css_v1( $attributes ) {
24 $css_generator = new CssGenerator( $attributes, $this->block_name );
25
26 $css_generator->add_class_styles(
27 '{{WRAPPER}} .filterable-cards_filter , {{WRAPPER}} .filterable-cards-filter-wrap',
28 $this->get_filter_wrap_CSS( $attributes ),
29 $this->get_filter_wrap_CSS( $attributes, 'Tablet' ),
30 $this->get_filter_wrap_CSS( $attributes, 'Mobile' ),
31 $css_generator->custom_device_map( function ( $device ) use ( $attributes ) { return $this->get_filter_wrap_CSS( $attributes, $device ); } )
32 );
33 $css_generator->add_class_styles(
34 '{{WRAPPER}} .filterable-cards_filter .filterable-filter-button',
35 $this->get_filter_CSS( $attributes ),
36 $this->get_filter_CSS( $attributes, 'Tablet' ),
37 $this->get_filter_CSS( $attributes, 'Mobile' ),
38 $css_generator->custom_device_map( function ( $device ) use ( $attributes ) { return $this->get_filter_CSS( $attributes, $device ); } )
39 );
40 $css_generator->add_class_styles(
41 '{{WRAPPER}} .filterable-cards_filter .filterable-filter-button:hover',
42 $this->get_filter_hover_CSS( $attributes ),
43 $this->get_filter_hover_CSS( $attributes, 'Tablet' ),
44 $this->get_filter_hover_CSS( $attributes, 'Mobile' ),
45 $css_generator->custom_device_map( function ( $device ) use ( $attributes ) { return $this->get_filter_hover_CSS( $attributes, $device ); } )
46 );
47 $css_generator->add_class_styles(
48 '{{WRAPPER}} .filterable-cards-filter-wrap .filterable-cards_filter .filterable-search-toggle-btn , {{WRAPPER}} .filterable-cards-filter-wrap .filterable-searchInput',
49 $this->get_search_menu_CSS( $attributes ),
50 $this->get_search_menu_CSS( $attributes, 'Tablet' ),
51 $this->get_search_menu_CSS( $attributes, 'Mobile' ),
52 $css_generator->custom_device_map( function ( $device ) use ( $attributes ) { return $this->get_search_menu_CSS( $attributes, $device ); } )
53 );
54 $css_generator->add_class_styles(
55 '{{WRAPPER}} .filterable-cards_filter .filterable-search-toggle-btn:hover , {{WRAPPER}} .filterable-cards-filter-wrap .filterable-searchInput:hover',
56 $this->get_search_menu_hover_CSS( $attributes ),
57 $this->get_search_menu_hover_CSS( $attributes, 'Tablet' ),
58 $this->get_search_menu_hover_CSS( $attributes, 'Mobile' ),
59 $css_generator->custom_device_map( function ( $device ) use ( $attributes ) { return $this->get_search_menu_hover_CSS( $attributes, $device ); } )
60 );
61 $css_generator->add_class_styles(
62 '{{WRAPPER}} .filterable-cards-filter-wrap .filterable-searchInput::placeholder ',
63 $this->get_search_input_placeholder_CSS( $attributes ),
64 );
65 $css_generator->add_class_styles(
66 '{{WRAPPER}} .filterable-cards_filter .filterable-filter-button.filterable-filter-button-active',
67 $this->get_Filter_active_class_CSS( $attributes ),
68 $this->get_Filter_active_class_CSS( $attributes, 'Tablet' ),
69 $this->get_Filter_active_class_CSS( $attributes, 'Mobile' ),
70 );
71 $css_generator->add_class_styles(
72 '{{WRAPPER}} .filterable-cards_filter .filterable-filter-button.filterable-filter-button-active:hover',
73 $this->get_Filter_active_class_hover_CSS( $attributes ),
74 $this->get_Filter_active_class_hover_CSS( $attributes, 'Tablet' ),
75 $this->get_Filter_active_class_hover_CSS( $attributes, 'Mobile' ),
76 );
77 $css_generator->add_class_styles(
78 '{{WRAPPER}} .filterable-cards-wrap',
79 $this->filterable_cards_WrapCSS( $attributes ),
80 $this->filterable_cards_WrapCSS( $attributes, 'Tablet' ),
81 $this->filterable_cards_WrapCSS( $attributes, 'Mobile' ),
82 $css_generator->custom_device_map( function ( $device ) use ( $attributes ) { return $this->filterable_cards_WrapCSS( $attributes, $device ); } )
83 );
84 $css_generator->add_class_styles(
85 '{{WRAPPER}} .filterable-cards-wrap > .ablocks-block--filterable-cards-item',
86 $this->filterable_cards_items( $attributes ),
87 $this->filterable_cards_items( $attributes, 'Tablet' ),
88 $this->filterable_cards_items( $attributes, 'Mobile' ),
89 );
90 // button style
91 $css_generator->add_class_styles(
92 '{{WRAPPER}} .filterable-cards-load-more-wrapper',
93 $this->filterable_Cards_More_Wrapper( $attributes ),
94 $this->filterable_Cards_More_Wrapper( $attributes, 'Tablet' ),
95 $this->filterable_Cards_More_Wrapper( $attributes, 'Mobile' ),
96 );
97 $css_generator->add_class_styles(
98 '{{WRAPPER}} .filterable-cards-showMore-button',
99 $this->filterable_loadMore_button( $attributes ),
100 $this->filterable_loadMore_button( $attributes, 'Tablet' ),
101 $this->filterable_loadMore_button( $attributes, 'Mobile' ),
102 $css_generator->custom_device_map( function ( $device ) use ( $attributes ) { return $this->filterable_loadMore_button( $attributes, $device ); } )
103 );
104 $css_generator->add_class_styles(
105 '{{WRAPPER}} .filterable-cards-showMore-button:hover',
106 $this->filterable_loadMore_button_hover( $attributes ),
107 $this->filterable_loadMore_button_hover( $attributes, 'Tablet' ),
108 $this->filterable_loadMore_button_hover( $attributes, 'Mobile' ),
109 $css_generator->custom_device_map( function ( $device ) use ( $attributes ) { return $this->filterable_loadMore_button_hover( $attributes, $device ); } )
110 );
111 return $css_generator->generate_css();
112 }
113 public function build_css_v2( $attributes ) {
114 $css_generator = new CssGeneratorV2( $attributes, $this->block_name );
115
116 $css_generator->add_class_styles(
117 '{{WRAPPER}} .filterable-cards_filter , {{WRAPPER}} .filterable-cards-filter-wrap',
118 $this->get_filter_wrap_CSS( $attributes ),
119 $this->get_filter_wrap_CSS( $attributes, 'Tablet' ),
120 $this->get_filter_wrap_CSS( $attributes, 'Mobile' ),
121 $css_generator->custom_device_map( function ( $device ) use ( $attributes ) { return $this->get_filter_wrap_CSS( $attributes, $device ); } )
122 );
123 $css_generator->add_class_styles(
124 '{{WRAPPER}} .filterable-cards_filter .filterable-filter-button',
125 $this->get_filter_CSS( $attributes ),
126 $this->get_filter_CSS( $attributes, 'Tablet' ),
127 $this->get_filter_CSS( $attributes, 'Mobile' ),
128 $css_generator->custom_device_map( function ( $device ) use ( $attributes ) { return $this->get_filter_CSS( $attributes, $device ); } )
129 );
130 $css_generator->add_class_styles(
131 '{{WRAPPER}} .filterable-cards_filter .filterable-filter-button:hover',
132 $this->get_filter_hover_CSS( $attributes ),
133 $this->get_filter_hover_CSS( $attributes, 'Tablet' ),
134 $this->get_filter_hover_CSS( $attributes, 'Mobile' ),
135 $css_generator->custom_device_map( function ( $device ) use ( $attributes ) { return $this->get_filter_hover_CSS( $attributes, $device ); } )
136 );
137 $css_generator->add_class_styles(
138 '{{WRAPPER}} .filterable-cards-filter-wrap .filterable-cards_filter .filterable-search-toggle-btn , {{WRAPPER}} .filterable-cards-filter-wrap .filterable-searchInput',
139 $this->get_search_menu_CSS( $attributes ),
140 $this->get_search_menu_CSS( $attributes, 'Tablet' ),
141 $this->get_search_menu_CSS( $attributes, 'Mobile' ),
142 $css_generator->custom_device_map( function ( $device ) use ( $attributes ) { return $this->get_search_menu_CSS( $attributes, $device ); } )
143 );
144 $css_generator->add_class_styles(
145 '{{WRAPPER}} .filterable-cards_filter .filterable-search-toggle-btn:hover , {{WRAPPER}} .filterable-cards-filter-wrap .filterable-searchInput:hover',
146 $this->get_search_menu_hover_CSS( $attributes ),
147 $this->get_search_menu_hover_CSS( $attributes, 'Tablet' ),
148 $this->get_search_menu_hover_CSS( $attributes, 'Mobile' ),
149 $css_generator->custom_device_map( function ( $device ) use ( $attributes ) { return $this->get_search_menu_hover_CSS( $attributes, $device ); } )
150 );
151 $css_generator->add_class_styles(
152 '{{WRAPPER}} .filterable-cards-filter-wrap .filterable-searchInput::placeholder ',
153 $this->get_search_input_placeholder_CSS( $attributes ),
154 );
155 $css_generator->add_class_styles(
156 '{{WRAPPER}} .filterable-cards_filter .filterable-filter-button.filterable-filter-button-active',
157 $this->get_Filter_active_class_CSS( $attributes ),
158 $this->get_Filter_active_class_CSS( $attributes, 'Tablet' ),
159 $this->get_Filter_active_class_CSS( $attributes, 'Mobile' ),
160 $css_generator->custom_device_map( function ( $device ) use ( $attributes ) { return $this->get_Filter_active_class_CSS( $attributes, $device ); } )
161 );
162 $css_generator->add_class_styles(
163 '{{WRAPPER}} .filterable-cards_filter .filterable-filter-button.filterable-filter-button-active:hover',
164 $this->get_Filter_active_class_hover_CSS( $attributes ),
165 $this->get_Filter_active_class_hover_CSS( $attributes, 'Tablet' ),
166 $this->get_Filter_active_class_hover_CSS( $attributes, 'Mobile' ),
167 $css_generator->custom_device_map( function ( $device ) use ( $attributes ) { return $this->get_Filter_active_class_hover_CSS( $attributes, $device ); } )
168 );
169 $css_generator->add_class_styles(
170 '{{WRAPPER}} .filterable-cards-wrap',
171 $this->filterable_cards_WrapCSS( $attributes ),
172 $this->filterable_cards_WrapCSS( $attributes, 'Tablet' ),
173 $this->filterable_cards_WrapCSS( $attributes, 'Mobile' ),
174 $css_generator->custom_device_map( function ( $device ) use ( $attributes ) { return $this->filterable_cards_WrapCSS( $attributes, $device ); } )
175 );
176 $css_generator->add_class_styles(
177 '{{WRAPPER}} .filterable-cards-wrap > .ablocks-block--filterable-cards-item',
178 $this->filterable_cards_items( $attributes ),
179 $this->filterable_cards_items( $attributes, 'Tablet' ),
180 $this->filterable_cards_items( $attributes, 'Mobile' ),
181 $css_generator->custom_device_map( function ( $device ) use ( $attributes ) { return $this->filterable_cards_items( $attributes, $device ); } )
182 );
183 // button style
184 $css_generator->add_class_styles(
185 '{{WRAPPER}} .filterable-cards-load-more-wrapper',
186 $this->filterable_Cards_More_Wrapper( $attributes ),
187 $this->filterable_Cards_More_Wrapper( $attributes, 'Tablet' ),
188 $this->filterable_Cards_More_Wrapper( $attributes, 'Mobile' ),
189 $css_generator->custom_device_map( function ( $device ) use ( $attributes ) { return $this->filterable_Cards_More_Wrapper( $attributes, $device ); } )
190 );
191 $css_generator->add_class_styles(
192 '{{WRAPPER}} .filterable-cards-showMore-button',
193 $this->filterable_loadMore_button( $attributes ),
194 $this->filterable_loadMore_button( $attributes, 'Tablet' ),
195 $this->filterable_loadMore_button( $attributes, 'Mobile' ),
196 $css_generator->custom_device_map( function ( $device ) use ( $attributes ) { return $this->filterable_loadMore_button( $attributes, $device ); } )
197 );
198 $css_generator->add_class_styles(
199 '{{WRAPPER}} .filterable-cards-showMore-button:hover',
200 $this->filterable_loadMore_button_hover( $attributes ),
201 $this->filterable_loadMore_button_hover( $attributes, 'Tablet' ),
202 $this->filterable_loadMore_button_hover( $attributes, 'Mobile' ),
203 $css_generator->custom_device_map( function ( $device ) use ( $attributes ) { return $this->filterable_loadMore_button_hover( $attributes, $device ); } )
204 );
205 return $css_generator->generate_css();
206 }
207 public function build_css( $attributes ) {
208 if ( isset( $attributes['blockVersion'] ) && (int) $attributes['blockVersion'] === 2 ) {
209 return $this->build_css_v2( $attributes );
210 }
211 return $this->build_css_v1( $attributes );
212 }
213 private function get_filter_wrap_CSS( $attributes, $device = '' ) {
214 $css = [];
215 if ( ! empty( $horizontal_alignment ) ) {
216 $css['justify-content'] = $horizontal_alignment;
217 }
218 $alignment_css = isset( $attributes['filterAlignment'] ) ? Alignment::get_css( $attributes['filterAlignment'], 'justify-content', $device )
219 : [];
220 $css = array_merge( $css, $alignment_css );
221 return array_merge(
222 $css,
223 Range::get_css([
224 'attributeValue' => $attributes['filterButtonGap'],
225 'attribute_object_key' => 'value',
226 'isResponsive' => true,
227 'hasUnit' => false,
228 'defaultValue' => 8,
229 'unitDefaultValue' => 'px',
230 'property' => 'gap',
231 'device' => $device,
232 ])
233 );
234 }
235 private function get_filter_CSS( $attributes, $device = '' ) {
236 $filter_border_css = ! empty( $attributes['filterButtonBorder'] )
237 ? Border::get_css( $attributes['filterButtonBorder'], '', $device )
238 : array();
239 $typographyGlobal = ( isset( $attributes['filterButtonTypographyGlobal'] ) ? $attributes['filterButtonTypographyGlobal'] : '' );
240 $css = array_merge(
241 [ 'color' => Color::get_css( isset( $attributes['filterButtonColor'] ) ? $attributes['filterButtonColor'] : '' ) ],
242 [ 'background' => Color::get_css( isset( $attributes['filterButtonBackground'] ) ? $attributes['filterButtonBackground'] : '' ) ],
243 $filter_border_css,
244 Typography::get_css( isset( $attributes['filterButtonTypography'] ) ? $attributes['filterButtonTypography'] : [], '', $device, $typographyGlobal ),
245 Dimensions::get_css( isset( $attributes['filterButtonPadding'] ) ? $attributes['filterButtonPadding'] : [], 'padding', $device ),
246 Dimensions::get_css( isset( $attributes['filterButtonMargin'] ) ? $attributes['filterButtonMargin'] : [], 'margin', $device ),
247 );
248 return $css;
249 }
250 private function get_filter_hover_CSS( $attributes, $device = '' ) {
251 $css = array_merge(
252 [ 'color' => Color::get_css( isset( $attributes['filterButtonColorH'] ) ? $attributes['filterButtonColorH'] : '' ) ],
253 [ 'background' => Color::get_css( isset( $attributes['filterButtonBackgroundH'] ) ? $attributes['filterButtonBackgroundH'] : '' ) ],
254 Border::get_hover_css( isset( $attributes['filterButtonBorder'] ) ? $attributes['filterButtonBorder'] : [], $device )
255 );
256 if ( ! empty( $attributes['filterButtonTransition'] ) ) {
257 $css['transition'] = $attributes['filterButtonTransition'];
258 }
259
260 return $css;
261 }
262 private function get_search_menu_CSS( $attributes, $device = '' ) {
263 $searchMenu_menu_border_css = ! empty( $attributes['searchMenuBorder'] )
264 ? Border::get_css( $attributes['searchMenuBorder'], '', $device )
265 : array();
266 $css = array_merge(
267 [ 'color' => Color::get_css( isset( $attributes['searchMenuColor'] ) ? $attributes['searchMenuColor'] : '' ) ],
268 [ 'background' => Color::get_css( isset( $attributes['searchMenuBackground'] ) ? $attributes['searchMenuBackground'] : '' ) ],
269 $searchMenu_menu_border_css,
270 Dimensions::get_css( isset( $attributes['searchMenuPadding'] ) ? $attributes['searchMenuPadding'] : [], 'padding', $device ),
271 Dimensions::get_css( isset( $attributes['searchMenuMargin'] ) ? $attributes['searchMenuMargin'] : [], 'margin', $device )
272 );
273 return $css;
274 }
275
276 private function get_search_menu_hover_CSS( $attributes, $device = '' ) {
277 $css = array_merge(
278 [ 'color' => Color::get_css( isset( $attributes['searchMenuColorH'] ) ? $attributes['searchMenuColorH'] : '' ) ],
279 [ 'background' => Color::get_css( isset( $attributes['searchMenuBackgroundH'] ) ? $attributes['searchMenuBackgroundH'] : '' ) ],
280 Border::get_hover_css( isset( $attributes['searchMenuBorder'] ) ? $attributes['searchMenuBorder'] : [], $device )
281 );
282 if ( ! empty( $attributes['searchMenuTransition'] ) ) {
283 $css['transition'] = $attributes['searchMenuTransition'];
284 }
285
286 return $css;
287 }
288 private function get_search_input_placeholder_CSS( $attributes ) {
289 return [ 'color' => Color::get_css( isset( $attributes['searchMenuColor'] ) ? $attributes['searchMenuColor'] : '' ) ];
290 }
291 private function get_filter_active_class_CSS( $attributes, $device = '' ) {
292 $css = array_merge(
293 [ 'color' => Color::get_css( isset( $attributes['activeClassColor'] ) ? $attributes['activeClassColor'] : '' ) ],
294 [ 'background' => Color::get_css( isset( $attributes['activeClassBackground'] ) ? $attributes['activeClassBackground'] : '' ) ],
295 Border::get_css( isset( $attributes['activeClassBorder'] ) ? $attributes['activeClassBorder'] : [], $device )
296 );
297 return $css;
298 }
299 private function get_Filter_active_class_hover_CSS( $attributes, $device = '' ) {
300 $hover_border = Border::get_hover_css( isset( $attributes['activeClassBorder'] ) ? $attributes['activeClassBorder'] : [], $device );
301 return $hover_border;
302 }
303 private function filterable_cards_wrapCSS( $attributes, $device = '' ) {
304 $css = [];
305 if ( $attributes['gridStyle'] === 'grid' ) {
306 $css['display'] = 'grid';
307 if ( $device === 'Tablet' ) {
308 $css['grid-template-columns'] = 'repeat(2, 1fr)';
309 } elseif ( $device === 'Mobile' ) {
310 $css['grid-template-columns'] = 'repeat(1, 1fr)';
311 } elseif ( ! empty( $attributes['gridColumns'] ) ) {
312 $css['grid-template-columns'] = 'repeat(' . $attributes['gridColumns'] . ', 1fr)';
313 }
314 }
315 if ( $attributes['gridStyle'] === 'masonry' ) {
316 if ( $device === 'Tablet' ) {
317 $css['column-count'] = '2';
318 } elseif ( $device === 'Mobile' ) {
319 $css['column-count'] = '1';
320 } elseif ( ! empty( $attributes['gridColumns'] ) ) {
321 $css['column-count'] = $attributes['gridColumns'];
322 }
323 }
324
325 return array_merge(
326 $css,
327 Range::get_css([
328 'attributeValue' => $attributes['itemGap'],
329 'attribute_object_key' => 'value',
330 'isResponsive' => true,
331 'hasUnit' => false,
332 'unitDefaultValue' => 'px',
333 'defaultValue' => 10,
334 'property' => 'gap',
335 'device' => $device,
336 ])
337 );
338 }
339
340 private function filterable_cards_items( $attributes, $device = '' ) {
341 $css = [];
342
343 if ( ! empty( $attributes['cardHeight'] ) && $attributes['gridStyle'] === 'grid' ) {
344 $css['height'] = $attributes['cardHeight'] . 'px';
345 }
346 if ( $attributes['gridStyle'] === 'masonry' ) {
347 $css['break-inside'] = 'avoid';
348 $css['width'] = '100%';
349 $css = array_merge($css, Range::get_css([
350 'attributeValue' => $attributes['itemGap'] ?? null,
351 'attribute_object_key' => 'value',
352 'isResponsive' => true,
353 'hasUnit' => false,
354 'unitDefaultValue' => 'px',
355 'defaultValue' => 10,
356 'property' => 'margin-bottom',
357 'device' => $device,
358 ]));
359 }
360 return $css;
361 }
362 private function filterable_Cards_More_Wrapper( $attributes, $device = '' ) {
363 $css = [];
364 if ( isset( $attributes['moreButtonAlignment'] ) ) {
365 $css['justify-content'] = $attributes['moreButtonAlignment'];
366 }
367 $css = array_merge($css, Range::get_css([
368 'attributeValue' => $attributes['loadMoreButtonGap'] ?? null,
369 'attribute_object_key' => 'value',
370 'isResponsive' => true,
371 'hasUnit' => false,
372 'unitDefaultValue' => 'px',
373 'defaultValue' => '',
374 'property' => 'margin-top',
375 'device' => $device,
376 ]));
377 return $css;
378 }
379 private function filterable_loadMore_button( $attributes, $device = '' ) {
380 $typographyGlobal = ( isset( $attributes['moreButtonTypographyGlobal'] ) ? $attributes['moreButtonTypographyGlobal'] : '' );
381 return array_merge(
382 [ 'color' => Color::get_css( isset( $attributes['loadMoreButtonTextColor'] ) ? $attributes['loadMoreButtonTextColor'] : '' ) ],
383 [ 'background' => Color::get_css( isset( $attributes['loadMoreButtonBackground'] ) ? $attributes['loadMoreButtonBackground'] : '' ) ],
384 Border::get_css( $attributes['moreButtonBorder'], '', $device ),
385 BoxShadow::get_css( $attributes['moreButtonboxShadow'], '', $device ),
386 Typography::get_css( $attributes['moreButtonTypography'], '', $device, $typographyGlobal ),
387 Dimensions::get_css( $attributes['moreButtonPadding'], 'padding', $device ),
388 );
389 }
390 private function filterable_loadMore_button_hover( $attributes, $device = '' ) {
391 $css = [];
392 if ( ! empty( $attributes['loadMoreButtonTransition'] ) ) {
393 $css['transition-duration'] = $attributes['loadMoreButtonTransition'] . 's';
394 }
395 return array_merge(
396 [ 'color' => Color::get_css( isset( $attributes['loadMoreButtonTextColorH'] ) ? $attributes['loadMoreButtonTextColorH'] : '' ) ],
397 [ 'background' => Color::get_css( isset( $attributes['loadMoreButtonBackgroundH'] ) ? $attributes['loadMoreButtonBackgroundH'] : '' ) ],
398 $css,
399 Border::get_hover_css( $attributes['moreButtonBorder'], '', $device ),
400 BoxShadow::get_hover_css( $attributes['moreButtonboxShadow'], '', $device )
401 );
402 }
403 }
404