this repo has no description

appview/pages: embed `hx-swap-oob` to star button

`hx-swap-oob` on breaks on `hx-boost` swaps (star button vainishing repo
tab changes), so that was why I made `starBtn-oob` fragment. But
`hx-swap-oob="outerHTML:..."` doesn't strip the wrapper element, adding
`div` wrappers to star button on every star/unstar interactions.

To fix this, dynamically put `hx-swap-oob` attribute to star button
itself by using `.HxSwapOob` param.

Signed-off-by: Seongmin Lee <git@boltless.me>

Changed files
+4 -6
appview
pages
templates
+3 -1
appview/pages/pages.go
··· 648 648 IsStarred bool 649 649 SubjectAt syntax.ATURI 650 650 StarCount int 651 + HxSwapOob bool 651 652 } 652 653 653 654 func (p *Pages) StarBtnFragment(w io.Writer, params StarBtnFragmentParams) error { 654 - return p.executePlain("fragments/starBtn-oob", w, params) 655 + params.HxSwapOob = true 656 + return p.executePlain("fragments/starBtn", w, params) 655 657 } 656 658 657 659 type RepoIndexParams struct {
-5
appview/pages/templates/fragments/starBtn-oob.html
··· 1 - {{ define "fragments/starBtn-oob" }} 2 - <div hx-swap-oob='outerHTML:#starBtn[data-star-subject-at="{{ .SubjectAt }}"]'> 3 - {{ template "fragments/starBtn" . }} 4 - </div> 5 - {{ end }}
+1
appview/pages/templates/fragments/starBtn.html
··· 9 9 {{ else }} 10 10 hx-post="/star?subject={{ .SubjectAt }}&countHint={{ .StarCount }}" 11 11 {{ end }} 12 + {{ if .HxSwapOob }}hx-swap-oob='outerHTML:#starBtn[data-star-subject-at="{{ .SubjectAt }}"]'{{ end }} 12 13 13 14 hx-trigger="click" 14 15 hx-disabled-elt="#starBtn"