Update for htmx 1.7.0 (#4)

Fixes #3
This commit is contained in:
Daniel J. Summers 2022-02-23 21:54:51 -05:00 committed by GitHub
parent b5292bffc4
commit c587a28770
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
7 changed files with 51 additions and 9 deletions

View File

@ -1,8 +1,8 @@
<?xml version="1.0" encoding="utf-8" standalone="no"?> <?xml version="1.0" encoding="utf-8" standalone="no"?>
<Project ToolsVersion="15.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003"> <Project ToolsVersion="15.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<PropertyGroup> <PropertyGroup>
<VersionPrefix>1.6.1</VersionPrefix> <VersionPrefix>1.7.0</VersionPrefix>
<PackageReleaseNotes>Initial production-ready release</PackageReleaseNotes> <PackageReleaseNotes>Support new attributes/headers in htmx 1.7.0</PackageReleaseNotes>
<Authors>danieljsummers</Authors> <Authors>danieljsummers</Authors>
<Company>Bit Badger Solutions</Company> <Company>Bit Badger Solutions</Company>
<PackageProjectUrl>https://github.com/bit-badger/Giraffe.Htmx</PackageProjectUrl> <PackageProjectUrl>https://github.com/bit-badger/Giraffe.Htmx</PackageProjectUrl>

View File

@ -217,6 +217,17 @@ module HandlerTests =
Assert.Equal ("/a-new-url", dic.["HX-Push"].[0]) Assert.Equal ("/a-new-url", dic.["HX-Push"].[0])
} }
[<Fact>]
let ``withHxNoPush succeeds`` () =
let ctx = Substitute.For<HttpContext> ()
let dic = HeaderDictionary ()
ctx.Response.Headers.ReturnsForAnyArgs dic |> ignore
task {
let! _ = withHxNoPush next ctx
Assert.True (dic.ContainsKey "HX-Push")
Assert.Equal ("false", dic.["HX-Push"].[0])
}
[<Fact>] [<Fact>]
let ``withHxRedirect succeeds`` () = let ``withHxRedirect succeeds`` () =
let ctx = Substitute.For<HttpContext> () let ctx = Substitute.For<HttpContext> ()

View File

@ -66,6 +66,10 @@ module Handlers =
let withHxPush : string -> HttpHandler = let withHxPush : string -> HttpHandler =
setHttpHeader "HX-Push" setHttpHeader "HX-Push"
// Explicitly do not push a new URL into the history stack
let withHxNoPush : HttpHandler =
toLowerBool false |> withHxPush
/// Can be used to do a client-side redirect to a new location /// Can be used to do a client-side redirect to a new location
let withHxRedirect : string -> HttpHandler = let withHxRedirect : string -> HttpHandler =
setHttpHeader "HX-Redirect" setHttpHeader "HX-Redirect"

View File

