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
← All changes | includes/blocks/menu-child-sub/block.php +144 -0 2.7.7 → 2.14.0 View file →
@@ -1,0 +1,144 @@
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 +}