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 / menu-child-sub / block.php

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

145 lines 6.9 KB
No matching file
Up and down to move Enter to open Esc to close
Raw Download Zip
1 <?php
2 namespace ABlocks\Blocks\MenuChildSub;
3
4 if ( ! defined( 'ABSPATH' ) ) {
5 exit;
6 }
7
8 use ABlocks\Controls\Typography;
9 use ABlocks\Controls\Dimensions;
10 use ABlocks\Controls\Border;
11 use ABlocks\Controls\BoxShadow;
12 use ABlocks\Controls\Range;
13 use ABlocks\Classes\BlockBaseAbstract;
14 use ABlocks\Classes\CssGenerator;
15 use ABlocks\Controls\Color;
16 class Block extends BlockBaseAbstract {
17 protected $parent_block_name = 'menu';
18 protected $block_name = 'menu-child-sub';
19
20 public function build_css( $attributes ) {
21 // Generate CSS
22 $css_generator = new CssGenerator( $attributes );
23 // Wrapper CSS
24 $css_generator->add_class_styles(
25 '{{WRAPPER}}.ablocks-block--menu-child-sub',
26 $this->get_wrapper_css( $attributes, '' ),
27 $this->get_wrapper_css( $attributes, 'Tablet' ),
28 $this->get_wrapper_css( $attributes, 'Mobile' ),
29 $css_generator->custom_device_map( function ( $device ) use ( $attributes ) { return $this->get_wrapper_css( $attributes, $device ); } )
30 );
31 $css_generator->add_class_styles(
32 '{{WRAPPER}}.ablocks-block--menu-child-sub:hover',
33 $this->get_wrapper_hover_css( $attributes, '' ),
34 $this->get_wrapper_hover_css( $attributes, 'Tablet' ),
35 $this->get_wrapper_hover_css( $attributes, 'Mobile' ),
36 $css_generator->custom_device_map( function ( $device ) use ( $attributes ) { return $this->get_wrapper_hover_css( $attributes, $device ); } )
37 );
38 $css_generator->add_class_styles(
39 '{{WRAPPER}}.ablocks-block--menu-child-sub .ablocks-block--menu-item',
40 $this->get_menu_item_css( $attributes, '' ),
41 $this->get_menu_item_css( $attributes, 'Tablet' ),
42 $this->get_menu_item_css( $attributes, 'Mobile' ),
43 $css_generator->custom_device_map( function ( $device ) use ( $attributes ) { return $this->get_menu_item_css( $attributes, $device ); } )
44 );
45 $css_generator->add_class_styles(
46 '{{WRAPPER}}.ablocks-block--menu-child-sub .ablocks-block--menu-item:hover',
47 $this->get_menu_item_hover_css( $attributes, '' ),
48 $this->get_menu_item_hover_css( $attributes, 'Tablet' ),
49 $this->get_menu_item_hover_css( $attributes, 'Mobile' ),
50 $css_generator->custom_device_map( function ( $device ) use ( $attributes ) { return $this->get_menu_item_hover_css( $attributes, $device ); } )
51 );
52 $css_generator->add_class_styles(
53 '{{WRAPPER}} > .ablocks-menu-item > .ablocks-menu-item__link',
54 $this->get_menu_item_link_css( $attributes, '' ),
55 );
56 $css_generator->add_class_styles(
57 '{{WRAPPER}} > .ablocks-menu-item:hover > .ablocks-menu-item__link',
58 $this->get_menu_item_link_hover_css( $attributes, '' ),
59 );
60 $css_generator->add_class_styles( '{{WRAPPER}} > .ablocks-menu-item .ablocks-menu-item__dropdown-icon svg', $this->get_menu_item_dropdown_icon_css( $attributes ) );
61 $css_generator->add_class_styles( '{{WRAPPER}} > .ablocks-menu-item:hover .ablocks-menu-item__dropdown-icon svg', $this->get_menu_item_dropdown_icon_hover_css( $attributes ) );
62 return $css_generator->generate_css();
63 }
64
65 private function get_wrapper_css( $attributes, $device = '' ) {
66 return array_merge(
67 [ 'background' => Color::get_css( isset( $attributes['background'] ) ? $attributes['background'] : '' ) ],
68 Range::get_css([
69 'attributeValue' => $attributes['width'],
70 'attribute_object_key' => 'value',
71 'isResponsive' => true,
72 'hasUnit' => true,
73 'unitDefaultValue' => 'px',
74 'property' => 'width',
75 'device' => $device,
76 ]),
77 BoxShadow::get_css( ! empty( $attributes['boxShadow'] ) ? $attributes['boxShadow'] : '', $device ),
78 Dimensions::get_css( $attributes['padding'], 'padding', $device ),
79 Border::get_css( $attributes['border'], '', $device ),
80 );
81 }
82 private function get_wrapper_hover_css( $attributes, $device = '' ) {
83 return array_merge(
84 Border::get_hover_css( $attributes['border'], '', $device ),
85 BoxShadow::get_hover_css( $attributes['boxShadow'], '', $device )
86 );
87
88 }
89 private function get_menu_item_css( $attributes, $device = '' ) {
90 $typographyglobal = isset( $attributes['menuItemTypographyGlobal'] ) ? $attributes['menuItemTypographyGlobal'] : '';
91 $css = array_merge(
92 [ 'color' => Color::get_css( isset( $attributes['menuItemTextColor'] ) ? $attributes['menuItemTextColor'] : '' ) ],
93 [ 'background' => Color::get_css( isset( $attributes['menuItemBackground'] ) ? $attributes['menuItemBackground'] : '' ) ],
94 Border::get_css( isset( $attributes['menuItemBorder'] ) ? $attributes['menuItemBorder'] : [], '', $device ),
95 Typography::get_css( isset( $attributes['menuItemTypography'] ) ? $attributes['menuItemTypography'] : [], '', $device, $typographyglobal ),
96 Dimensions::get_css( isset( $attributes['menuItemPadding'] ) ? $attributes['menuItemPadding'] : [], 'padding', $device ),
97 Dimensions::get_css( isset( $attributes['menuItemMargin'] ) ? $attributes['menuItemMargin'] : [], 'margin', $device )
98 );
99
100 if ( isset( $attributes[ 'menuItemDirection' . $device ] ) && ! empty( $attributes[ 'menuItemDirection' . $device ] ) ) {
101 $css['flex-direction'] = $attributes[ 'menuItemDirection' . $device ];
102 }
103
104 // Justify content
105 if ( isset( $attributes['menuItemJustification'][ 'value' . $device ] ) && ! empty( $attributes['menuItemJustification'][ 'value' . $device ] ) ) {
106 $css['justify-content'] = $attributes['menuItemJustification'][ 'value' . $device ];
107 }
108
109 // Align items
110 if ( isset( $attributes[ 'menuItemAlign' . $device ] ) && ! empty( $attributes[ 'menuItemAlign' . $device ] ) ) {
111 $css['align-items'] = $attributes[ 'menuItemAlign' . $device ];
112 }
113 if ( ! empty( $attributes['menuItemTransition'] ) ) {
114 $css['transition-duration'] = $attributes['menuItemTransition'] . 's';
115 }
116 return $css;
117 }
118 private function get_menu_item_link_css( $attributes ) {
119 return [ 'color' => Color::get_css( isset( $attributes['menuItemTextColor'] ) ? $attributes['menuItemTextColor'] : '' ) . '!important' ];
120 }
121 private function get_menu_item_hover_css( $attributes, $device = '' ) {
122 return array_merge(
123 [ 'background' => Color::get_css( isset( $attributes['menuItemBackgroundH'] ) ? $attributes['menuItemBackgroundH'] : '' ) ],
124 Border::get_hover_css( isset( $attributes['menuItemBorder'] ) ? $attributes['menuItemBorder'] : [], '', $device )
125 );
126 }
127 private function get_menu_item_link_hover_css( $attributes ) {
128 return [ 'color' => Color::get_css( isset( $attributes['menuItemTextColorH'] ) ? $attributes['menuItemTextColorH'] : '' ) . '!important' ];
129 }
130 private function get_menu_item_dropdown_icon_css( $attributes ) {
131
132 return [ 'fill' => Color::get_css( isset( $attributes['menuItemTextColor'] ) ? $attributes['menuItemTextColor'] : '' ) ];
133 }
134 private function get_menu_item_dropdown_icon_hover_css( $attributes ) {
135 return [ 'fill' => Color::get_css( isset( $attributes['menuItemTextColorH'] ) ? $attributes['menuItemTextColorH'] : '' ) ];
136 }
137 private function get_hamburger_menu_css( $attributes ) {
138 $css = [];
139 if ( isset( $attributes['hamburgerAlignment'] ) ) {
140 $css['justify-content'] = $attributes['hamburgerAlignment'];
141 }
142 return $css;
143 }
144 }
145