HEX
Server: Apache/2.4.52 (Ubuntu)
System: Linux ip-10-0-8-47 6.8.0-1021-aws #23~22.04.1-Ubuntu SMP Tue Dec 10 16:31:58 UTC 2024 aarch64
User: ubuntu (1000)
PHP: 8.1.2-1ubuntu2.22
Disabled: NONE
Upload Files
File: /var/www/javaapp.co.uk/wp-content/plugins/happy-elementor-addons/widgets/navigation-menu/widget.php
<?php
/**
 * Nav Menu widget class
 *
 * @package Happy_Addons
 */
namespace Happy_Addons\Elementor\Widget;

use Elementor\Controls_Manager;
use Elementor\Group_Control_Border;
use Elementor\Group_Control_Box_Shadow;
use Elementor\Group_Control_Typography;
use Elementor\Core\Schemes\Typography;
use Elementor\Group_Control_Background;
use Elementor\Icons_Manager;


defined( 'ABSPATH' ) || die();

require(HAPPY_ADDONS_DIR_PATH . 'extensions/walker-nav-menu.php');
use \Happy_Addons\Elementor\Extension\HANav_Menu_Walker;

class Navigation_Menu extends Base {

	/**
	 * Get widget title.
	 */
	public function get_title() {
		return __( 'Nav Menu', 'happy-elementor-addons' );
	}

	public function get_custom_help_url() {
		return 'https://happyaddons.com/docs/happy-addons-for-elementor/widgets/navigation-menu/';
	}

	/**
	 * Get widget icon.
	 */
	public function get_icon() {
		return 'hm hm-clip-board';
	}

	public function get_keywords() {
		return [ 'nav', 'menu', 'nav menu', 'navigation', 'Nav Menu', 'Navigation Menu' ];
	}

	/**
     * Get a list of all Navigation Menu
     *
     * @return array
     */
    public function get_menus() {
        $list = [];
        $menus = wp_get_nav_menus();
        foreach ($menus as $menu) {
            $list[$menu->slug] = $menu->name;
        }

        return $list;
    }

	/**
	 * Register widget content controls
	 */
	protected function register_content_controls() {
		$this->ha_nav_menu_content_controls();
	}

	protected function ha_nav_menu_content_controls() {

        $this->start_controls_section(
            '_section_nav_menu_settings',
            [
                'label' => __('Nav Menu', 'happy-elementor-addons'),
                'tab' => Controls_Manager::TAB_CONTENT,
            ]
        );

        $this->add_control(
            'nav_menu_list',
            [
                'label'     => __('Select menu', 'happy-elementor-addons'),
                'type'      => Controls_Manager::SELECT,
                'options'   => $this->get_menus(),
            ]
        );

        $this->add_control(
            'nav_menu_position',
            [
                'label' => __( 'Alignment', 'happy-elementor-addons' ),
				'type' => Controls_Manager::CHOOSE,
				'options' => [
					'flex-start' => [
						'title' => __( 'Left', 'happy-elementor-addons' ),
						'icon' => 'eicon-h-align-left',
					],
					'center' => [
						'title' => __( 'Center', 'happy-elementor-addons' ),
						'icon' => 'eicon-h-align-center',
					],
					'flex-end' => [
						'title' => __( 'Right', 'happy-elementor-addons' ),
						'icon' => 'eicon-h-align-right',
					],
				],
				'toggle' => true,
				'default' => 'flex-end',
				'selectors' => [
					'{{WRAPPER}} .ha-navigation-menu-wrapper' => 'justify-content: {{VALUE}};',
				]
            ]
        );

		$this->add_control(
            '_heading_nav_menu_responsive',
            [
                'label' => __('Responsive', 'happy-elementor-addons'),
                'type' => Controls_Manager::HEADING,
                'separator' => 'before',
            ]
        );

		$this->add_control(
            'nav_menu_responsive_position',
            [
                'label' => __( 'Alignment', 'happy-elementor-addons' ),
				'type' => Controls_Manager::CHOOSE,
				'options' => [
					'flex-start' => [
						'title' => __( 'Left', 'happy-elementor-addons' ),
						'icon' => 'eicon-h-align-left',
					],
					'center' => [
						'title' => __( 'Center', 'happy-elementor-addons' ),
						'icon' => 'eicon-h-align-center',
					],
					'flex-end' => [
						'title' => __( 'Right', 'happy-elementor-addons' ),
						'icon' => 'eicon-h-align-right',
					],
				],
				'toggle' => true,
				'default' => 'flex-end',
				'selectors' => [
					'{{WRAPPER}} .ha-navigation-burger-menu .ha-nav-humberger-wrapper' => 'justify-content: {{VALUE}};',
				]
            ]
        );

		$this->add_control(
            'hamburger_icon',
            [
                'label' => __('Menu Icon', 'happy-elementor-addons'),
                'type' => Controls_Manager::ICONS,
                'label_block' => false,
                'default' => [
                    'value' => 'fas fa-bars',
                    'library' => 'fa-solid',
                ],
                'skin' => 'inline',
                'exclude_inline_options' => ['svg']
            ]
        );
		
		$this->add_control(
            'hamburger_close_icon',
            [
                'label' => __('Close Icon', 'happy-elementor-addons'),
                'type' => Controls_Manager::ICONS,
                'label_block' => false,
                'default' => [
                    'value' => 'far fa-window-close',
                    'library' => 'fa-solid',
                ],
                'skin' => 'inline',
                'exclude_inline_options' => ['svg']
            ]
        );

		$this->end_controls_section();
    }

