PluginProbe ʕ •ᴥ•ʔ
ElementsKit Elementor Addons – Advanced Widgets & Templates Addons for Elementor / 4.0.0
ElementsKit Elementor Addons – Advanced Widgets & Templates Addons for Elementor v4.0.0
4.0.2 4.0.1 4.0.0 3.10.02 3.10.01 3.9.10 3.9.9 3.9.8 3.9.7 3.9.5 3.9.6 3.9.3 2.1.0 2.1.1 2.1.2 2.1.3 2.1.4 2.1.5 2.1.6 2.1.7 2.2.0 2.2.1 2.2.2 2.2.3 2.2.4 2.3.0 2.3.1 2.3.1.1 2.3.2 2.3.3 2.3.4 2.3.5 2.3.6 2.3.7 2.4.0 2.5.0 2.5.1 2.5.10 2.5.2 2.5.3 2.5.4 2.5.5 2.5.6 2.5.7 2.5.8 2.5.9 2.6.0 2.6.1 2.6.2 2.6.3 2.7.0 2.7.2 2.7.3 2.7.4 2.7.5 2.8.0 2.8.1 2.8.5 2.8.6 2.8.7 2.8.8 2.9.0 2.9.1 2.9.2 3.0.0 3.0.1 3.0.2 3.0.3 3.0.4 3.0.5 3.0.6 3.0.7 3.1.0 3.1.1 3.1.2 3.1.3 3.1.4 3.2.0 3.2.1 3.2.2 3.2.3 3.2.4 3.2.5 3.2.6 3.2.7 3.2.8 3.2.9 3.3.0 3.3.1 3.3.2 3.3.3 3.3.4 3.3.5 3.3.6 3.3.7 3.3.8 3.3.9 3.4.0 3.4.1 3.4.2 3.4.3 3.4.4 3.4.5 3.4.6 3.4.7 3.4.8 3.4.9 3.5.0 3.5.1 3.5.2 3.5.3 3.5.4 3.5.5 3.5.6 3.6.0 3.6.1 3.7.0 3.7.1 3.7.2 3.7.3 3.7.4 3.7.5 3.7.6 3.7.7 3.7.8 3.7.9 3.8.0 3.8.1 3.8.2 3.9.0 3.9.1 3.9.2 trunk 1.2.6 1.2.7 1.2.9 1.3.1 1.3.2 1.3.3 1.3.4 1.3.5 1.3.8 1.3.9 1.4.0 1.4.1 1.4.2 1.4.3 1.4.4 1.4.5 1.4.7 1.4.8 1.4.9 1.5.0 1.5.1 1.5.10 1.5.11 1.5.12 1.5.2 1.5.4 1.5.5 1.5.6 1.5.7 1.5.8 1.5.9 2.0.0 2.0.1 2.0.10 2.0.11 2.0.12 2.0.13 2.0.2 2.0.3 2.0.4 2.0.5 2.0.6 2.0.7 2.0.8 2.0.9 2.0.9.1 2.0.9.2 2.0.9.3
elementskit-lite / widgets / nav-menu / nav-menu.php
elementskit-lite / widgets / nav-menu Last commit date
nav-menu-handler.php 6 months ago nav-menu-walker.php 1 year ago nav-menu.php 3 weeks ago
nav-menu.php
1850 lines
1 <?php
2
3 namespace Elementor;
4 use \Elementor\ElementsKit_Widget_Nav_Menu_Handler as Handler;
5 use \ElementsKit_Lite\Modules\Controls\Controls_Manager as ElementsKit_Controls_Manager;
6 if ( ! defined( 'ABSPATH' ) ) exit;
7
8 class ElementsKit_Widget_Nav_Menu extends Widget_Base {
9 use \ElementsKit_Lite\Widgets\Widget_Notice;
10
11 public $base;
12
13 public function __construct( $data = [], $args = null ) {
14 parent::__construct( $data, $args );
15 }
16
17 public function get_script_depends() {
18 return ['ekit-menu','ekit-nav-menu'];
19 }
20
21 public function get_style_depends() {
22 return ['ekit-nav-menu'];
23 }
24
25
26 public function get_name() {
27 return Handler::get_name();
28 }
29
30 public function get_title() {
31 return Handler::get_title();
32 }
33
34 public function get_icon() {
35 return Handler::get_icon();
36 }
37
38 public function get_categories() {
39 return Handler::get_categories();
40 }
41
42 public function get_keywords() {
43 return Handler::get_keywords();
44 }
45
46 public function get_help_url() {
47 return 'https://wpmet.com/doc/nav-menu/';
48 }
49
50 protected function is_dynamic_content(): bool {
51 return true;
52 }
53
54 public function get_menus(){
55 $list = [];
56 $menus = wp_get_nav_menus();
57 foreach($menus as $menu){
58 $list[$menu->slug] = $menu->name;
59 }
60
61 return $list;
62 }
63
64 protected function register_controls() {
65
66 $this->start_controls_section(
67 'elementskit_content_tab',
68 [
69 'label' => esc_html__('Menu Settings', 'elementskit-lite'),
70 'tab' => Controls_Manager::TAB_CONTENT,
71 ]
72 );
73
74 $this->add_control(
75 'elementskit_nav_menu',
76 [
77 'label' => esc_html__( 'Select menu', 'elementskit-lite' ),
78 'type' => Controls_Manager::SELECT,
79 'options' => $this->get_menus(),
80 ]
81 );
82
83 $this->add_responsive_control(
84 'elementskit_main_menu_position',
85 [
86 'label' => esc_html__( 'Horizontal menu position', 'elementskit-lite' ),
87 'type' => Controls_Manager::SELECT,
88 'default' => 'elementskit-menu-po-left',
89 'options' => [
90 'elementskit-menu-po-left' => esc_html__( 'Left', 'elementskit-lite' ),
91 'elementskit-menu-po-center' => esc_html__( 'Center', 'elementskit-lite' ),
92 'elementskit-menu-po-right' => esc_html__( 'Right', 'elementskit-lite' ),
93 'elementskit-menu-po-justified' => esc_html__( 'Justified', 'elementskit-lite' ),
94 ],
95 ]
96 );
97
98 $this->add_control(
99 'elementskit_nav_dropdown_as',
100 [
101 'label' => esc_html__( 'Dropdown open as', 'elementskit-lite' ),
102 'type' => Controls_Manager::SELECT,
103 'default' => 'ekit-nav-dropdown-hover',
104 'options' => [
105 'ekit-nav-dropdown-hover' => esc_html__( 'Hover', 'elementskit-lite' ),
106 'ekit-nav-dropdown-click' => esc_html__( 'Click', 'elementskit-lite' ),
107 ],
108 ]
109 );
110
111 if(\ElementsKit_Lite::license_status() === 'valid') {
112 $this->add_control(
113 'elementskit_submenu_indicator_icon',
114 [
115 'label' => esc_html__( 'Dropdown Indicator Icon', 'elementskit-lite' ),
116 'type' => Controls_Manager::ICONS,
117 'skin' => 'inline',
118 'exclude_inline_options' => ['svg'],
119 'skin_settings' => [
120 'inline' => [
121 'none' => [
122 'label' => esc_html__( 'Default', 'elementskit-lite' ),
123 'icon' => 'icon icon-down-arrow1',
124 ],
125 'icon' => [
126 'label' => esc_html__( 'Icon Library', 'elementskit-lite' ),
127 'icon' => 'fas fa-external-link-alt',
128 ],
129 ],
130 ],
131 'recommended' => [
132 'ekiticons' => [
133 'down-arrow1',
134 'arrow-point-to-down',
135 'plus',
136 'link',
137 ],
138 'fa-solid' => [
139 'plus',
140 'external-link-alt',
141 'link',
142 'angle-down',
143 ],
144 ],
145 'label_block' => false,
146 ]
147 );
148 } else {
149 $this->add_control(
150 'elementskit_style_tab_submenu_item_arrow',
151 [
152 'label' => esc_html__( 'Submenu Indicator', 'elementskit-lite' ),
153 'type' => Controls_Manager::SELECT,
154 'default' => 'elementskit_line_arrow',
155 'options' => [
156 'elementskit_line_arrow' => esc_html__( 'Line Arrow', 'elementskit-lite' ),
157 'elementskit_plus_icon' => esc_html__( 'Plus', 'elementskit-lite' ),
158 'elementskit_fill_arrow' => esc_html__( 'Fill Arrow', 'elementskit-lite' ),
159 'elementskit_none' => esc_html__( 'None', 'elementskit-lite' ),
160 ],
161 ]
162 );
163 }
164
165 $this->add_control(
166 'elementskit_one_page_enable',
167 [
168 'label' => esc_html__('Enable one page? ', 'elementskit-lite'),
169 'type' => Controls_Manager::SWITCHER,
170 'default' => 'no',
171 'label_on' =>esc_html__( 'Yes', 'elementskit-lite' ),
172 'label_off' =>esc_html__( 'No', 'elementskit-lite' ),
173 ]
174 );
175
176 $this->add_control(
177 'elementskit_one_page_notice',
178 [
179 'type' => Controls_Manager::NOTICE,
180 'notice_type' => 'warning',
181 'heading' => esc_html__('Enable OnePage Notice', 'elementskit-lite'),
182 'content' => esc_html__('This feature only works on the current page. Ensure that the links in your menu are pointing to sections within the same page for the one-page navigation correctly.', 'elementskit-lite'),
183 'condition' => [
184 'elementskit_one_page_enable' => 'yes',
185 ],
186 ]
187 );
188
189 $this->add_control(
190 'elementskit_responsive_breakpoint',
191 [
192 'label' => __( 'Responsive Breakpoint', 'elementskit-lite' ),
193 'type' => Controls_Manager::SELECT,
194 'default' => 'ekit_menu_responsive_tablet',
195 'options' => [
196 'ekit_menu_responsive_tablet' => __( 'Tablet', 'elementskit-lite' ),
197 'ekit_menu_responsive_mobile' => __( 'Mobile', 'elementskit-lite' ),
198 ],
199 ]
200 );
201
202 $this->end_controls_section();
203
204 $this->start_controls_section(
205 'elementskit_mobile_menu',
206 [
207 'label' => esc_html__('Mobile Menu Settings', 'elementskit-lite'),
208 'tab' => Controls_Manager::TAB_CONTENT,
209 ]
210 );
211
212 $this->add_control(
213 'elementskit_nav_menu_logo',
214 [
215 'label' => esc_html__( 'Mobile Menu Logo', 'elementskit-lite' ),
216 'type' => Controls_Manager::MEDIA,
217 'dynamic' => [
218 'active' => true,
219 ],
220 'default' => [
221 'url' => '', //Utils::get_placeholder_image_src() -- removed for conflict with jetpack
222 'id' => -1
223 ],
224 ]
225 );
226
227 $this->add_control(
228 'elementskit_nav_menu_logo_link_to',
229 [
230 'label' => esc_html__( 'Menu link', 'elementskit-lite' ),
231 'type' => Controls_Manager::SELECT,
232 'default' => 'home',
233 'options' => [
234 'home' => esc_html__( 'Default(Home)', 'elementskit-lite' ),
235 'custom' => esc_html__( 'Custom URL', 'elementskit-lite' ),
236 ],
237 ]
238 );
239
240 $this->add_control(
241 'elementskit_nav_menu_logo_link',
242 [
243 'label' => esc_html__( ' Custom Link', 'elementskit-lite' ),
244 'type' => Controls_Manager::URL,
245 'dynamic' => [
246 'active' => true,
247 ],
248 'placeholder' => 'https://wpmet.com',
249 'condition' => [
250 'elementskit_nav_menu_logo_link_to' => 'custom',
251 ],
252 'show_label' => false,
253
254 ]
255 );
256
257 $this->add_control(
258 'elementskit_hamburger_icon',
259 [
260 'label' => __( 'Hamburger Icon (Optional)', 'elementskit-lite' ),
261 'type' => Controls_Manager::ICONS,
262 'separator' => 'before',
263 ]
264 );
265
266 $this->add_control(
267 'submenu_click_area',
268 [
269 'label' => esc_html__('Submenu Click Area', 'elementskit-lite'),
270 'type' => Controls_Manager::SWITCHER,
271 'label_on' => esc_html__('Icon', 'elementskit-lite'),
272 'label_off' => esc_html__('Text', 'elementskit-lite'),
273 'return_value' => 'icon',
274 'default' => 'icon',
275 'description' => esc_html__( 'Select the clickable area for opening submenu items: icon only or the full menu text.', 'elementskit-lite' ),
276 ]
277 );
278
279 $this->add_control(
280 'elementskit_close_menu_on_anchor_click',
281 [
282 'label' => esc_html__( 'Close Menu on Anchor Click', 'elementskit-lite' ),
283 'type' => Controls_Manager::SWITCHER,
284 'default' => 'no',
285 'label_on' => esc_html__( 'Yes', 'elementskit-lite' ),
286 'label_off' => esc_html__( 'No', 'elementskit-lite' ),
287 'separator' => 'before',
288 'description' => esc_html__( 'When enabled, clicking anchor links (e.g. #section) will automatically close the mobile menu.', 'elementskit-lite' ),
289 ]
290 );
291
292 $this->end_controls_section();
293
294 $this->start_controls_section(
295 'elementskit_menu_style_tab',
296 [
297 'label' => esc_html__('Menu Wrapper', 'elementskit-lite'),
298 'tab' => Controls_Manager::TAB_STYLE,
299 ]
300 );
301
302 $this->add_responsive_control(
303 'elementskit_menubar_height',
304 [
305 'label' => esc_html__( 'Menu Height', 'elementskit-lite' ),
306 'type' => Controls_Manager::SLIDER,
307 'size_units' => [ 'px', '%' ],
308 'range' => [
309 'px' => [
310 'min' => 30,
311 'max' => 300,
312 'step' => 1,
313 ],
314 '%' => [
315 'min' => 0,
316 'max' => 100,
317 ],
318 ],
319 'devices' => [ 'desktop' ],
320 'desktop_default' => [
321 'size' => 80,
322 'unit' => 'px',
323 ],
324 'tablet_default' => [
325 'size' => 100,
326 'unit' => '%',
327 ],
328 'selectors' => [
329 '{{WRAPPER}} .elementskit-menu-container' => 'height: {{SIZE}}{{UNIT}};',
330 ],
331 'separator' => 'after',
332 ]
333 );
334
335 $this->add_control(
336 'elementskit_menu_wrap_h',
337 [
338 'label' => esc_html__( 'Menu wrapper background', 'elementskit-lite' ),
339 'type' => Controls_Manager::HEADING,
340 ]
341 );
342
343 $this->add_group_control(
344 Group_Control_Background::get_type(),
345 [
346 'name' => 'elementskit_menubar_background',
347 'label' => esc_html__( 'Menu Panel Background', 'elementskit-lite' ),
348 'types' => [ 'classic', 'gradient' ],
349 'devices' => [ 'desktop' ],
350 'selector' => '{{WRAPPER}} .elementskit-menu-container',
351 ]
352 );
353
354 $this->add_responsive_control(
355 'wrapper_color_mobile',
356 [
357 'label' => esc_html__( 'Mobile Wrapper Background', 'elementskit-lite' ),
358 'type' => Controls_Manager::COLOR,
359 'devices' => ['desktop', 'tablet', 'mobile'],
360 'selectors' => [
361 '{{WRAPPER}} .elementskit-menu-container' => 'background-color: {{VALUE}};',
362 ],
363 ]
364 );
365
366 $this->add_responsive_control(
367 'elementskit_mobile_menu_panel_spacing',
368 [
369 'label' => esc_html__( 'Padding', 'elementskit-lite' ),
370 'type' => Controls_Manager::DIMENSIONS,
371 'size_units' => [ 'px', '%', 'em' ],
372 'tablet_default' => [
373 'top' => '10',
374 'right' => '0',
375 'bottom' => '10',
376 'left' => '0',
377 'unit' => 'px',
378 ],
379 'devices' => ['desktop', 'tablet'],
380 'selectors' => [
381 '{{WRAPPER}} .elementskit-nav-identity-panel' => 'padding: {{TOP}}{{UNIT}} {{RIGHT}}{{UNIT}} {{BOTTOM}}{{UNIT}} {{LEFT}}{{UNIT}};',
382 ],
383 ]
384 );
385
386 $this->add_responsive_control(
387 'elementskit_mobile_menu_panel_width',
388 [
389 'label' => esc_html__( 'Width', 'elementskit-lite' ),
390 'type' => Controls_Manager::SLIDER,
391 'size_units' => [ 'px', '%' ],
392 'devices' => ['desktop', 'tablet', 'mobile'],
393 'range' => [
394 'px' => [
395 'min' => 350,
396 'max' => 700,
397 'step' => 1,
398 ],
399 '%' => [
400 'min' => 0,
401 'max' => 100,
402 ],
403 ],
404 'tablet_default' => [
405 'size' => 350,
406 'unit' => 'px',
407 ],
408 'selectors' => [
409 '{{WRAPPER}} .elementskit-menu-container' => 'max-width: {{SIZE}}{{UNIT}};',
410 ],
411 ]
412 );
413
414 $this->add_responsive_control(
415 'elementskit_border_radius',
416 [
417 'label' => esc_html__( 'Menu border radius', 'elementskit-lite' ),
418 'type' => Controls_Manager::DIMENSIONS,
419 'size_units' => [ 'px' ],
420 'separator' => [ 'before' ],
421 'desktop_default' => [
422 'top' => 0,
423 'right' => 0,
424 'bottom' => 0,
425 'left' => 0,
426 'unit' => 'px',
427 ],
428 'tablet_default' => [
429 'top' => 0,
430 'right' => 0,
431 'bottom' => 0,
432 'left' => 0,
433 'unit' => 'px',
434 ],
435 'selectors' => [
436 '{{WRAPPER}} .elementskit-menu-container' => 'border-radius: {{TOP}}{{UNIT}} {{RIGHT}}{{UNIT}} {{BOTTOM}}{{UNIT}} {{LEFT}}{{UNIT}};',
437 ],
438 ]
439 );
440 $this->add_responsive_control(
441 'ekit_menu_item_icon_spacing',
442 [
443 'label' => esc_html__( 'Menu Icon Spacing', 'elementskit-lite' ),
444 'description' => esc_html__( 'This is only work with Mega menu icon option', 'elementskit-lite' ),
445 'type' => Controls_Manager::DIMENSIONS,
446 'size_units' => [ 'px', '%', 'em' ],
447 'selectors' => [
448 '{{WRAPPER}} .elementskit-navbar-nav li a .ekit-menu-icon' => 'padding: {{TOP}}{{UNIT}} {{RIGHT}}{{UNIT}} {{BOTTOM}}{{UNIT}} {{LEFT}}{{UNIT}};',
449 ],
450 ]
451 );
452 $this->end_controls_section();
453
454
455 $this->start_controls_section(
456 'elementskit_style_tab_menuitem',
457 [
458 'label' => esc_html__('Menu Item', 'elementskit-lite'),
459 'tab' => Controls_Manager::TAB_STYLE,
460 ]
461 );
462
463
464
465 $this->add_group_control(
466 Group_Control_Typography::get_type(),
467 [
468 'name' => 'elementskit_content_typography',
469 'label' => esc_html__( 'Typography', 'elementskit-lite' ),
470 'selector' => '{{WRAPPER}} .elementskit-navbar-nav > li > a',
471 ]
472 );
473
474
475
476 $this->add_control(
477 'elementskit_menu_item_h',
478 [
479 'label' => esc_html__( 'Menu Item Style', 'elementskit-lite' ),
480 'type' => Controls_Manager::HEADING,
481 'separator' => 'before',
482 ]
483 );
484
485
486 $this->start_controls_tabs(
487 'elementskit_nav_menu_tabs'
488 );
489 // Normal
490 $this->start_controls_tab(
491 'elementskit_nav_menu_normal_tab',
492 [
493 'label' => esc_html__( 'Normal', 'elementskit-lite' ),
494 ]
495 );
496
497 $this->add_group_control(
498 Group_Control_Background::get_type(),
499 [
500 'name' => 'elementskit_item_background',
501 'label' => esc_html__( 'Item background', 'elementskit-lite' ),
502 'types' => ['classic', 'gradient'],
503 'selector' => '{{WRAPPER}} .elementskit-navbar-nav > li > a',
504 ]
505 );
506
507 $this->add_responsive_control(
508 'elementskit_menu_text_color',
509 [
510 'label' => esc_html__( 'Item text color', 'elementskit-lite' ),
511 'type' => Controls_Manager::COLOR,
512 'desktop_default' => '#000000',
513 'tablet_default' => '#000000',
514 'selectors' => [
515 '{{WRAPPER}} .elementskit-navbar-nav > li > a' => 'color: {{VALUE}}',
516 ],
517 ]
518 );
519
520 $this->add_group_control(
521 Group_Control_Border::get_type(),
522 [
523 'name' => 'elementskit_menu_text_border',
524 'selector' => '{{WRAPPER}} .elementskit-navbar-nav > li > a',
525 'size_units' => ['px'],
526 ]
527 );
528
529 $this->add_control(
530 'elementskit_menu_text_border_radius',
531 [
532 'label' => esc_html__('Border Radius (px)', 'elementskit-lite'),
533 'type' => Controls_Manager::DIMENSIONS,
534 'size_units' => ['px'],
535 'selectors' => [
536 '{{WRAPPER}} .elementskit-navbar-nav > li > a' => 'border-radius: {{TOP}}{{UNIT}} {{RIGHT}}{{UNIT}} {{BOTTOM}}{{UNIT}} {{LEFT}}{{UNIT}};',
537 ],
538 ]
539 );
540
541 $this->end_controls_tab();
542
543 // Hover
544 $this->start_controls_tab(
545 'elementskit_nav_menu_hover_tab',
546 [
547 'label' => esc_html__( 'Hover', 'elementskit-lite' ),
548 ]
549 );
550
551 $this->add_group_control(
552 Group_Control_Background::get_type(),
553 [
554 'name' => 'elementskit_item_background_hover',
555 'label' => esc_html__( 'Item background', 'elementskit-lite' ),
556 'types' => ['classic', 'gradient'],
557 'selector' => '{{WRAPPER}} .elementskit-navbar-nav > li > a:hover, {{WRAPPER}} .elementskit-navbar-nav > li > a:focus, {{WRAPPER}} .elementskit-navbar-nav > li > a:active, {{WRAPPER}} .elementskit-navbar-nav > li:hover > a',
558 ]
559 );
560
561 $this->add_responsive_control(
562 'elementskit_item_color_hover',
563 [
564 'label' => esc_html__( 'Item text color', 'elementskit-lite' ),
565 'type' => Controls_Manager::COLOR,
566 'default' => '#707070',
567 'selectors' => [
568 '{{WRAPPER}} .elementskit-navbar-nav > li > a:hover' => 'color: {{VALUE}}',
569 '{{WRAPPER}} .elementskit-navbar-nav > li > a:focus' => 'color: {{VALUE}}',
570 '{{WRAPPER}} .elementskit-navbar-nav > li > a:active' => 'color: {{VALUE}}',
571 '{{WRAPPER}} .elementskit-navbar-nav > li:hover > a' => 'color: {{VALUE}}',
572 '{{WRAPPER}} .elementskit-navbar-nav > li:hover > a .elementskit-submenu-indicator' => 'color: {{VALUE}}',
573 '{{WRAPPER}} .elementskit-navbar-nav > li > a:hover .elementskit-submenu-indicator' => 'color: {{VALUE}}',
574 '{{WRAPPER}} .elementskit-navbar-nav > li > a:focus .elementskit-submenu-indicator' => 'color: {{VALUE}}',
575 '{{WRAPPER}} .elementskit-navbar-nav > li > a:active .elementskit-submenu-indicator' => 'color: {{VALUE}}',
576 ],
577 ]
578 );
579
580 $this->add_group_control(
581 Group_Control_Border::get_type(),
582 [
583 'name' => 'elementskit_menu_text_border_hover',
584 'selector' => '{{WRAPPER}} .elementskit-navbar-nav > li:hover > a',
585 'size_units' => ['px'],
586 ]
587 );
588
589 $this->add_control(
590 'elementskit_menu_text_border_radius_hover',
591 [
592 'label' => esc_html__('Border Radius (px)', 'elementskit-lite'),
593 'type' => Controls_Manager::DIMENSIONS,
594 'size_units' => ['px'],
595 'selectors' => [
596 '{{WRAPPER}} .elementskit-navbar-nav > li:hover > a' => 'border-radius: {{TOP}}{{UNIT}} {{RIGHT}}{{UNIT}} {{BOTTOM}}{{UNIT}} {{LEFT}}{{UNIT}};',
597 ],
598 ]
599 );
600
601 $this->end_controls_tab();
602
603 // active
604 $this->start_controls_tab(
605 'elementskit_nav_menu_active_tab',
606 [
607 'label' => esc_html__( 'Active', 'elementskit-lite' ),
608 ]
609 );
610
611 $this->add_group_control(
612 Group_Control_Background::get_type(),
613 [
614 'name' => 'elementskit_nav_menu_active_bg_color',
615 'label' => esc_html__( 'Item background', 'elementskit-lite' ),
616 'types' => ['classic', 'gradient'],
617 'selector' => '{{WRAPPER}} .elementskit-navbar-nav > li.current-menu-item > a,{{WRAPPER}} .elementskit-navbar-nav > li.current-menu-ancestor > a'
618 ]
619 );
620
621 $this->add_responsive_control(
622 'elementskit_nav_menu_active_text_color',
623 [
624 'label' => esc_html__( 'Item text color (Active)', 'elementskit-lite' ),
625 'type' => Controls_Manager::COLOR,
626 'default' => '#707070',
627 'selectors' => [
628 '{{WRAPPER}} .elementskit-navbar-nav > li.current-menu-item > a' => 'color: {{VALUE}}',
629 '{{WRAPPER}} .elementskit-navbar-nav > li.current-menu-ancestor > a' => 'color: {{VALUE}}',
630 '{{WRAPPER}} .elementskit-navbar-nav > li.current-menu-ancestor > a .elementskit-submenu-indicator' => 'color: {{VALUE}}',
631 ],
632 ]
633 );
634
635 $this->add_group_control(
636 Group_Control_Border::get_type(),
637 [
638 'name' => 'elementskit_menu_text_border_active',
639 'selector' => '{{WRAPPER}} .elementskit-navbar-nav > li.current-menu-item > a',
640 'size_units' => ['px'],
641 ]
642 );
643
644 $this->add_control(
645 'elementskit_menu_text_border_radius_active',
646 [
647 'label' => esc_html__('Border Radius (px)', 'elementskit-lite'),
648 'type' => Controls_Manager::DIMENSIONS,
649 'size_units' => ['px'],
650 'selectors' => [
651 '{{WRAPPER}} .elementskit-navbar-nav > li.current-menu-item > a' => 'border-radius: {{TOP}}{{UNIT}} {{RIGHT}}{{UNIT}} {{BOTTOM}}{{UNIT}} {{LEFT}}{{UNIT}};',
652 ],
653 ]
654 );
655
656 $this->end_controls_tab();
657
658 $this->end_controls_tabs();
659
660 $this->add_responsive_control(
661 'elementskit_menu_item_spacing',
662 [
663 'label' => esc_html__( 'Item Spacing', 'elementskit-lite' ),
664 'type' => Controls_Manager::DIMENSIONS,
665 'separator' => [ 'before' ],
666 'desktop_default' => [
667 'top' => 0,
668 'right' => 15,
669 'bottom' => 0,
670 'left' => 15,
671 'unit' => 'px',
672 ],
673 'tablet_default' => [
674 'top' => 10,
675 'right' => 15,
676 'bottom' => 10,
677 'left' => 15,
678 'unit' => 'px',
679 ],
680 'size_units' => [ 'px' ],
681 'selectors' => [
682 '{{WRAPPER}} .elementskit-navbar-nav > li > a' => 'padding: {{TOP}}{{UNIT}} {{RIGHT}}{{UNIT}} {{BOTTOM}}{{UNIT}} {{LEFT}}{{UNIT}};',
683 ],
684 ]
685 );
686
687 $this->add_responsive_control(
688 'elementskit_menu_item_margin',
689 [
690 'label' => esc_html__( 'Item Margin', 'elementskit-lite' ),
691 'type' => Controls_Manager::DIMENSIONS,
692 'size_units' => [ 'px' ],
693 'selectors' => [
694 '{{WRAPPER}} .elementskit-navbar-nav > li' => 'margin: {{TOP}}{{UNIT}} {{RIGHT}}{{UNIT}} {{BOTTOM}}{{UNIT}} {{LEFT}}{{UNIT}};',
695 ],
696 ]
697 );
698
699 $this->end_controls_section();
700
701 $this->start_controls_section(
702 'elementskit_style_tab_submenu_indicator',
703 [
704 'label' => esc_html__('Submenu Indicator', 'elementskit-lite'),
705 'tab' => Controls_Manager::TAB_STYLE,
706 ]
707 );
708
709 $this->add_responsive_control(
710 'ekit_submenu_indicator_font_size',
711 [
712 'label' => esc_html__( 'Font Size', 'elementskit-lite' ),
713 'type' => Controls_Manager::SLIDER,
714 'size_units' => [ 'px' ],
715 'range' => [
716 'px' => [
717 'min' => 5,
718 'max' => 100,
719 'step' => 1,
720 ]
721 ],
722 'selectors' => [
723 '{{WRAPPER}} .elementskit-navbar-nav > li > a .elementskit-submenu-indicator' => 'font-size: {{SIZE}}{{UNIT}};',
724 '{{WRAPPER}} .elementskit-navbar-nav > li > a .ekit-submenu-indicator-icon' => 'font-size: {{SIZE}}{{UNIT}};',
725 ]
726 ]
727 );
728
729 $this->add_responsive_control(
730 'ekit_submenu_item_indicator_font_size',
731 [
732 'label' => esc_html__( 'Child Indicator Font Size', 'elementskit-lite' ),
733 'type' => Controls_Manager::SLIDER,
734 'size_units' => [ 'px' ],
735 'range' => [
736 'px' => [
737 'min' => 10,
738 'max' => 100,
739 'step' => 1,
740 ]
741 ],
742 'selectors' => [
743 '{{WRAPPER}} .elementskit-navbar-nav > li ul li .elementskit-submenu-indicator' => 'font-size: {{SIZE}}{{UNIT}};',
744 ]
745 ]
746 );
747
748 $this->add_control(
749 'elementskit_style_tab_submenu_indicator_color',
750 [
751 'label' => esc_html__( 'Color', 'elementskit-lite' ),
752 'type' => Controls_Manager::COLOR,
753 'default' => '#101010',
754 'alpha' => false,
755 'selectors' => [
756 '{{WRAPPER}} .elementskit-navbar-nav > li > a .elementskit-submenu-indicator' => 'color: {{VALUE}}; fill: {{VALUE}}',
757 '{{WRAPPER}} .elementskit-navbar-nav > li > a .ekit-submenu-indicator-icon' => 'color: {{VALUE}}; fill: {{VALUE}}',
758 ],
759 ]
760 );
761
762 $this->add_group_control(
763 Group_Control_Background::get_type(),
764 [
765 'name' => 'elementskit_submenu_indicator_background',
766 'label' => esc_html__('Background', 'elementskit-lite'),
767 'types' => ['classic', 'gradient'],
768 'exclude' => ['image'],
769 'selector' => '{{WRAPPER}} .elementskit-navbar-nav > li > a .elementskit-submenu-indicator',
770 ]
771 );
772
773 $this->add_group_control(
774 Group_Control_Border::get_type(),
775 [
776 'name' => 'elementskit_submenu_indicator_border',
777 'label' => esc_html__( 'Border', 'elementskit-lite' ),
778 'selector' => '{{WRAPPER}} .elementskit-navbar-nav > li > a .elementskit-submenu-indicator',
779 'separator' => 'before',
780 ]
781 );
782
783 $this->add_responsive_control(
784 'elementskit_submenu_indicator_border_radius',
785 [
786 'label' => esc_html__( 'Border Radius', 'elementskit-lite' ),
787 'type' => Controls_Manager::DIMENSIONS,
788 'size_units' => [ 'px' ],
789 'selectors' => [
790 '{{WRAPPER}} .elementskit-navbar-nav > li > a .elementskit-submenu-indicator' => 'border-radius: {{TOP}}{{UNIT}} {{RIGHT}}{{UNIT}} {{BOTTOM}}{{UNIT}} {{LEFT}}{{UNIT}};',
791 '{{WRAPPER}} .elementskit-navbar-nav > li > a .ekit-submenu-indicator-icon' => 'border-radius: {{TOP}}{{UNIT}} {{RIGHT}}{{UNIT}} {{BOTTOM}}{{UNIT}} {{LEFT}}{{UNIT}};',
792 ],
793 ]
794 );
795
796 $this->add_responsive_control(
797 'ekit_submenu_indicator_spacing',
798 [
799 'label' => esc_html__('Margin', 'elementskit-lite'),
800 'type' => Controls_Manager::DIMENSIONS,
801 'size_units' => ['px', '%', 'em'],
802 'separator' => 'before',
803 'selectors' => [
804 '{{WRAPPER}} .elementskit-navbar-nav-default .elementskit-dropdown-has>a .elementskit-submenu-indicator' => 'margin: {{TOP}}{{UNIT}} {{RIGHT}}{{UNIT}} {{BOTTOM}}{{UNIT}} {{LEFT}}{{UNIT}};',
805 '{{WRAPPER}} .elementskit-navbar-nav-default .elementskit-dropdown-has>a .ekit-submenu-indicator-icon' => 'margin: {{TOP}}{{UNIT}} {{RIGHT}}{{UNIT}} {{BOTTOM}}{{UNIT}} {{LEFT}}{{UNIT}};',
806 ],
807 ]
808 );
809
810 //create Padding, Border, Radius
811 $this->add_responsive_control(
812 'elementskit_submenu_indicator_padding',
813 [
814 'label' => esc_html__('Padding', 'elementskit-lite'),
815 'type' => Controls_Manager::DIMENSIONS,
816 'size_units' => ['px', '%', 'em'],
817 'selectors' => [
818 '{{WRAPPER}} .elementskit-navbar-nav > li > a .elementskit-submenu-indicator' => 'padding: {{TOP}}{{UNIT}} {{RIGHT}}{{UNIT}} {{BOTTOM}}{{UNIT}} {{LEFT}}{{UNIT}};',
819 '{{WRAPPER}} .elementskit-navbar-nav > li > a .ekit-submenu-indicator-icon' => 'padding: {{TOP}}{{UNIT}} {{RIGHT}}{{UNIT}} {{BOTTOM}}{{UNIT}} {{LEFT}}{{UNIT}};',
820 ],
821 ]
822 );
823
824 $this->end_controls_section();
825
826 $this->start_controls_section(
827 'elementskit_style_tab_submenu_item',
828 [
829 'label' => esc_html__('Submenu Item', 'elementskit-lite'),
830 'tab' => Controls_Manager::TAB_STYLE,
831 ]
832 );
833
834 $this->add_group_control(
835 Group_Control_Typography::get_type(),
836 [
837 'name' => 'elementskit_menu_item_typography',
838 'label' => esc_html__( 'Typography', 'elementskit-lite' ),
839 'selector' => '{{WRAPPER}} .elementskit-navbar-nav .elementskit-submenu-panel > li > a',
840 ]
841 );
842
843 $this->add_responsive_control(
844 'elementskit_submenu_item_spacing',
845 [
846 'label' => esc_html__( 'Spacing', 'elementskit-lite' ),
847 'type' => Controls_Manager::DIMENSIONS,
848 'devices' => ['desktop', 'tablet'],
849 'desktop_default' => [
850 'top' => 15,
851 'right' => 15,
852 'bottom' => 15,
853 'left' => 15,
854 'unit' => 'px',
855 ],
856 'tablet_default' => [
857 'top' => 15,
858 'right' => 15,
859 'bottom' => 15,
860 'left' => 15,
861 'unit' => 'px',
862 ],
863 'size_units' => [ 'px' ],
864 'selectors' => [
865 '{{WRAPPER}} .elementskit-navbar-nav .elementskit-submenu-panel > li > a' => 'padding: {{TOP}}{{UNIT}} {{RIGHT}}{{UNIT}} {{BOTTOM}}{{UNIT}} {{LEFT}}{{UNIT}};',
866 ],
867 ]
868 );
869
870 $this->start_controls_tabs(
871 'elementskit_submenu_active_hover_tabs'
872 );
873
874 $this->start_controls_tab(
875 'elementskit_submenu_normal_tab',
876 [
877 'label' => esc_html__('Normal', 'elementskit-lite')
878 ]
879 );
880
881 $this->add_responsive_control(
882 'elementskit_submenu_item_color',
883 [
884 'label' => esc_html__( 'Item text color', 'elementskit-lite' ),
885 'type' => Controls_Manager::COLOR,
886 'default' => '#000000',
887 'selectors' => [
888 '{{WRAPPER}} .elementskit-navbar-nav .elementskit-submenu-panel > li > a' => 'color: {{VALUE}}',
889 ],
890
891 ]
892 );
893
894 $this->add_group_control(
895 Group_Control_Background::get_type(),
896 [
897 'name' => 'elementskit_menu_item_background',
898 'label' => esc_html__( 'Item background', 'elementskit-lite' ),
899 'types' => [ 'classic', 'gradient' ],
900 'selector' => '{{WRAPPER}} .elementskit-navbar-nav .elementskit-submenu-panel > li > a',
901 ]
902 );
903
904 $this->end_controls_tab();
905
906 $this->start_controls_tab(
907 'elementskit_submenu_hover_tab',
908 [
909 'label' => esc_html__('Hover', 'elementskit-lite')
910 ]
911 );
912
913 $this->add_responsive_control(
914 'elementskit_item_text_color_hover',
915 [
916 'label' => esc_html__( 'Item text color (hover)', 'elementskit-lite' ),
917 'type' => Controls_Manager::COLOR,
918 'default' => '#707070',
919 'selectors' => [
920 '{{WRAPPER}} .elementskit-navbar-nav .elementskit-submenu-panel > li > a:hover' => 'color: {{VALUE}}',
921 '{{WRAPPER}} .elementskit-navbar-nav .elementskit-submenu-panel > li > a:focus' => 'color: {{VALUE}}',
922 '{{WRAPPER}} .elementskit-navbar-nav .elementskit-submenu-panel > li > a:active' => 'color: {{VALUE}}',
923 '{{WRAPPER}} .elementskit-navbar-nav .elementskit-submenu-panel > li:hover > a' => 'color: {{VALUE}}',
924 ],
925 ]
926 );
927
928 $this->add_group_control(
929 Group_Control_Background::get_type(),
930 [
931 'name' => 'elementskit_menu_item_background_hover',
932 'label' => esc_html__( 'Item background (hover)', 'elementskit-lite' ),
933 'types' => [ 'classic', 'gradient' ],
934 'selector' => '
935 {{WRAPPER}} .elementskit-navbar-nav .elementskit-submenu-panel > li > a:hover,
936 {{WRAPPER}} .elementskit-navbar-nav .elementskit-submenu-panel > li > a:focus,
937 {{WRAPPER}} .elementskit-navbar-nav .elementskit-submenu-panel > li > a:active,
938 {{WRAPPER}} .elementskit-navbar-nav .elementskit-submenu-panel > li:hover > a',
939 ]
940 );
941
942 $this->end_controls_tab();
943
944 $this->start_controls_tab(
945 'elementskit_submenu_active_tab',
946 [
947 'label' => esc_html__('Active', 'elementskit-lite')
948 ]
949 );
950
951 $this->add_responsive_control(
952 'elementskit_nav_sub_menu_active_text_color',
953 [
954 'label' => esc_html__( 'Item text color (Active)', 'elementskit-lite' ),
955 'type' => Controls_Manager::COLOR,
956 'default' => '#707070',
957 'selectors' => [
958 '{{WRAPPER}} .elementskit-navbar-nav .elementskit-submenu-panel > li.current-menu-item > a' => 'color: {{VALUE}} !important'
959 ],
960 ]
961 );
962
963 $this->add_group_control(
964 Group_Control_Background::get_type(),
965 [
966 'name' => 'elementskit_nav_sub_menu_active_bg_color',
967 'label' => esc_html__( 'Item background (Active)', 'elementskit-lite' ),
968 'types' => ['classic', 'gradient'],
969 'selector' => '{{WRAPPER}} .elementskit-navbar-nav .elementskit-submenu-panel > li.current-menu-item > a',
970 ]
971 );
972
973 $this->end_controls_tab();
974
975 $this->end_controls_tabs();
976
977 $this->add_control(
978 'elementskit_menu_item_border_heading',
979 [
980 'label' => esc_html__( 'Sub Menu Items Border', 'elementskit-lite' ),
981 'type' => Controls_Manager::HEADING,
982 'separator' => 'before',
983 ]
984 );
985
986 $this->add_group_control(
987 Group_Control_Border::get_type(),
988 [
989 'name' => 'elementskit_menu_item_border',
990 'label' => esc_html__( 'Border', 'elementskit-lite' ),
991 'selector' => '{{WRAPPER}} .elementskit-navbar-nav .elementskit-submenu-panel > li > a',
992 ]
993 );
994
995 $this->add_control(
996 'elementskit_menu_item_border_last_child_heading',
997 [
998 'label' => esc_html__( 'Border Last Child', 'elementskit-lite' ),
999 'type' => Controls_Manager::HEADING,
1000 'separator' => 'before',
1001 ]
1002 );
1003
1004 $this->add_group_control(
1005 Group_Control_Border::get_type(),
1006 [
1007 'name' => 'elementskit_menu_item_border_last_child',
1008 'label' => esc_html__( 'Border last Child', 'elementskit-lite' ),
1009 'selector' => '{{WRAPPER}} .elementskit-navbar-nav .elementskit-submenu-panel > li:last-child > a',
1010 ]
1011 );
1012
1013 $this->add_control(
1014 'elementskit_menu_item_border_first_child_heading',
1015 [
1016 'label' => esc_html__( 'Border First Child', 'elementskit-lite' ),
1017 'type' => Controls_Manager::HEADING,
1018 'separator' => 'before',
1019 ]
1020 );
1021
1022 $this->add_group_control(
1023 Group_Control_Border::get_type(),
1024 [
1025 'name' => 'elementskit_menu_item_border_first_child',
1026 'label' => esc_html__( 'Border First Child', 'elementskit-lite' ),
1027 'selector' => '{{WRAPPER}} .elementskit-navbar-nav .elementskit-submenu-panel > li:first-child > a',
1028 ]
1029 );
1030
1031 $this->end_controls_section();
1032
1033 $this->start_controls_section(
1034 'elementskit_style_tab_submenu_panel',
1035 [
1036 'label' => esc_html__('Submenu Panel', 'elementskit-lite'),
1037 'tab' => Controls_Manager::TAB_STYLE,
1038 ]
1039 );
1040
1041 $this->add_responsive_control(
1042 'sub_panel_padding',
1043 [
1044 'label' => esc_html__('Padding', 'elementskit-lite'),
1045 'type' => Controls_Manager::DIMENSIONS,
1046 'default' => [
1047 'top' => '15',
1048 'bottom' => '15',
1049 'left' => '0',
1050 'right' => '0',
1051 'isLinked' => false,
1052 ],
1053 'selectors' => [
1054 '{{WRAPPER}} .elementskit-submenu-panel' => 'padding: {{TOP}}{{UNIT}} {{RIGHT}}{{UNIT}} {{BOTTOM}}{{UNIT}} {{LEFT}}{{UNIT}};',
1055 ],
1056 ]
1057 );
1058
1059 $this->add_group_control(
1060 Group_Control_Border::get_type(),
1061 [
1062 'name' => 'elementskit_panel_submenu_border',
1063 'label' => esc_html__( 'Panel Menu Border', 'elementskit-lite' ),
1064 'selector' => '{{WRAPPER}} .elementskit-navbar-nav .elementskit-submenu-panel',
1065 ]
1066 );
1067
1068 $this->add_group_control(
1069 Group_Control_Background::get_type(),
1070 [
1071 'name' => 'elementskit_submenu_container_background',
1072 'label' => esc_html__( 'Container background', 'elementskit-lite' ),
1073 'types' => [ 'classic','gradient' ],
1074 'selector' => '{{WRAPPER}} .elementskit-navbar-nav .elementskit-submenu-panel',
1075 ]
1076 );
1077
1078 $this->add_responsive_control(
1079 'elementskit_submenu_panel_border_radius',
1080 [
1081 'label' => esc_html__( 'Border Radius', 'elementskit-lite' ),
1082 'type' => Controls_Manager::DIMENSIONS,
1083 'desktop_default' => [
1084 'top' => 0,
1085 'right' => 0,
1086 'bottom' => 0,
1087 'left' => 0,
1088 'unit' => 'px',
1089 ],
1090 'tablet_default' => [
1091 'top' => 0,
1092 'right' => 0,
1093 'bottom' => 0,
1094 'left' => 0,
1095 'unit' => 'px',
1096 ],
1097 'size_units' => [ 'px' ],
1098 'selectors' => [
1099 '{{WRAPPER}} .elementskit-navbar-nav .elementskit-submenu-panel' => 'border-radius: {{TOP}}{{UNIT}} {{RIGHT}}{{UNIT}} {{BOTTOM}}{{UNIT}} {{LEFT}}{{UNIT}};',
1100 ],
1101 ]
1102 );
1103
1104 $this->add_responsive_control(
1105 'elementskit_submenu_container_width',
1106 [
1107 'label' => esc_html__( 'Conatiner width', 'elementskit-lite' ),
1108 'type' => Controls_Manager::TEXT,
1109 'devices' => [ 'desktop' ],
1110 'desktop_default' => '220px',
1111 'tablet_default' => '200px',
1112 'selectors' => [
1113 '{{WRAPPER}} .elementskit-navbar-nav .elementskit-submenu-panel' => 'min-width: {{VALUE}};',
1114 ]
1115 ]
1116 );
1117
1118
1119 $this->add_group_control(
1120 Group_Control_Box_Shadow::get_type(),
1121 [
1122 'name' => 'elementskit_panel_box_shadow',
1123 'label' => esc_html__( 'Box Shadow', 'elementskit-lite' ),
1124 'selector' => '{{WRAPPER}} .elementskit-navbar-nav .elementskit-submenu-panel',
1125 ]
1126 );
1127
1128 $this->end_controls_section();
1129
1130 $this->start_controls_section(
1131 'elementskit_menu_toggle_style_tab',
1132 [
1133 'label' => esc_html__( 'Hamburger Menu', 'elementskit-lite' ),
1134 'tab' => Controls_Manager::TAB_STYLE,
1135 ]
1136 );
1137
1138 $this->add_control(
1139 'elementskit_menu_toggle_style_title',
1140 [
1141 'label' => esc_html__( 'Hamburger Toggle', 'elementskit-lite' ),
1142 'type' => Controls_Manager::HEADING,
1143 'separator' => 'before',
1144 ]
1145 );
1146
1147 $this->add_responsive_control(
1148 'elementskit_menu_toggle_icon_position',
1149 [
1150 'label' => esc_html__( 'Position', 'elementskit-lite' ),
1151 'type' => Controls_Manager::CHOOSE,
1152 'label_block' => false,
1153 'options' => [
1154 'left' => [
1155 'title' => esc_html__( 'Top', 'elementskit-lite' ),
1156 'icon' => 'fa fa-angle-left',
1157 ],
1158 'right' => [
1159 'title' => esc_html__( 'Middle', 'elementskit-lite' ),
1160 'icon' => 'fa fa-angle-right',
1161 ],
1162 ],
1163 'default' => 'right',
1164 'selectors' => [
1165 '{{WRAPPER}} button.elementskit-menu-hamburger' => 'float: {{VALUE}}',
1166 ],
1167 ]
1168 );
1169
1170 $this->add_responsive_control(
1171 'elementskit_menu_toggle_spacing',
1172 [
1173 'label' => esc_html__( 'Padding', 'elementskit-lite' ),
1174 'type' => Controls_Manager::DIMENSIONS,
1175 'size_units' => [ 'px', ],
1176 'devices' => ['desktop', 'tablet'],
1177 'tablet_default' => [
1178 'top' => '8',
1179 'right' => '8',
1180 'bottom' => '8',
1181 'left' => '8',
1182 'unit' => 'px',
1183 ],
1184 'selectors' => [
1185 '{{WRAPPER}} button.elementskit-menu-hamburger' => 'padding: {{TOP}}{{UNIT}} {{RIGHT}}{{UNIT}} {{BOTTOM}}{{UNIT}} {{LEFT}}{{UNIT}};',
1186 ],
1187 ]
1188 );
1189
1190 $this->add_responsive_control(
1191 'elementskit_menu_toggle_width',
1192 [
1193 'label' => esc_html__( 'Width', 'elementskit-lite' ),
1194 'type' => Controls_Manager::SLIDER,
1195 'size_units' => [ 'px' ],
1196 'range' => [
1197 'px' => [
1198 'min' => 45,
1199 'max' => 100,
1200 'step' => 1,
1201 ],
1202 ],
1203 'devices' => ['desktop', 'tablet'],
1204 'tablet_default' => [
1205 'unit' => 'px',
1206 'size' => 45,
1207 ],
1208 'selectors' => [
1209 '{{WRAPPER}} button.elementskit-menu-hamburger' => 'width: {{SIZE}}{{UNIT}};',
1210 ],
1211 ]
1212 );
1213
1214 $this->add_responsive_control(
1215 'elementskit_menu_toggle_border_radius',
1216 [
1217 'label' => esc_html__( 'Border Radius', 'elementskit-lite' ),
1218 'type' => Controls_Manager::SLIDER,
1219 'size_units' => [ 'px', '%' ],
1220 'range' => [
1221 'px' => [
1222 'min' => 0,
1223 'max' => 100,
1224 'step' => 1,
1225 ],
1226 '%' => [
1227 'min' => 0,
1228 'max' => 100,
1229 ],
1230 ],
1231 'devices' => ['desktop', 'tablet'],
1232 'tablet_default' => [
1233 'unit' => 'px',
1234 'size' => 3,
1235 ],
1236 'selectors' => [
1237 '{{WRAPPER}} button.elementskit-menu-hamburger' => 'border-radius: {{SIZE}}{{UNIT}};',
1238 ],
1239 ]
1240 );
1241
1242 $this->add_responsive_control(
1243 'elementskit_menu_open_typography',
1244 [
1245 'label' => esc_html__( 'Icon Size', 'elementskit-lite' ),
1246 'type' => Controls_Manager::SLIDER,
1247 'size_units' => [ 'px' ],
1248 'range' => [
1249 'px' => [
1250 'min' => 15,
1251 'max' => 100,
1252 'step' => 1,
1253 ],
1254 ],
1255 'selectors' => [
1256 '{{WRAPPER}} button.elementskit-menu-hamburger > .ekit-menu-icon' => 'font-size: {{SIZE}}{{UNIT}};',
1257 ],
1258 'condition' => [
1259 'elementskit_hamburger_icon[value]!' => '',
1260 ],
1261 ]
1262 );
1263
1264 $this->start_controls_tabs(
1265 'elementskit_menu_toggle_normal_and_hover_tabs'
1266 );
1267
1268 $this->start_controls_tab(
1269 'elementskit_menu_toggle_normal',
1270 [
1271 'label' => esc_html__( 'Normal', 'elementskit-lite' ),
1272 ]
1273 );
1274
1275 $this->add_group_control(
1276 Group_Control_Background::get_type(),
1277 [
1278 'name' => 'elementskit_menu_toggle_background',
1279 'label' => esc_html__( 'Background', 'elementskit-lite' ),
1280 'types' => [ 'classic' ],
1281 'selector' => '{{WRAPPER}} button.elementskit-menu-hamburger',
1282 ]
1283 );
1284
1285 $this->add_group_control(
1286 Group_Control_Border::get_type(),
1287 [
1288 'name' => 'elementskit_menu_toggle_border',
1289 'label' => esc_html__( 'Border', 'elementskit-lite' ),
1290 'separator' => 'before',
1291 'selector' => '{{WRAPPER}} button.elementskit-menu-hamburger',
1292 ]
1293 );
1294
1295 $this->add_control(
1296 'elementskit_menu_toggle_icon_color',
1297 [
1298 'label' => esc_html__( 'Hamburger Icon Color', 'elementskit-lite' ),
1299 'type' => Controls_Manager::COLOR,
1300 'default' => 'rgba(0, 0, 0, 0.5)',
1301 'selectors' => [
1302 '{{WRAPPER}} button.elementskit-menu-hamburger .elementskit-menu-hamburger-icon' => 'background-color: {{VALUE}}',
1303 '{{WRAPPER}} button.elementskit-menu-hamburger > .ekit-menu-icon' => 'color: {{VALUE}}',
1304 ],
1305 ]
1306 );
1307
1308 $this->end_controls_tab();
1309
1310 $this->start_controls_tab(
1311 'elementskit_menu_toggle_hover',
1312 [
1313 'label' => esc_html__( 'Hover', 'elementskit-lite' ),
1314 ]
1315 );
1316
1317 $this->add_group_control(
1318 Group_Control_Background::get_type(),
1319 [
1320 'name' => 'elementskit_menu_toggle_background_hover',
1321 'label' => esc_html__( 'Background', 'elementskit-lite' ),
1322 'types' => [ 'classic' ],
1323 'selector' => '{{WRAPPER}} button.elementskit-menu-hamburger:hover',
1324 ]
1325 );
1326
1327 $this->add_group_control(
1328 Group_Control_Border::get_type(),
1329 [
1330 'name' => 'elementskit_menu_toggle_border_hover',
1331 'label' => esc_html__( 'Border', 'elementskit-lite' ),
1332 'separator' => 'before',
1333 'selector' => '{{WRAPPER}} button.elementskit-menu-hamburger:hover',
1334 ]
1335 );
1336
1337 $this->add_control(
1338 'elementskit_menu_toggle_icon_color_hover',
1339 [
1340 'label' => esc_html__( 'Hamburger Icon Color', 'elementskit-lite' ),
1341 'type' => Controls_Manager::COLOR,
1342 'default' => 'rgba(0, 0, 0, 0.5)',
1343 'selectors' => [
1344 '{{WRAPPER}} button.elementskit-menu-hamburger:hover .elementskit-menu-hamburger-icon' => 'background-color: {{VALUE}}',
1345 '{{WRAPPER}} button.elementskit-menu-hamburger:hover > .ekit-menu-icon' => 'color: {{VALUE}}',
1346 ],
1347 ]
1348 );
1349
1350 $this->end_controls_tab();
1351
1352 $this->end_controls_tabs();
1353
1354
1355 $this->add_control(
1356 'elementskit_menu_close_style_title',
1357 [
1358 'label' => esc_html__( 'Close Toggle', 'elementskit-lite' ),
1359 'type' => Controls_Manager::HEADING,
1360 'separator' => 'before',
1361 ]
1362 );
1363
1364 $this->add_group_control(
1365 Group_Control_Typography::get_type(),
1366 [
1367 'name' => 'elementskit_menu_close_typography',
1368 'label' => esc_html__( 'Typography', 'elementskit-lite' ),
1369 'selector' => '{{WRAPPER}} button.elementskit-menu-close',
1370 ]
1371 );
1372
1373 $this->add_responsive_control(
1374 'elementskit_menu_close_spacing',
1375 [
1376 'label' => esc_html__( 'Padding', 'elementskit-lite' ),
1377 'type' => Controls_Manager::DIMENSIONS,
1378 'size_units' => [ 'px', ],
1379 'devices' => ['desktop', 'tablet'],
1380 'tablet_default' => [
1381 'top' => '8',
1382 'right' => '8',
1383 'bottom' => '8',
1384 'left' => '8',
1385 'unit' => 'px',
1386 ],
1387 'selectors' => [
1388 '{{WRAPPER}} button.elementskit-menu-close' => 'padding: {{TOP}}{{UNIT}} {{RIGHT}}{{UNIT}} {{BOTTOM}}{{UNIT}} {{LEFT}}{{UNIT}};',
1389 ],
1390 ]
1391 );
1392
1393 $this->add_responsive_control(
1394 'elementskit_menu_close_margin',
1395 [
1396 'label' => esc_html__( 'Margin', 'elementskit-lite' ),
1397 'type' => Controls_Manager::DIMENSIONS,
1398 'size_units' => [ 'px', ],
1399 'devices' => ['desktop', 'tablet'],
1400 'tablet_default' => [
1401 'top' => '12',
1402 'right' => '12',
1403 'bottom' => '12',
1404 'left' => '12',
1405 'unit' => 'px',
1406 ],
1407 'selectors' => [
1408 '{{WRAPPER}} button.elementskit-menu-close' => 'margin: {{TOP}}{{UNIT}} {{RIGHT}}{{UNIT}} {{BOTTOM}}{{UNIT}} {{LEFT}}{{UNIT}};',
1409 ],
1410 ]
1411 );
1412
1413 $this->add_responsive_control(
1414 'elementskit_menu_close_width',
1415 [
1416 'label' => esc_html__( 'Width', 'elementskit-lite' ),
1417 'type' => Controls_Manager::SLIDER,
1418 'size_units' => [ 'px' ],
1419 'range' => [
1420 'px' => [
1421 'min' => 45,
1422 'max' => 100,
1423 'step' => 1,
1424 ],
1425 ],
1426 'devices' => ['desktop', 'tablet'],
1427 'tablet_default' => [
1428 'unit' => 'px',
1429 'size' => 45,
1430 ],
1431 'selectors' => [
1432 '{{WRAPPER}} button.elementskit-menu-close' => 'width: {{SIZE}}{{UNIT}};',
1433 ],
1434 ]
1435 );
1436
1437 $this->add_responsive_control(
1438 'elementskit_menu_close_border_radius',
1439 [
1440 'label' => esc_html__( 'Border Radius', 'elementskit-lite' ),
1441 'type' => Controls_Manager::SLIDER,
1442 'size_units' => [ 'px', '%' ],
1443 'range' => [
1444 'px' => [
1445 'min' => 0,
1446 'max' => 100,
1447 'step' => 1,
1448 ],
1449 '%' => [
1450 'min' => 0,
1451 'max' => 100,
1452 ],
1453 ],
1454 'devices' => ['desktop', 'tablet'],
1455 'tablet_default' => [
1456 'unit' => 'px',
1457 'size' => 3,
1458 ],
1459 'selectors' => [
1460 '{{WRAPPER}} button.elementskit-menu-close' => 'border-radius: {{SIZE}}{{UNIT}};',
1461 ],
1462 ]
1463 );
1464
1465 $this->start_controls_tabs(
1466 'elementskit_menu_close_normal_and_hover_tabs'
1467 );
1468
1469 $this->start_controls_tab(
1470 'elementskit_menu_close_normal',
1471 [
1472 'label' => esc_html__( 'Normal', 'elementskit-lite' ),
1473 ]
1474 );
1475
1476 $this->add_group_control(
1477 Group_Control_Background::get_type(),
1478 [
1479 'name' => 'elementskit_menu_close_background',
1480 'label' => esc_html__( 'Background', 'elementskit-lite' ),
1481 'types' => [ 'classic' ],
1482 'selector' => '{{WRAPPER}} button.elementskit-menu-close',
1483 ]
1484 );
1485
1486 $this->add_group_control(
1487 Group_Control_Border::get_type(),
1488 [
1489 'name' => 'elementskit_menu_close_border',
1490 'label' => esc_html__( 'Border', 'elementskit-lite' ),
1491 'separator' => 'before',
1492 'selector' => '{{WRAPPER}} button.elementskit-menu-close',
1493 ]
1494 );
1495
1496 $this->add_control(
1497 'elementskit_menu_close_icon_color',
1498 [
1499 'label' => esc_html__( 'Hamburger Icon Color', 'elementskit-lite' ),
1500 'type' => Controls_Manager::COLOR,
1501 'default' => 'rgba(51, 51, 51, 1)',
1502 'selectors' => [
1503 '{{WRAPPER}} button.elementskit-menu-close' => 'color: {{VALUE}}',
1504 ],
1505 ]
1506 );
1507
1508 $this->end_controls_tab();
1509
1510 $this->start_controls_tab(
1511 'elementskit_menu_close_hover',
1512 [
1513 'label' => esc_html__( 'Hover', 'elementskit-lite' ),
1514 ]
1515 );
1516
1517 $this->add_group_control(
1518 Group_Control_Background::get_type(),
1519 [
1520 'name' => 'elementskit_menu_close_background_hover',
1521 'label' => esc_html__( 'Background', 'elementskit-lite' ),
1522 'types' => [ 'classic' ],
1523 'selector' => '{{WRAPPER}} button.elementskit-menu-close:hover',
1524 ]
1525 );
1526
1527 $this->add_group_control(
1528 Group_Control_Border::get_type(),
1529 [
1530 'name' => 'elementskit_menu_close_border_hover',
1531 'label' => esc_html__( 'Border', 'elementskit-lite' ),
1532 'separator' => 'before',
1533 'selector' => '{{WRAPPER}} button.elementskit-menu-close:hover',
1534 ]
1535 );
1536
1537 $this->add_control(
1538 'elementskit_menu_close_icon_color_hover',
1539 [
1540 'label' => esc_html__( 'Hamburger Icon Color', 'elementskit-lite' ),
1541 'type' => Controls_Manager::COLOR,
1542 'default' => 'rgba(0, 0, 0, 0.5)',
1543 'selectors' => [
1544 '{{WRAPPER}} button.elementskit-menu-close:hover' => 'color: {{VALUE}}',
1545 ],
1546 ]
1547 );
1548
1549 $this->end_controls_tab();
1550
1551 $this->end_controls_tabs();
1552
1553 $this->end_controls_section();
1554
1555 $this->start_controls_section(
1556 'elementskit_mobile_menu_logo_style_tab',
1557 [
1558 'label' => esc_html__( 'Mobile Menu Logo', 'elementskit-lite' ),
1559 'tab' => Controls_Manager::TAB_STYLE,
1560 ]
1561 );
1562
1563 $this->add_responsive_control(
1564 'elementskit_mobile_menu_logo_width',
1565 [
1566 'label' => esc_html__( 'Width', 'elementskit-lite' ),
1567 'type' => Controls_Manager::SLIDER,
1568 'size_units' => [ 'px' ],
1569 'range' => [
1570 'px' => [
1571 'min' => 0,
1572 'max' => 500,
1573 'step' => 5,
1574 ],
1575 ],
1576 'tablet_default' => [
1577 'unit' => 'px',
1578 'size' => 160,
1579 ],
1580 'mobile_default' => [
1581 'unit' => 'px',
1582 'size' => 120,
1583 ],
1584 'selectors' => [
1585 '{{WRAPPER}} .elementskit-nav-logo > img' => 'max-width: {{SIZE}}{{UNIT}};',
1586 ],
1587 ]
1588 );
1589
1590 $this->add_responsive_control(
1591 'elementskit_mobile_menu_logo_height',
1592 [
1593 'label' => esc_html__( 'Height', 'elementskit-lite' ),
1594 'type' => Controls_Manager::SLIDER,
1595 'size_units' => [ 'px' ],
1596 'range' => [
1597 'px' => [
1598 'min' => 0,
1599 'max' => 200,
1600 'step' => 1,
1601 ],
1602 ],
1603 'tablet_default' => [
1604 'unit' => 'px',
1605 'size' => 60,
1606 ],
1607 'mobile_default' => [
1608 'unit' => 'px',
1609 'size' => 50,
1610 ],
1611 'selectors' => [
1612 '{{WRAPPER}} .elementskit-nav-logo > img' => 'max-height: {{SIZE}}{{UNIT}};',
1613 ],
1614 ]
1615 );
1616
1617 $this->add_responsive_control(
1618 'elementskit_mobile_menu_logo_margin',
1619 [
1620 'label' => esc_html__( 'Margin', 'elementskit-lite' ),
1621 'type' => Controls_Manager::DIMENSIONS,
1622 'size_units' => [ 'px', '%', 'em' ],
1623 'tablet_default' => [
1624 'top' => '5',
1625 'right' => '0',
1626 'bottom' => '5',
1627 'left' => '0',
1628 'unit' => 'px',
1629 'isLinked' => 'false',
1630 ],
1631 'selectors' => [
1632 '{{WRAPPER}} .elementskit-nav-logo' => 'margin: {{TOP}}{{UNIT}} {{RIGHT}}{{UNIT}} {{BOTTOM}}{{UNIT}} {{LEFT}}{{UNIT}};',
1633 ],
1634 ]
1635 );
1636
1637 $this->add_responsive_control(
1638 'elementskit_mobile_menu_logo_padding',
1639 [
1640 'label' => esc_html__( 'Padding', 'elementskit-lite' ),
1641 'type' => Controls_Manager::DIMENSIONS,
1642 'size_units' => [ 'px', '%', 'em' ],
1643 'tablet_default' => [
1644 'top' => '5',
1645 'right' => '5',
1646 'bottom' => '5',
1647 'left' => '5',
1648 'unit' => 'px',
1649 'isLinked' => 'true',
1650 ],
1651 'selectors' => [
1652 '{{WRAPPER}} .elementskit-nav-logo' => 'padding: {{TOP}}{{UNIT}} {{RIGHT}}{{UNIT}} {{BOTTOM}}{{UNIT}} {{LEFT}}{{UNIT}};',
1653 ],
1654 ]
1655 );
1656
1657 $this->end_controls_section();
1658
1659 $this->insert_pro_message();
1660 }
1661
1662 protected function render( ) {
1663 $settings = $this->get_settings_for_display();
1664
1665 // Return if menu not selected
1666 if(empty($settings['elementskit_nav_menu'])) {
1667 return;
1668 }
1669
1670 $hamburger_icon_value = '';
1671 $hamburger_icon_type = '';
1672 if ($settings['elementskit_hamburger_icon'] != '' && $settings['elementskit_hamburger_icon']) {
1673 if ($settings['elementskit_hamburger_icon']['library'] !== 'svg') {
1674 $hamburger_icon_value = esc_attr($settings['elementskit_hamburger_icon']['value']);
1675 $hamburger_icon_type = esc_attr('icon');
1676 } else {
1677 $hamburger_icon_value = esc_url($settings['elementskit_hamburger_icon']['value']['url']);
1678 $hamburger_icon_type = esc_attr('url');
1679 }
1680 }
1681
1682 // Responsive menu breakpoint
1683 $responsive_menu_breakpoint = '';
1684 if ($settings['elementskit_responsive_breakpoint'] === 'ekit_menu_responsive_tablet') {
1685 $responsive_menu_breakpoint = "1024";
1686 } else {
1687 $responsive_menu_breakpoint = "767";
1688 }
1689
1690 ?>
1691 <nav class="ekit-wid-con <?php echo esc_attr($settings['elementskit_responsive_breakpoint']); ?>"
1692 data-hamburger-icon="<?php echo esc_attr($hamburger_icon_value); ?>"
1693 data-hamburger-icon-type="<?php echo esc_attr($hamburger_icon_type); ?>"
1694 data-responsive-breakpoint="<?php echo esc_attr($responsive_menu_breakpoint); ?>"
1695 data-close-on-anchor="<?php echo esc_attr($settings['elementskit_close_menu_on_anchor_click']); ?>">
1696 <?php $this->render_raw(); ?>
1697 </nav>
1698 <?php
1699 }
1700
1701 protected function render_raw( ) {
1702 $settings = $this->get_settings_for_display();
1703
1704 if($settings['elementskit_nav_menu'] != '' && wp_get_nav_menu_items($settings['elementskit_nav_menu']) !== false && count(wp_get_nav_menu_items($settings['elementskit_nav_menu'])) > 0){
1705 /**
1706 * Hamburger Toggler Button
1707 */
1708 ?>
1709 <button class="elementskit-menu-hamburger elementskit-menu-toggler" type="button" aria-label="hamburger-icon">
1710 <?php
1711 /**
1712 * Show Default Icon
1713 */
1714 if ( $settings['elementskit_hamburger_icon']['value'] === '' ):
1715 ?>
1716 <span class="elementskit-menu-hamburger-icon"></span><span class="elementskit-menu-hamburger-icon"></span><span class="elementskit-menu-hamburger-icon"></span>
1717 <?php
1718 endif;
1719
1720 /**
1721 * Show Icon or, SVG
1722 */
1723 Icons_Manager::render_icon( $settings['elementskit_hamburger_icon'], [ 'aria-hidden' => 'true', 'class' => 'ekit-menu-icon' ] );
1724 ?>
1725 </button>
1726 <?php
1727
1728 /**
1729 * Main Menu Container
1730 */
1731 $link = $target = $nofollow = '';
1732
1733 if (isset($settings['elementskit_nav_menu_logo_link_to']) && $settings['elementskit_nav_menu_logo_link_to'] == 'home') {
1734 $link = get_home_url();
1735 }elseif(isset($settings['elementskit_nav_menu_logo_link'])){
1736 $link = $settings['elementskit_nav_menu_logo_link']['url'];
1737 $target = ($settings['elementskit_nav_menu_logo_link']['is_external'] != "on" ? "" : "_blank");
1738 $nofollow = ($settings['elementskit_nav_menu_logo_link']['nofollow'] != "on" ? "" : "nofollow");
1739 }
1740
1741 $markup = '<div class="elementskit-nav-identity-panel">';
1742
1743 // Use an if statement to conditionally display the site logo
1744 $ekit_nav_menu_logo = !empty($settings['elementskit_nav_menu_logo']) ? $settings['elementskit_nav_menu_logo'] : [];
1745 if (!empty($ekit_nav_menu_logo['id']) && !empty($ekit_nav_menu_logo['url'])) :
1746 // $nav_logo_html = \Elementskit_Lite\Utils::get_attachment_image_html($settings, 'elementskit_nav_menu_logo', 'full');
1747
1748 $nav_logo_html = sprintf(
1749 '<img src="%s" title="%s" alt="%s" decoding="async" />',
1750 esc_url($ekit_nav_menu_logo['url']),
1751 Control_Media::get_image_title($ekit_nav_menu_logo),
1752 Control_Media::get_image_alt($ekit_nav_menu_logo)
1753 );
1754
1755 $markup .= sprintf(
1756 '<a class="elementskit-nav-logo" href="%1$s" target="%2$s" rel="%3$s">%4$s</a>',
1757 esc_url($link),
1758 esc_attr($target),
1759 esc_attr($nofollow),
1760 $nav_logo_html
1761 );
1762 endif;
1763
1764 $markup .= '<button class="elementskit-menu-close elementskit-menu-toggler" type="button">X</button></div>';
1765
1766 $container_classes = [
1767 'elementskit-menu-container elementskit-menu-offcanvas-elements elementskit-navbar-nav-default',
1768 'ekit-nav-menu-one-page-' . $settings['elementskit_one_page_enable'],
1769 !empty($settings['elementskit_nav_dropdown_as']) ? $settings['elementskit_nav_dropdown_as'] : 'ekit-nav-dropdown-hover',
1770 ];
1771
1772 $args = [
1773 'items_wrap' => '<ul id="%1$s" class="%2$s">%3$s</ul>' . $markup,
1774 'container' => 'div',
1775 'container_id' => 'ekit-megamenu-' . $settings['elementskit_nav_menu'],
1776 'container_class' => join(' ', $container_classes),
1777 'menu' => $settings['elementskit_nav_menu'],
1778 'menu_class' => 'elementskit-navbar-nav ' . $settings['elementskit_main_menu_position'] .' submenu-click-on-'. $settings['submenu_click_area'],
1779 'depth' => 4,
1780 'echo' => true,
1781 'fallback_cb' => 'wp_page_menu',
1782 ];
1783
1784 // set walker conditionally if mega menu module is active or not
1785 if(class_exists('\ElementsKit_Lite\ElementsKit_Menu_Walker')) {
1786 $args['walker'] = new \ElementsKit_Lite\ElementsKit_Menu_Walker();
1787 } else {
1788 if (!class_exists('\ElementsKit_Lite\ElementsKit_Seconday_Menu_Walker')) {
1789 include dirname(__FILE__) . '/nav-menu-walker.php';
1790 }
1791 $args['walker'] = new \ElementsKit_Lite\ElementsKit_Seconday_Menu_Walker();
1792 }
1793
1794 // set submenu indicator icon
1795 $args['submenu_indicator_icon'] = $this->get_indicator_icon($settings);
1796
1797 // WP 6.1 submenu issue
1798 if(version_compare(get_bloginfo('version'), '6.1', '>=')){
1799 unset($args['depth']);
1800 }
1801
1802 wp_nav_menu($args);
1803
1804 /**
1805 * Mobile Menu Overlay
1806 */
1807 ?>
1808
1809 <div class="elementskit-menu-overlay elementskit-menu-offcanvas-elements elementskit-menu-toggler ekit-nav-menu--overlay"></div><?php
1810
1811
1812 /**
1813 * Editor: Widget Empty Fallback on Responsive View
1814 */
1815 if ( Plugin::$instance->editor->is_edit_mode() ) : ?>
1816 <span class="ekit-nav-menu--empty-fallback">&nbsp;</span>
1817 <?php endif;
1818 }
1819 }
1820
1821 protected function get_indicator_icon($settings) {
1822 extract($settings);
1823
1824 $icon_html = '';
1825 $indicator_class = 'elementskit-submenu-indicator';
1826
1827 // if ElementsKit Pro activate and licenced is activated
1828 if (\ElementsKit_Lite::license_status() === 'valid') {
1829 if(!empty($elementskit_submenu_indicator_icon['value'])) {
1830 return Icons_Manager::try_get_icon_html($settings['elementskit_submenu_indicator_icon'], ['class' => $indicator_class, 'aria-hidden' => 'true']);
1831 }
1832 } elseif(!empty($elementskit_style_tab_submenu_item_arrow)) {
1833 $icon_class_map = [
1834 'elementskit_line_arrow' => 'icon-down-arrow1',
1835 'elementskit_plus_icon' => 'icon-plus',
1836 'elementskit_fill_arrow' => 'icon-arrow-point-to-down',
1837 'elementskit_none' => 'icon-none'
1838 ];
1839
1840 $selected_arrow = $elementskit_style_tab_submenu_item_arrow;
1841
1842 if (isset($icon_class_map[$selected_arrow])) {
1843 return sprintf('<i aria-hidden="true" class="icon %1$s %2$s"></i>', $icon_class_map[$selected_arrow], $indicator_class);
1844 }
1845 }
1846
1847 return $icon_html;
1848 }
1849 }
1850