Giraffe.ViewEngine.Htmx
4.0.0
dotnet add package Giraffe.ViewEngine.Htmx --version 4.0.0
NuGet\Install-Package Giraffe.ViewEngine.Htmx -Version 4.0.0
<PackageReference Include="Giraffe.ViewEngine.Htmx" Version="4.0.0" />
<PackageVersion Include="Giraffe.ViewEngine.Htmx" Version="4.0.0" />
<PackageReference Include="Giraffe.ViewEngine.Htmx" />
paket add Giraffe.ViewEngine.Htmx --version 4.0.0
#r "nuget: Giraffe.ViewEngine.Htmx, 4.0.0"
#:package Giraffe.ViewEngine.Htmx@4.0.0
#addin nuget:?package=Giraffe.ViewEngine.Htmx&version=4.0.0
#tool nuget:?package=Giraffe.ViewEngine.Htmx&version=4.0.0
Giraffe.ViewEngine.Htmx
This package enables htmx support within the Giraffe view engine.
htmx version: 4.0.0
Upgrading from v2.x: see the migration guide for changes, which are plentiful. htmx switches from XMLHTTPRequest to fetch, and many changes are related to the new event cycle.
Inheritance is now explicit; to have an attribute's value inherited to its children, wrap the attribute in hxInherited (ex. hxInherited (_hxTarget "#main")). Values can be appended to inherited values as well using the hxAppend modifier.
Several constructs have been removed in this release. If you encounter compile errors, install version 4.0.0-beta5; it will instead flag these with warnings and suggestions on how to mitigate them. Once the warnings are gone, you can reinstall this version.
Setup
- Install the package.
- Prior to using the attribute or support modules,
open Giraffe.ViewEngine.Htmx. - If the client is using the
htmaxbundle, alsoopen Giraffe.ViewEngine.Htmax.
Use
Following Giraffe View Engine's lead, there are a set of attribute functions for htmx; for many of the attributes, there are also helper modules to assist with typing the values. The example below utilizes both:
let autoload =
div [ _hxGet "/this/data"; _hxTrigger HxTrigger.Load ] [ str "Loading..." ]
Support modules include:
HxConfig(new in v4, replacesHxRequest)HxEncodingHxHeadersHxSwap(requiresopen Giraffe.Htmx)HxTriggerHxVals
Htmx.Script.local creates an XmlNode to load the package-provided htmx library. There are also two XmlNodes that will load the htmx script from jsdelivr; Htmx.Script.cdnMinified loads the minified version, and Htmx.Script.cdnUnminified loads the unminified version (useful for debugging). htmx v4 also distributes a "max" bundle which contains some common extensions; these are available with the same names under Htmx.Script.Max.
NOTE: When using the CDN nodes and a Content Security Policy (CSP) header, cdn.jsdelivr.net needs to be listed as an allowable script-src.
This also supports fragment rendering, providing the flexibility to render an entire template, or only a portion of it (based on the element's id attribute).
Learn
htmx's attributes and these attribute functions map one-to-one. There are two exceptions:
_hxBoostimpliestrue; use_hxNoBoostto set it tofalse._hxSwapWithTransitionrenders the standardhx-swapattribute and appendstransition:trueto the specified swap value.
The htmx hx-on attribute supports multiple events if they are separated with a newline (\n) character. The value provided to this attribute will be attribute-escaped, but in testing, it was interpreted correctly.
The support modules contain named properties for known values (as illustrated with HxTrigger.Load above). A few of the modules are more than collections of names, though:
HxConfighas aConfigurefunction, which takes a list of strings; the other functions in the module allow for configuring the request.
HxConfig.Configure [ HxRequest.Timeout 500 ] |> _hxConfig
HxTriggeris (by far) the most complex of these modules. Most uses won't need that complexity; however, complex triggers can be defined by piping into or composing with other functions. For example, to define an event that responds to a shift-click anywhere on the document, with a delay of 3 seconds before firing:
HxTrigger.Click
|> HxTrigger.Filter.Shift
|> HxTrigger.FromDocument
|> HxTrigger.Delay "3s"
|> _hxTrigger
// or
(HxTrigger.Filter.Shift >> HxTrigger.FromDocument >> HxTrigger.Delay "3s") HxTrigger.Click
|> _hxTrigger
| Product | Versions Compatible and additional computed target framework versions. |
|---|---|
| .NET | net8.0 is compatible. net8.0-android was computed. net8.0-browser was computed. net8.0-ios was computed. net8.0-maccatalyst was computed. net8.0-macos was computed. net8.0-tvos was computed. net8.0-windows was computed. net9.0 is compatible. net9.0-android was computed. net9.0-browser was computed. net9.0-ios was computed. net9.0-maccatalyst was computed. net9.0-macos was computed. net9.0-tvos was computed. net9.0-windows was computed. net10.0 is compatible. net10.0-android was computed. net10.0-browser was computed. net10.0-ios was computed. net10.0-maccatalyst was computed. net10.0-macos was computed. net10.0-tvos was computed. net10.0-windows was computed. |
-
net10.0
- FSharp.Core (>= 10.1.400)
- Giraffe.Htmx.Common (>= 4.0.0)
- Giraffe.ViewEngine (>= 1.4.0)
-
net8.0
- FSharp.Core (>= 10.1.400)
- Giraffe.Htmx.Common (>= 4.0.0)
- Giraffe.ViewEngine (>= 1.4.0)
-
net9.0
- FSharp.Core (>= 10.1.400)
- Giraffe.Htmx.Common (>= 4.0.0)
- Giraffe.ViewEngine (>= 1.4.0)
NuGet packages
This package is not used by any NuGet packages.
GitHub repositories
This package is not used by any popular GitHub repositories.
| Version | Downloads | Last Updated |
|---|---|---|
| 4.0.0 | 35 | 9/1/2026 |
| 4.0.0-beta5 | 116 | 6/30/2026 |
| 4.0.0-beta4 | 115 | 6/15/2026 |
| 4.0.0-alpha8 | 113 | 3/22/2026 |
| 4.0.0-alpha6a | 128 | 1/7/2026 |
| 2.0.10 | 148 | 7/3/2026 |
| 2.0.8 | 286 | 12/28/2025 |
| 2.0.6 | 403 | 7/3/2025 |
| 2.0.4 | 995 | 12/13/2024 |
| 2.0.3 | 1,349 | 10/18/2024 |
| 2.0.2 | 593 | 8/13/2024 |
| 2.0.1 | 287 | 7/29/2024 |
| 2.0.0 | 4,720 | 6/18/2024 |
| 2.0.0-beta4 | 263 | 5/23/2024 |
| 2.0.0-beta3 | 234 | 4/18/2024 |
| 2.0.0-beta1 | 232 | 3/19/2024 |
| 2.0.0-alpha2 | 239 | 2/12/2024 |
| 2.0.0-alpha1 | 255 | 1/31/2024 |
| 1.9.12 | 2,947 | 4/18/2024 |
| 1.9.11 | 2,080 | 3/19/2024 |
htmx 4.0.0 Initial Release
See package and prior alpha/beta release READMEs; v2 to v4 is not an update-and-forget-it release. If you encounter build errors after installing this, install v4.0.0-beta5 instead; obsolete elements will generate a warning with suggestions of what to use instead.