	/**
	 * Register widget style controls
	 */
	protected function register_style_controls() {
        $this->__nav_menu_style_controls();
        $this->__nav_menu_dropdown_tyle_controls();
        $this->__nav_menu_responsive_tyle_controls();
    }

	protected function __nav_menu_style_controls() {

		$this->start_controls_section(
            '_section_nav_menu_style_control',
            [
                'label' => __('Main Menu', 'happy-elementor-addons'),
                'tab' => Controls_Manager::TAB_STYLE,
            ]
        );

		$this->add_responsive_control(
            'ha_nav_menu_padding_x',
            [
                'label' => __('Horizontal Padding', 'happy-elementor-addons'),
                'type' => Controls_Manager::SLIDER,
                'size_units' => ['px', '%'],
                'range' => [
					'px' => [
						'min' => 0,
						'max' => 400,
						'step' => 1,
					],
					'%' => [
						'min' => 0,
						'max' => 100,
					],
				],
				'default' => [
					'unit' => 'px',
					'size' => 15,
				],
                'selectors' => [
                    '{{WRAPPER}} .ha-nav-menu .menu li.menu-item a' => 'padding-left: {{SIZE}}{{UNIT}}',
                    '{{WRAPPER}} .ha-nav-menu .menu li.menu-item' => 'padding-right: {{SIZE}}{{UNIT}}',
                ],
            ]
        );
		
        $this->add_responsive_control(
            'ha_nav_menu_padding_y',
            [
                'label' => __('Vertical Padding', 'happy-elementor-addons'),
                'type' => Controls_Manager::SLIDER,
                'size_units' => ['px', '%'],
                'range' => [
					'px' => [
						'min' => 0,
						'max' => 400,
						'step' => 1,
					],
					'%' => [
						'min' => 0,
						'max' => 100,
					],
				],
				'default' => [
					'unit' => 'px',
					'size' => 15,
				],
                'selectors' => [
                    '{{WRAPPER}} .ha-nav-menu ul.menu li a' => 'padding-top: {{SIZE}}{{UNIT}}; padding-bottom: {{SIZE}}{{UNIT}}',
                    // '{{WRAPPER}} .ha-navigation-menu-wrapper ul.menu > li.menu-item > a' => 'padding-top: {{SIZE}}{{UNIT}}; padding-bottom: {{SIZE}}{{UNIT}}',
                ],
            ]
        );

		$this->add_responsive_control(
            'ha_nav_menu_margin',
            [
                'label' => __('Space Between', 'happy-elementor-addons'),
                'type' => Controls_Manager::SLIDER,
                'size_units' => ['px', '%'],
                'range' => [
					'px' => [
						'min' => 0,
						'max' => 400,
						'step' => 1,
					],
					'%' => [
						'min' => 0,
						'max' => 100,
					],
				],
				'default' => [
					'unit' => 'px',
					'size' => 0,
				],
                'selectors' => [
                    '{{WRAPPER}} .ha-nav-menu .menu li.menu-item:not(:last-child)' => 'margin-right: {{SIZE}}{{UNIT}}',
                    '{{WRAPPER}} .ha-navigation-burger-menu ul.menu li.menu-item' => 'margin-top: {{SIZE}}{{UNIT}}; margin-bottom: {{SIZE}}{{UNIT}}',
                ],
            ]
        );

		$this->add_control(
            'nav_menu_link_hover_effect',
            [
                'label' => __(' Link Hover Effect', 'happy-elementor-addons'),
                'type' => Controls_Manager::SELECT,
                'default' => 'none',
                'options' => [
                    'none'  => __('None', 'happy-elementor-addons'),
                    'underline' => __('Underline', 'happy-elementor-addons'),
                    'overline' => __('Overline', 'happy-elementor-addons'),
                ],
                'selectors' => [
                    '{{WRAPPER}} .ha-navigation-menu-wrapper ul.menu li a:hover' => 'text-decoration: {{VALUE}}',
                ],
            ]
        );

		$this->add_group_control(
            Group_Control_Typography::get_type(),
            [
                'name' => 'nav_menu_item_typography',
                'label' => __('Typography', 'happy-elementor-addons'),
                'scheme' => Typography::TYPOGRAPHY_1,
				'separator' => 'before',
                'fields_options' => [
                    'typography' => [
                        'default' => 'yes'
                    ],
                    'font_family' => [
                        'default' => 'Nunito',
                    ],
                    'font_weight' => [
                        'default' => 'bold',
                    ],
                    'font_size' => [
                        'default' => [
                            'unit' => 'px',
                            'size' => '16',
                        ],
                    ],
                ],
                'selector' => '{{WRAPPER}} .ha-navigation-menu-wrapper ul.menu li a, {{WRAPPER}} .ha-navigation-burger-menu ul.menu li a',
            ]
        );

		$this->start_controls_tabs(
            'nav_menu_active_tabs'
        );

		$this->start_controls_tab(
            'nav_menu_normal_tab',
            [
                'label'    => __('Normal', 'happy-elementor-addons')
            ]
        );

		$this->add_control(
            'nav_menu_item_color',
            [
                'label' => __('Color', 'happy-elementor-addons'),
                'type' => Controls_Manager::COLOR,
                'default' => '#333333',
                'selectors' => [
                    '{{WRAPPER}} .ha-navigation-menu-wrapper ul.menu li a' => 'color: {{VALUE}}',
                    '{{WRAPPER}} .ha-navigation-menu-wrapper ul.menu li .ha-submenu-indicator-wrap' => 'color: {{VALUE}}',
                    '{{WRAPPER}} .ha-navigation-burger-menu ul.menu li a' => 'color: {{VALUE}}',
                    '{{WRAPPER}} .ha-navigation-burger-menu ul.menu li .ha-submenu-indicator-wrap' => 'color: {{VALUE}}',
                ],

            ]
        );
		
		$this->add_group_control(
            Group_Control_Background::get_type(),
            [
                'name' => 'nav_menu_item_background',
                'label' => __('Background', 'happy-elementor-addons'),
                'types' => ['classic', 'gradient'],
                'exclude' => ['image'],
                'selector' => '{{WRAPPER}} .ha-navigation-menu-wrapper ul.menu li, {{WRAPPER}} .ha-navigation-burger-menu ul.menu li',
            ]
        );
		$this->end_controls_tab();

		$this->start_controls_tab(
            'nav_menu_hover_tab',
            [
                'label'    => __('Hover', 'happy-elementor-addons')
            ]
        );

		$this->add_control(
            'nav_menu_item_hover_color',
            [
                'label' => __('Color', 'happy-elementor-addons'),
                'type' => Controls_Manager::COLOR,
                'default' => '#E2498A',
                'selectors' => [
                    '{{WRAPPER}} .ha-navigation-menu-wrapper ul.menu li a:hover' => 'color: {{VALUE}}',
                    '{{WRAPPER}} .ha-navigation-menu-wrapper ul.menu li .ha-submenu-indicator-wrap:hover' => 'color: {{VALUE}}',
                    '{{WRAPPER}} .ha-navigation-burger-menu ul.menu li a:hover' => 'color: {{VALUE}}',
                    '{{WRAPPER}} .ha-navigation-burger-menu ul.menu li .ha-submenu-indicator-wrap:hover' => 'color: {{VALUE}}',
                ],

            ]
        );
		
		$this->add_group_control(
            Group_Control_Background::get_type(),
            [
                'name' => 'nav_menu_item_hover_background',
                'label' => __('Background', 'happy-elementor-addons'),
                'types' => ['classic', 'gradient'],
                'exclude' => ['image'],
                'selector' => '{{WRAPPER}} .ha-navigation-menu-wrapper ul.menu li:hover, {{WRAPPER}} .ha-navigation-burger-menu ul.menu li:hover',
            ]
        );
		$this->end_controls_tab();

        $this->start_controls_tab(
            'nav_menu_active_tab',
            [
                'label'    => __('Active', 'happy-elementor-addons')
            ]
        );

		$this->add_control(
            'nav_menu_item_active_color',
            [
                'label' => __('Color', 'happy-elementor-addons'),
                'type' => Controls_Manager::COLOR,
                'default' => '#cf005c',
                'selectors' => [
                    '{{WRAPPER}} .ha-nav-menu ul.menu li.active a' => 'color: {{VALUE}}',
                    '{{WRAPPER}} .ha-nav-menu ul.menu li.active > .ha-submenu-indicator-wrap' => 'color: {{VALUE}}',
                ],

            ]
        );
		
		$this->add_group_control(
            Group_Control_Background::get_type(),
            [
                'name' => 'nav_menu_item_active_background',
                'label' => __('Background', 'happy-elementor-addons'),
                'types' => ['classic', 'gradient'],
                'exclude' => ['image'],
                'selector' => '{{WRAPPER}} .ha-nav-menu ul.menu li.active',
            ]
        );
		$this->end_controls_tab();

		$this->end_controls_tabs();

        $this->end_controls_section();

	}
	
