|
20 | 20 |
|
21 | 21 | <ul class="hidden lg:flex items-stretch list-none m-0"> |
22 | 22 | {{- range .Site.Data.nav }} |
23 | | - {{- if .Title }} |
| 23 | + {{- if .Dropdown }} |
24 | 24 | <!-- Dropdown item --> |
25 | 25 | <li x-data="{ isDropdownOpen: false, openedByHover: false }" class="flex items-center mx-2 border-b-2 border-transparent" @mouseenter="isDropdownOpen = true; openedByHover = true" @mouseleave="isDropdownOpen = false; openedByHover = false" @click.outside="isDropdownOpen = false"> |
26 | 26 | <button @click="if (!openedByHover) { isDropdownOpen = !isDropdownOpen }" class="whitespace-nowrap p-2"> |
|
29 | 29 | </button> |
30 | 30 | <div class="absolute"> |
31 | 31 | <ul x-show="isDropdownOpen" x-cloak class="absolute mt-6 py-2 whitespace-nowrap bg-white rounded-sm shadow-md z-50"> |
32 | | - {{- range .Children }} |
33 | | - {{- if eq . "|" }} |
34 | | - <li> |
35 | | - <hr class="border-gray-200 my-2"/> |
36 | | - </li> |
37 | | - {{- else }} |
38 | | - {{- with $.Site.GetPage . }} |
| 32 | + {{- range $dropdownItem := .Dropdown }} |
| 33 | + {{- if $dropdownItem.Path }} |
| 34 | + {{- with $.Site.GetPage $dropdownItem.Path }} |
39 | 35 | <li> |
40 | 36 | <a href="{{ .RelPermalink }}" class="flex items-center px-4 py-2 text-gray-800 hover:bg-secondary hover:text-white hover:no-underline" data-umami-event="nav-{{ replaceRE "^.*/([^/]+)/?$" "$1" .RelPermalink }}"> |
41 | | - <span>{{ cond (isset .Params "navtitle") .Params.Navtitle .Title }}</span> |
42 | | - {{- if .Params.Navbadge }} |
43 | | - <span class="inline-flex px-2 py-1 rounded-full text-xs font-medium tracking-wide uppercase bg-primary-l2 text-dark ml-2">{{ .Params.Navbadge }}</span> |
| 37 | + <span>{{ .Title }}</span> |
| 38 | + {{- if $dropdownItem.Badge }} |
| 39 | + <span class="inline-flex px-2 py-1 rounded-full text-xs font-medium tracking-wide uppercase bg-primary-l2 text-dark ml-2">{{ i18n $dropdownItem.Badge . }}</span> |
44 | 40 | {{- end }} |
45 | 41 | </a> |
46 | 42 | </li> |
47 | 43 | {{- end }} |
| 44 | + {{- else if $dropdownItem.URL }} |
| 45 | + <li> |
| 46 | + <a href="{{ $dropdownItem.URL }}" target="_blank" rel="noopener" class="flex items-center px-4 py-2 text-gray-800 hover:bg-secondary hover:text-white hover:no-underline" data-umami-event="nav-{{ $dropdownItem.UmamiEvent }}"> |
| 47 | + <span>{{ i18n $dropdownItem.Title . }}</span> |
| 48 | + <i class="fas fa-external-link fa-fw ml-2"></i> |
| 49 | + </a> |
| 50 | + </li> |
| 51 | + {{- else if $dropdownItem.Separator }} |
| 52 | + <li> |
| 53 | + <hr class="border-gray-200 my-2"/> |
| 54 | + </li> |
48 | 55 | {{- end }} |
49 | 56 | {{- end }} |
50 | 57 | </ul> |
51 | 58 | </div> |
52 | 59 | </li> |
53 | | - {{- else if .URL }} |
54 | | - <!-- Direct link --> |
55 | | - {{- with $.Site.GetPage .URL }} |
| 60 | + {{- else if .Path }} |
| 61 | + <!-- Page item --> |
| 62 | + {{- with $.Site.GetPage .Path }} |
56 | 63 | {{- $navItemBorderColor := cond (hasPrefix $currentRelPermalink .RelPermalink) $borderColor "border-transparent" }} |
57 | 64 | <li class="flex items-center mx-2 border-b-2 {{ $navItemBorderColor }} {{ $hoverBorderColor }}"> |
58 | 65 | <a class="p-2 hover:no-underline" href="{{ .RelPermalink }}" data-umami-event="nav-{{ replaceRE "^.*/([^/]+)/?$" "$1" .RelPermalink }}"> |
59 | | - {{ cond (isset .Params "navtitle") .Params.Navtitle .Title }} |
| 66 | + {{ .Title }} |
60 | 67 | </a> |
61 | 68 | </li> |
62 | 69 | {{- end }} |
|
107 | 114 | <!-- Smartphone Navigation --> |
108 | 115 | <div :class="isNavOpen ? 'block' : 'hidden'" x-cloak class="lg:hidden max-h-[calc(100vh-48px)] overflow-y-auto"> |
109 | 116 | {{- range .Site.Data.nav }} |
110 | | - {{- if .Title }} |
| 117 | + {{- if .Dropdown }} |
111 | 118 | <div class="uppercase tracking-wide text-gray-500 text-xs font-bold p-2"> |
112 | 119 | {{ i18n .Title . }} |
113 | 120 | </div> |
114 | | - {{- range .Children }} |
115 | | - {{- if eq . "|" }} |
116 | | - <hr class="border-primary my-2"/> |
117 | | - {{- else }} |
118 | | - {{- with $.Site.GetPage . }} |
119 | | - <a class="block py-2 mx-2 hover:text-secondary hover:no-underline" |
120 | | - href="{{ .RelPermalink }}" data-umami-event="nav-{{ replaceRE "^.*/([^/]+)/?$" "$1" .RelPermalink }}"> |
121 | | - <span>{{ cond (isset .Params "navtitle") .Params.Navtitle .Title }}</span> |
122 | | - {{- if .Params.Navbadge }} |
123 | | - <span class="inline-flex px-2 py-1 rounded-full text-xs font-medium tracking-wide uppercase bg-primary-l2 text-dark ml-2">{{ .Params.Navbadge }}</span> |
| 121 | + {{- range $dropdownItem := .Dropdown }} |
| 122 | + <!-- Dropdown item --> |
| 123 | + {{- if $dropdownItem.Path }} |
| 124 | + {{- with $.Site.GetPage $dropdownItem.Path }} |
| 125 | + <a class="flex items-center py-2 mx-2 hover:text-secondary hover:no-underline" href="{{ .RelPermalink }}" data-umami-event="nav-{{ replaceRE "^.*/([^/]+)/?$" "$1" .RelPermalink }}"> |
| 126 | + <span>{{ .Title }}</span> |
| 127 | + {{- if $dropdownItem.Badge }} |
| 128 | + <span class="inline-flex px-2 py-1 rounded-full text-xs font-medium tracking-wide uppercase bg-primary-l2 text-dark ml-2">{{ i18n $dropdownItem.Badge . }}</span> |
124 | 129 | {{- end }} |
125 | 130 | </a> |
126 | 131 | {{- end }} |
| 132 | + {{- else if $dropdownItem.URL }} |
| 133 | + <a class="flex items-center py-2 mx-2 hover:text-secondary hover:no-underline" href="{{ $dropdownItem.URL }}" target="_blank" rel="noopener" data-umami-event="nav-{{ $dropdownItem.UmamiEvent }}"> |
| 134 | + <span>{{ i18n $dropdownItem.Title . }}</span> |
| 135 | + <i class="fas fa-external-link fa-fw ml-2"></i> |
| 136 | + </a> |
| 137 | + {{- else if $dropdownItem.Separator }} |
| 138 | + <hr class="border-primary my-2"/> |
127 | 139 | {{- end }} |
128 | 140 | {{- end }} |
129 | 141 | <hr class="border-primary my-2"/> |
130 | | - {{- else if .URL }} |
131 | | - {{- with $.Site.GetPage .URL }} |
| 142 | + {{- else if .Path }} |
| 143 | + <!-- Page item --> |
| 144 | + {{- with $.Site.GetPage .Path }} |
132 | 145 | <a class="block py-2 mx-2 hover:text-secondary hover:no-underline" |
133 | 146 | href="{{ .RelPermalink }}" data-umami-event="nav-{{ replaceRE "^.*/([^/]+)/?$" "$1" .RelPermalink }}"> |
134 | | - {{ cond (isset .Params "navtitle") .Params.Navtitle .Title }} |
| 147 | + {{ .Title }} |
135 | 148 | </a> |
136 | 149 | <hr class="border-primary my-2"/> |
137 | 150 | {{- end }} |
|
0 commit comments