PluginProbe
aBlocks – Gutenberg Blocks, User Dashboard Builder, Popup Builder, Form Builder & Animation Builder / 2.9.1
aBlocks – Gutenberg Blocks, User Dashboard Builder, Popup Builder, Form Builder & Animation Builder v2.9.1
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 1.1.2 All 80 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.9.1, at includes/blocks/menu-child-sub/block.php

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