	protected function __nav_menu_dropdown_tyle_controls() {

		$this->start_controls_section(
            '_nav_menu_dropdown_style_control',
            [
                'label' => __('Dropdown', 'happy-elementor-addons'),
                'tab' => Controls_Manager::TAB_STYLE,
            ]
        );

		$this->start_controls_tabs(
            'nav_submenu_normal_tabs'
        );

		$this->start_controls_tab(
            'nav_submenu_normal_tab',
            [
                'label'    => __('Normal', 'happy-elementor-addons')
            ]
        );

		$this->add_control(
            'nav_submenu_item_color',
            [
                'label' => __('Color', 'happy-elementor-addons'),
                'type' => Controls_Manager::COLOR,
                'default' => '#333333',
                'selectors' => [
                    '{{WRAPPER}} .ha-navigation-menu-wrapper ul.sub-menu > li > a' => 'color: {{VALUE}}',
                    '{{WRAPPER}} .ha-navigation-menu-wrapper ul.sub-menu > li > .ha-submenu-indicator-wrap' => 'color: {{VALUE}}',
                ],

            ]
        );
		
		$this->add_group_control(
            Group_Control_Background::get_type(),
            [
                'name' => 'nav_submenu_item_background',
                'label' => __('Background', 'happy-elementor-addons'),
                'types' => ['classic', 'gradient'],
                'exclude' => ['image'],
                'selector' => '{{WRAPPER}} .ha-navigation-menu-wrapper ul.sub-menu > li',
            ]
        );
		$this->end_controls_tab();

		$this->start_controls_tab(
            'nav_submenu_hover_tab',
            [
                'label'    => __('Hover', 'happy-elementor-addons')
            ]
        );

		$this->add_control(
            'nav_submenu_item_hover_color',
            [
                'label' => __('Color', 'happy-elementor-addons'),
                'type' => Controls_Manager::COLOR,
                'default' => '#E2498A',
                'selectors' => [
                    '{{WRAPPER}} .ha-navigation-menu-wrapper ul.sub-menu > li > a:hover' => 'color: {{VALUE}}',
                    '{{WRAPPER}} .ha-navigation-menu-wrapper ul.sub-menu > li > .ha-submenu-indicator-wrap:hover' => 'color: {{VALUE}}',
                ],

            ]
        );
		
		$this->add_group_control(
            Group_Control_Background::get_type(),
            [
                'name' => 'nav_submenu_item_hover_background',
                'label' => __('Background', 'happy-elementor-addons'),
                'types' => ['classic', 'gradient'],
                'exclude' => ['image'],
                'selector' => '{{WRAPPER}} .ha-navigation-menu-wrapper ul.sub-menu > li',
            ]
        );
		$this->end_controls_tab();
		$this->end_controls_tabs();

		$this->add_group_control(
            Group_Control_Typography::get_type(),
            [
                'name' => 'nav_submenu_item_typography',
                'label' => __('Typography', 'happy-elementor-addons'),
                'scheme' => Typography::TYPOGRAPHY_1,
				'separator' => 'before',
                'selector' => '{{WRAPPER}} .ha-navigation-menu-wrapper ul.sub-menu > li > a',
            ]
        );

		$this->add_group_control(
            Group_Control_Box_Shadow::get_type(),
            [
                'name' => 'nav_submenu_box_shadow',
                'label' => __('Box Shadow', 'happy-elementor-addons'),
                'selector' => '{{WRAPPER}} .ha-navigation-menu-wrapper ul.sub-menu > li',
            ]
        );

		$this->add_group_control(
			Group_Control_Border::get_type(),
			[
				'name' => 'nav_submenu_border',
				'selector' => '{{WRAPPER}} .ha-navigation-menu-wrapper ul.sub-menu > li',
			]
		);

		$this->add_responsive_control(
			'nav_submenu_border_radius',
			[
				'label' => __( 'Border Radius', 'happy-elementor-addons' ),
				'type' => Controls_Manager::SLIDER,
				'size_units' => [ 'px', '%' ],
				'range' => [
					'px' => [
						'min' => 0,
						'max' => 100,
						'step' => 1,
					],
					'%' => [
						'min' => 0,
						'max' => 100,
						'step' => 1,
					],
				],
				'default' => [
					'unit' => 'px',
					'size' => '',
				],
				'selectors' => [
					'{{WRAPPER}} .ha-navigation-menu-wrapper ul.sub-menu' => 'border-radius: {{SIZE}}{{UNIT}};',
					'{{WRAPPER}} .ha-navigation-menu-wrapper ul.sub-menu > li' => 'border-radius: {{SIZE}}{{UNIT}};',
				],
			]
		);

		$this->add_responsive_control(
			'nav_submenu_box_width',
			[
				'label' => __( 'Box Width', 'happy-elementor-addons' ),
				'type' => Controls_Manager::SLIDER,
				'size_units' => [ 'px', '%' ],
				'range' => [
					'px' => [
						'min' => 0,
						'max' => 1000,
						'step' => 1,
					],
					'%' => [
						'min' => 0,
						'max' => 100,
						'step' => 1,
					],
				],
				'default' => [
					'unit' => 'px',
					'size' => 220,
				],
				'selectors' => [
					'{{WRAPPER}} .ha-navigation-menu-wrapper ul.sub-menu > li' => 'width: {{SIZE}}{{UNIT}};',
				],
			]
		);

		$this->add_responsive_control(
            'nav_submenu_padding',
            [
                'label' => __('Padding', 'happy-elementor-addons'),
                'type' => Controls_Manager::DIMENSIONS,
                'size_units' => ['px', '%'],
                'default' => [
                    'top' => 15,
                    'right' => '',
                    'bottom' => 15,
                    'left' => '',
                    'unit' => 'px',
                ],
                'selectors' => [
                    '{{WRAPPER}} .ha-navigation-menu-wrapper ul.sub-menu > li' => 'padding: {{TOP}}{{UNIT}} {{RIGHT}}{{UNIT}} {{BOTTOM}}{{UNIT}} {{LEFT}}{{UNIT}};',
                ],
            ]
        );

		$this->add_responsive_control(
			'nav_submenu_box_top_distance',
			[
				'label' => __( 'Top Distance', 'happy-elementor-addons' ),
				'type' => Controls_Manager::SLIDER,
				'size_units' => [ 'px', '%' ],
				'range' => [
					'px' => [
						'min' => 0,
						'max' => 100,
						'step' => 1,
					],
					'%' => [
						'min' => 0,
						'max' => 100,
						'step' => 1,
					],
				],
				'default' => [
					'unit' => 'px',
					'size' => '',
				],
				'selectors' => [
					'{{WRAPPER}} .ha-navigation-menu-wrapper ul.menu > li.menu-item > ul.sub-menu' => 'margin-top: {{SIZE}}{{UNIT}};',
				],
			]
		);

        $this->end_controls_section();

	}
	
