vole
Clone
Read only, no credentials:
https://rodent.software/git/vole.git
Write over SSH with a registered key:
git clone ssh://git@0.0.0.0:2222/vole.git
A free and open-source forge that lives in your Git repo.
Make the issue search results a real popover
bb541fdee195938c86d683fd4fde294b52081cd1 · Keenan Nemetz · 10d ago · parent 451332d1
Make the issue search results a real popover The results sat on the page ground with no edge, so the list read as loose text under the search box. They now open as an overlaid panel with a raised background, border and shadow, and an empty field removes the panel instead of leaving a blank one.
server/issues_changes_test.go +7−1
| @@ -363,7 +363,8 @@ func TestChangeLinksIssuesFromTheIssuesSection(t *testing.T) { | |||
| 363 | 363 | resp, results := f.htmxGet(t, "/r/"+f.repo+"/requests/"+id+"/issues/search?q="+url.QueryEscape(query), cookie) | |
| 364 | 364 | if resp.StatusCode != http.StatusOK || !strings.Contains(results, "Second linked issue") || | |
| 365 | 365 | !strings.Contains(results, `value="`+second+`"`) || !strings.Contains(results, `value="add"`) || | |
| 366 | !strings.Contains(results, `hx-target="#request-issues"`) { | ||
| 366 | !strings.Contains(results, `hx-target="#request-issues"`) || | ||
| 367 | !strings.Contains(results, `request-issue-popover`) { | ||
| 367 | 368 | t.Fatalf("search %q is not the expected result (%d):\n%s", query, resp.StatusCode, results) | |
| 368 | 369 | } | |
| 369 | 370 | } | |
| @@ -374,6 +375,11 @@ func TestChangeLinksIssuesFromTheIssuesSection(t *testing.T) { | |||
| 374 | 375 | !strings.Contains(results, "No issues match") { | |
| 375 | 376 | t.Fatalf("a linked issue is still in the search results (%d):\n%s", resp.StatusCode, results) | |
| 376 | 377 | } | |
| 378 | // Clearing the field removes the popover rather than leaving a blank panel. | ||
| 379 | resp, results = f.htmxGet(t, "/r/"+f.repo+"/requests/"+id+"/issues/search?q=", cookie) | ||
| 380 | if resp.StatusCode != http.StatusOK || strings.TrimSpace(results) != "" { | ||
| 381 | t.Fatalf("an empty search left a panel (%d):\n%s", resp.StatusCode, results) | ||
| 382 | } | ||
| 377 | 383 | ||
| 378 | 384 | // Clicking a result posts its id, and the section comes back with both links. | |
| 379 | 385 | resp, body = f.htmxPost(t, "/r/"+f.repo+"/requests/"+id+"/issues", cookie, url.Values{ | |