Files
docmd-io--docmd/packages/ui/templates/partials/menubar.ejs
T
wehub-resource-sync 6db8fca185
docmd CI verification / verify (push) Failing after 0s
chore: import upstream snapshot with attribution
2026-07-13 12:31:55 +08:00

134 lines
5.8 KiB
Plaintext

<%# ---------------------------------------------------------------
# docmd : the zero-config documentation engine.
# @website https://docmd.io
# [docmd-source] - Please do not remove this header.
# ---------------------------------------------------------------
%>
<%
function menubarHref(item) {
return item.external ? item.url : buildRelativeUrl(item.url);
}
function menubarTarget(item) {
// Only open in new tab if user explicitly adds external: prefix
// Users who want their own docs site to open in new tab should add external: prefix
return item.external ? ' target="_blank" rel="noopener noreferrer"' : '' ;
}
%>
<div class="docmd-menubar">
<div class="menubar-inner">
<div class="menubar-left">
<% if (menubarConfig.left && menubarConfig.left.length> 0) { %>
<% menubarConfig.left.forEach(item=> { %>
<% if (item.type==='title' ) { %>
<a href="<%= menubarHref(item) %>" class="menubar-brand" <%- menubarTarget(item) %>>
<% if (item.icon) { %>
<%- renderIcon(item.icon, { class: 'menubar-icon' }) %>
<% } %>
<% if (item.text) { %>
<span class="menubar-brand-text">
<%= item.text %>
</span>
<% } %>
</a>
<% } else if (item.type==='dropdown' ) { %>
<div class="menubar-dropdown">
<button class="menubar-dropdown-toggle" type="button" aria-expanded="false" aria-label="<%= item.text %> menu">
<% if (item.icon) { %>
<%- renderIcon(item.icon, { class: 'menubar-icon' }) %>
<% } %>
<span>
<%= item.text %>
</span>
<%- renderIcon('chevron-down', { class: 'menubar-chevron' }) %>
</button>
<ul class="menubar-dropdown-menu">
<% if (item.items && item.items.length> 0) { %>
<% item.items.forEach(sub=> { %>
<li>
<a href="<%= menubarHref(sub) %>" <%- menubarTarget(sub) %>>
<% if (sub.icon) { %>
<%- renderIcon(sub.icon, { class: 'menubar-icon' }) %>
<% } %>
<%= sub.text %>
<% if (sub.external) { %>
<%- renderIcon('external-link', { class: 'menubar-ext-icon' }) %>
<% } %>
</a>
</li>
<% }) %>
<% } %>
</ul>
</div>
<% } else { %>
<a href="<%= menubarHref(item) %>" class="menubar-link" <%- menubarTarget(item) %>>
<% if (item.icon) { %>
<%- renderIcon(item.icon, { class: 'menubar-icon' }) %>
<% } %>
<span>
<%= item.text %>
</span>
<% if (item.external) { %>
<%- renderIcon('external-link', { class: 'menubar-ext-icon' }) %>
<% } %>
</a>
<% } %>
<% }) %>
<% } %>
</div>
<div class="menubar-right">
<% if (menubarConfig.right && menubarConfig.right.length> 0) { %>
<% menubarConfig.right.forEach(item=> { %>
<% if (item.type==='dropdown' ) { %>
<div class="menubar-dropdown">
<button class="menubar-dropdown-toggle" type="button" aria-expanded="false" aria-label="<%= item.text %> menu">
<% if (item.icon) { %>
<%- renderIcon(item.icon, { class: 'menubar-icon' }) %>
<% } %>
<span>
<%= item.text %>
</span>
<%- renderIcon('chevron-down', { class: 'menubar-chevron' }) %>
</button>
<ul class="menubar-dropdown-menu menubar-dropdown-right">
<% if (item.items && item.items.length> 0) { %>
<% item.items.forEach(sub=> { %>
<li>
<a href="<%= menubarHref(sub) %>" <%- menubarTarget(sub) %>>
<% if (sub.icon) { %>
<%- renderIcon(sub.icon, { class: 'menubar-icon' }) %>
<% } %>
<%= sub.text %>
<% if (sub.external) { %>
<%- renderIcon('external-link', { class: 'menubar-ext-icon' }) %>
<% } %>
</a>
</li>
<% }) %>
<% } %>
</ul>
</div>
<% } else { %>
<a href="<%= menubarHref(item) %>" class="menubar-link" <%- menubarTarget(item) %>>
<% if (item.icon) { %>
<%- renderIcon(item.icon, { class: 'menubar-icon' }) %>
<% } %>
<span>
<%= item.text %>
</span>
<% if (item.external) { %>
<%- renderIcon('external-link', { class: 'menubar-ext-icon' }) %>
<% } %>
</a>
<% } %>
<% }) %>
<% } %>
<% if (optionsMenu && optionsMenu.position==='menubar' ) { %>
<div class="menubar-options">
<%- await include('options-menu', { optionsMenu, allLocales: locals.allLocales, activeLocale: locals.activeLocale, defaultLocale: locals.defaultLocale, config: locals.config, renderIcon, currentPagePath: locals.currentPagePath, localePrefix: locals.localePrefix, workspace: locals.workspace }) %>
</div>
<% } %>
</div>
</div>
</div>