<?php namespace PowerpackElements\Modules\AdvancedMenu\Widgets; use PowerpackElements\Base\Powerpack_Widget; use PowerpackElements\Classes\PP_Config; use Elementor\Controls_Manager; use Elementor\Icons_Manager; use Elementor\Group_Control_Box_Shadow; use Elementor\Group_Control_Border; use Elementor\Group_Control_Typography; use Elementor\Core\Schemes\Typography as Scheme_Typography; use Elementor\Core\Schemes\Color as Scheme_Color; if ( ! defined( 'ABSPATH' ) ) { exit; // Exit if accessed directly. } /** * Advanced Menu Widget */ class Advanced_Menu extends Powerpack_Widget { /** * Menu Index * * @var $nav_menu_index */ protected $nav_menu_index = 1; /** * Retrieve advanced menu widget name. * * @access public * * @return string Widget name. */ public function get_name() { return parent::get_widget_name( 'Advanced_Menu' ); } /** * Retrieve advanced menu widget title. * * @access public * * @return string Widget title. */ public function get_title() { return parent::get_widget_title( 'Advanced_Menu' ); } /** * Retrieve advanced menu widget icon. * * @access public * * @return string Widget icon. */ public function get_icon() { return parent::get_widget_icon( 'Advanced_Menu' ); } /** * Get widget keywords. * * Retrieve the list of keywords the widget belongs to. * * @access public * * @return array Widget keywords. */ public function get_keywords() { return parent::get_widget_keywords( 'Advanced_Menu' ); } /** * Retrieve the list of scripts the advanced menu widget depended on. * * Used to set scripts dependencies required to run the widget. * * @access public * * @return array Widget scripts dependencies. */ public function get_script_depends() { return array( 'jquery-smartmenu', 'pp-advanced-menu', 'powerpack-frontend', ); } public function on_export( $element ) { unset( $element['settings']['menu'] ); return $element; } /** * Get menu index * * @return $nav_menu_index */ protected function get_nav_menu_index() { return $this->nav_menu_index++; } /** * Get available menus * * @return array $options */ private function get_available_menus() { $menus = wp_get_nav_menus(); $options = array(); foreach ( $menus as $menu ) { $options[ $menu->slug ] = $menu->name; } return $options; } /** * Register widget controls * * @access protected */ protected function _register_controls() { // phpcs:ignore PSR2.Methods.MethodDeclaration.Underscore $this->register_controls(); } /** * Register advanced menu widget controls. * * Adds different input fields to allow the user to change and customize the widget settings. * * @since 2.0.3 * @access protected */ protected function register_controls() { /* Content Tab */ $this->register_content_layout_controls(); $this->register_content_help_docs_controls(); /* Style Tab */ $this->register_style_menu_controls(); } /** * Register widget layout controls * * @return void */ protected function register_content_layout_controls() { $this->start_controls_section( 'section_layout', array( 'label' => __( 'Layout', 'powerpack' ), ) ); $menus = $this->get_available_menus(); if ( ! empty( $menus ) ) { $this->add_control( 'menu', array( 'label' => __( 'Menu', 'powerpack' ), 'type' => Controls_Manager::SELECT, 'options' => $menus, 'default' => array_keys( $menus )[0], 'separator' => 'after', /* translators: %s: menu page link */ 'description' => sprintf( __( 'Go to the <a href="%s" target="_blank">Menus screen</a> to manage your menus.', 'powerpack' ), admin_url( 'nav-menus.php' ) ), ) ); } else { $this->add_control( 'menu', array( 'type' => Controls_Manager::RAW_HTML, /* translators: %s: create menu page link */ 'raw' => sprintf( __( '<strong>There are no menus in your site.</strong><br>Go to the <a href="%s" target="_blank">Menus screen</a> to create one.', 'powerpack' ), admin_url( 'nav-menus.php?action=edit&menu=0' ) ), 'separator' => 'after', 'content_classes' => 'pp-editor-info', ) ); } $this->add_control( 'layout', array( 'label' => __( 'Layout', 'powerpack' ), 'type' => Controls_Manager::SELECT, 'default' => 'horizontal', 'options' => array( 'horizontal' => __( 'Horizontal', 'powerpack' ), 'vertical' => __( 'Vertical', 'powerpack' ), ), 'frontend_available' => true, ) ); $this->add_control( 'align_items', array( 'label' => __( 'Align', 'powerpack' ), 'type' => Controls_Manager::CHOOSE, 'label_block' => false, 'options' => array( 'left' => array( 'title' => __( 'Left', 'powerpack' ), 'icon' => 'eicon-h-align-left', ), 'center' => array( 'title' => __( 'Center', 'powerpack' ), 'icon' => 'eicon-h-align-center', ), 'right' => array( 'title' => __( 'Right', 'powerpack' ), 'icon' => 'eicon-h-align-right', ), 'justify' => array( 'title' => __( 'Stretch', 'powerpack' ), 'icon' => 'eicon-h-align-stretch', ), ), 'condition' => array( 'layout!' => 'dropdown', ), ) ); $this->add_control( 'pointer', array( 'label' => __( 'Pointer', 'powerpack' ), 'type' => Controls_Manager::SELECT, 'default' => 'underline', 'options' => array( 'none' => __( 'None', 'powerpack' ), 'underline' => __( 'Underline', 'powerpack' ), 'overline' => __( 'Overline', 'powerpack' ), 'double-line' => __( 'Double Line', 'powerpack' ), 'framed' => __( 'Framed', 'powerpack' ), 'background' => __( 'Background', 'powerpack' ), 'brackets' => __( 'Brackets', 'powerpack' ), 'right-angle-slides' => __( 'Right Angle Slides Down Over Title', 'powerpack' ), 'text' => __( 'Text', 'powerpack' ), ), 'condition' => array( 'layout!' => 'dropdown', ), ) ); $this->add_control( 'animation_line', array( 'label' => __( 'Animation', 'powerpack' ), 'type' => Controls_Manager::SELECT, 'default' => 'fade', 'options' => array( 'fade' => 'Fade', 'slide' => 'Slide', 'grow' => 'Grow', 'drop-in' => 'Drop In', 'drop-out' => 'Drop Out', 'none' => 'None', ), 'condition' => array( 'layout!' => 'dropdown', 'pointer' => array( 'underline', 'overline', 'double-line' ), ), ) ); $this->add_control( 'animation_framed', array( 'label' => __( 'Animation', 'powerpack' ), 'type' => Controls_Manager::SELECT, 'default' => 'fade', 'options' => array( 'fade' => 'Fade', 'grow' => 'Grow', 'shrink' => 'Shrink', 'draw' => 'Draw', 'corners' => 'Corners', 'none' => 'None', ), 'condition' => array( 'layout!' => 'dropdown', 'pointer' => 'framed', ), ) ); $this->add_control( 'animation_background', array( 'label' => __( 'Animation', 'powerpack' ), 'type' => Controls_Manager::SELECT, 'default' => 'fade', 'options' => array( 'fade' => 'Fade', 'grow' => 'Grow', 'shrink' => 'Shrink', 'sweep-left' => 'Sweep Left', 'sweep-right' => 'Sweep Right', 'sweep-up' => 'Sweep Up', 'sweep-down' => 'Sweep Down', 'shutter-in-vertical' => 'Shutter In Vertical', 'shutter-out-vertical' => 'Shutter Out Vertical', 'shutter-in-horizontal' => 'Shutter In Horizontal', 'shutter-out-horizontal' => 'Shutter Out Horizontal', 'none' => 'None', ), 'condition' => array( 'layout!' => 'dropdown', 'pointer' => 'background', ), ) ); $this->add_control( 'animation_text', array( 'label' => __( 'Animation', 'powerpack' ), 'type' => Controls_Manager::SELECT, 'default' => 'grow', 'options' => array( 'grow' => 'Grow', 'shrink' => 'Shrink', 'sink' => 'Sink', 'float' => 'Float', 'skew' => 'Skew', 'rotate' => 'Rotate', 'none' => 'None', ), 'condition' => array( 'layout!' => 'dropdown', 'pointer' => 'text', ), ) ); $this->add_control( 'expanded_submenu', array( 'label' => __( 'Expanded Submenu', 'powerpack' ), 'type' => Controls_Manager::SELECT, 'default' => 'no', 'options' => array( 'yes' => __( 'Yes', 'powerpack' ), 'no' => __( 'No', 'powerpack' ), ), 'frontend_available' => true, 'condition' => array( 'layout' => 'vertical', ), ) ); $this->add_control( 'show_submenu_on', array( 'label' => __( 'Show Submenu On', 'powerpack' ), 'type' => Controls_Manager::SELECT, 'default' => 'hover', 'options' => array( 'hover' => __( 'Hover', 'powerpack' ), 'click' => __( 'Click', 'powerpack' ), ), 'frontend_available' => true, 'conditions' => array( 'relation' => 'or', 'terms' => array( array( 'name' => 'layout', 'operator' => '===', 'value' => 'horizontal', ), array( 'relation' => 'and', 'terms' => array( array( 'name' => 'layout', 'operator' => '=y=', 'value' => 'vertical', ), array( 'name' => 'expanded_submenu', 'operator' => '!==', 'value' => 'yes', ), ), ), ), ), ) ); $this->add_control( 'indicator', array( 'label' => __( 'Submenu Indicator', 'powerpack' ), 'type' => Controls_Manager::SELECT, 'default' => 'classic', 'options' => array( 'none' => __( 'None', 'powerpack' ), 'classic' => __( 'Classic', 'powerpack' ), 'chevron' => __( 'Chevron', 'powerpack' ), 'angle' => __( 'Angle', 'powerpack' ), 'plus' => __( 'Plus', 'powerpack' ), ), ) ); $this->add_control( 'heading_mobile_dropdown', array( 'label' => __( 'Responsive', 'powerpack' ), 'type' => Controls_Manager::HEADING, 'separator' => 'before', 'condition' => array( 'layout!' => 'dropdown', ), ) ); $this->add_control( 'dropdown', array( 'label' => __( 'Breakpoint', 'powerpack' ), 'type' => Controls_Manager::SELECT, 'default' => 'tablet', 'options' => array( 'all' => __( 'Always', 'powerpack' ), 'mobile' => __( 'Mobile (767px >)', 'powerpack' ), 'tablet' => __( 'Tablet (1023px >)', 'powerpack' ), 'none' => __( 'None', 'powerpack' ), ), ) ); $this->add_control( 'menu_type', array( 'label' => __( 'Menu Type', 'powerpack' ), 'type' => Controls_Manager::SELECT, 'default' => 'default', 'options' => array( 'default' => __( 'Default', 'powerpack' ), 'off-canvas' => __( 'Off Canvas', 'powerpack' ), 'full-screen' => __( 'Full Screen', 'powerpack' ), ), 'condition' => array( 'toggle!' => '', 'dropdown!' => 'none', ), ) ); $this->add_control( 'onepage_menu', array( 'label' => __( 'One Page Menu', 'powerpack' ), 'description' => __( 'Set this option to \'Yes\' to close menu when user clicks on same page links.', 'powerpack' ), 'type' => Controls_Manager::SELECT, 'default' => 'no', 'options' => array( 'yes' => __( 'Yes', 'powerpack' ), 'no' => __( 'No', 'powerpack' ), ), 'condition' => array( 'dropdown!' => 'none', 'menu_type!' => 'default', ), ) ); $this->add_control( 'full_width', array( 'label' => __( 'Full Width', 'powerpack' ), 'type' => Controls_Manager::SWITCHER, 'description' => __( 'Stretch the dropdown of the menu to full width.', 'powerpack' ), 'prefix_class' => 'pp-advanced-menu--', 'return_value' => 'stretch', 'frontend_available' => true, 'condition' => array( 'dropdown!' => 'none', 'menu_type' => 'default', ), ) ); $this->add_control( 'toggle', array( 'label' => __( 'Toggle Button', 'powerpack' ), 'type' => Controls_Manager::SELECT, 'default' => 'icon', 'options' => array( 'icon' => __( 'Icon', 'powerpack' ), 'icon-label' => __( 'Icon + Label', 'powerpack' ), 'button' => __( 'Label', 'powerpack' ), ), 'render_type' => 'template', 'frontend_available' => true, 'condition' => array( 'dropdown!' => 'none', ), ) ); $this->add_control( 'toggle_icon_type', array( 'label' => __( 'Toggle Icon Type', 'powerpack' ), 'type' => Controls_Manager::SELECT, 'default' => 'hamburger', 'options' => array( 'hamburger' => __( 'Hamburger', 'powerpack' ), 'custom' => __( 'Custom Icon', 'powerpack' ), ), 'frontend_available' => true, 'condition' => array( 'dropdown!' => 'none', 'toggle' => array( 'icon', 'icon-label' ), ), ) ); $this->add_control( 'toggle_icon', array( 'label' => __( 'Toggle Icon', 'powerpack' ), 'type' => Controls_Manager::ICONS, 'label_block' => false, 'skin' => 'inline', 'default' => array( 'value' => 'fas fa-bars', 'library' => 'fa-solid', ), 'recommended' => array( 'fa-solid' => array( 'bars', 'stream', ), ), 'condition' => array( 'dropdown!' => 'none', 'toggle' => array( 'icon', 'icon-label' ), 'toggle_icon_type' => 'custom', ), ) ); $this->add_control( 'toggle_label', array( 'label' => __( 'Toggle Label', 'powerpack' ), 'type' => Controls_Manager::TEXT, 'default' => __( 'Menu', 'powerpack' ), 'condition' => array( 'toggle' => array( 'icon-label', 'button' ), 'dropdown!' => 'none', ), ) ); $this->add_control( 'label_align', array( 'label' => __( 'Label Align', 'powerpack' ), 'type' => Controls_Manager::CHOOSE, 'default' => 'right', 'options' => array( 'left' => array( 'title' => __( 'Left', 'powerpack' ), 'icon' => 'eicon-h-align-left', ), 'right' => array( 'title' => __( 'Right', 'powerpack' ), 'icon' => 'eicon-h-align-right', ), ), 'condition' => array( 'toggle' => array( 'icon-label' ), 'dropdown!' => 'none', ), 'label_block' => false, 'toggle' => false, ) ); $this->add_control( 'toggle_align', array( 'label' => __( 'Toggle Align', 'powerpack' ), 'type' => Controls_Manager::CHOOSE, 'default' => 'center', 'options' => array( 'left' => array( 'title' => __( 'Left', 'powerpack' ), 'icon' => 'eicon-h-align-left', ), 'center' => array( 'title' => __( 'Center', 'powerpack' ), 'icon' => 'eicon-h-align-center', ), 'right' => array( 'title' => __( 'Right', 'powerpack' ), 'icon' => 'eicon-h-align-right', ), ), 'selectors_dictionary' => array( 'left' => 'margin-right: auto', 'center' => 'margin: 0 auto', 'right' => 'margin-left: auto', ), 'selectors' => array( '{{WRAPPER}} .pp-menu-toggle' => '{{VALUE}}', ), 'condition' => array( 'toggle!' => '', 'dropdown!' => 'none', ), 'label_block' => false, ) ); $this->add_control( 'text_align', array( 'label' => __( 'Align', 'powerpack' ), 'type' => Controls_Manager::SELECT, 'default' => 'aside', 'options' => array( 'aside' => __( 'Aside', 'powerpack' ), 'center' => __( 'Center', 'powerpack' ), ), 'condition' => array( 'dropdown!' => 'none', 'menu_type!' => array( 'off-canvas', 'full-screen' ), ), ) ); $this->end_controls_section(); } /** * Register help docs controls * * @access protected */ protected function register_content_help_docs_controls() { $help_docs = PP_Config::get_widget_help_links( 'Advanced_Menu' ); if ( ! empty( $help_docs ) ) { /** * Content Tab: Help Docs * * @since 1.4.8 * @access protected */ $this->start_controls_section( 'section_help_docs', array( 'label' => __( 'Help Docs', 'powerpack' ), ) ); $hd_counter = 1; foreach ( $help_docs as $hd_title => $hd_link ) { $this->add_control( 'help_doc_' . $hd_counter, array( 'type' => Controls_Manager::RAW_HTML, 'raw' => sprintf( '%1$s ' . $hd_title . ' %2$s', '<a href="' . $hd_link . '" target="_blank" rel="noopener">', '</a>' ), 'content_classes' => 'pp-editor-doc-links', ) ); $hd_counter++; } $this->end_controls_section(); } } /*-----------------------------------------------------------------------------------*/ /* STYLE TAB /*-----------------------------------------------------------------------------------*/ /** * Register menu style controls * * @access protected */ protected function register_style_menu_controls() { $this->start_controls_section( 'section_style_main_menu', array( 'label' => __( 'Main Menu', 'powerpack' ), 'tab' => Controls_Manager::TAB_STYLE, 'condition' => array( 'dropdown!' => 'all', ), ) ); $this->add_control( 'heading_menu_item', array( 'type' => Controls_Manager::HEADING, 'label' => __( 'Menu Item', 'powerpack' ), ) ); $this->start_controls_tabs( 'tabs_menu_item_style' ); $this->start_controls_tab( 'tab_menu_item_normal', array( 'label' => __( 'Normal', 'powerpack' ), ) ); $this->add_control( 'color_menu_item', array( 'label' => __( 'Text Color', 'powerpack' ), 'type' => Controls_Manager::COLOR, 'scheme' => array( 'type' => Scheme_Color::get_type(), 'value' => Scheme_Color::COLOR_3, ), 'default' => '', 'selectors' => array( '{{WRAPPER}} .pp-advanced-menu--main .pp-menu-item' => 'color: {{VALUE}}', ), ) ); $this->end_controls_tab(); $this->start_controls_tab( 'tab_menu_item_hover', array( 'label' => __( 'Hover', 'powerpack' ), ) ); $this->add_control( 'color_menu_item_hover', array( 'label' => __( 'Text Color', 'powerpack' ), 'type' => Controls_Manager::COLOR, 'scheme' => array( 'type' => Scheme_Color::get_type(), 'value' => Scheme_Color::COLOR_4, ), 'selectors' => array( '{{WRAPPER}} .pp-advanced-menu--main .pp-menu-item:hover, {{WRAPPER}} .pp-advanced-menu--main .pp-menu-item.pp-menu-item-active, {{WRAPPER}} .pp-advanced-menu--main .pp-menu-item.highlighted, {{WRAPPER}} .pp-advanced-menu--main .pp-menu-item:focus' => 'color: {{VALUE}}', ), 'condition' => array( 'pointer!' => 'background', ), ) ); $this->add_control( 'color_menu_item_hover_pointer_bg', array( 'label' => __( 'Text Color', 'powerpack' ), 'type' => Controls_Manager::COLOR, 'default' => '#fff', 'selectors' => array( '{{WRAPPER}} .pp-advanced-menu--main .pp-menu-item:hover, {{WRAPPER}} .pp-advanced-menu--main .pp-menu-item.pp-menu-item-active, {{WRAPPER}} .pp-advanced-menu--main .pp-menu-item.highlighted, {{WRAPPER}} .pp-advanced-menu--main .pp-menu-item:focus' => 'color: {{VALUE}}', ), 'condition' => array( 'pointer' => 'background', ), ) ); $this->add_control( 'pointer_color_menu_item_hover', array( 'label' => __( 'Pointer Color', 'powerpack' ), 'type' => Controls_Manager::COLOR, 'scheme' => array( 'type' => Scheme_Color::get_type(), 'value' => Scheme_Color::COLOR_4, ), 'default' => '', 'selectors' => array( '{{WRAPPER}} .pp-advanced-menu--main:not(.pp--pointer-framed) .pp-menu-item:before, {{WRAPPER}} .pp-advanced-menu--main:not(.pp--pointer-framed) .pp-menu-item:after' => 'background-color: {{VALUE}}', '{{WRAPPER}} .pp--pointer-framed .pp-menu-item:before, {{WRAPPER}} .pp--pointer-framed .pp-menu-item:after' => 'border-color: {{VALUE}}', '{{WRAPPER}} .pp--pointer-brackets .pp-menu-item:before, {{WRAPPER}} .pp--pointer-brackets .pp-menu-item:after' => 'color: {{VALUE}}', ), 'condition' => array( 'pointer!' => array( 'none', 'text' ), ), ) ); $this->end_controls_tab(); $this->start_controls_tab( 'tab_menu_item_active', array( 'label' => __( 'Active', 'powerpack' ), ) ); $this->add_control( 'color_menu_item_active', array( 'label' => __( 'Text Color', 'powerpack' ), 'type' => Controls_Manager::COLOR, 'default' => '', 'selectors' => array( '{{WRAPPER}} .pp-advanced-menu--main .pp-menu-item.pp-menu-item-active, {{WRAPPER}} .pp-advanced-menu--main .menu-item.current-menu-ancestor .pp-menu-item' => 'color: {{VALUE}}', ), ) ); $this->add_control( 'pointer_color_menu_item_active', array( 'label' => __( 'Pointer Color', 'powerpack' ), 'type' => Controls_Manager::COLOR, 'default' => '', 'selectors' => array( '{{WRAPPER}} .pp-advanced-menu--main:not(.pp--pointer-framed) .pp-menu-item.pp-menu-item-active:before, {{WRAPPER}} .pp-advanced-menu--main:not(.pp--pointer-framed) .pp-menu-item.pp-menu-item-active:after, {{WRAPPER}} .pp-advanced-menu--main:not(.pp--pointer-framed) .menu-item.current-menu-ancestor .pp-menu-item:before, {{WRAPPER}} .pp-advanced-menu--main:not(.pp--pointer-framed) .menu-item.current-menu-ancestor .pp-menu-item:after' => 'background-color: {{VALUE}}', '{{WRAPPER}} .pp--pointer-framed .pp-menu-item.pp-menu-item-active:before, {{WRAPPER}} .pp--pointer-framed .pp-menu-item.pp-menu-item-active:after, {{WRAPPER}} .pp--pointer-framed .menu-item.current-menu-ancestor .pp-menu-item:before, {{WRAPPER}} .pp--pointer-framed .menu-item.current-menu-ancestor .pp-menu-item:after' => 'border-color: {{VALUE}}', '{{WRAPPER}} .pp--pointer-brackets .pp-menu-item.pp-menu-item-active:before, {{WRAPPER}} .pp--pointer-brackets .pp-menu-item.pp-menu-item-active:after, {{WRAPPER}} .pp--pointer-brackets .menu-item.current-menu-ancestor .pp-menu-item:before, {{WRAPPER}} .pp--pointer-brackets .menu-item.current-menu-ancestor .pp-menu-item:after' => 'color: {{VALUE}}', ), 'condition' => array( 'pointer!' => array( 'none', 'text' ), ), ) ); $this->end_controls_tab(); $this->end_controls_tabs(); $this->add_responsive_control( 'padding_horizontal_menu_item', array( 'label' => __( 'Horizontal Padding', 'powerpack' ), 'type' => Controls_Manager::SLIDER, 'range' => array( 'px' => array( 'max' => 50, ), ), 'devices' => array( 'desktop', 'tablet', 'mobile' ), 'selectors' => array( '{{WRAPPER}} .pp-advanced-menu--main .pp-menu-item' => 'padding-left: {{SIZE}}{{UNIT}}; padding-right: {{SIZE}}{{UNIT}}', ), ) ); $this->add_responsive_control( 'padding_vertical_menu_item', array( 'label' => __( 'Vertical Padding', 'powerpack' ), 'type' => Controls_Manager::SLIDER, 'range' => array( 'px' => array( 'max' => 50, ), ), 'devices' => array( 'desktop', 'tablet', 'mobile' ), 'selectors' => array( '{{WRAPPER}} .pp-advanced-menu--main .pp-menu-item' => 'padding-top: {{SIZE}}{{UNIT}}; padding-bottom: {{SIZE}}{{UNIT}}', ), ) ); $this->add_responsive_control( 'menu_space_between', array( 'label' => __( 'Space Between', 'powerpack' ), 'type' => Controls_Manager::SLIDER, 'range' => array( 'px' => array( 'max' => 100, ), ), 'devices' => array( 'desktop', 'tablet', 'mobile' ), 'selectors' => array( 'body:not(.rtl) {{WRAPPER}} .pp-advanced-menu--layout-horizontal .pp-advanced-menu > li:not(:last-child)' => 'margin-right: {{SIZE}}{{UNIT}}', 'body.rtl {{WRAPPER}} .pp-advanced-menu--layout-horizontal .pp-advanced-menu > li:not(:last-child)' => 'margin-left: {{SIZE}}{{UNIT}}', '{{WRAPPER}} .pp-advanced-menu--main:not(.pp-advanced-menu--layout-horizontal) .pp-advanced-menu > li:not(:last-child)' => 'margin-bottom: {{SIZE}}{{UNIT}}', ), ) ); $this->add_control( 'pointer_width', array( 'label' => __( 'Pointer Width', 'powerpack' ), 'type' => Controls_Manager::SLIDER, 'devices' => array( self::RESPONSIVE_DESKTOP, self::RESPONSIVE_TABLET ), 'range' => array( 'px' => array( 'max' => 30, ), ), 'selectors' => array( '{{WRAPPER}} .pp--pointer-framed .pp-menu-item:before' => 'border-width: {{SIZE}}{{UNIT}}', '{{WRAPPER}} .pp--pointer-framed.e--animation-draw .pp-menu-item:before' => 'border-width: 0 0 {{SIZE}}{{UNIT}} {{SIZE}}{{UNIT}}', '{{WRAPPER}} .pp--pointer-framed.e--animation-draw .pp-menu-item:after' => 'border-width: {{SIZE}}{{UNIT}} {{SIZE}}{{UNIT}} 0 0', '{{WRAPPER}} .pp--pointer-framed.e--animation-corners .pp-menu-item:before' => 'border-width: {{SIZE}}{{UNIT}} 0 0 {{SIZE}}{{UNIT}}', '{{WRAPPER}} .pp--pointer-framed.e--animation-corners .pp-menu-item:after' => 'border-width: 0 {{SIZE}}{{UNIT}} {{SIZE}}{{UNIT}} 0', '{{WRAPPER}} .pp--pointer-underline .pp-menu-item:after, {{WRAPPER}} .pp--pointer-overline .pp-menu-item:before, {{WRAPPER}} .pp--pointer-double-line .pp-menu-item:before, {{WRAPPER}} .pp--pointer-double-line .pp-menu-item:after' => 'height: {{SIZE}}{{UNIT}}', ), 'condition' => array( 'pointer' => array( 'underline', 'overline', 'double-line', 'framed' ), ), ) ); $this->add_responsive_control( 'border_radius_menu_item', array( 'label' => __( 'Border Radius', 'powerpack' ), 'type' => Controls_Manager::SLIDER, 'size_units' => array( 'px', 'em', '%' ), 'devices' => array( 'desktop', 'tablet' ), 'selectors' => array( '{{WRAPPER}} .pp-menu-item:before' => 'border-radius: {{SIZE}}{{UNIT}}', '{{WRAPPER}} .e--animation-shutter-in-horizontal .pp-menu-item:before' => 'border-radius: {{SIZE}}{{UNIT}} {{SIZE}}{{UNIT}} 0 0', '{{WRAPPER}} .e--animation-shutter-in-horizontal .pp-menu-item:after' => 'border-radius: 0 0 {{SIZE}}{{UNIT}} {{SIZE}}{{UNIT}}', '{{WRAPPER}} .e--animation-shutter-in-vertical .pp-menu-item:before' => 'border-radius: 0 {{SIZE}}{{UNIT}} {{SIZE}}{{UNIT}} 0', '{{WRAPPER}} .e--animation-shutter-in-vertical .pp-menu-item:after' => 'border-radius: {{SIZE}}{{UNIT}} 0 0 {{SIZE}}{{UNIT}}', ), 'condition' => array( 'pointer' => 'background', ), ) ); $this->end_controls_section(); $this->start_controls_section( 'section_style_dropdown', array( 'label' => __( 'Dropdown', 'powerpack' ), 'tab' => Controls_Manager::TAB_STYLE, 'conditions' => array( 'relation' => 'or', 'terms' => array( array( 'name' => 'dropdown', 'operator' => '!==', 'value' => 'all', ), array( 'relation' => 'and', 'terms' => array( array( 'name' => 'dropdown', 'operator' => '==', 'value' => 'all', ), array( 'name' => 'menu_type', 'operator' => '==', 'value' => 'default', ), ), ), ), ), ) ); $this->add_control( 'dropdown_description', array( 'raw' => __( 'On desktop, this will affect the submenu. On mobile, this will affect the entire menu.', 'powerpack' ), 'type' => Controls_Manager::RAW_HTML, 'content_classes' => 'pp-editor-info', ) ); $this->start_controls_tabs( 'tabs_dropdown_item_style' ); $this->start_controls_tab( 'tab_dropdown_item_normal', array( 'label' => __( 'Normal', 'powerpack' ), ) ); $this->add_control( 'color_dropdown_item', array( 'label' => __( 'Text Color', 'powerpack' ), 'type' => Controls_Manager::COLOR, 'default' => '', 'selectors' => array( '{{WRAPPER}} .pp-advanced-menu--main .pp-advanced-menu--dropdown a, {{WRAPPER}} .pp-advanced-menu--type-default .pp-advanced-menu--dropdown.pp-menu-default a, {{WRAPPER}} .pp-menu-toggle' => 'color: {{VALUE}}', ), ) ); $this->add_control( 'background_color_dropdown_item', array( 'label' => __( 'Background Color', 'powerpack' ), 'type' => Controls_Manager::COLOR, 'default' => '', 'selectors' => array( '{{WRAPPER}} .pp-advanced-menu--main .pp-advanced-menu--dropdown, {{WRAPPER}} .pp-advanced-menu--type-default .pp-advanced-menu--dropdown.pp-menu-default' => 'background-color: {{VALUE}}', ), 'separator' => 'none', ) ); $this->end_controls_tab(); $this->start_controls_tab( 'tab_dropdown_item_hover', array( 'label' => __( 'Hover', 'powerpack' ), ) ); $this->add_control( 'color_dropdown_item_hover', array( 'label' => __( 'Text Color', 'powerpack' ), 'type' => Controls_Manager::COLOR, 'default' => '', 'selectors' => array( '{{WRAPPER}} .pp-advanced-menu--main .pp-advanced-menu--dropdown a:hover, {{WRAPPER}} .pp-advanced-menu--type-default .pp-advanced-menu--dropdown.pp-menu-default a:hover, {{WRAPPER}} .pp-menu-toggle:hover' => 'color: {{VALUE}}', ), ) ); $this->add_control( 'background_color_dropdown_item_hover', array( 'label' => __( 'Background Color', 'powerpack' ), 'type' => Controls_Manager::COLOR, 'default' => '', 'selectors' => array( '{{WRAPPER}} .pp-advanced-menu--main .pp-advanced-menu--dropdown a:hover, {{WRAPPER}} .pp-advanced-menu--main:not(.pp-advanced-menu--layout-expanded) .pp-advanced-menu--dropdown a.highlighted, {{WRAPPER}} .pp-advanced-menu--type-default .pp-advanced-menu--dropdown.pp-menu-default a:hover, {{WRAPPER}} .pp-advanced-menu--type-default .pp-advanced-menu--dropdown.pp-menu-default a.highlighted' => 'background-color: {{VALUE}}', ), ) ); $this->end_controls_tab(); $this->start_controls_tab( 'tab_dropdown_item_active', array( 'label' => __( 'Active', 'powerpack' ), ) ); $this->add_control( 'color_dropdown_item_active', array( 'label' => __( 'Text Color', 'powerpack' ), 'type' => Controls_Manager::COLOR, 'default' => '', 'selectors' => array( '{{WRAPPER}} .pp-advanced-menu--main .pp-advanced-menu--dropdown a.pp-menu-item-active, {{WRAPPER}} .pp-advanced-menu--type-default .pp-advanced-menu--dropdown.pp-menu-default a.pp-menu-item-active' => 'color: {{VALUE}}', ), ) ); $this->add_control( 'background_color_dropdown_item_active', array( 'label' => __( 'Background Color', 'powerpack' ), 'type' => Controls_Manager::COLOR, 'default' => '', 'selectors' => array( '{{WRAPPER}} .pp-advanced-menu--main .pp-advanced-menu--dropdown a.pp-menu-item-active, {{WRAPPER}} .pp-advanced-menu--type-default .pp-advanced-menu--dropdown.pp-menu-default a.pp-menu-item-active' => 'background-color: {{VALUE}}', ), ) ); $this->end_controls_tab(); $this->end_controls_tabs(); $this->add_group_control( Group_Control_Border::get_type(), array( 'name' => 'dropdown_border', 'selector' => '{{WRAPPER}} .pp-advanced-menu--main .pp-advanced-menu--dropdown, {{WRAPPER}} .pp-advanced-menu--type-default .pp-advanced-menu--dropdown.pp-menu-default', 'separator' => 'before', ) ); $this->add_responsive_control( 'dropdown_border_radius', array( 'label' => __( 'Border Radius', 'powerpack' ), 'type' => Controls_Manager::DIMENSIONS, 'size_units' => array( 'px', '%' ), 'selectors' => array( '{{WRAPPER}} .pp-advanced-menu--main .pp-advanced-menu--dropdown, {{WRAPPER}} .pp-advanced-menu--type-default .pp-advanced-menu--dropdown.pp-menu-default' => 'border-radius: {{TOP}}{{UNIT}} {{RIGHT}}{{UNIT}} {{BOTTOM}}{{UNIT}} {{LEFT}}{{UNIT}};', '{{WRAPPER}} .pp-advanced-menu--main .pp-advanced-menu--dropdown li:first-child a, {{WRAPPER}} .pp-advanced-menu--type-default .pp-advanced-menu--dropdown.pp-menu-default li:first-child a' => 'border-top-left-radius: {{TOP}}{{UNIT}}; border-top-right-radius: {{RIGHT}}{{UNIT}};', '{{WRAPPER}} .pp-advanced-menu--main .pp-advanced-menu--dropdown li:last-child a, {{WRAPPER}} .pp-advanced-menu--type-default .pp-advanced-menu--dropdown.pp-menu-default li:last-child a' => 'border-bottom-right-radius: {{BOTTOM}}{{UNIT}}; border-bottom-left-radius: {{LEFT}}{{UNIT}};', ), ) ); $this->add_group_control( Group_Control_Box_Shadow::get_type(), array( 'name' => 'dropdown_box_shadow', 'exclude' => array( 'box_shadow_position', ), 'selector' => '{{WRAPPER}} .pp-advanced-menu--main .pp-advanced-menu--dropdown, {{WRAPPER}} .pp-advanced-menu--type-default .pp-advanced-menu__container.pp-advanced-menu--dropdown', ) ); $this->add_responsive_control( 'dropdown_min_width', array( 'label' => __( 'Minimum Width', 'powerpack' ), 'type' => Controls_Manager::SLIDER, 'default' => array( 'size' => 200, ), 'range' => array( 'px' => array( 'min' => 50, 'max' => 400, ), ), 'devices' => array( 'desktop', 'tablet', 'mobile' ), 'selectors' => array( '{{WRAPPER}} .pp-advanced-menu--main .pp-advanced-menu--dropdown' => 'min-width: {{SIZE}}{{UNIT}};', ), 'separator' => 'before', ) ); $this->add_responsive_control( 'padding_horizontal_dropdown_item', array( 'label' => __( 'Horizontal Padding', 'powerpack' ), 'type' => Controls_Manager::SLIDER, 'selectors' => array( '{{WRAPPER}} .pp-advanced-menu--main .pp-advanced-menu--dropdown a, {{WRAPPER}} .pp-advanced-menu--type-default .pp-advanced-menu--dropdown.pp-menu-default a' => 'padding-left: {{SIZE}}{{UNIT}}; padding-right: {{SIZE}}{{UNIT}}', ), ) ); $this->add_responsive_control( 'padding_vertical_dropdown_item', array( 'label' => __( 'Vertical Padding', 'powerpack' ), 'type' => Controls_Manager::SLIDER, 'range' => array( 'px' => array( 'max' => 50, ), ), 'selectors' => array( '{{WRAPPER}} .pp-advanced-menu--main .pp-advanced-menu--dropdown a, {{WRAPPER}} .pp-advanced-menu--type-default .pp-advanced-menu--dropdown.pp-menu-default a' => 'padding-top: {{SIZE}}{{UNIT}}; padding-bottom: {{SIZE}}{{UNIT}}', ), ) ); $this->add_control( 'heading_dropdown_divider', array( 'label' => __( 'Divider', 'powerpack' ), 'type' => Controls_Manager::HEADING, 'separator' => 'before', ) ); $this->add_group_control( Group_Control_Border::get_type(), array( 'name' => 'dropdown_divider', 'selector' => '{{WRAPPER}} .pp-advanced-menu--main .pp-advanced-menu--dropdown li:not(:last-child), {{WRAPPER}} .pp-advanced-menu--type-default .pp-advanced-menu--dropdown.pp-menu-default li:not(:last-child)', 'exclude' => array( 'width' ), ) ); $this->add_control( 'dropdown_divider_width', array( 'label' => __( 'Border Width', 'powerpack' ), 'type' => Controls_Manager::SLIDER, 'range' => array( 'px' => array( 'max' => 50, ), ), 'selectors' => array( '{{WRAPPER}} .pp-advanced-menu--main .pp-advanced-menu--dropdown li:not(:last-child), {{WRAPPER}} .pp-advanced-menu--type-default .pp-advanced-menu--dropdown.pp-menu-default li:not(:last-child)' => 'border-bottom-width: {{SIZE}}{{UNIT}}', ), 'condition' => array( 'dropdown_divider_border!' => '', ), ) ); $this->add_responsive_control( 'dropdown_top_distance', array( 'label' => __( 'Distance', 'powerpack' ), 'type' => Controls_Manager::SLIDER, 'range' => array( 'px' => array( 'min' => -100, 'max' => 100, ), ), 'selectors' => array( '{{WRAPPER}} .pp-advanced-menu--main > .pp-advanced-menu > li > .pp-advanced-menu--dropdown, {{WRAPPER}} .pp-advanced-menu--type-default .pp-advanced-menu__container.pp-advanced-menu--dropdown' => 'margin-top: {{SIZE}}{{UNIT}} !important', ), 'separator' => 'before', ) ); $this->end_controls_section(); /** * Content Tab: Toggle Button */ $this->start_controls_section( 'style_toggle', array( 'label' => __( 'Toggle Button', 'powerpack' ), 'tab' => Controls_Manager::TAB_STYLE, 'condition' => array( 'dropdown!' => 'none', 'toggle!' => '', ), ) ); $this->start_controls_tabs( 'tabs_toggle_style' ); $this->start_controls_tab( 'tab_toggle_style_normal', array( 'label' => __( 'Normal', 'powerpack' ), ) ); $this->add_control( 'toggle_color', array( 'label' => __( 'Color', 'powerpack' ), 'type' => Controls_Manager::COLOR, 'selectors' => array( '{{WRAPPER}} .pp-menu-toggle .pp-hamburger .pp-hamburger-box .pp-hamburger-inner, {{WRAPPER}} .pp-menu-toggle .pp-hamburger .pp-hamburger-box .pp-hamburger-inner:before, {{WRAPPER}} .pp-menu-toggle .pp-hamburger .pp-hamburger-box .pp-hamburger-inner:after' => 'background-color: {{VALUE}}', '{{WRAPPER}} .pp-menu-toggle .pp-icon, {{WRAPPER}} .pp-menu-toggle .pp-menu-toggle-label' => 'color: {{VALUE}}', '{{WRAPPER}} .pp-menu-toggle .pp-icon svg' => 'fill: {{VALUE}}', ), 'condition' => array( 'dropdown!' => 'none', ), ) ); $this->add_control( 'toggle_background_color', array( 'label' => __( 'Background Color', 'powerpack' ), 'type' => Controls_Manager::COLOR, 'selectors' => array( '{{WRAPPER}} .pp-menu-toggle' => 'background-color: {{VALUE}}', ), 'condition' => array( 'dropdown!' => 'none', ), ) ); $this->add_group_control( Group_Control_Border::get_type(), array( 'name' => 'toggle_border', 'label' => __( 'Border', 'powerpack' ), 'selector' => '{{WRAPPER}} .pp-menu-toggle', 'condition' => array( 'dropdown!' => 'none', ), ) ); $this->add_control( 'toggle_border_radius', array( 'label' => __( 'Border Radius', 'powerpack' ), 'type' => Controls_Manager::SLIDER, 'size_units' => array( 'px', '%' ), 'selectors' => array( '{{WRAPPER}} .pp-menu-toggle' => 'border-radius: {{SIZE}}{{UNIT}}', ), 'condition' => array( 'dropdown!' => 'none', ), ) ); $this->add_group_control( Group_Control_Box_Shadow::get_type(), array( 'name' => 'toggle_box_shadow', 'selector' => '{{WRAPPER}} .pp-menu-toggle', 'condition' => array( 'dropdown!' => 'none', ), ) ); $this->end_controls_tab(); $this->start_controls_tab( 'tab_toggle_style_hover', array( 'label' => __( 'Hover', 'powerpack' ), ) ); $this->add_control( 'toggle_color_hover', array( 'label' => __( 'Color', 'powerpack' ), 'type' => Controls_Manager::COLOR, 'selectors' => array( '{{WRAPPER}} .pp-menu-toggle:hover .pp-hamburger .pp-hamburger-box .pp-hamburger-inner, {{WRAPPER}} .pp-menu-toggle:hover .pp-hamburger .pp-hamburger-box .pp-hamburger-inner:before, {{WRAPPER}} .pp-menu-toggle:hover .pp-hamburger .pp-hamburger-box .pp-hamburger-inner:after' => 'background-color: {{VALUE}}', '{{WRAPPER}} .pp-menu-toggle:hover .pp-icon, {{WRAPPER}} .pp-menu-toggle:hover .pp-menu-toggle-label' => 'color: {{VALUE}}', '{{WRAPPER}} .pp-menu-toggle:hover .pp-icon svg' => 'fill: {{VALUE}}', ), 'condition' => array( 'dropdown!' => 'none', ), ) ); $this->add_control( 'toggle_background_color_hover', array( 'label' => __( 'Background Color', 'powerpack' ), 'type' => Controls_Manager::COLOR, 'selectors' => array( '{{WRAPPER}} .pp-menu-toggle:hover' => 'background-color: {{VALUE}}', ), 'condition' => array( 'dropdown!' => 'none', ), ) ); $this->add_control( 'toggle_baorder_color_hover', array( 'label' => __( 'Border Color', 'powerpack' ), 'type' => Controls_Manager::COLOR, 'selectors' => array( '{{WRAPPER}} .pp-menu-toggle:hover' => 'border-color: {{VALUE}}', ), 'condition' => array( 'dropdown!' => 'none', ), ) ); $this->add_group_control( Group_Control_Box_Shadow::get_type(), array( 'name' => 'toggle_box_shadow_hover', 'selector' => '{{WRAPPER}} .pp-menu-toggle:hover', 'condition' => array( 'dropdown!' => 'none', ), ) ); $this->end_controls_tab(); $this->end_controls_tabs(); $this->add_responsive_control( 'toggle_size', array( 'label' => __( 'Size', 'powerpack' ), 'type' => Controls_Manager::SLIDER, 'range' => array( 'px' => array( 'min' => 15, ), ), 'selectors' => array( '{{WRAPPER}} .pp-menu-toggle .pp-hamburger .pp-hamburger-box' => 'font-size: {{SIZE}}{{UNIT}}', ), 'condition' => array( 'dropdown!' => 'none', 'toggle' => array( 'icon', 'icon-label' ), ), 'separator' => 'before', ) ); $this->add_control( 'toggle_thickness', array( 'label' => __( 'Thickness', 'powerpack' ), 'type' => Controls_Manager::SLIDER, 'range' => array( 'px' => array( 'min' => 1, 'max' => 16, ), ), 'selectors' => array( '{{WRAPPER}} .pp-menu-toggle .pp-hamburger .pp-hamburger-box .pp-hamburger-inner, {{WRAPPER}} .pp-menu-toggle .pp-hamburger .pp-hamburger-box .pp-hamburger-inner:before, {{WRAPPER}} .pp-menu-toggle .pp-hamburger .pp-hamburger-box .pp-hamburger-inner:after' => 'height: {{SIZE}}{{UNIT}}', ), 'condition' => array( 'dropdown!' => 'none', 'toggle' => array( 'icon', 'icon-label' ), 'toggle_icon_type' => array( 'hamburger' ), ), ) ); $this->add_responsive_control( 'toggle_padding', array( 'label' => __( 'Padding', 'powerpack' ), 'type' => Controls_Manager::DIMENSIONS, 'size_units' => array( 'px', 'em' ), 'selectors' => array( '{{WRAPPER}} .pp-menu-toggle' => 'padding: {{TOP}}{{UNIT}} {{RIGHT}}{{UNIT}} {{BOTTOM}}{{UNIT}} {{LEFT}}{{UNIT}};', ), ) ); $this->add_control( 'heading_toggle_label_style', array( 'label' => __( 'Label', 'powerpack' ), 'type' => Controls_Manager::HEADING, 'separator' => 'before', 'condition' => array( 'dropdown!' => 'none', 'toggle' => array( 'icon-label', 'button' ), ), ) ); $this->add_group_control( Group_Control_Typography::get_type(), array( 'name' => 'toggle_label_typography', 'scheme' => Scheme_Typography::TYPOGRAPHY_1, 'selector' => '{{WRAPPER}} .pp-menu-toggle .pp-menu-toggle-label', 'condition' => array( 'dropdown!' => 'none', 'toggle' => array( 'icon-label', 'button' ), ), ) ); $this->end_controls_section(); /** * Content Tab: Off Canvas/Full Screen */ $this->start_controls_section( 'style_responsive', array( 'label' => __( 'Off Canvas/Full Screen', 'powerpack' ), 'tab' => Controls_Manager::TAB_STYLE, 'condition' => array( 'dropdown!' => 'none', 'menu_type' => array( 'off-canvas', 'full-screen' ), ), ) ); $this->add_control( 'offcanvas_position', array( 'label' => __( 'Position', 'powerpack' ), 'type' => Controls_Manager::SELECT, 'default' => 'left', 'options' => array( 'left' => __( 'Left', 'powerpack' ), 'right' => __( 'Right', 'powerpack' ), ), 'condition' => array( 'dropdown!' => 'none', 'menu_type' => 'off-canvas', ), ) ); $this->add_control( 'responsive_menu_alignment', array( 'label' => __( 'Alignment', 'powerpack' ), 'type' => Controls_Manager::SELECT, 'default' => 'space-between', 'options' => array( 'space-between' => __( 'Left', 'powerpack' ), 'center' => __( 'Center', 'powerpack' ), 'flex-end' => __( 'Right', 'powerpack' ), ), 'selectors' => array( '{{WRAPPER}} .pp-advanced-menu--dropdown a, .pp-advanced-menu--dropdown.pp-advanced-menu__container.pp-menu-{{ID}} a' => 'justify-content: {{VALUE}}', ), ) ); $this->add_responsive_control( 'offcanvas_menu_width', array( 'label' => __( 'Off Canvas Width', 'powerpack' ), 'type' => Controls_Manager::SLIDER, 'size_units' => array( 'px', '%', 'vw' ), 'range' => array( 'px' => array( 'min' => 100, 'max' => 1000, ), ), 'selectors' => array( 'body.pp-menu--off-canvas .pp-menu-off-canvas.pp-menu-{{ID}}' => 'width: {{SIZE}}{{UNIT}};', ), 'condition' => array( 'menu_type' => 'off-canvas', ), ) ); $this->add_control( 'overlay_bg_color', array( 'label' => __( 'Menu Background Color', 'powerpack' ), 'type' => Controls_Manager::COLOR, 'default' => 'rgba(0,0,0,0.8)', 'selectors' => array( '{{WRAPPER}} .pp-advanced-menu--dropdown.pp-advanced-menu__container, .pp-advanced-menu--dropdown.pp-advanced-menu__container.pp-menu-{{ID}}' => 'background-color: {{VALUE}}', ), ) ); $this->start_controls_tabs( 'tabs_responsive_style' ); $this->start_controls_tab( 'tab_responsive_normal', array( 'label' => __( 'Normal', 'powerpack' ), ) ); $this->add_control( 'mobile_link_color', array( 'label' => __( 'Link Color', 'powerpack' ), 'type' => Controls_Manager::COLOR, 'selectors' => array( '{{WRAPPER}} .pp-advanced-menu--dropdown.pp-advanced-menu__container .pp-menu-item, .pp-advanced-menu--dropdown.pp-advanced-menu__container.pp-menu-{{ID}} .pp-menu-item' => 'color: {{VALUE}}', ), ) ); $this->add_control( 'mobile_sub_link_bg_color', array( 'label' => __( 'Sub Menu Link Background Color', 'powerpack' ), 'type' => Controls_Manager::COLOR, 'selectors' => array( '{{WRAPPER}} .pp-advanced-menu--dropdown.pp-advanced-menu__container a.pp-sub-item, .pp-advanced-menu--dropdown.pp-advanced-menu__container.pp-menu-{{ID}} a.pp-sub-item, .pp-advanced-menu--dropdown.pp-advanced-menu__container.pp-menu-{{ID}} .sub-menu' => 'background-color: {{VALUE}}', ), ) ); $this->add_control( 'mobile_sub_link_color', array( 'label' => __( 'Sub Menu Link Color', 'powerpack' ), 'type' => Controls_Manager::COLOR, 'selectors' => array( '{{WRAPPER}} .pp-advanced-menu--dropdown.pp-advanced-menu__container a.pp-sub-item, .pp-advanced-menu--dropdown.pp-advanced-menu__container.pp-menu-{{ID}} a.pp-sub-item' => 'color: {{VALUE}}', ), ) ); $this->end_controls_tab(); $this->start_controls_tab( 'tab_responsive_hover', array( 'label' => __( 'Hover', 'powerpack' ), ) ); $this->add_control( 'mobile_link_hover', array( 'label' => __( 'Link Color', 'powerpack' ), 'type' => Controls_Manager::COLOR, 'selectors' => array( '{{WRAPPER}} .pp-advanced-menu--dropdown.pp-advanced-menu__container .pp-menu-item:hover, {{WRAPPER}} .pp-advanced-menu--dropdown.pp-advanced-menu__container .pp-menu-item:focus, {{WRAPPER}} .pp-advanced-menu--dropdown.pp-advanced-menu__container .pp-menu-item.pp-menu-item-active, .pp-advanced-menu--dropdown.pp-advanced-menu__container.pp-menu-{{ID}} .pp-menu-item:hover, .pp-advanced-menu--dropdown.pp-advanced-menu__container.pp-menu-{{ID}} .pp-menu-item:focus, .pp-advanced-menu--dropdown.pp-advanced-menu__container.pp-menu-{{ID}} .pp-menu-item.pp-menu-item-active' => 'color: {{VALUE}}', ), ) ); $this->add_control( 'mobile_link_bg_hover', array( 'label' => __( 'Link Background Color', 'powerpack' ), 'type' => Controls_Manager::COLOR, 'selectors' => array( '{{WRAPPER}} .pp-advanced-menu--dropdown.pp-advanced-menu__container .pp-menu-item:hover, {{WRAPPER}} .pp-advanced-menu--dropdown.pp-advanced-menu__container .pp-menu-item:focus, {{WRAPPER}} .pp-advanced-menu--dropdown.pp-advanced-menu__container .pp-menu-item.pp-menu-item-active, .pp-advanced-menu--dropdown.pp-advanced-menu__container.pp-menu-{{ID}} .pp-menu-item:hover, .pp-advanced-menu--dropdown.pp-advanced-menu__container.pp-menu-{{ID}} .pp-menu-item:focus, .pp-advanced-menu--dropdown.pp-advanced-menu__container.pp-menu-{{ID}} .pp-menu-item.pp-menu-item-active' => 'background-color: {{VALUE}}', ), ) ); $this->add_control( 'mobile_sub_link_bg_hover', array( 'label' => __( 'Sub Menu Link Background Color', 'powerpack' ), 'type' => Controls_Manager::COLOR, 'selectors' => array( '{{WRAPPER}} .pp-advanced-menu--dropdown.pp-advanced-menu__container a.pp-sub-item:hover, {{WRAPPER}} .pp-advanced-menu--dropdown.pp-advanced-menu__container a.pp-sub-item:focus, {{WRAPPER}} .pp-advanced-menu--dropdown.pp-advanced-menu__container a.pp-sub-item:active, .pp-advanced-menu--dropdown.pp-advanced-menu__container.pp-menu-{{ID}} a.pp-sub-item:hover, .pp-advanced-menu--dropdown.pp-advanced-menu__container.pp-menu-{{ID}} a.pp-sub-item:focus, .pp-advanced-menu--dropdown.pp-advanced-menu__container.pp-menu-{{ID}} a.pp-sub-item:active' => 'background-color: {{VALUE}}', ), ) ); $this->add_control( 'mobile_sub_link_hover', array( 'label' => __( 'Sub Menu Link Color', 'powerpack' ), 'type' => Controls_Manager::COLOR, 'selectors' => array( '{{WRAPPER}} .pp-advanced-menu--dropdown.pp-advanced-menu__container a.pp-sub-item:hover, .pp-advanced-menu--dropdown.pp-advanced-menu__container.pp-menu-{{ID}} a.pp-sub-item:hover' => 'color: {{VALUE}}', ), ) ); $this->end_controls_tab(); $this->end_controls_tabs(); $this->add_control( 'mobile_submenu_indent', array( 'label' => __( 'Submenu Indent', 'powerpack' ), 'type' => Controls_Manager::SLIDER, 'selectors' => array( '.pp-advanced-menu--dropdown.pp-advanced-menu__container.pp-menu-{{ID}} .sub-menu' => 'padding-left: {{SIZE}}{{UNIT}}; padding-right: {{SIZE}}{{UNIT}}', ), 'separator' => 'before', ) ); $this->add_control( 'padding_horizontal_mobile_link_item', array( 'label' => __( 'Horizontal Padding', 'powerpack' ), 'type' => Controls_Manager::SLIDER, 'selectors' => array( '{{WRAPPER}} .pp-advanced-menu--dropdown.pp-advanced-menu__container .pp-menu-item, {{WRAPPER}} .pp-advanced-menu--dropdown.pp-advanced-menu__container a.pp-sub-item, .pp-advanced-menu--dropdown.pp-advanced-menu__container.pp-menu-{{ID}} .pp-menu-item, .pp-advanced-menu--dropdown.pp-advanced-menu__container.pp-menu-{{ID}} a.pp-sub-item' => 'padding-left: {{SIZE}}{{UNIT}}; padding-right: {{SIZE}}{{UNIT}}', ), 'separator' => 'before', ) ); $this->add_control( 'padding_vertical_mobile_link_item', array( 'label' => __( 'Vertical Padding', 'powerpack' ), 'type' => Controls_Manager::SLIDER, 'range' => array( 'px' => array( 'max' => 50, ), ), 'selectors' => array( '{{WRAPPER}} .pp-advanced-menu--dropdown.pp-advanced-menu__container .pp-menu-item, {{WRAPPER}} .pp-advanced-menu--dropdown.pp-advanced-menu__container a.pp-sub-item, .pp-advanced-menu--dropdown.pp-advanced-menu__container.pp-menu-{{ID}} .pp-menu-item, .pp-advanced-menu--dropdown.pp-advanced-menu__container.pp-menu-{{ID}} a.pp-sub-item' => 'padding-top: {{SIZE}}{{UNIT}}; padding-bottom: {{SIZE}}{{UNIT}}', ), ) ); $this->add_group_control( Group_Control_Border::get_type(), array( 'name' => 'mobile_menu_border', 'selector' => '{{WRAPPER}} .pp-advanced-menu--dropdown li:not(:last-child), .pp-advanced-menu--dropdown.pp-advanced-menu__container.pp-menu-{{ID}} li:not(:last-child)', 'separator' => 'before', ) ); $this->add_control( 'hr', array( 'type' => Controls_Manager::DIVIDER, 'style' => 'thick', 'condition' => array( 'dropdown!' => 'none', 'menu_type' => 'off-canvas', ), ) ); $this->add_group_control( Group_Control_Box_Shadow::get_type(), array( 'name' => 'mobile_menu_box_shadow', 'selector' => '{{WRAPPER}} .pp-advanced-menu--dropdown.pp-advanced-menu__container, .pp-advanced-menu--dropdown.pp-advanced-menu__container.pp-menu-{{ID}}', 'condition' => array( 'dropdown!' => 'none', 'menu_type' => 'off-canvas', ), 'separator' => 'before', ) ); $this->add_control( 'heading_close_icon_style', array( 'label' => __( 'Close Icon', 'powerpack' ), 'type' => Controls_Manager::HEADING, 'separator' => 'before', 'condition' => array( 'dropdown!' => 'none', 'menu_type' => array( 'off-canvas', 'full-screen' ), ), ) ); $this->add_control( 'close_icon_size', array( 'label' => __( 'Close Icon Size', 'powerpack' ), 'type' => Controls_Manager::SLIDER, 'range' => array( 'px' => array( 'min' => 15, ), ), 'selectors' => array( 'body.pp-menu--off-canvas .pp-advanced-menu--dropdown.pp-menu-{{ID}} .pp-menu-close, {{WRAPPER}} .pp-advanced-menu--type-full-screen .pp-advanced-menu--dropdown.pp-advanced-menu__container .pp-menu-close' => 'width: {{SIZE}}{{UNIT}}; height: {{SIZE}}{{UNIT}}', 'body.pp-menu--off-canvas .pp-advanced-menu--dropdown.pp-menu-{{ID}} .pp-menu-close:before, {{WRAPPER}} .pp-advanced-menu--type-full-screen .pp-advanced-menu--dropdown.pp-advanced-menu__container .pp-menu-close:before, body.pp-menu--off-canvas .pp-advanced-menu--dropdown.pp-menu-{{ID}} .pp-menu-close:after, {{WRAPPER}} .pp-advanced-menu--type-full-screen .pp-advanced-menu--dropdown.pp-advanced-menu__container .pp-menu-close:after' => 'height: {{SIZE}}{{UNIT}}', ), 'condition' => array( 'dropdown!' => 'none', 'menu_type' => array( 'off-canvas', 'full-screen' ), ), ) ); $this->add_control( 'close_icon_horizontal_position', array( 'label' => __( 'Horizontal Position', 'powerpack' ), 'type' => Controls_Manager::SLIDER, 'selectors' => array( 'body.pp-menu--off-canvas .pp-advanced-menu--dropdown.pp-menu-off-canvas-left.pp-menu-{{ID}} .pp-menu-close-wrap, {{WRAPPER}} .pp-advanced-menu--type-full-screen .pp-advanced-menu--dropdown.pp-advanced-menu__container .pp-menu-close-wrap' => 'right: {{SIZE}}{{UNIT}};', 'body.pp-menu--off-canvas .pp-advanced-menu--dropdown.pp-menu-off-canvas-right.pp-menu-{{ID}} .pp-menu-close-wrap' => 'left: {{SIZE}}{{UNIT}};', ), ) ); $this->add_control( 'close_icon_vertical_position', array( 'label' => __( 'Vertical Position', 'powerpack' ), 'type' => Controls_Manager::SLIDER, 'range' => array( 'px' => array( 'max' => 80, ), ), 'selectors' => array( 'body.pp-menu--off-canvas .pp-advanced-menu--dropdown.pp-menu-{{ID}} .pp-menu-close-wrap, {{WRAPPER}} .pp-advanced-menu--type-full-screen .pp-advanced-menu--dropdown.pp-advanced-menu__container .pp-menu-close-wrap' => 'top: {{SIZE}}{{UNIT}};', ), ) ); $this->add_control( 'close_icon_padding', array( 'label' => __( 'Padding', 'powerpack' ), 'type' => Controls_Manager::SLIDER, 'range' => array( 'px' => array( 'max' => 30, ), ), 'selectors' => array( 'body.pp-menu--off-canvas .pp-advanced-menu--dropdown.pp-menu-{{ID}} .pp-menu-close-wrap, {{WRAPPER}} .pp-advanced-menu--type-full-screen .pp-advanced-menu--dropdown.pp-advanced-menu__container .pp-menu-close-wrap' => 'padding-top: {{SIZE}}{{UNIT}}; padding-bottom: {{SIZE}}{{UNIT}}; padding-left: {{SIZE}}{{UNIT}}; padding-right: {{SIZE}}{{UNIT}};', ), ) ); $this->start_controls_tabs( 'tabs_close_icon_style' ); $this->start_controls_tab( 'tab_close_icon_normal', array( 'label' => __( 'Normal', 'powerpack' ), ) ); $this->add_control( 'close_icon_color', array( 'label' => __( 'Color', 'powerpack' ), 'type' => Controls_Manager::COLOR, 'selectors' => array( 'body.pp-menu--off-canvas .pp-advanced-menu--dropdown.pp-menu-{{ID}} .pp-menu-close:before, {{WRAPPER}} .pp-advanced-menu--type-full-screen .pp-advanced-menu--dropdown.pp-advanced-menu__container .pp-menu-close:before, body.pp-menu--off-canvas .pp-advanced-menu--dropdown.pp-menu-{{ID}} .pp-menu-close:after, {{WRAPPER}} .pp-advanced-menu--type-full-screen .pp-advanced-menu--dropdown.pp-advanced-menu__container .pp-menu-close:after' => 'background-color: {{VALUE}}', ), 'condition' => array( 'dropdown!' => 'none', 'menu_type' => array( 'off-canvas', 'full-screen' ), ), ) ); $this->add_control( 'close_icon_background_color', array( 'label' => __( 'Background Color', 'powerpack' ), 'type' => Controls_Manager::COLOR, 'selectors' => array( 'body.pp-menu--off-canvas .pp-advanced-menu--dropdown.pp-menu-{{ID}} .pp-menu-close-wrap, {{WRAPPER}} .pp-advanced-menu--type-full-screen .pp-advanced-menu--dropdown.pp-advanced-menu__container .pp-menu-close-wrap' => 'background-color: {{VALUE}}', ), 'condition' => array( 'dropdown!' => 'none', 'menu_type' => array( 'off-canvas', 'full-screen' ), ), ) ); $this->add_group_control( Group_Control_Border::get_type(), array( 'name' => 'close_icon_border', 'selector' => 'body.pp-menu--off-canvas .pp-advanced-menu--dropdown.pp-menu-{{ID}} .pp-menu-close-wrap, {{WRAPPER}} .pp-advanced-menu--type-full-screen .pp-advanced-menu--dropdown.pp-advanced-menu__container .pp-menu-close-wrap', ) ); $this->add_responsive_control( 'close_icon_border_radius', array( 'label' => __( 'Border Radius', 'powerpack' ), 'type' => Controls_Manager::DIMENSIONS, 'size_units' => array( 'px', '%' ), 'selectors' => array( 'body.pp-menu--off-canvas .pp-advanced-menu--dropdown.pp-menu-{{ID}} .pp-menu-close-wrap, {{WRAPPER}} .pp-advanced-menu--type-full-screen .pp-advanced-menu--dropdown.pp-advanced-menu__container .pp-menu-close-wrap' => 'border-radius: {{TOP}}{{UNIT}} {{RIGHT}}{{UNIT}} {{BOTTOM}}{{UNIT}} {{LEFT}}{{UNIT}};', ), ) ); $this->end_controls_tab(); $this->start_controls_tab( 'tab_close_icon_hover', array( 'label' => __( 'Hover', 'powerpack' ), ) ); $this->add_control( 'close_icon_color_hover', array( 'label' => __( 'Color', 'powerpack' ), 'type' => Controls_Manager::COLOR, 'selectors' => array( 'body.pp-menu--off-canvas .pp-advanced-menu--dropdown.pp-menu-{{ID}} .pp-menu-close-wrap:hover .pp-menu-close:before, {{WRAPPER}} .pp-advanced-menu--type-full-screen .pp-advanced-menu--dropdown.pp-advanced-menu__container .pp-menu-close-wrap:hover .pp-menu-close:before, body.pp-menu--off-canvas .pp-advanced-menu--dropdown.pp-menu-{{ID}} .pp-menu-close-wrap:hover .pp-menu-close:after, {{WRAPPER}} .pp-advanced-menu--type-full-screen .pp-advanced-menu--dropdown.pp-advanced-menu__container .pp-menu-close-wrap:hover .pp-menu-close:after' => 'background-color: {{VALUE}}', ), 'condition' => array( 'dropdown!' => 'none', 'menu_type' => array( 'off-canvas', 'full-screen' ), ), ) ); $this->add_control( 'close_icon_background_color_hover', array( 'label' => __( 'Background Color', 'powerpack' ), 'type' => Controls_Manager::COLOR, 'selectors' => array( 'body.pp-menu--off-canvas .pp-advanced-menu--dropdown.pp-menu-{{ID}} .pp-menu-close-wrap:hover, {{WRAPPER}} .pp-advanced-menu--type-full-screen .pp-advanced-menu--dropdown.pp-advanced-menu__container .pp-menu-close-wrap:hover' => 'background-color: {{VALUE}}', ), 'condition' => array( 'dropdown!' => 'none', 'menu_type' => array( 'off-canvas', 'full-screen' ), ), ) ); $this->add_control( 'close_icon_border_color_hover', array( 'label' => __( 'Border Color', 'powerpack' ), 'type' => Controls_Manager::COLOR, 'selectors' => array( 'body.pp-menu--off-canvas .pp-advanced-menu--dropdown.pp-menu-{{ID}} .pp-menu-close-wrap:hover, {{WRAPPER}} .pp-advanced-menu--type-full-screen .pp-advanced-menu--dropdown.pp-advanced-menu__container .pp-menu-close-wrap:hover' => 'border-color: {{VALUE}}', ), 'condition' => array( 'dropdown!' => 'none', 'menu_type' => array( 'off-canvas', 'full-screen' ), ), ) ); $this->end_controls_tab(); $this->end_controls_tabs(); $this->end_controls_section(); /** * Content Tab: Typography */ $this->start_controls_section( 'style_typography', array( 'label' => __( 'Typography', 'powerpack' ), 'tab' => Controls_Manager::TAB_STYLE, ) ); $this->add_control( 'main_typography_heading', array( 'label' => __( 'Main Menu/Off Canvas/Full Screen', 'powerpack' ), 'type' => Controls_Manager::HEADING, ) ); $this->add_group_control( Group_Control_Typography::get_type(), array( 'name' => 'menu_typography', 'separator' => 'before', 'selector' => '{{WRAPPER}} .pp-advanced-menu .pp-menu-item, {{WRAPPER}} .pp-advanced-menu-main-wrapper.pp-advanced-menu--type-full-screen .pp-advanced-menu--dropdown .pp-menu-item, .pp-advanced-menu--dropdown.pp-advanced-menu__container.pp-menu-{{ID}} .pp-menu-item', ) ); $this->add_control( 'dropdown_typography_heading', array( 'label' => __( 'Dropdown/Submenu', 'powerpack' ), 'type' => Controls_Manager::HEADING, 'separator' => 'before', ) ); $this->add_group_control( Group_Control_Typography::get_type(), array( 'name' => 'dropdown_typography', 'scheme' => Scheme_Typography::TYPOGRAPHY_4, 'selector' => '{{WRAPPER}} .pp-advanced-menu--dropdown .pp-menu-item, {{WRAPPER}} .pp-advanced-menu--dropdown .pp-sub-item, .pp-advanced-menu--dropdown.pp-advanced-menu__container.pp-menu-{{ID}} .sub-menu .pp-menu-item, .pp-advanced-menu--dropdown.pp-advanced-menu__container.pp-menu-{{ID}} .sub-menu .pp-sub-item', 'separator' => 'before', ) ); $this->end_controls_section(); $this->start_controls_section( 'section_style_indicator', array( 'label' => __( 'Submenu Indicator', 'powerpack' ), 'tab' => Controls_Manager::TAB_STYLE, 'condition' => array( 'indicator!' => 'none', ), ) ); $this->add_responsive_control( 'indicator_size', array( 'label' => __( 'Size', 'powerpack' ), 'type' => Controls_Manager::SLIDER, 'selectors' => array( '{{WRAPPER}} .pp-advanced-menu .sub-arrow, .pp-advanced-menu__container.pp-menu-{{ID}} .sub-arrow' => 'font-size: {{SIZE}}{{UNIT}};', ), 'condition' => array( 'indicator!' => 'none', ), ) ); $this->end_controls_section(); } /** * Render widget output * * @access protected */ protected function render() { $available_menus = $this->get_available_menus(); if ( ! $available_menus ) { return; } $settings = $this->get_settings(); $settings_attr = array( 'menu_type' => $settings['menu_type'], 'menu_id' => esc_attr( $this->get_id() ), 'breakpoint' => $settings['dropdown'], 'menu_layout' => $settings['layout'], 'show_submenu_on' => $settings['show_submenu_on'], 'onepage_menu' => $settings['onepage_menu'], ); if ( 'none' !== $settings['dropdown'] ) { $settings_attr['full_width'] = ( ! $settings['full_width'] || empty( $settings['full_width'] ) ) ? false : true; } $args = array( 'echo' => false, 'menu' => $settings['menu'], 'menu_class' => 'pp-advanced-menu', 'fallback_cb' => '__return_empty_string', 'container' => '', ); if ( 'vertical' === $settings['layout'] ) { $args['menu_class'] .= ' sm-vertical'; } // Add custom filter to handle Nav Menu HTML output. add_filter( 'nav_menu_link_attributes', array( $this, 'handle_link_classes' ), 10, 4 ); add_filter( 'nav_menu_submenu_css_class', array( $this, 'handle_sub_menu_classes' ) ); add_filter( 'nav_menu_item_id', '__return_empty_string' ); // General Menu. $menu_html = wp_nav_menu( $args ); // Dropdown Menu. $dropdown_menu_html = wp_nav_menu( $args ); // Remove all our custom filters. remove_filter( 'nav_menu_link_attributes', array( $this, 'handle_link_classes' ) ); remove_filter( 'nav_menu_submenu_css_class', array( $this, 'handle_sub_menu_classes' ) ); remove_filter( 'nav_menu_item_id', '__return_empty_string' ); if ( empty( $menu_html ) ) { return; } $menu_toggle_classes = array( 'pp-menu-toggle', ); if ( 'dropdown' !== $settings['layout'] ) { $menu_toggle_classes[] = 'pp-menu-toggle-on-' . $settings['dropdown']; } else { $menu_toggle_classes[] = 'pp-menu-toggle-on-all'; } if ( 'icon-label' === $settings['toggle'] ) { $menu_toggle_classes[] = 'pp-menu-toggle-label-' . $settings['label_align']; } $this->add_render_attribute( 'menu-toggle', 'class', $menu_toggle_classes ); // if ( Plugin::elementor()->editor->is_edit_mode() ) { // $this->add_render_attribute( 'menu-toggle', [ // 'class' => 'pp-clickable', // ] ); // } $menu_wrapper_classes = 'pp-advanced-menu__align-' . $settings['align_items']; $menu_wrapper_classes .= ' pp-advanced-menu--indicator-' . $settings['indicator']; $menu_wrapper_classes .= ' pp-advanced-menu--dropdown-' . $settings['dropdown']; $menu_wrapper_classes .= ' pp-advanced-menu--type-' . $settings['menu_type']; $menu_wrapper_classes .= ' pp-advanced-menu__text-align-' . $settings['text_align']; $menu_wrapper_classes .= ' pp-advanced-menu--toggle pp-advanced-menu--' . $settings['toggle']; if ( 'vertical' === $settings['layout'] && 'yes' === $settings['expanded_submenu'] ) { $menu_wrapper_classes .= ' pp-advanced-menu__submenu-visible-always'; } ?> <?php do_action( 'ppe_before_advanced_menu_wrapper' ); ?> <div class="pp-advanced-menu-main-wrapper <?php echo esc_attr( $menu_wrapper_classes ); ?>"> <?php if ( 'all' !== $settings['dropdown'] ) : $this->add_render_attribute( 'main-menu', 'class', array( 'pp-advanced-menu--main', 'pp-advanced-menu__container', 'pp-advanced-menu--layout-' . $settings['layout'], ) ); if ( $settings['pointer'] ) : $this->add_render_attribute( 'main-menu', 'class', 'pp--pointer-' . $settings['pointer'] ); foreach ( $settings as $key => $value ) : if ( 0 === strpos( $key, 'animation' ) && $value ) : $this->add_render_attribute( 'main-menu', 'class', 'e--animation-' . $value ); break; endif; endforeach; endif; ?> <?php do_action( 'ppe_before_advanced_menu' ); ?> <nav id="pp-menu-<?php echo esc_attr( $this->get_id() ); ?>" <?php echo wp_kses_post( $this->get_render_attribute_string( 'main-menu' ) ); ?> data-settings="<?php echo htmlspecialchars( json_encode( $settings_attr ) ); ?>"><?php echo wp_kses_post( $menu_html ); ?></nav> <?php do_action( 'ppe_after_advanced_menu' ); ?> <?php endif; ?> <?php if ( 'none' !== $settings['dropdown'] ) { ?> <?php if ( '' !== $settings['toggle'] ) { ?> <div <?php echo wp_kses_post( $this->get_render_attribute_string( 'menu-toggle' ) ); ?>> <?php if ( 'icon-label' === $settings['toggle'] || 'icon' === $settings['toggle'] ) { ?> <div class="pp-hamburger"> <div class="pp-hamburger-box"> <?php if ( 'custom' === $settings['toggle_icon_type'] ) { ?> <?php if ( '' !== $settings['toggle_icon']['value'] ) { ?> <span class="pp-hamburger-icon pp-icon"> <?php Icons_Manager::render_icon( $settings['toggle_icon'], array( 'aria-hidden' => 'true' ) ); ?> </span> <?php } ?> <?php } else { ?> <div class="pp-hamburger-inner"></div> <?php } ?> </div> </div> <?php } ?> <?php if ( 'icon-label' === $settings['toggle'] || 'button' === $settings['toggle'] ) { ?> <?php if ( '' !== $settings['toggle_label'] ) { ?> <span class="pp-menu-toggle-label"> <?php echo wp_kses_post( $settings['toggle_label'] ); ?> </span> <?php } ?> <?php } ?> </div> <?php } ?> <?php $offcanvas_pos = ''; if ( 'off-canvas' === $settings['menu_type'] ) { $offcanvas_pos = ' pp-menu-off-canvas-' . $settings['offcanvas_position']; } ?> <?php do_action( 'ppe_before_advanced_menu_responsive' ); ?> <nav class="pp-advanced-menu--dropdown pp-menu-style-toggle pp-advanced-menu__container pp-menu-<?php echo esc_attr( $this->get_id() ); ?><?php if ( 'default' !== $settings['menu_type'] ) { ?> pp-advanced-menu--indicator-<?php echo esc_attr( $settings['indicator'] ); ?><?php } ?> pp-menu-<?php echo esc_attr( $settings['menu_type'] ); ?><?php echo esc_attr( $offcanvas_pos ); ?>" data-settings="<?php echo htmlspecialchars( json_encode( $settings_attr ) ); ?>"> <?php if ( 'full-screen' === $settings['menu_type'] || 'off-canvas' === $settings['menu_type'] ) { ?> <div class="pp-menu-close-wrap"> <div class="pp-menu-close"></div> </div> <?php } ?> <?php do_action( 'ppe_before_advanced_menu_responsive_inner' ); ?> <?php echo wp_kses_post( $dropdown_menu_html ); ?> <?php do_action( 'ppe_after_advanced_menu_responsive_inner' ); ?> </nav> <?php do_action( 'ppe_after_advanced_menu_responsive' ); ?> <?php } ?> </div> <?php do_action( 'ppe_after_advanced_menu_wrapper' ); ?> <?php } /** * Menu item link classes * * @param mixed $atts attributes. * @param mixed $item item. * @param mixed $args arguments. * @param mixed $depth depth. * @return $atts */ public function handle_link_classes( $atts, $item, $args, $depth ) { $settings = $this->get_settings(); $is_anchor = false !== strpos( $atts['href'], '#' ); $classes = $depth ? 'pp-sub-item' : 'pp-menu-item'; if ( ! $is_anchor && in_array( 'current-menu-item', $item->classes ) ) { $classes .= ' pp-menu-item-active'; } if ( $is_anchor ) { $classes .= ' pp-menu-item-anchor'; } if ( empty( $atts['class'] ) ) { $atts['class'] = $classes; } else { $atts['class'] .= ' ' . $classes; } return $atts; } /** * Sub menu classes * * @param mixed $classes menu item classes. * @return array $classes */ public function handle_sub_menu_classes( $classes ) { $classes[] = 'pp-advanced-menu--dropdown'; return $classes; } public function render_plain_content() {} }