feat: group board filters in a menu
Test and publish / verify (push) Successful in 2m17s

This commit is contained in:
2026-07-29 14:16:25 +03:30
parent 5a3ca4eb40
commit 0800487ddd
5 changed files with 70 additions and 44 deletions
+27 -26
View File
@@ -1,8 +1,35 @@
{{define "board.html"}}
{{template "shell-start" .}}
{{$filter := .BoardFilter}}
<header class="page-head board-page-head">
<div><p class="eyebrow">SHARED WORKSPACE</p><h1>Team board</h1><p>Plan, assign, and move work forward together.</p></div>
<div class="board-head-actions">
<details class="board-filter-menu">
<summary class="button secondary">⌕ Filters{{if $filter.Active}} <span>{{$filter.Count}}</span>{{end}}</summary>
<div class="board-filter-popover">
<header><div><p class="eyebrow">BOARD VIEW</p><h2>Filters{{if $filter.Active}} ({{$filter.Count}}){{end}}</h2></div>{{if $filter.Active}}<a href="/board">Clear all</a>{{end}}</header>
<form method="get" action="/board">
<ul>
<li><label><span>Tag</span><select name="tag" aria-label="Filter by tag">
<option value="">All tags</option>
{{range .BoardTags}}<option value="{{.ID}}" {{if eq $filter.TagID .ID}}selected{{end}}>{{.Name}}</option>{{end}}
</select></label></li>
<li><label><span>Assignee</span><select name="assignee" aria-label="Filter by assignee">
<option value="">Everyone</option>
{{range .Users}}<option value="{{.ID}}" {{if eq $filter.AssigneeID .ID}}selected{{end}}>{{.DisplayName}}</option>{{end}}
</select></label></li>
<li><label><span>Priority</span><select name="priority" aria-label="Filter by priority">
<option value="">All priorities</option>
<option value="urgent" {{if eq $filter.Priority "urgent"}}selected{{end}}>Urgent</option>
<option value="high" {{if eq $filter.Priority "high"}}selected{{end}}>High</option>
<option value="normal" {{if eq $filter.Priority "normal"}}selected{{end}}>Normal</option>
<option value="low" {{if eq $filter.Priority "low"}}selected{{end}}>Low</option>
</select></label></li>
</ul>
<button class="button primary full" type="submit">Apply filters</button>
</form>
</div>
</details>
<details class="tag-manager-panel">
<summary class="button secondary">◉ Manage tags</summary>
<div class="tag-manager">
@@ -58,32 +85,6 @@
</header>
{{template "notice" .}}
{{$filter := .BoardFilter}}
<section class="board-filter-bar">
<div class="board-filter-title"><span></span><strong>Filter cards</strong></div>
<form method="get" action="/board">
<label><span>Tag</span><select name="tag" aria-label="Filter by tag">
<option value="">All tags</option>
{{range .BoardTags}}<option value="{{.ID}}" {{if eq $filter.TagID .ID}}selected{{end}}>{{.Name}}</option>{{end}}
</select></label>
<label><span>Assignee</span><select name="assignee" aria-label="Filter by assignee">
<option value="">Everyone</option>
{{range .Users}}<option value="{{.ID}}" {{if eq $filter.AssigneeID .ID}}selected{{end}}>{{.DisplayName}}</option>{{end}}
</select></label>
<label><span>Priority</span><select name="priority" aria-label="Filter by priority">
<option value="">All priorities</option>
<option value="urgent" {{if eq $filter.Priority "urgent"}}selected{{end}}>Urgent</option>
<option value="high" {{if eq $filter.Priority "high"}}selected{{end}}>High</option>
<option value="normal" {{if eq $filter.Priority "normal"}}selected{{end}}>Normal</option>
<option value="low" {{if eq $filter.Priority "low"}}selected{{end}}>Low</option>
</select></label>
<div class="board-filter-actions">
{{if $filter.Active}}<a href="/board" class="text-button">Clear</a>{{end}}
<button class="button secondary" type="submit">Apply</button>
</div>
</form>
</section>
<div class="kanban-board" data-board data-csrf="{{.CSRF}}">
{{range .Board}}
<section class="kanban-column {{.Status}}" data-board-column="{{.Status}}">