2024-04-15 16:00:49 +02:00
|
|
|
<?php
|
|
|
|
|
2024-04-15 23:07:29 +02:00
|
|
|
use WoWPress\Frontend\Icon;
|
|
|
|
|
2024-04-15 16:00:49 +02:00
|
|
|
class WoWPressNavWalker extends \Walker_Nav_Menu
|
|
|
|
{
|
|
|
|
|
|
|
|
function start_lvl(&$output, $depth=0, $args=null) {
|
|
|
|
$output .= '
|
2024-04-23 22:43:54 +02:00
|
|
|
<div x-cloak x-show="open" x-transition:enter="transition ease-out duration-100" x-transition:enter-start="transform opacity-0 scale-95" x-transition:enter-end="transform opacity-100 scale-100" x-transition:leave="transition ease-in duration-75" x-transition:leave-start="transform opacity-100 scale-100" x-transition:leave-end="transform opacity-0 scale-95" class="block xl:absolute right-0 w-full mt-2 origin-top-right rounded-md shadow-lg xl:w-48">
|
|
|
|
<div x-cloak class="px-2 py-2 bg-glass shadow dark-mode:bg-gray-800 w-full flex flex-col gap-2">
|
2024-04-15 16:00:49 +02:00
|
|
|
';
|
|
|
|
}
|
|
|
|
function end_lvl(&$output, $depth= 0, $args=null) {
|
|
|
|
|
|
|
|
|
|
|
|
$output .= '</div></div>';
|
|
|
|
}
|
|
|
|
|
|
|
|
function end_el(&$output, $item, $depth = 0, $args = \null)
|
|
|
|
{
|
|
|
|
if (0 === $depth) {
|
|
|
|
$output .= '</div>';
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
function start_el(&$output, $item, $depth = 0, $args = [], $id = 0)
|
|
|
|
{
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
if($args->walker->has_children){
|
2024-04-23 22:43:54 +02:00
|
|
|
$output .= '<div x-cloak @click.away="open = false" class="relative" x-data="{ open: false }">';
|
2024-04-15 16:00:49 +02:00
|
|
|
$output .= '<button @click="open = !open" class="w-full nav-btn ' . implode(" ", $item->classes) . '">';
|
|
|
|
}
|
|
|
|
elseif ($item->url && $item->url != '#') {
|
|
|
|
if (0 === $depth) {
|
|
|
|
$output .= '<div>';
|
|
|
|
}
|
|
|
|
$output .= '<a class="nav-btn ' . implode(" ", $item->classes) . '" href="' . $item->url . '">';
|
|
|
|
} else {
|
|
|
|
if (0 === $depth) {
|
|
|
|
$output .= '<div>';
|
|
|
|
}
|
|
|
|
$output .= '<span class="nav-btn ' . implode(" ", $item->classes) . '">';
|
|
|
|
}
|
|
|
|
|
|
|
|
foreach($item->classes as $class){
|
|
|
|
if(str_contains($class,"icon-")){
|
|
|
|
$icon_name = substr($class,5);
|
2024-04-15 23:07:29 +02:00
|
|
|
$output .= Icon::get($icon_name,"24px");
|
2024-04-15 16:00:49 +02:00
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
$output .= $item->title;
|
|
|
|
|
|
|
|
if ($args->walker->has_children) {
|
|
|
|
$output .= "
|
|
|
|
<svg fill= \"currentColor\" viewBox=\"0 0 20 20\" :class=\"{'rotate-180': open, 'rotate-0': !open}\" class=\"inline w-4 h-4 mt-1 ml-1 transition-transform duration-200 transform md:-mt-1\"><path fill-rule=\"evenodd\" d=\"M5.293 7.293a1 1 0 011.414 0L10 10.586l3.293-3.293a1 1 0 111.414 1.414l-4 4a1 1 0 01-1.414 0l-4-4a1 1 0 010-1.414z\" clip-rule=\"evenodd\"></path></svg>
|
|
|
|
";
|
|
|
|
}
|
|
|
|
|
|
|
|
if($args->walker->has_children){
|
|
|
|
$output .= "</button>";
|
|
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
elseif ($item->url && $item->url != '#') {
|
|
|
|
$output .= '</a>';
|
|
|
|
} else {
|
|
|
|
$output .= '</span>';
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
}
|