v2.0.8 #16
@@ -2,6 +2,12 @@
|
|||||||
[<AutoOpen>]
|
[<AutoOpen>]
|
||||||
module Giraffe.Htmx.Common
|
module Giraffe.Htmx.Common
|
||||||
|
|
||||||
|
/// <summary>The version of htmx embedded in the package</summary>
|
||||||
|
let HtmxVersion = "2.0.8"
|
||||||
|
|
||||||
|
/// <summary>The path for the provided htmx script</summary>
|
||||||
|
let internal htmxLocalScript = $"/_content/Giraffe.Htmx.Common/htmx.min.js?ver={HtmxVersion}"
|
||||||
|
|
||||||
/// <summary>Serialize a list of key/value pairs to JSON (very rudimentary)</summary>
|
/// <summary>Serialize a list of key/value pairs to JSON (very rudimentary)</summary>
|
||||||
/// <param name="pairs">The key/value pairs to be serialized to JSON</param>
|
/// <param name="pairs">The key/value pairs to be serialized to JSON</param>
|
||||||
/// <returns>A string with the key/value pairs serialized to JSON</returns>
|
/// <returns>A string with the key/value pairs serialized to JSON</returns>
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
<Project Sdk="Microsoft.NET.Sdk">
|
<Project Sdk="Microsoft.NET.Sdk.Razor">
|
||||||
|
|
||||||
<PropertyGroup>
|
<PropertyGroup>
|
||||||
<GenerateDocumentationFile>true</GenerateDocumentationFile>
|
<GenerateDocumentationFile>true</GenerateDocumentationFile>
|
||||||
|
|||||||
@@ -2,4 +2,4 @@
|
|||||||
|
|
||||||
This package contains common code shared between [`Giraffe.Htmx`](https://www.nuget.org/packages/Giraffe.Htmx) and [`Giraffe.ViewEngine.Htmx`](https://www.nuget.org/packages/Giraffe.ViewEngine.Htmx), and will be automatically installed when you install either one.
|
This package contains common code shared between [`Giraffe.Htmx`](https://www.nuget.org/packages/Giraffe.Htmx) and [`Giraffe.ViewEngine.Htmx`](https://www.nuget.org/packages/Giraffe.ViewEngine.Htmx), and will be automatically installed when you install either one.
|
||||||
|
|
||||||
**htmx version: 2.0.6**
|
**htmx version: 2.0.8**
|
||||||
|
|||||||
1
src/Common/wwwroot/htmx.min.js
vendored
Normal file
1
src/Common/wwwroot/htmx.min.js
vendored
Normal file
File diff suppressed because one or more lines are too long
@@ -170,3 +170,15 @@ module Handlers =
|
|||||||
/// <seealso href="https://htmx.org/headers/hx-trigger/">Documentation</seealso>
|
/// <seealso href="https://htmx.org/headers/hx-trigger/">Documentation</seealso>
|
||||||
let withHxTriggerManyAfterSwap evts : HttpHandler =
|
let withHxTriggerManyAfterSwap evts : HttpHandler =
|
||||||
toJson evts |> setHttpHeader "HX-Trigger-After-Swap"
|
toJson evts |> setHttpHeader "HX-Trigger-After-Swap"
|
||||||
|
|
||||||
|
|
||||||
|
/// <summary>Load the package-provided version of the htmx script</summary>
|
||||||
|
[<RequireQualifiedAccess>]
|
||||||
|
module HtmxScript =
|
||||||
|
|
||||||
|
open Giraffe.Htmx.Common
|
||||||
|
open Microsoft.AspNetCore.Html
|
||||||
|
|
||||||
|
/// <summary><c>script</c> tag to load the package-provided version of the htmx script</summary>
|
||||||
|
let local = HtmlString $"""<script src="{htmxLocalScript}"></script>"""
|
||||||
|
|
||||||
@@ -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: 2.0.6**
|
**htmx version: 2.0.8**
|
||||||
|
|
||||||
_Upgrading from v1.x: the [migration guide](https://htmx.org/migration-guide-htmx-1/) 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.*._
|
_Upgrading from v1.x: the [migration guide](https://htmx.org/migration-guide-htmx-1/) 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.*._
|
||||||
|
|
||||||
|
|||||||
@@ -3,6 +3,12 @@ module Common
|
|||||||
open Expecto
|
open Expecto
|
||||||
open Giraffe.Htmx
|
open Giraffe.Htmx
|
||||||
|
|
||||||
|
/// Test to ensure the version was updated
|
||||||
|
let version =
|
||||||
|
test "HtmxVersion is correct" {
|
||||||
|
Expect.equal HtmxVersion "2.0.8" "htmx version incorrect"
|
||||||
|
}
|
||||||
|
|
||||||
/// Tests for the HxSwap module
|
/// Tests for the HxSwap module
|
||||||
let swap =
|
let swap =
|
||||||
testList "HxSwap" [
|
testList "HxSwap" [
|
||||||
@@ -30,4 +36,4 @@ let swap =
|
|||||||
]
|
]
|
||||||
|
|
||||||
/// All tests for this module
|
/// All tests for this module
|
||||||
let allTests = testList "Htmx.Common" [ swap ]
|
let allTests = testList "Htmx.Common" [ version; swap ]
|
||||||
|
|||||||
@@ -3,6 +3,7 @@ module Htmx
|
|||||||
open System
|
open System
|
||||||
open Expecto
|
open Expecto
|
||||||
open Giraffe.Htmx
|
open Giraffe.Htmx
|
||||||
|
open Microsoft.AspNetCore.Html
|
||||||
open Microsoft.AspNetCore.Http
|
open Microsoft.AspNetCore.Http
|
||||||
open NSubstitute
|
open NSubstitute
|
||||||
|
|
||||||
@@ -354,5 +355,16 @@ let handlers =
|
|||||||
}
|
}
|
||||||
]
|
]
|
||||||
|
|
||||||
|
/// Tests for the HtmxScript module
|
||||||
|
let script =
|
||||||
|
testList "HtmxScript" [
|
||||||
|
test "local generates correct link" {
|
||||||
|
Expect.equal
|
||||||
|
(string HtmxScript.local)
|
||||||
|
$"""<script src="/_content/Giraffe.Htmx.Common/htmx.min.js?ver={HtmxVersion}"></script>"""
|
||||||
|
"htmx script link is incorrect"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
|
||||||
/// All tests for this module
|
/// All tests for this module
|
||||||
let allTests = testList "Htmx" [ dictExtensions; reqExtensions; handlers ]
|
let allTests = testList "Htmx" [ dictExtensions; reqExtensions; handlers; script ]
|
||||||
|
|||||||
@@ -842,22 +842,31 @@ let attributes =
|
|||||||
}
|
}
|
||||||
]
|
]
|
||||||
|
|
||||||
|
open Giraffe.Htmx.Common
|
||||||
|
|
||||||
/// Tests for the Script module
|
/// Tests for the Script module
|
||||||
let script =
|
let script =
|
||||||
testList "Script" [
|
testList "Script" [
|
||||||
test "minified succeeds" {
|
test "local succeeds" {
|
||||||
let html = RenderView.AsString.htmlNode Script.minified
|
let html = RenderView.AsString.htmlNode Script.local
|
||||||
Expect.equal
|
Expect.equal
|
||||||
html
|
html
|
||||||
"""<script src="https://cdn.jsdelivr.net/npm/htmx.org@2.0.6/dist/htmx.min.js" integrity="sha384-Akqfrbj/HpNVo8k11SXBb6TlBWmXXlYQrCSqEWmyKJe+hDm3Z/B2WVG4smwBkRVm" crossorigin="anonymous"></script>"""
|
$"""<script src="/_content/Giraffe.Htmx.Common/htmx.min.js?ver={HtmxVersion}"></script>"""
|
||||||
"Minified script tag is incorrect"
|
"Local script tag is incorrect"
|
||||||
}
|
}
|
||||||
test "unminified succeeds" {
|
test "cdnMinified succeeds" {
|
||||||
let html = RenderView.AsString.htmlNode Script.unminified
|
let html = RenderView.AsString.htmlNode Script.cdnMinified
|
||||||
Expect.equal
|
Expect.equal
|
||||||
html
|
html
|
||||||
"""<script src="https://cdn.jsdelivr.net/npm/htmx.org@2.0.6/dist/htmx.js" integrity="sha384-ksKjJrwjL5VxqAkAZAVOPXvMkwAykMaNYegdixAESVr+KqLkKE8XBDoZuwyWVUDv" crossorigin="anonymous"></script>"""
|
$"""<script src="https://cdn.jsdelivr.net/npm/htmx.org@{HtmxVersion}/dist/htmx.min.js" integrity="sha256-Iig+9oy3VFkU8KiKG97cclanA9HVgMHSVSF9ClDTExM=" crossorigin="anonymous"></script>"""
|
||||||
"Unminified script tag is incorrect"
|
"CDN minified script tag is incorrect"
|
||||||
|
}
|
||||||
|
test "cdnUnminified succeeds" {
|
||||||
|
let html = RenderView.AsString.htmlNode Script.cdnUnminified
|
||||||
|
Expect.equal
|
||||||
|
html
|
||||||
|
$"""<script src="https://cdn.jsdelivr.net/npm/htmx.org@{HtmxVersion}/dist/htmx.js" integrity="sha256-upUwYnay6R+DA68rROTAP+EdfO3NvOqtE513PgDyAYM=" crossorigin="anonymous"></script>"""
|
||||||
|
"CDN unminified script tag is incorrect"
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
|
|
||||||
|
|||||||
@@ -788,18 +788,33 @@ module HtmxAttrs =
|
|||||||
/// <summary>Script tags to pull htmx into a web page</summary>
|
/// <summary>Script tags to pull htmx into a web page</summary>
|
||||||
module Script =
|
module Script =
|
||||||
|
|
||||||
/// <summary>Script tag to load the minified version from unpkg.com</summary>
|
open System
|
||||||
let minified =
|
|
||||||
script [ _src "https://cdn.jsdelivr.net/npm/htmx.org@2.0.6/dist/htmx.min.js"
|
/// <summary>Script tag to load the package-provided version of htmx</summary>
|
||||||
_integrity "sha384-Akqfrbj/HpNVo8k11SXBb6TlBWmXXlYQrCSqEWmyKJe+hDm3Z/B2WVG4smwBkRVm"
|
let local = script [ _src htmxLocalScript ] []
|
||||||
|
|
||||||
|
/// <summary>Script tag to load the minified version from jsdelivr.net</summary>
|
||||||
|
/// <remarks>Ensure <c>cdn.jsdelivr.net</c> is in your CSP <c>script-src</c> list (if applicable)</remarks>
|
||||||
|
let cdnMinified =
|
||||||
|
script [ _src "https://cdn.jsdelivr.net/npm/htmx.org@2.0.8/dist/htmx.min.js"
|
||||||
|
_integrity "sha256-Iig+9oy3VFkU8KiKG97cclanA9HVgMHSVSF9ClDTExM="
|
||||||
_crossorigin "anonymous" ] []
|
_crossorigin "anonymous" ] []
|
||||||
|
|
||||||
/// <summary>Script tag to load the unminified version from unpkg.com</summary>
|
/// <summary>Script tag to load the unminified version from jsdelivr.net</summary>
|
||||||
let unminified =
|
/// <remarks>Ensure <c>cdn.jsdelivr.net</c> is in your CSP <c>script-src</c> list (if applicable)</remarks>
|
||||||
script [ _src "https://cdn.jsdelivr.net/npm/htmx.org@2.0.6/dist/htmx.js"
|
let cdnUnminified =
|
||||||
_integrity "sha384-ksKjJrwjL5VxqAkAZAVOPXvMkwAykMaNYegdixAESVr+KqLkKE8XBDoZuwyWVUDv"
|
script [ _src "https://cdn.jsdelivr.net/npm/htmx.org@2.0.8/dist/htmx.js"
|
||||||
|
_integrity "sha256-upUwYnay6R+DA68rROTAP+EdfO3NvOqtE513PgDyAYM="
|
||||||
_crossorigin "anonymous" ] []
|
_crossorigin "anonymous" ] []
|
||||||
|
|
||||||
|
/// <summary>Script tag to load the minified version from jsdelivr.net</summary>
|
||||||
|
[<Obsolete "Use cdnMinified instead; this will be removed in v4">]
|
||||||
|
let minified = cdnMinified
|
||||||
|
|
||||||
|
/// <summary>Script tag to load the unminified version from jsdelivr.net</summary>
|
||||||
|
[<Obsolete "Use cdnUnminified instead; this will be removed in v4">]
|
||||||
|
let unminified = cdnUnminified
|
||||||
|
|
||||||
|
|
||||||
/// <summary>Functions to extract and render an HTML fragment from a document</summary>
|
/// <summary>Functions to extract and render an HTML fragment from a document</summary>
|
||||||
[<RequireQualifiedAccess>]
|
[<RequireQualifiedAccess>]
|
||||||
|
|||||||
@@ -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: 2.0.6**
|
**htmx version: 2.0.8**
|
||||||
|
|
||||||
_Upgrading from v1.x: see [the migration guide](https://htmx.org/migration-guide-htmx-1/) for changes_
|
_Upgrading from v1.x: see [the migration guide](https://htmx.org/migration-guide-htmx-1/) for changes_
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user