';
} else {
$opening_tag = '';
}
return $opening_tag;
}
private function get_title_container_closing_tag( $url ) {
return ! empty( $url ) ? '' : '
';
}
/**
* @param $item
* @return bool
*/
private function is_active_icon_exist( $item ) {
return array_key_exists( 'item_icon_active', $item ) && ! empty( $item['item_icon_active'] ) && ! empty( $item['item_icon_active']['value'] );
}
/**
* @param string $state
* @param $css_prefix
* @return void
*/
private function add_dropdown_indicator_state_based_style_controls( string $state ) {
$label = esc_html__( 'Normal', 'elementor-pro' );
$selector = '--n-menu-dropdown-indicator-color-normal: {{VALUE}};';
if ( 'hover' === $state ) {
$label = esc_html__( 'Hover', 'elementor-pro' );
$selector = '--n-menu-dropdown-indicator-color-hover: {{VALUE}};';
}
if ( 'active' === $state ) {
$label = esc_html__( 'Active', 'elementor-pro' );
$selector = '--n-menu-dropdown-indicator-color-active: {{VALUE}};';
}
$this->start_controls_tab('style_menu_dropdown_indicator_' . $state, [
'label' => $label,
] );
$this->add_control(
'menu_dropdown_indicator_color_' . $state,
[
'label' => esc_html__( 'Color', 'elementor-pro' ),
'type' => Controls_Manager::COLOR,
'selectors' => [
'{{WRAPPER}}' => $selector,
],
]
);
$this->end_controls_tab();
}
// Any update in this function should also be updated in the content_template_single_repeater_item function too
protected function content_template() {
?>
<#
if ( ! settings['menu_items'] ) {
return;
}
const menuItemIcon = elementor.helpers.renderIcon( view, settings['menu_item_icon'], { 'aria-hidden': true }, 'i' , 'object' ) ?? '',
menuItemIconActive = elementor.helpers.renderIcon( view, settings['menu_item_icon_active'], { 'aria-hidden': true }, 'i' , 'object' ) ?? '',
elementUid = view.getIDInt().toString().substr( 0, 3 ),
permalinkUrl = 'get_permalink_for_current_page() ); ?>';
view.addRenderAttribute(
'e-n-menu',
{
'class': 'e-n-menu',
'data-widget-number': elementUid,
}
);
if ( '' !== settings.menu_name ) {
view.addRenderAttribute( 'e-n-menu', 'aria-label', settings.menu_name );
}
#>
true,
'target_container' => [ '.e-n-menu-heading' ],
'node' => 'li',
'is_interlaced' => true,
] );
}
// Any update in this function should be updated also in the content_template function too
protected function content_template_single_repeater_item() {
?>
<#
const menuItemIcon = elementor.helpers.renderIcon( view, view.container.settings.attributes.menu_item_icon, { 'aria-hidden': true }, 'i' , 'object' ) ?? '',
menuItemIconActive = elementor.helpers.renderIcon( view, view.container.settings.attributes.menu_item_icon_active, { 'aria-hidden': true }, 'i' , 'object' ) ?? '',
elementUid = view.getIDInt().toString().substr( 0, 3 ),
permalinkUrl = 'get_permalink_for_current_page() ); ?>',
menuItemCount = view.collection.length + 1,
menuItemUid = view.getIDInt().toString().substr( 0, 3 ) + menuItemCount,
menuItemWrapperKey = menuItemUid,
menuItemTitleKey = 'menu-title-' + menuItemUid,
menuItemTitleContainerLinkKey = 'e-n-menu-title-container-' + menuItemUid,
menuItemDropdownIconKey = 'e-n-menu-dropdown-icon-' + menuItemUid,
menuItemIconKey = 'menu-icon-' + menuItemUid,
menuIcon = elementor.helpers.renderIcon( view, data.item_icon, { 'aria-hidden': true }, 'i' , 'object' ) ?? '',
menuIconActive = '' === data.item_icon_active.value
? menuIcon
: elementor.helpers.renderIcon( view, data.item_icon_active, { 'aria-hidden': true }, 'i' , 'object' ),
menuItemLink = 'string' === typeof data['item_link'] ? data['item_link'] : data['item_link']['url'],
hasDropdownContent = 'yes' === data['item_dropdown_content'],
currentPageClass = elementorPro.modules.megaMenu.getCurrentMenuItemClass( menuItemLink, permalinkUrl ),
dropdownFocusClass = hasDropdownContent ? 'e-focus' : '',
menuItemClassList = ['e-n-menu-title'];
let menuItemId = 'e-n-menu-title-' + menuItemUid;
if ( '' !== data.element_id ) {
menuItemId = data.element_id;
}
if ( ! hasDropdownContent ) {
menuItemClassList.push( 'link-only' );
} else {
menuItemClassList.push( 'e-click' );
}
if ( !! currentPageClass ) {
menuItemClassList.push( currentPageClass );
}
view.addRenderAttribute( menuItemWrapperKey, {
'id': menuItemId,
'class': menuItemClassList,
}, null, true );
view.addRenderAttribute( menuItemTitleKey, {
'class': [ 'e-n-menu-title-text' ],
'data-binding-type': 'repeater-item',
'data-binding-repeater-name': 'menu_items',
'data-binding-setting': ['item_title'],
'data-binding-index': menuItemCount,
'data-binding-dynamic': 'true',
}, null, true );
const menuItemContainerClasses = [ 'e-n-menu-title-container' ];
if ( !! data.item_link.url ) {
menuItemContainerClasses.push( 'e-link', 'e-focus' );
}
view.addRenderAttribute( menuItemTitleContainerLinkKey, {
'class': menuItemContainerClasses,
'href': elementor.helpers.sanitizeUrl( data.item_link.url ),
'aria-current': 'page',
}, null, true );
view.addRenderAttribute( menuItemDropdownIconKey, {
'id': 'e-n-menu-dropdown-icon-' + menuItemUid,
'class': [ 'e-n-menu-dropdown-icon', 'e-focus' ],
'data-tab-index': menuItemCount,
'aria-haspopup': hasDropdownContent ? 'true' : 'false',
'aria-expanded': 'false',
'aria-controls': 'e-n-menu-content-' + menuItemUid,
}, null, true );
#>