Click Here To Test Validation
diff --git a/src/AspNetCore.Utilities.Bootstrap5TagHelpers.Tests/Form/FormCheckboxTagHelperTests.cs b/src/AspNetCore.Utilities.Bootstrap5TagHelpers.Tests/Form/FormCheckboxTagHelperTests.cs
new file mode 100644
index 0000000..1246ffe
--- /dev/null
+++ b/src/AspNetCore.Utilities.Bootstrap5TagHelpers.Tests/Form/FormCheckboxTagHelperTests.cs
@@ -0,0 +1,67 @@
+using ICG.AspNetCore.Utilities.Bootstrap5TagHelpers.Form;
+using ICG.AspNetCore.Utilities.Bootstrap5TagHelpers.Tests.FromFramework;
+using Microsoft.AspNetCore.Mvc.Rendering;
+using Microsoft.AspNetCore.Mvc.ViewFeatures;
+using Xunit.Abstractions;
+
+namespace ICG.AspNetCore.Utilities.Bootstrap5TagHelpers.Tests.Form;
+
+[UsesVerify]
+public sealed class FormCheckboxTagHelperTests : ModelTagHelperTest
+{
+ public FormCheckboxTagHelperTests(ITestOutputHelper output) : base(output)
+ {
+
+ }
+
+ [Fact]
+ public async Task Renders()
+ {
+ var metadataProvider = new TestModelMetadataProvider();
+ var htmlGenerator = new TestableHtmlGenerator(metadataProvider);
+
+ var tagHelper = GetTagHelper(htmlGenerator, model: false, propertyName: nameof(TestModel.CheckboxField));
+ var output = await tagHelper.Render();
+ await VerifyTagHelper(output);
+ }
+
+ [Fact]
+ public async Task Renders_Inline()
+ {
+ var metadataProvider = new TestModelMetadataProvider();
+ var htmlGenerator = new TestableHtmlGenerator(metadataProvider);
+
+ var tagHelper = GetTagHelper(htmlGenerator, model: false, propertyName: nameof(TestModel.CheckboxField));
+ tagHelper.IsInline = true;
+ var output = await tagHelper.Render();
+ await VerifyTagHelper(output);
+ }
+
+ [Fact]
+ public async Task Renders_Switch()
+ {
+ var metadataProvider = new TestModelMetadataProvider();
+ var htmlGenerator = new TestableHtmlGenerator(metadataProvider);
+
+ var tagHelper = GetTagHelper(htmlGenerator, model: false, propertyName: nameof(TestModel.CheckboxField));
+ tagHelper.IsSwitch = true;
+ var output = await tagHelper.Render();
+ await VerifyTagHelper(output);
+ }
+
+ [Fact]
+ public async Task Renders_InlineSwitch()
+ {
+ var metadataProvider = new TestModelMetadataProvider();
+ var htmlGenerator = new TestableHtmlGenerator(metadataProvider);
+
+ var tagHelper = GetTagHelper(htmlGenerator, model: false, propertyName: nameof(TestModel.CheckboxField));
+ tagHelper.IsInline = true;
+ tagHelper.IsSwitch = true;
+ var output = await tagHelper.Render();
+ await VerifyTagHelper(output);
+ }
+
+ internal override FormCheckboxTagHelper TagHelperFactory(IHtmlGenerator htmlGenerator, ModelExpression modelExpression, ViewContext viewContext)
+ => new(htmlGenerator) { For = modelExpression, ViewContext = viewContext };
+}
\ No newline at end of file
diff --git a/src/AspNetCore.Utilities.Bootstrap5TagHelpers.Tests/Form/TestModel.cs b/src/AspNetCore.Utilities.Bootstrap5TagHelpers.Tests/Form/TestModel.cs
index 4f07c86..233ce2f 100644
--- a/src/AspNetCore.Utilities.Bootstrap5TagHelpers.Tests/Form/TestModel.cs
+++ b/src/AspNetCore.Utilities.Bootstrap5TagHelpers.Tests/Form/TestModel.cs
@@ -7,4 +7,6 @@ public class TestModel
[Required]
public int? RequiredIntField { get; set; }
+
+ public bool CheckboxField { get; set; }
}
diff --git a/src/AspNetCore.Utilities.Bootstrap5TagHelpers.Tests/VerifySnapshots/FormCheckboxTagHelperTests.Renders.verified.html b/src/AspNetCore.Utilities.Bootstrap5TagHelpers.Tests/VerifySnapshots/FormCheckboxTagHelperTests.Renders.verified.html
new file mode 100644
index 0000000..5584840
--- /dev/null
+++ b/src/AspNetCore.Utilities.Bootstrap5TagHelpers.Tests/VerifySnapshots/FormCheckboxTagHelperTests.Renders.verified.html
@@ -0,0 +1,7 @@
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/AspNetCore.Utilities.Bootstrap5TagHelpers.Tests/VerifySnapshots/FormCheckboxTagHelperTests.Renders_Inline.verified.html b/src/AspNetCore.Utilities.Bootstrap5TagHelpers.Tests/VerifySnapshots/FormCheckboxTagHelperTests.Renders_Inline.verified.html
new file mode 100644
index 0000000..87f5351
--- /dev/null
+++ b/src/AspNetCore.Utilities.Bootstrap5TagHelpers.Tests/VerifySnapshots/FormCheckboxTagHelperTests.Renders_Inline.verified.html
@@ -0,0 +1,7 @@
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/AspNetCore.Utilities.Bootstrap5TagHelpers.Tests/VerifySnapshots/FormCheckboxTagHelperTests.Renders_InlineSwitch.verified.html b/src/AspNetCore.Utilities.Bootstrap5TagHelpers.Tests/VerifySnapshots/FormCheckboxTagHelperTests.Renders_InlineSwitch.verified.html
new file mode 100644
index 0000000..3209756
--- /dev/null
+++ b/src/AspNetCore.Utilities.Bootstrap5TagHelpers.Tests/VerifySnapshots/FormCheckboxTagHelperTests.Renders_InlineSwitch.verified.html
@@ -0,0 +1,7 @@
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/AspNetCore.Utilities.Bootstrap5TagHelpers.Tests/VerifySnapshots/FormCheckboxTagHelperTests.Renders_Switch.verified.html b/src/AspNetCore.Utilities.Bootstrap5TagHelpers.Tests/VerifySnapshots/FormCheckboxTagHelperTests.Renders_Switch.verified.html
new file mode 100644
index 0000000..47044f3
--- /dev/null
+++ b/src/AspNetCore.Utilities.Bootstrap5TagHelpers.Tests/VerifySnapshots/FormCheckboxTagHelperTests.Renders_Switch.verified.html
@@ -0,0 +1,7 @@
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/AspNetCore.Utilities.Bootstrap5TagHelpers/Form/FormCheckboxTagHelper.cs b/src/AspNetCore.Utilities.Bootstrap5TagHelpers/Form/FormCheckboxTagHelper.cs
index 76e0063..f11646e 100644
--- a/src/AspNetCore.Utilities.Bootstrap5TagHelpers/Form/FormCheckboxTagHelper.cs
+++ b/src/AspNetCore.Utilities.Bootstrap5TagHelpers/Form/FormCheckboxTagHelper.cs
@@ -32,6 +32,11 @@ public class FormCheckboxTagHelper : InputTagHelper, IFormElementMixin
///
public bool IsSwitch { get; set; } = false;
+ ///
+ /// Controls if this should be rendered inline
+ ///
+ public bool IsInline { get; set; } = false;
+
///
/// Public constructor that will receive the incoming generator to leverage existing Microsoft Tag Helpers
@@ -70,6 +75,10 @@ public override void Process(TagHelperContext context, TagHelperOutput output)
groupClass += " form-switch";
output.Attributes.Add("role", "switch");
}
+ if (IsInline)
+ {
+ groupClass += " form-check-inline";
+ }
this.StartFormGroup(output, groupClass);
//Generate our label if not inline