with a hamburger toggle and a list of `mega-menu-item` children (each a
  • with an optional * dropdown panel of elements). Runtime: widgets/_theme/menu.ts (same contract as nav-menu). * * @var array $settings * @var string $attrs * @var array $element * @var \Zadex\Frontend\Renderer $renderer */ if (!defined('ABSPATH')) { exit; } // phpcs:disable WordPress.NamingConventions.PrefixAllGlobals.NonPrefixedVariableFound -- template variables are local to Zadex\Frontend\Renderer::include_template(). use Zadex\Theme\Widgets\ThemeData; $open_on = ThemeData::tag($settings['open_on'] ?? 'hover', ['hover', 'click'], 'hover'); $width = ThemeData::tag($settings['dropdown_width'] ?? 'full', ['full', 'boxed'], 'full'); $collapse = ThemeData::collapse_attr((string) ($settings['collapse'] ?? 'tablet')); $attrs = ThemeData::add_classes($attrs, ['zx-mega-menu--' . $open_on, 'zx-mega-menu--' . $width]); $label = trim(wp_strip_all_tags((string) ($settings['toggle_label'] ?? ''))); $label = $label !== '' ? $label : __('Menu', 'zadex'); $attrs .= ' data-zx-collapse="' . esc_attr($collapse) . '" data-zx-open="' . esc_attr($open_on) . '" aria-label="' . esc_attr($label) . '"'; $zx_id = preg_replace('/[^a-z0-9]/i', '', (string) ($element['id'] ?? '')) ?: 'mega'; $panel_id = 'zx-mega-panel-' . $zx_id; // Only items belong in the list. $element['children'] = array_values(array_filter($element['children'] ?? [], static fn($c): bool => is_array($c) && ($c['type'] ?? '') === 'mega-menu-item')); $zx_html = ''; echo wp_kses($zx_html, \Zadex\Frontend\Kses::allowed_html()) . "\n";