	protected function __nav_menu_responsive_tyle_controls() {

		$this->start_controls_section(
            '_nav_menu_responsive_style_control',
            [
                'label' => __('Responsive Navigation', 'happy-elementor-addons'),
                'tab' => Controls_Manager::TAB_STYLE,
            ]
        );
		
		$this->add_group_control(
            Group_Control_Background::get_type(),
            [
                'name' => 'nav_menu_res_item_hover_background',
                'label' => __('Icon Background', 'happy-elementor-addons'),
                'types' => ['classic', 'gradient'],
                'exclude' => ['image'],
                'selector' => '{{WRAPPER}} .ha-navigation-burger-menu .ha-menu-toggler',
            ]
        );

		$this->add_control(
			'nav_res_menu_icon_size',
			[
				'label' => __( 'Icon Size', 'happy-elementor-addons' ),
				'type' => Controls_Manager::SLIDER,
				'size_units' => [ 'px', '%' ],
				'range' => [
					'px' => [
						'min' => 0,
						'max' => 150,
						'step' => 1,
					],
					'%' => [
						'min' => 0,
						'max' => 100,
						'step' => 1,
					],
				],
				'default' => [
					'unit' => 'px',
					'size' => 22,
				],
				'selectors' => [
					'{{WRAPPER}} .ha-navigation-burger-menu .ha-nav-humberger-wrapper .ha-menu-toggler' => 'font-size: {{SIZE}}{{UNIT}};',
				],
			]
		);
		
		$this->add_control(
			'nav_res_menu_border_width',
			[
				'label' => __( 'Border Width', 'happy-elementor-addons' ),
				'type' => Controls_Manager::SLIDER,
				'size_units' => [ 'px' ],
				'range' => [
					'px' => [
						'min' => 0,
						'max' => 10,
						'step' => 1,
					],
				],
				'default' => [
					'unit' => 'px',
					'size' => 1,
				],
				'selectors' => [
					'{{WRAPPER}} .ha-navigation-burger-menu .ha-nav-humberger-wrapper .ha-menu-toggler' => 'border-width: {{SIZE}}{{UNIT}};',
				],
			]
		);
		
		$this->add_control(
			'nav_res_menu_border_radius',
			[
				'label' => __( 'Border Radius', 'happy-elementor-addons' ),
				'type' => Controls_Manager::SLIDER,
				'size_units' => [ 'px', '%' ],
				'range' => [
					'px' => [
						'min' => 0,
						'max' => 100,
						'step' => 1,
					],
				],
				'default' => [
					'unit' => 'px',
					'size' => 5,
				],
				'selectors' => [
					'{{WRAPPER}} .ha-navigation-burger-menu .ha-nav-humberger-wrapper .ha-menu-toggler' => 'border-radius: {{SIZE}}{{UNIT}};',
				],
			]
		);

        $this->add_control(
            'nav_menu_res_icon_color',
            [
                'label' => __('Icon Color', 'happy-elementor-addons'),
                'type' => Controls_Manager::COLOR,
                'default' => '#7a7a7a',
                'selectors' => [
                    '{{WRAPPER}} .ha-navigation-burger-menu .ha-nav-humberger-wrapper .ha-menu-toggler' => 'color: {{VALUE}}',
                ],

            ]
        );
        
        $this->add_control(
            'nav_menu_res_border_color',
            [
                'label' => __('Border Color', 'happy-elementor-addons'),
                'type' => Controls_Manager::COLOR,
                'default' => '#7a7a7a',
                'selectors' => [
                    '{{WRAPPER}} .ha-navigation-burger-menu .ha-nav-humberger-wrapper .ha-menu-toggler' => 'border-color: {{VALUE}}',
                ],

            ]
        );

        $this->add_control(
            'nav_menu_res_seperator_color',
            [
                'label' => __('Seperator Color', 'happy-elementor-addons'),
                'type' => Controls_Manager::COLOR,
                'default' => '#c4c4c4',
                'selectors' => [
                    '{{WRAPPER}} .ha-navigation-burger-menu ul.menu li.menu-item:not(:last-child)' => 'border-bottom-color: {{VALUE}}',
                ],

            ]
        );		
        
        $this->add_control(
            '_heading_nav_res_bg',
            [
                'label' => __('Menu Item', 'happy-elementor-addons'),
                'type' => Controls_Manager::HEADING,
                // 'separator' => 'before',
            ]
        );
        $this->add_group_control(
            Group_Control_Background::get_type(),
            [
                'name' => 'nav_menu_res_item_background',
                'label' => __('Background', 'happy-elementor-addons'),
                'types' => ['classic', 'gradient'],
                'exclude' => ['image'],
                'selector' => '{{WRAPPER}} .ha-navigation-burger-menu ul.menu li.menu-item',
            ]
        );

        $this->end_controls_section();

	}


