From ee81b608f9514d77cb6ca69112dfef4c03cd10a5 Mon Sep 17 00:00:00 2001 From: Vladimir Enchev Date: Thu, 12 Sep 2024 16:06:23 +0300 Subject: [PATCH] AutoComplete property deleted. All cases will be supported trough custom attribute --- Radzen.Blazor.Tests/MaskTests.cs | 14 +++++++------- Radzen.Blazor.Tests/NumericTests.cs | 14 +++++++------- Radzen.Blazor.Tests/PasswordTests.cs | 12 ++++++------ Radzen.Blazor.Tests/TextBoxTests.cs | 14 +++++++------- Radzen.Blazor/FormComponent.cs | 18 ++---------------- Radzen.Blazor/RadzenNumeric.razor.cs | 7 ------- RadzenBlazorDemos/Pages/TextBoxConfig.razor | 2 +- 7 files changed, 30 insertions(+), 51 deletions(-) diff --git a/Radzen.Blazor.Tests/MaskTests.cs b/Radzen.Blazor.Tests/MaskTests.cs index 8782cb2b046..d114b9c75af 100644 --- a/Radzen.Blazor.Tests/MaskTests.cs +++ b/Radzen.Blazor.Tests/MaskTests.cs @@ -119,12 +119,12 @@ public void Mask_Renders_AutoCompleteParameter() var component = ctx.RenderComponent(); - component.SetParametersAndRender(parameters => parameters.Add(p => p.AutoComplete, false)); + component.SetParametersAndRender(parameters => parameters.AddUnmatched("AutoComplete", false)); Assert.Contains(@$"autocomplete=""off""", component.Markup); Assert.Contains(@$"aria-autocomplete=""none""", component.Markup); - component.SetParametersAndRender(parameters => parameters.Add(p => p.AutoComplete, true)); + component.SetParametersAndRender(parameters => parameters.AddUnmatched("AutoComplete", true)); Assert.Contains(@$"autocomplete=""on""", component.Markup); Assert.DoesNotContain(@$"aria-autocomplete", component.Markup); @@ -135,7 +135,7 @@ public void Mask_Renders_AutoCompleteParameter() Assert.DoesNotContain(@$"aria-autocomplete", component.Markup); component.Instance.DefaultAutoCompleteAttribute = "autocomplete-custom"; - component.SetParametersAndRender(parameters => parameters.Add(p => p.AutoComplete, false)); + component.SetParametersAndRender(parameters => parameters.AddUnmatched("AutoComplete", false)); Assert.Contains(@$"autocomplete=""autocomplete-custom""", component.Markup); Assert.Contains(@$"aria-autocomplete=""none""", component.Markup); @@ -148,22 +148,22 @@ public void Mask_Renders_TypedAutoCompleteParameter() var component = ctx.RenderComponent(); - component.SetParametersAndRender(parameters => parameters.Add(p => p.AutoComplete, false)); + component.SetParametersAndRender(parameters => parameters.AddUnmatched("AutoComplete", false)); component.SetParametersAndRender(parameters => parameters.Add(p => p.AutoCompleteType, AutoCompleteType.On)); Assert.Contains(@$"autocomplete=""off""", component.Markup); - component.SetParametersAndRender(parameters => parameters.Add(p => p.AutoComplete, true)); + component.SetParametersAndRender(parameters => parameters.AddUnmatched("AutoComplete", true)); component.SetParametersAndRender(parameters => parameters.Add(p => p.AutoCompleteType, AutoCompleteType.Off)); Assert.Contains(@$"autocomplete=""off""", component.Markup); - component.SetParametersAndRender(parameters => parameters.Add(p => p.AutoComplete, true)); + component.SetParametersAndRender(parameters => parameters.AddUnmatched("AutoComplete", true)); component.SetParametersAndRender(parameters => parameters.Add(p => p.AutoCompleteType, AutoCompleteType.AdditionalName)); Assert.Contains(@$"autocomplete=""{AutoCompleteType.AdditionalName.GetAutoCompleteValue()}""", component.Markup); - component.SetParametersAndRender(parameters => parameters.Add(p => p.AutoComplete, true)); + component.SetParametersAndRender(parameters => parameters.AddUnmatched("AutoComplete", true)); component.SetParametersAndRender(parameters => parameters.Add(p => p.AutoCompleteType, AutoCompleteType.Email)); Assert.Contains(@$"autocomplete=""{AutoCompleteType.Email.GetAutoCompleteValue()}""", component.Markup); diff --git a/Radzen.Blazor.Tests/NumericTests.cs b/Radzen.Blazor.Tests/NumericTests.cs index 1c93da4659f..ddc11a79b28 100644 --- a/Radzen.Blazor.Tests/NumericTests.cs +++ b/Radzen.Blazor.Tests/NumericTests.cs @@ -216,12 +216,12 @@ public void Numeric_Renders_AutoCompleteParameter() var component = ctx.RenderComponent>(); - component.SetParametersAndRender(parameters => parameters.Add(p => p.AutoComplete, false)); + component.SetParametersAndRender(parameters => parameters.AddUnmatched("AutoComplete", false)); Assert.Contains(@$"autocomplete=""off""", component.Markup); Assert.Contains(@$"aria-autocomplete=""none""", component.Markup); - component.SetParametersAndRender(parameters => parameters.Add(p => p.AutoComplete, true)); + component.SetParametersAndRender(parameters => parameters.AddUnmatched("AutoComplete", true)); Assert.Contains(@$"autocomplete=""on""", component.Markup); Assert.DoesNotContain(@$"aria-autocomplete", component.Markup); @@ -232,7 +232,7 @@ public void Numeric_Renders_AutoCompleteParameter() Assert.DoesNotContain(@$"aria-autocomplete", component.Markup); component.Instance.DefaultAutoCompleteAttribute = "autocomplete-custom"; - component.SetParametersAndRender(parameters => parameters.Add(p => p.AutoComplete, false)); + component.SetParametersAndRender(parameters => parameters.AddUnmatched("AutoComplete", false)); Assert.Contains(@$"autocomplete=""autocomplete-custom""", component.Markup); Assert.Contains(@$"aria-autocomplete=""none""", component.Markup); @@ -245,22 +245,22 @@ public void Numeric_Renders_TypedAutoCompleteParameter() var component = ctx.RenderComponent>(); - component.SetParametersAndRender(parameters => parameters.Add(p => p.AutoComplete, false)); + component.SetParametersAndRender(parameters => parameters.AddUnmatched("AutoComplete", false)); component.SetParametersAndRender(parameters => parameters.Add(p => p.AutoCompleteType, AutoCompleteType.On)); Assert.Contains(@$"autocomplete=""off""", component.Markup); - component.SetParametersAndRender(parameters => parameters.Add(p => p.AutoComplete, true)); + component.SetParametersAndRender(parameters => parameters.AddUnmatched("AutoComplete", true)); component.SetParametersAndRender(parameters => parameters.Add(p => p.AutoCompleteType, AutoCompleteType.Off)); Assert.Contains(@$"autocomplete=""off""", component.Markup); - component.SetParametersAndRender(parameters => parameters.Add(p => p.AutoComplete, true)); + component.SetParametersAndRender(parameters => parameters.AddUnmatched("AutoComplete", true)); component.SetParametersAndRender(parameters => parameters.Add(p => p.AutoCompleteType, AutoCompleteType.BdayMonth)); Assert.Contains(@$"autocomplete=""{AutoCompleteType.BdayMonth.GetAutoCompleteValue()}""", component.Markup); - component.SetParametersAndRender(parameters => parameters.Add(p => p.AutoComplete, true)); + component.SetParametersAndRender(parameters => parameters.AddUnmatched("AutoComplete", true)); component.SetParametersAndRender(parameters => parameters.Add(p => p.AutoCompleteType, AutoCompleteType.BdayYear)); Assert.Contains(@$"autocomplete=""{AutoCompleteType.BdayYear.GetAutoCompleteValue()}""", component.Markup); diff --git a/Radzen.Blazor.Tests/PasswordTests.cs b/Radzen.Blazor.Tests/PasswordTests.cs index a4a09ccb739..8f8858df6c6 100644 --- a/Radzen.Blazor.Tests/PasswordTests.cs +++ b/Radzen.Blazor.Tests/PasswordTests.cs @@ -119,11 +119,11 @@ public void Password_Renders_AutoCompleteParameter() var component = ctx.RenderComponent(); - component.SetParametersAndRender(parameters => parameters.Add(p => p.AutoComplete, false)); + component.SetParametersAndRender(parameters => parameters.AddUnmatched("AutoComplete", false)); Assert.Contains(@$"autocomplete=""new-password""", component.Markup); - component.SetParametersAndRender(parameters => parameters.Add(p => p.AutoComplete, true)); + component.SetParametersAndRender(parameters => parameters.AddUnmatched("AutoComplete", true)); Assert.Contains(@$"autocomplete=""on""", component.Markup); @@ -139,22 +139,22 @@ public void Password_Renders_TypedAutoCompleteParameter() var component = ctx.RenderComponent(); - component.SetParametersAndRender(parameters => parameters.Add(p => p.AutoComplete, false)); + component.SetParametersAndRender(parameters => parameters.AddUnmatched("AutoComplete", false)); component.SetParametersAndRender(parameters => parameters.Add(p => p.AutoCompleteType, AutoCompleteType.On)); Assert.Contains(@$"autocomplete=""new-password""", component.Markup); - component.SetParametersAndRender(parameters => parameters.Add(p => p.AutoComplete, true)); + component.SetParametersAndRender(parameters => parameters.AddUnmatched("AutoComplete", true)); component.SetParametersAndRender(parameters => parameters.Add(p => p.AutoCompleteType, AutoCompleteType.Off)); Assert.Contains(@$"autocomplete=""off""", component.Markup); - component.SetParametersAndRender(parameters => parameters.Add(p => p.AutoComplete, true)); + component.SetParametersAndRender(parameters => parameters.AddUnmatched("AutoComplete", true)); component.SetParametersAndRender(parameters => parameters.Add(p => p.AutoCompleteType, AutoCompleteType.CurrentPassword)); Assert.Contains(@$"autocomplete=""{AutoCompleteType.CurrentPassword.GetAutoCompleteValue()}""", component.Markup); - component.SetParametersAndRender(parameters => parameters.Add(p => p.AutoComplete, true)); + component.SetParametersAndRender(parameters => parameters.AddUnmatched("AutoComplete", true)); component.SetParametersAndRender(parameters => parameters.Add(p => p.AutoCompleteType, AutoCompleteType.NewPassword)); Assert.Contains(@$"autocomplete=""{AutoCompleteType.NewPassword.GetAutoCompleteValue()}""", component.Markup); diff --git a/Radzen.Blazor.Tests/TextBoxTests.cs b/Radzen.Blazor.Tests/TextBoxTests.cs index 71ee36649a9..4f7c3384b1e 100644 --- a/Radzen.Blazor.Tests/TextBoxTests.cs +++ b/Radzen.Blazor.Tests/TextBoxTests.cs @@ -119,12 +119,12 @@ public void TextBox_Renders_AutoCompleteParameter() var component = ctx.RenderComponent(); - component.SetParametersAndRender(parameters => parameters.Add(p => p.AutoComplete, false)); + component.SetParametersAndRender(parameters => parameters.AddUnmatched("AutoComplete", false)); Assert.Contains(@$"autocomplete=""off""", component.Markup); Assert.Contains(@$"aria-autocomplete=""none""", component.Markup); - component.SetParametersAndRender(parameters => parameters.Add(p => p.AutoComplete, true)); + component.SetParametersAndRender(parameters => parameters.AddUnmatched("AutoComplete", true)); Assert.Contains(@$"autocomplete=""on""", component.Markup); Assert.DoesNotContain(@$"aria-autocomplete", component.Markup); @@ -135,7 +135,7 @@ public void TextBox_Renders_AutoCompleteParameter() Assert.DoesNotContain(@$"aria-autocomplete", component.Markup); component.Instance.DefaultAutoCompleteAttribute = "autocomplete-custom"; - component.SetParametersAndRender(parameters => parameters.Add(p => p.AutoComplete, false)); + component.SetParametersAndRender(parameters => parameters.AddUnmatched("AutoComplete", false)); Assert.Contains(@$"autocomplete=""autocomplete-custom""", component.Markup); Assert.Contains(@$"aria-autocomplete=""none""", component.Markup); @@ -148,22 +148,22 @@ public void TextBox_Renders_TypedAutoCompleteParameter() var component = ctx.RenderComponent(); - component.SetParametersAndRender(parameters => parameters.Add(p => p.AutoComplete, false)); + component.SetParametersAndRender(parameters => parameters.AddUnmatched("AutoComplete", false)); component.SetParametersAndRender(parameters => parameters.Add(p => p.AutoCompleteType, AutoCompleteType.On)); Assert.Contains(@$"autocomplete=""off""", component.Markup); - component.SetParametersAndRender(parameters => parameters.Add(p => p.AutoComplete, true)); + component.SetParametersAndRender(parameters => parameters.AddUnmatched("AutoComplete", true)); component.SetParametersAndRender(parameters => parameters.Add(p => p.AutoCompleteType, AutoCompleteType.Off)); Assert.Contains(@$"autocomplete=""off""", component.Markup); - component.SetParametersAndRender(parameters => parameters.Add(p => p.AutoComplete, true)); + component.SetParametersAndRender(parameters => parameters.AddUnmatched("AutoComplete", true)); component.SetParametersAndRender(parameters => parameters.Add(p => p.AutoCompleteType, AutoCompleteType.AdditionalName)); Assert.Contains(@$"autocomplete=""{AutoCompleteType.AdditionalName.GetAutoCompleteValue()}""", component.Markup); - component.SetParametersAndRender(parameters => parameters.Add(p => p.AutoComplete, true)); + component.SetParametersAndRender(parameters => parameters.AddUnmatched("AutoComplete", true)); component.SetParametersAndRender(parameters => parameters.Add(p => p.AutoCompleteType, AutoCompleteType.FamilyName)); Assert.Contains(@$"autocomplete=""{AutoCompleteType.FamilyName.GetAutoCompleteValue()}""", component.Markup); diff --git a/Radzen.Blazor/FormComponent.cs b/Radzen.Blazor/FormComponent.cs index 8b870d7e507..0eb76e96ad5 100644 --- a/Radzen.Blazor/FormComponent.cs +++ b/Radzen.Blazor/FormComponent.cs @@ -16,13 +16,6 @@ namespace Radzen /// public class FormComponentWithAutoComplete : FormComponent { - /// - /// Gets or sets a value indicating the browser built-in autocomplete is enabled. - /// - /// true if input automatic complete is enabled; otherwise, false. - [Parameter] - public virtual object AutoComplete { get; set; } = true; - /// /// Gets or sets a value indicating the type of built-in autocomplete /// the browser should use. @@ -44,8 +37,8 @@ public class FormComponentWithAutoComplete : FormComponent /// AutoCompleteType. public virtual string AutoCompleteAttribute { - get => object.Equals(AutoComplete, false) ? DefaultAutoCompleteAttribute : - autoComplete as string ?? AutoCompleteType.GetAutoCompleteValue(); + get => Attributes != null && Attributes.ContainsKey("AutoComplete") && $"{Attributes["AutoComplete"]}".ToLower() == "false" ? DefaultAutoCompleteAttribute : + Attributes != null && Attributes.ContainsKey("AutoComplete") ? Attributes["AutoComplete"] as string ?? AutoCompleteType.GetAutoCompleteValue() : AutoCompleteType.GetAutoCompleteValue(); } /// @@ -53,18 +46,11 @@ public virtual string AutoCompleteAttribute /// public virtual string DefaultAutoCompleteAttribute { get; set; } = "off"; - object autoComplete; object ariaAutoComplete; /// public override async Task SetParametersAsync(ParameterView parameters) { - parameters = parameters.TryGetValue(nameof(AutoComplete).ToLower(), out autoComplete) ? - ParameterView.FromDictionary(parameters - .ToDictionary().Where(i => i.Key != nameof(AutoComplete).ToLower()).ToDictionary(i => i.Key, i => i.Value) - .ToDictionary(i => i.Key, i => i.Value)) - : parameters; - parameters = parameters.TryGetValue("aria-autocomplete", out ariaAutoComplete) ? ParameterView.FromDictionary(parameters .ToDictionary().Where(i => i.Key != "aria-autocomplete").ToDictionary(i => i.Key, i => i.Value) diff --git a/Radzen.Blazor/RadzenNumeric.razor.cs b/Radzen.Blazor/RadzenNumeric.razor.cs index c0af8aad71c..a13eca237c0 100644 --- a/Radzen.Blazor/RadzenNumeric.razor.cs +++ b/Radzen.Blazor/RadzenNumeric.razor.cs @@ -303,13 +303,6 @@ private bool IsInteger() [Parameter] public bool ReadOnly { get; set; } - /// - /// Gets or sets a value indicating whether input automatic complete is enabled. - /// - /// true if input automatic complete is enabled; otherwise, false. - [Parameter] - public override object AutoComplete { get; set; } = false; - /// /// Gets or sets a value indicating whether up down buttons are shown. /// diff --git a/RadzenBlazorDemos/Pages/TextBoxConfig.razor b/RadzenBlazorDemos/Pages/TextBoxConfig.razor index 8f5b2eded2c..edde7890666 100644 --- a/RadzenBlazorDemos/Pages/TextBoxConfig.razor +++ b/RadzenBlazorDemos/Pages/TextBoxConfig.razor @@ -44,7 +44,7 @@ TextBox with predefined AutoCompleteType - +