104 lines
2.1 KiB
Go
104 lines
2.1 KiB
Go
package htmx
|
|
|
|
import (
|
|
"encoding/json"
|
|
"net/http"
|
|
)
|
|
|
|
type Response struct {
|
|
w http.ResponseWriter
|
|
}
|
|
|
|
func NewResponse(w http.ResponseWriter) *Response {
|
|
return &Response{w: w}
|
|
}
|
|
|
|
func (r *Response) Header() http.Header {
|
|
return r.w.Header()
|
|
}
|
|
|
|
func (r *Response) Location(url string) *Response {
|
|
r.w.Header().Set("HX-Location", url)
|
|
return r
|
|
}
|
|
|
|
func (r *Response) LocationWithTarget(url, target string) *Response {
|
|
data, _ := json.Marshal(map[string]string{"path": url, "target": target})
|
|
r.w.Header().Set("HX-Location", string(data))
|
|
return r
|
|
}
|
|
|
|
func (r *Response) PushURL(url string) *Response {
|
|
r.w.Header().Set("HX-Push-Url", url)
|
|
return r
|
|
}
|
|
|
|
func (r *Response) ReplaceURL(url string) *Response {
|
|
r.w.Header().Set("HX-Replace-Url", url)
|
|
return r
|
|
}
|
|
|
|
func (r *Response) Redirect(url string) *Response {
|
|
r.w.Header().Set("HX-Redirect", url)
|
|
return r
|
|
}
|
|
|
|
func (r *Response) Refresh() *Response {
|
|
r.w.Header().Set("HX-Refresh", "true")
|
|
return r
|
|
}
|
|
|
|
func (r *Response) Reswap(strategy string) *Response {
|
|
r.w.Header().Set("HX-Reswap", strategy)
|
|
return r
|
|
}
|
|
|
|
func (r *Response) ReswapWithModifiers(strategy string) *Response {
|
|
r.w.Header().Set("HX-Reswap", strategy)
|
|
return r
|
|
}
|
|
|
|
func (r *Response) Retarget(selector string) *Response {
|
|
r.w.Header().Set("HX-Retarget", selector)
|
|
return r
|
|
}
|
|
|
|
func (r *Response) Reselect(selector string) *Response {
|
|
r.w.Header().Set("HX-Reselect", selector)
|
|
return r
|
|
}
|
|
|
|
func (r *Response) Trigger(event string) *Response {
|
|
r.w.Header().Set("HX-Trigger", event)
|
|
return r
|
|
}
|
|
|
|
func (r *Response) TriggerWithData(event string, data any) *Response {
|
|
payload, _ := json.Marshal(map[string]any{event: data})
|
|
r.w.Header().Set("HX-Trigger", string(payload))
|
|
return r
|
|
}
|
|
|
|
func (r *Response) TriggerAfterSwap(event string) *Response {
|
|
r.w.Header().Set("HX-Trigger-After-Swap", event)
|
|
return r
|
|
}
|
|
|
|
func (r *Response) TriggerAfterSettle(event string) *Response {
|
|
r.w.Header().Set("HX-Trigger-After-Settle", event)
|
|
return r
|
|
}
|
|
|
|
func (r *Response) StopPolling() *Response {
|
|
r.w.WriteHeader(286)
|
|
return r
|
|
}
|
|
|
|
func (r *Response) NoContent() {
|
|
r.w.WriteHeader(http.StatusNoContent)
|
|
}
|
|
|
|
func (r *Response) PreventSwap() *Response {
|
|
return r.Reswap("none")
|
|
}
|