@ -2,7 +2,7 @@
This package enables server-side support for [htmx](https://htmx.org) within [Giraffe](https://giraffe.wiki) and ASP.NET's `HttpContext`. This package enables server-side support for [htmx](https://htmx.org) within [Giraffe](https://giraffe.wiki) and ASP.NET's `HttpContext`.
**htmx version: 1.6.1** **htmx version: 1.7.0**
### Setup ### Setup

View File

@ -344,6 +344,10 @@ module Attributes =
let ``_hxDisable succeeds`` () = let ``_hxDisable succeeds`` () =
p [ _hxDisable ] [] |> shouldRender """<p hx-disable></p>""" p [ _hxDisable ] [] |> shouldRender """<p hx-disable></p>"""
[<Fact>]
let ``_hxDisinherit succeeds`` () =
strong [ _hxDisinherit "*" ] [] |> shouldRender """<strong hx-disinherit="*"></strong>"""
[<Fact>] [<Fact>]
let ``_hxEncoding succeeds`` () = let ``_hxEncoding succeeds`` () =
form [ _hxEncoding "utf-7" ] [] |> shouldRender """<form hx-encoding="utf-7"></form>""" form [ _hxEncoding "utf-7" ] [] |> shouldRender """<form hx-encoding="utf-7"></form>"""
@ -425,6 +429,10 @@ module Attributes =
let ``_hxSwapOob succeeds`` () = let ``_hxSwapOob succeeds`` () =
li [ _hxSwapOob "true" ] [] |> shouldRender """<li hx-swap-oob="true"></li>""" li [ _hxSwapOob "true" ] [] |> shouldRender """<li hx-swap-oob="true"></li>"""
[<Fact>]
let ``_hxSync succeeds`` () =
nav [ _hxSync "closest form:abort" ] [] |> shouldRender """<nav hx-sync="closest form:abort"></nav>"""
[<Fact>] [<Fact>]
let ``_hxTarget succeeds`` () = let ``_hxTarget succeeds`` () =
header [ _hxTarget "#somewhereElse" ] [] |> shouldRender """<header hx-target="#somewhereElse"></header>""" header [ _hxTarget "#somewhereElse" ] [] |> shouldRender """<header hx-target="#somewhereElse"></header>"""
@ -441,4 +449,19 @@ module Attributes =
[<Fact>] [<Fact>]
let ``_hxWs succeeds`` () = let ``_hxWs succeeds`` () =
ul [ _hxWs "connect:/web-socket" ] [] |> shouldRender """<ul hx-ws="connect:/web-socket"></ul>""" ul [ _hxWs "connect:/web-socket" ] [] |> shouldRender """<ul hx-ws="connect:/web-socket"></ul>"""
/// Tests for the Script module
module Script =
[<Fact>]
let ``Script.minified succeeds`` () =
let html = RenderView.AsString.htmlNode Script.minified
Assert.Equal ("""<script src="https://unpkg.com/htmx.org@1.7.0" integrity="sha384-EzBXYPt0/T6gxNp0nuPtLkmRpmDBbjg6WmCUZRLXBBwYYmwAUxzlSGej0ARHX0Bo" crossorigin="anonymous"></script>""",
html)
[<Fact>]
let ``Script.unminified succeeds`` () =
let html = RenderView.AsString.htmlNode Script.unminified
Assert.Equal ("""<script src="https://unpkg.com/htmx.org@1.7.0/dist/htmx.js" integrity="sha384-ESk4PjE7dwjGkEciohREmmf8rLMX0E95MKwxM3bvC90sZ3XbF2TELnVk2w7bX0d9" crossorigin="anonymous"></script>""",
html)

View File

@ -164,6 +164,8 @@ module HtmxAttrs =
let _hxDelete = attr "hx-delete" let _hxDelete = attr "hx-delete"
/// Disables htmx processing for the given node and any children nodes /// Disables htmx processing for the given node and any children nodes
let _hxDisable = flag "hx-disable" let _hxDisable = flag "hx-disable"
/// Disinherit all ("*") or specific htmx attributes
let _hxDisinherit = attr "hx-disinherit"
/// Changes the request encoding type /// Changes the request encoding type
let _hxEncoding = attr "hx-encoding" let _hxEncoding = attr "hx-encoding"
/// Extensions to use for this element /// Extensions to use for this element
@ -204,6 +206,8 @@ module HtmxAttrs =
let _hxSwap = attr "hx-swap" let _hxSwap = attr "hx-swap"
/// Marks content in a response as being "Out of Band", i.e. swapped somewhere other than the target /// Marks content in a response as being "Out of Band", i.e. swapped somewhere other than the target
let _hxSwapOob = attr "hx-swap-oob" let _hxSwapOob = attr "hx-swap-oob"
/// Synchronize events based on another element
let _hxSync = attr "hx-sync"
/// Specifies the target element to be swapped /// Specifies the target element to be swapped
let _hxTarget = attr "hx-target" let _hxTarget = attr "hx-target"
/// Specifies the event that triggers the request /// Specifies the event that triggers the request
@ -220,15 +224,15 @@ module Script =
/// Script tag to load the minified version from unpkg.com /// Script tag to load the minified version from unpkg.com
let minified = let minified =
script [ script [
_src "https://unpkg.com/htmx.org@1.6.1" _src "https://unpkg.com/htmx.org@1.7.0"
_integrity "sha384-tvG/2mnCFmGQzYC1Oh3qxQ7CkQ9kMzYjWZSNtrRZygHPDDqottzEJsqS4oUVodhW" _integrity "sha384-EzBXYPt0/T6gxNp0nuPtLkmRpmDBbjg6WmCUZRLXBBwYYmwAUxzlSGej0ARHX0Bo"
_crossorigin "anonymous" _crossorigin "anonymous"
] [] ] []
/// Script tag to load the unminified version from unpkg.com /// Script tag to load the unminified version from unpkg.com
let unminified = let unminified =
script [ script [
_src "https://unpkg.com/htmx.org@1.6.1/dist/htmx.js" _src "https://unpkg.com/htmx.org@1.7.0/dist/htmx.js"
_integrity "sha384-7G9OE6gS4pBnBGH74HojjPQ8xOEGrdBeQc7JJOc58k6LG/YVfKXARd91w9715AYG" _integrity "sha384-ESk4PjE7dwjGkEciohREmmf8rLMX0E95MKwxM3bvC90sZ3XbF2TELnVk2w7bX0d9"
_crossorigin "anonymous" _crossorigin "anonymous"
] [] ] []

View File

@ -2,7 +2,7 @@
This package enables [htmx](https://htmx.org) support within the [Giraffe](https://giraffe.wiki) view engine. This package enables [htmx](https://htmx.org) support within the [Giraffe](https://giraffe.wiki) view engine.
**htmx version: 1.6.1** **htmx version: 1.7.0**
### Setup ### Setup