	protected function render() {
		$settings = $this->get_settings_for_display();

		if ($this->get_menus()) {
            $placeholder_msg = __("Please Select a Menu.", 'happy-elementor-addons');
        } else {
            $placeholder_msg =  __('You don\'t have any menu created. Please create a new one from Here', 'happy-elementor-addons');
        }

		if (ha_elementor()->editor->is_edit_mode() && $settings['nav_menu_list'] == '') { ?>

			<div class="ha-editor-placeholder">
                <h4 class="ha-editor-placeholder-title">
                    <?php esc_html_e('Navigation Menu', 'happy-addons-pro'); ?>
                </h4>
                <div class="ha-editor-placeholder-content">
                    <?php echo $placeholder_msg; ?>
                </div>
            </div>

		<?php } 
		
        if ($settings['nav_menu_list'] != '' && wp_get_nav_menu_items($settings['nav_menu_list']) !== false && count(wp_get_nav_menu_items($settings['nav_menu_list'])) > 0) {
            echo '<nav class="ha-nav-menu ha-navigation-menu-wrapper">';
            $this->render_raw();
            echo '</nav>';
        }
		
        
	}

	protected function render_raw() {
        $settings = $this->get_settings_for_display();

		$walker = (class_exists('\Happy_Addons\Elementor\Extension\HANav_Menu_Walker') ? new \Happy_Addons\Elementor\Extension\HANav_Menu_Walker() : '');
        ob_start(); ?>
				<div class="ha-nav-humberger-wrapper">
                    <span class="ha-menu-open-icon ha-menu-toggler" data-humberger="open"><?php Icons_Manager::render_icon( $settings['hamburger_icon'], [ 'aria-hidden' => 'true' ] ); ?></span>
                    <span class="ha-menu-close-icon ha-menu-toggler hide-icon" data-humberger="close"><?php Icons_Manager::render_icon( $settings['hamburger_close_icon'], [ 'aria-hidden' => 'true' ] ); ?></span>
				</div>
            <?php 
        $icon_markup = ob_get_clean();    

        $args = array(
            'items_wrap'    => $icon_markup . '<ul id="%1$s" class="%2$s">%3$s</ul>',
            'menu'          => $settings['nav_menu_list'],
            'fallback_cb'   => '\Happy_Addons\Elementor\Extension\HANav_Menu_Walker::fallback',
            'depth'         => 4,
            'link_before'   => '<span class="menu-item-title">',
            'link_after'    => '</span>',
            'walker'        => $walker,
            'sub_indicator' => '<span class="ha-navigation-submenu-indicator"></span>'
        );

		wp_nav_menu($args);
        
    }

}