Giraffe.Htmx/src/Htmx/README.md

1.7 KiB

Giraffe.Htmx

This package enables server-side support for htmx within Giraffe and ASP.NET's HttpContext.

htmx version: 2.0.3

Upgrading from v1.x: the migration guide does not currently specify any request or response header changes. This means that there are no required code changes in moving from v1.* to v2.*.

Setup

  1. Install the package.
  2. Prior to using the request header extension properties or the header-setting HttpHandlers, open Giraffe.Htmx.

Use

To obtain a request header, using the IHeaderDictionary extension properties:

let myHandler : HttpHander =
    fun next ctx ->
        match ctx.HxPrompt with
        | Some prompt -> ... // do something with the text the user provided
        | None -> ... // no text provided

To set a response header:

let myHandler : HttpHander =
    fun next ctx ->
        // some meaningful work
        withHxPushUrl "/some/new/url" >=> [other handlers]

The HxSwap module has constants to use for the HX-Reswap header. These may be extended with settle, show, and other qualifiers; see the htmx documentation for the hx-swap attribute for more information.

Learn

The naming conventions of this library were selected to mirror those provided by htmx. The header properties become Hx* on the ctx.Request.Headers object, and the response handlers are withHx* based on the header being set. The only part that does not line up is withHxTrigger* and withHxTriggerMany; the former set work with a single string (to trigger a single event with no arguments), while the latter set supports both arguments and multiple events.