1.53 KB / 34 lines / 34 loc
<section>
<%
const isCommitHash = /^[0-9a-f]{40}$/.test(it.branch);
const refLabel = isCommitHash ? it.branch.slice(0, 7) : it.branch;
%>
<button type="button" class="ref-selector-button branch" command="show-modal" commandfor="ref-selector-menu">
<img src="/static/icons/git-branch.svg" alt="branch" class="icon"> <%= refLabel %> ▾
</button>
<dialog class="ref-selector-menu" id="ref-selector-menu" closedby="any" data-owner="<%= it.repo.owner %>" data-repo="<%= it.repo.name %>" data-view="<%= it.view %>"<% if (it.path && it.path !== "/") { %> data-path="<%= it.path %>"<% } %>>
<div class="ref-selector-tabs">
<button type="button" class="active" data-ref-type="branches">Branches</button>
<button type="button" data-ref-type="tags">Tags</button>
</div>
<div class="ref-selector-list">Loading…</div>
</dialog>
<% if (it.path && it.path !== "/") { %>
<%
const crumbHrefBase = `/${it.repo.owner}/${it.repo.name}/${it.view === "blob" ? "tree" : it.view}/${it.branch}`;
%>
<a href="<%= crumbHrefBase %>">(top)</a><%
const pathParts = it.path.split('/').filter(p => p);
let currentPath = '';
for (let i = 0; i < pathParts.length; i++) {
const part = pathParts[i];
currentPath += (currentPath ? '/' : '') + part;
const isLast = i === pathParts.length - 1;
if (isLast) {
%>/<%= part %><%= it.view === "tree" ? "/" : "" %><%
} else {
%>/<a href="<%= crumbHrefBase %>/<%= currentPath %>"><%= part %></a><%
}
} %>
<% } %>
</section>