From 72dc5d0954834aaf1843652d018df31237b8ced2 Mon Sep 17 00:00:00 2001 From: rameel Date: Tue, 3 Nov 2026 01:21:38 +0500 Subject: [PATCH] tag-helpers: rename HtmxHeaderTagHelper to HtmxHeadersTagHelper --- docs/api-overwrites/tag-helpers.md | 4 ++-- docs/api/index.md | 2 +- docs/articles/migrate-to-v2.md | 5 ++++- .../{HeaderTagHelper.cshtml => HeadersTagHelper.cshtml} | 0 .../{HtmxHeaderTagHelper.cs => HtmxHeadersTagHelper.cs} | 2 +- tests/Ramstack.HtmxToolkit.AotValidation/TrimmerRoots.xml | 2 +- ...HeaderTagHelperTests.cs => HtmxHeadersTagHelperTests.cs} | 6 +++--- 7 files changed, 12 insertions(+), 9 deletions(-) rename docs/snippets/tag-helpers/{HeaderTagHelper.cshtml => HeadersTagHelper.cshtml} (100%) rename src/Ramstack.HtmxToolkit/TagHelpers/{HtmxHeaderTagHelper.cs => HtmxHeadersTagHelper.cs} (98%) rename tests/Ramstack.HtmxToolkit.Tests/TagHelpers/{HtmxHeaderTagHelperTests.cs => HtmxHeadersTagHelperTests.cs} (97%) diff --git a/docs/api-overwrites/tag-helpers.md b/docs/api-overwrites/tag-helpers.md index eaf34eb..d17ec57 100644 --- a/docs/api-overwrites/tag-helpers.md +++ b/docs/api-overwrites/tag-helpers.md @@ -6,10 +6,10 @@ example: --- --- -uid: Ramstack.HtmxToolkit.TagHelpers.HtmxHeaderTagHelper +uid: Ramstack.HtmxToolkit.TagHelpers.HtmxHeadersTagHelper example: - |- - [!code-razor[](../snippets/tag-helpers/HeaderTagHelper.cshtml)] + [!code-razor[](../snippets/tag-helpers/HeadersTagHelper.cshtml)] --- --- diff --git a/docs/api/index.md b/docs/api/index.md index aac07b8..872e431 100644 --- a/docs/api/index.md +++ b/docs/api/index.md @@ -10,7 +10,7 @@ the guides show how those pieces fit into an application. | Set swap styles, event timing, or a follow-up request | [HtmxSwap](xref:Ramstack.HtmxToolkit.HtmxSwap), [HtmxTriggerTiming](xref:Ramstack.HtmxToolkit.HtmxTriggerTiming), [HtmxLocationOptions](xref:Ramstack.HtmxToolkit.HtmxLocationOptions) | [Response instructions](../articles/responses.md#choose-a-response-instruction) | | Select or configure MVC actions | [HtmxRequestAttribute](xref:Ramstack.HtmxToolkit.HtmxRequestAttribute), [HtmxResponseAttribute](xref:Ramstack.HtmxToolkit.HtmxResponseAttribute) | [MVC action selection](../articles/requests.md#select-mvc-actions-declaratively) | | Generate URLs in Razor | [HtmxUrlTagHelper](xref:Ramstack.HtmxToolkit.TagHelpers.HtmxUrlTagHelper) | [Request URLs](../articles/tag-helpers.md#generate-request-urls) | -| Add values, headers, or request options | [HtmxValsTagHelper](xref:Ramstack.HtmxToolkit.TagHelpers.HtmxValsTagHelper), [HtmxHeaderTagHelper](xref:Ramstack.HtmxToolkit.TagHelpers.HtmxHeaderTagHelper), [HtmxRequestTagHelper](xref:Ramstack.HtmxToolkit.TagHelpers.HtmxRequestTagHelper) | [Tag Helpers](../articles/tag-helpers.md) | +| Add values, headers, or request options | [HtmxValsTagHelper](xref:Ramstack.HtmxToolkit.TagHelpers.HtmxValsTagHelper), [HtmxHeadersTagHelper](xref:Ramstack.HtmxToolkit.TagHelpers.HtmxHeadersTagHelper), [HtmxRequestTagHelper](xref:Ramstack.HtmxToolkit.TagHelpers.HtmxRequestTagHelper) | [Tag Helpers](../articles/tag-helpers.md) | | Register the toolkit and render configuration | [ServiceCollectionExtensions](xref:Ramstack.HtmxToolkit.Hosting.ServiceCollectionExtensions), [HtmxToolkitOptions](xref:Ramstack.HtmxToolkit.Configuration.HtmxToolkitOptions), [HtmxConfigTagHelper](xref:Ramstack.HtmxToolkit.TagHelpers.HtmxConfigTagHelper) | [Configuration](../articles/configuration.md) | | Configure a specific HTMX version | [HtmxV1Config](xref:Ramstack.HtmxToolkit.Configuration.HtmxV1Config), [HtmxV2Config](xref:Ramstack.HtmxToolkit.Configuration.HtmxV2Config), [HtmxV4Config](xref:Ramstack.HtmxToolkit.Configuration.HtmxV4Config) | [Choose a version](../articles/choosing-version.md) | diff --git a/docs/articles/migrate-to-v2.md b/docs/articles/migrate-to-v2.md index 85bf40a..cc1a2b4 100644 --- a/docs/articles/migrate-to-v2.md +++ b/docs/articles/migrate-to-v2.md @@ -489,7 +489,10 @@ These changes affect fewer applications: The numeric values of the members that follow them changed; this matters only if the values are stored or cast. - Typed swap getters, such as `HtmxResponseHeaders.Reswap`, parse the style the way HTMX does: case-sensitively, and ignoring leading whitespace. A value such as `OUTERHTML` now returns `null`. -- `HtmxHeaderTagHelper.Headers` changed from `Dictionary` to `IDictionary`, +- `HtmxHeaderTagHelper` was renamed to `HtmxHeadersTagHelper`. `@addTagHelper *, Ramstack.HtmxToolkit` is not affected. + **Silent:** a directive that names the old class still builds but no longer matches it. With `@addTagHelper`, + `hx-header-*` attributes are rendered unchanged; with `@removeTagHelper`, the Tag Helper stays active. +- `HtmxHeadersTagHelper.Headers` changed from `Dictionary` to `IDictionary`, and header names are compared without case. - `hx-header-*` and `hx-all-headers` throw `InvalidOperationException` when the element also has a hand-written `hx-headers` or `data-hx-headers`. In 1.x, the hand-written value was silently lost. diff --git a/docs/snippets/tag-helpers/HeaderTagHelper.cshtml b/docs/snippets/tag-helpers/HeadersTagHelper.cshtml similarity index 100% rename from docs/snippets/tag-helpers/HeaderTagHelper.cshtml rename to docs/snippets/tag-helpers/HeadersTagHelper.cshtml diff --git a/src/Ramstack.HtmxToolkit/TagHelpers/HtmxHeaderTagHelper.cs b/src/Ramstack.HtmxToolkit/TagHelpers/HtmxHeadersTagHelper.cs similarity index 98% rename from src/Ramstack.HtmxToolkit/TagHelpers/HtmxHeaderTagHelper.cs rename to src/Ramstack.HtmxToolkit/TagHelpers/HtmxHeadersTagHelper.cs index a34b4e8..39f5d87 100644 --- a/src/Ramstack.HtmxToolkit/TagHelpers/HtmxHeaderTagHelper.cs +++ b/src/Ramstack.HtmxToolkit/TagHelpers/HtmxHeadersTagHelper.cs @@ -35,7 +35,7 @@ namespace Ramstack.HtmxToolkit.TagHelpers; [HtmlTargetElement(Attributes = AppendAttributeName)] [HtmlTargetElement(Attributes = HeadersDictionaryName)] [HtmlTargetElement(Attributes = HeadersPrefix + "*")] -public sealed class HtmxHeaderTagHelper(IOptions options) : TagHelper +public sealed class HtmxHeadersTagHelper(IOptions options) : TagHelper { private const string InheritedAttributeName = "hx-headers-inherited"; private const string AppendAttributeName = "hx-headers-append"; diff --git a/tests/Ramstack.HtmxToolkit.AotValidation/TrimmerRoots.xml b/tests/Ramstack.HtmxToolkit.AotValidation/TrimmerRoots.xml index fa8b70e..145ed6c 100644 --- a/tests/Ramstack.HtmxToolkit.AotValidation/TrimmerRoots.xml +++ b/tests/Ramstack.HtmxToolkit.AotValidation/TrimmerRoots.xml @@ -17,7 +17,7 @@ - + diff --git a/tests/Ramstack.HtmxToolkit.Tests/TagHelpers/HtmxHeaderTagHelperTests.cs b/tests/Ramstack.HtmxToolkit.Tests/TagHelpers/HtmxHeadersTagHelperTests.cs similarity index 97% rename from tests/Ramstack.HtmxToolkit.Tests/TagHelpers/HtmxHeaderTagHelperTests.cs rename to tests/Ramstack.HtmxToolkit.Tests/TagHelpers/HtmxHeadersTagHelperTests.cs index 8b2e933..8d4e39f 100644 --- a/tests/Ramstack.HtmxToolkit.Tests/TagHelpers/HtmxHeaderTagHelperTests.cs +++ b/tests/Ramstack.HtmxToolkit.Tests/TagHelpers/HtmxHeadersTagHelperTests.cs @@ -7,7 +7,7 @@ namespace Ramstack.HtmxToolkit.Tests.TagHelpers; [TestFixture] -public class HtmxHeaderTagHelperTests +public class HtmxHeadersTagHelperTests { [Test] public async Task ProcessAsync_SerializesHeaders() @@ -181,7 +181,7 @@ public void ProcessAsync_DeclaredHxHeaders_Throws(string name) Assert.That(exception!.Message, Does.StartWith($"The {name} attribute")); } - private static HtmxHeaderTagHelper CreateHelper(HtmxTargetVersion version = HtmxTargetVersion.V2) + private static HtmxHeadersTagHelper CreateHelper(HtmxTargetVersion version = HtmxTargetVersion.V2) { var options = new HtmxToolkitOptions(); @@ -200,6 +200,6 @@ private static HtmxHeaderTagHelper CreateHelper(HtmxTargetVersion version = Htmx throw new ArgumentOutOfRangeException(nameof(version)); } - return new HtmxHeaderTagHelper(Options.Create(options)); + return new HtmxHeadersTagHelper(Options.Create(options)); } }