diff --git a/src/BootstrapBlazor.Server/Components/Components/AttributeTable.razor b/src/BootstrapBlazor.Server/Components/Components/AttributeTable.razor index ad87245079b..103ca7649a6 100644 --- a/src/BootstrapBlazor.Server/Components/Components/AttributeTable.razor +++ b/src/BootstrapBlazor.Server/Components/Components/AttributeTable.razor @@ -7,15 +7,15 @@ }

- +
- + - +
diff --git a/src/BootstrapBlazor.Server/Components/Components/AttributeTable.razor.cs b/src/BootstrapBlazor.Server/Components/Components/AttributeTable.razor.cs index 3f4b848654e..e2d6dabd809 100644 --- a/src/BootstrapBlazor.Server/Components/Components/AttributeTable.razor.cs +++ b/src/BootstrapBlazor.Server/Components/Components/AttributeTable.razor.cs @@ -21,12 +21,6 @@ public sealed partial class AttributeTable [NotNull] public string? Title { get; set; } - /// - /// 获得/设置 表格数据 - /// - [Parameter] - public IEnumerable Items { get; set; } = []; - /// /// 获得/设置 表格关联组件类型 /// @@ -39,18 +33,33 @@ public sealed partial class AttributeTable [Parameter] public bool ShowFooter { get; set; } + private List _items = []; + /// /// /// - protected override void OnInitialized() + protected override void OnParametersSet() { - base.OnInitialized(); - - Title ??= Localizer[nameof(Title)]; + base.OnParametersSet(); if (Type != null) { - Items = ComponentAttributeCacheService.GetAttributes(Type); + _items = ComponentAttributeCacheService.GetAttributes(Type); + + Title ??= FormatTypeName(Type); } } + + private static string FormatTypeName(Type type) + { + if (!type.IsGenericType) + { + return type.Name; + } + + var index = type.Name.IndexOf('`'); + var typeName = type.Name.Substring(0, index); + var genericArgs = string.Join(", ", type.GetGenericArguments().Select(i => i.Name)); + return $"{typeName}<{genericArgs}>"; + } } diff --git a/src/BootstrapBlazor.Server/Components/Samples/Alerts.razor.cs b/src/BootstrapBlazor.Server/Components/Samples/Alerts.razor.cs index 99d0edf2b9b..e17f24023f8 100644 --- a/src/BootstrapBlazor.Server/Components/Samples/Alerts.razor.cs +++ b/src/BootstrapBlazor.Server/Components/Samples/Alerts.razor.cs @@ -116,76 +116,4 @@ private static EventItem[] GetEvents() => Type = "EventCallback" } ]; - - /// - /// 获得属性方法 - /// - /// - private static AttributeItem[] GetAttributes() => - [ - new() - { - Name = "ChildContent", - Description = "Content", - Type = "RenderFragment", - ValueList = " — ", - DefaultValue = " — " - }, - new() - { - Name = "Class", - Description = "Style", - Type = "string", - ValueList = " — ", - DefaultValue = " — " - }, - new() - { - Name = "Color", - Description = "Color", - Type = "Color", - ValueList = "Primary / Secondary / Success / Danger / Warning / Info / Dark", - DefaultValue = "Primary" - }, - new() - { - Name = "Icon", - Description = "Icon", - Type = "string", - ValueList = " — ", - DefaultValue = " — " - }, - new() - { - Name = "ShowDismiss", - Description = "Close Button", - Type = "bool", - ValueList = " — ", - DefaultValue = "false" - }, - new() - { - Name = "ShowBar", - Description = "Show the left Bar", - Type = "bool", - ValueList = "true|false", - DefaultValue = "false" - }, - new() - { - Name = "ShowBorder", - Description = "Show border", - Type = "bool", - ValueList = "true|false", - DefaultValue = "false" - }, - new() - { - Name = "ShowShadow", - Description = "Show Shadow", - Type = "bool", - ValueList = "true|false", - DefaultValue = "false" - } - ]; } diff --git a/src/BootstrapBlazor.Server/Components/Samples/AnchorLinks.razor.cs b/src/BootstrapBlazor.Server/Components/Samples/AnchorLinks.razor.cs index 4ceef5f8b2f..4b888b74d3f 100644 --- a/src/BootstrapBlazor.Server/Components/Samples/AnchorLinks.razor.cs +++ b/src/BootstrapBlazor.Server/Components/Samples/AnchorLinks.razor.cs @@ -13,40 +13,4 @@ public partial class AnchorLinks [Inject] [NotNull] private IStringLocalizer? Localizer { get; set; } - - private AttributeItem[] GetAttributes() => - [ - new() - { - Name = nameof(AnchorLink.Id), - Description = Localizer[$"Attr{nameof(AnchorLink.Id)}"], - Type = "string", - ValueList = " — ", - DefaultValue = " — " - }, - new() - { - Name = nameof(AnchorLink.Icon), - Description = Localizer[$"Attr{nameof(AnchorLink.Icon)}"], - Type = "string", - ValueList = " — ", - DefaultValue = "fa-solid fa-link" - }, - new() - { - Name = nameof(AnchorLink.Text), - Description = Localizer[$"Attr{nameof(AnchorLink.Text)}"], - Type = "string", - ValueList = " — ", - DefaultValue = " — " - }, - new() - { - Name = nameof(AnchorLink.TooltipText), - Description = Localizer[$"Attr{nameof(AnchorLink.TooltipText)}"], - Type = "string", - ValueList = " — ", - DefaultValue = " — " - } - ]; } diff --git a/src/BootstrapBlazor.Server/Components/Samples/Anchors.razor.cs b/src/BootstrapBlazor.Server/Components/Samples/Anchors.razor.cs index 822a2c8ca4b..0f46fb8e014 100644 --- a/src/BootstrapBlazor.Server/Components/Samples/Anchors.razor.cs +++ b/src/BootstrapBlazor.Server/Components/Samples/Anchors.razor.cs @@ -13,52 +13,4 @@ public partial class Anchors [Inject] [NotNull] private IStringLocalizer? Localizer { get; set; } - - /// - /// 获得属性方法 - /// - /// - private AttributeItem[] GetAttributes() => - [ - new() - { - Name = "Target", - Description = Localizer["DescTarget"], - Type = "string", - ValueList = " — ", - DefaultValue = " — " - }, - new() - { - Name = "Container", - Description = Localizer["DescContainer"], - Type = "string", - ValueList = " — ", - DefaultValue = " — " - }, - new() - { - Name = "IsAnimation", - Description = Localizer["DescIsAnimation"], - Type = "boolean", - ValueList = "true|false", - DefaultValue = "true" - }, - new() - { - Name = "Offset", - Description = Localizer["DescOffset"], - Type = "int", - ValueList = " — ", - DefaultValue = "0" - }, - new() - { - Name = "ChildContent", - Description = Localizer["DescChildContent"], - Type = "RenderFragment", - ValueList = " — ", - DefaultValue = " — " - } - ]; } diff --git a/src/BootstrapBlazor.Server/Components/Samples/AutoCompletes.razor.cs b/src/BootstrapBlazor.Server/Components/Samples/AutoCompletes.razor.cs index 89d8de308b0..7387b60f515 100644 --- a/src/BootstrapBlazor.Server/Components/Samples/AutoCompletes.razor.cs +++ b/src/BootstrapBlazor.Server/Components/Samples/AutoCompletes.razor.cs @@ -48,132 +48,4 @@ private Task GroupOnSelectedItemChanged(string val) GroupLogger.Log($"Value: {val}"); return Task.CompletedTask; } - - /// - /// 获得属性方法 - /// - /// - private AttributeItem[] GetAttributes() => - [ - new() - { - Name = "ShowLabel", - Description = Localizer["Att1"], - Type = "bool", - ValueList = "true|false", - DefaultValue = "true" - }, - new() - { - Name = "ChildContent", - Description = Localizer["Att2"], - Type = "RenderFragment", - ValueList = " — ", - DefaultValue = " — " - }, - new() - { - Name = "ItemTemplate", - Description = Localizer["AttItemTemplate"], - Type = "RenderFragment", - ValueList = " — ", - DefaultValue = " — " - }, - new() - { - Name = "Items", - Description = Localizer["Att3"], - Type = "IEnumerable", - ValueList = " — ", - DefaultValue = " — " - }, - new() - { - Name = "NoDataTip", - Description = Localizer["Att4"], - Type = "string", - ValueList = " — ", - DefaultValue = Localizer["Att4DefaultValue"]! - }, - new() - { - Name = "DisplayCount", - Description = Localizer["Att5"], - Type = "int?", - ValueList = " — ", - DefaultValue = " — " - }, - new() - { - Name = "ValueChanged", - Description = Localizer["Att6"], - Type = "Action", - ValueList = " — ", - DefaultValue = " — " - }, - new() - { - Name = "IsLikeMatch", - Description = Localizer["Att7"], - Type = "bool", - ValueList = "true|false", - DefaultValue = "false" - }, - new() - { - Name = "IgnoreCase", - Description = Localizer["Att8"], - Type = "bool", - ValueList = "true|false", - DefaultValue = "true" - }, - new() - { - Name = "OnCustomFilter", - Description = Localizer["Att9"], - Type = "Func>>", - ValueList = " — ", - DefaultValue = " — " - }, - new() - { - Name = "Debounce", - Description = Localizer["Debounce"], - Type = "int", - ValueList = " — ", - DefaultValue = "0" - }, - new() - { - Name = nameof(AutoComplete.SkipEnter), - Description = Localizer[nameof(AutoComplete.SkipEnter)], - Type = "bool", - ValueList = "true/false", - DefaultValue = "false" - }, - new() - { - Name = nameof(AutoComplete.SkipEsc), - Description = Localizer[nameof(AutoComplete.SkipEsc)], - Type = "bool", - ValueList = "true/false", - DefaultValue = "false" - }, - new() - { - Name = nameof(AutoComplete.OnValueChanged), - Description = Localizer[nameof(AutoComplete.OnValueChanged)], - Type = "Func", - ValueList = " — ", - DefaultValue = " — " - }, - new() - { - Name = nameof(AutoComplete.OnSelectedItemChanged), - Description = Localizer[nameof(AutoComplete.OnSelectedItemChanged)], - Type = "Func", - ValueList = " — ", - DefaultValue = " — " - } - ]; } diff --git a/src/BootstrapBlazor.Server/Components/Samples/AutoFills.razor.cs b/src/BootstrapBlazor.Server/Components/Samples/AutoFills.razor.cs index e4f6c7902ca..ef01732b3ce 100644 --- a/src/BootstrapBlazor.Server/Components/Samples/AutoFills.razor.cs +++ b/src/BootstrapBlazor.Server/Components/Samples/AutoFills.razor.cs @@ -95,132 +95,4 @@ private async Task> OnQueryAsync(VirtualizeQueryOption option) TotalCount = items.Count }; } - - /// - /// Get property method - /// - /// - private AttributeItem[] GetAttributes() => - [ - new() - { - Name = "DisplayCount", - Description = Localizer["Att1"], - Type = "int", - ValueList = " — ", - DefaultValue = " — " - }, - new() - { - Name = "NoDataTip", - Description = Localizer["Att2"], - Type = "string", - ValueList = " — ", - DefaultValue = Localizer["Def2"] - }, - new() - { - Name = "IgnoreCase", - Description = Localizer["Att3"], - Type = "bool", - ValueList = "true/false", - DefaultValue = "true" - }, - new() - { - Name = "IsLikeMatch", - Description = Localizer["Att4"], - Type = "bool", - ValueList = "true/false", - DefaultValue = "false" - }, - new() - { - Name = "Items", - Description = Localizer["Att5"], - Type = "IEnumerable", - ValueList = " — ", - DefaultValue = " — " - }, - new() - { - Name = "Debounce", - Description = Localizer["Att6"], - Type = "int", - ValueList = " — ", - DefaultValue = "0" - }, - new() - { - Name = "OnCustomFilter", - Description = Localizer["Att7"], - Type = "Func>>", - ValueList = " — ", - DefaultValue = " — " - }, - new() - { - Name = "OnGetDisplayText", - Description = Localizer["Att8"], - Type = "Func", - ValueList = " — ", - DefaultValue = " — " - }, - new() - { - Name = "OnSelectedItemChanged", - Description = Localizer["Att9"], - Type = "Func", - ValueList = " — ", - DefaultValue = " — " - }, - //new() - //{ - // Name = nameof(AutoFill.ShowDropdownListOnFocus), - // Description = Localizer["Att10"], - // Type = "bool", - // ValueList = "true/false", - // DefaultValue = "true" - //}, - new() - { - Name = "Template", - Description = Localizer["Att11"], - Type = "RenderFragment", - ValueList = " — ", - DefaultValue = " — " - }, - new() - { - Name = nameof(AutoFill.SkipEnter), - Description = Localizer["Att12"], - Type = "bool", - ValueList = "true/false", - DefaultValue = "false" - }, - new() - { - Name = nameof(AutoFill.SkipEsc), - Description = Localizer["Att13"], - Type = "bool", - ValueList = "true/false", - DefaultValue = "false" - }, - new() - { - Name = nameof(AutoFill.IsVirtualize), - Description = Localizer["AttrIsVirtualize"], - Type = "bool", - ValueList = "true/false", - DefaultValue = "false" - }, - new() - { - Name=nameof(AutoFill.IsAutoClearWhenInvalid), - Description=Localizer["AttIsAutoClearWhenInvalid"], - Type="bool", - ValueList="true/false", - DefaultValue="false" - } - ]; } diff --git a/src/BootstrapBlazor.Server/Components/Samples/AutoRedirects.razor.cs b/src/BootstrapBlazor.Server/Components/Samples/AutoRedirects.razor.cs index 817b89f4c19..484598cde4f 100644 --- a/src/BootstrapBlazor.Server/Components/Samples/AutoRedirects.razor.cs +++ b/src/BootstrapBlazor.Server/Components/Samples/AutoRedirects.razor.cs @@ -18,44 +18,4 @@ private Task OnBeforeRedirectAsync() Logger.Log("Ready to redirect"); return Task.FromResult(true); } - - /// - /// Get property method - /// - /// - private AttributeItem[] GetAttributes() => - [ - new() - { - Name = nameof(AutoRedirect.Interval), - Description = "Time interval", - Type = "int", - ValueList = " — ", - DefaultValue = "60000" - }, - new() - { - Name = nameof(AutoRedirect.RedirectUrl), - Description = "Redirect address", - Type = "string", - ValueList = " — ", - DefaultValue = " — " - }, - new() - { - Name = nameof(AutoRedirect.IsForceLoad), - Description = "Whether to force redirection", - Type = "string", - ValueList = " — ", - DefaultValue = " — " - }, - new() - { - Name = nameof(AutoRedirect.OnBeforeRedirectAsync), - Description = "Callback method before address jump", - Type = "Func>", - ValueList = " — ", - DefaultValue = " — " - } - ]; } diff --git a/src/BootstrapBlazor.Server/Components/Samples/Avatars.razor.cs b/src/BootstrapBlazor.Server/Components/Samples/Avatars.razor.cs index 233d5e49782..854ec064996 100644 --- a/src/BootstrapBlazor.Server/Components/Samples/Avatars.razor.cs +++ b/src/BootstrapBlazor.Server/Components/Samples/Avatars.razor.cs @@ -16,84 +16,4 @@ private async Task GetUrlAsync() await Task.Delay(500); return $"{WebsiteOption.Value.AssetRootPath}images/Argo-C.png"; } - - /// - /// 获得属性方法 - /// - /// - private AttributeItem[] GetAttributes() => - [ - new() - { - Name = "Size", - Description = Localizer["Size"], - Type = "Size", - ValueList = "ExtraSmall|Small|Medium|Large|ExtraLarge|ExtraExtraLarge", - DefaultValue = "None" - }, - new() - { - Name = "IsBorder", - Description = Localizer["IsBorder"], - Type = "bool", - ValueList = "true|false", - DefaultValue = "false" - }, - new() - { - Name = "IsCircle", - Description = Localizer["IsCircle"], - Type = "bool", - ValueList = "true|false", - DefaultValue = "false" - }, - new() - { - Name = "IsIcon", - Description = Localizer["IsIcon"], - Type = "bool", - ValueList = "true|false", - DefaultValue = "false" - }, - new() - { - Name = "IsText", - Description = Localizer["IsText"], - Type = "bool", - ValueList = "true|false", - DefaultValue = "false" - }, - new() - { - Name = "Icon", - Description = Localizer["Icon"], - Type = "string", - ValueList = " — ", - DefaultValue = "fa-solid fa-user" - }, - new() - { - Name = "Text", - Description = Localizer["Text"], - Type = "string", - ValueList = " — ", - DefaultValue = " — " - }, - new() - { - Name = "Url", - Description = Localizer["Url"], - Type = "string", - ValueList = " — ", - DefaultValue = " — " - }, - new() - { - Name = "GetUrlAsync", - Description = Localizer["GetUrlAsync"], - Type = "Func>", - ValueList = " — ", - DefaultValue = " — " - } - ]; } diff --git a/src/BootstrapBlazor.Server/Components/Samples/Badges.razor.cs b/src/BootstrapBlazor.Server/Components/Samples/Badges.razor.cs index 2c5109c38d8..58744f45840 100644 --- a/src/BootstrapBlazor.Server/Components/Samples/Badges.razor.cs +++ b/src/BootstrapBlazor.Server/Components/Samples/Badges.razor.cs @@ -10,43 +10,4 @@ namespace BootstrapBlazor.Server.Components.Samples; /// public sealed partial class Badges { - /// - /// 获得属性方法 - /// - /// - private AttributeItem[] GetAttributes() => - [ - new() - { - Name = "ChildContent", - Description = Localizer["ChildContent"], - Type = "RenderFragment", - ValueList = " — ", - DefaultValue = " — " - }, - new() - { - Name = "Class", - Description = Localizer["Class"], - Type = "string", - ValueList = " — ", - DefaultValue = " — " - }, - new() - { - Name = "Color", - Description = Localizer["Color"], - Type = "Color", - ValueList = "Primary / Secondary / Success / Danger / Warning / Info / Dark", - DefaultValue = "Primary" - }, - new() - { - Name = "IsPill", - Description = Localizer["IsPill"], - Type = "boolean", - ValueList = " — ", - DefaultValue = "false" - } - ]; } diff --git a/src/BootstrapBlazor.Server/Components/Samples/BarcodeGenerators.razor b/src/BootstrapBlazor.Server/Components/Samples/BarcodeGenerators.razor index 0e9681c78b1..3781a11f008 100644 --- a/src/BootstrapBlazor.Server/Components/Samples/BarcodeGenerators.razor +++ b/src/BootstrapBlazor.Server/Components/Samples/BarcodeGenerators.razor @@ -16,4 +16,4 @@ - + diff --git a/src/BootstrapBlazor.Server/Components/Samples/BarcodeGenerators.razor.cs b/src/BootstrapBlazor.Server/Components/Samples/BarcodeGenerators.razor.cs index a6e1a0bbf84..0688f803315 100644 --- a/src/BootstrapBlazor.Server/Components/Samples/BarcodeGenerators.razor.cs +++ b/src/BootstrapBlazor.Server/Components/Samples/BarcodeGenerators.razor.cs @@ -1,4 +1,4 @@ -// Licensed to the .NET Foundation under one or more agreements. +// Licensed to the .NET Foundation under one or more agreements. // The .NET Foundation licenses this file to you under the Apache 2.0 License // See the LICENSE file in the project root for more information. // Maintainer: Argo Zhang(argo@live.ca) Website: https://www.blazor.zone @@ -22,196 +22,4 @@ private Task OnCompletedAsync(string? val) StateHasChanged(); return Task.CompletedTask; } - - /// - /// GetAttributes - /// - /// - protected AttributeItem[] GetAttributes() => - [ - new() - { - Name = nameof(BarcodeGenerator.Value), - Description = Localizer[nameof(BarcodeGenerator.Value)], - Type = "string", - ValueList = " — ", - DefaultValue = " — " - }, - new() - { - Name = nameof(BarcodeGenerator.Options), - Description = Localizer[nameof(BarcodeGenerator.Options)], - Type = nameof(BarcodeGeneratorOption), - ValueList = " — ", - DefaultValue = " — " - }, - new() - { - Name = nameof(BarcodeGenerator.OnCompletedAsync), - Description = Localizer[nameof(BarcodeGenerator.OnCompletedAsync)], - Type = "Func", - ValueList = " — ", - DefaultValue = " — " - } - ]; - - /// - /// GetOptionsAttributes - /// - /// - protected AttributeItem[] GetOptionsAttributes() => - [ - new() - { - Name = nameof(BarcodeGeneratorOption.Format), - Description = Localizer[nameof(BarcodeGeneratorOption.Format)], - Type = nameof(EnumBarcodeFormat), - ValueList = " — ", - DefaultValue = "CODE128" - }, - new() - { - Name = nameof(BarcodeGeneratorOption.Width), - Description = Localizer[nameof(BarcodeGeneratorOption.Width)], - Type = "int", - ValueList = " — ", - DefaultValue = "2" - }, - new() - { - Name = nameof(BarcodeGeneratorOption.Height), - Description = Localizer[nameof(BarcodeGeneratorOption.Height)], - Type = "int", - ValueList = " — ", - DefaultValue = "100" - }, - new() - { - Name = nameof(BarcodeGeneratorOption.DisplayValue), - Description = Localizer[nameof(BarcodeGeneratorOption.DisplayValue)], - Type = "bool", - ValueList = " — ", - DefaultValue = "true" - }, - new() - { - Name = nameof(BarcodeGeneratorOption.Text), - Description = Localizer[nameof(BarcodeGeneratorOption.Text)], - Type = "string", - ValueList = " - ", - DefaultValue = " - " - }, - new() - { - Name = nameof(BarcodeGeneratorOption.FontOptions), - Description = Localizer[nameof(BarcodeGeneratorOption.FontOptions)], - Type = nameof(EnumBarcodeTextFontOption), - ValueList = " — ", - DefaultValue = " — " - }, - new() - { - Name = nameof(BarcodeGeneratorOption.Font), - Description = Localizer[nameof(BarcodeGeneratorOption.Font)], - Type = nameof(EnumBarcodeTextFont), - ValueList = " — ", - DefaultValue = " — " - }, - new() - { - Name = nameof(BarcodeGeneratorOption.TextAlign), - Description = Localizer[nameof(BarcodeGeneratorOption.TextAlign)], - Type = nameof(EnumBarcodeTextAlign), - ValueList = " — ", - DefaultValue = " — " - }, - new() - { - Name = nameof(BarcodeGeneratorOption.TextPosition), - Description = Localizer[nameof(BarcodeGeneratorOption.TextPosition)], - Type = nameof(EnumBarcodeTextPosition), - ValueList = " — ", - DefaultValue = " — " - }, - new() - { - Name = nameof(BarcodeGeneratorOption.TextMargin), - Description = Localizer[nameof(BarcodeGeneratorOption.TextMargin)], - Type = "int", - ValueList = " — ", - DefaultValue = "2" - }, - new() - { - Name = nameof(BarcodeGeneratorOption.FontSize), - Description = Localizer[nameof(BarcodeGeneratorOption.FontSize)], - Type = "int", - ValueList = " — ", - DefaultValue = "20" - }, - new() - { - Name = nameof(BarcodeGeneratorOption.Background), - Description = Localizer[nameof(BarcodeGeneratorOption.TextPosition)], - Type = "string", - ValueList = " — ", - DefaultValue = "#FFFFFF" - }, - new() - { - Name = nameof(BarcodeGeneratorOption.LineColor), - Description = Localizer[nameof(BarcodeGeneratorOption.LineColor)], - Type = "string", - ValueList = " — ", - DefaultValue = "#000000" - }, - new() - { - Name = nameof(BarcodeGeneratorOption.Margin), - Description = Localizer[nameof(BarcodeGeneratorOption.Margin)], - Type = "int", - ValueList = " — ", - DefaultValue = "10" - }, - new() - { - Name = nameof(BarcodeGeneratorOption.MarginTop), - Description = Localizer[nameof(BarcodeGeneratorOption.MarginTop)], - Type = "int", - ValueList = " — ", - DefaultValue = " — " - }, - new() - { - Name = nameof(BarcodeGeneratorOption.MarginBottom), - Description = Localizer[nameof(BarcodeGeneratorOption.MarginBottom)], - Type = "int", - ValueList = " — ", - DefaultValue = " — " - }, - new() - { - Name = nameof(BarcodeGeneratorOption.MarginLeft), - Description = Localizer[nameof(BarcodeGeneratorOption.MarginLeft)], - Type = "int", - ValueList = " — ", - DefaultValue = " — " - }, - new() - { - Name = nameof(BarcodeGeneratorOption.MarginRight), - Description = Localizer[nameof(BarcodeGeneratorOption.MarginRight)], - Type = "int", - ValueList = " — ", - DefaultValue = " — " - }, - new() - { - Name = nameof(BarcodeGeneratorOption.Flat), - Description = Localizer[nameof(BarcodeGeneratorOption.Flat)], - Type = "bool", - ValueList = "true|false", - DefaultValue = "false" - } - ]; } diff --git a/src/BootstrapBlazor.Server/Components/Samples/BarcodeReaders.razor.cs b/src/BootstrapBlazor.Server/Components/Samples/BarcodeReaders.razor.cs index 8749ec93e5b..31c072a6df8 100644 --- a/src/BootstrapBlazor.Server/Components/Samples/BarcodeReaders.razor.cs +++ b/src/BootstrapBlazor.Server/Components/Samples/BarcodeReaders.razor.cs @@ -57,132 +57,4 @@ private Task OnImageError(string err) ImageLogger.Log($"{Localizer["ErrorLog"]} {err}"); return Task.CompletedTask; } - - /// - /// 获得属性 - /// - /// - private AttributeItem[] GetAttributes() => - [ - new() - { - Name = "ButtonScanText", - Description = Localizer["ButtonScanText"], - Type = "string", - ValueList = " — ", - DefaultValue = Localizer["ButtonScanTextDefaultValue"] - }, - new() - { - Name = "ButtonStopText", - Description = Localizer["ButtonStopText"], - Type = "string", - ValueList = " — ", - DefaultValue = Localizer["ButtonStopTextDefaultValue"] - }, - new() - { - Name = "AutoStopText", - Description = Localizer["AutoStopText"], - Type = "string", - ValueList = " — ", - DefaultValue = Localizer["AutoStopTextDefaultValue"] - }, - new() - { - Name = "DeviceLabel", - Description = Localizer["DeviceLabel"], - Type = "string", - ValueList = " — ", - DefaultValue = Localizer["DeviceLabelDefaultValue"] - }, - new() - { - Name = "InitDevicesString", - Description = Localizer["InitDevicesString"], - Type = "string", - ValueList = " — ", - DefaultValue = Localizer["InitDevicesStringDefaultValue"] - }, - new() - { - Name = "NotFoundDevicesString", - Description = Localizer["NotFoundDevicesString"], - Type = "string", - ValueList = " — ", - DefaultValue = Localizer["NotFoundDevicesStringDefaultValue"] - }, - new() - { - Name = "AutoStart", - Description = Localizer["AutoStart"], - Type = "boolean", - ValueList = "true|false", - DefaultValue = "false" - }, - new() - { - Name = "AutoStop", - Description = Localizer["AutoStart"], - Type = "boolean", - ValueList = "true|false", - DefaultValue = "false" - }, - new() - { - Name = "ScanType", - Description = "", - Type = "ScanType", - ValueList = "Camera|Image", - DefaultValue = "Camera" - }, - new() - { - Name = "OnInit", - Description = Localizer["OnInit"], - Type = "Func, Task>", - ValueList = " — ", - DefaultValue = " — " - }, - new() - { - Name = "OnResult", - Description = Localizer["OnResult"], - Type = "Func", - ValueList = " — ", - DefaultValue = " — " - }, - new() - { - Name = "OnStart", - Description = Localizer["OnStart"], - Type = "Func", - ValueList = " — ", - DefaultValue = " — " - }, - new() - { - Name = "OnClose", - Description = Localizer["OnClose"], - Type = "Func", - ValueList = " — ", - DefaultValue = " — " - }, - new() - { - Name = "OnError", - Description = Localizer["OnError"], - Type = "Func", - ValueList = " — ", - DefaultValue = " — " - }, - new() - { - Name = "OnDeviceChanged", - Description = Localizer["OnDeviceChanged"], - Type = "Func", - ValueList = " — ", - DefaultValue = " — " - } - ]; } diff --git a/src/BootstrapBlazor.Server/Components/Samples/Blocks.razor.cs b/src/BootstrapBlazor.Server/Components/Samples/Blocks.razor.cs index 47883f6c02b..206e0825550 100644 --- a/src/BootstrapBlazor.Server/Components/Samples/Blocks.razor.cs +++ b/src/BootstrapBlazor.Server/Components/Samples/Blocks.razor.cs @@ -70,40 +70,4 @@ private async Task ToggleAuthor() private Task OnQueryCondition2(string name) => Task.FromResult(IsShow2); private Task OnQueryUser(string name) => Task.FromResult(IsAuth); - - private AttributeItem[] GetAttributes() => - [ - new() - { - Name = nameof(Block.OnQueryCondition), - Description = Localizer["OnQueryCondition"], - Type = "Func>", - ValueList = " — ", - DefaultValue = "true" - }, - new() - { - Name = nameof(Block.ChildContent), - Description = Localizer["ChildContent"], - Type = "RenderFragment", - ValueList = " — ", - DefaultValue = " — " - }, - new() - { - Name = nameof(Block.Authorized), - Description = Localizer["Authorized"], - Type = "RenderFragment", - ValueList = " — ", - DefaultValue = " — " - }, - new() - { - Name = nameof(Block.NotAuthorized), - Description = Localizer["NotAuthorized"], - Type = "RenderFragment", - ValueList = " — ", - DefaultValue = " — " - } - ]; } diff --git a/src/BootstrapBlazor.Server/Components/Samples/Buttons.razor.cs b/src/BootstrapBlazor.Server/Components/Samples/Buttons.razor.cs index be2746921fe..c58df306975 100644 --- a/src/BootstrapBlazor.Server/Components/Samples/Buttons.razor.cs +++ b/src/BootstrapBlazor.Server/Components/Samples/Buttons.razor.cs @@ -73,118 +73,6 @@ private EventItem[] GetEvents() => } ]; - /// - /// 获得属性方法 - /// - /// - private AttributeItem[] GetAttributes() => - [ - new() - { - Name = "Color", - Description = Localizer["Att1"], - Type = "Color", - ValueList = "None / Active / Primary / Secondary / Success / Danger / Warning / Info / Light / Dark / Link", - DefaultValue = "Primary" - }, - new() - { - Name = "Icon", - Description = Localizer["Att2"], - Type = "string", - ValueList = "", - DefaultValue = "" - }, - new() - { - Name = "LoadingIcon", - Description = Localizer["Att3"], - Type = "string", - ValueList = "", - DefaultValue = "fa-fw fa-spin fa-solid fa-spinner" - }, - new() - { - Name = "Text", - Description = Localizer["Att4"], - Type = "string", - ValueList = "", - DefaultValue = "" - }, - new() - { - Name = "Size", - Description = Localizer["Att5"], - Type = "Size", - ValueList = "None / ExtraSmall / Small / Medium / Large / ExtraLarge", - DefaultValue = "None" - }, - new() - { - Name = "Class", - Description = Localizer["Att6"], - Type = "string", - ValueList = " — ", - DefaultValue = " — " - }, - new() - { - Name = "IsBlock", - Description = Localizer["Att7"], - Type = "boolean", - ValueList = " — ", - DefaultValue = "false" - }, - new() - { - Name = "IsDisabled", - Description = Localizer["Att8"], - Type = "boolean", - ValueList = " — ", - DefaultValue = "false" - }, - new() - { - Name = "IsOutline", - Description = Localizer["Att9"], - Type = "boolean", - ValueList = " — ", - DefaultValue = "false" - }, - new() - { - Name = "IsAsync", - Description = Localizer["Att10"], - Type = "boolean", - ValueList = " — ", - DefaultValue = "false" - }, - new() - { - Name = "ChildContent", - Description = Localizer["Att11"], - Type = "RenderFragment", - ValueList = " — ", - DefaultValue = " — " - }, - new() - { - Name = "ButtonStyle", - Description = Localizer["Att12"], - Type = "ButtonStyle", - ValueList = "None / Circle / Round", - DefaultValue = "None" - }, - new() - { - Name = "ButtonType", - Description = Localizer["Att13"], - Type = "ButtonType", - ValueList = "Button / Submit / Reset", - DefaultValue = "Button" - } - ]; - private MethodItem[] GetMethods() => [ new() diff --git a/src/BootstrapBlazor.Server/Components/Samples/Calendars.razor.cs b/src/BootstrapBlazor.Server/Components/Samples/Calendars.razor.cs index 79fa16f239e..0a951fa8478 100644 --- a/src/BootstrapBlazor.Server/Components/Samples/Calendars.razor.cs +++ b/src/BootstrapBlazor.Server/Components/Samples/Calendars.razor.cs @@ -47,44 +47,4 @@ private EventItem[] GetEvents() => Type ="EventCallback" } ]; - - /// - /// 获得属性方法 - /// - /// - private AttributeItem[] GetAttributes() => - [ - new() - { - Name = "Value", - Description = Localizer["Value"], - Type = "DateTime", - ValueList = " — ", - DefaultValue = " — " - }, - new() - { - Name = "ChildContent", - Description = Localizer["ChildContent"], - Type = "RenderFragment", - ValueList = " — ", - DefaultValue = " — " - }, - new() - { - Name = "CellTemplate", - Description = Localizer["CellTemplate"], - Type = "RenderFragment", - ValueList = " — ", - DefaultValue = " — " - }, - new() - { - Name = nameof(Calendar.FirstDayOfWeek), - Description = Localizer["FirstDayOfWeek"], - Type = "DayOfWeek", - ValueList = " — ", - DefaultValue = "Sunday" - } - ]; } diff --git a/src/BootstrapBlazor.Server/Components/Samples/Cameras.razor.cs b/src/BootstrapBlazor.Server/Components/Samples/Cameras.razor.cs index 24df426c884..985a35ed901 100644 --- a/src/BootstrapBlazor.Server/Components/Samples/Cameras.razor.cs +++ b/src/BootstrapBlazor.Server/Components/Samples/Cameras.razor.cs @@ -159,92 +159,4 @@ private Task OnClose() Logger.Log(TraceOnClose); return Task.CompletedTask; } - - /// - /// 获得属性方法 - /// - /// - private AttributeItem[] GetAttributes() => - [ - new() - { - Name = nameof(BootstrapBlazor.Components.Camera.VideoWidth), - Description = Localizer["VideoWidth"], - Type = "int", - ValueList = " — ", - DefaultValue = "320" - }, - new() - { - Name = nameof(BootstrapBlazor.Components.Camera.VideoHeight), - Description = Localizer["VideoHeight"], - Type = "int", - ValueList = " — ", - DefaultValue = "240" - }, - new() - { - Name = "ShowPreview", - Description = Localizer["ShowPreview"], - Type = "bool", - ValueList = "true|false", - DefaultValue = "false" - }, - new() - { - Name = "AutoStart", - Description = Localizer["AutoStart"], - Type = "bool", - ValueList = "true|false", - DefaultValue = "false" - }, - new() - { - Name = "DeviceLabel", - Description = Localizer["DeviceLabel"], - Type = "string", - ValueList = " — ", - DefaultValue = " — " - }, - new() - { - Name = "OnInit", - Description = Localizer["OnInit"], - Type = "Func, Task>", - ValueList = " — ", - DefaultValue = " — " - }, - new() - { - Name = "OnStart", - Description = Localizer["OnStart"], - Type = "Func", - ValueList = " — ", - DefaultValue = " — " - }, - new() - { - Name = "OnClose", - Description = Localizer["OnClose"], - Type = "Func", - ValueList = " — ", - DefaultValue = " — " - }, - new() - { - Name = nameof(BootstrapBlazor.Components.Camera.CaptureJpeg), - Description = Localizer["CaptureJpeg"], - Type = "bool", - ValueList = " — ", - DefaultValue = "false" - }, - new() - { - Name = nameof(BootstrapBlazor.Components.Camera.Quality), - Description = Localizer["Quality"], - Type = "double", - ValueList = " — ", - DefaultValue = " 0.9d" - } - ]; } diff --git a/src/BootstrapBlazor.Server/Components/Samples/Captchas.razor.cs b/src/BootstrapBlazor.Server/Components/Samples/Captchas.razor.cs index 81d509cd928..02b77313fb0 100644 --- a/src/BootstrapBlazor.Server/Components/Samples/Captchas.razor.cs +++ b/src/BootstrapBlazor.Server/Components/Samples/Captchas.razor.cs @@ -69,94 +69,6 @@ private async Task OnValidAsync(bool ret) } } - /// - /// 获得属性方法 - /// - /// - private AttributeItem[] GetAttributes() => - [ - new() - { - Name = "ImagesPath", - Description = Localizer["ImagesPath"], - Type = "string", - ValueList = " — ", - DefaultValue = "images" - }, - new() - { - Name = "ImagesName", - Description = Localizer["ImagesName"], - Type = "string", - ValueList = " — ", - DefaultValue = "Pic.jpg" - }, - new() - { - Name = "HeaderText", - Description = Localizer["HeaderText"], - Type = "string", - ValueList = " — ", - DefaultValue = Localizer["HeaderTextDefaultValue"] - }, - new() - { - Name = "BarText", - Description = Localizer["BarText"], - Type = "string", - ValueList = " — ", - DefaultValue = Localizer["BarTextDefaultValue"] - }, - new() - { - Name = "FailedText", - Description = Localizer["FailedText"], - Type = "string", - ValueList = " — ", - DefaultValue = Localizer["FailedTextDefaultValue"] - }, - new() - { - Name = "LoadText", - Description = Localizer["LoadText"], - Type = "string", - ValueList = " — ", - DefaultValue = Localizer["LoadTextDefaultValue"] - }, - new() - { - Name = "TryText", - Description = Localizer["TryText"], - Type = "string", - ValueList = " — ", - DefaultValue = Localizer["TryTextDefaultValue"] - }, - new() - { - Name = "Offset", - Description = Localizer["Offset"], - Type = "int", - ValueList = " — ", - DefaultValue = "5" - }, - new() - { - Name = "Width", - Description = Localizer["Width"], - Type = "int", - ValueList = " — ", - DefaultValue = "280" - }, - new() - { - Name = "Height", - Description = Localizer["Height"], - Type = "int", - ValueList = " — ", - DefaultValue = "155" - } - ]; - /// /// 获得事件方法 /// diff --git a/src/BootstrapBlazor.Server/Components/Samples/Cards.razor.cs b/src/BootstrapBlazor.Server/Components/Samples/Cards.razor.cs index a236ed063ce..b4f32026516 100644 --- a/src/BootstrapBlazor.Server/Components/Samples/Cards.razor.cs +++ b/src/BootstrapBlazor.Server/Components/Samples/Cards.razor.cs @@ -10,92 +10,5 @@ namespace BootstrapBlazor.Server.Components.Samples; /// public sealed partial class Cards { - /// - /// Card属性 - /// - /// - private AttributeItem[] GetAttributes() => - [ - new() - { - Name = "BodyTemplate", - Description = Localizer["BodyTemplate"], - Type = "RenderFragment", - ValueList = " — ", - DefaultValue = " — " - }, - new() - { - Name = "FooterTemplate", - Description = Localizer["FooterTemplate"], - Type = "RenderFragment", - ValueList = " — ", - DefaultValue = " — " - }, - new() - { - Name = "HeaderTemplate", - Description = Localizer["HeaderTemplate"], - Type = "RenderFragment", - ValueList = " — ", - DefaultValue = " — " - }, - new() - { - Name = "Class", - Description = Localizer["Class"], - Type = "string", - ValueList = " — ", - DefaultValue = " — " - }, - new() - { - Name = nameof(Card.HeaderPaddingY), - Description = Localizer["HeaderPaddingY"], - Type = "string?", - ValueList = " — ", - DefaultValue = " — " - }, - new() - { - Name = "Color", - Description = Localizer["Color"], - Type = "Color", - ValueList = "None / Primary / Secondary / Success / Danger / Warning / Info / Light / Dark", - DefaultValue = " — " - }, - new() - { - Name = "IsCenter", - Description = Localizer["IsCenter"], - Type = "boolean", - ValueList = "true / false", - DefaultValue = "false" - }, - new() - { - Name = "IsCollapsible", - Description = Localizer["IsCollapsible"], - Type = "boolean", - ValueList = "true / false", - DefaultValue = "false" - }, - new() - { - Name = nameof(Card.Collapsed), - Description = Localizer["Collapsed"], - Type = "boolean", - ValueList = "true / false", - DefaultValue = "false" - }, - new() - { - Name = "IsShadow", - Description = Localizer["IsShadow"], - Type = "boolean", - ValueList = "true / false", - DefaultValue = "false" - } - ]; } diff --git a/src/BootstrapBlazor.Server/Components/Samples/Carousels.razor.cs b/src/BootstrapBlazor.Server/Components/Samples/Carousels.razor.cs index f136c83d900..e393c77f78c 100644 --- a/src/BootstrapBlazor.Server/Components/Samples/Carousels.razor.cs +++ b/src/BootstrapBlazor.Server/Components/Samples/Carousels.razor.cs @@ -39,60 +39,4 @@ private Task OnClick(string imageUrl) OnClickLogger.Log($"Image Clicked: {imageUrl}"); return Task.CompletedTask; } - - /// - /// 获得属性方法 - /// - /// - private AttributeItem[] GetAttributes() => - [ - new() - { - Name = "Images", - Description = Localizer["Images"], - Type = "IEnumerable", - ValueList = "—", - DefaultValue = "—" - }, - new() - { - Name = "IsFade", - Description = Localizer["IsFade"], - Type = "boolean", - ValueList = " — ", - DefaultValue = "false" - }, - new() - { - Name = "HoverPause", - Description = Localizer["HoverPause"], - Type = "bool", - ValueList = "true|false", - DefaultValue = "true" - }, - new() - { - Name = "Width", - Description = Localizer["Width"], - Type = "int", - ValueList = " — ", - DefaultValue = "—" - }, - new() - { - Name = "OnClick", - Description = Localizer["OnClick"], - Type = "Func", - ValueList = " — ", - DefaultValue = " — " - }, - new() - { - Name = "PlayMode", - Description = Localizer["PlayMode"], - Type = "CarouselPlayMode", - ValueList = "AutoPlayOnload|AutoPlayAfterManually|Manually", - DefaultValue = "AutoPlayOnload" - } - ]; } diff --git a/src/BootstrapBlazor.Server/Components/Samples/Cascaders.razor.cs b/src/BootstrapBlazor.Server/Components/Samples/Cascaders.razor.cs index 448c0e76a18..6fd9a2fbc87 100644 --- a/src/BootstrapBlazor.Server/Components/Samples/Cascaders.razor.cs +++ b/src/BootstrapBlazor.Server/Components/Samples/Cascaders.razor.cs @@ -92,68 +92,4 @@ private async Task OnValidate() { await ValidateForm1.ValidateAsync(); } - - /// - /// 获得属性方法 - /// - /// - private AttributeItem[] GetAttributes() => - [ - new() - { - Name = "ShowLabel", - Description = Localizer["Att1"], - Type = "bool", - ValueList = "true|false", - DefaultValue = "true" - }, - new() - { - Name = "DisplayText", - Description = Localizer["Att2"], - Type = "string", - ValueList = " — ", - DefaultValue = " — " - }, - new() - { - Name = "PlaceHolder", - Description = Localizer["Att3"], - Type = "string", - ValueList = " — ", - DefaultValue = Localizer["Att3Default"]! - }, - new() - { - Name = "Class", - Description = Localizer["Att4"], - Type = "string", - ValueList = " — ", - DefaultValue = " — " - }, - new() - { - Name = "Color", - Description = Localizer["Att5"], - Type = "Color", - ValueList = "Primary / Secondary / Success / Danger / Warning / Info / Dark", - DefaultValue = "Primary" - }, - new() - { - Name = "IsDisabled", - Description = Localizer["Att6"], - Type = "boolean", - ValueList = "true / false", - DefaultValue = "false" - }, - new() - { - Name = "Items", - Description = Localizer["Att7"], - Type = "IEnumerable", - ValueList = " — ", - DefaultValue = " — " - } - ]; } diff --git a/src/BootstrapBlazor.Server/Components/Samples/CheckboxLists.razor.cs b/src/BootstrapBlazor.Server/Components/Samples/CheckboxLists.razor.cs index 0d40e8d97dd..5ccf0f829f6 100644 --- a/src/BootstrapBlazor.Server/Components/Samples/CheckboxLists.razor.cs +++ b/src/BootstrapBlazor.Server/Components/Samples/CheckboxLists.razor.cs @@ -171,50 +171,6 @@ class IconSelectedItem : SelectedItem public string? Icon { get; init; } } - private AttributeItem[] GetAttributes() => - [ - new() - { - Name = "Items", - Description = Localizer["Att1"], - Type = "IEnumerable", - ValueList = " — ", - DefaultValue = " — " - }, - new() - { - Name = "IsDisabled", - Description = Localizer["Att1"], - Type = "boolean", - ValueList = " — ", - DefaultValue = "false" - }, - new() - { - Name = "Value", - Description = Localizer["Att1"], - Type = "TValue", - ValueList = " — ", - DefaultValue = " — " - }, - new() - { - Name = "IsVertical", - Description = Localizer["Att1"], - Type = "boolean", - ValueList = " true / false ", - DefaultValue = " false " - }, - new() - { - Name = nameof(CheckboxList.MaxSelectedCount), - Description = Localizer["AttributeMaxSelectedCount"], - Type = "int", - ValueList = " — ", - DefaultValue = "0" - } - ]; - /// /// Get event method /// diff --git a/src/BootstrapBlazor.Server/Components/Samples/Checkboxs.razor.cs b/src/BootstrapBlazor.Server/Components/Samples/Checkboxs.razor.cs index 3adef5c9c4a..53582671e41 100644 --- a/src/BootstrapBlazor.Server/Components/Samples/Checkboxs.razor.cs +++ b/src/BootstrapBlazor.Server/Components/Samples/Checkboxs.razor.cs @@ -65,54 +65,6 @@ private Task OnBeforeStateChanged(CheckboxState state) => SwalService.Show Content = Localizer["OnBeforeStateChangedSwalContent"] }); - /// - /// GetAttributes - /// - /// - private AttributeItem[] GetAttributes() => - [ - new() - { - Name = "ShowLabel", - Description = Localizer["Att1"], - Type = "bool", - ValueList = "true|false", - DefaultValue = "false" - }, - new() - { - Name = "ShowAfterLabel", - Description = Localizer["Att2"], - Type = "bool", - ValueList = "true|false", - DefaultValue = "false" - }, - new() - { - Name = "DisplayText", - Description = Localizer["Att3"], - Type = "string", - ValueList = " — ", - DefaultValue = " — " - }, - new() - { - Name = "IsDisabled", - Description = Localizer["Att4"], - Type = "boolean", - ValueList = "true / false", - DefaultValue = "false" - }, - new() - { - Name = "State", - Description = Localizer["Att5"], - Type = "CheckboxState", - ValueList = "Mixed / Checked / UnChecked", - DefaultValue = "UnChecked" - } - ]; - /// /// 获得事件方法 /// diff --git a/src/BootstrapBlazor.Server/Components/Samples/CherryMarkdowns.razor.cs b/src/BootstrapBlazor.Server/Components/Samples/CherryMarkdowns.razor.cs index f84e1d3e36b..a007c4fd055 100644 --- a/src/BootstrapBlazor.Server/Components/Samples/CherryMarkdowns.razor.cs +++ b/src/BootstrapBlazor.Server/Components/Samples/CherryMarkdowns.razor.cs @@ -60,56 +60,4 @@ private async Task OnFileUpload(CherryMarkdownUploadFile arg) [Inject] [NotNull] private IStringLocalizer? Localizer { get; set; } - - private static AttributeItem[] GetAttributes() => - [ - new() - { - Name = "EditorSettings", - Description = "编辑器设置", - Type = "EditorSettings", - ValueList = " — ", - DefaultValue = " — " - }, - new() - { - Name = "ToolbarSettings", - Description = "工具栏设置", - Type = "ToolbarSettings", - ValueList = " — ", - DefaultValue = " — " - }, - new() - { - Name = "Value", - Description = "组件值", - Type = "string", - ValueList = " — ", - DefaultValue = " — " - }, - new() - { - Name = "Html", - Description = "组件 Html 代码", - Type = "string", - ValueList = " — ", - DefaultValue = " — " - }, - new() - { - Name = "OnFileUpload", - Description = "文件上传回调方法", - Type = "Func>", - ValueList = " — ", - DefaultValue = " — " - }, - new() - { - Name = "IsViewer", - Description = "组件是否为浏览器模式", - Type = "bool", - ValueList = "true/false", - DefaultValue = "false" - } - ]; } diff --git a/src/BootstrapBlazor.Server/Components/Samples/ClockPickers.razor.cs b/src/BootstrapBlazor.Server/Components/Samples/ClockPickers.razor.cs index e66350cf4bf..67be76dde04 100644 --- a/src/BootstrapBlazor.Server/Components/Samples/ClockPickers.razor.cs +++ b/src/BootstrapBlazor.Server/Components/Samples/ClockPickers.razor.cs @@ -23,40 +23,4 @@ public partial class ClockPickers private TimeSpan ScaleValue { get; set; } = TimeSpan.FromHours(12.5); private bool _autoSwitch = false; - - private AttributeItem[] GetAttributes() => - [ - new() - { - Name = nameof(ClockPicker.IsAutoSwitch), - Description = Localizer["IsAutoSwitchAttr"], - Type = "bool", - ValueList = "true / false", - DefaultValue = "true" - }, - new() - { - Name = nameof(ClockPicker.ShowClockScale), - Description = Localizer["ShowClockScaleAttr"], - Type = "bool", - ValueList = "true / false", - DefaultValue = "false" - }, - new() - { - Name = nameof(ClockPicker.ShowMinute), - Description = Localizer["ShowMinuteAttr"], - Type = "bool", - ValueList = "true / false", - DefaultValue = "true" - }, - new() - { - Name = nameof(ClockPicker.ShowSecond), - Description = Localizer["ShowSecondAttr"], - Type = "bool", - ValueList = "true / false", - DefaultValue = "true" - } - ]; } diff --git a/src/BootstrapBlazor.Server/Components/Samples/Collapses.razor.cs b/src/BootstrapBlazor.Server/Components/Samples/Collapses.razor.cs index 12d9165666f..eefd338fa83 100644 --- a/src/BootstrapBlazor.Server/Components/Samples/Collapses.razor.cs +++ b/src/BootstrapBlazor.Server/Components/Samples/Collapses.razor.cs @@ -34,34 +34,6 @@ private void OnToggle() new SelectedItem ("Shanghai", "上海") { Active = true }, }; - private AttributeItem[] GetAttributes() => - [ - new() - { - Name = "CollapseItems", - Description = Localizer["CollapseItems"], - Type = "RenderFragment", - ValueList = " — ", - DefaultValue = " — " - }, - new() - { - Name = "IsAccordion", - Description = Localizer["IsAccordion"], - Type = "bool", - ValueList = "true|false", - DefaultValue = "false" - }, - new() - { - Name = "OnCollapseChanged", - Description = Localizer["OnCollapseChanged"], - Type = "Func", - ValueList = " — ", - DefaultValue = " — " - } - ]; - private AttributeItem[] GetCollapseItemAttributes() => [ new() diff --git a/src/BootstrapBlazor.Server/Components/Samples/ColorPickers.razor.cs b/src/BootstrapBlazor.Server/Components/Samples/ColorPickers.razor.cs index 69ecf04428d..f17af444fcc 100644 --- a/src/BootstrapBlazor.Server/Components/Samples/ColorPickers.razor.cs +++ b/src/BootstrapBlazor.Server/Components/Samples/ColorPickers.razor.cs @@ -58,48 +58,4 @@ private static async Task FormatValueAsync(string v) } return ret; } - - private AttributeItem[] GetAttributes() => - [ - new() - { - Name = nameof(ColorPicker.Template), - Description = Localizer["AttributeTemplate"], - Type = "RenderFragment", - ValueList = " — ", - DefaultValue = " — " - }, - new() - { - Name = nameof(ColorPicker.Formatter), - Description = Localizer["AttributeFormatter"], - Type = "Func>", - ValueList = " — ", - DefaultValue = " — " - }, - new() - { - Name = nameof(ColorPicker.IsSupportOpacity), - Description = Localizer["AttributeIsSupportOpacity"], - Type = "bool", - ValueList = "true|false", - DefaultValue = "false" - }, - new() - { - Name = nameof(ColorPicker.Swatches), - Description = Localizer["AttributeSwatches"], - Type = "bool", - ValueList = " — ", - DefaultValue = " — " - }, - new() - { - Name = nameof(ColorPicker.OnValueChanged), - Description = Localizer["EventOnValueChanged"], - Type = "Func", - ValueList = " — ", - DefaultValue = " — " - } - ]; } diff --git a/src/BootstrapBlazor.Server/Components/Samples/Consoles.razor.cs b/src/BootstrapBlazor.Server/Components/Samples/Consoles.razor.cs index ed79bcfc758..3781460cdd3 100644 --- a/src/BootstrapBlazor.Server/Components/Samples/Consoles.razor.cs +++ b/src/BootstrapBlazor.Server/Components/Samples/Consoles.razor.cs @@ -126,138 +126,4 @@ private static AttributeItem[] GetItemAttributes() => DefaultValue = "None" } ]; - - /// - /// GetAttributes - /// - /// - private static AttributeItem[] GetAttributes() => - [ - new() - { - Name = nameof(BootstrapBlazor.Components.Console.Items), - Description = "组件数据源", - Type = "IEnumerable", - ValueList = " — ", - DefaultValue = " — " - }, - new() - { - Name = "Height", - Description = "组件高度", - Type = "int", - ValueList = " — ", - DefaultValue = "0" - }, - new() - { - Name = nameof(BootstrapBlazor.Components.Console.IsAutoScroll), - Description = "是否自动滚屏", - Type = "bool", - ValueList = "true|false", - DefaultValue = "true" - }, - new(){ - Name = "ShowAutoScroll", - Description = "是否显示自动滚屏选项", - Type = "bool", - ValueList = "true|false", - DefaultValue = "false" - }, - new() - { - Name = "OnClear", - Description = "组件清屏回调方法", - Type = "int", - ValueList = " — ", - DefaultValue = "0" - }, - new() - { - Name = "HeaderText", - Description = "Header 显示文字", - Type = "string", - ValueList = " — ", - DefaultValue = "系统监控" - }, - new() - { - Name = "HeaderTemplate", - Description = "Header 模板", - Type = "RenderFragment", - ValueList = " — ", - DefaultValue = " — " - }, - new() - { - Name = "ItemTemplate", - Description = "Item 模板", - Type = "RenderFragment", - ValueList = " — ", - DefaultValue = " — " - }, - new(){ - Name = "LightTitle", - Description = "指示灯 Title", - Type = "string", - ValueList = " — ", - DefaultValue = "通讯指示灯" - }, - new() - { - Name = "IsFlashLight", - Description = "指示灯是否闪烁", - Type = "bool", - ValueList = "true/false", - DefaultValue = "true" - }, - new() - { - Name = "LightColor", - Description = "指示灯颜色", - Type = "Color", - ValueList = " — ", - DefaultValue = "Color.Success" - }, - new() - { - Name = "ShowLight", - Description = "是否显示指示灯", - Type = "bool", - ValueList = "true/false", - DefaultValue = "true" - }, - new() - { - Name = "ClearButtonText", - Description = "按钮显示文字", - Type = "string", - ValueList = " — ", - DefaultValue = "清屏" - }, - new() - { - Name = "ClearButtonIcon", - Description = "按钮显示图标", - Type = "string", - ValueList = " — ", - DefaultValue = "fa-fw fa-solid fa-xmark" - }, - new() - { - Name = "ClearButtonColor", - Description = "按钮颜色", - Type = "Color", - ValueList = "None / Active / Primary / Secondary / Success / Danger / Warning / Info / Light / Dark / Link", - DefaultValue = "Secondary" - }, - new() - { - Name = "FooterTemplate", - Description = "Footer 模板", - Type = "RenderFragment", - ValueList = " — ", - DefaultValue = " — " - } - ]; } diff --git a/src/BootstrapBlazor.Server/Components/Samples/CountButtons.razor.cs b/src/BootstrapBlazor.Server/Components/Samples/CountButtons.razor.cs index 5ba51961b72..863ce59f476 100644 --- a/src/BootstrapBlazor.Server/Components/Samples/CountButtons.razor.cs +++ b/src/BootstrapBlazor.Server/Components/Samples/CountButtons.razor.cs @@ -13,32 +13,4 @@ public partial class CountButtons private static Task OnClick() => Task.Delay(2000); private string CountTextCallback(int count) => Localizer["CountButtonText", count]; - - private AttributeItem[] GetAttributes() => - [ - new() - { - Name = nameof(CountButton.Count), - Description = Localizer["Count"], - Type = "TValue", - ValueList = " — ", - DefaultValue = " — " - }, - new() - { - Name = nameof(CountButton.CountText), - Description = Localizer["CountText"], - Type = "CountOption", - ValueList = " — ", - DefaultValue = " — " - }, - new() - { - Name = nameof(CountButton.CountTextCallback), - Description = Localizer["CountTextCallback"], - Type = "Func", - ValueList = " — ", - DefaultValue = " — " - } - ]; } diff --git a/src/BootstrapBlazor.Server/Components/Samples/CountUps.razor b/src/BootstrapBlazor.Server/Components/Samples/CountUps.razor index c584899bad7..1ffaac1ccbd 100644 --- a/src/BootstrapBlazor.Server/Components/Samples/CountUps.razor +++ b/src/BootstrapBlazor.Server/Components/Samples/CountUps.razor @@ -100,4 +100,4 @@ - + diff --git a/src/BootstrapBlazor.Server/Components/Samples/CountUps.razor.cs b/src/BootstrapBlazor.Server/Components/Samples/CountUps.razor.cs index c90205f9a61..57cca2f06ad 100644 --- a/src/BootstrapBlazor.Server/Components/Samples/CountUps.razor.cs +++ b/src/BootstrapBlazor.Server/Components/Samples/CountUps.razor.cs @@ -1,4 +1,4 @@ -// Licensed to the .NET Foundation under one or more agreements. +// Licensed to the .NET Foundation under one or more agreements. // The .NET Foundation licenses this file to you under the Apache 2.0 License // See the LICENSE file in the project root for more information. // Maintainer: Argo Zhang(argo@live.ca) Website: https://www.blazor.zone @@ -57,164 +57,4 @@ private Task OnSelectedItemChanged(SelectedItem item) } return Task.CompletedTask; } - - private AttributeItem[] GetAttributes() => - [ - new() - { - Name = "Value", - Description = Localizer["Value"], - Type = "TValue", - ValueList = " — ", - DefaultValue = " — " - }, - new() - { - Name = "Option", - Description = Localizer["CountOption"], - Type = "CountOption", - ValueList = " — ", - DefaultValue = " — " - }, - new() - { - Name = "OnCompleted", - Description = Localizer["OnCompleted"], - Type = "Func", - ValueList = " — ", - DefaultValue = " — " - } - ]; - - private AttributeItem[] GetOptionAttributes() => - [ - new() - { - Name = nameof(CountUpOption.StartValue), - Description = Localizer["StartValue"], - Type = "decimal", - ValueList = " — ", - DefaultValue = "0" - }, - new() - { - Name = nameof(CountUpOption.Duration), - Description = Localizer["Duration"], - Type = "float", - ValueList = " — ", - DefaultValue = "0" - }, - new() - { - Name = nameof(CountUpOption.UseEasing), - Description = Localizer["UseEasing"], - Type = "boolean", - ValueList = " — ", - DefaultValue = "true" - }, - new() - { - Name = nameof(CountUpOption.DecimalPlaces), - Description = Localizer["DecimalPlaces"], - Type = "int", - ValueList = " — ", - DefaultValue = "0" - }, - new() - { - Name = nameof(CountUpOption.Decimal), - Description = Localizer["Decimal"], - Type = "string", - ValueList = " — ", - DefaultValue = " — " - }, - new() - { - Name = nameof(CountUpOption.UseGrouping), - Description = Localizer["UseGrouping"], - Type = "boolean", - ValueList = " — ", - DefaultValue = "true" - }, - new() - { - Name = nameof(CountUpOption.UseIndianSeparators), - Description = Localizer["UseIndianSeparators"], - Type = "boolean", - ValueList = " — ", - DefaultValue = "false" - }, - new() - { - Name = nameof(CountUpOption.Separator), - Description = Localizer["Separator"], - Type = "string", - ValueList = " — ", - DefaultValue = " — " - }, - new() - { - Name = nameof(CountUpOption.Prefix), - Description = Localizer["Prefix"], - Type = "string", - ValueList = " — ", - DefaultValue = " — " - }, - new() - { - Name = nameof(CountUpOption.Suffix), - Description = Localizer["Suffix"], - Type = "string", - ValueList = " — ", - DefaultValue = " — " - }, - new() - { - Name = nameof(CountUpOption.SmartEasingAmount), - Description = Localizer["SmartEasingAmount"], - Type = "int", - ValueList = " — ", - DefaultValue = " — " - }, - new() - { - Name = nameof(CountUpOption.SmartEasingThreshold), - Description = Localizer["SmartEasingThreshold"], - Type = "int", - ValueList = " — ", - DefaultValue = " — " - }, - new() - { - Name = nameof(CountUpOption.EnableScrollSpy), - Description = Localizer["EnableScrollSpy"], - Type = "boolean", - ValueList = " — ", - DefaultValue = "false" - }, - new() - { - Name = nameof(CountUpOption.ScrollSpyDelay), - Description = Localizer["ScrollSpyDelay"], - Type = "int", - ValueList = " — ", - DefaultValue = "200" - }, - new() - { - Name = nameof(CountUpOption.ScrollSpyOnce), - Description = Localizer["ScrollSpyOnce"], - Type = "boolean", - ValueList = " — ", - DefaultValue = "false" - }, - new() - { - Name = nameof(CountUpOption.Numerals), - Description = Localizer["Numerals"], - Type = "char[]", - ValueList = " — ", - DefaultValue = " — " - } - ]; } diff --git a/src/BootstrapBlazor.Server/Components/Samples/DateTimePickers.razor.cs b/src/BootstrapBlazor.Server/Components/Samples/DateTimePickers.razor.cs index 0bafd2997be..7f3927f7695 100644 --- a/src/BootstrapBlazor.Server/Components/Samples/DateTimePickers.razor.cs +++ b/src/BootstrapBlazor.Server/Components/Samples/DateTimePickers.razor.cs @@ -166,132 +166,4 @@ private EventItem[] GetEvents() => Type ="Func>>" } ]; - - /// - /// 获得属性方法 - /// - /// - private AttributeItem[] GetAttributes() => - [ - new() - { - Name = "ShowLabel", - Description = Localizer["Att1"], - Type = "bool", - ValueList = "true|false", - DefaultValue = "true" - }, - new() - { - Name = "ShowSidebar", - Description = Localizer["Att2"], - Type = "bool", - ValueList = "true|false", - DefaultValue = "false" - }, - new() - { - Name = "DisplayText", - Description = Localizer["Att3"], - Type = "string", - ValueList = " — ", - DefaultValue = " — " - }, - new() - { - Name = "Format", - Description = Localizer["Att4"], - Type = "string", - ValueList = " — ", - DefaultValue = "yyyy-MM-dd" - }, - new() - { - Name = "IsDisabled", - Description = Localizer["Att6"], - Type = "bool", - ValueList = "true|false", - DefaultValue = "false" - }, - new() - { - Name = "Value", - Description = Localizer["Att8"], - Type = "TValue", - ValueList = "DateTime | DateTime?", - DefaultValue = " — " - }, - new() - { - Name = nameof(DateTimePicker.FirstDayOfWeek), - Description = Localizer["AttrFirstDayOfWeek"], - Type = "DayOfWeek", - ValueList = " — ", - DefaultValue = "Sunday" - }, - new() - { - Name = "ViewMode", - Description = Localizer["Att9"], - Type = "DatePickerViewMode", - ValueList = " Date / DateTime / Year / Month", - DefaultValue = "Date" - }, - new() { - Name = "AutoClose", - Description = Localizer["AttrAutoClose"], - Type = "bool", - ValueList = "true/false", - DefaultValue = "false" - }, - new() { - Name = "IsEditable", - Description = Localizer["AttrIsEditable"], - Type = "bool", - ValueList = "true/false", - DefaultValue = "false" - }, - new() { - Name = "ShowLunar", - Description = Localizer["AttrShowLunar"], - Type = "bool", - ValueList = "true/false", - DefaultValue = "false" - }, - new() { - Name = "ShowSolarTerm", - Description = Localizer["AttrShowSolarTerm"], - Type = "bool", - ValueList = "true/false", - DefaultValue = "false" - }, - new() { - Name = "ShowFestivals", - Description = Localizer["AttrShowFestivals"], - Type = "bool", - ValueList = "true/false", - DefaultValue = "false" - }, - new() { - Name = "ShowHolidays", - Description = Localizer["AttrShowHolidays"], - Type = "bool", - ValueList = "true/false", - DefaultValue = "false" - }, - new() { - Name = "EnableDisabledDaysCache", - Description = Localizer["AttrEnableDisabledDaysCache"], - Type = "bool", - ValueList = "true/false", - DefaultValue = "true" - }, - new() { - Name = "DisplayDisabledDayAsEmpty", - Description = Localizer["AttrDisplayDisabledDayAsEmpty"], - Type = "bool", - ValueList = "true/false", - DefaultValue = "false" - } - ]; } diff --git a/src/BootstrapBlazor.Server/Components/Samples/DateTimeRanges.razor.cs b/src/BootstrapBlazor.Server/Components/Samples/DateTimeRanges.razor.cs index b70f84da724..ca6fe3b3462 100644 --- a/src/BootstrapBlazor.Server/Components/Samples/DateTimeRanges.razor.cs +++ b/src/BootstrapBlazor.Server/Components/Samples/DateTimeRanges.razor.cs @@ -158,108 +158,4 @@ private static List GetEvents() => Type ="Func" } ]; - - /// - /// Get property method - /// - /// - private static List GetAttributes() => - [ - new() - { - Name = "ShowLabel", - Description = "Whether to show the pre-label", - Type = "bool", - ValueList = "true|false", - DefaultValue = "true" - }, - new() - { - Name = "ShowSidebar", - Description = "Whether to show the shortcut sidebar", - Type = "bool", - ValueList = "true|false", - DefaultValue = "false" - }, - new() - { - Name = nameof(DateTimeRange.ShowSelectedValue), - Description = "Whether to show the selected value", - Type = "bool", - ValueList = "true|false", - DefaultValue = "false" - }, - new() - { - Name = "ShowToday", - Description = "Whether to show today shortcut button", - Type = "bool", - ValueList = "true|false", - DefaultValue = "false" - }, - new() - { - Name = "IsDisabled", - Description = "Whether to disable default is false", - Type = "bool", - ValueList = "true|false", - DefaultValue = "false" - }, - new() - { - Name = "ShowSidebar", - Description = "Whether to display the shortcut sidebar The default is false", - Type = "bool", - ValueList = "true|false", - DefaultValue = "false" - }, - new() - { - Name = "Placement", - Description = "Set the popup location", - Type = "Placement", - ValueList = "top|bottom|left|right", - DefaultValue = "auto" - }, - new() - { - Name = "DisplayText", - Description = "Pre-label display text", - Type = "string", - ValueList = " — ", - DefaultValue = " — " - }, - new() - { - Name = "DateFormat", - Description = "Date format string defaults to yyyy-MM-dd", - Type = "string", - ValueList = " — ", - DefaultValue = "yyyy-MM-dd" - }, - new() - { - Name = "Value", - Description = "Custom class containing start time end time", - Type = "DateTimeRangeValue", - ValueList = " — ", - DefaultValue = " — " - }, - new() - { - Name = "SidebarItems", - Description = "Sidebar shortcut options collection", - Type = "IEnumerable", - ValueList = " — ", - DefaultValue = " — " - }, - new() - { - Name = "IsEditable", - Description = "Is manual date entry allowed", - Type = "bool", - ValueList = "true/false", - DefaultValue = "false" - } - ]; } diff --git a/src/BootstrapBlazor.Server/Components/Samples/DialButtons.razor.cs b/src/BootstrapBlazor.Server/Components/Samples/DialButtons.razor.cs index eac4f2ebd0c..7c7c1e5917e 100644 --- a/src/BootstrapBlazor.Server/Components/Samples/DialButtons.razor.cs +++ b/src/BootstrapBlazor.Server/Components/Samples/DialButtons.razor.cs @@ -20,36 +20,4 @@ private Task OnClick(DialMode mode) } private CheckboxState CheckState(string state) => Mode.ToString() == state ? CheckboxState.Checked : CheckboxState.UnChecked; - - /// - /// GetAttributes - /// - /// - private static AttributeItem[] GetAttributes() => - [ - new() - { - Name = nameof(DialButton.Placement), - Description = "the dial button placement", - Type = "Placement", - ValueList = " — ", - DefaultValue = " — " - }, - new() - { - Name = nameof(DialButton.DialMode), - Description = "the dial button placement", - Type = "DialMode", - ValueList = "Linear/Radial", - DefaultValue = " — " - }, - new() - { - Name = nameof(DialButton.Radius), - Description = "the dial popup radius", - Type = "int", - ValueList = " — ", - DefaultValue = " — " - } - ]; } diff --git a/src/BootstrapBlazor.Server/Components/Samples/Dialogs.razor.cs b/src/BootstrapBlazor.Server/Components/Samples/Dialogs.razor.cs index f8f1d8978a6..75e645b5033 100644 --- a/src/BootstrapBlazor.Server/Components/Samples/Dialogs.razor.cs +++ b/src/BootstrapBlazor.Server/Components/Samples/Dialogs.razor.cs @@ -309,148 +309,4 @@ private async Task OnEmailButtonClick() EmailInputValue = string.Join(";", Emails); } } - - /// - /// 获得属性方法 - /// - /// - private static AttributeItem[] GetAttributes() => - [ - new() - { - Name = "Component", - Description = "Parameters of the component referenced in the dialog Body", - Type = "DynamicComponent", - ValueList = " — ", - DefaultValue = " — " - }, - new() - { - Name = "BodyContext", - Description = "pop-up window", - Type = "object", - ValueList = " — ", - DefaultValue = " — " - }, - new() - { - Name = "HeaderTemplate", - Description = "Modal body ModalHeader template", - Type = "RenderFragment", - ValueList = " — ", - DefaultValue = " — " - }, - new() - { - Name = "BodyTemplate", - Description = "Modal body ModalBody component", - Type = "RenderFragment", - ValueList = " — ", - DefaultValue = " — " - }, - new() - { - Name = "FooterTemplate", - Description = "ModalFooter component at the bottom of the modal", - Type = "RenderFragment", - ValueList = " — ", - DefaultValue = " — " - }, - new() - { - Name = "IsCentered", - Description = "Whether to center vertically", - Type = "boolean", - ValueList = "true|false", - DefaultValue = "true" - }, - new() - { - Name = "IsScrolling", - Description = "Whether to scroll when the text of the pop-up window is too long", - Type = "boolean", - ValueList = "true|false", - DefaultValue = "false" - }, - new() - { - Name = "ShowCloseButton", - Description = "whether to show the close button", - Type = "boolean", - ValueList = "true|false", - DefaultValue = "true" - }, - new() - { - Name = "ShowHeaderCloseButton", - Description = "Whether to display the close button on the right side of the title bar", - Type = "boolean", - ValueList = "true|false", - DefaultValue = "true" - }, - new() - { - Name = "ShowFooter", - Description = "whether to display Footer", - Type = "boolean", - ValueList = "true|false", - DefaultValue = "true" - }, - new() - { - Name = nameof(DialogOption.ShowPrintButton), - Description = "Whether to show the print button", - Type = "boolean", - ValueList = "true|false", - DefaultValue = "false" - }, - new() - { - Name = nameof(DialogOption.ShowPrintButtonInHeader), - Description = "Whether the print button is displayed in the Header", - Type = "boolean", - ValueList = "true|false", - DefaultValue = "false" - }, - new() - { - Name = "Size", - Description = "Size of dialog", - Type = "Size", - ValueList = "None / ExtraSmall / Small / Medium / Large / ExtraLarge", - DefaultValue = "Large" - }, - new() - { - Name = nameof(DialogOption.FullScreenSize), - Description = "Full screen when smaller than a certain size", - Type = "Size", - ValueList = "None / Always / Small / Medium / Large / ExtraLarge", - DefaultValue = "None" - }, - new() - { - Name = "Title", - Description = "Popup title", - Type = "string", - ValueList = " — ", - DefaultValue = " not set " - }, - new() - { - Name = nameof(DialogOption.PrintButtonText), - Description = "print button display text", - Type = "string", - ValueList = " — ", - DefaultValue = "The value set in the resource file" - }, - new() - { - Name = nameof(DialogOption.ShowMaximizeButton), - Description = "Whether to show the maximize button", - Type = "boolean", - ValueList = "true|false", - DefaultValue = "false" - } - ]; } diff --git a/src/BootstrapBlazor.Server/Components/Samples/Displays.razor.cs b/src/BootstrapBlazor.Server/Components/Samples/Displays.razor.cs index 929f2fc4b85..484ecb46874 100644 --- a/src/BootstrapBlazor.Server/Components/Samples/Displays.razor.cs +++ b/src/BootstrapBlazor.Server/Components/Samples/Displays.razor.cs @@ -57,48 +57,4 @@ protected override void OnInitialized() Model.Hobby = Foo.GenerateHobbies(FooLocalizer).Take(3).Select(i => i.Text); Hobbies = Foo.GenerateHobbies(FooLocalizer); } - - private AttributeItem[] GetAttributes() => - [ - new() - { - Name = "ShowLabel", - Description = Localizer["ShowLabel"], - Type = "bool", - ValueList = "true|false", - DefaultValue = "false" - }, - new() - { - Name = "DisplayText", - Description = Localizer["DisplayText"], - Type = "string", - ValueList = " — ", - DefaultValue = " — " - }, - new() - { - Name = "FormatString", - Description = Localizer["FormatString"], - Type = "string", - ValueList = " — ", - DefaultValue = " — " - }, - new() - { - Name = "Formatter", - Description = Localizer["Formatter"], - Type = "RenderFragment", - ValueList = " — ", - DefaultValue = " — " - }, - new() - { - Name = nameof(Display.TypeResolver), - Description = Localizer["TypeResolver"], - Type = "Func", - ValueList = " — ", - DefaultValue = " — " - } - ]; } diff --git a/src/BootstrapBlazor.Server/Components/Samples/Dividers.razor.cs b/src/BootstrapBlazor.Server/Components/Samples/Dividers.razor.cs index dbcff238727..a816183e532 100644 --- a/src/BootstrapBlazor.Server/Components/Samples/Dividers.razor.cs +++ b/src/BootstrapBlazor.Server/Components/Samples/Dividers.razor.cs @@ -10,46 +10,4 @@ namespace BootstrapBlazor.Server.Components.Samples; /// public sealed partial class Dividers { - /// - /// 获得属性方法 - /// - /// - private AttributeItem[] GetAttributes() => - [ - new() { - Name = "Text", - Description = Localizer["Desc1"], - Type = "string", - ValueList = " — ", - DefaultValue = " — " - }, - new() { - Name = "Icon", - Description = Localizer["Desc2"], - Type = "string", - ValueList = " — ", - DefaultValue = " — " - }, - new() { - Name = "Alignment", - Description = Localizer["Desc3"], - Type = "Aligment", - ValueList = "Left|Center|Right|Top|Bottom", - DefaultValue = "Center" - }, - new() { - Name = "IsVertical", - Description = Localizer["Desc4"], - Type = "bool", - ValueList = "true|false", - DefaultValue = "false" - }, - new() { - Name = "ChildContent", - Description = Localizer["Desc5"], - Type = "RenderFragment", - ValueList = " — ", - DefaultValue = " — " - } - ]; } diff --git a/src/BootstrapBlazor.Server/Components/Samples/DockViews/Index.razor.cs b/src/BootstrapBlazor.Server/Components/Samples/DockViews/Index.razor.cs index fd20ab88150..34b2c8c6ff7 100644 --- a/src/BootstrapBlazor.Server/Components/Samples/DockViews/Index.razor.cs +++ b/src/BootstrapBlazor.Server/Components/Samples/DockViews/Index.razor.cs @@ -10,104 +10,5 @@ namespace BootstrapBlazor.Server.Components.Samples.DockViews; /// public partial class Index { - private static AttributeItem[] GetAttributes() => - [ - new() - { - Name = "Name", - Description = "DockView 本地化存储识别键值", - Type = "string?", - ValueList = " — ", - DefaultValue = " — " - }, - new() - { - Name = "OnInitializedCallbackAsync", - Description = "客户端组件脚本初始化完成后回调此方法", - Type = "Func?", - ValueList = " — ", - DefaultValue = " — " - }, - new() - { - Name = "OnVisibleStateChangedAsync", - Description = "标签切换 Visible 状态时回调此方法", - Type = "Func?", - ValueList = " — ", - DefaultValue = " — " - }, - new() - { - Name = "OnTabDropCallbackAsync", - Description = "标签页拖动完成时回调此方法", - Type = "Func?", - ValueList = " — ", - DefaultValue = " — " - }, - new() - { - Name = "OnSplitterCallbackAsync", - Description = "标签页调整大小完成时回调此方法", - Type = "Func?", - ValueList = " — ", - DefaultValue = " — " - }, - new() - { - Name = "OnLockChangedCallbackAsync", - Description = "锁定状态回调此方法", - Type = "Func?", - ValueList = " — ", - DefaultValue = " — " - }, - new() - { - Name = "OnResizeCallbackAsync", - Description = "标签页位置变化时回调此方法", - Type = "Func?", - ValueList = " — ", - DefaultValue = " — " - }, - new() - { - Name = "IsLock", - Description = "是否锁定", - Type = "bool", - ValueList = "true|false", - DefaultValue = "false" - }, - new() - { - Name = "LayoutConfig", - Description = "布局配置", - Type = "string?", - ValueList = " — ", - DefaultValue = " — " - }, - new() - { - Name = "Version", - Description = "版本设置", - Type = "string?", - ValueList = " — ", - DefaultValue = " — " - }, - new() - { - Name = "EnableLocalStorage", - Description = "是否启用本地存储布局", - Type = "bool", - ValueList = "true|false", - DefaultValue = "false" - }, - new() - { - Name = "LocalStoragePrefix", - Description = "本地存储前缀", - Type = "string?", - ValueList = " — ", - DefaultValue = " — " - } - ]; } diff --git a/src/BootstrapBlazor.Server/Components/Samples/DockViews2/Index.razor.cs b/src/BootstrapBlazor.Server/Components/Samples/DockViews2/Index.razor.cs index e6475953f53..65d82e40bd9 100644 --- a/src/BootstrapBlazor.Server/Components/Samples/DockViews2/Index.razor.cs +++ b/src/BootstrapBlazor.Server/Components/Samples/DockViews2/Index.razor.cs @@ -10,105 +10,6 @@ namespace BootstrapBlazor.Server.Components.Samples.DockViews2; /// public partial class Index { - private static AttributeItem[] GetAttributes() => - [ - new() - { - Name = "Name", - Description = "DockView 本地化存储识别键值", - Type = "string?", - ValueList = " — ", - DefaultValue = " — " - }, - new() - { - Name = "OnInitializedCallbackAsync", - Description = "客户端组件脚本初始化完成后回调此方法", - Type = "Func?", - ValueList = " — ", - DefaultValue = " — " - }, - new() - { - Name = "OnVisibleStateChangedAsync", - Description = "标签切换 Visible 状态时回调此方法", - Type = "Func?", - ValueList = " — ", - DefaultValue = " — " - }, - new() - { - Name = "OnTabDropCallbackAsync", - Description = "标签页拖动完成时回调此方法", - Type = "Func?", - ValueList = " — ", - DefaultValue = " — " - }, - new() - { - Name = "OnSplitterCallbackAsync", - Description = "标签页调整大小完成时回调此方法", - Type = "Func?", - ValueList = " — ", - DefaultValue = " — " - }, - new() - { - Name = "OnLockChangedCallbackAsync", - Description = "锁定状态回调此方法", - Type = "Func?", - ValueList = " — ", - DefaultValue = " — " - }, - new() - { - Name = "OnResizeCallbackAsync", - Description = "标签页位置变化时回调此方法", - Type = "Func?", - ValueList = " — ", - DefaultValue = " — " - }, - new() - { - Name = "IsLock", - Description = "是否锁定", - Type = "bool", - ValueList = "true|false", - DefaultValue = "false" - }, - new() - { - Name = "LayoutConfig", - Description = "布局配置", - Type = "string?", - ValueList = " — ", - DefaultValue = " — " - }, - new() - { - Name = "Version", - Description = "版本设置", - Type = "string?", - ValueList = " — ", - DefaultValue = " — " - }, - new() - { - Name = "EnableLocalStorage", - Description = "是否启用本地存储布局", - Type = "bool", - ValueList = "true|false", - DefaultValue = "false" - }, - new() - { - Name = "LocalStoragePrefix", - Description = "本地存储前缀", - Type = "string?", - ValueList = " — ", - DefaultValue = " — " - } - ]; private static AttributeItem[] GetDockContentAttributes() => [ diff --git a/src/BootstrapBlazor.Server/Components/Samples/DragDrops.razor.cs b/src/BootstrapBlazor.Server/Components/Samples/DragDrops.razor.cs index c767bedce4a..a98618de5bb 100644 --- a/src/BootstrapBlazor.Server/Components/Samples/DragDrops.razor.cs +++ b/src/BootstrapBlazor.Server/Components/Samples/DragDrops.razor.cs @@ -79,30 +79,6 @@ protected override void OnInitialized() ]; } - /// - /// GetAttributes - /// - /// - private AttributeItem[] GetAttributes() => - [ - new() - { - Name = "MaxItems", - Description = Localizer["A1"], - Type = "int?", - ValueList = " — ", - DefaultValue = "null" - }, - new() - { - Name = "ChildContent", - Description = Localizer["A1"], - Type = "RenderFragment?", - ValueList = " — ", - DefaultValue = " — " - } - ]; - /// /// GetMethods /// diff --git a/src/BootstrapBlazor.Server/Components/Samples/Drawers.razor.cs b/src/BootstrapBlazor.Server/Components/Samples/Drawers.razor.cs index a1b2ea77676..88d80b43785 100644 --- a/src/BootstrapBlazor.Server/Components/Samples/Drawers.razor.cs +++ b/src/BootstrapBlazor.Server/Components/Samples/Drawers.razor.cs @@ -69,108 +69,4 @@ private async Task DrawerServiceShow() => await DrawerService.Show(new DrawerOpt AllowResize = true, IsBackdrop = true }); - - /// - /// Get property method - /// - /// - private static AttributeItem[] GetAttributes() => - [ - new() - { - Name = "Width", - Description = "drawer width", - Type = "string", - ValueList = " — ", - DefaultValue = "360px" - }, - new() - { - Name = "Height", - Description = "drawer height", - Type = "string", - ValueList = " — ", - DefaultValue = "290px" - }, - new() - { - Name = "IsOpen", - Description = "Is the drawer open?", - Type = "bool", - ValueList = "true|false", - DefaultValue = "false" - }, - new() - { - Name = "IsBackdrop", - Description = "Whether click on the mask closes the drawer", - Type = "bool", - ValueList = "true|false", - DefaultValue = "true" - }, - new() - { - Name = "AllowResize", - Description = "Whether allow drag resize the drawer", - Type = "bool", - ValueList = "true|false", - DefaultValue = "false" - }, - new() - { - Name = "OnClickBackdrop", - Description = "Callback delegate method when background mask is clicked", - Type = "Action", - ValueList = " — ", - DefaultValue = " — " - }, - new() - { - Name = "Placement", - Description = "Where the component appears", - Type = "Placement", - ValueList = "Left|Right|Top|Bottom", - DefaultValue = "Left" - }, - new() - { - Name = "Position", - Description = "Where the component position", - Type = "string", - ValueList = " — ", - DefaultValue = " — " - }, - new() - { - Name = "BodyScroll", - Description = "Where the enable body scrolling when drawer is shown", - Type = "bool", - ValueList = "true|false", - DefaultValue = "false" - }, - new() - { - Name = "ChildContent", - Description = "Subassembly", - Type = "RenderFragment", - ValueList = " — ", - DefaultValue = " — " - }, - new() - { - Name = "ZIndex", - Description = "sets the z-order", - Type = "int?", - ValueList = " — ", - DefaultValue = " — " - }, - new() - { - Name = nameof(Drawer.OnCloseAsync), - Description = "The callback when close drawer", - Type = "Func", - ValueList = " — ", - DefaultValue = " — " - } - ]; } diff --git a/src/BootstrapBlazor.Server/Components/Samples/DropdownWidgets.razor.cs b/src/BootstrapBlazor.Server/Components/Samples/DropdownWidgets.razor.cs index f8bcc384a10..c82cbad4880 100644 --- a/src/BootstrapBlazor.Server/Components/Samples/DropdownWidgets.razor.cs +++ b/src/BootstrapBlazor.Server/Components/Samples/DropdownWidgets.razor.cs @@ -17,88 +17,4 @@ private Task OnItemCloseAsync(DropdownWidgetItem item) _logger.Log($"Item {item.BadgeNumber} closed"); return Task.CompletedTask; } - - private AttributeItem[] GetAttributes() => - [ - new() - { - Name = "Icon", - Description = Localizer["Icon"], - Type = "string", - ValueList = " — ", - DefaultValue = "fa-regular fa-bell" - }, - new() - { - Name = "BadgeColor", - Description = Localizer["BadgeColor"], - Type = "Color", - ValueList = " — ", - DefaultValue = "Success" - }, - new() - { - Name = "HeaderColor", - Description = Localizer["HeaderColor"], - Type = "Color", - ValueList = "Primary / Secondary / Info / Warning / Danger ", - DefaultValue = "Primary" - }, - new() - { - Name = "BadgeNumber", - Description = Localizer["BadgeNumber"], - Type = "string", - ValueList = " — ", - DefaultValue = " — " - }, - new() - { - Name = "ShowArrow", - Description = Localizer["ShowArrow"], - Type = "boolean", - ValueList = "true/false", - DefaultValue = "true" - }, - new() - { - Name = "MenuAlignment", - Description = Localizer["MenuAlignment"], - Type = "Alignment", - ValueList = "None / Left / Center / Right ", - DefaultValue = " — " - }, - new() - { - Name = "HeaderTemplate", - Description = Localizer["HeaderTemplate"], - Type = "RenderFragment", - ValueList = " — ", - DefaultValue = " — " - }, - new() - { - Name = "BodyTemplate", - Description = Localizer["BodyTemplate"], - Type = "RenderFragment", - ValueList = " — ", - DefaultValue = " — " - }, - new() - { - Name = "FooterTemplate", - Description = Localizer["FooterTemplate"], - Type = "RenderFragment", - ValueList = " — ", - DefaultValue = " — " - }, - new() - { - Name = "OnItemCloseAsync", - Description = Localizer["OnItemCloseAsync"], - Type = "Func", - ValueList = " — ", - DefaultValue = " — " - } - ]; } diff --git a/src/BootstrapBlazor.Server/Components/Samples/Dropdowns.razor.cs b/src/BootstrapBlazor.Server/Components/Samples/Dropdowns.razor.cs index 03b097dccd0..e02908a9aa2 100644 --- a/src/BootstrapBlazor.Server/Components/Samples/Dropdowns.razor.cs +++ b/src/BootstrapBlazor.Server/Components/Samples/Dropdowns.razor.cs @@ -165,117 +165,6 @@ private async Task OnIsAsyncClick() private Task OnClickAction(string actionName) => ToastService.Information("Custom Action", $"Trigger {actionName}"); - /// - /// GetAttributes - /// - /// - private AttributeItem[] GetAttributes() => - [ - new() - { - Name = "Value", - Description = Localizer["AttributeValue"], - Type = "TValue", - ValueList = " — ", - DefaultValue = " — " - }, - new() - { - Name = "Class", - Description = Localizer["AttributeClass"], - Type = "string", - ValueList = " — ", - DefaultValue = " — " - }, - new() { - Name = "Color", - Description = Localizer["AttributeColor"], - Type = "Color", - ValueList = "Primary / Secondary / Info / Warning / Danger ", - DefaultValue = " — " - }, - new() - { - Name = "Direction", - Description = Localizer["AttributeDirection"], - Type = "Direction", - ValueList = "Dropup / Dropright / Dropleft", - DefaultValue = " None " - }, - new() - { - Name = "Items", - Description = Localizer["AttributeItems"], - Type = "list", - ValueList = " — ", - DefaultValue = " — " - }, - new() - { - Name = "MenuAlignment", - Description = Localizer["AttributeMenuAlignment"], - Type = "Alignment", - ValueList = "None / Left / Center / Right ", - DefaultValue = " — " - }, - new() - { - Name = "MenuItem", - Description = Localizer["AttributeMenuItem"], - Type = "string", - ValueList = "button / a ", - DefaultValue = " a " - }, - new() - { - Name = "Responsive", - Description = Localizer["AttributeResponsive"], - Type = "string", - ValueList = "dropdown-menu / dropdown-menu-end / dropdown-menu-{lg | md | sm }-{right | left}", - DefaultValue = " — " - }, - new() - { - Name = "ShowSplit", - Description = Localizer["AttributeShowSplit"], - Type = "bool", - ValueList = "true / false ", - DefaultValue = " false " - }, - new() - { - Name = "IsAsync", - Description = Localizer["AttributeIsAsync"], - Type = "boolean", - ValueList = " — ", - DefaultValue = "false" - }, - new() - { - Name = "Size", - Description = Localizer["AttributeSize"], - Type = "Size", - ValueList = "None / ExtraSmall / Small / Medium / Large / ExtraLarge / ExtraExtraLarge", - DefaultValue = "None" - }, - new() - { - Name = "TagName", - Description = Localizer["AttributeTagName"], - Type = "string", - ValueList = " a / button ", - DefaultValue = " — " - }, - new() - { - Name = nameof(Dropdown.FixedButtonText), - Description = Localizer["FixedButtonText"], - Type = "string", - ValueList = " — ", - DefaultValue = " — " - } - ]; - /// /// GetEvents /// diff --git a/src/BootstrapBlazor.Server/Components/Samples/EditDialogs.razor.cs b/src/BootstrapBlazor.Server/Components/Samples/EditDialogs.razor.cs index 6e3faa58c61..29f804777ea 100644 --- a/src/BootstrapBlazor.Server/Components/Samples/EditDialogs.razor.cs +++ b/src/BootstrapBlazor.Server/Components/Samples/EditDialogs.razor.cs @@ -123,92 +123,4 @@ private async Task NormalShowAlignDialog() await DialogService.ShowEditDialog(option); } - - /// - /// get property method - /// - /// - private static AttributeItem[] GetAttributes() => - [ - new() - { - Name = "ShowLabel", - Description = "Whether to show labels", - Type = "bool", - ValueList = "true|false", - DefaultValue = "true" - }, - new() - { - Name = "Model", - Description = "Generic parameters are used to render the UI", - Type = "TModel", - ValueList = " — ", - DefaultValue = " — " - }, - new() - { - Name = "Items", - Description = "Edit item collection", - Type = "IEnumerable", - ValueList = " — ", - DefaultValue = " — " - }, - new() - { - Name = "DialogBodyTemplate", - Description = "EditDialog Body template", - Type = "RenderFragment", - ValueList = " — ", - DefaultValue = " — " - }, - new() - { - Name = "CloseButtonText", - Description = "Close button text", - Type = "string", - ValueList = " — ", - DefaultValue = "closure" - }, - new() - { - Name = "SaveButtonText", - Description = "Save button text", - Type = "string", - ValueList = " — ", - DefaultValue = "save" - }, - new() - { - Name = "OnSaveAsync", - Description = "Save callback delegate", - Type = "Func", - ValueList = " — ", - DefaultValue = " — " - }, - new() - { - Name = "ItemsPerRow", - Description = "Displays the number of components per line", - Type = "int?", - ValueList = " — ", - DefaultValue = " — " - }, - new() - { - Name = "RowType", - Description = "Set the component layout", - Type = "RowType", - ValueList = "Row|Inline", - DefaultValue = "Row" - }, - new() - { - Name = "LabelAlign", - Description = "Inline Label alignment in layout mode", - Type = "Alignment", - ValueList = "None|Left|Center|Right", - DefaultValue = "None" - } - ]; } diff --git a/src/BootstrapBlazor.Server/Components/Samples/EditorForms.razor.cs b/src/BootstrapBlazor.Server/Components/Samples/EditorForms.razor.cs index ccaac6089fd..71d7fc9ffdd 100644 --- a/src/BootstrapBlazor.Server/Components/Samples/EditorForms.razor.cs +++ b/src/BootstrapBlazor.Server/Components/Samples/EditorForms.razor.cs @@ -55,98 +55,6 @@ protected override void OnInitialized() [NotNull] private Foo? ValidateModel { get; set; } - private AttributeItem[] GetAttributes() => - [ - new() - { - Name = "Model", - Description = Localizer["Att1"], - Type = "TModel", - ValueList = " — ", - DefaultValue = " — " - }, - new() - { - Name = "FieldItems", - Description = Localizer["Att2"], - Type = "RenderFragment", - ValueList = " — ", - DefaultValue = " — " - }, - new() - { - Name = "Buttons", - Description = Localizer["Att3"], - Type = "RenderFragment", - ValueList = " — ", - DefaultValue = " — " - }, - new() - { - Name = nameof(EditorForm.IsDisplay), - Description = Localizer["IsDisplay"], - Type = "bool", - ValueList = "true/false", - DefaultValue = "false" - }, - new() - { - Name = "ShowLabel", - Description = Localizer["Att4"], - Type = "bool", - ValueList = "true/false", - DefaultValue = "true" - }, - new() - { - Name = "ShowLabelTooltip", - Description = Localizer["ShowLabelTooltip"], - Type = "bool?", - ValueList = "true/false/null", - DefaultValue = "null" - }, - new() - { - Name = "AutoGenerateAllItem", - Description = Localizer["Att5"], - Type = "bool", - ValueList = "true/false", - DefaultValue = "true" - }, - new() - { - Name = "ItemsPerRow", - Description = Localizer["Att6"], - Type = "int?", - ValueList = " — ", - DefaultValue = " — " - }, - new() - { - Name = "RowType", - Description = Localizer["Att7"], - Type = "RowType", - ValueList = "Row|Inline", - DefaultValue = "Row" - }, - new() - { - Name = "LabelAlign", - Description = Localizer["Att8"], - Type = "Alignment", - ValueList = "None|Left|Center|Right", - DefaultValue = "None" - }, - new() - { - Name = "LabelWidth", - Description = Localizer["LabelWidthAttr"], - Type = "int?", - ValueList = " — ", - DefaultValue = " — " - } - ]; - private List GetEditorItemAttributes() => [ new() diff --git a/src/BootstrapBlazor.Server/Components/Samples/Editors.razor.cs b/src/BootstrapBlazor.Server/Components/Samples/Editors.razor.cs index 2c340824e87..d4f9c749de5 100644 --- a/src/BootstrapBlazor.Server/Components/Samples/Editors.razor.cs +++ b/src/BootstrapBlazor.Server/Components/Samples/Editors.razor.cs @@ -128,64 +128,4 @@ private async Task OnGetCode() { _editorCode = await Editor.GetCode(); } - - private AttributeItem[] GetAttributes() => - [ - new() - { - Name = "Placeholder", - Description = Localizer["Att1"], - Type = "string", - ValueList = " — ", - DefaultValue = Localizer["Att1DefaultValue"]! - }, - new() - { - Name = "IsEditor", - Description = Localizer["Att2"], - Type = "bool", - ValueList = "true|false", - DefaultValue = "false" - }, - new() - { - Name = "ShowSubmit", - Description = Localizer["AttrShowSubmit"], - Type = "bool", - ValueList = "true|false", - DefaultValue = "true" - }, - new() - { - Name = "Height", - Description = Localizer["Att3"], - Type = "int", - ValueList = " — ", - DefaultValue = " — " - }, - new() - { - Name = "ToolbarItems", - Description = Localizer["Att4"], - Type = "IEnumerable", - ValueList = " — ", - DefaultValue = " — " - }, - new() - { - Name = "CustomerToolbarButtons", - Description = Localizer["Att5"], - Type = "IEnumerable", - ValueList = " — ", - DefaultValue = " — " - }, - new() - { - Name = "OnFileUpload", - Description = Localizer["OnFileUploadAttribute"], - Type = "Func", - ValueList = " — ", - DefaultValue = " — " - } - ]; } diff --git a/src/BootstrapBlazor.Server/Components/Samples/Empties.razor.cs b/src/BootstrapBlazor.Server/Components/Samples/Empties.razor.cs index ea17edcc852..ee273af6d0c 100644 --- a/src/BootstrapBlazor.Server/Components/Samples/Empties.razor.cs +++ b/src/BootstrapBlazor.Server/Components/Samples/Empties.razor.cs @@ -10,59 +10,4 @@ namespace BootstrapBlazor.Server.Components.Samples; /// public partial class Empties { - /// - /// 获得属性方法 - /// - /// - private AttributeItem[] GetAttributes() => - [ - new() - { - Name = "Image", - Description = Localizer["Image"], - Type = "string", - ValueList = " — ", - DefaultValue = " — " - }, - new() - { - Name = "Text", - Description = Localizer["Text"], - Type = "string", - ValueList = " — ", - DefaultValue = Localizer["TextDefaultValue"] - }, - new() - { - Name = "Width", - Description = Localizer["Width"], - Type = "string", - ValueList = " — ", - DefaultValue = " 100 " - }, - new() - { - Name = "Height", - Description = Localizer["Height"], - Type = "string", - ValueList = " — ", - DefaultValue = " 100 " - }, - new() - { - Name = "Template", - Description = Localizer["Template"], - Type = "RenderFragment", - ValueList = " — ", - DefaultValue = " — " - }, - new() - { - Name = "ChildContent", - Description = Localizer["ChildContent"], - Type = "RenderFragment", - ValueList = " — ", - DefaultValue = " — " - } - ]; } diff --git a/src/BootstrapBlazor.Server/Components/Samples/ExportPdfButtons.razor.cs b/src/BootstrapBlazor.Server/Components/Samples/ExportPdfButtons.razor.cs index f032a2c6f5c..bce910c0b57 100644 --- a/src/BootstrapBlazor.Server/Components/Samples/ExportPdfButtons.razor.cs +++ b/src/BootstrapBlazor.Server/Components/Samples/ExportPdfButtons.razor.cs @@ -47,80 +47,4 @@ protected override void OnInitialized() Hobbies = Foo.GenerateHobbies(FooLocalizer); Model = Foo.Generate(FooLocalizer); } - - private AttributeItem[] GetAttributes() => - [ - new() - { - Name = nameof(ExportPdfButton.ElementId), - Description = Localizer["AttributeElementId"], - Type = "string?", - ValueList = " — ", - DefaultValue = " — " - }, - new() - { - Name = nameof(ExportPdfButton.Selector), - Description = Localizer["AttributeSelector"], - Type = "string?", - ValueList = " — ", - DefaultValue = " — " - }, - new() - { - Name = nameof(ExportPdfButton.StyleTags), - Description = Localizer["AttributeStyleTags"], - Type = "List", - ValueList = " — ", - DefaultValue = " — " - }, - new() - { - Name = nameof(ExportPdfButton.ScriptTags), - Description = Localizer["AttributeScriptTags"], - Type = "List", - ValueList = " — ", - DefaultValue = " — " - }, - new() - { - Name = nameof(ExportPdfButton.FileName), - Description = Localizer["AttributePdfFileName"], - Type = "string?", - ValueList = " — ", - DefaultValue = " — " - }, - new() - { - Name = nameof(ExportPdfButton.AutoDownload), - Description = Localizer["AttributeAutoDownload"], - Type = "bool", - ValueList = "true|false", - DefaultValue = "true" - }, - new() - { - Name = nameof(ExportPdfButton.OnBeforeExport), - Description = Localizer["AttributeOnBeforeExport"], - Type = "Func?", - ValueList = " — ", - DefaultValue = " — " - }, - new() - { - Name = nameof(ExportPdfButton.OnBeforeDownload), - Description = Localizer["AttributeOnBeforeDownload"], - Type = "Func?", - ValueList = " — ", - DefaultValue = " — " - }, - new() - { - Name = nameof(ExportPdfButton.OnAfterDownload), - Description = Localizer["AttributeOnAfterDownload"], - Type = "Func?", - ValueList = " — ", - DefaultValue = " — " - } - ]; } diff --git a/src/BootstrapBlazor.Server/Components/Samples/FileIcons.razor.cs b/src/BootstrapBlazor.Server/Components/Samples/FileIcons.razor.cs index c35de94d8b2..3e0f7a5c5a1 100644 --- a/src/BootstrapBlazor.Server/Components/Samples/FileIcons.razor.cs +++ b/src/BootstrapBlazor.Server/Components/Samples/FileIcons.razor.cs @@ -13,32 +13,4 @@ public partial class FileIcons [Inject] [NotNull] private IStringLocalizer? Localizer { get; set; } - - private AttributeItem[] GetAttributes() => - [ - new() - { - Name = nameof(FileIcon.Extension), - Description = Localizer["ExtensionAttr"], - Type = "string", - ValueList = " — ", - DefaultValue = " — " - }, - new() - { - Name = nameof(FileIcon.IconColor), - Description = Localizer["IconColorAttr"].Value, - Type = "Color", - ValueList = " — ", - DefaultValue = "Primary" - }, - new() - { - Name = nameof(FileIcon.BackgroundTemplate), - Description = Localizer["BackgroundTemplateAttr"].Value, - Type = "RenderFragment", - ValueList = " — ", - DefaultValue = " — " - } - ]; } diff --git a/src/BootstrapBlazor.Server/Components/Samples/FileViewers.razor.cs b/src/BootstrapBlazor.Server/Components/Samples/FileViewers.razor.cs index 874134a6ba1..8a2053c5efa 100644 --- a/src/BootstrapBlazor.Server/Components/Samples/FileViewers.razor.cs +++ b/src/BootstrapBlazor.Server/Components/Samples/FileViewers.razor.cs @@ -68,100 +68,4 @@ private async Task Apply() { await fileViewer.Reload(CombineFilename(Url)); } - - /// - /// GetAttributes - /// - /// - private static AttributeItem[] GetAttributes() => - [ - new() - { - Name = nameof(FileViewer.Filename), - Description = "Excel/Word 文件路径或者URL", - Type = "string", - ValueList = " — ", - DefaultValue = " — " - }, - new() - { - Name = nameof(FileViewer.Width), - Description = "宽度", - Type = "string", - ValueList = "-", - DefaultValue = "100%" - }, - new() - { - Name = nameof(FileViewer.Height), - Description = "高度", - Type = "string", - ValueList = " — ", - DefaultValue = "700px" - }, - new() - { - Name = nameof(FileViewer.StyleString), - Description = "组件外观 Css Style", - Type = "string", - ValueList = "-", - DefaultValue = "-" - }, - new() - { - Name = nameof(FileViewer.Html), - Description = "设置 Html 直接渲染", - Type = "string", - ValueList = "-", - DefaultValue = "-" - }, - new() - { - Name = nameof(FileViewer.Stream), - Description = "用于渲染的文件流,为空则用Filename参数读取文件", - Type = "Stream", - ValueList = "-", - DefaultValue = "-" - }, - new() - { - Name = nameof(FileViewer.IsExcel), - Description = "文件流模式需要指定是否 Excel", - Type = "bool", - ValueList = "true|false", - DefaultValue = "false" - }, - new() - { - Name = nameof(FileViewer.NoDataString), - Description = "无数据提示文本", - Type = "string", - ValueList = "-", - DefaultValue = "无数据" - }, - new() - { - Name = nameof(FileViewer.LoadingString), - Description = "载入中提示文本", - Type = "string", - ValueList = "-", - DefaultValue = "载入中..." - }, - new() - { - Name = "Reload(string filename)", - Description = "重新载入文件方法", - Type = "async Task", - ValueList = " — ", - DefaultValue = " — " - }, - new() - { - Name = "Refresh()", - Description = "刷新方法", - Type = "async Task", - ValueList = " — ", - DefaultValue = " — " - } - ]; } diff --git a/src/BootstrapBlazor.Server/Components/Samples/FlipClocks.razor.cs b/src/BootstrapBlazor.Server/Components/Samples/FlipClocks.razor.cs index b46e61fd54b..226823894d3 100644 --- a/src/BootstrapBlazor.Server/Components/Samples/FlipClocks.razor.cs +++ b/src/BootstrapBlazor.Server/Components/Samples/FlipClocks.razor.cs @@ -49,164 +49,4 @@ private Task OnCompletedAsync() StateHasChanged(); return Task.CompletedTask; } - - /// - /// GetAttributes - /// - /// - private AttributeItem[] GetAttributes() => - [ - new() - { - Name = nameof(FlipClock.ShowYear), - Description = Localizer["ShowYear_Description"], - Type = "boolean", - ValueList = "true|false", - DefaultValue = "false" - }, - new() - { - Name = nameof(FlipClock.ShowMonth), - Description = Localizer["ShowMonth_Description"], - Type = "boolean", - ValueList = "true|false", - DefaultValue = "false" - }, - new() - { - Name = nameof(FlipClock.ShowDay), - Description = Localizer["ShowDay_Description"], - Type = "boolean", - ValueList = "true|false", - DefaultValue = "false" - }, - new() - { - Name = nameof(FlipClock.ShowHour), - Description = Localizer["ShowHour_Description"], - Type = "boolean", - ValueList = "true|false", - DefaultValue = "true" - }, - new() - { - Name = nameof(FlipClock.ShowMinute), - Description = Localizer["ShowMinute_Description"], - Type = "boolean", - ValueList = "true|false", - DefaultValue = "true" - }, - new() - { - Name = nameof(FlipClock.ViewMode), - Description = Localizer["ViewMode_Description"], - Type = "FlipClockViewMode", - ValueList = "DateTime|Count|CountDown", - DefaultValue = "DateTime" - }, - new() - { - Name = nameof(FlipClock.StartValue), - Description = Localizer["StartValue_Description"], - Type = "TimeSpan", - ValueList = " — ", - DefaultValue = " — " - }, - new() - { - Name = nameof(FlipClock.OnCompletedAsync), - Description = Localizer["OnCompletedAsync_Description"], - Type = "Func", - ValueList = " — ", - DefaultValue = " — " - }, - new() - { - Name = nameof(FlipClock.Height), - Description = Localizer["Height_Description"], - Type = "string?", - ValueList = " — ", - DefaultValue = " — " - }, - new() - { - Name = nameof(FlipClock.BackgroundColor), - Description = Localizer["BackgroundColor_Description"], - Type = "string?", - ValueList = " — ", - DefaultValue = " — " - }, - new() - { - Name = nameof(FlipClock.FontSize), - Description = Localizer["FontSize_Description"], - Type = "string?", - ValueList = " — ", - DefaultValue = " — " - }, - new() - { - Name = nameof(FlipClock.CardWidth), - Description = Localizer["CardWidth_Description"], - Type = "string?", - ValueList = " — ", - DefaultValue = " — " - }, - new() - { - Name = nameof(FlipClock.CardHeight), - Description = Localizer["CardHeight_Description"], - Type = "string?", - ValueList = " — ", - DefaultValue = " — " - }, - new() - { - Name = nameof(FlipClock.CardColor), - Description = Localizer["CardColor_Description"], - Type = "string?", - ValueList = " — ", - DefaultValue = " — " - }, - new() - { - Name = nameof(FlipClock.CardBackgroundColor), - Description = Localizer["CardBackgroundColor_Description"], - Type = "string?", - ValueList = " — ", - DefaultValue = " — " - }, - new() - { - Name = nameof(FlipClock.CardDividerHeight), - Description = Localizer["CardDividerHeight_Description"], - Type = "string?", - ValueList = " — ", - DefaultValue = " — " - }, - new() - { - Name = nameof(FlipClock.CardDividerColor), - Description = Localizer["CardDividerColor_Description"], - Type = "string?", - ValueList = " — ", - DefaultValue = " — " - }, - new() - { - Name = nameof(FlipClock.CardMargin), - Description = Localizer["CardMargin_Description"], - Type = "string?", - ValueList = " — ", - DefaultValue = " — " - }, - new() - { - Name = nameof(FlipClock.CardGroupMargin), - Description = Localizer["CardGroupMargin_Description"], - Type = "string?", - ValueList = " — ", - DefaultValue = " — " - } - ]; } diff --git a/src/BootstrapBlazor.Server/Components/Samples/FloatingLabels.razor.cs b/src/BootstrapBlazor.Server/Components/Samples/FloatingLabels.razor.cs index 6d8777f8327..02381f2e043 100644 --- a/src/BootstrapBlazor.Server/Components/Samples/FloatingLabels.razor.cs +++ b/src/BootstrapBlazor.Server/Components/Samples/FloatingLabels.razor.cs @@ -36,72 +36,4 @@ protected override void OnInitialized() BindValueModel = new Foo() { Name = Localizer["FloatingLabelsTestName"] }; FormatStringModel = new Foo() { Name = Localizer["FloatingLabelsTestName"] }; } - - private AttributeItem[] GetAttributes() => - [ - new() - { - Name = "ChildContent", - Description = Localizer["FloatingLabelsChildContent"].Value, - Type = "RenderFragment", - ValueList = " — ", - DefaultValue = " — " - }, - new() - { - Name = "ShowLabel", - Description = Localizer["FloatingLabelsShowLabel"].Value, - Type = "bool", - ValueList = "true|false", - DefaultValue = "false" - }, - new() - { - Name = nameof(FloatingLabel.IsGroupBox), - Description = Localizer["FloatingLabelsGroupBox"].Value, - Type = "bool", - ValueList = "true|false", - DefaultValue = "false" - }, - new() - { - Name = "DisplayText", - Description = Localizer["FloatingLabelsDisplayText"].Value, - Type = "string", - ValueList = " — ", - DefaultValue = " — " - }, - new() - { - Name = "FormatString", - Description = Localizer["FloatingLabelsFormatString"].Value, - Type = "string", - ValueList = " — ", - DefaultValue = " — " - }, - new() - { - Name = "Formatter", - Description = Localizer["FloatingLabelsFormatter"].Value, - Type = "RenderFragment", - ValueList = " — ", - DefaultValue = " — " - }, - new() - { - Name = "type", - Description = Localizer["FloatingLabelsType"].Value, - Type = "string", - ValueList = "text / number / email / url / password", - DefaultValue = "text" - }, - new() - { - Name = "IsDisabled", - Description = Localizer["FloatingLabelsIsDisabled"].Value, - Type = "bool", - ValueList = "true|false", - DefaultValue = "false" - } - ]; } diff --git a/src/BootstrapBlazor.Server/Components/Samples/Footers.razor.cs b/src/BootstrapBlazor.Server/Components/Samples/Footers.razor.cs index d5636609199..0af5062643a 100644 --- a/src/BootstrapBlazor.Server/Components/Samples/Footers.razor.cs +++ b/src/BootstrapBlazor.Server/Components/Samples/Footers.razor.cs @@ -10,39 +10,4 @@ namespace BootstrapBlazor.Server.Components.Samples; /// public sealed partial class Footers { - private AttributeItem[] GetAttributes() => - [ - new() - { - Name = "Text", - Description = Localizer["Desc1"], - Type = "string", - ValueList = " — ", - DefaultValue = " — " - }, - new() - { - Name = "Target", - Description = Localizer["Desc2"], - Type = "string", - ValueList = " — ", - DefaultValue = " — " - }, - new() - { - Name = nameof(Footer.ShowGoto), - Description = Localizer["ShowGotoDesc"], - Type = "string", - ValueList = " — ", - DefaultValue = " — " - }, - new() - { - Name = nameof(Footer.ChildContent), - Description = Localizer["ChildContentDesc"], - Type = "string", - ValueList = " — ", - DefaultValue = " — " - } - ]; } diff --git a/src/BootstrapBlazor.Server/Components/Samples/FullScreenButtons.razor.cs b/src/BootstrapBlazor.Server/Components/Samples/FullScreenButtons.razor.cs index ed92f4139d7..1d4da598516 100644 --- a/src/BootstrapBlazor.Server/Components/Samples/FullScreenButtons.razor.cs +++ b/src/BootstrapBlazor.Server/Components/Samples/FullScreenButtons.razor.cs @@ -10,43 +10,4 @@ namespace BootstrapBlazor.Server.Components.Samples; /// public partial class FullScreenButtons { - /// - /// GetAttributes - /// - /// - private static AttributeItem[] GetAttributes() => - [ - new() - { - Name = nameof(FullScreenButton.Icon), - Description = "全屏图标", - Type = "string", - ValueList = " — ", - DefaultValue = " — " - }, - new() - { - Name = nameof(FullScreenButton.FullScreenExitIcon), - Description = "退出全屏图标", - Type = "string", - ValueList = " — ", - DefaultValue = " — " - }, - new() - { - Name = nameof(FullScreenButton.TargetId), - Description = "全屏元素 Id", - Type = "string", - ValueList = " — ", - DefaultValue = " — " - }, - new() - { - Name = nameof(FullScreenButton.Text), - Description = "显示文字", - Type = "string", - ValueList = " — ", - DefaultValue = " — " - } - ]; } diff --git a/src/BootstrapBlazor.Server/Components/Samples/GlobalException.razor.cs b/src/BootstrapBlazor.Server/Components/Samples/GlobalException.razor.cs index e2399a87d1f..6f5914f660d 100644 --- a/src/BootstrapBlazor.Server/Components/Samples/GlobalException.razor.cs +++ b/src/BootstrapBlazor.Server/Components/Samples/GlobalException.razor.cs @@ -47,36 +47,4 @@ private Task OnGotoPage() NavigationManager.NavigateTo("/error-page"); return Task.CompletedTask; } - - /// - /// 获得属性方法 - /// - /// - private static AttributeItem[] GetAttributes() => - [ - new() - { - Name = nameof(ErrorLogger.ChildContent), - Description = "子组件模板", - Type = nameof(RenderTemplate), - ValueList = " — ", - DefaultValue = " — " - }, - new() - { - Name = nameof(ErrorLogger.ErrorContent), - Description = "异常显示模板", - Type = nameof(RenderTemplate), - ValueList = " — ", - DefaultValue = " — " - }, - new() - { - Name = nameof(ErrorLogger.ShowToast), - Description = "是否显示错误消息弹窗", - Type = "bool", - ValueList = "true|false", - DefaultValue = "true" - } - ]; } diff --git a/src/BootstrapBlazor.Server/Components/Samples/GoTops.razor.cs b/src/BootstrapBlazor.Server/Components/Samples/GoTops.razor.cs index 1974876f708..92243aff71d 100644 --- a/src/BootstrapBlazor.Server/Components/Samples/GoTops.razor.cs +++ b/src/BootstrapBlazor.Server/Components/Samples/GoTops.razor.cs @@ -10,15 +10,4 @@ namespace BootstrapBlazor.Server.Components.Samples; /// public sealed partial class GoTops { - private AttributeItem[] GetAttributes() => - [ - new() - { - Name = "Target", - Description = Localizer["Desc1"], - Type = "string", - ValueList = " — ", - DefaultValue = " — " - } - ]; } diff --git a/src/BootstrapBlazor.Server/Components/Samples/GroupBoxes.razor.cs b/src/BootstrapBlazor.Server/Components/Samples/GroupBoxes.razor.cs index f6c49d0db0c..4c4ad141155 100644 --- a/src/BootstrapBlazor.Server/Components/Samples/GroupBoxes.razor.cs +++ b/src/BootstrapBlazor.Server/Components/Samples/GroupBoxes.razor.cs @@ -10,15 +10,4 @@ namespace BootstrapBlazor.Server.Components.Samples; /// public sealed partial class GroupBoxes { - private AttributeItem[] GetAttributes() => - [ - new() - { - Name = "Title", - Description = Localizer["AttTitle"], - Type = "string", - ValueList = " — ", - DefaultValue = " — " - } - ]; } diff --git a/src/BootstrapBlazor.Server/Components/Samples/Handwrittens.razor.cs b/src/BootstrapBlazor.Server/Components/Samples/Handwrittens.razor.cs index 9a4cb364caf..83a4e89e109 100644 --- a/src/BootstrapBlazor.Server/Components/Samples/Handwrittens.razor.cs +++ b/src/BootstrapBlazor.Server/Components/Samples/Handwrittens.razor.cs @@ -14,40 +14,4 @@ public sealed partial class Handwrittens /// 签名Base64 /// public string? DrawBase64 { get; set; } - - private AttributeItem[] GetAttributes() => - [ - new() - { - Name = "SaveButtonText", - Description = Localizer["SaveButtonText"], - Type = "string", - ValueList = " — ", - DefaultValue = Localizer["SaveButtonTextDefaultValue"] - }, - new() - { - Name = "ClearButtonText", - Description = Localizer["ClearButtonText"], - Type = "string", - ValueList = " — ", - DefaultValue = Localizer["ClearButtonTextDefaultValue"] - }, - new() - { - Name = "Result", - Description = Localizer["Result"], - Type = "string", - ValueList = " — ", - DefaultValue = " — " - }, - new() - { - Name = "HandwrittenBase64", - Description = Localizer["HandwrittenBase64"], - Type = "EventCallback", - ValueList = " — ", - DefaultValue = " — " - } - ]; } diff --git a/src/BootstrapBlazor.Server/Components/Samples/IFrames.razor.cs b/src/BootstrapBlazor.Server/Components/Samples/IFrames.razor.cs index 45fc30991c9..65de84dff81 100644 --- a/src/BootstrapBlazor.Server/Components/Samples/IFrames.razor.cs +++ b/src/BootstrapBlazor.Server/Components/Samples/IFrames.razor.cs @@ -10,31 +10,4 @@ namespace BootstrapBlazor.Server.Components.Samples; /// public partial class IFrames { - private AttributeItem[] GetAttributes() => - [ - new() - { - Name = "Src", - Description = Localizer["AttributeSrc"], - Type = "string", - ValueList = " — ", - DefaultValue = " — " - }, - new() - { - Name = "Data", - Description = Localizer["AttributeData"], - Type = "object", - ValueList = " — ", - DefaultValue = " — " - }, - new() - { - Name = "OnPostDataAsync", - Description = Localizer["AttributeOnPostDataAsync"], - Type = "Func", - ValueList = " — ", - DefaultValue = " — " - } - ]; } diff --git a/src/BootstrapBlazor.Server/Components/Samples/ImageCroppers.razor.cs b/src/BootstrapBlazor.Server/Components/Samples/ImageCroppers.razor.cs index f4a4c06f484..46cd487dd15 100644 --- a/src/BootstrapBlazor.Server/Components/Samples/ImageCroppers.razor.cs +++ b/src/BootstrapBlazor.Server/Components/Samples/ImageCroppers.razor.cs @@ -65,48 +65,4 @@ private Task OnCropChangedAsync(ImageCropperData data) StateHasChanged(); return Task.CompletedTask; } - - private AttributeItem[] GetAttributes() => - [ - new() - { - Name = "Url", - Description = Localizer["AttributesImageCropperUrl"], - Type = "string?", - ValueList = "-", - DefaultValue = "-" - }, - new() - { - Name = "IsDisabled", - Description = Localizer["AttributesImageCropperIsDisabled"], - Type = "bool", - ValueList = "true|false", - DefaultValue = "false" - }, - new() - { - Name = "OnCropAsync", - Description = Localizer["AttributesImageCropperOnCropAsync"], - Type = "Func", - ValueList = "-", - DefaultValue = "-" - }, - new() - { - Name = "Options", - Description = Localizer["AttributesImageCropperOptions"], - Type = "ImageCropperOption", - ValueList = "-", - DefaultValue = "-" - }, - new() - { - Name = "CropperShape", - Description = Localizer["AttributesImageCropperShape"], - Type = "ImageCropperShape", - ValueList = "-", - DefaultValue = "-" - } - ]; } diff --git a/src/BootstrapBlazor.Server/Components/Samples/ImageViewers.razor.cs b/src/BootstrapBlazor.Server/Components/Samples/ImageViewers.razor.cs index 3fa7c227027..2b69a5a0529 100644 --- a/src/BootstrapBlazor.Server/Components/Samples/ImageViewers.razor.cs +++ b/src/BootstrapBlazor.Server/Components/Samples/ImageViewers.razor.cs @@ -30,92 +30,4 @@ protected override void OnInitialized() $"{WebsiteOption.Value.AssetRootPath}images/ImageList2.jpeg" ]); } - - private AttributeItem[] GetAttributes() => - [ - new() { - Name = nameof(ImageViewer.Url), - Description = Localizer["ImageViewersAttrUrl"], - Type = "string", - ValueList = " — ", - DefaultValue = " — " - }, - new() { - Name = nameof(ImageViewer.Alt), - Description = Localizer["ImageViewersAttrAlt"], - Type = "string", - ValueList = " — ", - DefaultValue = " — " - }, - new() { - Name = nameof(ImageViewer.ShowPlaceHolder), - Description = Localizer["ImageViewersAttrShowPlaceHolder"], - Type = "bool", - ValueList = "true|false", - DefaultValue = "false" - }, - new() { - Name = nameof(ImageViewer.HandleError), - Description = Localizer["ImageViewersAttrHandleError"], - Type = "bool", - ValueList = "true|false", - DefaultValue = "false" - }, - new() { - Name = nameof(ImageViewer.PlaceHolderTemplate), - Description = Localizer["ImageViewersAttrPlaceHolderTemplate"], - Type = "RenderFragment", - ValueList = "true|false", - DefaultValue = "false" - }, - new() { - Name = nameof(ImageViewer.ErrorTemplate), - Description = Localizer["ImageViewersAttrErrorTemplate"], - Type = "RenderFragment", - ValueList = "true|false", - DefaultValue = "false" - }, - new() { - Name = nameof(ImageViewer.FitMode), - Description = Localizer["ImageViewersAttrFitMode"], - Type = "ObjectFitMode", - ValueList = "fill|contain|cover|none|scale-down", - DefaultValue = "fill" - }, - new() { - Name = nameof(ImageViewer.ZIndex), - Description = Localizer["ImageViewersAttrZIndex"], - Type = "int", - ValueList = " — ", - DefaultValue = "2050" - }, - new() { - Name = nameof(ImageViewer.PreviewList), - Description = Localizer["ImageViewersAttrPreviewList"], - Type = "List", - ValueList = " — ", - DefaultValue = " — " - }, - new() { - Name = nameof(ImageViewer.IsIntersectionObserver), - Description = Localizer["ImageViewersAttrIsIntersectionObserver"], - Type = "bool", - ValueList = "true/false", - DefaultValue = "false" - }, - new() { - Name = nameof(ImageViewer.OnLoadAsync), - Description = Localizer["ImageViewersAttrOnLoadAsync"], - Type = "Func", - ValueList = " — ", - DefaultValue = " — " - }, - new() { - Name = nameof(ImageViewer.OnErrorAsync), - Description = Localizer["ImageViewersAttrOnErrorAsync"], - Type = "Func", - ValueList = " — ", - DefaultValue = " — " - } - ]; } diff --git a/src/BootstrapBlazor.Server/Components/Samples/InputNumbers.razor.cs b/src/BootstrapBlazor.Server/Components/Samples/InputNumbers.razor.cs index ce3a6665a36..a1f831f0029 100644 --- a/src/BootstrapBlazor.Server/Components/Samples/InputNumbers.razor.cs +++ b/src/BootstrapBlazor.Server/Components/Samples/InputNumbers.razor.cs @@ -56,64 +56,4 @@ public sealed partial class InputNumbers private int? BindInputNullableValue { get; set; } = 2; private int BindInputValue { get; set; } = 2; - - private AttributeItem[] GetAttributes() => - [ - new() - { - Name = "Value", - Description = Localizer["InputNumbersAtt1"], - Type = "sbyte|byte|int|long|short|float|double|decimal", - ValueList = " — ", - DefaultValue = "0" - }, - new() - { - Name = "Max", - Description = Localizer["InputNumbersAtt2"], - Type = "string", - ValueList = " — ", - DefaultValue = " — " - }, - new() - { - Name = "Min", - Description = Localizer["InputNumbersAtt3"], - Type = "string", - ValueList = " — ", - DefaultValue = " — " - }, - new() - { - Name = "Step", - Description = Localizer["InputNumbersAtt4"], - Type = "int|long|short|float|double|decimal", - ValueList = " — ", - DefaultValue = "1" - }, - new() - { - Name = "IsDisabled", - Description = Localizer["InputNumbersAtt5"], - Type = "bool", - ValueList = "true|false", - DefaultValue = "false" - }, - new() - { - Name = "ShowLabel", - Description = Localizer["InputNumbersAtt6"], - Type = "bool", - ValueList = "true|false", - DefaultValue = "false" - }, - new() - { - Name = "DisplayText", - Description = Localizer["InputNumbersAtt7"], - Type = "string", - ValueList = " — ", - DefaultValue = " — " - } - ]; } diff --git a/src/BootstrapBlazor.Server/Components/Samples/Inputs.razor.cs b/src/BootstrapBlazor.Server/Components/Samples/Inputs.razor.cs index f84707d61fa..622228883c3 100644 --- a/src/BootstrapBlazor.Server/Components/Samples/Inputs.razor.cs +++ b/src/BootstrapBlazor.Server/Components/Samples/Inputs.razor.cs @@ -79,126 +79,4 @@ private async Task OnEnterSelectAllAsync(string val) private static string DateTimeFormatter(DateTime source) => source.ToString("yyyy-MM-dd"); private static string ByteArrayFormatter(byte[] source) => Convert.ToBase64String(source); - - private AttributeItem[] GetAttributes() => - [ - new() - { - Name = "ChildContent", - Description = Localizer["InputsAtt1"], - Type = "RenderFragment", - ValueList = " — ", - DefaultValue = " — " - }, - new() - { - Name = "ShowLabel", - Description = Localizer["InputsAtt2"], - Type = "bool", - ValueList = "true|false", - DefaultValue = "false" - }, - new() - { - Name = "DisplayText", - Description = Localizer["InputsAtt3"], - Type = "string", - ValueList = " — ", - DefaultValue = " — " - }, - new() - { - Name = "Color", - Description = Localizer["InputsAtt4"], - Type = "Color", - ValueList = "Primary / Secondary / Success / Danger / Warning / Info / Dark", - DefaultValue = "Primary" - }, - new() - { - Name = "FormatString", - Description = Localizer["InputsAtt5"], - Type = "string", - ValueList = " — ", - DefaultValue = " — " - }, - new() - { - Name = "Formatter", - Description = Localizer["InputsAtt6"], - Type = "RenderFragment", - ValueList = " — ", - DefaultValue = " — " - }, - new() - { - Name = "type", - Description = Localizer["InputsAtt7"], - Type = "string", - ValueList = "text / number / email / url / password", - DefaultValue = "text" - }, - new() { - Name = "OnEnterAsync", - Description = Localizer["InputsAtt8"], - Type = "Func", - ValueList = " — ", - DefaultValue = " — " - }, - new() { - Name = "OnEscAsync", - Description = Localizer["InputsAtt9"], - Type = "Func", - ValueList = " — ", - DefaultValue = " — " - }, - new() - { - Name = "IsDisabled", - Description = Localizer["InputsAtt10"], - Type = "bool", - ValueList = "true|false", - DefaultValue = "false" - }, - new() - { - Name = "IsAutoFocus", - Description = Localizer["InputsAtt11"], - Type = "bool", - ValueList = "true|false", - DefaultValue = "false" - }, - new() - { - Name = nameof(BootstrapInput.IsSelectAllTextOnFocus), - Description = Localizer[nameof(BootstrapInput.IsSelectAllTextOnFocus)].Value, - Type = "bool", - ValueList = "true|false", - DefaultValue = "false" - }, - new() - { - Name = nameof(BootstrapInput.IsTrim), - Description = Localizer[nameof(BootstrapInput.IsTrim)].Value, - Type = "bool", - ValueList = "true|false", - DefaultValue = "false" - }, - new() - { - Name = nameof(BootstrapInput.ValidateRules), - Description = Localizer[nameof(BootstrapInput.ValidateRules)].Value, - Type = "List", - ValueList = " — ", - DefaultValue = " — " - }, - new() - { - Name = nameof(BootstrapInput.UseInputEvent), - Description = Localizer[nameof(BootstrapInput.UseInputEvent)].Value, - Type = "bool", - ValueList = "true|false", - DefaultValue = "false" - } - ]; } diff --git a/src/BootstrapBlazor.Server/Components/Samples/IntersectionObservers.razor.cs b/src/BootstrapBlazor.Server/Components/Samples/IntersectionObservers.razor.cs index 392f348c774..4df133aec30 100644 --- a/src/BootstrapBlazor.Server/Components/Samples/IntersectionObservers.razor.cs +++ b/src/BootstrapBlazor.Server/Components/Samples/IntersectionObservers.razor.cs @@ -89,64 +89,4 @@ private Task OnThresholdChanged(IntersectionObserverEntry entry) } private static string GetImageUrl(int index) => $"https://picsum.photos/160/160?random={index}"; - - private AttributeItem[] GetAttributes() => - [ - new() - { - Name = "UseElementViewport", - Description = Localizer["AttributeUseElementViewport"], - Type = "bool", - ValueList = "true|false", - DefaultValue = "false" - }, - new() - { - Name = "RootMargin", - Description = Localizer["AttributeRootMargin"], - Type = "string", - ValueList = " — ", - DefaultValue = " — " - }, - new() - { - Name = "Threshold", - Description = Localizer["AttributeThreshold"], - Type = "string?", - ValueList = "0.0 — 1.0|[]", - DefaultValue = " — " - }, - new() - { - Name = nameof(IntersectionObserver.AutoUnobserveWhenIntersection), - Description = Localizer["AttributeAutoUnobserveWhenIntersection"], - Type = "bool", - ValueList = "true|false", - DefaultValue = "true" - }, - new() - { - Name = nameof(IntersectionObserver.AutoUnobserveWhenNotIntersection), - Description = Localizer["AttributeAutoUnobserveWhenNotIntersection"], - Type = "bool", - ValueList = "true|false", - DefaultValue = "false" - }, - new() - { - Name = "OnIntersecting", - Description = Localizer["AttributeOnIntersectingAsync"], - Type = "Func", - ValueList = " — ", - DefaultValue = " — " - }, - new() - { - Name = "ChildContent", - Description = Localizer["AttributeChildContent"], - Type = "RenderFragment", - ValueList = " — ", - DefaultValue = " — " - } - ]; } diff --git a/src/BootstrapBlazor.Server/Components/Samples/Layouts.razor.cs b/src/BootstrapBlazor.Server/Components/Samples/Layouts.razor.cs index 3449d3f48ee..527287a4f8a 100644 --- a/src/BootstrapBlazor.Server/Components/Samples/Layouts.razor.cs +++ b/src/BootstrapBlazor.Server/Components/Samples/Layouts.razor.cs @@ -25,254 +25,4 @@ protected override async Task OnInitializedAsync() IconSideMenuItems1 = await MenusDataGenerator.GetIconSideMenuItemsAsync(LocalizerMenu); IconSideMenuItems2 = await MenusDataGenerator.GetIconSideMenuItemsAsync(LocalizerMenu); } - - private AttributeItem[] GetAttributes() => - [ - new() - { - Name = "Header", - Description = Localizer["Layouts_Header_Description"], - Type = "RenderFragment", - ValueList = " — ", - DefaultValue = " — " - }, - new() - { - Name = "Side", - Description = Localizer["Layouts_Side_Description"], - Type = "RenderFragment", - ValueList = " — ", - DefaultValue = " — " - }, - new() - { - Name = "SideWidth", - Description = Localizer["Layouts_SideWidth_Description"], - Type = "string", - ValueList = " — ", - DefaultValue = "300px" - }, - new() - { - Name = "Main", - Description = Localizer["Layouts_Main_Description"], - Type = "RenderFragment", - ValueList = " — ", - DefaultValue = " — " - }, - new() - { - Name = "Footer", - Description = Localizer["Layouts_Footer_Description"], - Type = "RenderFragment", - ValueList = " — ", - DefaultValue = " — " - }, - new() - { - Name = "Menus", - Description = Localizer["Layouts_Menus_Description"], - Type = "IEnumerable", - ValueList = " — ", - DefaultValue = " — " - }, - new() - { - Name = "IsPage", - Description = Localizer["Layouts_IsPage_Description"], - Type = "bool", - ValueList = "true|false", - DefaultValue = "false" - }, - new() { - Name = "IsFullSide", - Description = Localizer["Layouts_IsFullSide_Description"], - Type = "bool", - ValueList = "true|false", - DefaultValue = "false" - }, - new() - { - Name = "IsFixedFooter", - Description = Localizer["Layouts_IsFixedFooter_Description"], - Type = "bool", - ValueList = "true|false", - DefaultValue = "false" - }, - new() - { - Name = "IsFixedHeader", - Description = Localizer["Layouts_IsFixedHeader_Description"], - Type = "bool", - ValueList = "true|false", - DefaultValue = "false" - }, - new() - { - Name = "IsAccordion", - Description = Localizer["Layouts_IsAccordion_Description"], - Type = "bool", - ValueList = "true|false", - DefaultValue = "false" - }, - new() - { - Name = "ShowCollapseBar", - Description = Localizer["Layouts_ShowCollapseBar_Description"], - Type = "bool", - ValueList = "true|false", - DefaultValue = "false" - }, - new() - { - Name = "SidebarMinWidth", - Description = Localizer["Layouts_SidebarMinWidth_Description"], - Type = "int?", - ValueList = " — ", - DefaultValue = " — " - }, - new() - { - Name = "SidebarMaxWidth", - Description = Localizer["Layouts_SidebarMaxWidth_Description"], - Type = "int?", - ValueList = " — ", - DefaultValue = " — " - }, - new() - { - Name = "ShowSplitBar", - Description = Localizer["Layouts_ShowSplitBar_Description"], - Type = "bool", - ValueList = "true|false", - DefaultValue = "false" - }, - new() - { - Name = "ShowFooter", - Description = Localizer["Layouts_ShowFooter_Description"], - Type = "bool", - ValueList = "true|false", - DefaultValue = "false" - }, - new() { - Name = "ShowGotoTop", - Description = Localizer["Layouts_ShowGotoTop_Description"], - Type = "bool", - ValueList = "true|false", - DefaultValue = "false" - }, - new() - { - Name = "UseTabSet", - Description = Localizer["Layouts_UseTabSet_Description"], - Type = "bool", - ValueList = "true|false", - DefaultValue = "false" - }, - new() - { - Name = nameof(BootstrapBlazor.Components.Layout.IsFixedTabHeader), - Description = Localizer["Layouts_IsFixedTabHeader_Description"], - Type = "bool", - ValueList = "true|false", - DefaultValue = "false" - }, - new() - { - Name = "AdditionalAssemblies", - Description = Localizer["Layouts_AdditionalAssemblies_Description"], - Type = "IEnumerable", - ValueList = " — ", - DefaultValue = " — " - }, - new() - { - Name = "OnCollapsed", - Description = Localizer["Layouts_OnCollapsed_Description"], - Type = "Func", - ValueList = " — ", - DefaultValue = " — " - }, - new() - { - Name = "OnClickMenu", - Description = Localizer["Layouts_OnClickMenu_Description"], - Type = "Func", - ValueList = " — ", - DefaultValue = " — " - }, - new() - { - Name = "TabDefaultUrl", - Description = Localizer["Layouts_TabDefaultUrl_Description"], - Type = "string?", - ValueList = " — ", - DefaultValue = " — " - }, - new() - { - Name = nameof(BootstrapBlazor.Components.Layout.ShowTabContextMenu), - Description = Localizer["Layouts_ShowTabContextMenu"], - Type = "bool", - ValueList = "true|false", - DefaultValue = "false" - }, - new() - { - Name = nameof(BootstrapBlazor.Components.Layout.BeforeTabContextMenuTemplate), - Description = Localizer["Layouts_BeforeTabContextMenuTemplate"], - Type = "RenderFragment", - ValueList = " — ", - DefaultValue = " — " - }, - new() - { - Name = nameof(BootstrapBlazor.Components.Layout.TabContextMenuTemplate), - Description = Localizer["Layouts_TabContextMenuTemplate"], - Type = "RenderFragment", - ValueList = " — ", - DefaultValue = " — " - }, - new() - { - Name = nameof(BootstrapBlazor.Components.Layout.TabContextMenuRefreshIcon), - Description = Localizer["Layouts_TabContextMenuRefreshIcon"], - Type = "string?", - ValueList = " — ", - DefaultValue = " — " - }, - new() - { - Name = nameof(BootstrapBlazor.Components.Layout.TabContextMenuCloseIcon), - Description = Localizer["Layouts_TabContextMenuCloseIcon"], - Type = "string?", - ValueList = " — ", - DefaultValue = " — " - }, - new() - { - Name = nameof(BootstrapBlazor.Components.Layout.TabContextMenuCloseOtherIcon), - Description = Localizer["Layouts_TabContextMenuCloseOtherIcon"], - Type = "string?", - ValueList = " — ", - DefaultValue = " — " - }, - new() - { - Name = nameof(BootstrapBlazor.Components.Layout.TabContextMenuCloseAllIcon), - Description = Localizer["Layouts_TabContextMenuCloseAllIcon"], - Type = "string?", - ValueList = " — ", - DefaultValue = " — " - }, - new() - { - Name = nameof(BootstrapBlazor.Components.Layout.OnBeforeShowContextMenu), - Description = Localizer["Layouts_OnBeforeShowContextMenu"], - Type = "Func>", - ValueList = " — ", - DefaultValue = " — " - } - ]; } diff --git a/src/BootstrapBlazor.Server/Components/Samples/Lights.razor.cs b/src/BootstrapBlazor.Server/Components/Samples/Lights.razor.cs index 559ed17c02e..ffe05b09f17 100644 --- a/src/BootstrapBlazor.Server/Components/Samples/Lights.razor.cs +++ b/src/BootstrapBlazor.Server/Components/Samples/Lights.razor.cs @@ -82,40 +82,4 @@ public void Dispose() Dispose(true); GC.SuppressFinalize(this); } - - private static AttributeItem[] GetAttributes() => - [ - new() - { - Name = nameof(Light.Color), - Description = "Color", - Type = "Color", - ValueList = "None / Active / Primary / Secondary / Success / Danger / Warning / Info / Light / Dark / Link", - DefaultValue = "Success" - }, - new() - { - Name = nameof(Light.IsFlash), - Description = "Is it flashing", - Type = "boolean", - ValueList = " — ", - DefaultValue = "false" - }, - new() - { - Name = nameof(Light.TooltipText), - Description = "Indicator tooltip Display text", - Type = "string", - ValueList = " — ", - DefaultValue = " — " - }, - new() - { - Name = nameof(Light.TooltipTrigger), - Description = "Indicator tooltip trigger type", - Type = "string", - ValueList = " — ", - DefaultValue = " — " - } - ]; } diff --git a/src/BootstrapBlazor.Server/Components/Samples/LinkButtons.razor.cs b/src/BootstrapBlazor.Server/Components/Samples/LinkButtons.razor.cs index c36d24ab7a5..c0085bdb8be 100644 --- a/src/BootstrapBlazor.Server/Components/Samples/LinkButtons.razor.cs +++ b/src/BootstrapBlazor.Server/Components/Samples/LinkButtons.razor.cs @@ -17,76 +17,4 @@ private void OnClick() { Logger.Log($"{DateTimeOffset.Now}: Clicked!"); } - - /// - /// GetAttributes - /// - /// - private AttributeItem[] GetAttributes() => - [ - new() - { - Name = nameof(LinkButton.Text), - Description = Localizer[nameof(LinkButton.Text)], - Type = "string", - ValueList = " — ", - DefaultValue = " — " - }, - new() - { - Name = nameof(LinkButton.Url), - Description = Localizer[nameof(LinkButton.Url)], - Type = "string", - ValueList = " — ", - DefaultValue = "#" - }, - new() - { - Name = nameof(LinkButton.TooltipText), - Description = Localizer[nameof(LinkButton.TooltipText)], - Type = "string", - ValueList = " — ", - DefaultValue = " — " - }, - new() - { - Name = nameof(LinkButton.ImageUrl), - Description = Localizer[nameof(LinkButton.ImageUrl)], - Type = "string", - ValueList = " — ", - DefaultValue = " — " - }, - new() - { - Name = nameof(LinkButton.Icon), - Description = Localizer[nameof(LinkButton.Icon)], - Type = "string", - ValueList = " — ", - DefaultValue = " — " - }, - new() - { - Name = nameof(LinkButton.TooltipPlacement), - Description = Localizer[nameof(LinkButton.TooltipPlacement)], - Type = "Placement", - ValueList = "Top/Left/Right/Bottom", - DefaultValue = "Top" - }, - new() - { - Name = nameof(LinkButton.ChildContent), - Description = Localizer[nameof(LinkButton.ChildContent)], - Type = "RenderFragment", - ValueList = " — ", - DefaultValue = " — " - }, - new() - { - Name = nameof(LinkButton.OnClick), - Description = Localizer[nameof(LinkButton.OnClick)], - Type = "EventCallback", - ValueList = "—", - DefaultValue = " — " - } - ]; } diff --git a/src/BootstrapBlazor.Server/Components/Samples/ListGroups.razor.cs b/src/BootstrapBlazor.Server/Components/Samples/ListGroups.razor.cs index 013a95042ef..9322e94f4aa 100644 --- a/src/BootstrapBlazor.Server/Components/Samples/ListGroups.razor.cs +++ b/src/BootstrapBlazor.Server/Components/Samples/ListGroups.razor.cs @@ -31,76 +31,4 @@ protected override void OnInitialized() } private static string? GetItemDisplayText(Foo item) => item.Name; - - /// - /// GetAttributes - /// - /// - private AttributeItem[] GetAttributes() => - [ - new() - { - Name = "Items", - Description = Localizer["AttrItems"], - Type = "List", - ValueList = " — ", - DefaultValue = " — " - }, - new() - { - Name = "Value", - Description = Localizer["AttrValue"], - Type = "TItem", - ValueList = " — ", - DefaultValue = " — " - }, - new() - { - Name = "HeaderText", - Description = Localizer["AttrHeaderText"], - Type = "RenderFragment", - ValueList = " — ", - DefaultValue = " — " - }, - new() - { - Name = "HeaderTemplate", - Description = Localizer["AttrHeaderTemplate"], - Type = "RenderFragment", - ValueList = " — ", - DefaultValue = " — " - }, - new() - { - Name = "ItemTemplate", - Description = Localizer["AttrItemTemplate"], - Type = "RenderFragment", - ValueList = " — ", - DefaultValue = " — " - }, - new() - { - Name = "OnClickItem", - Description = Localizer["AttrOnClickItem"], - Type = "Func", - ValueList = " — ", - DefaultValue = " — " - }, - new() - { - Name = "OnDoubleClickItem", - Description = Localizer["AttrOnDoubleClickItem"], - Type = "Func", - ValueList = " — ", - DefaultValue = " — " - }, - new() - { - Name = "GetItemDisplayText", - Description = Localizer["GetItemDisplayText"], - Type = "Func", - ValueList = " — ", - DefaultValue = " — " - } - ]; } diff --git a/src/BootstrapBlazor.Server/Components/Samples/ListViews.razor.cs b/src/BootstrapBlazor.Server/Components/Samples/ListViews.razor.cs index a894e389b26..2fb343e8f7c 100644 --- a/src/BootstrapBlazor.Server/Components/Samples/ListViews.razor.cs +++ b/src/BootstrapBlazor.Server/Components/Samples/ListViews.razor.cs @@ -62,101 +62,6 @@ internal class Product public string Category { get; set; } = ""; } - private AttributeItem[] GetAttributes() => - [ - new(){ - Name = "Items", - Description = Localizer["Items"], - Type = "IEnumerable", - ValueList = " — ", - DefaultValue = " — " - }, - new(){ - Name = "Pageable", - Description = Localizer["Pageable"], - Type = "bool", - ValueList = "true|false", - DefaultValue = "false" - }, - new(){ - Name = "HeaderTemplate", - Description = Localizer["HeaderTemplate"], - Type = "RenderFragment", - ValueList = " — ", - DefaultValue = " — " - }, - new(){ - Name = "BodyTemplate", - Description = Localizer["BodyTemplate"], - Type = "RenderFragment", - ValueList = " — ", - DefaultValue = " — " - }, - new(){ - Name = "FooterTemplate", - Description = Localizer["FooterTemplate"], - Type = "RenderFragment", - ValueList = " — ", - DefaultValue = " — " - }, - new(){ - Name = nameof(ListView.Collapsible), - Description = Localizer["Collapsible"], - Type = "bool", - ValueList = "true|false", - DefaultValue = "false" - }, - new(){ - Name = nameof(ListView.IsAccordion), - Description = Localizer["IsAccordion"], - Type = "bool", - ValueList = "true|false", - DefaultValue = "false" - }, - new() { - Name = "OnQueryAsync", - Description = Localizer["OnQueryAsync"], - Type = "Func>>", - ValueList = "—", - DefaultValue = " — " - }, - new() { - Name = "OnListViewItemClick", - Description = Localizer["OnListViewItemClick"], - Type = "Func", - ValueList = " — ", - DefaultValue = " — " - }, - new() { - Name = nameof(ListView.CollapsedGroupCallback), - Description = Localizer["CollapsedGroupCallback"], - Type = "Func", - ValueList = " — ", - DefaultValue = " — " - }, - new() { - Name = nameof(ListView.GroupOrderCallback), - Description = Localizer["GroupOrderCallback"], - Type = "Func>, IOrderedEnumerable>>", - ValueList = " — ", - DefaultValue = " — " - }, - new() { - Name = nameof(ListView.GroupItemOrderCallback), - Description = Localizer["GroupItemOrderCallback"], - Type = "Func, IOrderedEnumerable>", - ValueList = " — ", - DefaultValue = " — " - }, - new() { - Name = nameof(ListView.GroupHeaderTextCallback), - Description = Localizer["GroupHeaderTextCallback"], - Type = "Func", - ValueList = " — ", - DefaultValue = " — " - } - ]; - private MethodItem[] GetMethods() => [ new() diff --git a/src/BootstrapBlazor.Server/Components/Samples/Live2DDisplays.razor.cs b/src/BootstrapBlazor.Server/Components/Samples/Live2DDisplays.razor.cs index 9b7362fab60..9f086e27d9a 100644 --- a/src/BootstrapBlazor.Server/Components/Samples/Live2DDisplays.razor.cs +++ b/src/BootstrapBlazor.Server/Components/Samples/Live2DDisplays.razor.cs @@ -55,84 +55,4 @@ protected override void OnInitialized() new SelectedItem("https://raw.githubusercontent.com/iCharlesZ/vscode-live2d-models/master/model-library/haruto/haruto.model.json", "haruto"), ]); } - - /// - /// 获得属性方法 - /// - /// - private AttributeItem[] GetAttributes() => - [ - new() - { - Name = "Source", - Description = Localizer["Live2DDisplaysSource"], - Type = "string", - ValueList = " — ", - DefaultValue = "empty" - }, - new() - { - Name = "Scale", - Description = Localizer["Live2DDisplaysScale"], - Type = "double", - ValueList = " — ", - DefaultValue = " — " - }, - new() - { - Name = "XOffset", - Description = Localizer["Live2DDisplaysXOffset"], - Type = "int", - ValueList = " — ", - DefaultValue = " — " - }, - new() - { - Name = "YOffset", - Description = Localizer["Live2DDisplaysYOffset"], - Type = "int", - ValueList = " — ", - DefaultValue = " — " - }, - new() - { - Name = "IsDraggable(not yet implemented)", - Description = Localizer["Live2DDisplaysIsDraggable"], - Type = "bool", - ValueList = " — ", - DefaultValue = "false" - }, - new() - { - Name = "AddHitAreaFrames", - Description = Localizer["Live2DDisplaysAddHitAreaFrames"], - Type = "bool", - ValueList = " — ", - DefaultValue = "false" - }, - new() - { - Name = "Position", - Description = Localizer["Live2DDisplaysPosition"], - Type = "enum", - ValueList = "Default|BottomLeft|BottomRight|TopLeft|TopRight", - DefaultValue = "Default" - }, - new() - { - Name = "BackgroundColor", - Description = Localizer["Live2DDisplaysBackgroundColor"], - Type = "string", - ValueList = " — ", - DefaultValue = "#000000" - }, - new() - { - Name = "BackgroundAlpha", - Description = Localizer["Live2DDisplaysBackgroundAlpha"], - Type = "bool", - ValueList = " — ", - DefaultValue = "false" - } - ]; } diff --git a/src/BootstrapBlazor.Server/Components/Samples/Logouts.razor.cs b/src/BootstrapBlazor.Server/Components/Samples/Logouts.razor.cs index 5fa0124c208..ace6442dfff 100644 --- a/src/BootstrapBlazor.Server/Components/Samples/Logouts.razor.cs +++ b/src/BootstrapBlazor.Server/Components/Samples/Logouts.razor.cs @@ -10,78 +10,4 @@ namespace BootstrapBlazor.Server.Components.Samples; /// public partial class Logouts { - private static AttributeItem[] GetAttributes() => - [ - new() - { - Name = nameof(Logout.ImageUrl), - Description = "登出组件当前用户头像", - Type = "string", - ValueList = " — ", - DefaultValue = " — " - }, - new() - { - Name = nameof(Logout.AvatarRadius), - Description = "登出组件当前用户头像圆角半径", - Type = "string", - ValueList = " — ", - DefaultValue = " — " - }, - new() - { - Name = nameof(Logout.DisplayName), - Description = "登出组件当前用户显示文字", - Type = "string", - ValueList = " — ", - DefaultValue = " — " - }, - new() - { - Name = nameof(Logout.PrefixDisplayNameText), - Description = "登出组件当前用户显示文字前置文字", - Type = "string", - ValueList = " — ", - DefaultValue = "欢迎" - }, - new() - { - Name = nameof(Logout.UserName), - Description = "登出组件当前用户登录账号", - Type = "string", - ValueList = " — ", - DefaultValue = " — " - }, - new() { - Name = nameof(Logout.ShowUserName), - Description = "是否显示用户名", - Type = "bool", - ValueList = "true|false", - DefaultValue = "true" - }, - new() - { - Name = nameof(Logout.PrefixUserNameText), - Description = "登出组件当前用户登录账号前置文字", - Type = "string", - ValueList = " — ", - DefaultValue = "当前账号" - }, - new() - { - Name = nameof(Logout.HeaderTemplate), - Description = "账户信息模板", - Type = "RenderFragment", - ValueList = " — ", - DefaultValue = " — " - }, - new() - { - Name = nameof(Logout.LinkTemplate), - Description = "导航信息模板", - Type = "RenderFragment", - ValueList = " — ", - DefaultValue = " — " - } - ]; } diff --git a/src/BootstrapBlazor.Server/Components/Samples/Markdowns.razor.cs b/src/BootstrapBlazor.Server/Components/Samples/Markdowns.razor.cs index 7b6dae99763..65802211127 100644 --- a/src/BootstrapBlazor.Server/Components/Samples/Markdowns.razor.cs +++ b/src/BootstrapBlazor.Server/Components/Samples/Markdowns.razor.cs @@ -51,80 +51,4 @@ private async Task GetAsyncString() AsyncValue = $"### {DateTime.Now}"; await MarkdownSetValue.SetValue(AsyncValue); } - - private AttributeItem[] GetAttributes() => - [ - new() - { - Name = "Height", - Description = Localizer["Att1"], - Type = "int", - ValueList = " — ", - DefaultValue = "300" - }, - new() - { - Name = "MinHeight", - Description = Localizer["Att2"], - Type = "int", - ValueList = " — ", - DefaultValue = "200" - }, - new() - { - Name = "InitialEditType", - Description = Localizer["Att3"], - Type = "InitialEditType", - ValueList = "Markdown/Wysiwyg", - DefaultValue = "Markdown" - }, - new() - { - Name = "PreviewStyle", - Description = Localizer["Att4"], - Type = "PreviewStyle", - ValueList = "Tab/Vertical", - DefaultValue = "Vertical" - }, - new() - { - Name = "Language", - Description = Localizer["Att5"], - Type = "string", - ValueList = " — ", - DefaultValue = " — " - }, - new() - { - Name = "Placeholder", - Description = Localizer["Att6"], - Type = "string", - ValueList = " — ", - DefaultValue = " — " - }, - new() - { - Name = "IsViewer", - Description = Localizer["Att7"], - Type = "bool", - ValueList = " true/false ", - DefaultValue = " false " - }, - new() - { - Name = "IsDark", - Description = Localizer["Att8"], - Type = "bool", - ValueList = " true/false ", - DefaultValue = " false " - }, - new() - { - Name = "EnableHighlight", - Description = Localizer["Att9"], - Type = "bool", - ValueList = " true/false ", - DefaultValue = " false " - } - ]; } diff --git a/src/BootstrapBlazor.Server/Components/Samples/Menus.razor.cs b/src/BootstrapBlazor.Server/Components/Samples/Menus.razor.cs index ccf5fedb6ad..c0ac7952505 100644 --- a/src/BootstrapBlazor.Server/Components/Samples/Menus.razor.cs +++ b/src/BootstrapBlazor.Server/Components/Samples/Menus.razor.cs @@ -94,60 +94,4 @@ private async Task ResetMenu() { DynamicSideMenuItems = await MenusDataGenerator.GetSideMenuItemsAsync(Localizer); } - - private AttributeItem[] GetAttributes() => - [ - new() - { - Name = "Items", - Description = Localizer["MenusAttr_Items"], - Type = "IEnumerable", - ValueList = " — ", - DefaultValue = " — " - }, - new() - { - Name = "IsVertical", - Description = Localizer["MenusAttr_IsVertical"], - Type = "bool", - ValueList = "true|false", - DefaultValue = "false" - }, - new() - { - Name = "IsBottom", - Description = Localizer["MenusAttr_IsBottom"], - Type = "bool", - ValueList = "true|false", - DefaultValue = "false" - }, - new() { - Name = "IsAccordion", - Description = Localizer["MenusAttr_IsAccordion"], - Type = "bool", - ValueList = "true|false", - DefaultValue = "false" - }, - new() { - Name = "IsScrollIntoView", - Description = Localizer["MenusAttr_IsScrollIntoView"], - Type = "bool", - ValueList = "true|false", - DefaultValue = "true" - }, - new() { - Name = "DisableNavigation", - Description = Localizer["MenusAttr_DisableNavigation"], - Type = "bool", - ValueList = "true|false", - DefaultValue = "false" - }, - new() { - Name = "OnClick", - Description = Localizer["MenusAttr_OnClick"], - Type = "Func", - ValueList = " — ", - DefaultValue = " — " - } - ]; } diff --git a/src/BootstrapBlazor.Server/Components/Samples/Mermaids.razor.cs b/src/BootstrapBlazor.Server/Components/Samples/Mermaids.razor.cs index 2ba620be28a..705a7535a70 100644 --- a/src/BootstrapBlazor.Server/Components/Samples/Mermaids.razor.cs +++ b/src/BootstrapBlazor.Server/Components/Samples/Mermaids.razor.cs @@ -155,47 +155,6 @@ section A section private Task OnDownloadPDFAsync() => _mermaid.DownloadPdfAsync($"mermaid-pdf-{DateTime.Now:HHmmss}.pdf"); - /// - /// GetAttributes - /// - /// - private AttributeItem[] GetAttributes() => - [ - new() - { - Name = "DiagramString", - Description = Localizer["DiagramString"], - Type = "string", - ValueList = " — ", - DefaultValue = " — " - }, - - new() - { - Name = "Title", - Description = Localizer["Title"], - Type = "string", - ValueList = " — ", - DefaultValue = " — " - }, - new() - { - Name = "Direction", - Description = Localizer["Direction"], - Type = "MermaidDirection", - ValueList = "TB / BT / LR / RL", - DefaultValue = "TB" - }, - new() - { - Name = "Type", - Description = Localizer["Type"], - Type = "MermaidType", - ValueList = "None / Flowchart / SequenceDiagram / ClassDiagram / StateDiagram / ErDiagram / Journey / Gantt / Pie", - DefaultValue = "None" - } - ]; - /// /// Methods /// diff --git a/src/BootstrapBlazor.Server/Components/Samples/Messages.razor.cs b/src/BootstrapBlazor.Server/Components/Samples/Messages.razor.cs index e8a0fa51b7b..58004c35fd1 100644 --- a/src/BootstrapBlazor.Server/Components/Samples/Messages.razor.cs +++ b/src/BootstrapBlazor.Server/Components/Samples/Messages.razor.cs @@ -125,26 +125,6 @@ private Task ShowLastOnlyMessage() => MessageService.Show(new MessageOption() Content = $"This is a reminder message - {_count++}" }); - private static AttributeItem[] GetAttributes() => - [ - new() - { - Name = "Placement", - Description = "message popup location", - Type = "Placement", - ValueList = "Top|Bottom", - DefaultValue = "Top" - }, - new() - { - Name = "ShowMode", - Description = "Display mode", - Type = "MessageShowMode", - ValueList = "Single|Multiple", - DefaultValue = "Multiple" - } - ]; - /// /// get property method /// diff --git a/src/BootstrapBlazor.Server/Components/Samples/MindMaps.razor.cs b/src/BootstrapBlazor.Server/Components/Samples/MindMaps.razor.cs index f64df5d8c21..8f5325b929a 100644 --- a/src/BootstrapBlazor.Server/Components/Samples/MindMaps.razor.cs +++ b/src/BootstrapBlazor.Server/Components/Samples/MindMaps.razor.cs @@ -83,52 +83,4 @@ async Task SetSample2() _result = SampleData2; await SetData(); } - - /// - /// 获得属性方法 - /// - /// - private AttributeItem[] GetAttributes() => - [ - new() - { - Name = "Data", - Description = Localizer["Data"], - Type = "MindMapNode", - ValueList = " — ", - DefaultValue = " — " - }, - new() - { - Name = "Export", - Description = Localizer["Export"], - Type = "Task", - ValueList = " — ", - DefaultValue = " — " - }, - new() - { - Name = "GetData", - Description = Localizer["GetData"], - Type = "Task", - ValueList = " — ", - DefaultValue = " — " - }, - new() - { - Name = "SetData", - Description = Localizer["SetData"], - Type = "Task", - ValueList = " — ", - DefaultValue = " — " - }, - new() - { - Name = "Reset", - Description = Localizer["Reset"], - Type = "Task", - ValueList = " — ", - DefaultValue = " — " - } - ]; } diff --git a/src/BootstrapBlazor.Server/Components/Samples/Modals.razor.cs b/src/BootstrapBlazor.Server/Components/Samples/Modals.razor.cs index eb2530bfd71..15c98d3ed93 100644 --- a/src/BootstrapBlazor.Server/Components/Samples/Modals.razor.cs +++ b/src/BootstrapBlazor.Server/Components/Samples/Modals.razor.cs @@ -75,156 +75,4 @@ private static async Task OnSaveAsync() await Task.Delay(1000); return true; } - - /// - /// GetAttributes - /// - /// - private AttributeItem[] GetAttributes() => - [ - new() - { - Name = "FirstAfterRenderCallbackAsync", - Description = Localizer["ModalsAttributesFirstAfterRenderCallbackAsync"], - Type = "Func", - ValueList = " — ", - DefaultValue = " — " - }, - new() - { - Name = "HeaderTemplate", - Description = Localizer["ModalsAttributeHeaderTemplate"], - Type = "RenderFragment", - ValueList = " — ", - DefaultValue = " — " - }, - new() - { - Name = "BodyTemplate", - Description = Localizer["ModalsAttributeBodyTemplate"], - Type = "RenderFragment", - ValueList = " — ", - DefaultValue = " — " - }, - new() - { - Name = "ChildContent", - Description = Localizer["ModalsAttributeChildContent"], - Type = "RenderFragment", - ValueList = " — ", - DefaultValue = " — " - }, - new() - { - Name = "FooterTemplate", - Description = Localizer["ModalsAttributeFooterTemplate"], - Type = "RenderFragment", - ValueList = " — ", - DefaultValue = " — " - }, - new() - { - Name = "IsBackdrop", - Description = Localizer["ModalsAttributeIsBackdrop"], - Type = "boolean", - ValueList = " — ", - DefaultValue = "false" - }, - new() - { - Name = "IsKeyboard", - Description = Localizer["ModalsAttributeIsKeyboard"], - Type = "boolean", - ValueList = " — ", - DefaultValue = "true" - }, - new() - { - Name = "IsCentered", - Description = Localizer["ModalsAttributeIsCentered"], - Type = "boolean", - ValueList = " — ", - DefaultValue = "true" - }, - new() - { - Name = "IsScrolling", - Description = Localizer["ModalsAttributeIsScrolling"], - Type = "boolean", - ValueList = " — ", - DefaultValue = "false" - }, - new() - { - Name = "IsFade", - Description = Localizer["ModalsAttributeIsFade"], - Type = "boolean", - ValueList = " — ", - DefaultValue = "true" - }, - new() - { - Name = "IsDraggable", - Description = Localizer["ModalsAttributeIsDraggable"], - Type = "boolean", - ValueList = " — ", - DefaultValue = "false" - }, - new() - { - Name = "ShowCloseButton", - Description = Localizer["ModalsAttributeShowCloseButton"], - Type = "boolean", - ValueList = " — ", - DefaultValue = "true" - }, - new() - { - Name = "ShowFooter", - Description = Localizer["ModalsAttributeShowFooter"], - Type = "boolean", - ValueList = " — ", - DefaultValue = "true" - }, - new() - { - Name = "Size", - Description = Localizer["ModalsAttributeSize"], - Type = "Size", - ValueList = "None / ExtraSmall / Small / Medium / Large / ExtraLarge / ExtraExtraLarge", - DefaultValue = "ExtraExtraLarge" - }, - new() - { - Name = nameof(ModalDialog.FullScreenSize), - Description = Localizer["ModalsAttributeFullScreenSize"], - Type = "Size", - ValueList = "None / Always / Small / Medium / Large / ExtraLarge / ExtraExtraLarge", - DefaultValue = "None" - }, - new() - { - Name = "Title", - Description = Localizer["ModalsAttributeTitle"], - Type = "string", - ValueList = " — ", - DefaultValue = " not set " - }, - new() - { - Name = nameof(ModalDialog.ShowMaximizeButton), - Description = Localizer["ModalsAttributeShowMaximizeButton"], - Type = "boolean", - ValueList = "true|false", - DefaultValue = "false" - }, - new() - { - Name = "ShownCallbackAsync", - Description = Localizer["ModalsAttributeShownCallbackAsync"], - Type = "Func", - ValueList = " — ", - DefaultValue = " — " - } - ]; } diff --git a/src/BootstrapBlazor.Server/Components/Samples/MouseFollowers.razor.cs b/src/BootstrapBlazor.Server/Components/Samples/MouseFollowers.razor.cs index c4e717209d2..d43de58214f 100644 --- a/src/BootstrapBlazor.Server/Components/Samples/MouseFollowers.razor.cs +++ b/src/BootstrapBlazor.Server/Components/Samples/MouseFollowers.razor.cs @@ -24,36 +24,4 @@ public partial class MouseFollowers ClassName = "mf-cursor bb-cursor", MediaClassName = "mf-cursor-media bb-cursor-media" }; - - /// - /// 获得属性方法 - /// - /// - private AttributeItem[] GetAttributes() => - [ - new() - { - Name = "FollowerMode", - Description = Localizer["MouseFollowersFollowerMode"], - Type = "Enum", - ValueList = " — ", - DefaultValue = "MouseFollowerMode.Normal" - }, - new() - { - Name = "GlobalMode", - Description = Localizer["MouseFollowersGlobalMode"], - Type = "bool", - ValueList = " — ", - DefaultValue = "false" - }, - new() - { - Name = "Content", - Description = Localizer["MouseFollowersContent"], - Type = "string?", - ValueList = " — ", - DefaultValue = " — " - } - ]; } diff --git a/src/BootstrapBlazor.Server/Components/Samples/MultiSelects.razor.cs b/src/BootstrapBlazor.Server/Components/Samples/MultiSelects.razor.cs index 840d57cbb4a..7ad9a96a54e 100644 --- a/src/BootstrapBlazor.Server/Components/Samples/MultiSelects.razor.cs +++ b/src/BootstrapBlazor.Server/Components/Samples/MultiSelects.razor.cs @@ -356,149 +356,4 @@ private EventItem[] GetEvents() => Type = "Func>" } ]; - - /// - /// 获得属性方法 - /// GetAttributes - /// - /// - private AttributeItem[] GetAttributes() => - [ - new() - { - Name = "ShowLabel", - Description = Localizer["MultiSelectsAttribute_ShowLabel"], - Type = "bool", - ValueList = "true|false", - DefaultValue = "true" - }, - new() - { - Name = "ShowCloseButton", - Description = Localizer["MultiSelectsAttribute_ShowCloseButton"], - Type = "bool", - ValueList = "true|false", - DefaultValue = "true" - }, - new() - { - Name = "ShowSearch", - Description = Localizer["MultiSelectsAttribute_ShowSearch"], - Type = "bool", - ValueList = "true|false", - DefaultValue = "false" - }, - new() - { - Name = "ShowToolbar", - Description = Localizer["MultiSelectsAttribute_ShowToolbar"], - Type = "bool", - ValueList = "true|false", - DefaultValue = "false" - }, - new() - { - Name = "ShowDefaultButtons", - Description = Localizer["MultiSelectsAttribute_ShowDefaultButtons"], - Type = "bool", - ValueList = "true|false", - DefaultValue = "true" - }, - new() - { - Name = "DisplayText", - Description = Localizer["MultiSelectsAttribute_DisplayText"], - Type = "string", - ValueList = " — ", - DefaultValue = " — " - }, - new() - { - Name = "PlaceHolder", - Description = Localizer["MultiSelectsAttribute_PlaceHolder"], - Type = "string", - ValueList = " — ", - DefaultValue = Localizer["MultiSelectsAttribute_PlaceHolder_DefaultValue"]! - }, - new() - { - Name = "Class", - Description = Localizer["MultiSelectsAttribute_Class"], - Type = "string", - ValueList = " — ", - DefaultValue = " — " - }, - new() - { - Name = "Color", - Description = Localizer["MultiSelectsAttribute_Color"], - Type = "Color", - ValueList = "Primary / Secondary / Success / Danger / Warning / Info / Dark", - DefaultValue = "Primary" - }, - new() - { - Name = "IsDisabled", - Description = Localizer["MultiSelectsAttribute_IsDisabled"], - Type = "boolean", - ValueList = "true / false", - DefaultValue = "false" - }, - new() - { - Name = nameof(MultiSelect.IsSingleLine), - Description = Localizer["MultiSelectsAttribute_IsSingleLine"], - Type = "boolean", - ValueList = "true / false", - DefaultValue = "false" - }, - new() - { - Name = "Items", - Description = Localizer["MultiSelectsAttribute_Items"], - Type = "IEnumerable", - ValueList = " — ", - DefaultValue = " — " - }, - new() - { - Name = "ButtonTemplate", - Description = Localizer["MultiSelectsAttribute_ButtonTemplate"], - Type = "RenderFragment>", - ValueList = " — ", - DefaultValue = " — " - }, - new() - { - Name = "ItemTemplate", - Description = Localizer["MultiSelectsAttribute_ItemTemplate"], - Type = "RenderFragment", - ValueList = " — ", - DefaultValue = " — " - }, - new() - { - Name = "IsFixedHeight", - Description = Localizer["MultiSelectsAttribute_IsFixedHeight"], - Type = "bool", - ValueList = "true|false", - DefaultValue = "false" - }, - new() - { - Name = nameof(MultiSelect.IsVirtualize), - Description = Localizer["MultiSelectsAttribute_IsVirtualize"], - Type = "bool", - ValueList = "true|false", - DefaultValue = "false" - }, - new() - { - Name = nameof(MultiSelect.DefaultVirtualizeItemText), - Description = Localizer["MultiSelectsAttribute_DefaultVirtualizeItemText"], - Type = "string", - ValueList = " — ", - DefaultValue = " — " - } - ]; } diff --git a/src/BootstrapBlazor.Server/Components/Samples/Navigation.razor.cs b/src/BootstrapBlazor.Server/Components/Samples/Navigation.razor.cs index 446d9693350..9bd8008a06a 100644 --- a/src/BootstrapBlazor.Server/Components/Samples/Navigation.razor.cs +++ b/src/BootstrapBlazor.Server/Components/Samples/Navigation.razor.cs @@ -32,55 +32,4 @@ private List GetItems() ret.Add(link); return ret; } - - /// - /// 获得属性方法 - /// - /// - private AttributeItem[] GetAttributes() => - [ - new() - { - Name = "ChildContent", - Description = Localizer["NavsChildContent"], - Type = "RenderFragment", - ValueList = " — ", - DefaultValue = " — " - }, - new() { - Name = "Alignment", - Description = Localizer["NavsAlignment"], - Type = "Alignment", - ValueList = "Left|Center|Right", - DefaultValue = " — " - }, - new() { - Name = "IsVertical", - Description = Localizer["NavsIsVertical"], - Type = "bool", - ValueList = "true|false", - DefaultValue = "false" - }, - new() { - Name = "IsPills", - Description = Localizer["NavsIsPills"], - Type = "bool", - ValueList = "true|false", - DefaultValue = "false" - }, - new() { - Name = "IsFill", - Description = Localizer["NavsIsFill"], - Type = "bool", - ValueList = "true|false", - DefaultValue = "false" - }, - new() { - Name = "IsJustified", - Description = Localizer["NavsIsJustified"], - Type = "bool", - ValueList = "true|false", - DefaultValue = "false" - } - ]; } diff --git a/src/BootstrapBlazor.Server/Components/Samples/OnScreenKeyboards.razor.cs b/src/BootstrapBlazor.Server/Components/Samples/OnScreenKeyboards.razor.cs index cb91dede7ed..19240427981 100644 --- a/src/BootstrapBlazor.Server/Components/Samples/OnScreenKeyboards.razor.cs +++ b/src/BootstrapBlazor.Server/Components/Samples/OnScreenKeyboards.razor.cs @@ -37,70 +37,6 @@ public sealed partial class OnScreenKeyboards autoScroll = true }; - /// - /// 获得属性方法 - /// - /// - private static AttributeItem[] GetAttributes() => - [ - new() - { - Name = "ClassName", - Description = "获得/设置 组件 class 名称", - Type = "string", - ValueList = " — ", - DefaultValue = "virtualkeyboard" - }, - new() - { - Name = "KeyboardKeys", - Description = "获得/设置 键盘语言布局", - Type = "KeyboardKeysType?", - ValueList = "arabic|english|french|german|hungarian|persian|russian|spanish|turkish", - DefaultValue = "english" - }, - new() - { - Name = "Keyboard", - Description = "获得/设置 键盘类型", - Type = "KeyboardType", - ValueList = "全键盘 all | 字母 keyboard || 小数字键盘 numpad", - DefaultValue = "all" - }, - new() - { - Name = "Placement", - Description = "获得/设置 对齐", - Type = "KeyboardPlacement", - ValueList = "顶端 top | 底部 bottom", - DefaultValue = "bottom" - }, - new() - { - Name = "Placeholder", - Description = "获得/设置 占位符", - Type = "string", - ValueList = " — ", - DefaultValue = " - " - }, - new() - { - Name = "Specialcharacters", - Description = "获得/设置 显示特殊字符切换按钮", - Type = "bool", - ValueList = " - ", - DefaultValue = "true" - }, - new() - { - Name = "Option", - Description = "获得/设置 键盘配置", - Type = "KeyboardOption?", - ValueList = " - ", - DefaultValue = " - " - } - ]; - /// /// 获得KeyboardOption属性 /// diff --git a/src/BootstrapBlazor.Server/Components/Samples/Paginations.razor.cs b/src/BootstrapBlazor.Server/Components/Samples/Paginations.razor.cs index 85eb6dcf495..e881f199828 100644 --- a/src/BootstrapBlazor.Server/Components/Samples/Paginations.razor.cs +++ b/src/BootstrapBlazor.Server/Components/Samples/Paginations.razor.cs @@ -55,117 +55,4 @@ protected override void OnParametersSet() new("20", "20条/页") ]; } - - /// - /// 获得属性方法 - /// - /// - private AttributeItem[] GetAttributes() => - [ - new() { - Name = "PageIndex", - Description = Localizer["PaginationsPageIndexAttr"], - Type = "int", - ValueList = " — ", - DefaultValue = "1" - }, - new() { - Name = "PageCount", - Description = Localizer["PaginationsPageCountAttr"], - Type = "int", - ValueList = " — ", - DefaultValue = " — " - }, - new() { - Name = "MaxPageLinkCount", - Description = Localizer["PaginationsMaxPageLinkCountAttr"], - Type = "int", - ValueList = " — ", - DefaultValue = "5" - }, - new() { - Name = "OnPageLinkClick", - Description = Localizer["PaginationsOnPageLinkClickAttr"], - Type = "Func", - ValueList = " — ", - DefaultValue = " — " - }, - new() { - Name = "Alignment", - Description = Localizer["PaginationsAlignmentAttr"], - Type = "Alignment", - ValueList = " — ", - DefaultValue = "Alignment.Right" - }, - new() { - Name = "ShowPageInfo", - Description = Localizer["PaginationsShowPageInfoAttr"], - Type = "bool", - ValueList = " — ", - DefaultValue = "true" - }, - new() { - Name = "PageInfoText", - Description = Localizer["PaginationsPageInfoTextAttr"], - Type = "string", - ValueList = " — ", - DefaultValue = " — " - }, - new() { - Name = "PageInfoTemplate", - Description = Localizer["PaginationsPageInfoTemplateAttr"], - Type = "RenderFragment", - ValueList = " — ", - DefaultValue = " — " - }, - new() { - Name = "ShowGotoNavigator", - Description = Localizer["PaginationsShowGotoNavigatorAttr"], - Type = "bool", - ValueList = " — ", - DefaultValue = "false" - }, - new() { - Name = "GotoNavigatorLabelText", - Description = Localizer["PaginationsGotoNavigatorLabelTextAttr"], - Type = "string", - ValueList = " — ", - DefaultValue = " — " - }, - new() { - Name = "GotoTemplate", - Description = Localizer["PaginationsGotoTemplateAttr"], - Type = "RenderFragment", - ValueList = " — ", - DefaultValue = " — " - }, - new() { - Name = "PrevPageIcon", - Description = Localizer["PaginationsPrevPageIconAttr"], - Type = "string", - ValueList = " — ", - DefaultValue = "fa-solid fa-angle-left" - }, - new() { - Name = "PrevEllipsisPageIcon", - Description = Localizer["PaginationsPrevEllipsisPageIconAttr"], - Type = "string", - ValueList = " — ", - DefaultValue = "fa-solid fa-ellipsis" - }, - new() { - Name = "NextPageIcon", - Description = Localizer["PaginationsNextPageIconAttr"], - Type = "string", - ValueList = " — ", - DefaultValue = "fa-solid fa-angle-right" - }, - new() { - Name = "NextEllipsisPageIcon", - Description = Localizer["PaginationsNextEllipsisPageIconAttr"], - Type = "string", - ValueList = " — ", - DefaultValue = "fa-solid fa-ellipsis" - } - ]; } diff --git a/src/BootstrapBlazor.Server/Components/Samples/PopoverConfirms.razor.cs b/src/BootstrapBlazor.Server/Components/Samples/PopoverConfirms.razor.cs index 0fc4a7bacc7..b468dff13b2 100644 --- a/src/BootstrapBlazor.Server/Components/Samples/PopoverConfirms.razor.cs +++ b/src/BootstrapBlazor.Server/Components/Samples/PopoverConfirms.razor.cs @@ -65,134 +65,6 @@ private Task OnInValidSubmit(EditContext context) return Task.CompletedTask; } - /// - /// Get property method - /// - /// - private static AttributeItem[] GetAttributes() => - [ - new() - { - Name = nameof(PopConfirmButton.IsLink), - Description = "Whether to render the component for the A tag", - Type = "bool", - ValueList = "true/false", - DefaultValue = "false" - }, - new() - { - Name = "Text", - Description = "Show title", - Type = "string", - ValueList = "", - DefaultValue = "Delete" - }, - new() - { - Name = "Icon", - Description = "Button icon", - Type = "string", - ValueList = "", - DefaultValue = "fa-solid fa-xmark" - }, - new() - { - Name = "CloseButtonText", - Description = "Close button display text", - Type = "string", - ValueList = "", - DefaultValue = "Close" - }, - new() - { - Name = "CloseButtonColor", - Description = "Confirm button color", - Type = "Color", - ValueList = "None / Active / Primary / Secondary / Success / Danger / Warning / Info / Light / Dark / Link", - DefaultValue = "Secondary" - }, - new() - { - Name = "Color", - Description = "Color", - Type = "Color", - ValueList = "None / Active / Primary / Secondary / Success / Danger / Warning / Info / Light / Dark / Link", - DefaultValue = "None" - }, - new() - { - Name = "ConfirmButtonText", - Description = "Confirm button display text", - Type = "string", - ValueList = "", - DefaultValue = "Ok" - }, - new() - { - Name = "ConfirmButtonColor", - Description = "Confirm button color", - Type = "None / Active / Primary / Secondary / Success / Danger / Warning / Info / Light / Dark / Link", - ValueList = "", - DefaultValue = "Primary" - }, - new() - { - Name = "ConfirmIcon", - Description = "Confirmation box icon", - Type = "string", - ValueList = "", - DefaultValue = "fa-solid fa-circle-exclamation text-info" - }, - new() - { - Name = "Content", - Description = "Display text", - Type = "string", - ValueList = "", - DefaultValue = "Confirm delete?" - }, - new() - { - Name = "Placement", - Description = "Location", - Type = "Placement", - ValueList = "Auto / Top / Left / Bottom / Right", - DefaultValue = "Auto" - }, - new() - { - Name = "Title", - Description = "Popover Popup title", - Type = "string", - ValueList = "", - DefaultValue = " " - }, - new() - { - Name = nameof(PopConfirmButton.Trigger), - Description = "How pop confirm is triggered", - Type = "string", - ValueList = "click|hover|focus", - DefaultValue = "click" - }, - new() - { - Name = nameof(PopConfirmButton.ShowCloseButton), - Description = "Whether to display the close button", - Type = "string", - ValueList = "true/false", - DefaultValue = "true" - }, - new() - { - Name = nameof(PopConfirmButton.ShowConfirmButton), - Description = "Whether to display the confirm button", - Type = "string", - ValueList = "true/false", - DefaultValue = "true" - } - ]; - /// /// Get event method /// diff --git a/src/BootstrapBlazor.Server/Components/Samples/Popovers.razor.cs b/src/BootstrapBlazor.Server/Components/Samples/Popovers.razor.cs index c9a32d7ca07..62122a06695 100644 --- a/src/BootstrapBlazor.Server/Components/Samples/Popovers.razor.cs +++ b/src/BootstrapBlazor.Server/Components/Samples/Popovers.razor.cs @@ -37,44 +37,4 @@ protected override void OnParametersSet() _templateTitle = Localizer["PopoversTemplateTitleText"]; } - - /// - /// Get property method - /// - /// - private static AttributeItem[] GetAttributes() => - [ - new() - { - Name = "Content", - Description = "Popover content", - Type = "string", - ValueList = "", - DefaultValue = "Popover" - }, - new() - { - Name = "IsHtml", - Description = "Whether the content contains Html code", - Type = "boolean", - ValueList = "", - DefaultValue = "false" - }, - new() - { - Name = "Placement", - Description = "Location", - Type = "Placement", - ValueList = "Auto / Top / Left / Bottom / Right", - DefaultValue = "Auto" - }, - new() - { - Name = "Title", - Description = "Popover title", - Type = "string", - ValueList = "", - DefaultValue = "Popover" - } - ]; } diff --git a/src/BootstrapBlazor.Server/Components/Samples/Progress.razor.cs b/src/BootstrapBlazor.Server/Components/Samples/Progress.razor.cs index 38cb1c30429..ca07b448ef1 100644 --- a/src/BootstrapBlazor.Server/Components/Samples/Progress.razor.cs +++ b/src/BootstrapBlazor.Server/Components/Samples/Progress.razor.cs @@ -10,59 +10,4 @@ namespace BootstrapBlazor.Server.Components.Samples; /// public sealed partial class Progress { - /// - /// Get property method - /// - /// - private static AttributeItem[] GetAttributes() => - [ - new() - { - Name = "Color", - Description = "Color", - Type = "Color", - ValueList = "Primary / Secondary / Success / Danger / Warning / Info / Dark", - DefaultValue = "Primary" - }, - new() - { - Name = "Class", - Description = "Style", - Type = "string", - ValueList = " — ", - DefaultValue = " — " - }, - new() - { - Name = "Height", - Description = "Progress bar height", - Type = "int", - ValueList = " — ", - DefaultValue = "15" - }, - new() - { - Name = "IsAnimated", - Description = "Whether to display dynamically", - Type = "boolean", - ValueList = " — ", - DefaultValue = "false" - }, - new() - { - Name = "IsShowValue", - Description = "Whether to display the value", - Type = "boolean", - ValueList = " — ", - DefaultValue = "false" - }, - new() - { - Name = "IsStriped", - Description = "Whether to show stripes", - Type = "boolean", - ValueList = " — ", - DefaultValue = "false" - } - ]; } diff --git a/src/BootstrapBlazor.Server/Components/Samples/QRCodes.razor.cs b/src/BootstrapBlazor.Server/Components/Samples/QRCodes.razor.cs index 527f53663c0..b83ed046c8e 100644 --- a/src/BootstrapBlazor.Server/Components/Samples/QRCodes.razor.cs +++ b/src/BootstrapBlazor.Server/Components/Samples/QRCodes.razor.cs @@ -24,100 +24,4 @@ private Task OnCleared() Logger.Log(Localizer["ClearText"]); return Task.CompletedTask; } - - /// - /// 获得属性方法 - /// - /// - private AttributeItem[] GetAttributes() => - [ - new() - { - Name = nameof(QRCode.PlaceHolder), - Description = Localizer[nameof(QRCode.PlaceHolder)], - Type = "string", - ValueList = " — ", - DefaultValue = Localizer["QRCodesPlaceHolderValue"] - }, - new() - { - Name = nameof(QRCode.Width), - Description = Localizer[nameof(QRCode.Width)], - Type = "int", - ValueList = " — ", - DefaultValue = " — " - }, - new() - { - Name = nameof(QRCode.ClearButtonText), - Description = Localizer[nameof(QRCode.ClearButtonText)], - Type = "string", - ValueList = " — ", - DefaultValue = Localizer["QRCodesClearButtonTextValue"] - }, - new() - { - Name = nameof(QRCode.ClearButtonIcon), - Description = Localizer[nameof(QRCode.ClearButtonIcon)], - Type = "string", - ValueList = " — ", - DefaultValue = " — " - }, - new() - { - Name = nameof(QRCode.GenerateButtonText), - Description = Localizer[nameof(QRCode.GenerateButtonText)], - Type = "string", - ValueList = " — ", - DefaultValue = Localizer["QRCodesGenerateButtonTextValue"] - }, - new() - { - Name = nameof(QRCode.GenerateButtonIcon), - Description = Localizer[nameof(QRCode.GenerateButtonIcon)], - Type = "string", - ValueList = " — ", - DefaultValue = " — " - }, - new() - { - Name = nameof(QRCode.ShowButtons), - Description = Localizer[nameof(QRCode.ShowButtons)], - Type = "boolean", - ValueList = " — ", - DefaultValue = " — " - }, - new() - { - Name = nameof(QRCode.DarkColor), - Description = Localizer[nameof(QRCode.DarkColor)], - Type = "string", - ValueList = " — ", - DefaultValue = " — " - }, - new() - { - Name = nameof(QRCode.LightColor), - Description = Localizer[nameof(QRCode.LightColor)], - Type = "string", - ValueList = " — ", - DefaultValue = " — " - }, - new() - { - Name = nameof(QRCode.OnGenerated), - Description = Localizer[nameof(QRCode.OnGenerated)], - Type = "Func", - ValueList = " — ", - DefaultValue = " — " - }, - new() - { - Name = nameof(QRCode.OnCleared), - Description = Localizer[nameof(QRCode.OnCleared)], - Type = "Func", - ValueList = " — ", - DefaultValue = " — " - } - ]; } diff --git a/src/BootstrapBlazor.Server/Components/Samples/Radios.razor.cs b/src/BootstrapBlazor.Server/Components/Samples/Radios.razor.cs index 5a75aea3600..f796d4bf76d 100644 --- a/src/BootstrapBlazor.Server/Components/Samples/Radios.razor.cs +++ b/src/BootstrapBlazor.Server/Components/Samples/Radios.razor.cs @@ -121,82 +121,6 @@ class IconSelectedItem : SelectedItem public string? Icon { get; init; } } - private AttributeItem[] GetAttributes() => - [ - new() - { - Name = "DisplayText", - Description = Localizer["RadiosDisplayText"], - Type = "string", - ValueList = " — ", - DefaultValue = "—" - }, - new() - { - Name = "GroupName", - Description = Localizer["RadiosGroupName"], - Type = "string", - ValueList = " — ", - DefaultValue = "—" - }, - new() - { - Name = "NullItemText", - Description = Localizer["RadiosNullItemText"], - Type = "string", - ValueList = " — ", - DefaultValue = "—" - }, - new() - { - Name = "IsDisabled", - Description = Localizer["RadiosIsDisabled"], - Type = "boolean", - ValueList = "true / false", - DefaultValue = "false" - }, - new() - { - Name = "IsVertical", - Description = Localizer["RadiosIsVertical"], - Type = "boolean", - ValueList = "true / false", - DefaultValue = "false" - }, - new() - { - Name = nameof(RadioList.IsButton), - Description = Localizer["RadiosIsButton"], - Type = "boolean", - ValueList = "true / false", - DefaultValue = "false" - }, - new() - { - Name = "IsAutoAddNullItem", - Description = Localizer["RadiosIsAutoAddNullItem"], - Type = "boolean", - ValueList = "true / false", - DefaultValue = "false" - }, - new() - { - Name = "Items", - Description = Localizer["RadiosItems"], - Type = "IEnumerable", - ValueList = " — ", - DefaultValue = "—" - }, - new() - { - Name = "AutoSelectFirstWhenValueIsNull", - Description = Localizer["RadiosAutoSelectFirstWhenValueIsNull"], - Type = "bool", - ValueList = "true|false", - DefaultValue = "true" - } - ]; - /// /// 获得事件方法 /// diff --git a/src/BootstrapBlazor.Server/Components/Samples/Rates.razor.cs b/src/BootstrapBlazor.Server/Components/Samples/Rates.razor.cs index e515acb9058..f1ed7161027 100644 --- a/src/BootstrapBlazor.Server/Components/Samples/Rates.razor.cs +++ b/src/BootstrapBlazor.Server/Components/Samples/Rates.razor.cs @@ -60,64 +60,4 @@ private EventItem[] GetEvents() => Type ="EventCallback" } ]; - - private AttributeItem[] GetAttributes() => - [ - new() - { - Name = "Value", - Description = Localizer["RatesValue"], - Type = "int", - ValueList = " — ", - DefaultValue = " — " - }, - new() - { - Name = "Max", - Description = Localizer["RatesMax"], - Type = "int", - ValueList = " — ", - DefaultValue = " — " - }, - new() - { - Name = "IsDisabled", - Description = Localizer["RatesIsDisabled"], - Type = "bool", - ValueList = "true|false", - DefaultValue = "false" - }, - new() - { - Name = "IsReadonly", - Description = Localizer["RatesIsReadonly"], - Type = "bool", - ValueList = "true|false", - DefaultValue = "false" - }, - new() - { - Name = "IsWrap", - Description = Localizer["RatesIsWrap"], - Type = "bool", - ValueList = "true|false", - DefaultValue = "false" - }, - new() - { - Name = "ShowValue", - Description = Localizer["RatesShowValue"], - Type = "bool", - ValueList = "true|false", - DefaultValue = "false" - }, - new() - { - Name = "ItemTemplate", - Description = Localizer["RatesItemTemplate"], - Type = "RenderFragment", - ValueList = " — ", - DefaultValue = " — " - } - ]; } diff --git a/src/BootstrapBlazor.Server/Components/Samples/Reconnectors.razor.cs b/src/BootstrapBlazor.Server/Components/Samples/Reconnectors.razor.cs index acac87f974a..b38fc41728f 100644 --- a/src/BootstrapBlazor.Server/Components/Samples/Reconnectors.razor.cs +++ b/src/BootstrapBlazor.Server/Components/Samples/Reconnectors.razor.cs @@ -11,32 +11,4 @@ namespace BootstrapBlazor.Server.Components.Samples; public partial class Reconnectors { private string TemplateUrl => $"{WebsiteOption.Value.GiteeRepositoryUrl}/wikis/%E9%A1%B9%E7%9B%AE%E6%A8%A1%E6%9D%BF%E4%BD%BF%E7%94%A8%E6%95%99%E7%A8%8B"; - - private AttributeItem[] GetAttributes() => - [ - new() - { - Name = nameof(Reconnector.ReconnectingTemplate), - Description = Localizer["ReconnectingTemplateAttr"], - Type = "RenderFragment", - ValueList = " — ", - DefaultValue = " — " - }, - new() - { - Name = nameof(Reconnector.ReconnectFailedTemplate), - Description = Localizer["ReconnectFailedTemplateAttr"], - Type = "RenderFragment", - ValueList = " — ", - DefaultValue = " — " - }, - new() - { - Name = nameof(Reconnector.ReconnectRejectedTemplate), - Description = Localizer["ReconnectRejectedTemplateAttr"], - Type = "RenderFragment", - ValueList = " — ", - DefaultValue = " — " - }, - ]; } diff --git a/src/BootstrapBlazor.Server/Components/Samples/Repeaters.razor.cs b/src/BootstrapBlazor.Server/Components/Samples/Repeaters.razor.cs index e5339bc6f13..d6173909651 100644 --- a/src/BootstrapBlazor.Server/Components/Samples/Repeaters.razor.cs +++ b/src/BootstrapBlazor.Server/Components/Samples/Repeaters.razor.cs @@ -37,72 +37,4 @@ private void OnDelete(Foo foo) { Items.Remove(foo); } - - private static AttributeItem[] GetAttributes() => - [ - new() - { - Name = nameof(Repeater.Items), - Description = "数据集合", - Type = "IEnumerable", - ValueList = " — ", - DefaultValue = " — " - }, - new() - { - Name = nameof(Repeater.ShowLoading), - Description = "是否显示正在加载信息", - Type = "bool", - ValueList = "true/false", - DefaultValue = "true" - }, - new() - { - Name = nameof(Repeater.ShowEmpty), - Description = "是否显示空数据提示信息", - Type = "bool", - ValueList = "true/false", - DefaultValue = "true" - }, - new() - { - Name = nameof(Repeater.LoadingTemplate), - Description = "正在加载模板", - Type = "RenderFragment", - ValueList = " — ", - DefaultValue = " — " - }, - new() - { - Name = nameof(Repeater.EmptyTemplate), - Description = "空数据模板", - Type = "RenderFragment", - ValueList = " — ", - DefaultValue = " — " - }, - new() - { - Name = nameof(Repeater.ItemTemplate), - Description = "重复项模板", - Type = "RenderFragment", - ValueList = " — ", - DefaultValue = " — " - }, - new() - { - Name = nameof(Repeater.ContainerTemplate), - Description = "容器模板", - Type = "RenderFragment", - ValueList = " — ", - DefaultValue = " — " - }, - new() - { - Name = nameof(Repeater.EmptyText), - Description = "空数据提示信息", - Type = "string", - ValueList = " — ", - DefaultValue = " — " - } - ]; } diff --git a/src/BootstrapBlazor.Server/Components/Samples/Responsives.razor.cs b/src/BootstrapBlazor.Server/Components/Samples/Responsives.razor.cs index 3b1fcacf8e1..fa682b9c58d 100644 --- a/src/BootstrapBlazor.Server/Components/Samples/Responsives.razor.cs +++ b/src/BootstrapBlazor.Server/Components/Samples/Responsives.razor.cs @@ -18,16 +18,4 @@ private Task OnChanged(BreakPoint size) StateHasChanged(); return Task.CompletedTask; } - - private static AttributeItem[] GetAttributes() => - [ - new() - { - Name = nameof(Responsive.OnBreakPointChanged), - Description = "Callback method when breakpoint threshold changes", - Type = "Func>", - ValueList = " — ", - DefaultValue = " — " - } - ]; } diff --git a/src/BootstrapBlazor.Server/Components/Samples/RibbonTabs.razor.cs b/src/BootstrapBlazor.Server/Components/Samples/RibbonTabs.razor.cs index cb4895c50e9..9beb77b4273 100644 --- a/src/BootstrapBlazor.Server/Components/Samples/RibbonTabs.razor.cs +++ b/src/BootstrapBlazor.Server/Components/Samples/RibbonTabs.razor.cs @@ -103,88 +103,4 @@ private List GenerateRibbonTabs() ]); return [item1, item2]; } - - private AttributeItem[] GetAttributes() => - [ - new() - { - Name = nameof(RibbonTab.ShowFloatButton), - Description = Localizer["RibbonTabsShowFloatButtonAttr"], - Type = "bool", - ValueList = "true|false", - DefaultValue = "false" - }, - new() - { - Name = nameof(RibbonTab.OnFloatChanged), - Description = Localizer["RibbonTabsOnFloatChanged"], - Type = "bool", - ValueList = "Func", - DefaultValue = " — " - }, - new() - { - Name = nameof(RibbonTab.RibbonArrowUpIcon), - Description = Localizer["RibbonTabsRibbonArrowUpIcon"], - Type = "string", - ValueList = " — ", - DefaultValue = "fa-solid fa-angle-up fa-2x" - }, - new() - { - Name = nameof(RibbonTab.RibbonArrowDownIcon), - Description = Localizer["RibbonTabsRibbonArrowDownIcon"], - Type = "string", - ValueList = " — ", - DefaultValue = "fa-solid fa-angle-down fa-2x" - }, - new() - { - Name = nameof(RibbonTab.RibbonArrowPinIcon), - Description = Localizer["RibbonTabsRibbonArrowPinIcon"], - Type = "string", - ValueList = " — ", - DefaultValue = "fa-solid fa-thumbtack fa-rotate-90" - }, - new() - { - Name = nameof(RibbonTab.ShowFloatButton), - Description = Localizer["RibbonTabsShowFloatButton"], - Type = "bool", - ValueList = " — ", - DefaultValue = " — " - }, - new() - { - Name = nameof(RibbonTab.Items), - Description = Localizer["RibbonTabsItems"], - Type = "IEnumerable", - ValueList = " — ", - DefaultValue = " — " - }, - new() - { - Name = nameof(RibbonTab.OnItemClickAsync), - Description = Localizer["RibbonTabsOnItemClickAsync"], - Type = "Func", - ValueList = " — ", - DefaultValue = " — " - }, - new() - { - Name = nameof(RibbonTab.OnMenuClickAsync), - Description = Localizer["OnMenuClickAsyncAttr"], - Type = "Func", - ValueList = " — ", - DefaultValue = " — " - }, - new() - { - Name = nameof(RibbonTab.RightButtonsTemplate), - Description = Localizer["RibbonTabsRightButtonsTemplate"], - Type = "RenderFragment", - ValueList = " — ", - DefaultValue = " — " - } - ]; } diff --git a/src/BootstrapBlazor.Server/Components/Samples/Rows.razor.cs b/src/BootstrapBlazor.Server/Components/Samples/Rows.razor.cs index ac2448bfa75..39d14811350 100644 --- a/src/BootstrapBlazor.Server/Components/Samples/Rows.razor.cs +++ b/src/BootstrapBlazor.Server/Components/Samples/Rows.razor.cs @@ -74,40 +74,4 @@ private class RowFoo : Foo [AutoGenerateColumn(Order = 60)] public List? Educations { get; set; } } - - private AttributeItem[] GetAttributes() => - [ - new() - { - Name = "ItemsPerRow", - Description = Localizer["RowsItemsPerRow"], - Type = "enum", - ValueList = " One,Two,Three,Four,Six,Twelve ", - DefaultValue = " One " - }, - new() - { - Name = "RowType", - Description = Localizer["RowsRowType"], - Type = "enum?", - ValueList = "Normal, Inline", - DefaultValue = "null" - }, - new() - { - Name = "ColSpan", - Description = Localizer["RowsColSpan"], - Type = "int?", - ValueList = "-", - DefaultValue = "null" - }, - new() - { - Name = "MaxCount", - Description = Localizer["RowsMaxCount"], - Type = "int?", - ValueList = "-", - DefaultValue = "null" - } - ]; } diff --git a/src/BootstrapBlazor.Server/Components/Samples/Scrolls.razor.cs b/src/BootstrapBlazor.Server/Components/Samples/Scrolls.razor.cs index c1367d65615..a169e3f4cb1 100644 --- a/src/BootstrapBlazor.Server/Components/Samples/Scrolls.razor.cs +++ b/src/BootstrapBlazor.Server/Components/Samples/Scrolls.razor.cs @@ -10,29 +10,6 @@ namespace BootstrapBlazor.Server.Components.Samples; /// public sealed partial class Scrolls { - /// - /// 获得属性方法 - /// - /// - private AttributeItem[] GetAttributes() => - [ - new() - { - Name = "ChildContent", - Description = Localizer["Desc1"], - Type = "RenderFragment", - ValueList = " — ", - DefaultValue = " — " - }, - new() - { - Name = "Height", - Description = Localizer["Desc2"], - Type = "string", - ValueList = " — ", - DefaultValue = " — " - } - ]; [NotNull] private Scroll? _scroll = null; diff --git a/src/BootstrapBlazor.Server/Components/Samples/SearchDialogs.razor.cs b/src/BootstrapBlazor.Server/Components/Samples/SearchDialogs.razor.cs index cd436a72e4f..f5616d1ae2b 100644 --- a/src/BootstrapBlazor.Server/Components/Samples/SearchDialogs.razor.cs +++ b/src/BootstrapBlazor.Server/Components/Samples/SearchDialogs.razor.cs @@ -83,100 +83,4 @@ private async Task ShowInlineAlignDialog() }; await DialogService.ShowSearchDialog(option); } - - /// - /// Get property method - /// - /// - private static AttributeItem[] GetAttributes() => - [ - new() - { - Name = "ShowLabel", - Description = "Whether to show labels", - Type = "bool", - ValueList = "true|false", - DefaultValue = "true" - }, - new() - { - Name = "Model", - Description = "Generic parameters are used for rendering UI", - Type = "TModel", - ValueList = " — ", - DefaultValue = " — " - }, - new() - { - Name = "Items", - Description = "Set of search criteria", - Type = "IEnumerable", - ValueList = " — ", - DefaultValue = " — " - }, - new() - { - Name = "DialogBodyTemplate", - Description = "SearchDialog Body Template", - Type = "RenderFragment", - ValueList = " — ", - DefaultValue = " — " - }, - new() - { - Name = "ResetButtonText", - Description = "Reset button text", - Type = "string", - ValueList = " — ", - DefaultValue = "reset" - }, - new() - { - Name = "QueryButtonText", - Description = "Query button text", - Type = "string", - ValueList = " — ", - DefaultValue = "Inquire" - }, - new() - { - Name = "OnResetSearchClick", - Description = "Reset callback delegate", - Type = "Func", - ValueList = " — ", - DefaultValue = " — " - }, - new() - { - Name = "OnSearchClick", - Description = "Search callback delegate", - Type = "Func", - ValueList = " — ", - DefaultValue = " — " - }, - new() - { - Name = "ItemsPerRow", - Description = "Displays the number of components per line", - Type = "int?", - ValueList = " — ", - DefaultValue = " — " - }, - new() - { - Name = "RowType", - Description = "Set the component layout", - Type = "RowType", - ValueList = "Row|Inline", - DefaultValue = "Row" - }, - new() - { - Name = "LabelAlign", - Description = "Inline Label alignment in layout mode", - Type = "Alignment", - ValueList = "None|Left|Center|Right", - DefaultValue = "None" - } - ]; } diff --git a/src/BootstrapBlazor.Server/Components/Samples/Searches.razor.cs b/src/BootstrapBlazor.Server/Components/Samples/Searches.razor.cs index d1dcf1229c9..beec7bc48d6 100644 --- a/src/BootstrapBlazor.Server/Components/Samples/Searches.razor.cs +++ b/src/BootstrapBlazor.Server/Components/Samples/Searches.razor.cs @@ -85,124 +85,4 @@ private async Task OnClickCamera(SearchContext context) private bool _isClearable = true; private bool _showClearButton = false; private bool _showSearchButton = false; - - /// - /// 获得属性方法 - /// - /// - private AttributeItem[] GetAttributes() => - [ - new() { - Name = "NoDataTip", - Description = Localizer["SearchesNoDataTip"], - Type = "string", - ValueList = " — ", - DefaultValue = Localizer["SearchesNoDataTipDefaultValue"] - }, - new() - { - Name="IsClearable", - Description = Localizer["SearchesIsClearable"], - Type = "bool", - ValueList = "true|false", - DefaultValue = "false" - }, - new() - { - Name="ClearIcon", - Description = Localizer["SearchesClearIcon"], - Type = "string", - ValueList = " — ", - DefaultValue = " — " - }, - new() - { - Name="PrefixButtonTemplate", - Description = Localizer["SearchesPrefixButtonTemplate"], - Type = "RenderFragment", - ValueList = " — ", - DefaultValue = " — " - }, - new() - { - Name="ButtonTemplate", - Description = Localizer["SearchesButtonTemplate"], - Type = "RenderFragment", - ValueList = " — ", - DefaultValue = " — " - }, - new() { - Name = "ClearButtonIcon", - Description = Localizer["SearchesClearButtonIcon"], - Type = "string", - ValueList = " — ", - DefaultValue = "fa-solid fa-trash" - }, - new() { - Name = "ClearButtonText", - Description = Localizer["SearchesClearButtonText"], - Type = "string", - ValueList = " — ", - DefaultValue = " — " - }, - new() { - Name = "ClearButtonColor", - Description = Localizer["SearchesClearButtonColor"], - Type = "Color", - ValueList = " — ", - DefaultValue = "Secondary" - }, - new() { - Name = "SearchButtonColor", - Description = Localizer["SearchesButtonColor"], - Type = "Color", - ValueList = " — ", - DefaultValue = "Primary" - }, - new() { - Name = "IsAutoFocus", - Description = Localizer["SearchesIsAutoFocus"], - Type = "bool", - ValueList = "true|false", - DefaultValue = "false" - }, - new() { - Name = "IsAutoClearAfterSearch", - Description = Localizer["SearchesIsAutoClearAfterSearch"], - Type = "bool", - ValueList = "true|false", - DefaultValue = "false" - }, - new() { - Name = "IsTriggerSearchByInput", - Description = Localizer["SearchesIsTriggerSearchByInput"], - Type = "bool", - ValueList = "true|false", - DefaultValue = "false" - }, - new() - { - Name = "ShowClearButton", - Description = Localizer["SearchesShowClearButton"], - Type = "bool", - ValueList = "true|false", - DefaultValue = "false" - }, - new() - { - Name="OnSearch", - Description = Localizer["SearchesOnSearch"], - Type = "Func", - ValueList = " — ", - DefaultValue = " — " - }, - new() - { - Name="OnClear", - Description = Localizer["SearchesOnClear"], - Type = "Func", - ValueList = " — ", - DefaultValue = " — " - } - ]; } diff --git a/src/BootstrapBlazor.Server/Components/Samples/Segmenteds.razor.cs b/src/BootstrapBlazor.Server/Components/Samples/Segmenteds.razor.cs index b443c27dd80..ac3aa7f88ba 100644 --- a/src/BootstrapBlazor.Server/Components/Samples/Segmenteds.razor.cs +++ b/src/BootstrapBlazor.Server/Components/Samples/Segmenteds.razor.cs @@ -61,88 +61,4 @@ private Task OnValueChanged(string value) } private string Value { get; set; } = "Daily"; - - private AttributeItem[] GetAttributes() => - [ - new() - { - Name = nameof(Segmented.Items), - Description = Localizer["ItemsAttr"], - Type = "IEnumerable", - ValueList = " — ", - DefaultValue = " — " - }, - new() - { - Name = nameof(Segmented.Value), - Description = Localizer["ValueChangedAttr"], - Type = "TValue", - ValueList = " — ", - DefaultValue = " — " - }, - new() - { - Name = nameof(Segmented.ValueChanged), - Description = Localizer["ValueChangedAttr"], - Type = "EventCallBack", - ValueList = " — ", - DefaultValue = " — " - }, - new() - { - Name = nameof(Segmented.OnValueChanged), - Description = Localizer["ValueChangedAttr"], - Type = "Func", - ValueList = " — ", - DefaultValue = " — " - }, - new() - { - Name = nameof(Segmented.IsDisabled), - Description = Localizer["IsDisabledAttr"], - Type = "bool", - ValueList = "true/false", - DefaultValue = "false" - }, - new() - { - Name = nameof(Segmented.IsBlock), - Description = Localizer["IsBlockAttr"], - Type = "bool", - ValueList = "true/false", - DefaultValue = "false" - }, - new() - { - Name = nameof(Segmented.ShowTooltip), - Description = Localizer["ShowTooltipAttr"], - Type = "bool", - ValueList = "true/false", - DefaultValue = "false" - }, - new() - { - Name = nameof(Segmented.Size), - Description = Localizer["SizeAttr"], - Type = "Size", - ValueList = "None / ExtraSmall / Small / Medium / Large / ExtraLarge", - DefaultValue = "None" - }, - new() - { - Name = nameof(Segmented.ItemTemplate), - Description = Localizer["ItemTemplateAttr"], - Type = "RenderFragment", - ValueList = " — ", - DefaultValue = " — " - }, - new() - { - Name = nameof(Segmented.ChildContent), - Description = Localizer["ChildContentAttr"], - Type = "RenderFragment", - ValueList = " — ", - DefaultValue = " — " - } - ]; } diff --git a/src/BootstrapBlazor.Server/Components/Samples/SelectGenerics.razor.cs b/src/BootstrapBlazor.Server/Components/Samples/SelectGenerics.razor.cs index f21c338730e..1d49e2c146f 100644 --- a/src/BootstrapBlazor.Server/Components/Samples/SelectGenerics.razor.cs +++ b/src/BootstrapBlazor.Server/Components/Samples/SelectGenerics.razor.cs @@ -303,124 +303,4 @@ private EventItem[] GetEvents() => Type = "Func>" } ]; - - /// - /// 获得属性方法 - /// - /// - private AttributeItem[] GetAttributes() => - [ - new() - { - Name = "ShowLabel", - Description = Localizer["SelectsShowLabel"], - Type = "bool", - ValueList = "true|false", - DefaultValue = "true" - }, - new() - { - Name = "ShowSearch", - Description = Localizer["SelectsShowSearch"], - Type = "bool", - ValueList = "true|false", - DefaultValue = "false" - }, - new() - { - Name = "DisplayText", - Description = Localizer["SelectsDisplayText"], - Type = "string", - ValueList = " — ", - DefaultValue = " — " - }, - new() - { - Name = "Class", - Description = Localizer["SelectsClass"], - Type = "string", - ValueList = " — ", - DefaultValue = " — " - }, - new() - { - Name = "Color", - Description = Localizer["SelectsColor"], - Type = "Color", - ValueList = "Primary / Secondary / Success / Danger / Warning / Info / Dark", - DefaultValue = "Primary" - }, - new() - { - Name = "IsEditable", - Description = Localizer["SelectsIsEditable"], - Type = "boolean", - ValueList = "true / false", - DefaultValue = "false" - }, - new() - { - Name = "IsDisabled", - Description = Localizer["SelectsIsDisabled"], - Type = "boolean", - ValueList = "true / false", - DefaultValue = "false" - }, - new() - { - Name = "Items", - Description = Localizer["SelectsItems"], - Type = "IEnumerable", - ValueList = " — ", - DefaultValue = " — " - }, - new() - { - Name = "SelectItems", - Description = Localizer["SelectItems"], - Type = "RenderFragment", - ValueList = " — ", - DefaultValue = " — " - }, - new() - { - Name = "ItemTemplate", - Description = Localizer["SelectsItemTemplate"], - Type = "RenderFragment", - ValueList = " — ", - DefaultValue = " — " - }, - new() - { - Name = "ChildContent", - Description = Localizer["SelectsChildContent"], - Type = "RenderFragment", - ValueList = " — ", - DefaultValue = " — " - }, - new() - { - Name = "Category", - Description = Localizer["SelectsCategory"], - Type = "SwalCategory", - ValueList = " — ", - DefaultValue = " SwalCategory.Information " - }, - new() - { - Name = "Content", - Description = Localizer["SelectsContent"], - Type = "string?", - ValueList = " — ", - DefaultValue = Localizer["SelectsContentDefaultValue"]! - }, - new() - { - Name = "DisableItemChangedWhenFirstRender", - Description = Localizer["SelectsDisableItemChangedWhenFirstRender"], - Type = "bool", - ValueList = "true|false", - DefaultValue = "false" - } - ]; } diff --git a/src/BootstrapBlazor.Server/Components/Samples/SelectTables.razor.cs b/src/BootstrapBlazor.Server/Components/Samples/SelectTables.razor.cs index fcdca1de2c0..74eec594582 100644 --- a/src/BootstrapBlazor.Server/Components/Samples/SelectTables.razor.cs +++ b/src/BootstrapBlazor.Server/Components/Samples/SelectTables.razor.cs @@ -92,84 +92,4 @@ class SelectTableMode [Required] public Foo? Foo { get; set; } } - - /// - /// 获得属性方法 - /// - /// - private AttributeItem[] GetAttributes() => - [ - new() - { - Name = "TableColumns", - Description = Localizer["AttributeTableColumns"], - Type = "RenderFragment", - ValueList = " — ", - DefaultValue = " — " - }, - new() - { - Name = "Color", - Description = Localizer["AttributeColor"], - Type = "Color", - ValueList = "Primary / Secondary / Success / Danger / Warning / Info / Dark", - DefaultValue = "Primary" - }, - new() - { - Name = "TableMinWidth", - Description = Localizer["AttributeTableMinWidth"], - Type = "int", - ValueList = " — ", - DefaultValue = "300" - }, - new() - { - Name = "IsDisabled", - Description = Localizer["AttributeIsDisabled"], - Type = "boolean", - ValueList = "true / false", - DefaultValue = "false" - }, - new() - { - Name = "ShowAppendArrow", - Description = Localizer["AttributeShowAppendArrow"], - Type = "bool", - ValueList = "true|false", - DefaultValue = "true" - }, - new() - { - Name = "GetTextCallback", - Description = Localizer["AttributeGetTextCallback"], - Type = "Func", - ValueList = " — ", - DefaultValue = " — " - }, - new() - { - Name = "PlaceHolder", - Description = Localizer["AttributePlaceHolder"], - Type = "string?", - ValueList = " — ", - DefaultValue = " — " - }, - new() - { - Name = "Height", - Description = Localizer["AttributeHeight"], - Type = "int", - ValueList = " — ", - DefaultValue = "486" - }, - new() - { - Name = "Template", - Description = Localizer["AttributeTemplate"], - Type = "RenderFragment", - ValueList = " — ", - DefaultValue = " — " - } - ]; } diff --git a/src/BootstrapBlazor.Server/Components/Samples/Selects.razor.cs b/src/BootstrapBlazor.Server/Components/Samples/Selects.razor.cs index 68f03e8d9a8..c3f8f9a0c08 100644 --- a/src/BootstrapBlazor.Server/Components/Samples/Selects.razor.cs +++ b/src/BootstrapBlazor.Server/Components/Samples/Selects.razor.cs @@ -299,156 +299,4 @@ private EventItem[] GetEvents() => Type = "Func>" } ]; - - /// - /// 获得属性方法 - /// - /// - private AttributeItem[] GetAttributes() => - [ - new() - { - Name = "ShowLabel", - Description = Localizer["SelectsShowLabel"], - Type = "bool", - ValueList = "true|false", - DefaultValue = "true" - }, - new() - { - Name = "ShowSearch", - Description = Localizer["SelectsShowSearch"], - Type = "bool", - ValueList = "true|false", - DefaultValue = "false" - }, - new() - { - Name = "IsAutoClearSearchTextWhenCollapsed", - Description = Localizer["SelectsIsAutoClearSearchTextWhenCollapsed"], - Type = "bool", - ValueList = "true|false", - DefaultValue = "false" - }, - new() - { - Name = "DisplayText", - Description = Localizer["SelectsDisplayText"], - Type = "string", - ValueList = " — ", - DefaultValue = " — " - }, - new() - { - Name = "Class", - Description = Localizer["SelectsClass"], - Type = "string", - ValueList = " — ", - DefaultValue = " — " - }, - new() - { - Name = "Color", - Description = Localizer["SelectsColor"], - Type = "Color", - ValueList = "Primary / Secondary / Success / Danger / Warning / Info / Dark", - DefaultValue = "Primary" - }, - new() - { - Name = "IsEditable", - Description = Localizer["SelectsIsEditable"], - Type = "boolean", - ValueList = "true / false", - DefaultValue = "false" - }, - new() - { - Name = "IsDisabled", - Description = Localizer["SelectsIsDisabled"], - Type = "boolean", - ValueList = "true / false", - DefaultValue = "false" - }, - new() - { - Name = "Items", - Description = Localizer["SelectsItems"], - Type = "IEnumerable", - ValueList = " — ", - DefaultValue = " — " - }, - new() - { - Name = "SelectItems", - Description = Localizer["SelectItems"], - Type = "RenderFragment", - ValueList = " — ", - DefaultValue = " — " - }, - new() - { - Name = "ItemTemplate", - Description = Localizer["SelectsItemTemplate"], - Type = "RenderFragment", - ValueList = " — ", - DefaultValue = " — " - }, - new() - { - Name = "ChildContent", - Description = Localizer["SelectsChildContent"], - Type = "RenderFragment", - ValueList = " — ", - DefaultValue = " — " - }, - new() - { - Name = "Category", - Description = Localizer["SelectsCategory"], - Type = "SwalCategory", - ValueList = " — ", - DefaultValue = " SwalCategory.Information " - }, - new() - { - Name = "Content", - Description = Localizer["SelectsContent"], - Type = "string?", - ValueList = " — ", - DefaultValue = Localizer["SelectsContentDefaultValue"]! - }, - new() - { - Name = "DisableItemChangedWhenFirstRender", - Description = Localizer["SelectsDisableItemChangedWhenFirstRender"], - Type = "bool", - ValueList = "true|false", - DefaultValue = "false" - }, - new() - { - Name = nameof(Select.IsVirtualize), - Description = Localizer["SelectsIsVirtualize"], - Type = "bool", - ValueList = "true|false", - DefaultValue = "false" - }, - new() - { - Name = nameof(Select.DefaultVirtualizeItemText), - Description = Localizer["SelectsDefaultVirtualizeItemText"], - Type = "string", - ValueList = " — ", - DefaultValue = " — " - }, - new() - { - Name = nameof(Select.ShowSwal), - Description = Localizer["SelectsShowSwal"], - Type = "bool", - ValueList = "true|false", - DefaultValue = "true" - } - ]; } diff --git a/src/BootstrapBlazor.Server/Components/Samples/SignaturePads.razor.cs b/src/BootstrapBlazor.Server/Components/Samples/SignaturePads.razor.cs index 2c3ae9a5fb5..d1a7626b64c 100644 --- a/src/BootstrapBlazor.Server/Components/Samples/SignaturePads.razor.cs +++ b/src/BootstrapBlazor.Server/Components/Samples/SignaturePads.razor.cs @@ -45,196 +45,4 @@ private Task OnResult3(string result) StateHasChanged(); return Task.CompletedTask; } - - /// - /// 获得属性方法 - /// - /// - private static AttributeItem[] GetAttributes() => - [ - new() - { - Name = "OnResult", - Description = "签名结果回调方法", - Type = "Func?", - ValueList = " — ", - DefaultValue = " — " - }, - new() - { - Name = "OnAlert", - Description = "手写签名警告信息回调", - Type = "Func?", - ValueList = " — ", - DefaultValue = " — " - }, - new() - { - Name = "OnError", - Description = "错误回调方法", - Type = "Func?", - ValueList = " — ", - DefaultValue = " — " - }, - new() - { - Name = "OnClose", - Description = "手写签名关闭信息回调", - Type = "Func?", - ValueList = " — ", - DefaultValue = " — " - }, - new() - { - Name = "SignAboveLabel", - Description = "在框内签名标签文本", - Type = "string", - ValueList = " — ", - DefaultValue = "在框内签名" - }, - new() - { - Name = "ClearBtnTitle", - Description = "清除按钮文本", - Type = "string", - ValueList = " — ", - DefaultValue = "清除" - }, - new() - { - Name = "SignatureAlertText", - Description = "请先签名提示文本", - Type = "string", - ValueList = " — ", - DefaultValue = "请先签名" - }, - new() - { - Name = "ChangeColorBtnTitle", - Description = "换颜色按钮文本", - Type = "string", - ValueList = " — ", - DefaultValue = "换颜色" - }, - new() - { - Name = "UndoBtnTitle", - Description = "撤消按钮文本", - Type = "string", - ValueList = " — ", - DefaultValue = "撤消" - }, - new() - { - Name = "SaveBase64BtnTitle", - Description = "保存为 base64 按钮文本", - Type = "string", - ValueList = " — ", - DefaultValue = "确定" - }, - new() - { - Name = "SavePNGBtnTitle", - Description = "保存为 PNG 按钮文本", - Type = "string", - ValueList = " — ", - DefaultValue = "PNG" - }, - new() - { - Name = "SaveJPGBtnTitle", - Description = "保存为 JPG 按钮文本", - Type = "string", - ValueList = " — ", - DefaultValue = "JPG" - }, - new() - { - Name = "SaveSVGBtnTitle", - Description = "保存为 SVG 按钮文本", - Type = "string", - ValueList = " — ", - DefaultValue = "SVG" - }, - new() - { - Name = "EnableChangeColorBtn", - Description = "启用换颜色按钮", - Type = "bool", - ValueList = " — ", - DefaultValue = "true" - }, - new() - { - Name = "EnableAlertJS", - Description = "启用 JS 错误弹窗", - Type = "bool", - ValueList = " — ", - DefaultValue = "true" - }, - new() - { - Name = "EnableSaveBase64Btn", - Description = "启用保存为 base64", - Type = "bool", - ValueList = " — ", - DefaultValue = "true" - }, - new() - { - Name = "EnableSavePNGBtn", - Description = "启用保存为 PNG", - Type = "bool", - ValueList = " — ", - DefaultValue = "false" - }, - new() - { - Name = "EnableSaveJPGBtn", - Description = "启用保存为 JPG", - Type = "bool", - ValueList = " — ", - DefaultValue = "false" - }, - new() - { - Name = "EnableAlertJS", - Description = "启用保存为 SVG", - Type = "bool", - ValueList = " — ", - DefaultValue = "false" - }, - new() - { - Name = "CssClass", - Description = "组件 CSS 式样", - Type = "string", - ValueList = " — ", - DefaultValue = "signature-pad-body" - }, - new() - { - Name = "BtnCssClass", - Description = "按钮 CSS 式样", - Type = "string", - ValueList = " — ", - DefaultValue = "btn btn-light" - }, - new() - { - Name = "Responsive", - Description = "启用响应式 css 界面", - Type = "bool", - ValueList = " — ", - DefaultValue = "false" - }, - new() - { - Name = "BackgroundColor", - Description = "组件背景,设置 #0000000 为透明", - Type = "string", - ValueList = " — ", - DefaultValue = "rgb(255, 255, 255)" - } - ]; } diff --git a/src/BootstrapBlazor.Server/Components/Samples/Skeletons.razor.cs b/src/BootstrapBlazor.Server/Components/Samples/Skeletons.razor.cs index 568bcd7aa58..c0545763a12 100644 --- a/src/BootstrapBlazor.Server/Components/Samples/Skeletons.razor.cs +++ b/src/BootstrapBlazor.Server/Components/Samples/Skeletons.razor.cs @@ -10,51 +10,4 @@ namespace BootstrapBlazor.Server.Components.Samples; /// public partial class Skeletons { - /// - /// 获得属性方法 - /// - /// - private static AttributeItem[] GetAttributes() => - [ - new() - { - Name = nameof(SkeletonTable.Round), - Description = "是否显示圆角", - Type = "bool", - ValueList = "true|false", - DefaultValue = "true" - }, - new() - { - Name = nameof(SkeletonTable.Active), - Description = "是否显示动画", - Type = "bool", - ValueList = "true|false", - DefaultValue = "true" - }, - new() - { - Name = nameof(SkeletonTable.Rows), - Description = "骨架屏默认显示行数", - Type = "bool", - ValueList = "int", - DefaultValue = "7" - }, - new() - { - Name = nameof(SkeletonTable.Columns), - Description = "骨架屏默认显示列数", - Type = "bool", - ValueList = "int", - DefaultValue = "3" - }, - new() - { - Name = nameof(SkeletonTable.ShowToolbar), - Description = "是否显示 Toolbar", - Type = "bool", - ValueList = "true|false", - DefaultValue = "true" - } - ]; } diff --git a/src/BootstrapBlazor.Server/Components/Samples/SlideButtons.razor.cs b/src/BootstrapBlazor.Server/Components/Samples/SlideButtons.razor.cs index 49aa9ce73fd..c64465103df 100644 --- a/src/BootstrapBlazor.Server/Components/Samples/SlideButtons.razor.cs +++ b/src/BootstrapBlazor.Server/Components/Samples/SlideButtons.razor.cs @@ -26,20 +26,4 @@ private Task OnClickPlacement(Placement placement) } private CheckboxState CheckState(string state) => Placement.ToDescriptionString() == state ? CheckboxState.Checked : CheckboxState.UnChecked; - - /// - /// GetAttributes - /// - /// - private static AttributeItem[] GetAttributes() => - [ - new() - { - Name = nameof(FileViewer.Filename), - Description = "Excel/Word 文件路径或者URL", - Type = "string", - ValueList = " — ", - DefaultValue = " — " - } - ]; } diff --git a/src/BootstrapBlazor.Server/Components/Samples/Sliders.razor.cs b/src/BootstrapBlazor.Server/Components/Samples/Sliders.razor.cs index 26323da236a..2d1378ce0d9 100644 --- a/src/BootstrapBlazor.Server/Components/Samples/Sliders.razor.cs +++ b/src/BootstrapBlazor.Server/Components/Samples/Sliders.razor.cs @@ -43,30 +43,6 @@ private Task OnRangeSliderValueChanged(double value) return Task.CompletedTask; } - /// - /// 获得属性方法 - /// - /// - private AttributeItem[] GetAttributes() => - [ - new() - { - Name = "IsDisabled", - Description = Localizer["SlidersIsDisabled"], - Type = "bool", - ValueList = " — ", - DefaultValue = "false" - }, - new() - { - Name = "Value", - Description = Localizer["SlidersValue"], - Type = "int", - ValueList = " — ", - DefaultValue = " — " - }, - ]; - /// /// 获得事件方法 /// diff --git a/src/BootstrapBlazor.Server/Components/Samples/SortableLists.razor.cs b/src/BootstrapBlazor.Server/Components/Samples/SortableLists.razor.cs index 31c055a53e9..ac859b8b5f8 100644 --- a/src/BootstrapBlazor.Server/Components/Samples/SortableLists.razor.cs +++ b/src/BootstrapBlazor.Server/Components/Samples/SortableLists.razor.cs @@ -316,40 +316,4 @@ private Task OnRemoveItems3(SortableEvent @event) AddItems3.RemoveAt(@event.OldIndex); return Task.CompletedTask; } - - private AttributeItem[] GetAttributes() => - [ - new() - { - Name = nameof(SortableList.Option), - Description = Localizer["AttributeSortableListOption"], - Type = "SortableOption", - ValueList = " — ", - DefaultValue = "false" - }, - new() - { - Name = nameof(SortableList.OnAdd), - Description = Localizer["AttributeOnAdd"], - Type = "Func", - ValueList = " — ", - DefaultValue = " — " - }, - new() - { - Name = nameof(SortableList.OnUpdate), - Description = Localizer["AttributeOnUpdate"], - Type = "Func", - ValueList = " — ", - DefaultValue = " — " - }, - new() - { - Name = nameof(SortableList.OnRemove), - Description = Localizer["AttributeOnRemove"], - Type = "Func", - ValueList = " — ", - DefaultValue = " — " - } - ]; } diff --git a/src/BootstrapBlazor.Server/Components/Samples/Speeches/SpeechWaves.razor.cs b/src/BootstrapBlazor.Server/Components/Samples/Speeches/SpeechWaves.razor.cs index adc20163f98..b2e18a79f16 100644 --- a/src/BootstrapBlazor.Server/Components/Samples/Speeches/SpeechWaves.razor.cs +++ b/src/BootstrapBlazor.Server/Components/Samples/Speeches/SpeechWaves.razor.cs @@ -18,44 +18,4 @@ private void OnClickShow() { IsShow = !IsShow; } - - /// - /// 获得属性方法 - /// - /// - private AttributeItem[] GetAttributes() => - [ - new() - { - Name = nameof(SpeechWave.Show), - Description = Localizer["ShowAttr"], - Type = "bool", - ValueList = "true/false", - DefaultValue = "false" - }, - new() - { - Name = nameof(SpeechWave.ShowUsedTime), - Description = Localizer["ShowUsedTimeAttr"], - Type = "bool", - ValueList = "true/false", - DefaultValue = "true" - }, - new() - { - Name = nameof(SpeechWave.OnTimeout), - Description = Localizer["OnTimeoutAttr"], - Type = "Func", - ValueList = " — ", - DefaultValue = " — " - }, - new() - { - Name = nameof(SpeechWave.TotalTime), - Description = Localizer["TotalTimeSecondAttr"], - Type = "int", - ValueList = " — ", - DefaultValue = "60000" - } - ]; } diff --git a/src/BootstrapBlazor.Server/Components/Samples/Spinners.razor.cs b/src/BootstrapBlazor.Server/Components/Samples/Spinners.razor.cs index 99fa6222323..edd2ad746ab 100644 --- a/src/BootstrapBlazor.Server/Components/Samples/Spinners.razor.cs +++ b/src/BootstrapBlazor.Server/Components/Samples/Spinners.razor.cs @@ -10,43 +10,4 @@ namespace BootstrapBlazor.Server.Components.Samples; /// public sealed partial class Spinners { - /// - /// Get property method - /// - /// - private static AttributeItem[] GetAttributes() => - [ - new() - { - Name = "Class", - Description = "style", - Type = "string", - ValueList = " — ", - DefaultValue = " — " - }, - new() - { - Name = "Color", - Description = "Color", - Type = "Color", - ValueList = "Primary / Secondary / Success / Danger / Warning / Info / Dark", - DefaultValue = "Primary" - }, - new() - { - Name = "Size", - Description = "Size", - Type = "Size", - ValueList = "None / ExtraSmall / Small / Medium / Large / ExtraLarge", - DefaultValue = "None" - }, - new() - { - Name = "SpinnerType", - Description = "Icon type", - Type = "SpinnerType", - ValueList = " Border / Grow ", - DefaultValue = "SpinnerType.Border" - } - ]; } diff --git a/src/BootstrapBlazor.Server/Components/Samples/Splits.razor.cs b/src/BootstrapBlazor.Server/Components/Samples/Splits.razor.cs index 64a5725acce..a402f42cb18 100644 --- a/src/BootstrapBlazor.Server/Components/Samples/Splits.razor.cs +++ b/src/BootstrapBlazor.Server/Components/Samples/Splits.razor.cs @@ -55,92 +55,4 @@ private Task OnResizedAsync(SplitterResizedEventArgs args) private Split Split1 = default!; private Task OnSetLeft(string leftWidth) => Split1.SetLeftWidth(leftWidth); - - /// - /// 获得属性方法 - /// - /// - private AttributeItem[] GetAttributes() => - [ - new() - { - Name = "IsVertical", - Description = Localizer["SplitsIsVertical"], - Type = "bool", - ValueList = "true|false", - DefaultValue = "false" - }, - new() - { - Name = "ShowBarHandle", - Description = Localizer["SplitsShowBarHandle"], - Type = "bool", - ValueList = "true|false", - DefaultValue = "true" - }, - new() - { - Name = "Basis", - Description = Localizer["SplitsBasis"], - Type = "string", - ValueList = " — ", - DefaultValue = "50%" - }, - new() - { - Name = "FirstPaneTemplate", - Description = Localizer["SplitsFirstPaneTemplate"], - Type = "RenderFragment", - ValueList = " — ", - DefaultValue = " — " - }, - new() - { - Name = "FirstPaneMinimumSize", - Description = Localizer["SplitsFirstPaneMinimumSize"], - Type = "string", - ValueList = " — ", - DefaultValue = " — " - }, - new() - { - Name = "SecondPaneTemplate", - Description = Localizer["SplitsSecondPaneTemplate"], - Type = "RenderFragment", - ValueList = " — ", - DefaultValue = " — " - }, - new() - { - Name = "SecondPaneMinimumSize", - Description = Localizer["SplitsSecondPaneMinimumSize"], - Type = "string", - ValueList = " — ", - DefaultValue = " — " - }, - new() - { - Name = "IsCollapsible", - Description = Localizer["SplitsIsCollapsible"], - Type = "bool", - ValueList = "true|false", - DefaultValue = "false" - }, - new() - { - Name = "IsKeepOriginalSize", - Description = Localizer["SplitsIsKeepOriginalSize"], - Type = "bool", - ValueList = "true|false", - DefaultValue = "true" - }, - new() - { - Name = "OnResizedAsync", - Description = Localizer["SplitsOnResizedAsync"], - Type = "Func", - ValueList = " — ", - DefaultValue = " — " - } - ]; } diff --git a/src/BootstrapBlazor.Server/Components/Samples/Splittings.razor.cs b/src/BootstrapBlazor.Server/Components/Samples/Splittings.razor.cs index 5353191fee9..7d9bc841db6 100644 --- a/src/BootstrapBlazor.Server/Components/Samples/Splittings.razor.cs +++ b/src/BootstrapBlazor.Server/Components/Samples/Splittings.razor.cs @@ -11,48 +11,4 @@ namespace BootstrapBlazor.Server.Components.Samples; public partial class Splittings { private int _columns = 30; - - private static AttributeItem[] GetAttributes() => - [ - new() - { - Name = "Text", - Description = "display text", - Type = "string", - ValueList = " — ", - DefaultValue = "Loading ..." - }, - new() - { - Name = "Columns", - Description = "Progress bar segmentation granularity", - Type = "int", - ValueList = " — ", - DefaultValue = "10" - }, - new() - { - Name = "Color", - Description = "the color of progress", - Type = "Enum", - ValueList = " — ", - DefaultValue = "Primary" - }, - new() - { - Name = "ShowLoadingText", - Description = "Whether show the text of loading", - Type = "bool", - ValueList = "true|false", - DefaultValue = "true" - }, - new() - { - Name = "Repeat", - Description = "Is repeat the animation", - Type = "int", - ValueList = ">= -1", - DefaultValue = "-1" - } - ]; } diff --git a/src/BootstrapBlazor.Server/Components/Samples/Steps.razor.cs b/src/BootstrapBlazor.Server/Components/Samples/Steps.razor.cs index a269253e9f0..ebc39316ea7 100644 --- a/src/BootstrapBlazor.Server/Components/Samples/Steps.razor.cs +++ b/src/BootstrapBlazor.Server/Components/Samples/Steps.razor.cs @@ -65,34 +65,6 @@ private static void ResetStep(Step? step) step?.Reset(); } - private AttributeItem[] GetAttributes() => - [ - new() - { - Name = "Items", - Description = Localizer["StepsItems"], - Type = "List", - ValueList = " — ", - DefaultValue = " — " - }, - new() - { - Name = "StepIndex", - Description = Localizer["StepsAttrStepIndex"], - Type = "int", - ValueList = " — ", - DefaultValue = "0" - }, - new() - { - Name = "IsVertical", - Description = Localizer["StepsIsVertical"], - Type = "bool", - ValueList = "true|false", - DefaultValue = "false" - } - ]; - private AttributeItem[] GetStepItemAttributes() => [ new() diff --git a/src/BootstrapBlazor.Server/Components/Samples/SweetAlerts.razor.cs b/src/BootstrapBlazor.Server/Components/Samples/SweetAlerts.razor.cs index 5cde15e70c7..1e643c8e872 100644 --- a/src/BootstrapBlazor.Server/Components/Samples/SweetAlerts.razor.cs +++ b/src/BootstrapBlazor.Server/Components/Samples/SweetAlerts.razor.cs @@ -118,108 +118,4 @@ private async Task ShowAutoCloseSwal() }; await SwalService.Show(op); } - - /// - /// GetAttributes - /// - /// - private AttributeItem[] GetAttributes() => - [ - new() - { - Name = "Category", - Description = Localizer["AttrCategory"], - Type = "SwalCategory", - ValueList = "Success/Error/Information/Warning/Question", - DefaultValue = "Success" - }, - new() - { - Name = "Title", - Description = Localizer["AttrTitle"], - Type = "string", - ValueList = "—", - DefaultValue = "" - }, - new() - { - Name = "Content", - Description = Localizer["AttrContent"], - Type = "string", - ValueList = "—", - DefaultValue = "" - }, - new() - { - Name = "Delay", - Description = Localizer["AttrDelay"], - Type = "int", - ValueList = "—", - DefaultValue = "4000" - }, - new() - { - Name = "IsAutoHide", - Description = Localizer["AttrAutoHide"], - Type = "boolean", - ValueList = "true|false", - DefaultValue = "false" - }, - new() - { - Name = "ShowClose", - Description = Localizer["AttrShowClose"], - Type = "boolean", - ValueList = "true|false", - DefaultValue = "true" - }, - new() - { - Name = "ShowFooter", - Description = Localizer["AttrShowFooter"], - Type = "boolean", - ValueList = "true|false", - DefaultValue = "false" - }, - new() - { - Name = "IsConfirm", - Description = Localizer["AttrIsConfirm"], - Type = "boolean", - ValueList = "true|false", - DefaultValue = "false" - }, - new() - { - Name = "BodyContext", - Description = Localizer["AttrBodyContext"], - Type = "object", - ValueList = " — ", - DefaultValue = " — " - }, - new() - { - Name = "BodyTemplate", - Description = Localizer["AttrBodyTemplate"], - Type = "RenderFragment", - ValueList = " — ", - DefaultValue = " — " - }, - new() - { - Name = "FooterTemplate", - Description = Localizer["AttrFooterTemplate"], - Type = "RenderFragment", - ValueList = " — ", - DefaultValue = " — " - }, - new() - { - Name = "ButtonTemplate", - Description = Localizer["AttrButtonTemplate"], - Type = "RenderFragment", - ValueList = " — ", - DefaultValue = " — " - } - ]; } diff --git a/src/BootstrapBlazor.Server/Components/Samples/SwitchButtons.razor.cs b/src/BootstrapBlazor.Server/Components/Samples/SwitchButtons.razor.cs index decdc5eaed6..f62eed1c419 100644 --- a/src/BootstrapBlazor.Server/Components/Samples/SwitchButtons.razor.cs +++ b/src/BootstrapBlazor.Server/Components/Samples/SwitchButtons.razor.cs @@ -19,52 +19,4 @@ private void OnClick() { Logger.Log("Clicked"); } - - /// - /// 获得属性方法 - /// - /// - private static AttributeItem[] GetAttributes() => - [ - new() - { - Name = "OnText", - Description = "On 状态显示文字", - Type = "string", - ValueList = " — ", - DefaultValue = " — " - }, - new() - { - Name = "OffText", - Description = "Off 状态显示文字", - Type = "string", - ValueList = " — ", - DefaultValue = " — " - }, - new() - { - Name = "ToggleState", - Description = "当前状态", - Type = "boolean", - ValueList = "true/false", - DefaultValue = "false" - }, - new() - { - Name = "ToggleStateChanged", - Description = "状态切换回调方法", - Type = "Func", - ValueList = " — ", - DefaultValue = " — " - }, - new() - { - Name = "OnClick", - Description = "点击回调方法", - Type = "EventCallback", - ValueList = " — ", - DefaultValue = " — " - } - ]; } diff --git a/src/BootstrapBlazor.Server/Components/Samples/Switches.razor.cs b/src/BootstrapBlazor.Server/Components/Samples/Switches.razor.cs index ae52a20f757..9469bb9973f 100644 --- a/src/BootstrapBlazor.Server/Components/Samples/Switches.razor.cs +++ b/src/BootstrapBlazor.Server/Components/Samples/Switches.razor.cs @@ -33,134 +33,6 @@ private class Foo private Foo Model { get; set; } = new Foo(); - /// - /// 获得属性方法 - /// - /// - private AttributeItem[] GetAttributes() => - [ - new() - { - Name = "Class", - Description = Localizer["SwitchesAttributeClass"], - Type = "string", - ValueList = " — ", - DefaultValue = " — " - }, - new() - { - Name = "Height", - Description = Localizer["SwitchesAttributeHeight"], - Type = "int", - ValueList = "—", - DefaultValue = "20" - }, - new() - { - Name = "IsDisabled", - Description = Localizer["SwitchesAttributeIsDisabled"], - Type = "boolean", - ValueList = " — ", - DefaultValue = "false" - }, - new() - { - Name = "OffColor", - Description = Localizer["SwitchesAttributeOffColor"], - Type = "Color", - ValueList = " Primary / Secondary / Success / Danger / Warning / Info / Dark ", - DefaultValue = "None" - }, - new() - { - Name = "OnColor", - Description = Localizer["SwitchesAttributeOnColor"], - Type = "Color", - ValueList = " Primary / Secondary / Success / Danger / Warning / Info / Dark ", - DefaultValue = "Color.Success" - }, - new() - { - Name = "OnText", - Description = Localizer["SwitchesAttributeOnTextAttr"], - Type = "string", - ValueList = "—", - DefaultValue = "—" - }, - new() - { - Name = "OffText", - Description = Localizer["SwitchesAttributeOffTextAttr"], - Type = "string", - ValueList = "—", - DefaultValue = "—" - }, - new() - { - Name = "OnInnerText", - Description = Localizer["SwitchesAttributeOnInnerTextAttr"], - Type = "string", - ValueList = " — ", - DefaultValue = Localizer["SwitchesAttributeOnInnerTextDefaultValue"]! - }, - new() - { - Name = "OffInnerText", - Description = Localizer["SwitchesAttributeOffInnerTextAttr"], - Type = "string", - ValueList = " — ", - DefaultValue = Localizer["SwitchesAttributeOffInnerTextDefaultValue"]! - }, - new() - { - Name = "ShowInnerText", - Description = Localizer["SwitchesAttributeShowInnerText"], - Type = "bool", - ValueList = "true|false", - DefaultValue = "false" - }, - new() - { - Name = "Width", - Description = Localizer["SwitchesAttributeWidth"], - Type = "int", - ValueList = "—", - DefaultValue = "40" - }, - new() - { - Name = "Value", - Description = Localizer["SwitchesAttributeValue"], - Type = "boolean", - ValueList = " ", - DefaultValue = "None" - }, - new() - { - Name = "ShowLabel", - Description = Localizer["SwitchesAttributeShowLabel"], - Type = "bool", - ValueList = "true|false", - DefaultValue = "true" - }, - new() - { - Name = "DisplayText", - Description = Localizer["SwitchesAttributeDisplayText"], - Type = "string", - ValueList = " — ", - DefaultValue = " — " - }, - new() - { - Name = "OnValueChanged", - Description = Localizer["SwitchesAttributeOnValueChanged"], - Type = "Func", - ValueList = " — ", - DefaultValue = " — " - } - ]; - /// /// 获得事件方法 /// diff --git a/src/BootstrapBlazor.Server/Components/Samples/Table/TablesCell.razor.cs b/src/BootstrapBlazor.Server/Components/Samples/Table/TablesCell.razor.cs index b9c823b2d92..dfde3387670 100644 --- a/src/BootstrapBlazor.Server/Components/Samples/Table/TablesCell.razor.cs +++ b/src/BootstrapBlazor.Server/Components/Samples/Table/TablesCell.razor.cs @@ -52,48 +52,4 @@ await ToastService.Show(new ToastOption() Content = $"{Localizer["TableCellOnDoubleClickCellCurrentCellName"]}{displayName} {Localizer["TableCellOnDoubleClickCellCurrentValue"]}{value}" }); } - - private AttributeItem[] GetAttributes() => - [ - new() - { - Name = "Row", - Description = Localizer["RowAttr"], - Type = "object", - ValueList = " — ", - DefaultValue = "" - }, - new() - { - Name = "ColumnName", - Description = Localizer["ColumnNameAttr"], - Type = "string", - ValueList = " — ", - DefaultValue = " — " - }, - new() - { - Name = "Colspan", - Description = Localizer["ColspanAttr"], - Type = "int", - ValueList = " — ", - DefaultValue = "0" - }, - new() - { - Name = "Class", - Description = Localizer["ClassAttr"], - Type = "string", - ValueList = " — ", - DefaultValue = " — " - }, - new() - { - Name = "Value", - Description = Localizer["ValueAttr"], - Type = "string", - ValueList = " — ", - DefaultValue = " — " - } - ]; } diff --git a/src/BootstrapBlazor.Server/Components/Samples/Tabs.razor.cs b/src/BootstrapBlazor.Server/Components/Samples/Tabs.razor.cs index fa194676236..bc416d31ad4 100644 --- a/src/BootstrapBlazor.Server/Components/Samples/Tabs.razor.cs +++ b/src/BootstrapBlazor.Server/Components/Samples/Tabs.razor.cs @@ -163,358 +163,6 @@ private Task OnSetTitle(string text) return Task.CompletedTask; } - /// - /// 获得属性方法 - /// - /// - private AttributeItem[] GetAttributes() => - [ - new() - { - Name = "IsBorderCard", - Description = Localizer["TabsAtt1IsBorderCard"].Value, - Type = "boolean", - ValueList = "true/false", - DefaultValue = "false" - }, - new() - { - Name = "IsCard", - Description = Localizer["TabAtt2IsCard"].Value, - Type = "boolean", - ValueList = "true/false", - DefaultValue = "false" - }, - new() - { - Name = "IsOnlyRenderActiveTab", - Description = Localizer["TabAtt3IsOnlyRenderActiveTab"].Value, - Type = "boolean", - ValueList = "true/false", - DefaultValue = "false" - }, - new() - { - Name = "IsLazyLoadTabItem", - Description = Localizer["TabAttIsLazyLoadTabItem"].Value, - Type = "boolean", - ValueList = "true/false", - DefaultValue = "false" - }, - new() - { - Name = nameof(Tab.IsLoopSwitchTabItem), - Description = Localizer["TabAttIsLoopSwitchTabItem"].Value, - Type = "boolean", - ValueList = "true/false", - DefaultValue = "true" - }, - new() - { - Name = "ShowClose", - Description = Localizer["TabAtt4ShowClose"].Value, - Type = "boolean", - ValueList = "true/false", - DefaultValue = "false" - }, - new() - { - Name = "ShowExtendButtons", - Description = Localizer["TabAtt5ShowExtendButtons"].Value, - Type = "boolean", - ValueList = "true|false", - DefaultValue = "false" - }, - new() - { - Name = "ShowNavigatorButtons", - Description = Localizer["TabAttShowNavigatorButtons"].Value, - Type = "boolean", - ValueList = "true|false", - DefaultValue = "true" - }, - new() - { - Name = "ShowActiveBar", - Description = Localizer["TabAttShowActiveBar"].Value, - Type = "boolean", - ValueList = "true|false", - DefaultValue = "true" - }, - new() - { - Name = "ClickTabToNavigation", - Description = Localizer["TabAtt6ClickTabToNavigation"].Value, - Type = "boolean", - ValueList = "true/false", - DefaultValue = "false" - }, - new() - { - Name = "TabStyle", - Description = Localizer["TabAtt2TabStyle"].Value, - Type = "TabStyle", - ValueList = "Default|Chrome", - DefaultValue = "Default" - }, - new() - { - Name = "Placement", - Description = Localizer["TabAtt7Placement"].Value, - Type = "Placement", - ValueList = "Top|Right|Bottom|Left", - DefaultValue = "Top" - }, - new() - { - Name = "Height", - Description = Localizer["TabAtt8Height"].Value, - Type = "int", - ValueList = " — ", - DefaultValue = "0" - }, - new() - { - Name = "Items", - Description = Localizer["TabAtt9Items"].Value, - Type = "IEnumerable", - ValueList = " — ", - DefaultValue = " — " - }, - new() - { - Name = "DefaultUrl", - Description = Localizer["TabDefaultUrl"].Value, - Type = "string", - ValueList = " — ", - DefaultValue = " — " - }, - new() - { - Name = "HeaderTemplate", - Description = Localizer["TabAttHeaderTemplate"].Value, - Type = "RenderFragment", - ValueList = " — ", - DefaultValue = " — " - }, - new() - { - Name = "ChildContent", - Description = Localizer["TabAtt10ChildContent"].Value, - Type = "RenderFragment", - ValueList = " — ", - DefaultValue = " — " - }, - new() - { - Name = "AdditionalAssemblies", - Description = Localizer["TabAtt11AdditionalAssemblies"].Value, - Type = "IEnumerable", - ValueList = " — ", - DefaultValue = " — " - }, - new() - { - Name = "OnClickTab", - Description = Localizer["TabAtt12OnClickTab"].Value, - Type = "Func", - ValueList = " — ", - DefaultValue = " — " - }, - new() - { - Name = "OnCloseTabItemAsync", - Description = Localizer["AttributeOnCloseTabItemAsync"].Value, - Type = "Func>", - ValueList = " — ", - DefaultValue = " — " - }, - new() - { - Name = "OnClickTabItemAsync", - Description = Localizer["AttributeOnClickTabItemAsync"].Value, - Type = "Func", - ValueList = " — ", - DefaultValue = " — " - }, - new() - { - Name = "AllowDrag", - Description = Localizer["TabAttAllowDrag"].Value, - Type = "bool", - ValueList = "true/false", - DefaultValue = "false" - }, - new() - { - Name = "OnDragItemEndAsync", - Description = Localizer["TabAttOnDragItemEndAsync"].Value, - Type = "Func", - ValueList = " — ", - DefaultValue = " — " - }, - new() - { - Name = "NotAuthorized", - Description = Localizer["AttributeNotAuthorized"].Value, - Type = "RenderFragment", - ValueList = " — ", - DefaultValue = " — " - }, - new() - { - Name = "NotFound", - Description = Localizer["AttributeNotFound"].Value, - Type = "RenderFragment", - ValueList = " — ", - DefaultValue = " — " - }, - new() - { - Name = "ExcludeUrls", - Description = Localizer["AttributeExcludeUrls"].Value, - Type = "IEnumerable", - ValueList = " — ", - DefaultValue = " — " - }, - new() - { - Name = "ButtonTemplate", - Description = Localizer["AttributeButtonTemplate"].Value, - Type = "RenderFragment", - ValueList = " — ", - DefaultValue = " — " - }, - new() - { - Name = nameof(Tab.ShowToolbar), - Description = Localizer["AttributeShowToolbar"].Value, - Type = "bool", - ValueList = "true|false", - DefaultValue = "false" - }, - new() - { - Name = nameof(Tab.ToolbarTemplate), - Description = Localizer["AttributeToolbarTemplate"].Value, - Type = "RenderFragment", - ValueList = " — ", - DefaultValue = " — " - }, - new() - { - Name = nameof(Tab.ShowRefreshToolbarButton), - Description = Localizer["AttributeShowRefreshToolbarButton"].Value, - Type = "bool", - ValueList = "true|false", - DefaultValue = "true" - }, - new() - { - Name = nameof(Tab.ShowFullscreenToolbarButton), - Description = Localizer["AttributeShowFullscreenToolbarButton"].Value, - Type = "bool", - ValueList = "true|false", - DefaultValue = "true" - }, - new() - { - Name = nameof(Tab.RefreshToolbarTooltipText), - Description = Localizer["AttributeRefreshToolbarTooltipText"].Value, - Type = "string?", - ValueList = " — ", - DefaultValue = " — " - }, - new() - { - Name = nameof(Tab.FullscreenToolbarTooltipText), - Description = Localizer["AttributeFullscreenToolbarTooltipText"].Value, - Type = "string?", - ValueList = " — ", - DefaultValue = " — " - }, - new() - { - Name = nameof(Tab.RefreshToolbarButtonIcon), - Description = Localizer["AttributeRefreshToolbarButtonIcon"].Value, - Type = "string?", - ValueList = " — ", - DefaultValue = " — " - }, - new() - { - Name = nameof(Tab.OnToolbarRefreshCallback), - Description = Localizer["AttributeOnToolbarRefreshCallback"].Value, - Type = "Func", - ValueList = " — ", - DefaultValue = " — " - }, - new() - { - Name = nameof(Tab.FullscreenToolbarButtonIcon), - Description = Localizer["AttributeFullscreenToolbarButtonIcon"].Value, - Type = "string?", - ValueList = " — ", - DefaultValue = " — " - }, - new() - { - Name = nameof(Tab.ShowContextMenu), - Description = Localizer["AttributeShowContextMenu"].Value, - Type = "bool", - ValueList = "true|false", - DefaultValue = "true" - }, - new() - { - Name = nameof(Tab.ContextMenuRefreshIcon), - Description = Localizer["AttributeContextMenuRefreshIcon"].Value, - Type = "string?", - ValueList = " — ", - DefaultValue = " — " - }, - new() - { - Name = nameof(Tab.ContextMenuCloseIcon), - Description = Localizer["AttributeContextMenuCloseIcon"].Value, - Type = "string?", - ValueList = " — ", - DefaultValue = " — " - }, - new() - { - Name = nameof(Tab.ContextMenuCloseOtherIcon), - Description = Localizer["AttributeContextMenuCloseOtherIcon"].Value, - Type = "string?", - ValueList = " — ", - DefaultValue = " — " - }, - new() - { - Name = nameof(Tab.ContextMenuCloseAllIcon), - Description = Localizer["AttributeContextMenuCloseAllIcon"].Value, - Type = "string?", - ValueList = " — ", - DefaultValue = " — " - }, - new() - { - Name = nameof(Tab.ContextMenuFullScreenIcon), - Description = Localizer["AttributeContextMenuFullScreenIcon"].Value, - Type = "string?", - ValueList = " — ", - DefaultValue = " — " - }, - new() - { - Name = nameof(Tab.OnBeforeShowContextMenu), - Description = Localizer["AttributeOnBeforeShowContextMenu"].Value, - Type = "Func>", - ValueList = " — ", - DefaultValue = " — " - } - ]; - /// /// 获得方法 /// diff --git a/src/BootstrapBlazor.Server/Components/Samples/Tags.razor.cs b/src/BootstrapBlazor.Server/Components/Samples/Tags.razor.cs index 35e40f4a1e2..787ff5c10ef 100644 --- a/src/BootstrapBlazor.Server/Components/Samples/Tags.razor.cs +++ b/src/BootstrapBlazor.Server/Components/Samples/Tags.razor.cs @@ -32,52 +32,4 @@ private EventItem[] GetEvents() => Type ="EventCallback" } ]; - - /// - /// 获得属性方法 - /// - /// - private AttributeItem[] GetAttributes() => - [ - new() - { - Name = "ChildContent", - Description = Localizer["TagsChildContent"], - Type = "RenderFragment", - ValueList = " — ", - DefaultValue = " — " - }, - new() - { - Name = "Class", - Description = Localizer["TagsClass"], - Type = "string", - ValueList = " — ", - DefaultValue = " — " - }, - new() - { - Name = "Color", - Description = Localizer["TagsColor"], - Type = "Color", - ValueList = "Primary / Secondary / Success / Danger / Warning / Info / Dark", - DefaultValue = "Primary" - }, - new() - { - Name = "Icon", - Description = Localizer["TagsIcon"], - Type = "string", - ValueList = " — ", - DefaultValue = " — " - }, - new() - { - Name = "ShowDismiss", - Description = Localizer["TagsShowDismiss"], - Type = "boolean", - ValueList = " — ", - DefaultValue = "false" - } - ]; } diff --git a/src/BootstrapBlazor.Server/Components/Samples/TextAreas.razor.cs b/src/BootstrapBlazor.Server/Components/Samples/TextAreas.razor.cs index f9482fe95d8..31b861cd921 100644 --- a/src/BootstrapBlazor.Server/Components/Samples/TextAreas.razor.cs +++ b/src/BootstrapBlazor.Server/Components/Samples/TextAreas.razor.cs @@ -127,73 +127,5 @@ public void Dispose() Dispose(true); GC.SuppressFinalize(this); } - - private AttributeItem[] GetAttributes() => - [ - new() - { - Name = "ShowLabel", - Description = Localizer["TextAreaShowLabel"], - Type = "bool", - ValueList = "true|false", - DefaultValue = "false" - }, - new() - { - Name = "DisplayText", - Description = Localizer["TextAreaDisplayText"], - Type = "string", - ValueList = " — ", - DefaultValue = " — " - }, - new() - { - Name = "IsDisabled", - Description = Localizer["TextAreaIsDisabled"], - Type = "bool", - ValueList = "true|false", - DefaultValue = "false" - }, - new() - { - Name = "ScrollToTop", - Description = Localizer["TextAreaScrollToTop"], - Type = "Task", - ValueList = "-", - DefaultValue = "-" - }, - new() - { - Name = "ScrollTo", - Description = Localizer["TextAreaScrollTo"], - Type = "Task", - ValueList = "-", - DefaultValue = "-" - }, - new() - { - Name = "ScrollToBottom", - Description = Localizer["TextAreaScrollToBottom"], - Type = "Task", - ValueList = "-", - DefaultValue = "-" - }, - new() - { - Name = nameof(Textarea.IsAutoScroll), - Description = Localizer["TextAreaAutoScroll"], - Type = "bool", - ValueList = "true|false", - DefaultValue = "false" - }, - new() - { - Name = nameof(Textarea.UseShiftEnter), - Description = Localizer["TextAreaUseShiftEnter"], - Type = "bool", - ValueList = "true|false", - DefaultValue = "false" - } - ]; } diff --git a/src/BootstrapBlazor.Server/Components/Samples/Timelines.razor.cs b/src/BootstrapBlazor.Server/Components/Samples/Timelines.razor.cs index 0585ab72461..dbf71fa1d5f 100644 --- a/src/BootstrapBlazor.Server/Components/Samples/Timelines.razor.cs +++ b/src/BootstrapBlazor.Server/Components/Samples/Timelines.razor.cs @@ -182,46 +182,6 @@ protected override async Task OnInitializedAsync() }; } - /// - /// 获得属性方法 - /// - /// - private AttributeItem[] GetAttributes() => - [ - new() - { - Name = "Items", - Description = Localizer["TimelinesItems"], - Type = "IEnumerable", - ValueList = "—", - DefaultValue = " — " - }, - new() - { - Name = "IsReverse", - Description = Localizer["TimelinesIsReverse"], - Type = "boolean", - ValueList = "true|false", - DefaultValue = "false" - }, - new() - { - Name = "IsLeft", - Description = Localizer["TimelinesIsLeft"], - Type = "boolean", - ValueList = "true|false", - DefaultValue = "false" - }, - new() - { - Name = "IsAlternate", - Description = Localizer["TimelinesIsAlternate"], - Type = "boolean", - ValueList = "true|false", - DefaultValue = "false" - } - ]; - /// /// 获得属性方法 /// diff --git a/src/BootstrapBlazor.Server/Components/Samples/Timers.razor.cs b/src/BootstrapBlazor.Server/Components/Samples/Timers.razor.cs index 4da58475de8..97e59d4d7dc 100644 --- a/src/BootstrapBlazor.Server/Components/Samples/Timers.razor.cs +++ b/src/BootstrapBlazor.Server/Components/Samples/Timers.razor.cs @@ -24,48 +24,4 @@ private Task OnCancel() Logger.Log("timer canceled"); return Task.CompletedTask; } - - private static AttributeItem[] GetAttributes() => - [ - new() - { - Name = "Width", - Description = "Component width", - Type = "int", - ValueList = " — ", - DefaultValue = "300" - }, - new() - { - Name = "StrokeWidth", - Description = "Progress bar width", - Type = "int", - ValueList = " — ", - DefaultValue = "6" - }, - new() - { - Name = "IsVibrate", - Description = "Device vibrates when countdown ends", - Type = "bool", - ValueList = "true/false", - DefaultValue = "true" - }, - new() - { - Name = "Value", - Description = "Countdown time", - Type = "Timespan", - ValueList = " — ", - DefaultValue = " — " - }, - new() - { - Name = "Color", - Description = "Progress bar color", - Type = "Color", - ValueList = "Primary / Secondary / Success / Danger / Warning / Info / Dark", - DefaultValue = "Primary" - } - ]; } diff --git a/src/BootstrapBlazor.Server/Components/Samples/Toasts.razor.cs b/src/BootstrapBlazor.Server/Components/Samples/Toasts.razor.cs index 73914f3e9fd..696ff4b333a 100644 --- a/src/BootstrapBlazor.Server/Components/Samples/Toasts.razor.cs +++ b/src/BootstrapBlazor.Server/Components/Samples/Toasts.razor.cs @@ -185,56 +185,4 @@ await ToastService.Show(new ToastOption() Content = $"Toast The component has changed position, it will automatically shut down after {DelayTs} seconds" }); } - - private AttributeItem[] GetAttributes() => - [ - new() - { - Name = "Category", - Description = Localizer["ToastsAttrCategory"], - Type = "ToastCategory", - ValueList = "Success/Information/Error/Warning", - DefaultValue = "Success" - }, - new() - { - Name = "Title", - Description = Localizer["ToastsAttrTitle"], - Type = "string", - ValueList = " — ", - DefaultValue = "" - }, - new() - { - Name = "Content", - Description = Localizer["ToastsAttrContent"], - Type = "string", - ValueList = " — ", - DefaultValue = "" - }, - new() - { - Name = "Delay", - Description = Localizer["ToastsAttrDelay"], - Type = "int", - ValueList = " — ", - DefaultValue = "4000" - }, - new() - { - Name = "IsAutoHide", - Description = Localizer["ToastsAttrIsAutoHide"], - Type = "boolean", - ValueList = " — ", - DefaultValue = "true" - }, - new() - { - Name = "Placement", - Description = Localizer["ToastsAttrPlacement"], - Type = "Placement", - ValueList = "Auto / Top / Left / Bottom / Right", - DefaultValue = "Auto" - } - ]; } diff --git a/src/BootstrapBlazor.Server/Components/Samples/Toggles.razor.cs b/src/BootstrapBlazor.Server/Components/Samples/Toggles.razor.cs index ed4028e3f85..63b673251ff 100644 --- a/src/BootstrapBlazor.Server/Components/Samples/Toggles.razor.cs +++ b/src/BootstrapBlazor.Server/Components/Samples/Toggles.razor.cs @@ -43,84 +43,4 @@ private EventItem[] GetEvents() => Type = "EventCallback" } ]; - - /// - /// 获得属性方法 - /// - /// - private AttributeItem[] GetAttributes() => - [ - new() - { - Name = "Color", - Description = Localizer["Color"], - Type = "Color", - ValueList = "Primary / Secondary / Success / Danger / Warning / Info / Dark", - DefaultValue = "Success" - }, - new() - { - Name = "IsDisabled", - Description = Localizer["IsDisabled"], - Type = "boolean", - ValueList = "true / false", - DefaultValue = "false" - }, - new() - { - Name = "OffText", - Description = Localizer["OffTextAttr"], - Type = "string", - ValueList = "—", - DefaultValue = Localizer["OffTextDefaultValue"]! - }, - new() - { - Name = "OnText", - Description = Localizer["OnTextAttr"], - Type = "string", - ValueList = "—", - DefaultValue = Localizer["OnTextDefaultValue"]! - }, - new() - { - Name = "Width", - Description = Localizer["Width"], - Type = "int", - ValueList = " — ", - DefaultValue = "120" - }, - new() - { - Name = "Value", - Description = Localizer["Value"], - Type = "boolean", - ValueList = " ", - DefaultValue = "None" - }, - new() - { - Name = "ShowLabel", - Description = Localizer["ShowLabel"], - Type = "bool", - ValueList = "true|false", - DefaultValue = "true" - }, - new() - { - Name = "DisplayText", - Description = Localizer["DisplayText"], - Type = "string", - ValueList = " — ", - DefaultValue = " — " - }, - new() - { - Name = "OnValueChanged", - Description = Localizer["OnValueChanged"], - Type = "Func", - ValueList = " — ", - DefaultValue = " — " - } - ]; } diff --git a/src/BootstrapBlazor.Server/Components/Samples/Tooltips.razor.cs b/src/BootstrapBlazor.Server/Components/Samples/Tooltips.razor.cs index ca0274194e4..29ad3fc3754 100644 --- a/src/BootstrapBlazor.Server/Components/Samples/Tooltips.razor.cs +++ b/src/BootstrapBlazor.Server/Components/Samples/Tooltips.razor.cs @@ -29,33 +29,4 @@ private async Task ToggleShow() await _tooltip.Toggle(); } } - - /// - /// 获得属性方法 - /// - /// - protected AttributeItem[] GetAttributes() => - [ - new() { - Name = "Placement", - Description = "Location", - Type = "Placement", - ValueList = "Auto/Top/Left/Bottom/Right", - DefaultValue = "Auto" - }, - new() { - Name = "FallbackPlacements", - Description = "Define fallback placements by providing a list of placements in array (in order of preference)", - Type = "string", - ValueList = " — ", - DefaultValue = " — " - }, - new() { - Name = "Offset", - Description = "offset of the tooltip relative to its target", - Type = "string", - ValueList = " — ", - DefaultValue = " — " - } - ]; } diff --git a/src/BootstrapBlazor.Server/Components/Samples/Topologies.razor.cs b/src/BootstrapBlazor.Server/Components/Samples/Topologies.razor.cs index 163d82cd658..acafe873551 100644 --- a/src/BootstrapBlazor.Server/Components/Samples/Topologies.razor.cs +++ b/src/BootstrapBlazor.Server/Components/Samples/Topologies.razor.cs @@ -80,44 +80,4 @@ private async Task OnBeforePushData() // 数据订阅 DataService.OnDataChange = data => TopologyElement.PushData(data); } - - /// - /// 获得属性方法 - /// - /// - private static AttributeItem[] GetAttributes() => - [ - new() - { - Name = nameof(Topology.Content), - Description = "Load Graphical Json Content", - Type = "string", - ValueList = " — ", - DefaultValue = " — " - }, - new() - { - Name = nameof(Topology.Interval), - Description = "Polling interval in polling mode", - Type = "int", - ValueList = " — ", - DefaultValue = "2000" - }, - new() - { - Name = nameof(Topology.OnQueryAsync), - Description = "Get push data callback delegate method", - Type = "Func>>", - ValueList = " — ", - DefaultValue = " — " - }, - new() - { - Name = nameof(Topology.OnBeforePushData), - Description = "Callback method before starting to push data", - Type = "Func", - ValueList = " — ", - DefaultValue = " — " - } - ]; } diff --git a/src/BootstrapBlazor.Server/Components/Samples/Transfers.razor.cs b/src/BootstrapBlazor.Server/Components/Samples/Transfers.razor.cs index 154e18bd63b..2b41766b0dd 100644 --- a/src/BootstrapBlazor.Server/Components/Samples/Transfers.razor.cs +++ b/src/BootstrapBlazor.Server/Components/Samples/Transfers.razor.cs @@ -107,118 +107,6 @@ private void OnAddItem() _ => null }; - /// - /// 获得属性方法 - /// - /// - private AttributeItem[] GetAttributes() => - [ - new() - { - Name = "Items", - Description = Localizer["Items"], - Type = "IEnumerable", - ValueList = " — ", - DefaultValue = " — " - }, - new() - { - Name = "LeftButtonText", - Description = Localizer["LeftButtonTextAttr"], - Type = "string", - ValueList = " — ", - DefaultValue = " — " - }, - new() - { - Name = "LeftPanelText", - Description = Localizer["LeftPanelTextAttr"], - Type = "string", - ValueList = " — ", - DefaultValue = Localizer["LeftPanelDefaultValue"]! - }, - new() - { - Name = "RightButtonText", - Description = Localizer["RightButtonTextAttr"], - Type = "string", - ValueList = " — ", - DefaultValue = " — " - }, - new() - { - Name = "RightPanelText", - Description = Localizer["RightPanelTextAttr"], - Type = "string", - ValueList = " — ", - DefaultValue = Localizer["RightPanelTextDefaultValue"]! - }, - new() - { - Name = "ShowSearch", - Description = "", - Type = "boolean", - ValueList = " — ", - DefaultValue = "false" - }, - new() - { - Name = "LeftPanelSearchPlaceHolderString", - Description = Localizer["LeftPanelSearchPlaceHolderString"], - Type = "string", - ValueList = " — ", - DefaultValue = " — " - }, - new() - { - Name = "RightPanelSearchPlaceHolderString", - Description = Localizer["RightPanelSearchPlaceHolderString"], - Type = "string", - ValueList = " — ", - DefaultValue = " — " - }, - new() - { - Name = "IsDisabled", - Description = Localizer["IsDisabled"], - Type = "boolean", - ValueList = "true / false", - DefaultValue = "false" - }, - new() - { - Name = "LeftHeaderTemplate", - Description = Localizer["LeftHeaderTemplate"], - Type = "RenderFragment", - ValueList = " — ", - DefaultValue = " — " - }, - new() - { - Name = "LeftItemTemplate", - Description = Localizer["LeftItemTemplate"], - Type = "RenderFragment", - ValueList = " — ", - DefaultValue = " — " - }, - new() - { - Name = "RightHeaderTemplate", - Description = Localizer["RightHeaderTemplate"], - Type = "RenderFragment", - ValueList = " — ", - DefaultValue = " — " - }, - new() - { - Name = "RightItemTemplate", - Description = Localizer["RightItemTemplate"], - Type = "RenderFragment", - ValueList = " — ", - DefaultValue = " — " - } - ]; - /// /// 获得事件方法 /// diff --git a/src/BootstrapBlazor.Server/Components/Samples/Transitions.razor.cs b/src/BootstrapBlazor.Server/Components/Samples/Transitions.razor.cs index 9db928d904c..007864bfb06 100644 --- a/src/BootstrapBlazor.Server/Components/Samples/Transitions.razor.cs +++ b/src/BootstrapBlazor.Server/Components/Samples/Transitions.razor.cs @@ -55,36 +55,4 @@ private Task OnFadeInEndShow() StateHasChanged(); return Task.CompletedTask; } - - private static AttributeItem[] GetAttributes() => - [ - new() { - Name = "TransitionType", - Description = "Animation effect name", - Type = "TransitionType", - ValueList = " — ", - DefaultValue = "FadeIn" - }, - new() { - Name = "Show", - Description = "Control animation execution", - Type = "Boolean", - ValueList = "true|false", - DefaultValue = "true" - }, - new() { - Name = "Duration", - Description = "Control animation duration", - Type = "int", - ValueList = " — ", - DefaultValue = "0" - }, - new() { - Name = "OnTransitionEnd", - Description = "Animation execution complete callback", - Type = "Func", - ValueList = " — ", - DefaultValue = " — " - } - ]; } diff --git a/src/BootstrapBlazor.Server/Components/Samples/TreeViews.razor b/src/BootstrapBlazor.Server/Components/Samples/TreeViews.razor index 65b48e06967..c88c3fa3e7a 100644 --- a/src/BootstrapBlazor.Server/Components/Samples/TreeViews.razor +++ b/src/BootstrapBlazor.Server/Components/Samples/TreeViews.razor @@ -218,4 +218,4 @@ - + diff --git a/src/BootstrapBlazor.Server/Components/Samples/TreeViews.razor.cs b/src/BootstrapBlazor.Server/Components/Samples/TreeViews.razor.cs index d5ba6a5aaf3..625e878dcf8 100644 --- a/src/BootstrapBlazor.Server/Components/Samples/TreeViews.razor.cs +++ b/src/BootstrapBlazor.Server/Components/Samples/TreeViews.razor.cs @@ -303,205 +303,9 @@ private static async Task>> OnExpandVirtualNod return items; } - private Task OnUpdateCallbackAsync(TreeFoo foo, string? text) + private static Task OnUpdateCallbackAsync(TreeFoo foo, string? text) { foo.Text = text; return Task.FromResult(true); } - - /// - /// 获得属性方法 - /// - /// - private static AttributeItem[] GetAttributes() => - [ - new() - { - Name = "Items", - Description = "menu data set", - Type = "IEnumerable>", - ValueList = " — ", - DefaultValue = "new List>(20)" - }, - new() - { - Name = "ClickToggleNode", - Description = "Whether to expand or contract children when a node is clicked", - Type = "bool", - ValueList = "true|false", - DefaultValue = "false" - }, - new() - { - Name = "ShowCheckbox", - Description = "Whether to display CheckBox", - Type = "bool", - ValueList = "true|false", - DefaultValue = "false" - }, - new() - { - Name = "ShowIcon", - Description = "Whether to display Icon", - Type = "bool", - ValueList = "true|false", - DefaultValue = "false" - }, - new() - { - Name = "ShowSkeleton", - Description = "Whether to display the loading skeleton screen", - Type = "bool", - ValueList = "true|false", - DefaultValue = "false" - }, - new() - { - Name = nameof(TreeView.OnTreeItemClick), - Description = "Callback delegate when tree control node is clicked", - Type = "Func, Task>", - ValueList = " — ", - DefaultValue = " — " - }, - new() - { - Name = nameof(TreeView.OnBeforeTreeItemClick), - Description = "点击节点前回调方法", - Type = "Func, Task>", - ValueList = " — ", - DefaultValue = " — " - }, - new() - { - Name = nameof(TreeView.OnTreeItemChecked), - Description = "Callback delegate when tree control node is selected", - Type = "Func, Task>", - ValueList = " — ", - DefaultValue = " — " - }, - new() - { - Name = nameof(TreeView.OnExpandNodeAsync), - Description = "Tree control node expand callback delegate", - Type = "Func, Task>", - ValueList = " — ", - DefaultValue = " — " - }, - new() - { - Name = nameof(TreeView.IsDisabled), - Description = "Disable tree view", - Type = "bool", - ValueList = "true|false", - DefaultValue = "false" - }, - new() - { - Name = nameof(TreeView.IsVirtualize), - Description = "Virtualize", - Type = "bool", - ValueList = "true|false", - DefaultValue = "false" - }, - new() - { - Name = nameof(TreeView.CanExpandWhenDisabled), - Description = "Whether to expand when the control node is disabled", - Type = "bool", - ValueList = "true|false", - DefaultValue = "false" - }, - new() - { - Name = nameof(TreeView.MaxSelectedCount), - Description = "The maximum count of selected node", - Type = "int", - ValueList = " — ", - DefaultValue = "0" - }, - new() - { - Name = nameof(TreeView.OnMaxSelectedCountExceed), - Description = "Select the callback method when the maximum number of nodes is reached", - Type = "Func", - ValueList = " — ", - DefaultValue = " — " - } - ]; - - private static AttributeItem[] GetTreeItemAttributes() => - [ - new() - { - Name = nameof(TreeViewItem.Items), - Description = "Child node data source", - Type = "List>", - ValueList = " — ", - DefaultValue = "new ()" - }, - new() - { - Name = nameof(TreeViewItem.Text), - Description = "Display text", - Type = "string", - ValueList = " — ", - DefaultValue = " — " - }, - new() - { - Name = nameof(TreeViewItem.Icon), - Description = "Show icon", - Type = "string", - ValueList = " — ", - DefaultValue = " — " - }, - new() - { - Name = nameof(TreeViewItem.CssClass), - Description = "Node custom style", - Type = "string", - ValueList = " — ", - DefaultValue = " — " - }, - new() - { - Name = nameof(TreeViewItem.CheckedState), - Description = "Is selected", - Type = "bool", - ValueList = "true|false", - DefaultValue = "false" - }, - new() - { - Name = nameof(TreeViewItem.IsDisabled), - Description = "Is disabled", - Type = "bool", - ValueList = "true|false", - DefaultValue = "false" - }, - new() - { - Name = nameof(TreeViewItem.IsExpand), - Description = "Whether to expand", - Type = "bool", - ValueList = "true|false", - DefaultValue = "true" - }, - new() - { - Name = nameof(TreeViewItem.HasChildren), - Description = "Whether there are child nodes", - Type = "bool", - ValueList = " true|false ", - DefaultValue = " false " - }, - new() - { - Name = nameof(TreeViewItem.Template), - Description = "Child node template", - Type = nameof(RenderFragment), - ValueList = " — ", - DefaultValue = " — " - } - ]; } diff --git a/src/BootstrapBlazor.Server/Components/Samples/UploadAvatars.razor.cs b/src/BootstrapBlazor.Server/Components/Samples/UploadAvatars.razor.cs index 7e90582364a..003e9803c85 100644 --- a/src/BootstrapBlazor.Server/Components/Samples/UploadAvatars.razor.cs +++ b/src/BootstrapBlazor.Server/Components/Samples/UploadAvatars.razor.cs @@ -45,42 +45,6 @@ private Task OnAvatarInValidSubmit(EditContext context) return ToastService.Error(Localizer["UploadsValidateFormTitle"], Localizer["UploadsValidateFormInValidContent"]); } - private List GetAttributes() => - [ - new() - { - Name = "Width", - Description = Localizer["UploadsWidth"], - Type = "int", - ValueList = " — ", - DefaultValue = "0" - }, - new() - { - Name = "Height", - Description = Localizer["UploadsHeight"], - Type = "int", - ValueList = " — ", - DefaultValue = " — " - }, - new() - { - Name = "IsCircle", - Description = Localizer["UploadsIsCircle"], - Type = "bool", - ValueList = "true|false", - DefaultValue = "false" - }, - new() - { - Name = "BorderRadius", - Description = Localizer["UploadsBorderRadius"], - Type = "string?", - ValueList = " — ", - DefaultValue = " — " - } - ]; - class Person { [Required] diff --git a/src/BootstrapBlazor.Server/Components/Samples/UploadDrops.razor.cs b/src/BootstrapBlazor.Server/Components/Samples/UploadDrops.razor.cs index f74d75b4fba..4ed91ac503c 100644 --- a/src/BootstrapBlazor.Server/Components/Samples/UploadDrops.razor.cs +++ b/src/BootstrapBlazor.Server/Components/Samples/UploadDrops.razor.cs @@ -27,72 +27,4 @@ private Task OnDropUpload(UploadFile file) } return Task.CompletedTask; } - - private List GetAttributes() => - [ - new() - { - Name = "BodyTemplate", - Description = Localizer["UploadsBodyTemplate"], - Type = "RenderFragment", - ValueList = " — ", - DefaultValue = " — " - }, - new() - { - Name = "IconTemplate", - Description = Localizer["UploadsIconTemplate"], - Type = "RenderFragment", - ValueList = " — ", - DefaultValue = " — " - }, - new() - { - Name = "TextTemplate", - Description = Localizer["UploadsTextTemplate"], - Type = "RenderFragment", - ValueList = " — ", - DefaultValue = " — " - }, - new() - { - Name = "UploadIcon", - Description = Localizer["UploadsUploadIcon"], - Type = "string", - ValueList = " — ", - DefaultValue = " — " - }, - new() - { - Name = "UploadText", - Description = Localizer["UploadsUploadText"], - Type = "string", - ValueList = " — ", - DefaultValue = " — " - }, - new() - { - Name = "ShowFooter", - Description = Localizer["UploadsShowFooter"], - Type = "bool", - ValueList = "true|false", - DefaultValue = "false" - }, - new() - { - Name = "FooterTemplate", - Description = Localizer["UploadsFooterTemplate"], - Type = "RenderFragment", - ValueList = " — ", - DefaultValue = " — " - }, - new() - { - Name = "FooterText", - Description = Localizer["UploadsFooterText"], - Type = "string", - ValueList = " — ", - DefaultValue = " — " - } - ]; } diff --git a/src/BootstrapBlazor.Server/Components/Samples/UploadInputs.razor.cs b/src/BootstrapBlazor.Server/Components/Samples/UploadInputs.razor.cs index 56412699741..92ca86327e0 100644 --- a/src/BootstrapBlazor.Server/Components/Samples/UploadInputs.razor.cs +++ b/src/BootstrapBlazor.Server/Components/Samples/UploadInputs.razor.cs @@ -29,122 +29,6 @@ private static Task OnSubmit(EditContext context) return Task.CompletedTask; } - private List GetAttributes() => - [ - new() - { - Name = "IsDirectory", - Description = Localizer["UploadsIsDirectory"], - Type = "bool", - ValueList = "true|false", - DefaultValue = "false" - }, - new() - { - Name = "IsMultiple", - Description = Localizer["UploadsIsMultiple"], - Type = "bool", - ValueList = "true|false", - DefaultValue = "false" - }, - new() - { - Name = "ShowDeleteButton", - Description = Localizer["UploadsShowDeleteButton"], - Type = "bool", - ValueList = "true|false", - DefaultValue = "false" - }, - new() - { - Name = "IsDisabled", - Description = Localizer["UploadsIsDisabled"], - Type = "boolean", - ValueList = "true / false", - DefaultValue = "false" - }, - new() - { - Name = "PlaceHolder", - Description = Localizer["UploadsPlaceHolder"], - Type = "string", - ValueList = " — ", - DefaultValue = " — " - }, - new() - { - Name = "Accept", - Description = Localizer["UploadsAccept"], - Type = "string", - ValueList = " — ", - DefaultValue = " — " - }, - new() - { - Name = "BrowserButtonClass", - Description = Localizer["UploadsBrowserButtonClass"], - Type = "string", - ValueList = " — ", - DefaultValue = "btn-primary" - }, - new() - { - Name = "BrowserButtonIcon", - Description = Localizer["UploadsBrowserButtonIcon"], - Type = "string", - ValueList = " — ", - DefaultValue = "fa-regular fa-folder-open" - }, - new() - { - Name = "BrowserButtonText", - Description = Localizer["UploadsBrowserButtonText"], - Type = "string", - ValueList = " — ", - DefaultValue = "" - }, - new() - { - Name = "DeleteButtonClass", - Description = Localizer["UploadsDeleteButtonClass"], - Type = "string", - ValueList = " — ", - DefaultValue = "btn-danger" - }, - new() - { - Name = "DeleteButtonIcon", - Description = Localizer["UploadsDeleteButtonIcon"], - Type = "string", - ValueList = " — ", - DefaultValue = "fa-regular fa-trash" - }, - new() - { - Name = "DeleteButtonText", - Description = Localizer["UploadsDeleteButtonText"], - Type = "string", - ValueList = " — ", - DefaultValue = Localizer["UploadsDeleteButtonTextDefaultValue"] - }, - new() - { - Name = "OnDelete", - Description = Localizer["UploadsOnDelete"], - Type = "Func>", - ValueList = " — ", - DefaultValue = " — " - }, - new() - { - Name = "OnChange", - Description = Localizer["UploadsOnChange"], - Type = "Func", - ValueList = " — ", - DefaultValue = " — " - } - ]; - class Person { [Required] diff --git a/src/BootstrapBlazor.Server/Components/Samples/ValidateForms.razor.cs b/src/BootstrapBlazor.Server/Components/Samples/ValidateForms.razor.cs index 2793819e325..0dd977dc993 100644 --- a/src/BootstrapBlazor.Server/Components/Samples/ValidateForms.razor.cs +++ b/src/BootstrapBlazor.Server/Components/Samples/ValidateForms.razor.cs @@ -282,81 +282,6 @@ private Task OnInvalidValidatableObject(EditContext context) } #region 参数说明 - private AttributeItem[] GetAttributes() => - [ - new() - { - Name = "Model", - Description = Localizer["Model"], - Type = "object", - ValueList = " — ", - DefaultValue = " — " - }, - new() - { - Name = "ValidateAllProperties", - Description = Localizer["ValidateAllProperties"], - Type = "bool", - ValueList = "true/false", - DefaultValue = "false" - }, - new() - { - Name = nameof(ValidateForm.DisableAutoSubmitFormByEnter), - Description = Localizer[nameof(ValidateForm.DisableAutoSubmitFormByEnter)], - Type = "bool", - ValueList = "true/false", - DefaultValue = "false" - }, - new() - { - Name = "ShowRequiredMark", - Description = Localizer["ShowRequiredMark"], - Type = "bool", - ValueList = "true/false", - DefaultValue = "true" - }, - new() - { - Name = "ShowLabelTooltip", - Description = Localizer["ShowLabelTooltip"], - Type = "bool?", - ValueList = "true/false/null", - DefaultValue = "null" - }, - new() - { - Name = "LabelWidth", - Description = Localizer["LabelWidth"], - Type = "int?", - ValueList = " — ", - DefaultValue = " — " - }, - new() - { - Name = "ChildContent", - Description = Localizer["ChildContent"], - Type = "RenderFragment", - ValueList = " — ", - DefaultValue = " — " - }, - new() - { - Name = "OnValidSubmit", - Description = Localizer["OnValidSubmit"], - Type = "EventCallback", - ValueList = " — ", - DefaultValue = " — " - }, - new() - { - Name = "OnInvalidSubmit", - Description = Localizer["OnInvalidSubmit"], - Type = "EventCallback", - ValueList = " — ", - DefaultValue = " — " - } - ]; /// /// 获得事件方法 diff --git a/src/BootstrapBlazor.Server/Components/Samples/Vditors.razor.cs b/src/BootstrapBlazor.Server/Components/Samples/Vditors.razor.cs index 70f0c4d0545..4b26a5a8eeb 100644 --- a/src/BootstrapBlazor.Server/Components/Samples/Vditors.razor.cs +++ b/src/BootstrapBlazor.Server/Components/Samples/Vditors.razor.cs @@ -140,56 +140,4 @@ private async Task OnTriggerBlurAsync() { await _vditor.BlurAsync(); } - - private static AttributeItem[] GetAttributes() => - [ - new() - { - Name = "EditorSettings", - Description = "编辑器设置", - Type = "EditorSettings", - ValueList = " — ", - DefaultValue = " — " - }, - new() - { - Name = "ToolbarSettings", - Description = "工具栏设置", - Type = "ToolbarSettings", - ValueList = " — ", - DefaultValue = " — " - }, - new() - { - Name = "Value", - Description = "组件值", - Type = "string", - ValueList = " — ", - DefaultValue = " — " - }, - new() - { - Name = "Html", - Description = "组件 Html 代码", - Type = "string", - ValueList = " — ", - DefaultValue = " — " - }, - new() - { - Name = "OnFileUpload", - Description = "文件上传回调方法", - Type = "Func>", - ValueList = " — ", - DefaultValue = " — " - }, - new() - { - Name = "IsViewer", - Description = "组件是否为浏览器模式", - Type = "bool", - ValueList = "true/false", - DefaultValue = "false" - } - ]; } diff --git a/src/BootstrapBlazor.Server/Components/Samples/VideoPlayers.razor.cs b/src/BootstrapBlazor.Server/Components/Samples/VideoPlayers.razor.cs index 6ffee4666ea..d0c9fb47172 100644 --- a/src/BootstrapBlazor.Server/Components/Samples/VideoPlayers.razor.cs +++ b/src/BootstrapBlazor.Server/Components/Samples/VideoPlayers.razor.cs @@ -57,83 +57,4 @@ private async Task Apply() await Player.SetPoster("//vjs.zencdn.net/v/oceans.png"); await Player.Reload(Url, MineType); } - - /// - /// 获得属性方法 - /// - /// - private AttributeItem[] GetAttributes() => - [ - - new() { - Name = nameof(VideoPlayer.Url), - Description = Localizer["ResourceUrl"], - Type = "string", - ValueList = " — ", - DefaultValue = " — " - }, - new() { - Name = nameof(VideoPlayer.MineType), - Description = Localizer["MineTypeDesc"], - Type = "string?", - ValueList = Localizer["ValueList"], - DefaultValue = "application/x-mpegURL" - }, - new() { - Name = nameof(VideoPlayer.Width), - Description = Localizer["Width"], - Type = "int", - ValueList = " — ", - DefaultValue = "300" - }, - new() { - Name = nameof(VideoPlayer.Height), - Description = Localizer["Height"], - Type = "int", - ValueList = " — ", - DefaultValue = "200" - }, - new() { - Name = nameof(VideoPlayer.Controls), - Description = Localizer["ShowBar"], - Type = "bool", - ValueList = "true|false", - DefaultValue = "true" - }, - new() { - Name = nameof(VideoPlayer.AutoPlay), - Description = Localizer["AutoPaly"], - Type = "bool", - ValueList = "true|false", - DefaultValue = "true" - }, - new() { - Name = nameof(VideoPlayer.Poster), - Description = Localizer["Poster"], - Type = "string?", - ValueList = " — ", - DefaultValue = " — " - }, - new() { - Name = "Reload(string url, string type)", - Description = Localizer["SwitchResource"], - Type = "async Task", - ValueList = " — ", - DefaultValue = " — " - }, - new() { - Name = "SetPoster(string poster)", - Description = Localizer["SetPoster"], - Type = "async Task", - ValueList = " — ", - DefaultValue = " — " - }, - new() { - Name = "OnError", - Description = Localizer["OnError"], - Type = "Func?", - ValueList = " — ", - DefaultValue = " — " - }, - ]; } diff --git a/src/BootstrapBlazor.Server/Components/Samples/WinBoxes.razor.cs b/src/BootstrapBlazor.Server/Components/Samples/WinBoxes.razor.cs index 0c584516aa9..dc9a7d882e7 100644 --- a/src/BootstrapBlazor.Server/Components/Samples/WinBoxes.razor.cs +++ b/src/BootstrapBlazor.Server/Components/Samples/WinBoxes.razor.cs @@ -88,137 +88,4 @@ private async Task OpenWinBox(WinBoxOption? option) { "Option", option } }, option); } - - private AttributeItem[] GetAttributes() => - [ - new() - { - Name = "Root", - Description = Localizer["AttributeRoot"], - Type = "string?", - ValueList = " — ", - DefaultValue = " — " - }, - new() - { - Name = "Title", - Description = Localizer["AttributeTitle"], - Type = "string?", - ValueList = " — ", - DefaultValue = " — " - }, - new() - { - Name = "Class", - Description = Localizer["AttributeClass"], - Type = "string?", - ValueList = " — ", - DefaultValue = " — " - }, - new() - { - Name = "Background", - Description = Localizer["AttributeBackground"], - Type = "string?", - ValueList = " — ", - DefaultValue = " — " - }, - new() - { - Name = "Border", - Description = Localizer["AttributeBorder"], - Type = "int?", - ValueList = " — ", - DefaultValue = " — " - }, - new() - { - Name = "Icon", - Description = Localizer["AttributeIcon"], - Type = "string?", - ValueList = " — ", - DefaultValue = " — " - }, - new() - { - Name = "OnCreateAsync", - Description = Localizer["OnCreateAsync"], - Type = "Func", - ValueList = " — ", - DefaultValue = " — " - }, - new() - { - Name = "OnShownAsync", - Description = Localizer["OnShownAsync"], - Type = "Func", - ValueList = " — ", - DefaultValue = " — " - }, - new() - { - Name = "OnHideAsync", - Description = Localizer["OnHideAsync"], - Type = "Func", - ValueList = " — ", - DefaultValue = " — " - }, - new() - { - Name = "OnFocusAsync", - Description = Localizer["OnFocusAsync"], - Type = "Func", - ValueList = " — ", - DefaultValue = " — " - }, - new() - { - Name = "OnBlurAsync", - Description = Localizer["OnBlurAsync"], - Type = "Func", - ValueList = " — ", - DefaultValue = " — " - }, - new() - { - Name = "OnFullscreenAsync", - Description = Localizer["OnFullscreenAsync"], - Type = "Func", - ValueList = " — ", - DefaultValue = " — " - }, - new() - { - Name = "OnRestoreAsync", - Description = Localizer["OnRestoreAsync"], - Type = "Func", - ValueList = " — ", - DefaultValue = " — " - }, - new() - { - Name = "OnMaximizeAsync", - Description = Localizer["OnMaximizeAsync"], - Type = "Func", - ValueList = " — ", - DefaultValue = " — " - }, - new() - { - Name = "OnMinimizeAsync", - Description = Localizer["OnMinimizeAsync"], - Type = "Func", - ValueList = " — ", - DefaultValue = " — " - }, - new() - { - Name = "OnCloseAsync", - Description = Localizer["OnCloseAsync"], - Type = "Func", - ValueList = " — ", - DefaultValue = " — " - }, - - ]; } diff --git a/src/BootstrapBlazor.Server/Extensions/TypExtensions.cs b/src/BootstrapBlazor.Server/Extensions/TypExtensions.cs new file mode 100644 index 00000000000..631afab1e83 --- /dev/null +++ b/src/BootstrapBlazor.Server/Extensions/TypExtensions.cs @@ -0,0 +1,25 @@ +// Licensed to the .NET Foundation under one or more agreements. +// The .NET Foundation licenses this file to you under the Apache 2.0 License +// See the LICENSE file in the project root for more information. +// Maintainer: Argo Zhang(argo@live.ca) Website: https://www.blazor.zone + +using System.Reflection; + +namespace BootstrapBlazor.Server.Extensions; + +/// +/// Type 类型扩展方法 +/// +public static class TypExtensions +{ + /// + /// 判断是否为布局组件 + /// + /// + public static bool IsComponentLayout(this Type t) + { + return t.GetCustomAttribute()?.LayoutType == typeof(ComponentLayout) + || t.GetCustomAttribute()?.LayoutType == typeof(DockLayout); + } + +} diff --git a/src/BootstrapBlazor.Server/Locales/en-US.json b/src/BootstrapBlazor.Server/Locales/en-US.json index 88f97e9b06f..0834bf32809 100644 --- a/src/BootstrapBlazor.Server/Locales/en-US.json +++ b/src/BootstrapBlazor.Server/Locales/en-US.json @@ -1,7031 +1,5979 @@ { - "BootstrapBlazor.Server.Components.Pages.Online": { - "SubTitle": "Online population statistics", - "ConnectionTime": "ConnectionTime", - "LastBeatTime": "LastBeatTime", - "Dur": "Dur", - "Ip": "Ip", - "City": "City", - "LocalHost": "localhost", - "OS": "OS", - "Device": "Device", - "Browser": "Browser", - "Language": "Language", - "Engine": "Engine", - "RequestUrl": "RequestUrl" - }, - "BootstrapBlazor.Server.Components.Pages.Tutorials": { - "CategoryTitle": "Bootstrap Blazor Practical Cases", - "DashboardSummary": "Dashboard", - "LoginSummary": "Login&Register", - "WaterfallSummary": "Waterfall", - "TranslateSummary": "Translate", - "DrawingSummary": "Drawing", - "AdminSummary": "Admin", - "OnlineSheet": "UniverSheet", - "MemorialMode": "Memorial", - "MFA": "MFA" + "BootstrapBlazor.Server.Components.Common.AttributeItem": { + "DefaultValue": "DefaultValue", + "Description": "Description", + "Name": "Parameter", + "Type": "Type", + "ValueList": "ValueList" }, - "BootstrapBlazor.Server.Components.Components.Pre": { - "LoadingText": "Loading ...", - "TooltipTitle": "Copy", - "PlusTooltipTitle": "Plus lines", - "MinusTooltipTitle": "Minus lines", - "CopiedText": "Copied" + "BootstrapBlazor.Server.Components.Common.EventItem": { + "Description": "Description", + "Name": "Parameter", + "Type": "Type" }, - "BootstrapBlazor.Server.Components.Pages.Index": { - "Support": "Support", - "Title": "Bootstrap Blazor UI", - "SubTitle": "BootstrapBlazor is an enterprise-grade library that fuses Bootstrap with Blazor, offering developers a powerful toolkit for building responsive and interactive web applications effortlessly.", - "Docs": "Read the docs", - "DonateH1": "Donate", - "DonateH2": "Scan the code to donate and invite the author to have a cup of coffee" + "BootstrapBlazor.Server.Components.Common.MethodItem": { + "Description": "Description", + "Name": "Parameter", + "Parameters": "Parameters", + "ReturnValue": "ReturnValue", + "Title": "Methods", + "Type": "Type" }, - "BootstrapBlazor.Server.Components.Layout.HomeLayout": { - "FooterH1": "Related Works", - "FooterLi1": "Slider verification code", - "FriendLink": "Links", - "Community": "Community", - "CommunityLi1": "Contribution guide", - "CommunityLi2": "Join us", - "CommunityLi3": "Contact details", - "Footer": "Gitee Hosting Platform" + "BootstrapBlazor.Server.Components.Components.AttributeTable": { + "AutoGenerateColumns": "Automatically generated", + "Total": "Total" }, - "BootstrapBlazor.Server.Components.Samples.Table.TablesDialog": { - "TablesDialogTitle": "Table table is used in the pop-up window", - "TablesDialogDescription": "Used in data selection with hierarchical relationship", - "TableDialogNormalTitle": "Data linkage in the pop-up window", - "TableDialogNormalIntro": "Click the Select button in the toolbar to pop up a dialog box to select candidate data", - "TableDialogNormalDescription": "In this example, if the Modal component is linked with Table, the data is selected in the pop-up window, and then edited", - "TableDialogNormalTips1": "Click the Select button to pop up a dialog box to select the product Product", - "TableDialogNormalTips2": "After selecting the product in the pop-up window, click the OK button to close the pop-up window", - "TableDialogNormalTips3": "Click the Edit button, since some data are set as read-only, only the Count field can be changed", - "TableDialogNormalChoose": "Choose", - "TableDialogNormalSelectItem": "Select item", - "TableDialogNormalSure": "Sure" + "BootstrapBlazor.Server.Components.Components.CultureChooser": { + "Label": "Language:" }, - "BootstrapBlazor.Server.Components.Samples.Table.TablesDynamicObject": { - "TablesDynamicObjectTitle": "Table table", - "TablesDynamicObjectDescription": "Use the IDynamicMetaObjectProvider class as a data source", - "TablesDynamicObjectMetaObjectProviderTitle": "IDynamicMetaObjectProvider Collection", - "TablesDynamicObjectMetaObjectProviderIntro": "Use the IDynamicMetaObjectProvider data collection as the data source by setting the Items data source", - "TablesDynamicObjectIDynamicObjectTitle": "IDynamicObject collection", - "TablesDynamicObjectIDynamicObjectIntro": "Use the IDynamicObject data collection as the data source by setting the Items data source" + "BootstrapBlazor.Server.Components.Components.CustomPopConfirmContent": { + "CustomPopConfirmContentButtonText": "Approval", + "CustomPopConfirmContentText": "Custom content" }, - "BootstrapBlazor.Server.Components.Samples.Table.TablesPages": { - "TablesPagesTitle": "Table", - "TablesPagesDescription": "It is used to display multiple pieces of data with similar structure, and the data can be sorted, filtered, compared or other custom operations.", - "TablesPagePaginationTitle": "Pagination table", - "TablesPagePaginationIntro": "Set IsPagination to display the pagination component", - "TablesPageShowTopPaginationTitle": "Show on top", - "TablesPageShowTopPaginationIntro": "Set ShowTopPagination to true is the top display pagination component. You can use IsAutoScrollTopWhenClickPage to control whether to automatically scroll to the top after turning the page. The default value is false to keep the scroll bar position" + "BootstrapBlazor.Server.Components.Components.DemoBlock": { + "Title": "Not set", + "TooltipText": "Copied" }, - "BootstrapBlazor.Server.Components.Samples.Table.TablesFixedColumn": { - "TablesFixedColumnTitle": "Fixed column", - "TablesFixedColumnDescription": "For data with a large number of columns, you can fix the front and rear columns and scroll horizontally to view other data", - "TablesFixedColumnNote": "For fixed column usage, please set the fixed column width as much as possible", - "TablesFixedColHeaderTitle": "Fixed column header and column footer", - "TablesFixedColHeaderIntro": "Set the Fixed attribute to fix the header", - "TablesFixedColHeaderDescription": "In this example, set Name Education Count Complete The first two columns and the last column are fixed columns, and the middle columns are scrolled horizontally", - "TablesFixedColTableHeaderTitle": "Fixed headers and columns", - "TablesFixedColTableHeaderIntro": "Set IsFixedHeader=\"true\" to fix the header, set Fixed to fix the column", - "TablesFixedExtendButtonsColumnTitle": "Fixed button action column", - "TablesFixedExtendButtonsColumnIntro": "Set FixedExtendButtonsColumn to fix the action column", - "TablesFixedHeaderAndExtendButtonsColumnTitle": "Fixed header and button action columns", - "TablesFixedHeaderAndExtendButtonsColumnIntro": "Set IsFixedHeader=\"true\" to fix the header, set FixedMultipleColumn to fix the checkbox column, set FixedExtendButtonsColumn to fix the operation column" + "BootstrapBlazor.Server.Components.Components.DemoTabItem": { + "ButtonText": "SetTitle", + "Info": "Reset the title of this TabItem by click the button" }, - "BootstrapBlazor.Server.Components.Samples.Tooltips": { - "TooltipsTitle": "Tooltip", - "TooltipsDescription": "Provides a tooltip after hovering over the mouse or gaining focus", - "TooltipsNormalTitle": "Basic usage", - "TooltipsNormalIntro": "Often used to display the prompt information when the mouse hovers", - "TooltipsButtonTitle": "Button component tooltip", - "TooltipsButtonIntro": "Provides a tooltip after hovering over the mouse or gaining focus", - "BootstrapTooltipTitle": "test component", - "TooltipsSelectorTitle": "Prompt host settings", - "TooltipsSelectorIntro": "Precisely locate trigger prompt box elements by setting Selector parameters", - "TooltipsCustomClassTitle": "custom style", - "TooltipsCustomClassIntro": "Set the custom style by setting the CustomClass parameter", - "BootstrapTooltipIntro": "Try to make a new component that is more comfortable to use, you can use it early, the name of the component may be changed later", - "BootstrapTooltipTips1": "Wrap other components or HTML elements through BootstrapTooltip so that the wrapped object has the function of Tooltip", - "BootstrapTooltipTips2": "In this example, an icon is wrapped by BootstrapTooltip. When the mouse moves over the icon, the default Tooltip is displayed, which is easier and faster to use.", - "TooltipsManualTitle": "Manual", - "TooltipsManualIntro": "Use code to control the tooltip state by setting Trigger=\"manual\"", - "TooltipsManualDescLI1": "The child component uses the cascade parameters to get the Tooltip instance and then calls its methods Show Hide Toggle", - "TooltipsManualDescLI2": "Get the Tooltip instance through @ref and call its instances method" + "BootstrapBlazor.Server.Components.Components.EventTable": { + "Title": "Event" }, - "BootstrapBlazor.Server.Components.Samples.Toasts": { - "ToastsTitle": "Toast Lightweight Popup", - "ToastsSubTitle": "Provides a lightweight toast popup", - "ToastsDescriptionTitle": "Component usage introduction", - "ToastsTips1": "1. Inject service ToastService", - "ToastsTips2": "2. Call its instance api", - "ToastsNormalTitle": "Basic usage", - "ToastsNormalIntro": "When the user operates, the lower right corner will give appropriate prompt information", - "ToastsSuccess": "Success notification", - "ToastsDanger": "Failure notification", - "ToastsInfo": "Information notice", - "ToastsPreventTitle": "Prevent Duplicates", - "ToastsPreventIntro": "By setting PreventDuplicates=\"true\" to repeatedly click the button below, only one pop-up window will appear", - "ToastsPreventText": "Prevent Duplicates", - "ToastsAsyncTitle": "Async notification", - "ToastsAsyncIntro": "By setting the button's IsAsync parameter, use the same ToastOption to update the pop-up window information for different steps", - "ToastsAsyncDemoTitle": "Async notification", - "ToastsAsyncDemoStep1Text": "Packing documents, please wait...", - "ToastsAsyncDemoStep2Text": "Packaging completed, downloading...", - "ToastsAsyncDemoStep3Text": "Download completed, close the window automatically", - "ToastsWarning": "Warning notice", - "ToastsAsyncText": "AsyncNotify", - "ToastsCloseTitle": "Toast is closed manually", - "ToastsCloseIntro": "It will not close automatically, you need to manually click the close button. You can customize the event after closing the pop-up window by settingOnCloseAsynccallback delegate", - "ToastsCloseNotificationText": "success notification", - "ToastsPositionTitle": "Toast display location", - "ToastsPositionIntro": "Provides settings where the Toast popup appears", - "ToastsPositionDescription": "Set the location where the popup appears by setting the Placement value of the Toast component. The default value is BottomEnd. upper right corner", - "ToastsPositionAttentionText": "pay attention", - "ToastsPositionTips": "This component provides functions in the form of injection services, and the user experience is very comfortable when used, and can be called anytime, anywhere
The injection service provides the following shortcut invocation methods:", - "ToastsPositionTips2": "Examples are as follows", - "ToastsPositionSaved": "Successfully saved", - "ToastsPositionAutoClose": "Save data successfully, automatically close after 4 seconds", - "ToastsPositionCategory": "Notification category", - "ToastsPositionBoxTitle": "Notification box Title value", - "ToastsPositionNotification": "notification", - "ToastsPositionContent": "Notification body content", - "ToastsPositionAddsNew": "The system adds new components, it will automatically shut down after 4 seconds", - "ToastsPositionNote1": "Special Note: The Delay parameter value of the Toast component in the entire system can be set through the BootstrapBlazorOptions global unified configuration parameter", - "ToastsPositionNote2": "Configured through the configuration file appsetting.json file, suitable for Server-Side App", - "ToastsPositionConfigured": "Configured via the ConfigureServices method in the Startup file for Server-Side App and WebAssembly App", - "ToastsPositionDisappearance": "Uniformly set the automatic disappearance time of the Toast component", - "ToastsPositionServerSide": "Or, for Server-Side App only", - "ToastsPositionAddComponent": "Add BootstrapBlazor component", - "ToastsPositionAutomaticDisappearance": "Uniformly set the automatic disappearance time of the Toast component", - "ToastsShowHeaderTitle": "No header", - "ToastsShowHeaderIntro": "Set ShowHeader=\"false\" remove Header", - "ShowHeaderText": "Toast", - "ToastsHeaderTemplateTitle": "Custom header", - "ToastsHeaderTemplateIntro": "set HeaderTemplate custom the header content", - "ToastsAttrCategory": "Toast type", - "ToastsAttrTitle": "Toast title", - "ToastsAttrContent": "Toast content support HTML", - "ToastsAttrDelay": "Auto hide interval", - "ToastsAttrIsAutoHide": "Whether to automatically hide", - "ToastsAttrIsHtml": "Whether the content contains Html code", - "ToastsAttrPlacement": "Location" + "BootstrapBlazor.Server.Components.Components.GlobalSearch": { + "ArrowKeyText": "to Navigate", + "EmptySearchResultPlaceHolder": "No match searches", + "EnterKeyText": "to Select", + "EscKeyText": "to Close", + "LogoText": "Powered by BootstrapBlazor", + "SearchingText": "Searching ...", + "SearchPlaceHolder": "Search", + "SearchResultPlaceHolder": "Type something to search", + "SearchResultText": "Found {0} results in {1}ms" }, - "BootstrapBlazor.Server.Components.Samples.Timers": { - "TimersTitle": "Timer", - "TimersDescription": "For time countdown", - "TimersNormalTitle": "Basic usage", - "TimersNormalIntro": "Set the countdown time by setting the Value attribute", - "TimersColorTitle": "Color", - "TimersColorIntro": "Set the circular progress bar color by setting the Color property" + "BootstrapBlazor.Server.Components.Components.Header": { + "DownloadText": "Download", + "FullScreenTooltipText": "Full Screen", + "HomeText": "Home", + "IntroductionText": "Documents", + "TutorialsText": "Tutorials" }, - "BootstrapBlazor.Server.Components.Samples.SweetAlerts": { - "SweetAlertsTitle": "SweetAlert popup component", - "SweetAlertsDescription": "Modal dialog box, mostly used to continue after inquiring during the action, or to display the execution result", - "SweetAlertsTipsTitle": "Component usage introduction", - "SweetAlertsTips1": "1. Inject the service SwalService", - "SweetAlertsTips2": "2. Call its instance api", - "SweetAlertsPreTitleText": "I am Title", - "SweetAlertsPreContentText": "I am Content", - "SweetAlertsNormalTitle": "Basic usage", - "SweetAlertsNormalIntro": "Call Swal by injecting the service to pop up a dialog", - "SweetAlertsNormalSuccess": "success", - "SweetAlertsPopups": "Pop-ups", - "SweetAlertsNormalFail": "fail", - "SweetAlertsNormalWarn": "warn", - "SweetAlertsNormalHint": "hint", - "SweetAlertsNormalDoubt": "doubt", - "SweetAlertsDisplayTitle": "Set display content", - "SweetAlertsDisplayIntro": "By setting Title Content is used to display the title and content of the pop-up window", - "SweetAlertsButtonTitle": "Custom button", - "SweetAlertsButtonIntro": "Customize the buttons in the pop-up window by setting ButtonTemplate", - "SweetAlertsComponentTitle": "Show custom components", - "SweetAlertsComponentIntro": "By setting the Component popup content as a custom component", - "SweetAlertsModalTitle": "Modal dialog", - "SweetAlertsModalIntro": "By calling the await SwalService.ShowModal method, the modal box is popped up. After clicking the button in the pop-up window to close the pop-up window, the subsequent code continues to execute.", - "SweetAlertsModalDescription": "This sample code calls The method await SwalService.ShowModal pops up a modal box, and the subsequent code continues to execute only after the pop-up window is closed.", - "SweetAlertsModalTips": "IsConfirm The parameter indicates that the pop-up window is a confirmation window, and two buttons are automatically generated Cancel Confirm", - "SweetAlertsFooterTitle": "Show Footer Information", - "SweetAlertsFooterIntro": "Customize the Footer template by setting FooterTemplate", - "SweetAlertsFooterDescription": "parameter ShowFooter The default is false to not display the footer template, it needs to be set to true", - "SweetAlertsFooterButtonText": "Popup with Footer", - "SweetAlertsAutoCloseTitle": "Auto-off function", - "SweetAlertsAutoCloseIntro": "Customize the auto-close time by setting the IsAutoHide Delay property", - "SweetAlertsAutoCloseDescription": "parameter IsAutoHide Defaults to false to disable auto-close, The parameter Delay defaults to 4000 milliseconds", - "SweetAlertsAutoCloseButtonText": "Auto close swal", - "SweetAlertsCloseTitle": "Close by function", - "SweetAlertsCloseIntro": "Close the swal popup by call SwalOption instance method CloseAsync", - "SweetAlertsCloseDescription": "Set IsAutoHide=\"false\" ShowClose=\"false\", close the pop-up window by call await option.CloseAsync", - "SweetAlertsCloseButtonText": "close swal", - "SwalOptionTitle": "Modal", - "SwalOptionContent": "Content", - "SwalConsoleInfo": "Return result:", - "AttrCategory": "Popover type", - "AttrTitle": "Popup title", - "AttrContent": "Popup content", - "AttrDelay": "Auto hide interval", - "AttrAutoHide": "Whether to automatically hide", - "AttrShowClose": "Whether to show the close button", - "AttrShowFooter": "Whether to show the footer template", - "AttrIsConfirm": "Whether it is confirmation popup mode", - "AttrBodyContext": "Cascading parameter for BodyTemplate", - "AttrBodyTemplate": "Modal body display template", - "AttrFooterTemplate": "Modal footer display template", - "AttrButtonTemplate": "Modal button template" + "BootstrapBlazor.Server.Components.Components.MethodTable": { + "Title": "Methods" }, - "BootstrapBlazor.Server.Components.Samples.Spinners": { - "SpinnersTitle": "Spinner icon", - "SpinnersDescription": "Show animation when loading data", - "SpinnersTipsTitle": "when to use", - "SpinnersTips": "When the page is partially waiting for asynchronous data or is being rendered, appropriate loading animations can effectively relieve the user's anxiety.", - "SpinnersNormalTitle": "Basic usage", - "SpinnersNormalIntro": "Default rotate icon", - "SpinnersColorTitle": "Spinner Spinner icon with color", - "SpinnersColorIntro": "Provides a spin icon in base color", - "SpinnersGrowingTitle": "Growing Spinner spin icon", - "SpinnersGrowingIntro": "Growing Rotation Icon", - "SpinnersGrowingColorTitle": "Growing Spinner Spinning icon with color", - "SpinnersGrowingColorIntro": "Provides a spin icon in base color", - "SpinnersSizeTitle": "Spinner spin icon size", - "SpinnersSizeIntro": "Icon style size", - "SpinnersFlexTitle": "Spinner Flex", - "SpinnersFlexIntro": "Custom layout", - "SpinnersCustomTitle": "Custom Title", - "SpinnersCustomIntro": "Custom layout with text", - "SpinnersCustomLoading": "Loading...", - "SpinnersFloatTitle": "Spinner Floats", - "SpinnersFloatIntro": "Use Float layout" + "BootstrapBlazor.Server.Components.Components.PackageTips": { + "Tips": "

Precautions

This component relies on {0}, which needs to reference its component package when using this component

Nuget Install

Use nuget.org to install {0} component

" }, - "BootstrapBlazor.Server.Components.Samples.Splittings": { - "SplittingTitle": "Loader", - "SplittingDescription": "Display dynamic effects when loading data", - "SplittingTipsTitle": "When to use", - "SplittingTips": "When parts of the page are waiting for asynchronous data or during the rendering process, appropriate loading dynamics can effectively alleviate user anxiety.", - "SplittingNormalTitle": "Basic usage", - "SplittingNormalIntro": "Default Load Animation", - "SplittingTextTitle": "Custom Text", - "SplittingTextIntro": "Modify the displayed text content", - "SplittingColorTitle": "Color", - "SplittingColorIntro": "Modify the color of progress", - "SplittingColumnsTitle": "Colunms", - "SplittingColumnsIntro": "Modify the Colunms of progress bar segmentation granularity", - "SplittingColumnsText": "Colunms", - "SplittingText": "Loading 。。。" + "BootstrapBlazor.Server.Components.Components.Pre": { + "CopiedText": "Copied", + "LoadingText": "Loading ...", + "MinusTooltipTitle": "Minus lines", + "PlusTooltipTitle": "Plus lines", + "TooltipTitle": "Copy" }, - "BootstrapBlazor.Server.Components.Samples.SearchDialogs": { - "SearchDialogsTitle": "SearchDialog search popup", - "SearchDialogsSubTitle": "Automatically render search popups by binding the data model", - "SearchDialogsDescription": "SearchDialog component is Dialog An extension of the component, suitable for setting search criteria in the data popup.", - "SearchDialogsTips": "Inject the service by calling DialogService of ShowSearchDialog The method directly pops up the search criteria pop-up window, which greatly reduces the amount of code. SearchDialogOption Configuration class inheritance DialogOption , for more parameter settings, please click [portal]", - "SearchDialogsNormalTitle": "Basic usage", - "SearchDialogsNormalIntro": "By binding the TModel data model, the search form for each field of the model is automatically generated", - "SearchDialogsNormalButtonText": "Click to pop up search popup", - "SearchDialogsFieldTitle": "Customize the criteria fields displayed in the search popup", - "SearchDialogsFieldIntro": "Explicitly set the displayed search field by setting the Columns parameter", - "SearchDialogsFieldButtonText": "Click to pop up search popup", - "SearchDialogsLayoutTitle": "Set the layout in the search popup", - "SearchDialogsLayoutIntro": "By setting the RowType parameter to explicitly set the layout of the components in the pop-up window, the default is the upper and lower layout, and the value can be set to inline horizontal layout", - "SearchDialogsLayoutButtonText1": "Search popup (left-aligned)", - "SearchDialogsLayoutButtonText2": "Search popup (right aligned)", - "SearchDialogOptionAttr": "SearchDialogOption property" - }, - "BootstrapBlazor.Server.Components.Samples.PopoverConfirms": { - "PopoverConfirmsTitle": "PopConfirm bubble check box", - "PopoverConfirmsDescription": "Click on the element to pop up a bubble confirmation box.", - "PopoverConfirmsNormalTitle": "Basic usage", - "PopoverConfirmsNormalIntro": "The attributes of PopConfirm are very similar to Popover, so for repeated attributes, please refer to the attributes of Popover documentation, which is not explained in detail in this document.", - "PopoverConfirmsNormalPopupBoxText": "pop-up box below", - "PopoverConfirmsNormalPopupBoxContent": "Is this a piece of content sure to delete?", - "PopoverConfirmsNormalRightPopup": "right popup", - "PopoverConfirmsNormalRightPopupContent": "Is this a piece of content sure to delete?", - "PopoverConfirmsNormalLeftPopup": "left popup", - "PopoverConfirmsNormalLeftPopupContent": "Is this a piece of content sure to delete?", - "PopoverConfirmsNormalPopupAbove": "popup above", - "PopoverConfirmsNormalPopupAboveContent": "Are you sure you want to delete a piece of content?", - "PopoverConfirmsContentTitle": "Content Change the text displayed in the confirmation popup", - "PopoverConfirmsContentIntro": "Change the text displayed in the confirmation popup by setting the Content attribute", - "PopoverConfirmsContentDelete": "Delete confirmation button", - "PopoverConfirmsContentDeleteContent": "Are you sure you want to delete the data?", - "PopoverConfirmsIsAsyncTitle": "Asynchronous confirmation", - "PopoverConfirmsIsAsyncIntro": "By setting the IsAsync attribute, the data is submitted asynchronously when the confirm button is clicked. In some specific scenarios, the button needs to remain disabled after asynchronous operation. Please control this using the IsKeepDisabled parameter.", - "PopoverConfirmsIsAsyncConfirmationText": "Asynchronous confirmation", - "PopoverConfirmsIsAsyncConfirmationContent": "Are you sure you want to delete the data?", - "PopoverConfirmsFormTitle": "form submission", - "PopoverConfirmsFormIntro": "By setting the ButtonType property value to ButtonType.Submit, the confirmation button is clicked to perform asynchronous form data submission", - "PopoverConfirmsFormSubmitFormText": "submit Form", - "PopoverConfirmsFormSubmitFormContent": "Are you sure you want to submit data?", - "PopoverConfirmsIsLinkTitle": "hyperlink button", - "PopoverConfirmsIsLinkIntro": "By setting the IsLink attribute the component uses the A tag to render", - "PopoverConfirmsIsLinkHyperLinkText": "i am hyperlink", - "PopoverConfirmsIsLinkHyperLinkContent": "Are you sure you want to delete the data?", - "PopoverConfirmsCustomClassTitle": "custom style", - "PopoverConfirmsCustomClassIntro": "Set the CssClass custom component style", - "PopoverConfirmsCustomClassCustomButtonText": "custom style button", - "PopoverConfirmsCustomClassCustomButtonContent": "Are you sure you want to delete the data?", - "PopoverConfirmsBodyTemplateTitle": "Customize the PopConfirmButton content", - "PopoverConfirmsBodyTemplateIntro": "Customize the content by setting the BodyTemplate property", - "PopoverConfirmsBodyTemplateButtonText": "Customize content", - "PopoverConfirmsShowButtonsTitle": "Custom Component", - "PopoverConfirmsShowButtonsIntro": "By setting ShowCloseButton=\"false\" ShowConfirmButton=\"false\", you don't display the built-in function buttons, and customize an Approve button in the custom component.", - "PopoverConfirmsShowButtonsButtonText": "Custom Component", - "PopoverConfirmsShowButtonsDesc": "In a custom component, you can call the Close or Confirm method inside the component through cascading parameters", - "PopoverConfirmsTriggerTitle": "Trigger", - "PopoverConfirmsTriggerIntro": "By setting the Trigger parameter, you can set the way the component pops up the confirmation box. The default value is click. You can also set hover focus to use in combination." - }, - "BootstrapBlazor.Server.Components.Components.CustomPopConfirmContent": { - "CustomPopConfirmContentText": "Custom content", - "CustomPopConfirmContentButtonText": "Approval" - }, - "BootstrapBlazor.Server.Components.Samples.Popovers": { - "PopoversTitle": "Popover popup component", - "PopoversDescription": "Click/mouse into the element to pop up a bubble-like card overlay", - "PopoversNormalTitle": "Basic usage", - "PopoversNormalIntro": "Click the text input box to pop up the Popover pop-up box, Placement set the position of the pop-up box, close the pop-up box when clicking the second time", - "PopoversButtonTitle": "button activates popup", - "PopoversButtonIntro": "Popover pop-up box pops up after clicking the button", - "PopoversTemplateTitle": "Custom Template", - "PopoversTemplateIntro": "Customize the pop-up content by setting the Template template", - "PopoversTemplateButtonText": "Template", - "PopoversTemplateTitleText": "Custom Template", - "PopoversButtonButtonText": "Click to activate/deactivate", - "PopoversCssClassTitle": "custom style", - "PopoversCssClassIntro": "Customize the pop-up window by setting the Popover parameter CssClass", - "PopoversCssClassDescription": "set up Popover parameter CssClass=\"custom-popover\" make custom styles", - "PopoversCssClassButtonText": "Click to activate/deactivate", - "PopoversManualTitle": "Manual", - "PopoversManualIntro": "Use code to control the popover state by setting Trigger=\"manual\"", - "PopoversManualDescLI1": "The child component uses the cascade parameters to get the Popover instance and then calls its methods Show Hide Toggle", - "PopoversManualDescLI2": "Get the Popover instance through @ref and call its instances method" + "BootstrapBlazor.Server.Components.Components.QQGroup": { + "Group": "QQ Group", + "Status": " Full", + "Welcome": "Welcome to join the group discussion" }, - "BootstrapBlazor.Server.Components.Samples.Progress": { - "ProgressTitle": "Progress progress bar", - "ProgressDescription": "Used to display the progress of the operation, inform the user of the current status and expectations", - "ProgressNormalTitle": "Progress bar component", - "ProgressNormalIntro": "Common progress bar", - "ProgressDisplayValueTitle": "Display value", - "ProgressDisplayValueIntro": "Set the progress bar value display through IsShowValue", - "ProgressHeightTitle": "Set the progress bar height", - "ProgressHeightIntro": "Set the progress bar height via Height", - "ProgressColorTitle": "Progress bar with color", - "ProgressColorIntro": "Set the progress bar color", - "ProgressStripeTitle": "Whether to show stripes", - "ProgressStripeIntro": "Set the stripe setting of the progress bar via IsStriped", - "ProgressDynamicTitle": "Whether to display dynamically", - "ProgressDynamicIntro": "Set the dynamic display of the progress bar through IsAnimated", - "ProgressBindingTitle": "Two-way binding data", - "ProgressBindingIntro": "Bind data", - "ProgressDecimalsTitle": "Decimals", - "ProgressDecimalsIntro": "Adjust the number of decimal places by setting the Round parameter, which defaults to 0. Adjust the rounding mode by setting the MidpointRoundingparameter, which defaults to MidpointRounding. AwayFromZero rounding" + "BootstrapBlazor.Server.Components.Components.ThemeChooser": { + "HeaderText": "Themes", + "Title": "Click to choose theme" }, - "BootstrapBlazor.Server.Components.Samples.Responsives": { - "ResponsiveTitle": "Responsive breakpoint monitoring", - "ResponsiveDescription": "Determines whether to re-render the content of a responsive layout based on parameter conditions, usually used for responsive layouts", - "ResponsiveNormalTitle": "Basic usage", - "ResponsiveNormalIntro": "Resize the browser window and observe the change of Breakpoint", - "ResponsiveNormalIntroCurrentText": "current" + "BootstrapBlazor.Server.Components.Components.Tips": { + "Title": "Tips" }, - "BootstrapBlazor.Server.Components.Samples.Modals": { - "ModalsTitle": "Modal box", - "ModalsDescription": "Inform the user and host relevant actions while preserving the current page state", - "ModalsNormalTitle": "Basic usage", - "ModalsNormalIntro": "A dialog box pops up, suitable for scenarios that require more customization", - "ModalsNormalPopupTitle": "Popup title", - "ModalsNormalPopupText": "popup text", - "ModalsNormalIsKeyboard": "by setting Modal component IsKeyboard:true parameter, whether to open the pop-up window is supported ESC", - "ModalsNormalPopups": "Pop-ups", - "ModalsNormalDefaultPopup": "Default popup", - "ModalsNormalDefaultPopupText": "I am the text in the pop-up window", - "ModalsIsBackdropTitle": "IsBackdrop background off mode", - "ModalsIsBackdropIntro": "Click the area outside the pop-up window to close the pop-up window effect by default", - "ModalsIsBackdropToClose": "Click on the background to close the popup", - "ModalsTitlePopupWindowText": "I am the text in the pop-up window", - "ModalsDialogSizeTitle": "Bullet size", - "ModalsDialogSizeIntro": "Set the size of the popup component through Size", - "ModalsResize": "Resize", - "ModalsDialogResizeTitle": "Resize", - "ModalsDialogResizeIntro": "Resize the modal box by setting the ShowResize property", - "ModalsSmallPopup": "small popup", - "ModalsBigPopup": "big popup", - "ModalsOverSizedPopup": "OverSized pop-up window", - "ModalsSuperLargePopup": "super large pop-up window", - "ModalsFullScreenSizeTitle": "Full screen popup", - "ModalsFullScreenSizeIntro": "Just set the property FullScreenSize", - "ModalsFullScreenPopup": "Full screen popup", - "ModalsFullScreenPopup992": "Full screen popup(<992px)", - "ModalsLargeFullScreenPopup": "Large full screen popup", - "ModalsFullScreenPopup1200": "Full screen popup(<1200px)", - "ModalsLargeFullScreenPopupWindow": "Large full-screen pop-up window", - "ModalsFullScreenPopup1400": "Full screen popup(<1400px)", - "ModalsSuperLargeFullScreenPopupWindow": "Super large full-screen pop-up window", - "ModalsCenterVerticallyTitle": "Center vertically", - "ModalsCenterVerticallyIntro": "Set the vertical centering of the popup component via IsCentered", - "ModalsVerticallyCenteredPopup": "Vertically centered popup", - "ModalsLongContentTitle": "Extra long content", - "ModalsLongContentIntro": "Use IsScrolling to set the scroll wheel sliding function of the pop-up frame component for the excess content", - "ModalsVeryLongContent": "Pop-up window with very long content", - "ModalsScrollBarPopup": "Built-in scroll bar popup", - "ModalsIsDraggableTitle": "Draggable popup", - "ModalsIsDraggableIntro": "Click on the title bar of the pop-up window to drag and drop the pop-up window", - "ModalsMaximizeTitle": "Maximize button", - "ModalsMaximizeIntro": "Show the maximize button by setting the ShowMaximinzeButton popup", - "ModalsMaximizePopup": "Maximize popup", - "ModalsShownCallbackAsyncTitle": "Popup shows callback method", - "ModalsShownCallbackAsyncIntro": "By setting the ShowCallbackAsync callback delegate, this method will be recalled after the pop-up window is displayed", - "ModalsAttributesFirstAfterRenderCallbackAsync": "Modal first after render callback", - "ModalsAttributeHeaderTemplate": "Modal body ModalHeader template", - "ModalsAttributeBodyTemplate": "Modal body ModalBody component", - "ModalsAttributeChildContent": "Content", - "ModalsAttributeFooterTemplate": "ModalFooter component at the bottom of the modal", - "ModalsAttributeIsBackdrop": "Whether to close the popup in the background", - "ModalsAttributeIsKeyboard": "Whether to respond to ESC keyboard", - "ModalsAttributeIsCentered": "Whether to center vertically", - "ModalsAttributeIsScrolling": "Whether to scroll when the text of the pop-up window is too long", - "ModalsAttributeIsFade": "Whether to enable the fade-in and fade-out animation effect", - "ModalsAttributeIsDraggable": "Whether to enable the draggable effect", - "ModalsAttributeShowCloseButton": "Whether to show the close button", - "ModalsAttributeShowFooter": "Whether to show Footer", - "ModalsAttributeSize": "Size", - "ModalsAttributeFullScreenSize": "Full screen when smaller than a certain size", - "ModalsAttributeTitle": "Popup title", - "ModalsAttributeShowMaximizeButton": "Whether to show the popup maximize button", - "ModalsAttributeShownCallbackAsync": "Popup shows callback method" + "BootstrapBlazor.Server.Components.Components.UpdateIntro": { + "B1": "Bootstrap Blazor at present has nearly 200 components. This component is based on", + "B2": "An enterprise-level component library that provides several types of common components such as layout, navigation, form, data, notification, icon, voice, etc. Each component has been carefully designed with modularity, responsiveness and excellent performance. Starting from more practical scenarios, meeting the needs of various scenarios, greatly reducing the time cost of developers, greatly shortening the development cycle, greatly improving development efficiency, and providing a set of", + "B3": "General Rights Management System", + "B4": "Example project", + "B5": "Products are maintained by a professional full-time technical team, with efficient response speed, diversified solutions, long-term support, and enterprise-level support. At present, it has been used in many well-known state-owned enterprises, and the project is running stably with a maximum of 1200 people online. On the right is the QR code of the Chinese Blazor QQ community with the largest number of people in China, welcome to scan and join the group.", + "H1": "Component library updated to", + "P1": "component updated to", + "P2": "Change log", + "P3": "portal", + "P4": "If the component brings you convenience, please help to light up the project" }, - "BootstrapBlazor.Server.Components.Samples.Masks": { - "MaskTitle": "Mask", - "MaskDescription": "By calling the service display and hide methods, a mask layer is displayed to mask the data.", - "MaskNormalTitle": "Basic usage", - "MaskNormalIntro": "Call the MaskService mask service example method Show to display a mask, and call the instance method Close to close the mask after 3 seconds", - "MaskNormalDesc": "You can adjust the ZIndex Opacity BackgroundColor parameters via MaskOption", - "ShowMaskButtonText": "Show", - "MaskContainerTitle": "Container", - "MaskContainerIntro": "Specify the mask position by setting the MaskOption parameter ContainerId", - "MultipleMaskContainerTitle": "Multiple Mask", - "MultipleMaskContainerIntro": "By customizing the Mask component, you can mask multiple parts of a web page.", - "MultipleMaskContainerDesc": "Set the Mask component in the component. When calling the Show instance method of MaskService, specify the Mask instance as the second parameter.", - "MaskCloseTitle": "Close By Code", - "MaskCloseIntro": "Close the popup by using the DialogCloseButton component or cascade parameters" + "BootstrapBlazor.Server.Components.Components.Video": { + "H1": "B station related video link", + "L1": "[portal]", + "L2": "No" }, - "BootstrapBlazor.Server.Components.Samples.Messages": { - "MessagesTitle": "Message prompt", - "MessagesDescription": "Often used for feedback prompts after active operations. The difference from Toast is that the latter is more passive reminder for system-level notifications", - "MessagesIntro": "Component usage introduction:", - "MessagesTips1": "1. Inject service MessageService", - "MessagesTips2": "2. call its instance api", - "MessagesTips3": "This is a reminder message", - "MessagesNormalTitle": "Basic usage", - "MessagesNormalIntro": "Appears from the top and automatically disappears after 4 seconds", - "MessagesMessagePrompt": "Open the message prompt", - "MessagesAsyncTitle": "Async notification", - "MessagesAsyncIntro": "By setting the button's IsAsync parameter, use the same MessageOption to update the pop-up window information for different steps", - "MessagesAsyncDemoStep1Text": "Packing documents, please wait...", - "MessagesAsyncDemoStep2Text": "Packaging completed, downloading...", - "MessagesAsyncDemoStep3Text": "Download completed, close the window automatically", - "MessagesAsyncText": "AsyncNotify", - "MessagesIconTitle": "message box with icon", - "MessagesIconIntro": "Change the small icon on the left side of the message box by setting the Icon property of MessageOption", - "MessagesCloseButtonTitle": "message box with close button", - "MessagesCloseButtonIntro": "Change the close button to appear on the right side of the message box by setting the ShowDismiss property of MessageOption", - "MessagesLeftBoardTitle": "message box with border on the left", - "MessagesLeftBoardIntro": "Change the left border style of the message box by setting the ShowBar property of MessageOption", - "MessagesDifferentColorTitle": "message boxes in different colors", - "MessagesDifferentColorIntro": "Change the message box color by setting the Color property of MessageOption", - "MessagesDifferentColorPrimary": "Primary message", - "MessagesDifferentColorSuccess": "success message", - "MessagesDifferentColorInfo": "Info message", - "MessagesDifferentColorDanger": "Danger message", - "MessagesDifferentColorWarning": "Warning message", - "MessagesDifferentColorSecondary": "Secondary message", - "MessagesPositionTitle": "message box pop-up location", - "MessagesPositionIntro": "Specify the Message component that has set the bottom display position by setting the component parameter of the MessageService service", - "MessagesItem": "MessageOption property", - "MessagesTemplateTitle": "Custom template", - "MessagesTemplateIntro": "By setting the ChildContent template, rich custom styles and content prompt information can be achieved", - "MessagesTemplatePrompt": "Custom message", - "MessagesShowModeTitle": "Show mode", - "MessagesShowModeIntro": "Specify the display mode by setting the ShowMode parameter", - "MessagesShowModePrompt": "Show only last message" + "BootstrapBlazor.Server.Components.Layout.BaseLayout": { + "CancelText": "Cancel", + "ChatTooltip": "Azure OpenAI", + "DarkMode": "Dark Mode", + "FlowText": "Workflow", + "InstallAppText": "Install PWA App", + "InstallText": "Install", + "LightMode": "Light Mode", + "SiteTitle": "Bootstrap Blazor enterprise-level UI component library", + "Title": "View update log" }, - "BootstrapBlazor.Server.Components.Samples.Lights": { - "LightsTitle": "Light indicator", - "LightsDescription": "Provides various status indicators", - "LightsNormalTitle": "common usage", - "LightsNormalIntro": "for status indication", - "LightsFlashingTitle": "flicker", - "LightsFlashingIntro": "Flash the light by setting the parameter IsFlash", - "LightsColorTitle": "discoloration", - "LightsColorIntro": "Color the light by setting the value of the parameter Color", - "LightsTooltipTextTitle": "prompt text", - "LightsTooltipTextIntro": "By setting the value of the attribute TooltipText to make the tooltip text prompt when the mouse hovers over the indicator light", - "TooltipText": "I am prompt text message", - "LightsFlatTitle": "Flat", - "LightsFlatIntro": "Make the indicator light flat by setting the parameter IsFlat" + "BootstrapBlazor.Server.Components.Layout.ComponentLayout": { + "Example": "Example", + "Group": "Community", + "IconTheme": "Icon", + "Title": "Enterprise-level component library based on Bootstrap and Blazor", + "Video": "Video", + "ViewC#Code": "View C# Code", + "ViewExample": "View Example", + "ViewRazorCode": "View Razor Code" }, - "BootstrapBlazor.Server.Components.Samples.Charts.Index": { - "Chart": "Chart", - "ChartIntro": "Drawing components of various charts with given data", - "ChartIntro2": "Component data can be set in the OnInit callback delegate" + "BootstrapBlazor.Server.Components.Layout.HomeLayout": { + "Community": "Community", + "CommunityLi1": "Contribution guide", + "CommunityLi2": "Join us", + "CommunityLi3": "Contact details", + "Footer": "Gitee Hosting Platform", + "FooterH1": "Related Works", + "FooterLi1": "Slider verification code", + "FriendLink": "Links" }, - "BootstrapBlazor.Server.Components.Samples.Charts.Bubble": { - "BubbleNormalTitle": "Bubble diagram", - "BubbleNormalIntro": "Change the chart to a bubble chart by setting ChartType", - "BubbleNormalRandomData": "Random data", - "BubbleNormalAddDataSet": "Add dataset", - "BubbleNormalRemoveDataset": "Remove dataset", - "BubbleNormalAddData": "Adding data", - "BubbleNormalRemoveData": "Remove data", - "BubbleNormalReload": "Reload", - "BubbleBarAspectRatioTitle": "Chart ratio", - "BubbleBarAspectRatioIntro": "Setting the height and width will automatically disable the constraint chart ratio, and the chart will fill the container" - }, - "BootstrapBlazor.Server.Components.Samples.Charts.Doughnut": { - "DoughnutNormalTitle": "Doughnut diagram", - "DoughnutNormalIntro": "Change the chart to a doughnut chart by setting ChartType", - "DoughnutNormalRandomData": "Random data", - "DoughnutNormalAddDataset": "Add dataset", - "DoughnutNormalRemoveDataset": "Remove dataset", - "DoughnutNormalAddingData": "Adding data", - "DoughnutNormalRemoveData": "Remove data", - "DoughnutNormalHalf": "Half circle/Full circle", - "DoughnutNormalReload": "Reload", - "DoughnutAspectRatioTitle": "Chart ratio", - "DoughnutAspectRatioIntro": "Setting the height and width will automatically disable the constraint chart ratio, and the chart will fill the container" - }, - "BootstrapBlazor.Server.Components.Samples.Charts.Pie": { - "PieNormalTitle": "Pie diagram", - "PieNormalIntro": "Change the chart to a pie chart by setting ChartType", - "PieNormalRandomData": "Random data", - "PieNormalAddDataset": "Add dataset", - "PieNormalRemoveDataset": "Remove dataset", - "PieNormalAddingData": "Adding data", - "PieNormalRemoveData": "Remove data", - "PieNormalReload": "Reload", - "PieAspectRatioTitle": "Chart ratio", - "PieAspectRatioIntro": "Setting the height and width will automatically disable the constraint chart ratio, and the chart will fill the container", - "PieLegendPositionTitle": "LegendPostion", - "PieLegendPositionIntro": "Set the legend position through LegendPosition" - }, - "BootstrapBlazor.Server.Components.Samples.Charts.Line": { - "LineOnInitTitle": "Line graph", - "LineOnInitIntro": "Use OnInit to call back the delegate method, and after assigning the initialization data, the drawing operation can be performed, By setting the BorderWidth attribute, you can set the line width of the line chart, with a default value of 3, you can set the font size of Legend Labels by setting the ChartOptions.LegendLabelsFontSize property", - "LineOnInitRandomData": "Random data", - "LineOnInitAddDataset": "Add dataset", - "LineOnInitRemoveDataset": "Remove dataset", - "LineOnInitAddingData": "Adding data", - "LineOnInitRemoveData": "Remove data", - "LineOnInitContinueData": "Continue data", - "LineAnimation": "Animation", - "LineContinueTitle": "Plot", - "LineContinueIntro": "Call the instance method Reload, readjust the data to shift the curve to the left, set IsAnimation to turn off the animation effect", - "LineTensionTitle": "Line graph", - "LineTensionIntro": "Use the Tension parameter of the ChartDataset instance to adjust the curvature of the polyline, the default is 0.4f", - "LineNullableTitle": "Line graph", - "LineNullableIntro": "Use to set the Data parameter of the ChartDataset instance with null, and the line chart is connected with a dotted line", - "LineOnInitReload": "Reload", - "LineTwoYAxesTitle": "Double Y axis", - "LineTwoYAxesIntro": "Show secondary Y axis: alignment, title and data group", - "LineBarAspectRatioTitle": "Chart ratio", - "LineBarAspectRatioIntro": "Setting the height and width will automatically disable the constraint chart ratio, and the chart will fill the container", - "LineChartJSTitle": "Generate Chart through JS", - "LineChartJSIntro": "Due to the underlying reference ofBootstrapBlazor.CharttoChart.JS, we can call and generate charts through JS.", - "AppendDataTitle": "Append Data", - "AppendDataIntro": "Since ChartDataSource does not fully encapsulate all parameters in Chart.JS, when we need to set some unprovided parameters, we can use AppendData to complete it.", - "CustomTooltipTitle": "Tooltip", - "CustomTooltipIntro": "Customizing Tooltip requires using client script settings", - "CustomTooltipLi1": "Chart component settings Id parameter", - "CustomTooltipLi2": "Create a client-side JavaScript script. This example uses the isolated script method to export the method name customTooltip. The parameters are component Id callback reference instance callback method name (TooltipLog)", - "CustomTooltipLi3": "In this example, the base class method InvokeInitAsync is overloaded to call the client script through the await InvokeVoidAsync(\"customTooltip\", CustomTooltipId, Interop, nameof(TooltipLog)) statement" - }, - "BootstrapBlazor.Server.Components.Samples.Charts.Bar": { - "BarTypeTitle": "Bar graph", - "BarTypeIntro": "Change the chart to a bar chart by setting ChartType", - "BarTypeAnimationOn": "turn on animation", - "BarTypeAnimationOff": "turn off animation", - "BarTypeRandomData": "random data", - "BarTypeAddDataSet": "Add dataset", - "BarTypeRemoveDataSet": "Remove dataset", - "BarTypeAddData": "Adding data", - "BarTypeRemoveData": "Remove data", - "BarStackedTitle": "Stacked", - "BarStackedIntro": "By setting the X/Y axis Stacked property, control whether to stack the arrangement", - "BarTypeReload": "Reload", - "BarTwoYAxesTitle": "Double Y axis", - "BarTwoYAxesIntro": "Show secondary Y axis: alignment, title and data group", - "BarAspectRatioTitle": "Chart ratio", - "BarAspectRatioIntro": "Setting the height and width will automatically disable the constraint chart ratio, and the chart will fill the container", - "BarShowDataLabelTitle": "Display chart data values", - "BarShowDataLabelIntro": "By setting ShowDataLabel property,control whether to display chart data values", - "BarColorSeparatelyTitle": "Set bar chart colors separately", - "BarColorSeparatelyIntro": "By setting BarColorSeparately property,control whether to Set bar chart colors separately,and By setting BackgroundColor property, set bar chart color" - }, - "BootstrapBlazor.Server.Components.Samples.Transitions": { - "TransitionsTitle": "Transition effect", - "TransitionsDescription": "BootstarpBlazor applies the transition animation to some components, you can also use it directly.", - "TransitionsNormalTitle": "Basic usage", - "TransitionsNormalIntro": "Demonstration of basic animation effects", - "TransitionsEndCallbackTitle": "Animation execution complete callback", - "TransitionsEndCallbackIntro": "Execute the callback function after the animation is completed", - "TransitionsDurationTitle": "Set animation duration", - "TransitionsDurationIntro": "Control the animation duration in milliseconds by setting the Duration parameter" - }, - "BootstrapBlazor.Server.Components.Samples.EditDialogs": { - "Title": "EditDialog edit popup", - "Description": "Automatic rendering of edit popups by binding the data model", - "SubDescription": "EditDialog The component is an extension of the Dialog component and is suitable for data popup editing.", - "Tip": "Inject the service by calling DialogService of ShowEditDialog The method directly pops up the editing dialog box, which greatly reduces the amount of code. EditDialogOption Configuration class inheritance DialogOption,For more parameter settings, please click [portal]\"", - "NormalTitle": "Basic usage", - "NormalIntro": "Automatically generate editable forms for each field of the model by binding the TModel data model", - "NoRenderTitle": "Setting bound model part property does not show", - "NoRenderIntro": "By setting the Address Count Ignore=true of the IEditorItem instance, the editable pop-up window do not shown.", - "EditDialogOption": "EditDialogOption property", - "LeftAlignedButton": "Edit popup (left-aligned)", - "RightAlignedButton": "Edit popup (right aligned)", - "PopupButton": "Pop-ups" - }, - "BootstrapBlazor.Server.Components.Samples.BaiduOcr": { - "Title": "IBaiduOcr", - "SubTitle": "Character recognition", - "VatInvoiceTitle": "VAT Invoice", - "VatInvoiceIntro": "Call Baidu Ocr interface for text recognition by uploading VAT invoice image", - "BaiduOcrDesc": "本组件通过调用 Baidu AI 平台文字识别接口进行增值税发票文字识别。支持对增值税普票、专票、全电发票(新版全国统一电子发票,专票/普票)、卷票、区块链发票的所有字段进行结构化识别,包括发票基本信息、销售方及购买方信息、商品信息、价税信息等,其中五要素字段的识别准确率超过 99.9%; 同时,支持对增值税卷票的 21 个关键字段进行识别,包括发票类型、发票代码、发票号码、机打号码、机器编号、收款人、销售方名称、销售方纳税人识别号、开票日期、购买方名称、购买方纳税人识别号、项目、单价、数量、金额、税额、合计金额(小写)、合计金额(大写)、校验码、省、市,四要素字段的识别准确率可达95%。上传图片不能超过 4M", - "BaiduOcrIntro": "Usage", - "BaiduOcrStep1": "1. Get IBaiduOcr instance by inject service", - "BaiduOcrStep1Desc": "Update the appsettings.json file with the following configuration. Please register on Baidu AI Open Platform and apply for relevant parameter values.", - "BaiduOcrStep2": "2. Get IBaiduOcr instance by inject service", - "BaiduOcrStep3": "3. Call IBaiduOcr instance method", - "VerifyVatInvoiceTitle": "增值税验真", - "VerifyVatInvoiceIntro": "通过调用 IBaiduOcr 服务实例的发票验真方法 VerifyInvoiceAsync 返回 InvoiceVerifyResult 其属性 Validtrue 时为真" - }, - "BootstrapBlazor.Server.Components.Samples.Topologies": { - "TopologiesTitle": "Topology HMI", - "TopologiesDescription": "Rendering of human-computer interface through Topology open source components", - "TopologiesNormalTitle": "Basic usage", - "TopologiesNormalIntro": "Just load the Json file exported by the website, click the number box below the fan to control the operation" - }, - "BootstrapBlazor.Server.Components.Samples.TreeViews": { - "TreeViewsTitle": "Tree tree control", - "TreeViewsDescription": "Present information in a clear hierarchy that can be expanded or collapsed", - "TreeViewsTips1": "If the component is a generic component, you need to use TItem to specify the bound data model. In this example, the model is TreeFoo and needs to be set", - "TreeViewsTips2": "Set TreeViewItem its IsExpand parameter to control whether the current child node is expanded", - "TreeViewsTips3": "When clicking on the small arrow to expand the child item, obtain the child item data collection through the OnExpandNodeAsync callback delegate method", - "TreeViewsTips4": "Keep the node state fallback mechanism, ModelEqualityComparer CustomKeyAttribute IEqualityComparer<TItem> Equals overloaded method", - "TreeViewsTips5": "The component will remain in the expanded collapsed selected state", - "TreeViewsTips6": "Set whether the node is expanded state through TreeViewItem<TItem>.IsExpand", - "TreeViewsTips7": "Set whether the node is selected state through TreeViewItem<TItem>.IsActive", - "TreeViewsTips8": "Through TreeViewItem<TItem>.Checked, set whether the node is in checked/single selection state", - "TreeViewsTipsOnBeforeTreeItemClick": "You can prevent a node click by setting the OnBeforeTreeItemClick callback method, and cancel the click action when it returns false.", - "TreeViewsTips9": "Step 1: Set the TItem generic model", - "TreeViewsTips10": "Step 2: Set Items to get the component data source Note The data source type is IEnumerable<TreeViewItem<TItem>>", - "TreeViewsTips11": "Step 3: Set the OnExpandNodeAsync callback delegate to expand the response node to get the child data source collection", - "TreeViewsTips12": "Step 4: Set ModelEqualityComparer to provide a component identification model comparison delegate method, Note This setting is optional. Perform downgrade search through the fallback mechanism explained above", - "TreeViewNormalTitle": "Basic usage", - "TreeViewNormalIntro": "Basic tree structure display", - "TreeViewNormalDescription": "By setting the OnTreeItemClick property to monitor the event when the tree control node is clicked, the following log displays the data of the selected node when the tree control node is clicked", - "TreeViewCheckboxTitle": "Checkbox", - "TreeViewCheckboxIntro": "Suitable for use when you need to select a level", - "TreeViewCheckboxTips1": "By setting the OnTreeItemChecked property to monitor the event when the tree control node is checked, when the check box in front of the tree control node is selected, the following log displays the data of the selected node", - "TreeViewCheckboxTips2": "The Tree component will keep the status of each node when loading data. The Refresh button will update the data source Items and reinitialize the component. When you click the Append Node button, only the data inside the data source will be changed without reassigning values, so the status of each node will remain unchanged.", - "TreeViewNormalRadioListDisplayText": "Whether to reset", - "TreeViewCheckboxCheckBoxDisplayText1": "Automatically select child nodes", - "TreeViewCheckboxCheckBoxDisplayText2": "Automatically select parent node", - "TreeViewCheckboxButtonText": "Refresh", - "TreeViewCheckboxAddButtonText": "Add", - "TreeViewDraggableTitle": "Draggable nodes", - "TreeViewDraggableIntro": "Allows nodes to be dragged and dropped in the tree control", - "TreeViewDraggableDescription": "By setting the AllowDrag property, you can drag and drop nodes in the tree control. Use the OnDragItemEndAsync callback delegate to handle the drop event.", - "TreeViewTreeDisableTitle": "Disabled state", - "TreeViewTreeDisableIntro": "Some nodes of the Tree can be set to disabled state", - "TreeViewTreeDisableDescription": "By setting the Disabled property of the data source TreeViewItem object, you can control whether this node can be checked or not. When set to false, it will not affect the node expansion. /shrink function", - "TreeViewAccordionModelTitle": "Accordion mode", - "TreeViewAccordionModelIntro": "For nodes of the same level, only one can be expanded at a time", - "TreeViewAccordionModelDescription": "Enable the accordion effect by setting the IsAccordion property of the Tree component", - "TreeViewDefaultExpandTitle": "Expanded by default and selected by default", - "TreeViewDefaultExpandIntro": "Some nodes of Tree can be set to be expanded or selected by default", - "TreeViewDefaultExpandDescription": "By setting the IsExpand property of the TreeViewItem object, you can control whether this node is in the expanded state by default. In this example, navigation 2 is in the expanded state by default, and the rest Node defaults to contracted state", - "TreeViewTreeDisplayIconTitle": "Show icon", - "TreeViewTreeDisplayIconIntro": "Control whether the component displays the icon by setting ShowIcon", - "TreeViewTreeDisplayIconDescription": "By setting the ShowIcon property of the TreeViewItem object, you can control whether this node displays the icon or not", - "TreeViewTreeClickExpandTitle": "Click on the node to expand and contract", - "TreeViewTreeClickExpandIntro": "By setting ClickToggleNode to control whether to expand and contract when the node is clicked", - "TreeViewTreeClickExpandDescription": "By setting the ClickToggleNode property of the TreeViewItem object, you can control whether this node can be expanded and contracted by clicking", - "TreeViewTreeValidationFormTitle": "The Tree component is built into the validation form", - "TreeViewTreeValidationFormIntro": "Tree can be enabled inside the component Checkbox will be displayed when it is built into the validation form DisplayName This function needs to be disabled in the tree component", - "TreeViewTreeValidationFormDescription": "Show Checkbox built into validation component ValidateForm by setting ShowCheckbox property does not show DisplayName", - "TreeViewTreeLazyLoadingTitle": "Lazy loading", - "TreeViewTreeLazyLoadingIntro": "Dynamically add child nodes when expanding a node", - "TreeViewTreeLazyLoadingDescription": "By setting the node HasChildNode to control whether to display the small arrow picture of the node. Add nodes through Tree's OnExpandNodeAsync delegate", - "TreeViewTreeCustomNodeTitle": "Custom node", - "TreeViewTreeCustomNodeIntro": "Implement your own node template by setting TreeViewItem Template", - "TreeViewTreeNodeColorTitle": "Node color", - "TreeViewTreeNodeColorIntro": "Implement your own node style by setting TreeViewItem CssClass", - "TreeViewCheckedItemsTitle": "Get all selected nodes", - "TreeViewCheckedItemsIntro": "Get all nodes by setting the OnTreeItemChecked callback delegate", - "TreeViewShowSkeletonTitle": "Loading skeleton screen", - "TreeViewShowSkeletonIntro": "When the component Items is null, set ShowSkeleton=\"true\" to display the skeleton screen when asynchronously loading data. Set ShowSkeleton=\"false\" to display the default loading animation.", - "TreeViewShowSkeletonButtonText": "Asynchronous loading", - "TreeViewShowSearchTitle": "Show search", - "TreeViewShowSearchIntro": "By setting ShowSearch to display the search bar, and using the OnSearchAsync callback method to set the data source to refresh the page", - "TreeViewSetActiveTitle": "Set Active Node", - "TreeViewSetActiveIntro": "Set the currently active node by calling the SetActiveItem method", - "TreeViewSetActiveDisplayText": "Current Active Node", - "TreeViewsAttribute": "TreeViewItem property", - "TreeViewsDisableWholeTreeView": "Whole TreeView disable", - "TreeViewsWhetherToExpandWhenDisable": "Whether to expand when the control node is disabled", - "OnMaxSelectedCountExceedTitle": "Maximum Info", - "OnMaxSelectedCountExceedContent": "You can select at most {0} items", - "TreeViewMaxSelectedCountTitle": "MaxSelectedCount", - "TreeViewMaxSelectedCountIntro": "Control the maximum number of selectable items by setting the MaxSelectedCount property, and handle the logic through the OnMaxSelectedCountExceed callback", - "TreeViewMaxSelectedCountDesc": "When more than 2 nodes are selected, a Toast prompt bar will pop up", - "TreeViewEnableKeyboardArrowUpDownTitle": "Keyboard", - "TreeViewEnableKeyboardArrowUpDownIntro": "Support keyboard up and down arrow operations by setting EnableKeyboardArrowUpDown=\"true\". ArrowLeft collapse the node, ArrowRight expand the node, ArrowUp move the node up, ArrowDown move the node down, Space select the node,", - "TreeViewVirtualizeTitle": "Virtualize", - "TreeViewVirtualizeIntro": "Enable virtual scrolling by setting IsVirtualize=\"true\" to support big data", - "TreeViewVirtualizeDescription": "The component uses Virtualize to implement virtual scrolling logic, which reduces the pressure on the browser. However, if there is a lot of tree structure data, such as Select All, all data must be marked, resulting in large data in the memory. This problem has not been solved yet. Currently, this component still puts a lot of pressure on the CPU due to large data.", - "TreeViewShowToolbarTitle": "Show Toolbar", - "TreeViewShowToolbarIntro": "Show the toolbar by setting ShowToolbar=\"true\"", - "TreeViewShowToolbarDesc": "After it is turned on, when the mouse hovers over a node, a toolbar icon appears on the right, and the toolbar function can be customized; data is updated by setting the OnUpdateCallbackAsync callback method; the toolbar template is defined by setting ToolbarTemplate, and if not set, the internal default node name template is used" - }, - "BootstrapBlazor.Server.Components.Samples.SwitchButtons": { - "SwitchButtonsTitle": "Switch Button state switch button", - "SwitchButtonsDescription": "Toggle state after button click", - "SwitchButtonsNormalTitle": "Basic usage", - "SwitchButtonsNormalIntro": "Click the component to automatically switch the state", - "SwitchButtonsToggleStateTitle": "initialized state", - "SwitchButtonsToggleStateIntro": "Initialize component state by setting ToggleState", - "SwitchButtonsToggleStateDescription": "The current component state can be obtained by setting the ToggleStateChanged callback method", - "SwitchButtonsOnClickTitle": "click callback method", - "SwitchButtonsOnClickIntro": "Initialize component state by setting ToggleState", - "SwitchButtonsOnClickDescription": "OnClick callback is EventCallback will automatically refresh the current component or page, if you don't need to refresh the component or page, you can use ToggleStateChanged" - }, - "BootstrapBlazor.Server.Components.Samples.Downloads": { - "DownloadsTitle": "Download file download", - "DownloadsSubTitle": "For direct download of physical files", - "DownloadsTips1": "pay attention", - "DownloadsTips2": "Download use the DotNetStreamReference object which allows streaming file data to the client. This approach loads the entire file into the client's' memory, which can impair performance. To download relatively large files (>=250 MB), it is recommended to follow the MVC download from Url.", - "DownloadsExample": "Example", - "DownloadsExampleButtonText": "download file", - "DownloadsExampleRazorCodeTitle": "Razor code", - "DownloadsExampleRazorCodeContent": "", - "DownloadsExampleCodeTitle": "C# code", - "DownloadsExampleTestFile": "test file", - "DownloadsExampleContent": "Self-generated and written text, here can be replaced with pictures or other content", - "DownloadNormalTitle": "Normal download", - "DownloadNormalIntro": "Download files directly by setting the physical path", - "DownloadNormalButtonText": "download", - "DownloadFolderTitle": "Folder download", - "DownloadFolderIntro": "By setting the physical path of the folder, the files in the directory are packaged and compressed and downloaded", - "DownloadFolderButtonText": "download", - "DownloadBigFileTitle": "Large file download test", - "DownloadBigFileIntro": "This simulation generates a text file of 1 million lines, about 58M, which can be tested by yourself", - "DownloadBigFileButtonText": "The button sets the value of IsAsync to true for asynchronous download operation", - "DownloadImageTitle": "Get the picture and display it", - "DownloadImageIntro": "Simulate the situation where the verification code is generated directly from the front-end page or the uploaded image is not saved and displayed directly.", - "DownloadImageButtonText": "Since the test uses the files under wwwroot, there is no code generation, and wasm cannot access the wwwroot folder, so only the ssr mode is available for the test. wasm please test it yourself." - }, - "BootstrapBlazor.Server.Components.Samples.Dialogs": { - "Title": "Dialog component", - "Description": "Human-computer interaction by calling the Show method pop-up window by injecting the service", - "Tip1": "Component usage introduction", - "Tip2": "inject service DialogService [Portal]", - "Tip3": "call DialogOption instance method OnCloseAsync", - "Tip4": "CascadingParameter", - "Tip5": "DialogCloseButton", - "DialogTitle": "Data query window", - "KeyboardTitle": "Basic usage", - "KeyboardIntro": "Set the basic properties of the modal box by setting the DialogOption property", - "ResizeTitle": "Resize", - "ResizeIntro": "Resize the modal box by setting the ShowResize property", - "CustomerHeaderTitle": "Custom title bar", - "CustomerHeaderIntro": "Customize the title bar of the modal box by setting the HeaderTemplate property", - "ComponentTitle": "Pop out complex components", - "ComponentIntro": "Pop up a custom component by calling Show<Counter>()", - "ComponentTip": "In this example, the pop-up dialog box contains a built-in Counter component of a sample website", - "BodyContextTitle": "Pop-up window", - "BodyContextIntro": "By setting the BodyContext attribute value, parameters can be passed to the components in the pop-up window", - "BodyContextTip": "In this example, when the button is clicked, the value of BodyContext is set to I am a parameter, and the content of the pop-up window is the custom component DemoComponent, which is cascaded in the component. parameter gets its value", - "ApplyTitle": "Practical application", - "ApplyIntro": "In this example, by passing a primary key, the components in the pop-up window perform data query through this primary key, and display the results in the pop-up window", - "CloseDialogByCodeTitle": "Code to close the popup", - "CloseDialogByCodeIntro": "This example explains how to open and close a popup window through code", - "CloseDialogByCodeTip": "Use DialogOption instance method CloseDialogAsync to close the popup", - "DisableHeaderCloseButtonTitle": "Disable close button in Header", - "DisableHeaderCloseButtonIntro": "This example explains how to open and close a popup window through code", - "DisableHeaderCloseButtonTip": "Setting parameters ShowHeaderCloseButton Ban pop-ups Header Shows the Close button on the right", - "MultipleDialogTitle": "Multi-level popup", - "MultipleDialogIntro": "Click the button inside the popup to continue the popup dialog", - "MultipleDialogTip1": "Features", - "MultipleDialogTip2": "Click the button to pop up a dialog", - "MultipleDialogTip3": "Switch the third tab of the Tab component in the pop-up window role management", - "MultipleDialogTip4": "Click the popup in the tab to continue the popup dialog", - "MultipleDialogTip5": "Keep state of previously opened dialogs after closing the current dialog", - "MultipleDialogDesc": "At present, multi-level pop-up windows have been implemented. Each ModalDialog can independently set the IsBackdrop IsKeyboard parameters. This fixes the problem of pressing ESC in the previous version to remove all pop-up windows", - "ModalDialogTitle": "Modal dialog", - "ModalDialogIntro": "Pop up a dialog box in thread blocking mode through the ShowModal method", - "ModalDialogTip1": "Features", - "ModalDialogTip2": "Click the button to pop up a modal popup", - "ModalDialogTip3": "Change the value in the modal pop-up window when the confirm button is clicked update", - "ModalDialogTip4": "Change the value in the modal pop-up window and click the Cancel or Close button when the value is not updated", - "ModalDialogTip5": "When the modal pop-up window is clicked again, the value remains the same", - "EditDialogTitle": "Edit dialog", - "EditDialogIntro": "Pop up the save dialog through the ShowEditDialog method", - "EditDialogTip1": "Features", - "EditDialogTip2": "Click the button to pop up the edit popup", - "EditDialogTip3": "Set the pop-up window through the EditDialogOption parameter", - "EditDialogTip4": "The design starting point automatically generates a form window with client-side validation by giving a Model or Items", - "SearchDialogTitle": "Search dialog", - "SearchDialogIntro": "Pop up the save dialog through the ShowSearchDialog method", - "SearchDialogTip1": "Features", - "SearchDialogTip2": "Click the button to pop up a search popup", - "SearchDialogTip3": "Set the pop-up window through the SearchDialogOption parameter", - "SearchDialogTip4": "The design starting point automatically generates a search window by giving a Model or Items", - "SaveDialogTitle": "Save dialog", - "SaveDialogIntro": "Pop up the save dialog through the ShowSaveDialog method", - "SaveDialogTip1": "Features", - "SaveDialogTip2": "Click the button to pop up the save popup", - "SaveDialogTip3": "The design starting point automatically generates a save window by giving a TComponent, and performs data processing in the save callback method by setting saveCallback, which is required by TComponent generic components Parameters can be passed through parameters", - "SizeTitle": "Dialog size", - "SizeIntro": "Very flexible form size control can be achieved by setting the Size FullScreenSize parameter combination", - "PrintDialogTitle": "Print button", - "PrintDialogIntro": "Show a print preview button on the Header by setting ShowPrintButton", - "PrintDialogTip": "by setting PrintButtonText change the Print Preview button text", - "ShowMaximizeButtonTitle": "Full screen popup", - "ShowMaximizeButtonIntro": "Show a window maximize button on the Header by setting ShowMaximizeButton", - "ErrorLoggerTitle": "exception catch", - "ErrorLoggerIntro": "Through BootstrapBlazorRoot built-in ErrorLogger global exception capture for errors in the pop-up window", - "EmailTitle": "Practical drill", - "EmailIntro": "Simulate a mail application, select the recipient in the pop-up window and fill in the recipient box below.", - "EmailTip1": "Features", - "EmailTip2": "Click the button to pop up a modal popup", - "EmailTip3": "Pass 10 to the pop-up window by cascading parameters BodyContext to initialize data", - "EmailTip4": "Select the row data in the Table component and update the SelectedRows data through two-way binding", - "EmailTip5": "Click the Check button to update the Emails data via two-way binding", - "EmailTip6": "Emails value not updated when Cancel or Close button is clicked", - "EmailTip7": "When clicking the pop-up modal pop-up window again, the selected state of the inner row of the component remains the same", - "EmailTip8": "Prohibit closing the popup when no user is selected in the popup", - "EmailLabel": "recipient", - "Attribute": "DialogOption property", - "EmailDialogTitle": "Select recipient", - "EmailDialogButtonYes": "Choose", - "EmailInput": "please enter ...", - "HeaderToolbarTemplateTitle": "Header Toolbar Template", - "HeaderToolbarTemplateIntro": "Set HeaderToolbarTemplate custom the buttons on Header", - "KeyboardTip": "by setting DialogOption IsKeyboard parameter, whether the pop-up window supports ESC, please click the back button to set and then click the pop-up window button to test the effect", - "KeyboardOpenDialogButton": "Click to open Dialog", - "CustomerHeaderOpenDialogButton": "Pop-ups", - "HeaderToolbarTemplateButtonText": "Print", - "HeaderToolbarTemplateDialogTitle": "Custom toolbar sample", - "HeaderToolbarTemplateToastContent": "Print button clicked", - "ComponentOpenDialogButton": "Click to open Dialog", - "BodyContextOpenDialogButton": "Dialog parameter passing example", - "ApplyDisplayText": "Primary key parameter", - "ApplyOpenDialogButton": "Pop-ups", - "MultipleDialogButton": "Pop-ups", - "ModalDialogButton": "Click to open Dialog", - "EditDialogButton": "Edit popup", - "SearchDialogButton": "Search popup", - "SaveDialogButton": "Save popup", - "SizeButton": "Fullscreen popup (< 1200px)", - "PrintDialogButton": "Click to open Dialog", - "ShowMaximizeButton": "Click to open Dialog", - "ErrorLoggerButton": "global exception test", - "ExportPdfDialogTitle": "Pop up window with export Pdf function", - "ExportPdfDialogIntro": "Set ShowExportPdfButtonInHeader to display an export PDF button on the Header", - "ExportPdfDialogTip": "More parameters can be set by setting ExportPdfButtonOptions", - "ExportPdfButton": "Export Pdf", - "ConfirmDialogButton": "Popup Modal", - "ConfirmDialogModalTitle": "Literal Confirmation Modal", - "ConfirmDialogModalContent": "

this is the prompt message.

this is a danger info
" - }, - "BootstrapBlazor.Server.Components.Samples.Dispatches": { - "Title": "Dispatch message distribution", - "Description": "By injecting the service to call the instance method, the site-wide pop-up window is used for message notification", - "Tips": "This component provides functions in the form of injection services, which are usually used for site-wide message push and other functions; using this service requires subscribe and unsubscribe operations in the code", - "NormalTip": "Through this component function, this site realizes the function of prompting the whole site when the code warehouse is submitted.", - "NormalTips1": "1. Get the Injection Service specified message entity class", - "NormalTips2": "2. Subscribe notifications", - "NormalTips3": "3. Unsubscribe when the page or component is destroyed", - "NormalTips4": "4. Notification implementation method Notify", - "NormalTipsTitle": "notification title", - "NormalTipsContent": "Notification content", - "NormalTips5": "used in this example Toast component for notification, and any other built-in message component or custom component can be used for notification operation in actual combat", - "DispatchTitle": "Practical application", - "DispatchIntro": "Click the button to distribute the message, all people who open this page can receive the message distributed by this button", - "DispatchTip": "Since this function is a site-wide push notification, in order to prevent malicious use, in the example below, the button notification is disabled for 30 seconds; the message injection code is in the MainLayout template", - "DispatchNoticeButtonText": "Notice", - "DispatchNoticeMessage": "Test dispatch message" - }, - "BootstrapBlazor.Server.Components.Samples.Drawers": { - "Title": "Drawer", - "Description": "Sometimes, the Dialog component does not meet our needs. For example, your form is very long, or you need to temporarily display some documents. Drawer has almost the same API as Dialog, which brings a different experience to the UI.", - "DrawerTips": "Sometimes we want to expand a pop-up window in a certain container. We can do this by embedding a <Drawer/> drawer component in a specific container and then setting the parameter Position=\"absolute\" for relative positioning. Note: The parent container style needs to be set to position: relative;", - "NormalTitle": "Basic usage", - "NormalIntro": "Call out a temporary sidebar that can be called out from multiple directions", - "PlacementTitle": "Click to close the mask", - "PlacementIntro": "By setting the IsBackdrop property to true, the drawer is automatically closed when the mask part is clicked", - "NoBackdropTitle": "No backdrop", - "NoBackdropIntro": "By setting the ShowBackdrop=\"false\" do not show the backdrop", - "DrawerServiceTitle": "Drawer Service", - "DrawerServiceIntro": "Open the drawer pop-up window by calling the DrawerService service", - "IsKeyboardTitle": "ESC", - "IsKeyboardIntro": "By default, the component uses the ESC key to close the drawer popup. You can enable this function by IsKeyboard=\"true\"", - "BodyScrollTitle": "Body Scroll", - "BodyScrollIntro": "By setting BodyScroll, you can control whether scrolling is allowed when the drawer pop-up window is displayed. Body is false by default, scrolling is not allowed", - "Open": "click me to open", - "Content": "The layout, components, etc. in the drawer are fully customizable", - "Close": "close the drawer", - "PlacementContent": "Click on the shaded part of the mask to automatically close the drawer" - }, - "BootstrapBlazor.Server.Components.Samples.Consoles": { - "Title": "Console", - "Description": "Console component, generally used for the output of background tasks", - "NormalTitle": "Basic usage", - "NormalIntro": "Display background push messages", - "OnClearTitle": "Empty console", - "OnClearIntro": "The data set is cleared by setting the OnClear callback method. Since this example uses the same data source as the previous example, it will cause the data source update delay in the above example", - "ColorTitle": "messages in different colors", - "ColorIntro": "Changes to colors are made by setting the Color parameter of ConsoleMessageItem", - "IsAutoScrollTitle": "auto scroll", - "IsAutoScrollIntro": "Enable or disable automatic scrolling by setting the ShowAutoScroll property value", - "ShowAutoScrollDescription": "set up ShowAutoScroll=\"true\" Show autoscroll options", - "IsAutoScrollDescription": "by setting IsAutoScroll Turn on autoscroll", - "ConsoleMessageItem": "ConsoleMessageItem property", - "ShowAutoScrollTitle": "ShowAutoScroll", - "ShowAutoScrollIntro": "Switch auto scroll the data by set ShowAutoScroll parameter" - }, - "BootstrapBlazor.Server.Components.Samples.Speeches.Index": { - "SpeechTitle": "Speech Recognition and Synthesis", - "SpeechDescription": "Converted to text (STT) through microphone voice capture, or read aloud through text (TTS)", - "SpeechDescription1": "This set of components is built-in Azure and Baidu Speech service, this example relies on", - "SpeechDescription2": "When using this component, you need to reference its component package", - "SpeechLiTitle": "Actual combat experience", - "SpeechLi1": "Click start After pressing the button, speak to the computer 'Please turn on the light for me'", - "SpeechLi2": "After the computer receives the command, it will ask Are you sure you want to turn on the light? Please confirm!", - "SpeechLi3": "You speak to the computer: confirm", - "SpeechLi4": "The computer executes the command and enters it in the text box below has been opened for you text", - "SpeechButtonText": "Get started", - "SpeechGroupBoxTitle": "Command output area", - "SpeechGroupBoxHeaderText": "command panel", - "SpeechTips1": "1. registration service", - "SpeechTips1Text": "Add Baidu voice service", - "SpeechTips2": "2. use the service", - "SpeechTips2Text1": "speech recognition service", - "SpeechTips2Text2": "speech synthesis service" - }, - "BootstrapBlazor.Server.Components.Samples.Speeches.SpeechWaves": { - "SpeechWaveTitle": "SpeechWave", - "SpeechWavesDescription": "The dynamic plot of the waveform that is displayed when you start acquiring speech", - "NormalTitle": "Basic usage", - "NormalIntro": "Displays the waveform plot", - "ShowUsedTimeTitle": "The length of the display", - "ShowUsedTimeIntro": "Via ShowUsedTime", - "ValueTitle": "Parameters control whether it is displayed", - "ValueIntro": "Use the Show value to control whether the waveform plot is displayed", - "ValueButtonText1": "Hide", - "ValueButtonText2": "Show", - "ShowAttr": "Whether to start", - "ShowUsedTimeAttr": "Whether to display the duration", - "OnTimeoutAttr": "Identify the end-of-timeout callback method", - "TotalTimeSecondAttr": "Speech recognition is set for a total time longer than calling the OnTimeout callback" - }, - "BootstrapBlazor.Server.Components.Samples.Speeches.Synthesizers": { - "SynthesizersTitle": "Synthesizer speech synthesis", - "SynthesizersSubTitle": "Convert text content to speech", - "SynthesizerNormalTitle": "Common usage", - "SynthesizerNormalIntro": "After clicking to start synthesis, perform speech synthesis on the text content" - }, - "BootstrapBlazor.Server.Components.Samples.Speeches.Recognizers": { - "RecognizersTitle": "Recognizer Speech Recognition", - "RecognizersSubTitle": "Convert speech to text with a voice capture device", - "RecognizerNormalTitle": "Common usage", - "RecognizerNormalIntro": "Click to start recognition to recognize the input voice", - "RecognizerNormalDescription": "Instructions for use", - "RecognizerNormalTips": "click

start to identify

After the script runs, it may prompt for recording permission. After authorization, start speaking. After 5 seconds (configurable), the text box on the right will display the speech recognition result. Do not click directly after speaking.

end recognition

" - }, - "BootstrapBlazor.Server.Components.Samples.DragDrops": { - "Title": "DragDrop", - "Description": "For drag and drop", - "NormalTitle": "Basic usage", - "NormalIntro": "simple drag and drop", - "CopyItemTitle": "Copy to new container", - "CopyItemIntro": "Use CopyItem to copy a new copy to a new location", - "AcceptsTitle": "Limit what can be dragged in", - "AcceptsIntro": "Use Accepts to only allow 10 drags on the left and use AllowsDrag to limit 2 to not be dragged, use MaxItems to limit the right to have a maximum of 6 nodes", - "EventTitle": "Various events", - "EventIntro": "When the dragging quantity exceeds the limit OnItemDropRejectedByMaxItemLimit, when dragging is prohibited OnItemDropRejected, return to the bottom ItemOnReplacedItemDrop, return the dropped Item OnItemDrop", - "A1": "Maximum number", - "A2": "Content components", - "M1": "Whether to run drag and drop", - "M2": "Whether the node is allowed to be dragged", - "M3": "Copy a new Item to the target location", - "M4": "Add special css class for Item", - "M5": "Event when Item is released", - "M6": "Event when Item release is rejected", - "M7": "Event when Item is released on another Item, not blank space", - "M8": "Event when an Item is rejected because the maximum number in the Dropzone exceeds the limit" - }, - "BootstrapBlazor.Server.Components.Samples.Labels": { - "LabelsTitle": "Component label", - "LabelsDescription": "This set of components includes ValidateForm EditorForm and a variety of Form components inherited from ValidateBase<TValue>. Among these components There is a special set of display front label logic, now let’s sort it out in a unified way:", - "LabelsDescriptionTips1": "The ValidateForm component is a verifiable form component. The form component in this component will automatically perform data compliance checks. If Data non-compliance will prevent the Submit action, which is the most frequently used component in data submission", - "LabelsDescriptionTips2": "The EditorForm component is an ordinary form component. After this component is bound to the Model, the entire form can be automatically generated, which greatly reduces repetition Code, put the ValidateForm on the outside to open the data compliance check very convenient, concise and efficient", - "LabelsDescriptionTips3": "Take the BootstrapInput input box component as an example to explain whether to display the Label logic", - "LabelsTips": "The logic of ShowLabel is the principle of proximity. The closer the setting is to itself, the setting takes effect. For example, the form component is built into the ValidateForm component, even if ValidateForm is set to >ShowLabel=true, when the form component itself sets ShowLabel=false, the final result of the label is not displayed", - "LabelsNormalTitle": "Use alone", - "LabelsNormalIntro": "Suitable for data entry", - "LabelsEditorFormTitle": "Used in EditorForm", - "LabelsEditorFormIntro": "Not used in ValidateForm", - "LabelsValidateForm1Title": "Use in EditorForm built-in ValidateForm", - "LabelsValidateForm1Intro": "Used in external ValidateForm", - "LabelsValidateForm2Title": "Used in ValidateForm", - "LabelsValidateForm2Intro": "Show labels are automatically turned on by default", - "LabelsNormalDescription": "When two-way binding is not used", - "LabelsNormalTips1": "Label will not be displayed by default", - "LabelsNormalTips2": "Control whether to display through the ShowLabel property", - "LabelsNormalTips3": "Display content when setting DisplayText", - "LabelsNormalTips4": "When not set, render a contentless label component as a placeholder", - "LabelsNormalGroupBox1Title": "No two-way binding", - "LabelsNormalGroupBox1Tips1": "No settings in the first text box, no label", - "LabelsNormalGroupBox1Tips2": "The second text box setting ShowLabel='true' DisplayText=`` displays a placeholder label without content", - "LabelsNormalGroupBox1Tips3": "The third text box setting ShowLabel='true' DisplayText='Name' shows the set content label", - "LabelsNormalGroupBox1Tips4": "The fourth text box setting ShowLabel='true' DisplayText='@null' displays a placeholder label without content", - "LabelsNormalDescription2": "When using two-way binding", - "LabelsNormalGroupBox2Title": "Two-way binding", - "LabelsNormalGroupBox2Tips1": "The first text box is set to @bind-Value='Dummy.Name', no label is displayed", - "LabelsNormalGroupBox2Tips2": "The second text box setting @bind-Value='Dummy.Name' ShowLabel='true' DisplayText='@Localizer[nameof(Foo.Address)]' Display the contents of the setting", - "LabelsNormalGroupBox2Tips3": "The third text box setting @bind-Value='Dummy.Name' ShowLabel='true' DisplayText=`` Show no content placeholder label", - "LabelsNormalGroupBox2Tips4": "The fourth text box setting @bind-Value='Dummy.Name' ShowLabel='true' DisplayText='@null' Display the label content under the resource file mechanismLabel code>", - "LabelsEditorFormDescription2": "Show label
The ShowLabel property of the EditorForm component is not set. If it is not set, it is equivalent to set to true. All components display tags
", - "LabelsEditorFormDescription1": "Do not display labels
Set ShowLabel=\"false\", all form components in the component Do not display tags
", - "EditorFormLabelAlignRight": "Alignment
LabelAlign=\"Alignment.Right\" set the label alignment is right
", - "EditorFormLabelAlignCenter": "Alignment
LabelAlign=\"Alignment.Center\" set the label alignment is center
", - "LabelsValidateForm1Description1": "Show label
The ShowLabel property of the EditorForm component is not set. If it is not set, it is equivalent to set to true. All components display tags
", - "LabelsValidateForm1Description2": "Do not display labels
Set ShowLabel=\"false\", all form components in the component Do not display tags
", - "LabelsValidateForm2Description1": "Show label
The ShowLabel property of the EditorForm component is not set. If it is not set, it is equivalent to set to true. All components display tags
", - "LabelsValidateForm2Description2": "Do not display labels
Set ShowLabel=\"false\", all form components in the component Do not display tags
", - "LabelsValidateForm2Description3": "Show labels
set class form-inline for the all labels within the component are prefixed
", - "ValidateFormAlignRight": "Right
form-inline-end set the label alignment is right
", - "ValidateFormAlignCenter": "Center
form-inline-center set the label alignment is center
", - "LabelsRowLabelWidthTitle": "Style setting label width", - "LabelsRowLabelWidthIntro": "Control label width by setting style variable --bb-row-label-width", - "LabelsWidthTitle": "Parameter setting label width", - "LabelsWidthIntro": "Control the label width by setting the variable LabelWidth", - "LabelsWidthDescription": "The components ValidateForm EditorForm BootstrapLabelSetting ValidateForm can set the label width value. The components use the proximity principle to determine the final value", - "LabelsWidthCode1": "As shown in the code above, the final value is 180 according to the principle of proximity" - }, - "BootstrapBlazor.Server.Components.Pages.Install": { - "InstallTitle": "Install", - "InstallDesc": "Getting started with BootstrapBlazor for faster and easier .NET web development.", - "Template": "Using Templates", - "TemplateDesc": "To get started quickly, you can use our dotnet templates. They're based on the Microsoft Web App template but have been modified to include BootstrapBlazor components.", - "Manual": "Manual Install", - "ManualDesc": "If you already have a project and want to add BootstrapBlazor to it, either from a default template or a working application.", - "Step1": "1. Install Package", - "Step1Desc": "Install the library through the NuGet Package Manager or with following command", - "Step2": "2. Add Imports", - "Step2Desc": "After the package is added, you need to add the following in your _Imports.razor", - "Step3": "3. Add References", - "Step3Desc": "Add the following to your HTML head section, it's either index.html or _Layout.cshtml/_Host.cshtml/App.razor depending on whether you're running WebAssembly or Server.", - "Step4": "4. Add Scripts", - "Step4Desc": "Next, add the bootstrap.blazor.bundle.min.js file next to the default Blazor script at the end", - "Step5": "5. Remove References", - "Step5Desc": "To delete the bootstrap style, please also delete the bootstrap and open-iconic folders in the wwwroot folder.", - "Step6": "6. Register Services", - "Step6Desc": "Add the following in Program.cs", - "Step7": "7. Add BootstrapBlazorRoot Component", - "Step7Desc": "Add the BootstrapBlazorRoot component to the Layout component", - "MotronicDesc": "// Motronic theme optional suggestion to add", - "BootstrapStyle": "// Component styles have been integrated with the latest version of Bootstrap", - "FontAwesomeCss": "// FontAwesome font icon style Note that you need to reference the BootstrapBlazor.FontAwesome package", - "OtherText": "Other" - }, - "BootstrapBlazor.Server.Components.Components.Video": { - "H1": "B station related video link", - "L1": "[portal]", - "L2": "No" - }, - "BootstrapBlazor.Server.Components.Components.UpdateIntro": { - "H1": "Component library updated to", - "B1": "Bootstrap Blazor at present has nearly 200 components. This component is based on", - "B2": "An enterprise-level component library that provides several types of common components such as layout, navigation, form, data, notification, icon, voice, etc. Each component has been carefully designed with modularity, responsiveness and excellent performance. Starting from more practical scenarios, meeting the needs of various scenarios, greatly reducing the time cost of developers, greatly shortening the development cycle, greatly improving development efficiency, and providing a set of", - "B3": "General Rights Management System", - "B4": "Example project", - "B5": "Products are maintained by a professional full-time technical team, with efficient response speed, diversified solutions, long-term support, and enterprise-level support. At present, it has been used in many well-known state-owned enterprises, and the project is running stably with a maximum of 1200 people online. On the right is the QR code of the Chinese Blazor QQ community with the largest number of people in China, welcome to scan and join the group.", - "P1": "component updated to", - "P2": "Change log", - "P3": "portal", - "P4": "If the component brings you convenience, please help to light up the project" - }, - "BootstrapBlazor.Server.Components.Pages.Localization": { - "Title": "Localization", - "P1": "Localization is the process of customizing an application for a given language and region.", - "P2": "A component allows you to translate its UI elements into the desired language. This includes text for buttons, filter operator properties, etc. The component uses the current request by default", - "P3": "Culture language, this article will show you how to use this feature in your app", - "T1": "Please check before reading the following knowledge points", - "T2": "Microsoft Official Documentation", - "T3": "because", - "T4": "The mode cannot obtain the system language and culture information, the default culture information is", - "N1": "How localization works in components", - "N2": "Components additionally support the use of", - "N3": "Type key-value information as a resource file, which is parsed as", - "N4": "String rendered in", - "N5": "The package comes with the following resource files", - "N6": "Chinese (zh)", - "N7": "English (en)", - "N8": "German (de)", - "N9": "Portuguese (pu)", - "N10": "The component has a built-in localization language fallback mechanism. For example, the request culture is", - "N11": "When the corresponding culture resource file is not provided, the built-in logic tries to localize through the parent culture to", - "N12": "For example, the fallback mechanism is as follows", - "N13": "arrive", - "N14": "If the set localization language does not provide the resource file after falling back and still cannot find the resource file, use", - "N15": "The cultural information set by the parameter is localized, the default is", - "N16": "pay attention", - "N17": "Due to some systems such as", - "N18": "After the program runs, the thread cannot obtain the cultural information, and the default cultural information can be set through the configuration file", - "N19": "Enable localization", - "N20": "configuration file", - "N21": "pass", - "N22": "Set the fallback culture information, that is, use this configuration culture when the currently requested culture information is not found, through", - "N23": "Set supported cultures collection", - "N24": "Enable .NET Core localization service", - "N25": "Add Bootstrap Blazor components", - "N26": "Add multi-language support configuration information", - "N27": "Enable localization", - "N28": "Add BootstrapBlazor component", - "N29": "Add localization service configuration information", - "N30": "Enable localization middleware and set supported culture info", - "N31": "Implement UI localization information storage (for example, cookies)", - "N32": "Add UI that allows users to change localization", - "N33": "Please select language", - "N34": "Using the api method is suitable for Server-Side mode", - "N35": "additional", - "N36": "resource", - "N37": "The component library supports Microsoft's default", - "N38": "Format resource, also supports embedded", - "N39": "format resources, and specific physical", - "N40": "document", - "N41": "The resource file is a merge relationship, and the addressing rule priority is", - "N42": "Microsoft resx embedded resource file", - "N43": "External json physical file", - "N44": "json embedded resource file", - "N45": "Built-in json resource file", - "N46": "Ignore cultural info loss logs", - "N47": "Set up RESX format multilingual resource files such as Program.{CultureName}.resx", - "N48": "Set Json format embedded resource file", - "N49": "Set Json physical path file", - "N50": "or use service extension method", - "N51": "Ignore the loss of localized key-value culture information", - "N52": "Attach your own json multilingual culture resource file such as zh-TW.json", - "N53": "Set Json physical path file", - "N54": "Enable .NET Core localization service", - "N55": "Add BootstrapBlazor component", - "N56": "increase localization", - "N57": "Implement UI localization information storage (for example, localStorage)", - "N58": "Consistent with Server-Side", - "N59": "Change the default language setting", - "N60": "Set default culture to zh-CN", - "N61": "Configure whether to display missing localized resource information", - "N62": "Add BootstrapBlazor service", - "N63": "Ignore the loss of localized key-value culture information", - "LocalizationFileDesc": "The component built-in localization resource files are en zh. The other localization resource files de es pt zh-TW which are placed in the project folder localization. you can be downloaded by yourself and imported into the project through the injection service", - "AdditionalJsonFile": "Additional json localization file", - "ES": "Spanish (es)", - "TW": "中國台灣 (zh-TW)" - }, - "BootstrapBlazor.Server.Components.Pages.Template": { - "Title": "Project Template", - "SubTitle": "Bootstrap Blazor App Template", - "P1": "In order to make it easier for everyone to use this set of components to quickly build projects, the author has made Project Templates, using dotnet new command line mode, using Proceed as follows:", - "P2": "1. Install the project template", - "P3": "2. Create project", - "P4": "After the project is created, the BootstrapBlazorApp solution will be generated in the current folder, and the src directory contains Server-Side Wasm Both types of projects can be run directly with F5", - "P5": "3. Update project template", - "P6": "The dotnet new update option checks if there are updates available for the template packages that are currently installed and installs them.", - "P7": "4. Uninstall project template", - "TemplateList": "List", - "TemplateDesc": "After the template is installed, searching for Bootstrap when creating a new project will list the following template candidates:" - }, - "BootstrapBlazor.Server.Components.Pages.Globalization": { - "Title": "Globalization", - "SubTitle": "ASP.NET Core Blazor Globalization", - "P1": "Please check before reading the following knowledge points Official document" - }, - "BootstrapBlazor.Server.Components.Pages.Theme": { - "H1": "Component theme", - "H2": "Test", - "P1": "The current website theme supports the following", - "P2": "Motronic (integrated)", - "P3": "LayUI (in progress)", - "P4": "Bluma (in progress)", - "P5": "Ant Design (in progress)", - "P6": "Theme switch", - "P7": "If switch to", - "P8": "theme, please use the original", - "P9": "The added style file is as follows", - "P10": "add this line" - }, - "BootstrapBlazor.Server.Components.Samples.Dividers": { - "Title": "Dividing line", - "Description": "The dividing line that separates the content.", - "NormalTitle": "Basic usage", - "NormalIntro": "Split text paragraphs in different chapters.", - "AlignmentTitle": "Set copy", - "AlignmentIntro": "You can customize the content of the copy on the dividing line.", - "IconTitle": "Settings icon", - "IconIntro": "You can customize the content of the copy on the dividing line.", - "VerticalTitle": "Vertical split", - "VerticalIntro": "Display dividing line vertically", - "ChildContentTitle": "Custom content", - "ChildContentIntro": "Any content can be customized by setting the content of ChildContent", - "Desc1": "Set the split line to display text", - "Desc2": "Set the split line display icon", - "Desc3": "Set the split line display text alignment", - "Desc4": "Set whether the dividing line is vertical division", - "Desc5": "ChildContent template", - "NormalContent1": "Youth is a short dream, when you wake up, it has long since disappeared.", - "NormalContent2": "A small amount of evil is enough to cancel out all the noble qualities, causing people to be infamous.", - "AlignmentDivider1": "Young Bao Qingtian", - "AlignmentDivider2": "League of Legends", - "AlignmentDivider3": "Learning Quotations", - "AlignmentContent1": "Just a Content Test 1", - "AlignmentContent2": "Just a Content Test 2", - "AlignmentContent3": "A cute icon", - "AlignmentContent4": "Learning makes me happy", - "IconContent1": "A sunny day above my head, I missed one in my heart", - "IconContent2": "When the knight returns, the day the broken sword is reforged", - "IconContent3": "A cute icon", - "IconContent4": "Learning makes me happy", - "IconBookmark": "Bookmarks", - "VerticalContent1": "Rain", - "VerticalContent2": "Old hometown", - "VerticalContent3": "Deep vegetation", - "VerticalDivider": "Dividing line", - "ChildContent1": "A sunny day above my head, I missed one in my heart", - "ChildContent2": "When the knight returns, the day the broken sword is reforged", - "DividerChildContent": "I am a custom content div element" - }, - "BootstrapBlazor.Server.Components.Samples.Scrolls": { - "ScrollTitle": "Scroll", - "ScrollDescription": "Add scroll bars to components whose height or width exceeds the standard", - "ScrollTips": "The scroll bar can be rendered only when its element has a fixed height. Its height attribute can be set through the coat element", - "ScrollToBottom": "Scroll to bottom", - "ScrollNormalTitle": "Common usage", - "ScrollNormalIntro": "Add a scroll bar to the component. By setting the height of Height to 200px, the scroll bar appears when the height of the inner child element is 500px", - "Desc1": "Subassembly", - "Desc2": "Component height", - "ScrollNormalDescription": "Please scroll the scroll bar on the right", - "ScrollNormalBottom": "bottom" - }, - "BootstrapBlazor.Server.Components.Samples.LayoutPages": { - "H1": "full page level components", - "P1": "via built-in components", - "P2": "For full page layout, you can use", - "P3": "or install", - "P4": "Project plugin selection", - "P5": "Bootstrap Blazor Project Template", - "P6": "It can be automatically generated. For detailed documents, please click", - "P7": "portal", - "P8": "pay attention", - "P9": "component on", - "P10": "multi-label", - "P11": "mode, if there is", - "P12": "Razor Components", - "P13": "When in an extra assembly, set it correctly", - "P14": "Attribute values ​​so that routes within the label component are resolved correctly, related documentation", - "P15": "portal", - "P16": "Layout adjustment", - "P17": "show footer", - "P18": "multi-label", - "P19": "single page", - "P20": "Fixed adjustment", - "P21": "fixed label", - "P22": "fixed header", - "P23": "fixed footer", - "P24": "Shrink adjustment", - "P25": "Please click", - "P26": "small button", - "P27": "height adjustment", - "P28": "view height", - "P29": "Tab Test", - "P30": "click", - "P31": "test", - "P32": "test", - "P33": "button will add a new tab", - "P34": "Navigate to a new tab page as code", - "P35": "navigation" - }, - "BootstrapBlazor.Server.Components.Samples.Layouts": { - "LayoutsTitle": "Layout", - "LayoutsDescription1": "The container component used for layout, which is convenient to quickly build the basic structure of the page:", - "LayoutsDescription1_Container": "Outer container. When the child element contains Header or Footer, all child elements will be arranged vertically up and down, otherwise they will be arranged horizontally.", - "LayoutsDescription1_Header": "Top bar container", - "LayoutsDescription1_Side": "Sidebar container", - "LayoutsDescription1_Main": "Main area container", - "LayoutsDescription1_Footer": "Bottom bar container", - "LayoutsDescription2": "Component overview", - "LayoutsDescription2_Layout": "Layout container, Header Sider Main Footer or Layout itself can be nested under it , Can be placed in any parent container", - "LayoutsDescription2_Header": "Top layout, with default style, any elements can be nested under it", - "LayoutsDescription2_Side": "Sidebar, with default style and basic functions, any elements can be nested under it", - "LayoutsDescription2_Main": "The content part, with its own default style, any element can be nested under it", - "LayoutsDescription2_Footer": "Bottom layout, with default style, any element can be nested under it", - "LayoutsTips1": "The above components adopt flex layout, please make sure the target browser is compatible before using. In addition, the child element of Layout can only be the latter four, and the parent element of the latter four can only be Layout", - "LayoutsTips2": "Matters needing attention", - "LayoutsTips3": "In order to make it easy for everyone to use this set of components to quickly build projects, the author has created Project Templates, using the dotnet new command line, and Bootstrap Blazor App Extension extension plug-in Create a new project through Visual Studio. For specific usage and steps, please click Portal", - "LayoutsDemosTitle": "Common page layout", - "LayoutsUpAndDownTitle": "Top, middle and bottom layout", - "LayoutsUpAndDownIntro": "Commonly found in Internet website layout", - "LayoutsMiddleLeftRightTitle": "Left and right structural layout in the middle", - "LayoutsMiddleLeftRightIntro": "The middle part adopts the left and right structure, which is mostly used for back-end management website layout. When the Side component is added to the layout template, the upper middle and lower parts are used by default, and the middle part adopts the left and right structure layout.", - "LayoutsLeftRightTitle": "Left and right structure", - "LayoutsLeftRightIntro": "The right side adopts an upper, middle and lower structure, which is mostly used for back-end management of the website layout, and the layout is controlled to the left and right structure by setting the IsFullSide attribute value", - "LayoutsCustomPercentTitle": "Customize sidebar width support percentage", - "LayoutsCustomPercentIntro": "The width of the sidebar is controlled by setting the SideWidth property, which supports percentage writing. When setting 0, the width setting function is turned off, and the internal sub-controls are used to fill the width feature", - "LayoutsAppTitle": "Practical application", - "LayoutsAppIntro": "In application", - "LayoutsPageTitle": "Full page level components", - "LayoutsPageIntro": "By setting the IsPage layout the full page", - "LayoutsPageTips1": "By setting the IsPage property to set whether the Layout component controls the layout of the front page level, after setting it to true, the component adopts the full-screen layout", - "LayoutsPageHrefTitle": "Whole page component generator", - "Layouts_Header_Description": "Header component template", - "Layouts_Side_Description": "Sidebar component template", - "Layouts_SideWidth_Description": "Sidebar width, support percentage, turn off the width function when set to 0", - "Layouts_Main_Description": "Content component template", - "Layouts_Footer_Description": "Footer component template", - "Layouts_Menus_Description": "Sidebar menu data collection when the whole page is laid out", - "Layouts_IsFullSide_Description": "Whether the sidebar occupies the entire left", - "Layouts_IsPage_Description": "Whether it is the whole page layout", - "Layouts_IsFixedFooter_Description": "Whether to fix the Footer component", - "Layouts_IsFixedHeader_Description": "Whether to fix the Header component", - "Layouts_ShowCollapseBar_Description": "Whether to show contraction and expansion Bar", - "Layouts_ShowSplitBar_Description": "Whether to display the left and right split bar", - "Layouts_SidebarMinWidth_Description": "Minimum sidebar width", - "Layouts_SidebarMaxWidth_Description": "Maximum sidebar width", - "Layouts_ShowFooter_Description": "Whether to show Footer template", - "Layouts_ShowGotoTop_Description": "Whether to display the back to top button", - "Layouts_UseTabSet_Description": "Whether to open multi-label mode", - "Layouts_IsFixedTabHeader_Description": "Whether to fix the Header of Tabset", - "Layouts_AdditionalAssemblies_Description": "Collection of additional programs, passed to the Tab component for use", - "Layouts_OnCollapsed_Description": "Contract expand callback delegate", - "Layouts_OnClickMenu_Description": "Call back the delegate when the menu item is clicked", - "Layouts_TabDefaultUrl_Description": "Set the default url of Tab", - "Layouts_IsAccordion_Description": "Whether to set the accordion menu", - "LayoutsAppTips1": "In actual use, the sidebar generally has two uses", - "LayoutsAppTips2": "The sidebar fills the entire screen, and scroll bars appear when the overall height of the menu exceeds the screen", - "LayoutsAppTips3": "The sidebar is not processed and the height is automatically opened by the content", - "LayoutsAppTips4": "Because there are many ways to use it, this component is not packaged, and it is up to you to decide how to carry out the layout. The following is a practical example in actual use", - "LayoutsAppTips5": "In order to facilitate your study and comparison, try to use the style inline style in the following practical examples", - "LayoutsAppTips6": "In this example, a scroll bar appears after clicking the menu on the left to expand", - "LayoutsAppTips7": "The available area in the right panel is all by default, which is suitable for layouts with Tab components. In this example, for the sake of beauty, the Main template has a built-in div And set the style to style='padding: 1rem;'", - "LayoutsAppTips8": "In this example, if the scroll bar does not appear after clicking the left menu to expand, the height of the parent container will be expanded", - "LayoutsAppTips9": "Please refer to Tab component for practical examples of using Layout component and Tab component together", - "ShowTabContextMenu": "whether enable tab context menu", - "BeforeTabContextMenuTemplate": "the template of before tab context menu", - "TabContextMenuTemplate": "the template of tab context menu", - "TabContextMenuRefreshIcon": "the icon of tab item context menu refresh button", - "TabContextMenuCloseIcon": "the icon of tab item context menu close button", - "TabContextMenuCloseOtherIcon": "the icon of tab item context menu close other button", - "TabContextMenuCloseAllIcon": "the icon of tab item context menu close all button", - "OnBeforeShowContextMenu": "before popup context menu callback" - }, - "BootstrapBlazor.Server.Components.Samples.Footers": { - "FootersTitle": "Footer", - "FootersDescription": "Displayed at the bottom of the page, with a back to top button", - "FootersTips": "When using Footer components, pay attention to the setting of the style sheet position attribute", - "FooterNormalTitle": "Basic usage", - "FooterNormalIntro": "Pass the ID of the scroll bar component to the footer component", - "FootersContent1": "The Footer component is displayed at the bottom, and the page will automatically scroll back to the top when you click to return to the top", - "FootersContent2": "This example passes the component client ID", - "Desc1": "The text displayed by the footer component", - "Desc2": "The ID of the scroll bar component controlled by the footer component", - "ShowGotoDesc": "Whether to show the goto navigation on the right of footer", - "ChildContentDesc": "The template of child content", - "FooterShowGotoTitle": "Show Goto", - "FooterShowGotoIntro": "Set ShowGoto to false for hide the Goto navigator on the right of footer", - "FooterChildContentTitle": "ChildContent", - "FooterChildContentIntro": "Set ChildContent for custom the child content" - }, - "BootstrapBlazor.Server.Components.Samples.Repeaters": { - "RepeaterTitle": "Repeater", - "RepeaterDescription": "Iterates on a collection and use a template to generate the page", - "RepeaterNormalTitle": "Normal", - "RepeaterNormalIntro": "custom the template by ItemTemplate", - "RepeaterLoadingTitle": "Async Data", - "RepeaterLoadingIntro": "If Items is not provided, you can set ShowLoading to control whether loading prompt information is displayed. You can customize loading information by using LoadingTemplate", - "RepeaterEmptyTitle": "No Data", - "RepeaterEmptyIntro": "If Items is empty, use ShowEmpty controls whether no data message is displayed. You can customize the empty data template by EmptyTemplate. EmptyText allows you to customize empty data text information", - "RepeaterContainerTitle": "Container Template", - "RepeaterContainerIntro": "By setting ContainerTemplate to the container template, the repetitive part of the template is still rendered via ItemTemplate, In this case, the component is rendered as Table using ContainerTemplate" - }, - "BootstrapBlazor.Server.Components.Samples.Rows": { - "RowsTitle": "Row", - "RowsDescription": "The number of components displayed in a row can be easily set", - "RowCommonTitle": "Place common controls", - "RowCommonIntro": "Put your own components inside Row", - "RowCommonDescription": "3 rows are displayed, using Row", - "RowFormInlineTitle": "Place form controls (inline)", - "RowFormInlineIntro": "When placing form controls, you can specify RowType as Inline, and Label will be displayed on the left, and the control will fill the remaining space", - "RowFormTitle": "Place form controls", - "RowFormIntro": "When placing form controls, you can specify Normal as FormRow, and Label will be displayed on the top, and the control will be full", - "RowFormInlineDescription": "In this example, the Row component is built into the ValidateForm component, and the front Label tag is automatically added", - "RowNestedTitle": "Nested use", - "RowNestedIntro": "The Row component supports nested use. For example, the outermost Row below sets a row to display two controls, the first is TextBox, the second One is still Row, and the second Row continues to be set to display two controls", - "RowSpanTitle": "Cross-column", - "RowSpanIntro": "The Row component can set the number of spanning columns by specifying the ColSpan value. Combining these functions can achieve complex layouts", - "RowSpanTips1": "4 in a row", - "RowSpanTips2": "2 in a row", - "RowSpanTips3": "The row shows 4 Address in 2 columns", - "RowSpanTips4": "Row shows 4, the second component ColSpan is set to 3", - "RowSpanTips5": "Row shows 2, the first component ColSpan is set to 3", - "RowSpanTips6": "A component in a row", - "RowsItemsPerRow": "Set a row to display several controls", - "RowsRowType": "Set the layout format, if the child Row is not specified, the parent Row’s settings will be used", - "RowsColSpan": "Set the number of columns of child Row across parent Row", - "RowsMaxCount": "Set the maximum number of controls displayed in a row", - "Normal": "Normal", - "Inline": "Inline" - }, - "BootstrapBlazor.Server.Components.Samples.Skeletons": { - "SkeletonsTitle": "Skeleton", - "SkeletonsDescription": "Provide a placeholder graphic combination where you need to wait for content to load", - "SkeletonsTipsTitle": "When to use", - "SkeletonsTips1": "When the network is slow and it takes a long time to wait for the loading process", - "SkeletonsTips2": "Lists/cards with more graphic information content", - "SkeletonsTips3": "Only used when loading data for the first time", - "SkeletonsTips4": "Can be completely replaced by Spin, but can provide better visual effects and user experience than Spin in available scenarios", - "SkeletonsImgTitle": "Picture frame", - "SkeletonsImgIntro": "Suitable for display when loading avatars, pictures, etc.", - "SkeletonsImgDescription": "It can be set to a circle display by setting the Circle property", - "SkeletonsParagraphTitle": "Paragraph skeleton", - "SkeletonsParagraphIntro": "Applicable to display when loading large paragraphs of text and other types", - "SkeletonsParagraphDescription": "The default paragraph skeleton screen only displays three lines. If you need multiple lines to occupy space, please place multiple SkeletonParagraph.", - "SkeletonsFormTitle": "Form skeleton", - "SkeletonsFormIntro": "Suitable for display when the edit form is loaded", - "SkeletonsTableTitle": "Table skeleton", - "SkeletonsTableIntro": "Applicable to display when the edit table is loaded", - "SkeletonsTreeTitle": "Tree skeleton", - "SkeletonsTreeIntro": "Display when tree component is loaded" - }, - "BootstrapBlazor.Server.Components.Pages.Breakpoints": { - "Heading": "Breakpoints", - "Heading1": "Breakpoints are customizable widths that determine how responsive layouts behave in Bootstrap across devices or viewport sizes", - "Paragraph1": "Available breakpoints", - "Paragraph2": "Bootstrap includes six default breakpoints, sometimes called grid layers, for responsive builds", - "TableHeading1": "Breakpoint name", - "TableHeading2": "Class suffix", - "TableHeading3": "Threshold", - "Name1": "tiny", - "Name2": "small", - "Name3": "medium", - "Name4": "large", - "Name5": "oversized", - "Name6": "extra large", - "Amount": "pixel", - "Footer1": "The components have been adapted to extra large screens by default, and many defaults are", - "Footer2": "like", - "Footer3": "The default popup size" - }, - "BootstrapBlazor.Server.Components.Pages.Layout": { - "Heading": "Component Hierarchy", - "Para1": "Since there are many pop-up window components, in some scenarios, multiple pop-up windows will be used to combine them. This chapter describes how to manage components in layers. Below is", - "Para2": "provided built-in", - "Para3": "value", - "Para4": "This set of components additionally", - "Para5": "The components are layered as follows", - "Para6": "test session", - "Button": "test" - }, - "BootstrapBlazor.Server.Components.Samples.GlobalException": { - "Title": "Global exception", - "Introduce": "Added component ErrorLogger Through this component, global logs and exceptions can be output uniformly; currently, the Blazor framework does not provide a MVC like Global exception The overall solution", - "H1": "Instructions", - "Step1": "1. Add AddLogging to the Startup file to enable the net core system log function", - "Step1Introduce": "Use AddFileLogger need to reference Longbow.Logging component package", - "Step2": "2. Use BootstrapBlazorRoot to wrap the content", - "Step3": "3. Use cascading parameters in the code to get examples", - "Step4": "4. Console or IIS output visible log information", - "Step5": "5. Controls whether error details are displayed", - "Step5Intro": "Through the configuration file appsettings.json, which is appsettings.Development.json in the development environment, if not set, it defaults to false and is not displayed. The default behavior is only a pop-up prompt to prevent the exposure of sensitive information", - "Block1Title": "Test", - "Block1Intro": "This function is to obtain the component instance through the cascade parameter and use its function", - "ExceptionTestIntroduce": "In this example code, an error code that divides by zero is written. Because try/catch is used to capture the exception, the error message is displayed in the console below", - "ButtonText": "test", - "Block2Title": "OnErrorHandleAsync", - "Block2Intro": "Set custom exception handling logic by setting OnErrorHandleAsync callback method", - "DialogTitle": "In Dialog", - "DialogIntro": "Click the button to pop up a pop-up window. The button in the pop-up window triggers an exception and the error is displayed in the pop-up window", - "DialogText": "Popup", - "PageErrorTitle": "Page", - "PageErrorIntro": "Click the button to navigate to the page where the error occurred during the page life cycle. The error is displayed on the current page and does not affect the menu and the overall page layout." - }, - "BootstrapBlazor.Server.Components.Pages.GlobalOption": { - "Title": "Global exception", - "SubTitle": "Added component ErrorLogger Through this component, global logs and exceptions can be output uniformly; currently, the Blazor framework does not provide a MVC like Global exception The overall solution" - }, - "BootstrapBlazor.Server.Components.Samples.Splits": { - "SplitsTitle": "Split", - "SplitsNormalTitle": "Basic usage", - "SplitsNormalIntro": "Left and Right", - "SplitsPanel1": "I am the left panel", - "SplitsPanel2": "I am the right panel", - "SplitsPercentTitle": "Set initialization percentage", - "SplitsPercentIntro": "Set the proportion of the initial position by setting the Basis attribute", - "SplitsVerticalTitle": "Vertical split", - "SplitsVerticalIntro": "Control the vertical split panel by setting the IsVertical property", - "SplitsPanel3": "I am the upper panel", - "SplitsPanel4": "I am the bottom panel", - "SplitsNestedTitle": "Nested use", - "SplitsNestedIntro": "Combine layout by nesting Split components", - "SplitsMinimumTitle": "Minimum", - "SplitsMinimumIntro": "By setting FirstPaneMinimumSize SecondPaneMinimumSize values. In this example, the minimum values ​​of the left and right panels are set to 10%", - "SplitsPanel5": "Upper", - "SplitsPanel6": "Lower", - "SplitsPanel7": "Right", - "SplitsCollapsibleTitle": "Collapse/Expand", - "SplitsCollapsibleIntro": "Set whether the panels can be collapsed by configuring the FirstPaneCollapsible and SecondPaneCollapsible properties", - "SplitsPanel8": "Upper", - "SplitsPanel9": "Lower", - "SplitsPanel10": "Right", - "SplitsIsVertical": "Vertical", - "SplitsBasis": "Percentage of first pane position", - "SplitsFirstPaneTemplate": "First pane template", - "SplitsSecondPaneTemplate": "Second pane template", - "SplitsIsCollapsible": "Whether to expand or collapse the split view", - "SplitsIsKeepOriginalSize": "Whether to keep the original size when restoring after collapsed", - "SplitsShowBarHandle": "Whether to display the drag bar", - "SplitsBarHandleShow": "Bar handle shown", - "SplitsBarHandleHide": "Bar handle hidden", - "SplitsOnResizedAsync": "Callback method when the panel size changes", - "SplitsCollapsibleTrue": "Collapse button shown", - "SplitsCollapsibleFalse": "Collapse button hidden", - "SplitsFirstPaneMinimumSize": "The minimum size of the first pane supports any unit such as 10px 20% 5em 1rem. If no unit is provided, it defaults to px.", - "SplitsSecondPaneMinimumSize": "The minimum size of the second pane supports any unit such as 10px 20% 5em 1rem. If no unit is provided, it defaults to px.", - "SplitSetLeftTitle": "Code to set panel width", - "SplitSetLeftIntro": "Use the component instance method SetLeftWidth to set the width of the left/top panel, and the width of the right/bottom panel will be adaptive" - }, - "BootstrapBlazor.Server.Components.Samples.Dropdowns": { - "Title": "Dropdown", - "Description": "Collapse actions or menus into drop-down menus", - "NormalTitle": "Basic usage", - "NormalIntro": "Use TagName='a' to open a drop-down list with a button tag", - "NullTitle": "Dropdown empty drop-down menu", - "NullIntro": "Allow empty Items drop-down menus", - "ColorTitle": "Drop-down box with color", - "ColorIntro": "Provide warning message boxes in various colors. Quote Color='Color.Primary' and other color and style classes to define the appearance of the drop-down menu", - "SplitTitle": "Split button drop-down menu", - "SplitIntro": "You can create a split drop-down menu with tags similar to a single button drop-down menu, and add ShowSplit='true' when you use a split component. Insert this symbol as a drop-down The options are handled at appropriate intervals (distance).", - "SizeTitle": "Size definition", - "SizeIntro": "The drop-down menu has a variety of size specifications to choose from Size attributes, including preset and split button drop-down menus.", - "IsAsyncTitle": "Asynchronous request button", - "IsAsyncIntro": "By setting whether the isAsync property button is asynchronous request button by setting whether the is false by default", - "DirectionTitle": "Expanding direction", - "DirectionIntro": "Add the style of Direction='Direction.Dropup' to make the drop-down menu expand upward.", - "AlignmentTitle": "Menu alignment", - "AlignmentIntro": "By default, the right side of the drop-down menu is aligned by setting MenuAlignment=Alignment.Right", - "ItemsTitle": "Bind data source", - "ItemsIntro": "When you click the button on the right, the menu items in the drop-down box will increase", - "RadioTitle": "Bind data source", - "RadioIntro": "When you change the options, the menu items in the drop-down box will increase", - "CascadeTitle": "Cascade binding", - "CascadeIntro": "By selecting different options in the first drop-down box, the second drop-down box is filled with content dynamically.", - "IsFixedButtonTextTitle": "Fixed button text", - "IsFixedButtonTextIntro": "Set IsFixedButtonText to true make the ButtonText to const", - "FixedButtonTextTitle": "Set the fixed button text", - "FixedButtonTextIntro": "Set the FixedButtonText value for fixed button text", - "ButtonTemplateTitle": "Button Template", - "ButtonTemplateIntro": "You can customize the displayed content by setting ButtonTemlate", - "AttributeValue": "Currently selected value", - "AttributeClass": "Style", - "AttributeColor": "Color", - "AttributeDirection": "Drop-down box pop-up direction", - "AttributeItems": "Drop-down box value", - "AttributeMenuAlignment": "Menu alignment", - "AttributeMenuItem": "Menu item rendering label", - "AttributeResponsive": "Menu alignment", - "AttributeShowSplit": "Split button drop-down menu", - "AttributeIsAsync": "whether it is an asynchronous button", - "AttributeSize": "Size", - "AttributeTagName": "Label", - "AttributeButtonTemplate": "The template of button", - "AttributeItemTemplate": "The template of item", - "AttributeItemsTemplate": "The template of items", - "EventDesc1": "This event is triggered when the button is clicked", - "EventDesc2": "This event is triggered when the button is clicked and the current component is not refreshed for performance improvement", - "EventOnSelectedItemChanged": "Triggered when the value of the drop-down box changes", - "FixedButtonText": "The text of fixed button", - "Item1": "Melbourne", - "Item2": "Sydney", - "Item3": "Queensland", - "AddItem": "Add", - "RemoveItem": "Remove", - "City": "City", - "DropdownCascadeItem1": "Select ...", - "DropdownCascadeItem2": "Melbourne", - "DropdownCascadeItem3": "Sydney", - "DropdownCascadeItem4": "Hangzhou", - "DropdownCascadeItem5": "Chaoyang", - "DropdownCascadeItem6": "Haidian", - "DropdownCascadeItem7": "Jingan", - "DropdownCascadeItem8": "Huangpu", - "DropdownItemTemplateTitle": "Item Template", - "DropdownItemTemplateIntro": "By setting ItemTemplate, you can customize the content displayed in the drop-down item. In this example, the Tooltip component is used to add a tooltip function when the mouse is hovered.", - "DropdownItemsTemplateTitle": "Items Template", - "DropdownItemsTemplateIntro": "You can customize all the content of the dropdown list by setting ``. In this example, we use the `` component and `` component to customize the dropdown list component." - }, - "BootstrapBlazor.Server.Components.Samples.GoTops": { - "Title": "GoTop", - "Description": "Click to return to the top of the specified container", - "NormalTitle": "Basic usage", - "NormalIntro": "Click to return to the top usage", - "Desc1": "The scroll bar component ID controlled by the footer component", - "Description1": "The Footer component appears at the bottom, and the page automatically scrolls back to the top when you click Back to the Top", - "Description2": "This example passes the component client ID" - }, - "BootstrapBlazor.Server.Components.Samples.Menus": { - "MenusTitle": "Menu", - "MenusDescription": "A list of menus that provide navigation for pages and features.", - "MenusTips1": "Menu component is generally used for menu navigation, i.e. redirect navigation by clicking on the address bar after the menu, but sometimes you don't need navigation in real life, by setting OnClick callback delegate, custom processing logic, at this point by setting Property The of TheableNavigation, in this case all Menu are set to true disable navigation because they are analog menu clicks and do not actually navigate the address bar", - "MenusTopBarTitle": "Top bar", - "MenusTopBarIntro": "A wide range of basic usages are applicable.", - "MenusBottomBarTitle": "Bottom bar", - "MenusBottomBarIntro": "Set the parameter IsBottom value is true menu bar at the bottom of the container, for the mover", - "MenusBottomBarTips": "Because the bottom bar menu is relatively positioned relative to the parent container, you need to set the parent node style position-, or customize the style theposition-fixed", - "MenusIconTopTitle": "Top bar menu with icon", - "MenusIconTopIntro": "For simple website apps, set the menu icon by setting the menu item the Icon property of the MenuItem", - "MenusLeftRightLayoutTitle": "Sidebar", - "MenusLeftRightLayoutIntro": "For sites with left and right structure layouts, change the navigation menu to sidebar by setting IsVertical", - "MenusIconLeftTitle": "Sidebar menu with icon", - "MenusIconLeftIntro": "Set the menu icon by setting the menu item the Icon property of the MenuItem", - "MenusAccordionTitle": "Sidebar for accordion effects", - "MenusAccordionIntro": "Set the accordion effect sidebar menu by setting the IsAccordion property", - "MenusClickShrinkTitle": "Sidebar effect with shrink", - "MenusClickShrinkIntro": "Set the sidebar menu to the put-away state by setting the IsCollapsed property", - "MenusClickShrinkAlertText": "Note that the IsCollapsed property is available only if the IsVertical is true, i.e. only sidebar menus", - "MenusClickShrinkDescription": "In this example, the layout component Layout is used to build a web page", - "Block7aTitle": "Click expand to shrink the left menu", - "MenusClickShrinkSpanSpan": "I am the title of the website", - "MenusClickShrinkMenuTitle": "Admin", - "MenusWidgetTitle": "Menu with pendant", - "MenusWidgetIntro": "Set the custom component into the menu by setting the Component property of the MenuItem ", - "MenusCustomNodeTitle": "Custom node shrinkage", - "MenusCustomNodeIntro": "Set whether the node is receding by setting the IsCollapsed property of the MenuItem", - "MenusCustomNodeDescription": "In this example, the permission settingsnode is expanded and the remaining nodes are in the recess state", - "MenusDynamicTitle": "Dynamically change the menu", - "MenusDynamicIntro": "Change the menu item by dynamically setting Theitems property values", - "MenusDynamicButton1Text": "Update the menu", - "MenusDynamicButton2Text": "Reset the menu", - "MenusPartDisableTitle": "Some menus disable functionality", - "MenusPartDisableIntro": "Set whether the node is disabled by setting the IsDisabled property of theMenuItem", - "MenusPartDisableDescription1": "In this example navigation two node is disabled and the menu and its submenu are not clickable", - "MenusPartDisableDescription2": "Example of a disablement of the sidebar", - "MenusAttr_Items": "A collection of menu component data", - "MenusAttr_IsVertical": "Whether it is a sidebar", - "MenusAttr_IsBottom": "Whether it is the bottom bar", - "MenusAttr_IsAccordion": "Whether the accordion effect", - "MenusAttr_IsScrollIntoView": "Whether the auto scroll into view effect", - "MenusAttr_DisableNavigation": "Whether to disable address bar navigation", - "MenusAttr_OnClick": "This method is called back when a menu item is clicked", - "System": "System", - "Website": "Website", - "Task": "Task", - "Authorize": "Authorize", - "User": "User", - "Menu": "Menu", - "Role": "Role", - "Log": "Log", - "Access": "Access", - "Login": "Login", - "Operation": "Operation", - "Menu1": "Menu 1", - "Menu2": "Menu 2", - "Menu3": "Menu 3", - "SubMenu1": "Sub Menu 1", - "SubMenu2": "Sub Menu 2", - "SubMenu3": "Sub Menu 3", - "SubMenu11": "Sub Menu 11", - "SubMenu12": "Sub Menu 12", - "SubMenu21": "Sub Menu 21", - "SubMenu22": "Sub Menu 22", - "SubMenu31": "Sub Menu 31", - "SubMenu32": "Sub Menu 32", - "SubMenu41": "Sub Menu 41", - "SubMenu42": "Sub Menu 42" - }, - "BootstrapBlazor.Server.Components.Samples.Navigation": { - "NavsTitle": "Nav", - "NavsDescription": "A menu that provides navigation for your site.", - "NavsNormalTitle": "Basic navigation style.", - "NavsNormalIntro": "In this example, by setting the Items property, the navigation component is assigned through the program api and the NavLink component is written directly to the ChildContext of the navigation component", - "NavsAlignTitle": "Align", - "NavsAlignIntro": "Control component alignment by setting the property of Signment", - "NavsDivider": "Split the line", - "NavsVerticalTitle": "Vertical", - "NavsVerticalIntro": "In this example, you control whether the navigation is vertically distributed by setting the IsVertical property", - "NavsPillsTitle": "Capsule", - "NavsPillsIntro": "Control the background color of the navigation menu by setting the IsPills property", - "NavsFillAndAlignTitle": "Fill and align", - "NavsFillAndAlignIntro": "By setting the IsFill properties controls that the navigation menu is evenly distributed to fill the entire navigation bar", - "NavsWideTitle": "Equal width", - "NavsWideIntro": "By setting the IsIze property so that each navigation item will have the same width.", - "NavsChildContent": "Content", - "NavsAlignment": "Component alignment", - "NavsIsVertical": "Vertical distribution", - "NavsIsPills": "Capsule", - "NavsIsFill": "Padding", - "NavsIsJustified": "Equal width" - }, - "BootstrapBlazor.Server.Components.Samples.Paginations": { - "PaginationsTitle": "Pagination", - "PaginationsDescription": "When there is too much data, use paging to break down the data.", - "PaginationsNormalTitle": "Basic usage", - "PaginationsNormalIntro": "You can select the amount of data displayed per page by the drop-down box", - "PaginationsDisplayTextTitle": "Only text prompts are displayed", - "PaginationsDisplayTextIntro": "Only one page does not display the switch page number component, only text prompts", - "PaginationsMaxPageLinkCountTitle": "Only paginated components are displayed", - "PaginationsMaxPageLinkCountIntro": "By ShowPaginationInfo = 'false' setting does not display text prompts", - "PaginationsAlignmentTitle": "Alignment", - "PaginationsAlignmentIntro": "Set Alignment contorl the pagination alginment", - "PaginationsGotoTitle": "Goto navigator", - "PaginationsGotoIntro": "Set ShowGotoNavigator show/hide the Goto,can GotoTemplate custom the Goto navigator", - "PaginationsPageInfoTextTitle": "Pager info", - "PaginationsPageInfoTextIntro": "Set ShowInfo show/hide the pager info", - "PaginationsInfoTotal": "Total 20 pages", - "PaginationsInfoTemplateTitle": "Pager info template", - "PaginationsInfoTemplateIntro": "Set PageInfoTemplate curstom the template of page info", - "PaginationsPageIndexAttr": "Current page index", - "PaginationsPageCountAttr": "Total page count", - "PaginationsMaxPageLinkCountAttr": "Page up/down count", - "PaginationsOnPageLinkClickAttr": "The callback click the page item", - "PaginationsAlignmentAttr": "Alignment", - "PaginationsShowPageInfoAttr": "Whether show the page info", - "PaginationsPageInfoTextAttr": "The page info", - "PaginationsPageInfoTemplateAttr": "The template of page info", - "PaginationsShowGotoNavigatorAttr": "Whether show the goto navigator", - "PaginationsGotoNavigatorLabelTextAttr": "The goto label text", - "PaginationsGotoTemplateAttr": "The goto template", - "PaginationsPrevPageIconAttr": "Previous page icon", - "PaginationsPrevEllipsisPageIconAttr": "The page up icon", - "PaginationsNextPageIconAttr": "Next page icon", - "PaginationsNextEllipsisPageIconAttr": "The page down icon" - }, - "BootstrapBlazor.Server.Components.Samples.Steps": { - "StepsTitle": "Step", - "StepsDescription": "A navigation bar that guides the user through the process", - "StepsTipsTitle": "Step-by-step navigation bar that guides the user through the process, setting steps of no less than 2 steps based on the actual scenario", - "StepsTips": "Steps component supports UI rendering by setting the Items property or by embedding the Step component directly", - "StepsNormalTitle": "Basic usage", - "StepsNormalIntro": "Simple step bar, by directly binding the data source Items", - "StepsNormalPrevButtonText": "Prev", - "StepsNormalNextButtonText": "Next", - "StepsNormalResetButtonText": "Reset", - "StepsNormalFinishedTemplateDesc": "By setting FinishedTemplate, the subsequent processing logic after all steps are completed can be achieved, such as displaying completed steps. If a certain delay is needed to jump to a new page, a custom component needs to be customized and processed in its OnAfterRenderAsync lifecycle", - "StepsStepTitle": "Basic usage", - "StepsStepIntro": "A simple step bar that uses the Step component setup step directly inside the component", - "Step1Text": "First", - "Step2Text": "Second", - "Step3Text": "End", - "Step1Title": "Step 1", - "Step2Title": "Step 2", - "Step3Title": "Step 3", - "StepDesc": "This is a description", - "StepsDescTitle": "There is a description of the step bar", - "StepsDescIntro": "Each step described has its own description bar of step status", - "StepsTitleTemplateTitle": "Custom the title", - "StepsTitleTemplateIntro": "custom the title by set TitleTemplate", - "StepsHeaderTemplateTitle": "Custom the header", - "StepsHeaderTemplateIntro": "custom the title by set HeaderTemplate", - "StepsVerticalTitle": "Vertical step", - "StepsVerticalIntro": "vertical the step by set IsVertical=\"true\"", - "AttributeTitle": "StepItem Atributes", - "StepsItems": "Set up a collection of step data", - "StepsIsVertical": "The direction of the display", - "StepsAttrStepIndex": "Step order number", - "StepsAttrText": "The step text", - "StepsAttrTitle": "The step display title", - "StepsAttrIcon": "The step display icon", - "StepsAttrFinishedIcon": "The finished step display icon", - "StepsAttrDescription": "Describe the information", - "StepsAttrHeaderTemplate": "The template for Header", - "StepsAttrTitleTemplate": "The template for Title", - "StepsAttrChildContent": "The template for child" - }, - "BootstrapBlazor.Server.Components.Samples.Tabs": { - "TabsTitle": "Tabs", - "TabsSubTitle": "A collection of data that is associated with the separation content but belongs to a different category.", - "TabsDescription": "Tab components are designed in the form of templates, and this component is used by adding TabItem subcomponents to the tabItems in the template", - "TabsTipsTitle": "Tab components are generally used in two ways:", - "TabsTips1": "Split as data", - "TabsTips2": "Page navigation", - "TabsTips3": "The default behavior of this component is data segmentation,Clicking on the TabItem title does not navigate, and if you need to navigate the address bar, set the ClickTabToNavigation property to true,When you click on the TabItem title, the address bar redirects navigation, mostly for the background management system to be used in conjunction with the Menu components,The actual combat can refer to the multi-label mode in the background template simulator, When you have Razor Component in the additional Assemblies, set the AdditionalAssemblies property value correctly so that the route within the label component is resolved correctly, and the relevant documentation [Portal]", - "TabsTips4": "This component adapts to width height, etc., and scroll arrows can appear left and right or up and down when appropriate", - "TabsInfoTitle": "Set additional information during tab navigation", - "TabsItemMenuTitle": "Configure Tab and Menu linked dictionary, this method can automatically obtain tab page properties without separately setting TabItemOption.", - "TabsInfoItem2": "Tab properties can be set when navigating using the built-in extension method Navigator.NavigateTo(\"provider\", \"url\", \"text\", \"icon\", \"closable\")", - "TabsInfoItem4": "Setting @attribute [TabItemOption(Text = \"LayoutPage\", Icon = \"fa-solid fa-font-awesome\")] in razor page", - "TabsQATitle": "Q&A", - "TabsQA1": "Get TabSet by cascading parameter", - "TabsQA2": "Get TabItem by cascading parameter", - "TabsQA3": "How to navigate to a new tab item in razor", - "TabsQA4": "How to navigate to a new tab in the code", - "TabItem1Text": "User", - "TabItem1Content": "I am a user manager", - "TabItem2Text": "Menu", - "TabItem2Content": "I am menu management", - "TabItem3Text": "Roles", - "TabItem3Content": "I am roles management", - "TabItem4Text": "Department ", - "TabItem4Content": "I am department management", - "TabItem5Text": "System logs", - "TabItem5Content": "I am a system log", - "TabItem6Text": "Sign log", - "TabItem6Content": "I am Sign log management", - "TabItem7Text": "Timed task", - "TabItem7Content": "I am a timed task manager", - "TabItem8Text": "Count", - "TabItem9Text": "Weather forecast", - "TabsNormalTitle": "Basic usage", - "TabsNormalIntro": "Basic, concise tabs.", - "TabsCardTitle": "Tab style ", - "TabsCardIntro": "Set tab-style tabs by isCard='true'.", - "TabsBorderTitle": "Carding", - "TabsBorderIntro": "Set tab-style tabs by IsBorderCard='true'.", - "TabsIconTitle": "Icon", - "TabsIconIntro": "Set the tab icon by setting the Icon property of the TabItem component", - "TabsClosableTitle": "Close", - "TabsClosableIntro": "Show the close button to the tab by setting the ShowClose property", - "TabsClosableTips": "

Tab component turns on the showClose , TabItem property Closable can be set individually to close tab, defaulting to true;In this example UserTabs do not provide a to turn off functionality

", - "TabsPlacementTitle": "Position", - "TabsPlacementIntro": "By setting the Placement property to change the label position, a small arrow scrolls up and down to TabItem switch when you change to left or right", - "DividerText": "Split Line", - "TabsAddTabItemTitle": "Custom add tab triggers", - "TabsAddTabItemIntro": "Dynamically add/remove TabItem by calling the component api", - "AddButtonText": "Add", - "RemoveButtonText": "Rmove", - "ActiveButtonText": "Activate the first one", - "TabsComponentTitle": "Additional components are built in", - "TabsComponentIntro": "other components are built into the TabItem", - "TabsComponentDescription": "Tab The contents of each panel of the component remain state by default, and in this case the original data is maintained when the panel switches", - "TabsDynamicTabItemTitle": "The program dynamically adds the TabItem panel", - "TabsDynamicTabItemIntro": "This feature allows you to click on the menu link in the sidebar and render multiple labels at the top of the data area on the right", - "TabsDynamicTabItemDescription": "In this example, the right the Tab the inside of the panel remains in state, and the component reloads when it is closed and reopened", - "Block9Div": "Header", - "TabsAppTitle": "Live Tab components", - "TabsAppIntro": "By setting the ShowExtendButtons property to true, turning on the left and right buttons of the component and closing the drop-down menu, it is very useful in practice", - "TabsAppDescription": "Dynamically adjust the number of TabItem by adding, deletebuttons to view the left and right effects beyond the number of containers, user management is set to not close, and the feature button cannot close this tab. The component switches tabs in a loop by default. You can disable this feature by IsLoopSwitchTabItem=\"false\"", - "TabsIsOnlyRenderActiveTitle": "Only the current label is rendered", - "TabsIsOnlyRenderActiveIntro": "By setting the isOnlyRenderActiveTab parameter, the component renders only the current active label", - "BlockSetTextTitle": "TabItem Text", - "BlockSetTextIntro": "Call SetText instance method for update the tab item text", - "BlockSetTextDesc": "Click the Setting button,call TabItem instance method SetText for update tab item text icon closable parameter", - "BlockSetTextButtonText": "Setting", - "TabsLazyLoadTitle": "Lazy load tab item", - "TabsLazyLoadIntro": "By setting IsLazyLoadTabItem=\"true\" enable the lazy load feature", - "TabsHeaderTemplateTitle": "Header Template", - "TabsHeaderTemplateIntro": "customer the header UI via HeaderTemplate", - "BlockHeaderTemplateHeaderText": "Todo List", - "BlockHeaderTemplateDesc": "Use Badge in the HeaderTemplate", - "TabsSetHeaderTemplateTitle": "Set header text", - "TabsSetHeaderTemplateIntro": "Set the parameter Text of TabItem custom the tabitem's header title'", - "TabsSetTabItemHeaderTextTitle": "Set header text icon", - "TabsSetTabItemHeaderTextIntro": "Set the parameter by TabItem instance method SetHeader", - "TabsDragTitle": "Drag", - "TabsDragIntro": "By setting AllowDrag to enable the tab item drag and drop function, call back the OnDragItemEndAsync method after dropping the tab item", - "TabsAtt1IsBorderCard": "Whether it is a bordered card style", - "TabAtt2IsCard": "Whether it is a card style", - "TabAtt3IsOnlyRenderActiveTab": "Whether to render only Active labels", - "TabAtt4ShowClose": "Whether to display the close button", - "TabAtt5ShowExtendButtons": "Whether to display the extension button", - "TabAttShowNavigatorButtons": "Whether to display the previous and next navigation buttons", - "TabAttShowActiveBar": "Whether to display active bar", - "TabAttIsLazyLoadTabItem": "Whether lazy load tab item", - "TabAttIsLoopSwitchTabItem": "Whether loop switch tab item", - "TabAtt6ClickTabToNavigation": "Whether to navigate when you click on the title", - "TabAtt7Placement": "Set the label position", - "TabAtt8Height": "Set the label height", - "TabAtt9Items": "TabItem collection", - "TabAtt10ChildContent": "ChildContent template", - "TabAttHeaderTemplate": "Header Template", - "TabAtt11AdditionalAssemblies": "A collection of additional programs to initialize the route", - "TabAtt12OnClickTab": "Call back the delegate method when you click on the TabItem title", - "TabAttAllowDrag": "Whether allow drag/drop tab item", - "TabAttOnDragItemEndAsync": "The callback after drop tab item", - "Att13": "Set the tab to display the title collection, and when not set, an internal attempt is made to use menu item data", - "TabMethod1AddTab": "Add TabItem to Tab, can set new Tab position if necessary", - "TabMethod2RemoveTab": "Remove TabItem", - "TabMethod3ActiveTab": "The setting specifies tabItem as active", - "TabMethod4ClickPrevTab": "Switch to the previous label method", - "TabMethod5ClickNextTab": "Switch to the next label method", - "TabMethod6CloseCurrentTab": "Close the current tab method", - "TabMethod7CloseOtherTabs": "Close other tab methods", - "TabMethod8CloseAllTabs": "Close all tab methods", - "TabMethod9GetActiveTab": "Get current tab methods", - "BackAddTabText": "I am a new Tab with the name {0}", - "BackText1": "Counter", - "BackText2": "Weather forecast", - "AttTitle": "Attributes", - "MethodTitle": "Method", - "TabDefaultUrl": "Default page", - "AttributeOnCloseTabItemAsync": "Close tab callback method", - "AttributeOnClickTabItemAsync": "Callback method when clicking TabItem", - "AttributeNotAuthorized": "The template for NotAuthorized", - "AttributeNotFound": "The template for NotFound", - "AttributeExcludeUrls": "Exclude address support for wildcards", - "AttributeButtonTemplate": "The template for Buttons", - "TabsDisabledTitle": "Disabled", - "TabsDisabledIntro": "Disable the current TabItem by setting IsDisabled=\"true\" to prohibit click, drag, close etc.", - "TabsChromeStyleTitle": "Chrome Style", - "TabsChromeStyleIntro": "Set the Chrome browser tab style by setting TabStyle=\"TabStyle.Chrome\". Currently only supports Placement=\"Placement.Top\" mode", - "TabAtt2TabStyle": "Set the tab style", - "TabsCapsuleStyleTitle": "Capsule Style", - "TabsCapsuleStyleIntro": "Set the capsule tab style by setting TabStyle=\"TabStyle.Capsule\". Currently only supports Placement=\"Placement.Top\" Placement=\"Placement.Bottom\" mode", - "AttributeToolbarTemplate": "The template for Toolbar", - "TabsToolbarTitle": "Toolbar", - "TabsToolbarIntro": "By setting ShowToolbar, you can display the tab toolbar. By default, the Refresh and Fullscreen buttons are displayed. You can control whether to display them by ShowRefreshToolbarButton and ShowFullscreenToolbarButton, click the Refresh button to trigger the OnToolbarRefreshCallback callback method. You can customize toolbar buttons using ToolbarTemplate", - "AttributeShowToolbar": "Whether to display the toolbar", - "AttributeShowRefreshToolbarButton": "Whether to display the toolbar refresh button", - "AttributeShowFullscreenToolbarButton": "Whether to display the toolbar full screen button", - "AttributeRefreshToolbarTooltipText": "Toolbar refresh button tooltip text", - "AttributeFullscreenToolbarTooltipText": "Toolbar full screen button tooltip text", - "AttributeRefreshToolbarButtonIcon": "Toolbar refresh button icon", - "AttributeFullscreenToolbarButtonIcon": "Toolbar full screen button icon", - "TabsToolbarDesc": "After clicking the button, the counter value increases, and clicking the Refresh button on the toolbar will reset the counter.", - "AttributeOnToolbarRefreshCallback": "Click the toolbar refresh button callback method", - "ContextRefresh": "Refresh", - "ContextClose": "Close", - "ContextCloseOther": "Close Other Tabs", - "ContextCloseAll": "Close All Tabs", - "TabsContextMenuTitle": "TabItem Context Menu", - "TabsContextMenuIntro": "Use the built-in ContextMenuZone component to pop up a custom context menu when you right-click a tab item", - "TabsContextMenuDesc": "The disabled tab can be set by setting the OnBeforeShowContextMenu callback method to control whether the right-click menu is displayed according to the return value. If it is not set, the right-click menu is also displayed for the disabled tab", - "AttributeShowContextMenu": "whether enable tab context menu", - "AttributeContextMenuRefreshIcon": "the icon of tab item context menu refresh button", - "AttributeContextMenuCloseIcon": "the icon of tab item context menu close button", - "AttributeContextMenuCloseOtherIcon": "the icon of tab item context menu close other button", - "AttributeContextMenuCloseAllIcon": "the icon of tab item context menu close all button", - "AttributeContextMenuFullScreenIcon": "the icon of tab item context menu full screen button", - "AttributeOnBeforeShowContextMenu": "before popup context menu callback", - "ShowTabInHeaderDesc": "After enabling the multi-tab function in the Layout component, you can render the Tab tag header into the Layout Header template by setting ShowTabInHeader=\"true\". The effect can be viewed by creating a new project in the Project Template", - "TabsOnTabHeaderTextLocalizerTitle": "TabItemOption Localizer", - "TabsOnTabHeaderTextLocalizerIntro": "Localization of `TabItemOption` is achieved by setting the `OnTabHeaderTextLocalizer` callback delegate method. The input parameter is the `TabItemOption` parameter `Text`, and the return value is the localized value" - }, - "BootstrapBlazor.Server.Components.Components.DemoTabItem": { - "Info": "Reset the title of this TabItem by click the button", - "ButtonText": "SetTitle" - }, - "BootstrapBlazor.Server.Components.Samples.AutoFills": { - "Title": "AutoFill components", - "Description": "Auto-fill forms when selected via IntelliSense prompt option", - "NormalTitle": "Basic usage", - "NormalIntro": "fill the form", - "NormalDesc": "input Name Name smart prompt, automatically fill in the form below after selecting the prompt item Currently supports keyboard Enter Esc ", - "CustomFilterTitle": "custom filter", - "CustomFilterIntro": "Filter data by setting custom filter condition callback delegate OnCustomFilter", - "CustomFilterDesc": "Enter the name intelligent prompt, and delegate OnCustomFilter to filter data by setting a user-defined filter condition callback. The current filter condition is that Name contains the input string Count and the value is greater than 50", - "ShowDropdownListOnFocusTitle": "Turn off auto-expand dropdown", - "ShowDropdownListOnFocusIntro": "By setting ShowDropdownListOnFocus="false"", - "ShowDropdownListOnFocusDesc": "parameter ShowDropdownListOnFocus the default value is true. After the component gets the focus, it will automatically expand the candidate drop-down box, set to false turn off this feature", - "Att1": "The number to display when matching data", - "Att2": "Display a message when there is no matching data", - "Def2": "No matching data", - "Att3": "Whether to ignore case when matching", - "Att4": "Whether to enable fuzzy query", - "Att5": "component data collection", - "Att6": "Anti-shake time", - "Att7": "Custom collection filter rules", - "Att8": "Get the display text method through the model", - "Att9": "Option change callback method", - "Att10": "Whether to expand the dropdown candidate menu when it gains focus", - "Att11": "Candidate template", - "Att12": "Whether to skip Enter key handling", - "Att13": "Whether to skip Esc key processing", - "IsVirtualizeTitle": "Virtualize", - "IsVirtualizeIntro": "Set IsVirtualize to true enable virtual scroll for large data", - "IsVirtualizeDescription": "Component virtual scrolling supports two ways of providing data through Items or OnQueryAsync callback methods", - "AttrIsVirtualize": "Wether to enable virtualize", - "AttIsAutoClearWhenInvalid": "Whether to automatically clear invalid values when focus leaves the component" - }, - "BootstrapBlazor.Server.Components.Samples.AutoCompletes": { - "Title": "AutoComplete", - "Description": "The input box autocompletes the function", - "Block1Title": "Basic usage", - "Block1Intro": "By setting Items data collection when the user types information that is automatically displayed", - "Block2Title": "Blur queries and ignore case", - "Block2Intro": "By setting the IsLikeMatch value settings to turn on fuzzy matching of collections, you control whether case is ignored by setting the IgnoreCase", - "Block3Title": "Custom prompt message", - "Block3Intro": "By setting the NoDataTip value setting automatically completes the custom prompt message that appears when the data is not found", - "Block4Title": "Custom candidates", - "Block4Intro": "By setting up ValueChanged callback method reorganizes the data collection based on the data entered by the user before prompting for information", - "Block5Title": "The label is displayed", - "Block5Intro": "When a component binds in both directions, it automatically determines whether label text is displayed based on the conditions", - "DebounceTitle": "Debounce", - "DebounceIntro": "Set Debounce value turn on debounce", - "BlockGroupTitle": "InputGroup", - "BlockGroupIntro": "combox with BootstrapInputGroupLabel inside BootstrapInputGroupLabel", - "ItemTemplateTitle": "ItemTemplate", - "ItemTemplateIntro": "Set ItemTemplate for customer the dropdown item", - "Att1": "whether to display the front label", - "Att2": "content", - "Att3": "content", - "Att4": "Prompt information when no matches are automatically completed", - "Att4DefaultValue": "No matching data", - "Att5": "The number of data displayed when the data is matched", - "Att6": "Call back the delegate method when the text box value changes", - "Att7": "Whether to turn on fuzzy matching", - "Att8": "Whether case is ignored when matching", - "Att9": "Custom collection filtering rules", - "AttItemTemplate": "Item template", - "Debounce": "Debounce interval default Zero", - "SkipEnter": "Skip Enter key processing", - "SkipEsc": "Skip Esc key processing", - "OnSelectedItemChanged": "Callback for the selected item changed", - "OnSelectedItemChangedTitle": "OnSelectedItemChanged", - "OnSelectedItemChangedIntro": "Click the dropdown item or Enter trigger the callback", - "OnValueChanged": "Callback for the Value changed", - "NormalDescription": "In this example, type 123 strings to display the viewing effect, automatically give the component initialization to the auto-prompt dataset, and the dataset does not change. Enable the clear button by setting IsClearable", - "LikeMatchDescription": "In this example, type the abc string to display the viewing effect and select all matches in the collection that contain abc and have the same case", - "NoDataTipDescription": "In this example, type 567 strings because the autocomplete information center does not display custom prompt information - the data you want is not found", - "NoDataTip": "There is nothing", - "ValueChangedDescription": "In this example, type any string to display the viewing effect, and automatically complete the component's dynamic changes from the newly obtained prompt dataset based on the string you type", - "ShowLabelDescription": "The pre-label explicit rules are consistent with the BootstrapInput component of the [portal]", - "Divider1Text": "Bidirectional binding displays labels", - "Divider2Text": "Bidirectional bindings do not display labels", - "Divider3Text": "Customize DisplayText", - "AutoText": "Custom city", - "DebounceDescription": "In this example, please type any string to display the viewing effect. Within the anti shake time, the auto completion component will only send the results to the back end after the last entry, which will greatly improve the performance", - "BlockGroupPrevLabel": "Prev", - "BlockGroupSuffixLabel": "Suffix", - "PopoverTitle": "Popover dropdown menu", - "PopoverIntro": "Set IsPopover to true, use popover render UI prevent The dropdown menu cannot be fully displayed because the parent container is set to overflow: hidden" - }, - "BootstrapBlazor.Server.Components.Samples.FullScreens": { - "FullScreensTitle": "FullScreen", - "FullScreensDescription": "Human-computer interaction by injecting service calls Show method pop-ups", - "FullScreenNormalTitle": "Basic usage", - "FullScreenNormalIntro": "The entire page is fully screened by calling the Show method that FullScreenService service instance", - "FullScreenNormalButtonText1": "FullScreen", - "FullScreenOptionDesc": "You can set the full-screen window by setting FullScreenOption, and specify the page element by ElementReference Id Selector" - }, - "BootstrapBlazor.Server.Components.Samples.FullScreenButtons": { - "FullScreenButtonTitle": "FullScreenButton", - "FullScreenButtonIntro": "Use the FullScreenButton component to make the entire web page or a specified element full screen", - "FullScreenButtonNormalTitle": "Basic usage", - "FullScreenButtonNormalIntro": "You can set the default icon of the button through Icon, and set the icon when exiting full screen through the FullScreenExitIcon property", - "FullScreenTitleLi1": "Set the fullscreen element ID through the TargetId parameter", - "FullScreenTitleLi2": "Set the current page title text through the Text property" - }, - "BootstrapBlazor.Server.Components.Samples.Buttons": { - "Title": "Button", - "Description": "Common action buttons.", - "Block1Title": "Basic usage", - "Block1Intro": "The underlying button usage.", - "Block2Title": "Different styles", - "Block2Intro": "Display different button styles by setting the ButtonStyle", - "Block3Title": "Outline", - "Block3Intro": "Set the color style of the button border by setting the IsOutline='true'.", - "Block4Title": "Different sizes.", - "Block4Intro": "The Button component provides a variety of sizes in addition to the default values, and by setting the Size property, you can select the appropriate button size in different scenarios.", - "Block5Title": "Disable the state", - "Block5Intro": "Button is not available. By setting the IsDisabled property", - "Block6Title": "Button group", - "Block6Intro": "A combination of multiple buttons", - "Block7Title": "Button with icon", - "Block7Intro": "Set the button icon by setting the Icon property, which is fa-fa when using font strings such as the font-awesome icon", - "Block8Title": "Secondary encapsulation button", - "Block8Intro": "The button display text is set by setting the Text property of the winButton component, and the click button is the text on the right that shows the clicked button", - "Block9Title": "Asynchronous request button", - "Block9Intro": "By setting whether the isAsync property button is asynchronous request button by setting whether the is false by default. Note This will only take effect when ShowSplit=\"true\" is set", - "ButtonAsyncDescription": "When the button is an asynchronous request button, the button is changed to disabled, and the loading small icon is displayed, returning to normal after the asynchronous request ends, in this case, after clicking the asynchronous button, the request load animation is displayed and returns to normal after 5 seconds. In some specific scenarios, the button needs to remain disabled after asynchronous operation. Please control this using the IsKeepDisabled parameter.", - "EventDesc1": "This event is triggered when the button is clicked", - "EventDesc2": "This event is triggered when the button is clicked and the current component is not refreshed for performance improvement", - "Att1": "color", - "Att2": "icon", - "Att3": "An animated icon when loaded asynchronously", - "Att4": "displays text", - "Att5": "size", - "Att6": "style", - "Att7": "fill button", - "Att8": "whether to disable it", - "Att9": "whether there is a border", - "Att10": "whether it is an asynchronous button", - "Att11": "content", - "Att12": "button style", - "Att13": "The type of button", - "MethodDesc1": "set whether the button is available", - "NoneButtonColor": "None", - "PrimaryButton": "Primary", - "SecondaryButton": "Secondary", - "SuccessButton": "Success", - "DangerButton": "Danger", - "WarningButton": "Warning", - "InformationButton": "Information", - "DarkButton": "Dark", - "HighlightButton": "Highlight", - "LinkButton": "Link", - "ExtraSmallButton": "ExtraSmall", - "SmallButton": "Small", - "NormalButton": "Button", - "MediumButton": "Medium", - "LargeButton": "Large", - "ExtraLargeButton": "ExtraLarge", - "ButtonExtraExtraLargeText": "ExtraExtraLarge", - "BlockButton": "Block", - "Description1": "Button disable effects can be achieved by setting its own IsDisabled property in the OnClick callback method, or by calling the component instance method SetDisable", - "Description2": "Because using the IsDisabled property requires an explicit manual call to the StateHasChanged method, which causes the component where the button is located to refresh as a whole, it is recommended that you use the instance method SetDisable refresh the button only", - "SubTitle": "Performance comparison:", - "IsDisabledTip": "This page transfer is 4.8K when set with the IsDisabled property", - "SetDisableTip": "This page transfer is 280B when set up using the SetDisable method", - "ButtonDisabled": "Click to be disabled", - "ButtonAvailable": "Click to make the first button available", - "ButtonOne": "Button one", - "ButtonTwo": "Button two", - "ButtonStatus": "Status button", - "ButtonProgress": "Progress button", - "ButtonAsync": "Asynchronous", - "TooltipText": "Button", - "TooltipTitle": "Tooltip", - "TooltipIntro": "Set TooltipText TooltipPlacement TooltipTrigger shortcut button prompt bar information, position, and triggering method. For more functions, please use the Tooltip component to implement. In this example, the second button is in the disabled state, and the prompt bar is still available", - "TooltipDisabledText": "Disabled", - "ToggleButton": "Toggle", - "ToggleIntroduction": "Get the current button Toggle state by setting the IsActiveChanged or OnToggleAsync callback method" - }, - "BootstrapBlazor.Server.Components.Samples.PulseButtons": { - "Block1Title": "Basic usage", - "Block1Intro": "The underlying button usage.", - "PulseButtonHeader": "PulseButton (heartbeat) button", - "PulseButtonPara": "It is suitable for highlighting function to attract users' attention. The default button is circular", - "PulseButtonPara2": "The heartbeat button component is inherited from the button, so a heartbeat ring is added on the basis of the original function of the button. Please refer to the switch style button in the lower right corner of the website." - }, - "BootstrapBlazor.Server.Components.Samples.Cascaders": { - "Title": "Cascader", - "Block1Title": "Cascade selection", - "Block1Intro": "Drop-down selection boxes are available in a variety of colors", - "Block2Title": "Turn off cascading selection", - "Block2Intro": "Cascading selection is not available", - "Block3Title": "Two-way binding", - "Block3Intro": "The values in the text box change when you change the cascading selection option by binding the Value property with the Select component.", - "Block3Desc": "You can use IsClearable to control whether to display the clear button. The default value is false", - "Block4Title": "Client validation", - "Block4Intro": "When cascading selection is not selected, click the submit button to block.", - "Block5Title": "The binding generic is the Guid structure", - "Block5Intro": "The component binding value is an example of a Guid structure", - "Block6Title": "The label is displayed", - "Block6Intro": "When a component binds in both directions, it automatically determines whether label text is displayed based on the conditions", - "BlockParentSelectableTitle": "Parent selectable", - "BlockParentSelectableIntro": "Whether can select on the parent node", - "BlockShowFullLevelsTitle": "Show Full Levels", - "BlockShowFullLevelsIntro": "Whether show the full levels via ShowFullLevels", - "Description": "The pre-label explicit rules are consistent with the BootstrapInput component of the [portal]", - "Att1": "Whether to display the front label", - "Att2": "The front label displays text", - "Att3": "The place-in display text when not selected", - "Att3Default": "Click to select ...", - "Att4": "Style", - "Att5": "Color", - "Att6": "Whether to disable it", - "Att7": "The data collection", - "Event1": "This event is triggered when the cascading selection option changes", - "SubmitButtonText": "Submit", - "ValidateButtonText": "Validate", - "item1": "Melbourne", - "item1_child1": "Brunswick", - "item1_child1_child": "so-and-so street", - "item1_child2": "Fitzroy", - "item1_child3": "Carlton", - "item1_child4": "Thornbury", - "item2": "Sydney", - "item2_child1": "Millsons Point", - "item2_child2": "Potts Point", - "item2_child3": "North Sydney", - "item3": "Brisbane", - "item3_child1": "Brisbane", - "item3_child2": "Gold Cost", - "Divider1": "Bidirectional binding displays labels", - "Divider2": "Bidirectional bindings do not display labels", - "Divider3": "Customize DisplayText", - "CascaderText": "Custom city" - }, - "BootstrapBlazor.Server.Components.Samples.CherryMarkdowns": { - "Header": "CherryMarkdown", - "Tip": "Rich text box component based on CherryMarkdown", - "MarkdownsNote": "If you edit too much content, signalR communication interruption may be triggered. Please adjust the HubOptions configuration.", - "NormalTitle": "Basic usage", - "NormalIntro": "Use two-way binding to get the corresponding html and markdown content", - "FileUploadTitle": "Handle file upload events yourself", - "FileUploadIntro": "Use the OnFileUpload event to handle the file upload event, support directly pasting pictures to the browser", - "CustomTitle": "custom content", - "CustomIntro": "Customize the toolbar via ToolbarSettings, and customize the editor style via EditorSettings", - "ViewTitle": "browse mode", - "ViewIntro": "Pure browsing mode, no editor", - "ApiTitle": "External control components", - "ApiIntro": "Control content externally using CherryMarkdown's Api", - "InsertCheckListButtonText": "Insert a CheckList", - "InsertPictureButtonText": "insert a picture" - }, - "BootstrapBlazor.Server.Components.Samples.Checkboxs": { - "Title": "Checkbox", - "Description": "Multiple-select in a set of alternatives", - "NormalTitle": "Basic usage", - "NormalIntro": "Using alone can represent a switch between two states, and column head or header can represent a switch between three states when used. Components support generic data binding, setting the binding data type the TValue, and setting the component state by State", - "DisabledTitle": "Disable the check box", - "DisabledIntro": "Check box is not available, and the IsDisabled is set by whether the component is available", - "ShowLabelTitle": "Color", - "ShowLabelIntro": "Change the component background color by setting the Color property", - "DisplayTextTitle": "Size", - "DisplayTextIntro": "Change the component size by setting the Size property", - "ShowAfterLabelTitle": "Label text", - "ShowAfterLabelIntro": "The check box displays text, and the component status flips when you tap display text, using the DisplayText settings component to display text", - "ShowAfterLabelDescription": "Set DisplayText property, or display text messages through bidirectional binding", - "OnStateChangedTitle": "Two-way binding boolean", - "OnStateChangedIntro": "Binding variables within a component, data automatically synchronized, binding data types boolean type when the value is automatically flipped", - "BindStringTitle": "Bind string data in both directions", - "BindStringIntro": "Binding variables within a component, data is automatically synchronized", - "ValidateFormTitle": "Used in forms", - "ValidateFormIntro": "When you use Checkbox in a form, the display label text is placed in front of the component", - "ValidateFormDescription": "The pre-label explicit rules are consistent with the BootstrapInput component [portal]", - "ItemTemplateTitle": "ItemTemplate", - "ItemTemplateIntro": "Set ItemTemplate for customer the item UI", - "OnBeforeStateChangedTitle": "OnBeforeStateChanged", - "OnBeforeStateChangedIntro": "By setting the OnBeforeStateChanged callback method, you can cancel the state change logic", - "OnBeforeStateChangedText": "Confirm", - "OnBeforeStateChangedSwalTitle": "Confirm Select", - "OnBeforeStateChangedSwalContent": "Whether the current checkbox is selected", - "Att1": "Whether to display the front label", - "Att2": "Whether to display the rear label", - "Att3": "The front label displays text", - "Att4": "Whether to disable it", - "Att5": "The type of control", - "OnBeforeStateChanged": "This method is called back before the selection box status changes", - "OnStateChanged": "This method is called back when the selection box state changes", - "StateChanged": "The state changes the callback method", - "StatusText1": "Selected", - "StatusText2": "Not selected", - "StatusText3": "Indeterminate", - "Checkbox2Text": "Two-way binding", - "Checkbox3Text": "Handwritten labels" - }, - "BootstrapBlazor.Server.Components.Samples.CheckboxLists": { - "Title": "CheckboxList", - "CheckboxListsTip": "The control is used to create a multi-select check box group", - "NormalTitle": "Basic usage", - "NormalIntro": "Show check box groups by data binding", - "NormalTips1": "Set bidirectional binding data value through bind-Value", - "NormalTips2": "Set candidate data sources through Items", - "NormalTips3": "Get the changed item instance through the onSelectedChanged callback method", - "NormalTips4": "Enable label tooltip by ShowLabelTooltip=\"true\"", - "ValidateFormTitle": "Client Validation", - "ValidateFormIntro": "Built in ValidateForm", - "ValidateFormTips1": "You can experience adaptive layout by changing the window size", - "ValidateFormTips2": "In this example, the Name field of the binding model binditem is automatically changed by checking the option", - "ValidateFormTips3": "Because it is built into the ValidateForm form, in this example, RequiredAttribute required for verification is added. When all options are cancelled, the verification result will be prompted", - "ShowLabelTitle": "Bidirectional binding collection", - "ShowLabelIntro": "Binding values are collections", - "ShowLabelTip": "TValue is set to IEnumerable<int> generic collection, the ValueField specified field of the bound collection must be consistent with the generic type", - "ItemTemplateTitle": "ItemTemplate", - "ItemTemplateIntro": "Set ItemTemplate for customer the item UI", - "EnumTitle": "Bidirectional binding enumeration", - "EnumIntro": "The binding value is enumeration", - "EnumTip": "When CheckboxList binds an enumeration set, Items does not need to be specified, Items will be automatically set to all values in the enumeration. If you need to bind some values, please provide the enumeration set Items", - "NoBorderTitle": "No border", - "NoBorderIntro": "By setting ShowBorder='false' do not display borders", - "NoBorderTip": "Displays a red border when validation fails", - "VerticalTitle": "Vertical arrangement", - "VerticalIntro": "Arrange checkboxes vertically by setting IsVertical=\"true\"", - "DisabledTitle": "Disable", - "DisabledIntro": "Disable by setting IsDisabled='true'", - "IsButtonTitle": "Button CheckboxList", - "IsButtonIntro": "Set IsButton=\"true\" to change the checkbox style to a button style", - "Att1": "Data source", - "Att2": "Disable", - "Att3": "Component values are used for bidirectional binding", - "Att4": "Whether to arrange vertically", - "Event1": "Call back this method when the state of the check box changes", - "Header": "common", - "Counter": "item is selected component binding value", - "item1": "Pat", - "item2": "Argo", - "item3": "Doom", - "item4": "Simon", - "Foo": "Pat,Argo", - "Description": "TValue is set to IEnumerable<string> generic collection", - "AttributeMaxSelectedCount": "The maximum count of selected node", - "AttributeOnMaxSelectedCountExceed": "Select the callback method when the maximum number of nodes is reached", - "MaxSelectedCountTitle": "MaxSelectedCount", - "MaxSelectedCountIntro": "Control the maximum number of selectable items by setting the MaxSelectedCount property, and handle the logic through the OnMaxSelectedCountExceed callback", - "MaxSelectedCountDesc": "When more than 2 nodes are selected, a Toast prompt bar will pop up", - "OnMaxSelectedCountExceedTitle": "Maximum Info", - "OnMaxSelectedCountExceedContent": "You can select at most {0} items", - "CheckboxListGenericTitle": "Generic List", - "CheckboxListGenericIntro": "Enable generic support by using the RadioListGeneric component with SelectedItem<TValue>" - }, - "BootstrapBlazor.Server.Components.Samples.ColorPickers": { - "Title": "ColorPicker", - "Description": "Select color to use", - "NormalTitle": "Basic Usage", - "NormalIntro": "Set the color value by setting the Value property", - "ValueTitle": "Set Initial Value", - "ValueIntro": "Set the color value by setting the Value property", - "TemplateTitle": "Display Template", - "TemplateIntro": "Customize the display template by setting Template", - "ValueDescription": "Set Value='@Value' to initialize the default value", - "BindValueTitle": "Two-way binding", - "BindValueIntro": "Set the color value by setting the Value property", - "DisabledTitle": "Disabled", - "DisabledIntro": "Disable this component by setting the IsDisabled property", - "FormatterTitle": "Formatter", - "FormatterIntro": "Set the display value by setting the Formatter callback method", - "ValidateFormTitle": "Used in the verification form", - "ValidateFormIntro": "Built in ValidateForm to use", - "IsSupportOpacityTitle": "Support Opacity", - "IsSupportOpacityIntro": "Enable transparency support by setting IsSupportOpacity=\"true\"", - "EventOnValueChanged": "Color change callback delegate method", - "AttributeTemplate": "The template for display", - "AttributeFormatter": "Display color value formatting callback method", - "AttributeIsSupportOpacity": "Whether to support transparency", - "AttributeSwatches": "Preset candidate colors", - "SupportOpacity": "Support Opacity", - "Disabled": "Disabled" - }, - "BootstrapBlazor.Server.Components.Samples.DateTimePickers": { - "Title": "DatePicker", - "Description": "Used to select or enter a date", - "NormalTitle": "Select the day", - "NormalIntro": "Select the control based on the date of the day in 「day」as the base unit", - "ShowIconTitle": "Whether show the component icon", - "ShowIconIntro": "Save space by setting ShowIcon=\"false\" to not display component icons", - "ValidateFormTitle": "Client validation", - "ValidateFormIntro": "Check data validity and prompt automatically based on custom validation rules", - "DateTimeOffsetTitle": "Click on the pop-up date box", - "DateTimeOffsetIntro": "Select the control based on the date of the day in 「day」 as the base unit", - "IsEditableTitle": "Editable", - "IsEditableIntro": "Enable manual input function by setting IsEditable=\"true\"", - "BindValueTitle": "Data is bound in both directions", - "BindValueIntro": "The values in the text box change as the date component time changes", - "ViewModeTitle": "Selector with time", - "ViewModeIntro": "Select the date and time in the same selector, click the confirm button and close the pop-up window", - "ViewModeTip": "Set the value of the viewMode property to The DateTime of DatePickerViewMode.DateTime", - "NullValueTitle": "Allow empty time", - "NullValueIntro": "More for conditional selection", - "NullValueTip": "The emptybutton automatically appears when the binding value is DateTime? for an empty type", - "ShowLabelTitle": "The label is displayed", - "ShowLabelIntro": "When you are a form component, the label in front of the component is displayed", - "ShowLabelTip": "Set the DisplayText property value to select time, The pre-label explicit rules are consistent with the BootstrapInput component of the [portal]", - "DisabledTitle": "Disable", - "DisabledIntro": "When you set the IsDisabled property value to true, the component suppresses input", - "ShowSidebarTitle": "Sidebar with shortcuts", - "ShowSidebarIntro": "When you set the ShowSidebar property value to true, the component displays the shortcut sidebar", - "MinValueTitle": "Set the range of values", - "MinValueIntro": "Set the MinValue property value to the MaxValue limit the range of optional values, in this case setting the range to 45days", - "BlockAutoCloseTitle": "Auto close", - "BlockAutoCloseIntro": "Auto close the popup window by se AutoClose to true", - "BlockAutoCloseDesc": "AutoClose The default value is true When selecting a date, the pop-up window will automatically close. When the value is set to false, the pop-up window needs to be closed when the confirm button is clicked", - "BlockGroupTitle": "InputGroup", - "BlockGroupIntro": "Used in the built-in BootstrapInputGroup and in combination with BootstrapInputGroupLabel", - "Att1": "Whether to display the front label", - "Att2": "Whether to display the shortcut sidebar", - "Att3": "The front label displays text", - "Att4": "Date format string The default is yyyyy-MM-dd", - "Att6": "Whether to disable False by default", - "Att8": "The value of the component is a two-way binding with ValueChanged", - "Att9": "Gets or sets Component display mode The default is the month-to-day display mode", - "AttrAutoClose": "Whether auto close the popup window", - "AttrIsEditable": "Is manual date entry allowed", - "Event1": "Confirm that the button calls back the delegate", - "Event2": "Callback delegates are used for bidirectional binding when component values change", - "BlockGroupLabel": "Prev", - "BlockGroupSuffixLabel": "Suffix", - "DisplayText": "Select the time", - "SubmitText": "Save", - "Value": "Value", - "Value.Required": "{0} is required.", - "ValidateFormValue": "DateTimePick", - "DateTimePickerTitle": "Select the time", - "DateTimePickerIntro": "Select the hour, minute, and second on the clock dial to obtain the current date and time.", - "DayTemplateTitle": "Custom date display", - "DayTemplateIntro": "By setting the DayTemplate custom display template, the disabled date template is DayDisabledTemplate", - "AttrShowLunar": "Whether to display ChineseLunar", - "AttrShowSolarTerm": "Whether to display the 24 solar terms", - "AttrShowFestivals": "Whether to display festival", - "AttrShowHolidays": "Whether to display legal holidays", - "Feature": "Feature", - "FeatureShowLunar": "Lunar", - "FeatureShowSolarTerm": "Solar Term", - "FeatureShowFestivals": "Festivals", - "FeatureShowHolidays": "Holidays", - "FeatureIntro": "Holidays Functional dependency component packages BootstrapBlazor.Holiday [Portal]", - "FeatureFestivalIntro": "The festival function is provided by the built-in service ICalendarFestivals in the component library. The built-in default implementation provides 12 Gregorian festivals and 7 lunar festivals, which can be extended through custom festival services. For detailed function introductions, please refer to the Festival Services documentation [Portal]", - "DisableOptions": "Disable options", - "DisableWeekend": "Disable weekend", - "DisableToday": "Disable today", - "DisableDayCallbackTitle": "Customize the disable date", - "DisableDayCallbackIntro": "Customize which days need to be disabled by setting OnGetDisabledDaysCallback", - "DisableDayCallbackTip": "
  • When a component is assigned a disabled date, the component still displays its value by default. If you need to display the disabled date as an empty string, please set DisplayDisabledDayAsEmpty=\"true\"
  • This example uses slightly more complex logic to determine the disabled date. The disabled date is a combination of conditions, so when the conditions change, you need to call the component instance method ClearDisabledDays to clear the internal cache

In this example, the first component has DisplayDisabledDayAsEmpty=\"true\" set, so the component value is DateTime.Today and the displayed value is empty string

In this example, the data type of the second component is non-nullable type. Since the default value of the parameter AutoToday is true So even if the initial value is DateTime.MinValue, its display value is DateTime.Today Even when today is disabled, it is still displayed. If you need to display an empty string, please set DisplayDisabledDayAsEmpty=\"true\"
", - "DisableDayCallbackAllowNullDisplayText": "DateTime?", - "DisableDayCallbackNotAllowNullDisplayText": "DateTime", - "FeatureShowLunarIntro": "ShowLunar Whether to display the lunar calendar", - "FeatureShowSolarTermIntro": "ShowSolarTerm Whether to display the 24 solar terms", - "FeatureShowFestivalsIntro": "ShowFestivals Whether to display festivals", - "FeatureShowHolidaysIntro": "ShowHolidays Whether to display holidays", - "OnGetDisabledDaysCallbackEvent": "Disable date callback method", - "AttrEnableDisabledDaysCache": "Whether to enable custom disabled date cache", - "AttrDisplayDisabledDayAsEmpty": "Display disabled date as an empty string", - "AttrFirstDayOfWeek": "The first day of the week" - }, - "BootstrapBlazor.Server.Components.Samples.TimePickers": { - "Title": "TimePicker", - "Description": "Used to select or enter a timespan", - "OnConfirmTitle": "Select any point in time", - "OnConfirmIntro": "You can choose any time", - "HasSecondsTitle": "Hide seconds", - "HasSecondsIntro": "Whether to display or hide the seconds control", - "TimeTitle": "Data is bound in both directions", - "TimeIntro": "Click the confirm button to select the box value consistent with the text box value" - }, - "BootstrapBlazor.Server.Components.Samples.ClockPickers": { - "Title": "ClockPicker", - "Description": "Select a time by dragging the watch needle", - "BindValueTitle": "bind", - "BindValueIntro": "By settingIsAutoSwitch=\"false\" to disable automatic switching of hour, minute, and stopwatch dial functions", - "AutoSwitchText": "Whether to automatically switch the dial", - "HasSecondsTitle": "Do not set the number of seconds", - "HasSecondsIntro": "By settingShowSecond=\"false\" to not display the second hand dial", - "ShowMinuteTitle": "Do not set minutes", - "ShowMinuteIntro": "By settingShowMinute=\"false\"to not display the minute dial", - "ShowClockScaleTitle": "Display dial scale", - "ShowClockScaleIntro": "By settingShowClockScale=\"true\" to display the dial scale", - "IsAutoSwitchAttr": "Does it automatically switch between hours, minutes, and seconds", - "ShowClockScaleAttr": "Is the dial scale displayed", - "ShowMinuteAttr": "Is the minute displayed", - "ShowSecondAttr": "Is seconds displayed" - }, - "BootstrapBlazor.Server.Components.Samples.Editors": { - "EditorsTitle": "Editor", - "EditorsDescription": "Convert the entered text into html code snippets", - "EditorsTips": "The Editor component is a secondary package of Summernote component, such as If you need to use the localization function, please download the corresponding language pack from the official website and quote it by yourself. zh-CN en-US has been built in the required css JavaScript dynamically loaded on demand. If you edit too much content, signalR communication interruption may be triggered. Please adjust the HubOptions configuration.", - "EditorsUploadDesc": "Upload File Callback", - "EditorsUploadDesc2": "After the component sets a callback, when a file is selected for upload within the component, it will be returned to the caller as an instance of EditorUploadFile. The Stream property allows saving to the server or directly storing to Cloud Object Storage (OSS). The callback return value is the Url used for previewing the stored file.", - "EditorNormalTitle": "Basic usage", - "EditorNormalIntro": "The default rendering is div and it becomes a rich text edit box when clicked", - "EditorNormalDescription": "Set the IsEditor attribute value to control whether the component defaults to div or editor", - "EditorNormalDiv": "I am a normal div click and can’t edit", - "EditorPlaceholderTitle": "Custom prompt message", - "EditorPlaceholderIntro": "The prompt message when a null value is set by setting the Placeholder attribute", - "EditorPlaceholderDescription": "The default prompt is Edit after clicking", - "EditorIsEditorTitle": "Display as a rich text edit box by default", - "EditorIsEditorIntro": "Set the component to be directly displayed as a rich text edit box by setting the IsEditor property. When uploading an image, you can get the image information through the OnFileUpload callback method", - "EditorHeightTitle": "Custom height", - "EditorHeightIntro": "Set the height of the component by setting the Height property", - "EditorOnValueChangedTitle": "Two-way binding", - "EditorOnValueChangedIntro": "In actual combat, two-way binding to Value automatically obtains the editing content of the client's rich text box in the background", - "EditorOnValueChangedDescription": "Use bind-Value to bind the backend properties of EditorValue in two ways. After editing in the edit box, click the Finish button, and then enter the text box below. Show edited result", - "EditorCustomerToolbarButtonsTitle": "Customize the extended edit box button", - "EditorCustomerToolbarButtonsIntro": "Customize the extension of the edit box toolbar by setting the CustomerPluginItems property, and do the function by setting the OnClickPluginItem callback delegate", - "EditorCustomerToolbarButtonsDescription": "In this example, two buttons are added to the toolbar by extending the CustomerPluginItems property. Click the button to pop up the SweetAlert modal box, click the modal box confirmation button and insert the text box A piece of content", - "EditorToolbarItemsTitle": "Customize the rich text edit box of the toolbar", - "EditorToolbarItemsIntro": "Customize the toolbar content by setting the ToolbarItems property. For the currently supported toolbar values, please refer to Summernote Official website", - "EditorToolbarItemsDescription": "In this example, by setting the ToolbarItems property, the default avaiLabel toolbar buttons are changed", - "EditorSubmitTitle": "Show submit", - "EditorSubmitIntro": "Use ShowSubmit control the Submit button display or not", - "EditorSubmitDescription": "ShowSubmit The default value is true to display the submit button. The OnValueChanged callback method is triggered after the submit button is clicked on the design. This design greatly improves performance and saves server computing Force, after setting the value to false, it will use the summernode library onChange to trigger, which is applicable to the scene where the edited content needs to be obtained in real time", - "Att1": "Prompt message when the value is empty", - "Att1DefaultValue": "Click to edit", - "Att2": "Whether to directly display as a rich text edit box", - "AttrShowSubmit": "Whether show the submit button", - "Att3": "Component height", - "Att4": "Rich Text Box Toolbar Tool", - "Att5": "Custom button", - "DoMethodAsyncTitle": "Instance Method", - "DoMethodAsyncIntro": "Call the instance method, please refer summernote api", - "DoMethodAsyncDescription": "In this example, by setting the ToolbarItems property, the default available toolbar buttons are changed", - "EditorEmptyPlaceholder": "Customize the prompt message for empty values", - "EditorOnValueChangedLabel": "Show edit content:", - "EditorOnValueChangedUpdateValue": "Changed value", - "EditorOnValueChangedInitValue": "Initial value Test", - "ToolTip1": "This is the tip of plugin1", - "ToolTip2": "This is the tip of plugin2", - "Swal1Title": "A pop-up window will pop up after clicking the plugin1 button", - "Swal1Content": "After clicking the plug-in button, the window will pop up and confirm before proceeding to the next step.", - "Ret1": "
Data returned from plugin1
", - "Swal2Title": "After clicking the plugin2 button, a pop-up window will appear", - "Swal2Content": "After clicking the plug-in button, the window will pop up and confirm before proceeding to the next step.", - "Ret2": "Data returned from plugin2", - "DoMethodAsyncButton1": "Insert Html", - "DoMethodAsyncButton2": "Update to H2", - "DoMethodAsyncButton3": "Insert Image", - "DoMethodAsyncButton4": "Get Code", - "DoMethodAsyncPasteHTML": "Here is the content inserted by the external button", - "OnFileUploadAttribute": "File upload callback method" - }, - "BootstrapBlazor.Server.Components.Samples.EditorForms": { - "Title": "EditorForm", - "Description": "Edit forms are automatically rendered through the bound data model", - "SubDescription": "EditorForm component is a very useful component that, when editing data, simply assigns the Model property.", - "EditorFormTips1": "The binding model automatically generates all properties by default, and you can change to not automatically build by setting AutoGenerateAllItem", - "EditorFormTips2": "If you don't need to edit the columns, set the Editable, the default is true build editing components", - "EditorFormTips3": "Complex edit columns, set up EditTemplate templates, and edit custom components", - "EditorFormTips4": "The buttons in the form can be set up multiplely, just set the buttons Buttons template", - "NormalTitle": "Basic usage", - "NormalIntro": "By binding TModel data model, editable forms for individual fields of the model are automatically generated", - "NormalDescription": "Directly bind the model model, setting the Educationcompletefield not to appear", - "ValidateFormTitle": "Turn on data validation", - "ValidateFormIntro": "Data compliance checks are implemented through nested ValidateForm components", - "ValidateFormTips1": "The component is built into the ValidateForm to turn on data compliance checks, and hobbyfields use the EditTemplate template to customize the component to render the data", - "ValidateFormTips2": "Make the birthday field read-only by setting the Readonly property", - "AutoGenerateTitle": "It is not automatically generated by default", - "AutoGenerateIntro": "By setting the property AutoGenerateAllItem value of false the property is prohibited from being automatically generated, and the display property is controlled by setting the FieldItems internal collection", - "SkipValidateTitle": "The components within the form component bind fields that are not model-independent", - "SkipValidateIntro": "By setting the property AutoGenerateAllItem value of false the property is prohibited from being automatically generated, and the display property is controlled by setting the FieldItems internal collection", - "ItemsPerRowTitle": "Set the number of controls displayed per row", - "ItemsPerRowIntro": "Control the layout by setting the property values ItemsPerRow", - "ItemsPerRowDescription": "This example sets ItemsPerRow=3 show 3 components per row", - "AlignmentTitle": "Custom rendering component types", - "AlignmentIntro": "Control the rendering component type by setting the CompnentType property values", - "AlignmentTips1": "inline layout mode aligns the labels in the form right by setting the LabelAlign=\"Alignment.Right\"", - "AlignmentTips2": "In layout mode, adjust the label width by setting the value of LabelWidth. If the global style variable --bb-row-label-width is not set by default, the default value is 120px", - "AlignmentTips3": "Buttons template you can nest div and style text-end align the right side of the button", - "EditorFormAttributeTitle": "EditorItem Attribute", - "Att1": "The currently bound data model", - "Att2": "Bind column templates", - "Att3": "Button template", - "Att4": "Whether to display label", - "Att5": "Whether to generate all properties", - "Att6": "The number of components is displayed per row", - "Att7": "Set how components are laid out", - "Att8": "Label alignment in Inline layout mode", - "Att9": "The current bound data value", - "Att10": "Binding column data types", - "Att11": "Whether to allow editing", - "Att12": "Whether to read only", - "Att13": "Edit the column's front label name", - "Att14": "Column editing template", - "LabelWidthAttr": "Label width", - "IsDisplay": "Shown as Display component", - "ShowLabelTooltip": "Show complete information when mouse hover over the label", - "GroupBoxTitle": "An example of a form", - "SubButtonText": "Submit", - "TestName": "Tom", - "TestAddress": "The test address", - "AutoGenerateDescription": "In this example, by setting the autoGenerate AllItem value to false, turning off auto-generation, and rendering the form editing by manually adding two EditoItem edits", - "SkipValidateDescription": "In some cases, the value of some columns in the form may be a secondary classification, etc., and you need to know the information for a level 1 classification, at which point the first-level classification requires additional components to render if Select, which is independent of the current context binding model Model, which requires that you set the SkipValidate value to true, turn off model validation for this component", - "IsDisplayTitle": "Readonly Form", - "IsDisplayIntro": "Make the entire form non-editable by setting IsDisplay=\"true\"" - }, - "BootstrapBlazor.Server.Components.Samples.FloatingLabels": { - "FloatingLabelsTitle": "FloatingLabel", - "FloatingLabelsSubtitle": "Enter characters with the mouse or keyboard", - "FloatingLabelNormalTitle": "Basic usage", - "FloatingLabelNormalIntro": "Provides basic text entry components", - "FloatingLabelDisplayTextTitle": "One-way binding data", - "FloatingLabelDisplayTextIntro": "Displays the value of variables within the component", - "FloatingLabelBindValueTitle": "Client validation", - "FloatingLabelBindValueIntro": "Check data validity and prompt automatically based on custom validation rules", - "FloatingLabelBindValueDisplayText": "Client validation", - "FloatingLabelPasswordTitle": "The password box", - "FloatingLabelPasswordIntro": "By setting the property type value to password the password input box that is blocked by * after entering text", - "FloatingLabelPasswordDescription": "In order to support more text box properties this component can be written directly to type's 'email' type'number' type'phone' and so onhttpl5 all property values supported by the new standard, the component does not set the type value using the default type='text'", - "FloatingLabelPasswordDisplayText": "The password box", - "FloatingLabelFormatStringTitle": "Generic binding", - "FloatingLabelFormatStringIntro": "BootstrapInput component bidirectional binding value is generic, in this case a two-way binding of an int type value", - "FloatingLabelFormatStringDisplayText": "Generic binding", - "FloatingLabelFormatStringDiv1": "The binding value: {0}", - "FloatingLabelDisabledTitle": "Disable", - "FloatingLabelDisabledIntro": "When you set the IsDisabled property value to true, the component suppresses input", - "FloatingLabelDisabledDisplayText": "Disable", - "FloatingLabelFormatterTitle": "Custom format", - "FloatingLabelFormatterIntro": "When you set the FormatString property value to yyyy-MM-dd, the component displays a time format of the year and day", - "FloatingLabelFormatterDiv2": "Set up", - "FloatingLabelFormatterDescription": "The BootstrapInput component binds byte[] array and formats it as an example of base64 encoded string", - "FloatingLabelFormatterDisplayText": "An array of bytes", - "FloatingLabelsTestName": "Tom", - "FloatingLabelsChildContent": "Validate the control", - "FloatingLabelsShowLabel": "Whether to display the front label", - "FloatingLabelsGroupBox": "Whether to display group box style", - "FloatingLabelsDisplayText": "The front label displays text", - "FloatingLabelsFormatString": "The numerically formatted string", - "FloatingLabelsFormatter": "TableHeader instance", - "FloatingLabelsType": "The type of control", - "FloatingLabelsIsDisabled": "Whether to disable, Default is fasle", - "FloatingLabelGroupBoxTitle": "GroupBox", - "FloatingLabelGroupBoxIntro": "By setting IsGroupBox=\"true\". Group box wrapper label" - }, - "BootstrapBlazor.Server.Components.Samples.Inputs": { - "InputsBaseUsage": "Basic usage", - "InputsTitle": "Input", - "InputsDescription": "Enter characters with the mouse or keyboard", - "InputsNormalIntro": "Provides basic text entry components", - "InputsNormalDescription": "You can set the IsAutoFocus whether to automatically get focus, and the components that are last executed when multiple text boxes set auto-focus will get focus", - "InputsColorTitle": "Color", - "InputsColorIntro": "Change the color of the text border by setting Color", - "InputsKeyboardTitle": "Keyboard response", - "InputsKeyboardIntro": "Using OnEnterAsync OnEscAsync callback delegates to respond to the Enter ESC keystrokes", - "InputsPlaceholderTitle": "One-way binding data", - "InputsPlaceholderIntro": "Displays the value of variables within the component", - "InputsLabelsTitle": "Bind data in both directions", - "InputsLabelsIntro": "Binding variables within a component, data is automatically synchronized", - "InputsLabelsDescription": "when BootstrapInput components turn on bidirectional binding, the Display/DisplayName label value is automatically fetched based on the bound Model property value and appears as a pre-Label, by DisplayText Properties can customize the display of pre-labels, or turn off the display of pre-labels through the ShowLabel property", - "InputsValidateFormTitle": "Client valiation", - "InputsValidateFormIntro": "Check data validity and prompt automatically based on custom validation rules", - "InputsValidateFormTips1": "When using bidirectional binding, you will automatically look for the key value the resource file with a value of {FieldName}.PlaceHolder the corresponding value as placeholder shows that in this example, the placeholder value is the Name.PlaceHolder key corresponding value in the resource filerequired non-empty ", - "InputsPasswordTitle": "The password box", - "InputsPasswordIntro": "By setting the property type value to password the password input box that is blocked by * after entering text", - "InputsPasswordDescription": "In order to support more text box properties this component can be written directly to type='email' type='number' type='phone' and so onhtml5 all property values supported by the new standard, the component does not set the type value using the default type='text'", - "InputsGenericTitle": "Generic binding", - "InputsGenericIntro": "BootstrapInput component bidirectional binding value is generic, in this case a two-way binding of an int type value", - "InputsGenericBindValue": "The binding value", - "InputsDisabledTitle": "Disable", - "InputsDisabledIntro": "When you set the IsDisabled property value to true, the component suppresses input", - "InputsFormatStringTitle": "Custom format", - "InputsFormatStringIntro": "When you set the FormatString property value to yyyy-MM-dd, the component displays a time format of the year and day", - "InputsPassword2Title": "The password box", - "InputsPassword2Intro": "Use the BootstrapPassword component", - "InputsTrimTitle": "Trim", - "InputsTrimIntro": "Use IsTrim=\"true\" to automatically trim white space when entering content", - "TrimDescription": "The front and back spaces in the component will be trimmed when set IsTrim to true", - "InputsOnInputTitle": "Fires when the value of the text box changes", - "InputsOnInputIntro": "Use UseInputEvent=\"true\" to trigger when the value of the text box changes, used for key-by-key response occasions", - "OnInputDescription": "The ValueChanged callback will be trigger when the keyboard is pressed if set the parameter UseInputEvent to true", - "InputsAtt1": "Validate the control", - "InputsAtt2": "Whether to display the front label", - "InputsAtt3": "The front label displays text", - "InputsAtt4": "Color", - "InputsAtt5": "The numerically formatted string", - "InputsAtt6": "TableHeader instance", - "InputsAtt7": "The type of control", - "InputsAtt8": "The user presses enter to call back the delegate", - "InputsAtt9": "The user presses the Esc key to call back the delegate", - "InputsAtt10": "Whether to disable Fasle by default", - "InputsAtt11": "Whether to get the focus automatically Default is fasle", - "IsSelectAllTextOnFocus": "Whether auto select the all text after focus", - "IsSelectAllTextOnEnter": "Whether auto select the all text after presses enter", - "SelectAllTextAsync": "Select the all text method", - "ValidateRules": "Customer validation collection", - "NormalPlaceHolder": "Please enter ...", - "IsSelectAllTextOnFocusLabel": "Select all on focus", - "IsSelectAllTextOnEnterLabel": "Select all on enter", - "InputsKeyboardTips1": "Press the keyboard Enter or Esc test", - "InputsKeyboardTips2": "Execute @ref.SelectAllTextAsync() method select the all text", - "PlaceHolder": "Please enter ...", - "InputsKeyboardLog": "The key triggers the current text box value", - "InputsPlaceholderSpan": "One-way binding", - "InputsLabelsDivider1": "Custom labels", - "InputsLabelsTips1": "Set the DisplayText value to custom label", - "InputLabelsText": "Custom labels", - "InputsLabelsDivider2": "Occupants", - "InputsLabelsTps2": "The value of DisplayText is displayed when ShowLabel is true, regardless of whether the value is set", - "InputsLabelsDivider3": "Do not occupy seats", - "InputsLabelsTips3": "The value of DisplayText is not displayed when the ShowLabel is false", - "TestName": "Tom", - "InputsFormatStringSetting": "Set up", - "InputsFormatStringTips": "The BootstrapInput component binds byte[] array and formats it as an example of base64 encoded string", - "UseInputEvent": "Whether use oninput event when bind-value", - "IsTrim": "automatically trim white space when entering content", - "ClearableTitle": "Clearable", - "ClearableIntro": "By setting the Clearable=\"true\" parameter, a small Clear button will be displayed when the component gains focus or when the mouse hovers over it." - }, - "BootstrapBlazor.Server.Components.Samples.InputNumbers": { - "InputNumbersTitle": "InputNumber", - "InputNumbersDescription": "Only standard numeric values are allowed, and custom ranges and other advanced features are supported", - "InputNumbersNormalTitle": "Basic usage", - "InputNumbersNormalIntro": "The Numer numeric type displays a text box, and the mobile side automatically pops up the numeric keypad", - "InputNumbersRangeTitle": "Interval limit usage", - "InputNumbersRangeIntro": "Set the Max Min to control the range of value intervals 1-10", - "InputNumbersNullableTitle": "Nullable data type", - "InputNumbersNullableIntro": "When binding to a data type that can be empty, the component allows empty strings. When inputting illegal data such as 1+2+3e, the component UI value is an empty string", - "InputNumbersShowButtonTitle": "Control button", - "InputNumbersShowButtonIntro": "Set the ShowButton parameter to control whether the buttons are displayed to increase or decrease", - "InputNumbersShowButtonDescription": "This example sets a maximum of 10 minimum value of 0", - "InputNumbersStepTitle": "Custom steps", - "InputNumbersStepIntro": "Set the Step parameter to control the increase or decrease in steps", - "InputNumbersColorTitle": "Color", - "InputNumbersColorIntro": "Set the Color parameter to customize the button color", - "InputNumbersDateTypeTitle": "Data type", - "InputNumbersDateTypeIntro": "This component uses generic support the underlying data type int short long float double decimal", - "InputNumbersDisabledTitle": "Disable", - "InputNumbersDisabledIntro": "When you set the IsDisabled property value to true, the component suppresses input", - "InputNumbersValidateFormTitle": "The label is displayed", - "InputNumbersValidateFormIntro": "When a component binds in both directions, it automatically determines whether label text is displayed based on the conditions", - "InputNumbersValidateFormDescription": "The pre-label explicit rules are consistent with the BootstrapInput component of the > of the [The portal]", - "InputNumbersAtt1": "The current value", - "InputNumbersAtt2": "Maximum values can be allowed", - "InputNumbersAtt3": "Minimum values can be allowed", - "InputNumbersAtt4": "Step", - "InputNumbersAtt5": "Whether to disable,Default is fasle", - "InputNumbersAtt6": "Whether to display the front label", - "InputNumbersAtt7": "The front label displays text", - "InputNumbersStep1": "The step defaults to 1", - "InputNumbersStep10": "The step defaults to 10", - "InputNumbersStep0.1": "The step defaults to 0.1", - "InputNumbersColorDescription1": "Show button", - "InputNumbersColorDescription2": "No button", - "InputNumbersValidateFormDivider1": "Bidirectional binding displays labels", - "InputNumbersValidateFormDivider2": "Bidirectional bindings do not display labels", - "InputNumbersValidateFormDivider3": "Custom DisplayText", - "InputNumbersValidateFormInputText": "Customization", - "InputNumbersUseInputEventTitle": "OnInput", - "InputNumbersUseInputEventIntro": "Component uses OnInput event for value updates" - }, - "BootstrapBlazor.Server.Components.Samples.InputGroups": { - "InputGroupsTitle": "InputGroup", - "InputGroupsDescription": "Input can add labels and buttons before or after it to make as a group", - "InputGroupsNormalTitle": "Basic usage", - "InputGroupsNormalIntro": "Add a label before the Input, or Add a Button after the Input", - "InputGroupsWidthTitle": "Custom Width", - "InputGroupsWidthIntro": "Customize label width by setting Widthparameters", - "InputGroupsMultipleTitle": "Add multiple components", - "InputGroupsMultipleIntro": "The InputGroup can have lots of children", - "InputGroupsSelectTitle": "Add Select", - "InputGroupsSelectIntro": "Add Select component to the InputGroup", - "InputGroupsValidateFormTitle": "ValidateForm", - "InputGroupsValidateFormIntro": "Inside ValidateForm", - "InputGroupsNormalUserName": "UserName", - "InputGroupsMultipleDistance": "Distance", - "InputGroupsCheckboxTitle": "Checkbox", - "InputGroupsCheckboxIntro": "Add Checkbox or CheckboxList to the InputGroup", - "InputGroupsRadioTitle": "Radio", - "InputGroupsRadioIntro": "Add RadioList to the InputGroup", - "InputGroupsSlideButtonTitle": "SlideButton", - "InputGroupsSlideButtonIntro": "Add SlideButton to the InputGroup", - "InputGroupsDateTimePickerTitle": "DateTimePicker/Range", - "InputGroupsDateTimePickerIntro": "Add DateTimePicker or DateTimeRange to the InputGroup", - "InputGroupsDropdownTitle": "Dropdown", - "InputGroupsDropdownIntro": "Add Dropdown to the InputGroup", - "InputGroupsStatusText1": "CheckboxItem", - "InputGroupsSwitchTitle": "Switch", - "InputGroupsSwitchIntro": "Add Switch to the InputGroup" - }, - "BootstrapBlazor.Server.Components.Samples.Markdowns": { - "MarkdownsTitle": "Markdown", - "MarkdownsDescription": "A text editor that provides support for the Markdown syntax", - "MarkdownsNote": "If you edit too much content, signalR communication interruption may be triggered. Please adjust the HubOptions configuration.", - "MarkdownsCss": "CSS file", - "MarkdownsCssText": "dynamic import css", - "MarkdownsJs": "JS file", - "MarkdownsJsText": "dynamic import JavaScript", - "MarkdownsLocalizationTipsTitle": "Localization", - "MarkdownsLocalizationTips": "The component has a built-in Chinese to switch between current cultural information for Chinese", - "MarkdownsNormalTitle": "Common usage", - "MarkdownsNormalIntro": "The default setting", - "MarkdownsNormalDescription": "Once you Markdown code, click on the relevant area below to display the data", - "MarkdownsAsyncTitle": "Load the data asynchronously", - "MarkdownsAsyncIntro": "Get Markdown display with Webapi", - "MarkdownsAsyncButtonText": "load", - "MarkdownsCommonPropertyTitle": "Common properties", - "MarkdownsCommonPropertyIntro": "Change the default parameters", - "MarkdownsCommonPropertyDescription": "Set the minimum height of the Markdown Editor 300px, the default height 500px, indicating that this is the Markdown, tab display, the default display of the WYSIWYG page", - "MarkdownsCommonPropertyPlaceHolder": "This is Markdown", - "MarkdownsIsViewerTitle": "Browser mode", - "MarkdownsIsViewerIntro": "Simple browsing mode, not editable", - "MarkdownsIsDarkTitle": "Dark mode", - "MarkdownsIsDarkIntro": "Enable dark mode", - "MarkdownsEnableHighlightTitle": "Enable the code highlighting plugin", - "MarkdownsEnableHighlightIntro": "Enable plugins with EnableHighlight=true, highlighting using ``` followed by code formatting, and js highlight syntax for example ```js", - "MarkdownsBrowserTitle": "External operation Markdown", - "MarkdownsBrowserIntro": "Using APIs to manipulate the Editor from the outside, the specific API reference tui.editor api", - "MarkdownsBrowserButtonText1": "Insert a line of text", - "MarkdownsBrowserButtonText2": "Insert a picture", - "MarkdownsBrowserButtonText3": "The cursor moves to the end", - "MarkdownsBrowserText": "coconut palm", - "MarkdownsValidateTitle": "Validate", - "MarkdownsValidateIntro": "Check data validity and prompt automatically based on custom validation rules", - "MarkdownsValidateSubmitText": "Save", - "MarkdownString": "Test", - "MarkdownsIsViewerDescription": "Set the markdown editor to browse-only mode, IsViewer='true'", - "Att1": "Control height", - "Att2": "The minimum height of the control", - "Att3": "The interface displayed at initialization", - "Att4": "Preview mode", - "Att5": "UI language", - "Att6": "Prompt information", - "Att7": "Whether it is pure browsing mode", - "Att8": "Whether it is dark mode", - "Att9": "Whether code highlighting is enabled" - }, - "BootstrapBlazor.Server.Components.Samples.MultiSelects": { - "MultiSelectsTitle": "MultiSelect", - "MultiSelectsDescription": "When you have multiple options, use the drop-down menu to present and provide a search for multiple choices", - "MultiSelectColorTitle": "Color", - "MultiSelectColorIntro": "Multi-select drop-down boxes in a variety of colors are available", - "MultiSelectIsSingleLineTitle": "Single line display", - "MultiSelectIsSingleLineIntro": "Make the component always render in one line by setting IsSingleLine=\"true\"", - "MultiSelectIsSingleLineDescription": "When there are too many candidates, the component is laid out horizontally, and a horizontal scroll bar is displayed when the mouse is hovering over the component for data scrolling.", - "MultiSelectBindingStringTitle": "A two-way binding value string", - "MultiSelectBindingStringIntro": "Bind a comma string-splitting string", - "MultiSelectBindingStringDescription": "
The MultiSelect component data source Items and selected values the SelectItemsValue support bidirectional binding;In this example, the SelectItemsValue variable by binding bidirectionally, and chooses to change its value through the drop-down box.
", - "MultiSelectBindingCollectionTitle": "A collection of bidirectional binding values", - "MultiSelectBindingCollectionIntro": "Bind a generic a collection of IEnumerable", - "MultiSelectBindingCollectionDescription": "In this example, the SelectArrayValues collection variable by binding bidirectionally, and selects to change its value through the drop-down box", - "MultiSelectBindingNumberTitle": "An array of two-way bound values", - "MultiSelectBindingNumberIntro": "Bind an array int[]", - "MultiSelectBindingNumberDescription": "In this example, an array variable SelectedIntArrayValues selected by a bidirectional binding, selects to change its value through a drop-down box", - "MultiSelectBindingEnumCollectionTitle": "Bidirectional binding enumerates the collection", - "MultiSelectBindingEnumCollectionIntro": "Bind a generic a collection of IEnumerable", - "MultiSelectBindingEnumCollectionDescription": "In this example, by binding SelectEnumValues collection variables in both directions, you choose to change their values through the drop-down box, and you do not need to set the Items parameter when enumeratingtype, the added feature is that the component tries to find resource files or DisplayAttribute And DescriptionAttribute labels attempt local translation, such as this example when switching to Chinese enumerates the values elementary schoolmiddle school ", - "MultiSelectSearchTitle": "Search function", - "MultiSelectSearchIntro": "Turn on search by setting the ShowSearch value", - "MultiSelectSearchDescription": "In this example, the search callback delegate method is set onSearchTextChanged to customize search results if the display text is used internally to make a fuzzy match when not set", - "MultiSelectFlagsEnumTitle": "Flags Enum", - "MultiSelectFlagsEnumIntro": "When the binding value is an Enum data type, if it has a Flags tag, multiple selection mode is automatically supported", - "MultiSelectGroupTitle": "Grouping", - "MultiSelectGroupIntro": "Alternatives are presented in groups", - "MultiSelectDisableTitle": "Disable the feature", - "MultiSelectDisableIntro": "Set the component disabled state by setting the IsDisabled value", - "MultiSelectDisableDescription": "The component does not respond when the state is disabled", - "MultiSelectOptionChangeTitle": "Events when the option changes", - "MultiSelectOptionChangeIntro": "Get the currently selected data set change event by setting the onSelectedItemsChanged callback method by setting", - "MultiSelectClientValidationTitle": "Client validation", - "MultiSelectClientValidationIntro": "When the drop-down box is not selected, it is blocked when the submit button is clicked.", - "MultiSelectClientValidationDescription": "When built into the ValidateForm component, client authentication is automatically turned on, and the binding model has Required tags", - "MultiSelectDisplayLabelTitle": "The label is displayed", - "MultiSelectDisplayLabelIntro": "When a component binds in both directions, it automatically determines whether label text is displayed based on the conditions", - "MultiSelectDisplayLabelDescription": "The pre-label explicit rules are consistent with the BootstrapInput component of the of the [The portal]", - "MultiSelectVeryLongTextTitle": "Options for extra-long text", - "MultiSelectVeryLongTextIntro": "The candidate text is particularly long", - "MultiSelectButtonTitle": "Full and reverse buttons", - "MultiSelectButtonIntro": "By setting ShowToolbar value settings component displays the toolbox, by setting ShowDefaultButtons value settings component displays the default buttons, by setting ShowSearch value settings component displays the search box", - "MultiSelectMaxMinTitle": "Set the maximum and minimum number of options", - "MultiSelectMaxMinIntro": "Set the limit on the number of options available to components by setting the max Min values", - "MultiSelectExpandButtonTitle": "Extend the toolbar button", - "MultiSelectExpandButtonIntro": "Customize features by setting ButtonTemplate custom toolbar buttons", - "MultiSelectCascadingTitle": "Cascading bindings", - "MultiSelectCascadingIntro": "The second drop-down box dynamically populates the content by selecting the different options for the first drop-down box.", - "MultiSelectCascadingDescription": "In this example, clicking on the first drop-down box allows you to get the data source for the second multi-box by asynchronous means, and after assigning, call StateHasChanged to re-render the multi-box ", - "MultiSelectItemTemplateTitle": "Item Template", - "MultiSelectItemTemplateIntro": "customer item template by set ItemTemplate", - "MultiSelectDisplayTemplateTitle": "Display Template", - "MultiSelectDisplayTemplateIntro": "customize display template by set DisplayTemplate", - "MultiSelectPopoverTitle": "Popover dropdown menu", - "MultiSelectPopoverIntro": "Set IsPopover to true, use popover render UI prevent The dropdown menu cannot be fully displayed because the parent container is set to overflow: hidden", - "MultiSelectsAttribute_ShowLabel": "Whether to display the front label", - "MultiSelectsAttribute_ShowCloseButton": "Whether to display the close button from label", - "MultiSelectsAttribute_ShowToolbar": "Whether to display the function button", - "MultiSelectsAttribute_ShowDefaultButtons": "Whether to display the default feature button", - "MultiSelectsAttribute_DisplayText": "The front label displays text", - "MultiSelectsAttribute_PlaceHolder": "The place-in display text when not selected", - "MultiSelectsAttribute_PlaceHolder_DefaultValue": "Click to multi-select ...", - "MultiSelectsAttribute_Class": "Style", - "MultiSelectsAttribute_Color": "Color", - "MultiSelectsAttribute_IsDisabled": "Whether to disable it", - "MultiSelectsAttribute_IsSingleLine": "Whether to display in a single line", - "MultiSelectsAttribute_Items": "The data collection", - "MultiSelectsAttribute_ButtonTemplate": "Extend the button template", - "MultiSelectsAttribute_ItemTemplate": "The template of selected item", - "MultiSelectsAttribute_IsFixedHeight": "Fix the control height", - "MultiSelectsEvent_OnSelectedItemsChanged": "This event is triggered when the drop-down option changes", - "MultiSelectsEvent_OnSearchTextChanged": "Call back this method when the search text changes", - "MultiSelectAdd": "Add", - "MultiSelectDecrease": "Decrease", - "MultiSelectClean": "Clear", - "MultiSelectClientValidationSubmit": "Submit", - "MultiSelectDisplayLabelShowLabel": "Bidirectional binding displays labels", - "MultiSelectDisplayLabelHideLabel": "Bidirectional bindings do not display labels", - "MultiSelectDisplayLabelCustomDisplayText": "Customize DisplayText", - "MultiSelectDisplayLabelCustomText": "Custom name", - "MultiSelectExpandButtonText": "Test", - "MultiSelectMaxMinMax": "You can select up to two options", - "MultiSelectMaxMinMin": "Select at least two options", - "MultiSelectSearchLog": "Search for text", - "MultiSelectVeryLongTextDisplayText": "Extra long text", - "MultiSelectOptionChangeLog": "Select the collection of items", - "MultiSelectIsEditableTitle": "Editable", - "MultiSelectIsEditableIntro": "Make the component editable by setting the IsEditable parameter", - "MultiSelectIsEditableDescription": "By setting the EditSubmitKey parameter, you can specify whether to submit via Enter or Space", - "MultiSelectVirtualizeTitle": "Virtualize", - "MultiSelectVirtualizeIntro": "Set IsVirtualize to true enable virtual scroll for large data", - "MultiSelectVirtualizeDescription": "Component virtual scrolling supports two ways of providing data through Items or OnQueryAsync callback methods", - "MultiSelectsAttribute_ShowSearch": "Whether to display the search box", - "MultiSelectsAttribute_IsVirtualize": "Wether to enable virtualize", - "MultiSelectsAttribute_DefaultVirtualizeItemText": "The text string corresponding to the first load value when virtual scrolling is turned on is separated by commas", - "MultiSelectGenericTitle": "Generic", - "MultiSelectGenericIntro": "Data source Items supports generics when using SelectedItem<TValue>" - }, - "BootstrapBlazor.Server.Components.Samples.Radios": { - "RadiosTitle": "Radio", - "RadiosDescription": "Single in a set of alternatives", - "RadiosNormalTitle": "Basic usage", - "RadiosNormalIntro": "Select selectors are recommended because the options are visible by default and should not be too many", - "RadiosDisableTitle": "Turn off the radio box", - "RadiosDisableIntro": "The unavailable status of the radio box is IsDisabled='true'", - "RadiosLabelTitle": "Label text", - "RadiosLabelIntro": "The radio box displays text", - "RadiosLabelText": "Button group", - "RadiosBindingTitle": "Bind data in both directions", - "RadiosBindingIntro": "Binding variables within a component, data automatically synchronized, binding an array of selectedItem types", - "RadiosVerticalTitle": "Vertical arrangement", - "RadiosVerticalIntro": "Make the components vertically arranged internally by setting the IsVertical", - "RadiosEnumTitle": "The binding enumeration type", - "RadiosEnumIntro": "You do not need to set up Items Value by binding both directions", - "RadiosEnumDescription": "By setting the IsAutoAddNullItem automatically adds the empty valueoption, and by setting the NullItemText the custom nulloption", - "RadiosEnumText": "null", - "RadiosColorTitle": "Color", - "RadiosColorIntro": "Change the component background color by setting the Color property", - "RadiosIsButtonTitle": "Button Radio", - "RadiosIsButtonIntro": "Set IsButton to True make the radio item display as Button", - "RadiosItemTemplateTitle": "ItemTemplate", - "RadiosItemTemplateIntro": "Set ItemTemplate for customer the item UI", - "RadiosDisplayText": "Displays text", - "RadiosNullItemText": "The empty value displays the text", - "RadiosIsDisabled": "Whether to disable it", - "RadiosIsVertical": "Whether it is vertically distributed", - "RadiosIsAutoAddNullItem": "Whether the binding automatically adds an empty value when the type is enumerated", - "RadiosItems": "Bind the data source", - "RadiosIsButton": "Display as button style", - "RadiosGroupName": "Group name", - "RadiosOnSelectedChangedEvent": "Call back this method when the check box state changes", - "RadiosLog1": "The component selects the value:", - "RadiosLog2": "The value is displayed:", - "RadiosLog3": "Component value:", - "RadiosItem1": "Option one", - "RadiosItem2": "Option two", - "RadiosAdd1": "Beijing", - "RadiosAdd2": "Shanghai", - "RadioListGenericTitle": "Generic List", - "RadioListGenericIntro": "Enable generic support by using the RadioListGeneric component with SelectedItem<TValue>", - "RadiosAutoSelectFirstWhenValueIsNullTitle": "AutoSelectFirst", - "RadiosAutoSelectFirstWhenValueIsNullIntro": "The selection of RadioList candidates can be controlled by setting the AutoSelectFirstWhenValueIsNull parameter. The default value of the parameter is true, which means that if the current value of the component is inconsistent with the value in the candidate, the first candidate is automatically selected. If it is set to false, all candidates will be unselected.", - "RadiosAutoSelectFirstWhenValueIsNull": "Whether to select the first candidate by default when the value is not null" - }, - "BootstrapBlazor.Server.Components.Samples.Rates": { - "RatesTitle": "Rate", - "RatesDescription": "Scoring components", - "RatesNormalTitle": "Basic usage", - "RatesNormalIntro": "Rate component represents the numeric level with 1 - 5 stars, and the value can be bound in both directions in the background by bind-Value Through the Rate component changes its value, the mouse swipe changes the value, and confirms its value when you click on the star", - "RatesDisableTitle": "Disable", - "RatesDisableIntro": "Disable components by setting IsDisable property to true", - "RatesReadOnlyTitle": "Readonly", - "RatesReadOnlyIntro": "Readonly components by setting IsReadonly property to true", - "RatesIconTitle": "Item Template", - "RatesIconIntro": "Set ItemTemplate and custom-rate custom the UI", - "RatesSwitchOn": "Disable", - "RatesSwitchOff": "Enable", - "RatesValue": "The component value", - "RatesIsDisabled": "Whether to disable the default value is false", - "RatesIsReadonly": "Whether to readonly the default value is false", - "RatesEvent1": "Call back the delegate when the value changes", - "RatesMax": "MaxValue", - "RatesItemTemplate": "ItemTemplate", - "RatesLog": "Star rating:", - "RatesCry": "Cry", - "RatesTear": "Tear", - "RatesSmile": "Smile", - "RatesSurprise": "Surprise", - "RatesGrin": "Grin", - "RatesShowValueTitle": "Show value", - "RatesShowValueIntro": "By setting ShowValue=\"true\" to show the value", - "RatesIsWrapTitle": "Wrap", - "RatesIsWrapIntro": "By setting IsWrap=\"true\" set to wrap. default value is not wrap", - "RatesIsWrap": "Wrap", - "RatesShowValue": "Show value" - }, - "BootstrapBlazor.Server.Components.Samples.Selects": { - "SelectsTitle": "Select", - "SelectsDescription": "When there are too many options, use the drop-down menu to present and select content", - "SelectsNormalTitle": "Select drop-down selection box", - "SelectsNormalIntro": "Drop-down selection boxes are available in a variety of colors", - "SelectsNormalDescription": "In this example, the first drop-down box does not have a Value bidirectional binding, so you only change when you select different options, and the remaining drop-down boxes share the same data source Items and bind Value values in both directions, changing together when you select different options", - "SelectsDisableTitle": "Select disables the drop-down box", - "SelectsDisableIntro": "Selector unavailable state", - "SelectsDisableOption": "The options in the drop-down box disable the example", - "SelectsBindingTitle": "Select two-way binding", - "SelectsBindingIntro": "The values in the text box change as you change the drop-down option by binding the Model.Name property to the component with Select", - "SelectsClearableTitle": "Clearable", - "SelectsClearableIntro": "You can clear Select using a clear icon", - "SelectsClearableDesc": "Cannot be a null integer. Setting IsClearable has no effect. Its default value is 0", - "SelectsBindingSelectedItemTitle": "Select two-way binding SelectItem type", - "SelectsBindingSelectedItemIntro": "The values in the text box change as you change the drop-down option by binding the SelectItem property to the component with Select .", - "SelectsCascadingTitle": "Select cascading binding", - "SelectsCascadingIntro": "The second drop-down box dynamically populates the content by selecting the different options for the first drop-down box.", - "SelectsCascadingButtonText1": "In Dialog", - "SelectsClientValidationTitle": "Select client validation", - "SelectsClientValidationIntro": "When the drop-down box is not selected, it is blocked when the submit button is clicked.", - "SelectsOption1": "Please select ...", - "SelectsOption2": "Beijing", - "SelectsOption3": "Shanghai", - "SelectsOption4": "Guangzhou", - "SelectsClientValidationButtonText2": "Submit", - "SelectsGroupTitle": "Grouping", - "SelectsGroupIntro": "Alternatives are presented in groups", - "SelectsGuidTitle": "The binding generic is the Guid structure", - "SelectsGuidIntro": "The component binding value is an example of a Guid structure", - "SelectsDisplayLabelTitle": "The label is displayed", - "SelectsDisplayLabelIntro": "When a component binds in both directions, it automatically determines whether label text is displayed based on the conditions", - "SelectsDisplayLabelDescription": "The pre-label explicit rules are consistent with the BootstrapInput component of the of the [The portal]", - "SelectsDisplayLabelDivider1": "Bidirectional binding displays labels", - "SelectsDisplayLabelDivider2": "Bidirectional bindings show that bidirectional bindings do not display labels", - "SelectsDisplayLabelDivider3": "Customize DisplayText", - "SelectsDisplayLabelSelectText": "Custom city", - "SelectsStaticTitle": "Static data", - "SelectsStaticIntro": "Hard-coded writing directly inside the Select component is suitable for static data drop-down boxes", - "SelectsEnumTitle": "Enumerate the data", - "SelectsEnumIntro": "an example of a type enumerated a select component binding", - "SelectsEnumDescription1": "Enumeration When the binding value is an empty enumeration type, the component automatically adds preferences internally through the PlaceHolder value, and when the PlaceHolder value is not set, please select ... as a preference, and this example binds the EnumEducation enumeration type data", - "SelectsEnumDescription2": "Setting PlaceHolder is not valid when the binding value is an enumerated type", - "SelectsEnumSelectText1": "Can be empty", - "SelectsEnumSelectText2": "Not empty", - "SelectsEnumSelectText3": "Using enum integer values ​​as Items", - "SelectsNullableTitle": "The binding can be an empty type", - "SelectsNullableIntro": "an example of the Select component binding int? type", - "SelectsNullableDescription": "When the first option is selected, the binding value SelectIntItem to null", - "SelectsNullableBooleanTitle": "The binding can be an empty Boolean type", - "SelectsNullableBooleanIntro": "an example of the bool? type of select component binding", - "SelectsNullableBooleanDescription1": "Can be used for the empty boolean type more than in the conditional search box", - "SelectsNullableBooleanDescription2": "When the first option is selected, the binding value SelectIntItem to null", - "SelectsCustomTemplateTitle": "Custom option templates", - "SelectsCustomTemplateIntro": "By setting the ItemTemplate you can customize the option rendering style", - "SelectsShowSearchTitle": "Drop-down box with search box", - "SelectsShowSearchIntro": "Controls whether the search box is displayed by setting the ShowSearch property, which is not displayed by default false. You can set the IsAutoClearSearchTextWhenCollapsed parameter to control whether the text in the search box is automatically cleared after the drop-down box is collapsed. The default value is false.", - "SelectsConfirmSelectTitle": "Drop-down box with confirmation", - "SelectsConfirmSelectIntro": "Prevent the current value from changing by setting the OnBeforeSelectedItemChange delegate or setting the ShowSwal parameter to true.", - "SelectConfirmSelectDesc1": "Set the OnBeforeSelectedItemChange callback method, and pop up a window in the callback method to confirm whether to change the value. If it returns true, the value will be changed, otherwise it will not be changed.", - "SelectConfirmSelectDesc2": "Set ShowSwal=\"true\" and then confirm the value of the SwalTitle SwalContent parameter using the built-in popup window. In the callback method, you can confirm whether to change the value.", - "SelectsTimeZoneTitle": "Timezone", - "SelectsTimeZoneIntro": "Display data of Timezone", - "SwalTitle": "The drop-down box value changes", - "SwalContent": "Are you sure you want to change the option value?", - "SwalFooter": "Click Confirm to change the option value and select Cancel to leave the value unchanged", - "SelectsShowLabel": "Whether to display the front label", - "SelectsShowSearch": "Whether to display the search box", - "SelectsIsAutoClearSearchTextWhenCollapsed": "Whether to automatically clear the search bar when the drop-down box is collapsed", - "SelectsDisplayText": "The front label displays text", - "SelectsClass": "Style", - "SelectsColor": "Color", - "SelectsIsDisabled": "Whether to disable it", - "SelectsItems": "The data collection", - "SelectItems": "Static data templates", - "SelectsItemTemplate": "The data options template", - "SelectsChildContent": "The data template", - "SelectsCategory": "The dialog icon", - "SelectsContent": "The contents of the dialog box", - "SelectsContentDefaultValue": "Are you sure you want to change the current value?", - "SelectsDisableItemChangedWhenFirstRender": "Prohibit triggering the OnSelectedItemChanged callback method on first render", - "SelectsOnSelectedItemChanged": "This event is triggered when the drop-down option changes", - "SelectsOnBeforeSelectedItemChange": "This event is triggered before the drop-down option changes", - "SelectsPlaceHolder": "Not selected", - "SelectsDisplayTemplateTitle": "Display Template", - "SelectsDisplayTemplateIntro": "Custom UI of display template", - "SelectsPopoverTitle": "Popover dropdown menu", - "SelectsPopoverIntro": "Set IsPopover to true, use popover render UI prevent The dropdown menu cannot be fully displayed because the parent container is set to overflow: hidden", - "SelectsIsEditableTitle": "Editable", - "SelectsIsEditableIntro": "By setting IsEditable=\"true\" to make the component editable", - "SelectsIsEditableDesc": "After the editable function is enabled, if the input value is not in the candidate items, the new value can be returned through the TextConvertToValueCallback callback method, and the Items data source can be updated through the OnInputChangedCallback callback to prevent the input value from being lost after the page is refreshed.", - "SelectsVirtualizeTitle": "Virtualize", - "SelectsVirtualizeIntro": "Set IsVirtualize to true enable virtual scroll for large data", - "SelectsVirtualizeDescription": "Component virtual scrolling supports two ways of providing data through Items or OnQueryAsync callback methods", - "SelectsGenericTitle": "Generic", - "SelectsGenericIntro": "Data source Items supports generics when using SelectedItem<TValue>", - "SelectsGenericDesc": "

Please refer to Design Ideas to understand this feature. In this example, by selecting the drop-down box option, the value obtained is the Foo instance, and the value displayed in the text box on the right is the Address value of the Foo attribute

In this example, IsEditable=\"true\" and TextConvertToValueCallback parameters are set. When a Foo that does not exist in the original data source is entered, a new Foo instance is added to the data source in the callback method

", - "SelectsOnInputChangedCallback": "Callback method for converting input text into corresponding Value in edit mode", - "TextConvertToValueCallback": "Callback method when input text changes in edit mode", - "SelectsIsEditable": "Whether editable", - "SelectsIsVirtualize": "Wether to enable virtualize", - "SelectsDefaultVirtualizeItemText": "The text string corresponding to the first load value when virtual scrolling is turned on is separated by commas", - "SelectsShowSwal": "Whether show the swal confirm popup" - }, - "BootstrapBlazor.Server.Components.Samples.Sliders": { - "SlidersTitle": "Slider", - "SlidersDescription": "Select within a fixed interval by dragging the slider", - "SlidersNormalTitle": "Basic usage", - "SlidersNormalIntro": "Change the current value as you drag the slider", - "SlidersRangeTitle": "Range", - "SlidersIsDisabledTitle": "Disabled", - "SlidersIsDisabledIntro": "Disable components by setting IsDisabled=\"true\"", - "SlidersRangeIntro": "Auto generate min max by set RangeAttribute", - "SlidersIsDisabled": "Whether to disable it", - "SlidersValue": "The current value of the component", - "SlidersValueChanged": "ValueChanged callback method" - }, - "BootstrapBlazor.Server.Components.Samples.Switches": { - "SwitchesTitle": "Switch", - "SwitchesDescription": "The most common switching applications are available", - "SwitchesNormalTitle": "Basic usage", - "SwitchesNormalIntro": "Click the button to switch statuses", - "SwitchesNormalDescription": "Click the first switch to output the log with value", - "SwitchesOnText": "On", - "SwitchesOffText": "Off", - "SwitchesDisableTitle": "Disable the state", - "SwitchesDisableIntro": "Control the unavailable state of the component by setting the IsDisabled property", - "SwitchesColorTitle": "Switch color", - "SwitchesColorIntro": "Set the switch status color by setting the OnColor OffColor property values", - "SwitchesBindingTitle": "Two-way binding", - "SwitchesBindingIntro": "Binding variables within a component, data is automatically synchronized", - "SwitchesBindingDescription1": "when the Switch component turns on bidirectional binding, the DisplayName label value is automatically obtained based on the bound Model property value and appears as a pre-Label, which can be customized to display the pre-label through the DisplayText property, or through the ShowLabel property turns off the display of the prelabel", - "SwitchesBindingDescription2": "The pre-label explicit rules are consistent with the BootstrapInput component of the [The portal]", - "SwitchesBindingDisplayText1": "An example of a two-way binding", - "SwitchesBindingDivText1": "The binding value", - "SwitchesBindingDividerText1": "Custom labels", - "SwitchesBindingTips1": "Set the DisplayText value to custom label ", - "SwitchesBindingDisplayText2": "Custom labels", - "SwitchesBindingDividerText2": "Occupants", - "SwitchesBindingTips2": "The value of DisplayText is displayed when ShowLabel is true, regardless of whether the value is set", - "SwitchesBindingDividerText3": "Do not occupy seats", - "SwitchesBindingTips3": "The value of DisplayText is not displayed when the ShowLabel is false", - "SwitchesBindingDisplayText3": "Do not display", - "SwitchesInnerTextTitle": "Displays built-in text", - "SwitchesInnerTextIntro": "By setting ShowInnerText property control component displays built-in text", - "SwitchesInnerTextDescription": "By setting the onInnerText OffInnerText property to change the built-in text, a Chinese character is recommended by default to customize the component width to increase the amount of built-in text", - "SwitchesInnerTextLabelText1": "Default text:", - "SwitchesInnerTextLabelText2": "Custom text:", - "SwitchesInnerTextOnInnerText": "Be", - "SwitchesInnerTextOffInnerText": "Not", - "SwitchesNullableTitle": "Can be an empty type switch", - "SwitchesNullableIntro": "Control the default value of the Null value by setting the DefaultValueWhenNull property, which is false when not set", - "SwitchesAttributeClass": "Style", - "SwitchesAttributeHeight": "Control height", - "SwitchesAttributeIsDisabled": "Whether to disable it", - "SwitchesAttributeOffColor": "Off color settings", - "SwitchesAttributeOnColor": "Turn on the color settings", - "SwitchesAttributeOnTextAttr": "The text is displayed when component On", - "SwitchesAttributeOffTextAttr": "The text is displayed when the component is off", - "SwitchesAttributeOnInnerTextAttr": "Component On has built-in display text", - "SwitchesAttributeOffInnerTextAttr": "The component is built-in to display text when off", - "SwitchesAttributeOnInnerTextDefaultValue": "On", - "SwitchesAttributeOffInnerTextDefaultValue": "Off", - "SwitchesAttributeShowInnerText": "Whether to display the built-in display text", - "SwitchesAttributeWidth": "The width of the component", - "SwitchesAttributeValue": "Get the value", - "SwitchesAttributeShowLabel": "Whether to display the front label", - "SwitchesAttributeDisplayText": "The front label displays text", - "SwitchesAttributeOnValueChanged": "Call back the delegate method when the value changes", - "SwitchesEventValueChanged": "Gets the value of the selection change" - }, - "BootstrapBlazor.Server.Components.Samples.TextAreas": { - "TextAreaPlaceHolder": "Please enter ...", - "TextAreaTitle": "Textarea", - "TextAreaSubTitle": "Used to enter a large amount of text", - "TextAreaNormalTitle": "Basic usage", - "TextAreaNormalIntro": "A large amount of text is acceptable", - "TextAreaLabel": "Basic usage", - "TextAreaDisableTitle": "Disable", - "TextAreaDisableIntro": "When you set the IsDisabled property value to true, the component suppresses input", - "TextAreaBindWayBindValue": "The binding value", - "TextAreaReadOnlyTitle": "Readonly", - "TextAreaReadOnlyIntro": "When you set the readonly property, the component prohibits input", - "TextAreaHeightTitle": "Height", - "TextAreaHeightIntro": "When you set the rows property, component initialization displays a fixed row height", - "TextAreaBindWayTitle": "Two-way binding", - "TextAreaBindWayIntro": "Binding variables within a component, data is automatically synchronized", - "TextAreaShowLabel": "Whether to display the front label", - "TextAreaDisplayText": "The front label displays text", - "TextAreaIsDisabled": "Whether to disable Default is fasle", - "TextAreaScrollTitle": "Content scrolling", - "TextAreaScrollIntro": "Scroll to bottom/top/position", - "TextAreaMockChat": "Mock chat ", - "TextAreaMockChatRun": "Mock chat Run", - "TextAreaMockChatStop": "Mock chat Stop", - "TextAreaScrollToBottom": "Scroll to bottom", - "TextAreaScrollToTop": "Scroll to top", - "TextAreaScrollTo": "Scroll +20", - "TextAreaAutoScroll": "Automatic scrolling", - "TextAreaUseShiftEnterTitle": "Shift Enter", - "TextAreaUseShiftEnterIntro": "By setting UseShiftEnter=\"true\" you can start using Shift + Enter for line breaks, which is suitable for dialog applications.", - "TextAreaUseShiftEnterPlaceHolder": "Please enter some text, Enter sends Shift + Enter line break", - "TextAreaUseShiftEnter": "Whether to use Shift + Enter instead of the original Enter key behavior", - "TextAreaKeyEventTitle": "Enter/Esc KeyEvent", - "TextAreaKeyEventIntro": "Start the Enter Esc key callback event by setting OnEnterAsync OnEscAsync", - "TextAreaKeyEventPlaceHolder": "Press Enter/Esc key to trigger the event" - }, - "BootstrapBlazor.Server.Components.Samples.Toggles": { - "TogglesOnText": "On", - "TogglesOffText": "Off", - "TogglesTitle": "Toggle", - "TogglesSubTitle": "The most common switching application is available with a value of true false", - "TogglesNormalTitle": "Basic usage", - "TogglesNormalIntro": "Click the button to switch statuses", - "BasicUsageP": "Click the first switch to output the log with value", - "TogglesDisableTitle": "Disable the state", - "TogglesDisableIntro": "The switch is not available.", - "TogglesBindToWayTitle": "Bind data in both directions", - "TogglesBindToWayIntro": "Binding variables within a component, data is automatically synchronized", - "BindToWayP1": "when the Switch component turns on bidirectional binding, the DisplayName label value is automatically obtained based on the bound Model property value and appears as a pre-Label, which can be customized to display the pre-label through the DisplayText property, or through the ShowLabel property turns off the display of the prelabel", - "BindToWayDisplayText1": "An example of a two-way binding", - "BindToWayDiv": "The binding value:", - "CustomLabelText": "Custom labels", - "BindToWayP2": "Set the DisplayText value to custom label ", - "BindToWayP3": "The
value of DisplayText is displayed when ShowLabel is true, regardless of whether the value is set", - "OccupantsText": "Occupants", - "NotOccupantsText": "Not Occupants", - "BindToWayP4": "The value of DisplayText is not displayed when the ShowLabel is false", - "NotDisplayText": "Do not display", - "Color": "Color", - "IsDisabled": "Whether to disable it", - "OffTextAttr": "The text is displayed when the component is off", - "OffTextDefaultValue": "Shrink", - "OnTextAttr": "The text is displayed when component On", - "OnTextDefaultValue": "Unfold", - "Width": "The width of the component", - "Value": "Get the value", - "ShowLabel": "Whether to display the front label", - "DisplayText": "The front label displays text", - "OnValueChanged": "Call back the delegate method when the value changes", - "ValueChanged": "Gets the value of the selection change", - "DisplayName": "Binding label" - }, - "BootstrapBlazor.Server.Components.Samples.Transfers": { - "LeftPanelText": "The list on the left", - "LeftButtonText": "To the left", - "RightPanelText": "The list on the right", - "RightButtonText": "To the Right", - "PlaceHolder": "Please enter", - "TransfersTitle": "Transfer", - "TransferNormalTitle": "Basic usage", - "TransferNormalIntro": "Select the candidate items on the left and click the move button to move them to the right", - "TransferCustomerTitle": "Customizable", - "TransferCustomerIntro": "You can customize the list title copy, button copy, rendering function of data items, check status copy at the bottom of the list, content area at the bottom of the list, and so on.", - "TransferSearchTitle": "Searchable", - "TransferSearchIntro": "In cases where there is a lot of data, you can search and filter the data.", - "TransferBindTitle": "Two-way binding", - "TransferBindIntro": "When component data changes, the bidirectional binding bind-Value values change synchronously", - "TransferBindDescription": "Transfer component is a generic component that supports three binding types string IEnumerable<string> IEnumerable<SelectedItem> in this case bidirectional binding TheSelectValue type is IEnumerable<SelectedItem>", - "BindToWayButtonText1": "Add", - "TransferValidateTitle": "Client Validation", - "TransferValidateIntro": "When component data changes, the bidirectional binding bind-Value values change synchronously", - "ClientValidationP1": "The Transfer component built into the ValidateForm component turns on client authentication, in this case the component bidirectional binding Model.Hobby type is IEnumerable<string>", - "ClientValidationButtonText": "Submit", - "TransferDisableTitle": "Disable", - "TransferDisableIntro": "When you set the IsDisabled property value to true, the component suppresses input", - "TransferItemClassTitle": "Set the Item style", - "TransferItemClassIntro": "By setting the OnSetItemClass callback method styles options based on the values of SelectedItem", - "Items": "A collection of component-bound data items", - "TransferMinMaxTitle": "Max Min Constraint", - "TransferMinMaxIntro": "By setting Min Max Parameter to limit the number of options", - "LeftButtonTextAttr": "The left button displays text", - "LeftPanelTextAttr": "The left panel Header displays text", - "LeftPanelDefaultValue": "List 1", - "RightButtonTextAttr": "The right button displays text", - "RightPanelTextAttr": "The right panel Header displays text", - "RightPanelTextDefaultValue": "List 2", - "ShowSearch": "The right panel Header displays text ...", - "LeftPanelSearchPlaceHolderString": "The search box placeholder string in the left panel", - "RightPanelSearchPlaceHolderString": "The search box placeholder string in the right panel", - "IsDisabled": "Whether to disable it", - "OnSelectedItemsChanged": "The callback method when the component binding data item collection options change", - "OnSetItemClass": "Set the Item style callback method", - "Data": "Data", - "Backup": "Backup", - "LeftHeaderTemplate": "the left panel Header template", - "LeftItemTemplate": "the left panel Item template", - "RightHeaderTemplate": "the right panel Header template", - "RightItemTemplate": "the right panel Item template" - }, - "BootstrapBlazor.Server.Components.Samples.UploadAvatars": { - "UploadsTitle": "AvatarUpload", - "UploadsSubTitle": "Click to upload a file, usually used to upload a preview of one or a group of avatar-like images", - "UploadsNote": "If you edit too much content, signalR communication interruption may be triggered. Please adjust the HubOptions configuration.", - "AvatarUploadTitle": "Basic usage", - "AvatarUploadIntro": "AvatarUpload component, using the OnChange to limit the format and size of images uploaded by users. In this example, only jpg/png/bmp/jpeg/gif five picture formats are allowed. The component processes user uploaded avatars by setting the OnChange callback function. If this callback is not provided, the component will use the built-in method to try to read the uploaded file and generate the preview data in base64 format.", - "AvatarUploadTips3": "When you set up IsSingle, you can upload only one image or file", - "AvatarUploadTips5": "RELATED: [Accept] [Media Types]", - "AvatarUploadTips6": "Set the preview address PrevUrl with the DefaultFileList property", - "AvatarUploadTips7": "Verify that an example of using a picture box is used in the form", - "AvatarUploadButtonText": "Submit", - "AvatarUploadValidateTitle": "ValidateForm", - "AvatarUploadValidateIntro": "Place it in ValidateForm to integrate automatic data validation function. For details, please refer to ValidateForm component. In this example, the uploaded file extension is limited to .png, .jpg, .jpeg. An error message will be displayed when uploading other formats. The file size limit is 5M. An error message will also be displayed when it exceeds", - "AvatarUploadAcceptTitle": "Accept", - "AvatarUploadAcceptIntro": "The component provides Accept property for upload file filtering, in this case the circular avatar box accepts both GIF and JPEG images, sets the Accept='image/gif, image/jpeg' and can be written as: Accept='image/*' if you don't restrict the format of the image. Whether this property is not secure or should be to file format validation using the server-side authentication", - "UploadsWidth": "The width of the preview box", - "UploadsHeight": "The height of the preview box", - "UploadsIsCircle": "Whether it is circular avatar mode", - "UploadsBorderRadius": "Border radius", - "UploadsValidateFormTitle": "ValidateForm", - "UploadsValidateFormValidContent": "Saved successfully", - "UploadsValidateFormInValidContent": "Please correct it and submit the form again", - "UploadsFormatError": "The file format is incorrect", - "UploadsAvatarMsg": "Avatar upload" - }, - "BootstrapBlazor.Server.Components.Samples.UploadInputs": { - "UploadsTitle": "InputUpload", - "UploadsSubTitle": "Select one or more files to upload by clicking the Browse button.", - "UploadsNote": "If you edit too much content, signalR communication interruption may be triggered. Please adjust the HubOptions configuration.", - "UploadNormalTitle": "Basic usage", - "UploadNormalIntro": "You can show the Delete button by setting ShowDeleteButton=\"true\"", - "UploadNormalLabelPhoto": "Select one or more files", - "UploadFormSettingsTitle": "ValidateForm", - "UploadFormSettingsIntro": "Use the file upload component to constrain the file format within the form", - "UploadFormSettingsLi1": "Using the ValidateForm form component, custom validation is set by setting the fileValidation label of the model properties to support file extensionsizevalidation, in this case with the extension .png .jpg .jpeg and the file size limit to 5M", - "UploadFormSettingsLi2": "After selecting the file and not starting to upload the file, click the submit button to verify that the data is legitimate, and then upload the file OnSubmit callback delegate, noting that the Pictureproperty type is IBrowserFile", - "UploadFormSettingsButtonText": "Submit", - "UploadsIsDirectory": "Whether to upload the entire directory", - "UploadsIsMultiple": "Whether to allow multiple file uploads", - "UploadsShowProgress": "Whether to display the upload progress", - "UploadsDefaultFileList": "The collection of files has been uploaded", - "UploadsShowDeleteButton": "Whether to display the Delete button", - "UploadsIsDisabled": "Whether to disable it", - "UploadsPlaceHolder": "The place-in string", - "UploadsBrowserButtonClass": "Upload button style", - "UploadsBrowserButtonIcon": "Browse the button icon", - "UploadsBrowserButtonText": "The browse button displays text", - "UploadsDeleteButtonClass": "Remove the button style", - "UploadsDeleteButtonIcon": "Remove the button icon", - "UploadsDeleteButtonText": "Delete the button text", - "UploadsDeleteButtonTextDefaultValue": "Delete", - "UploadsAccept": "Upload the received file format", - "UploadsOnDelete": "Call back this method when you click the Delete button", - "UploadsOnChange": "Call back this method when you click the Browse button" - }, - "BootstrapBlazor.Server.Components.Samples.UploadButtons": { - "UploadsTitle": "ButtonUpload", - "UploadsSubTitle": "Upload files by clicking on them, usually used to upload file attachments", - "UploadsNote": "If you edit too much content, signalR communication interruption may be triggered. Please adjust the HubOptions configuration.", - "ButtonUploadTitle": "Basic usage", - "ButtonUploadIntro": "By setting ShowUploadFileList=\"true\" you can display the uploaded file list, and setting ShowDeleteButton=\"true\" you can display the Delete button" - }, - "BootstrapBlazor.Server.Components.Samples.UploadCards": { - "UploadsTitle": "CardUpload", - "UploadsSubTitle": "Click the button to pop up the file selection box to select one or more files, which will be presented in a card-style preview mode.", - "UploadsNote": "If you edit too much content, signalR communication interruption may be triggered. Please adjust the HubOptions configuration.", - "ButtonUploadTitle": "Basic usage", - "ButtonUploadIntro": "Use DefaultFileList to set up uploaded content", - "UploadPreCardStyleTitle": "Preview the card style", - "UploadPreCardStyleIntro": "CardUpload components and rendered in card-style band preview mode", - "UploadFileIconTitle": "The file icon", - "UploadFileIconIntro": "Icons are displayed in different file formats", - "UploadFileIconTemplateTitle": "Custom file icon", - "UploadFileIconTemplateIntro": "By setting the IconTemplate parameter and using the FileIcon component, you can further customize the file icon [FileIcon example]", - "UploadBase64Title": "Base64 format", - "UploadBase64Intro": "By setting the PrevUrl parameter value of the UploadFile instance, use the image content string in the data:image/xxx;base64,XXXXX format as the preview file path", - "UploadsFileTitle": "Upload", - "UploadsFileError": "The file is larger than 5M. Please reselect the file to upload.", - "UploadsSuccess": "File saved successfully", - "UploadsSaveFileError": "File save failed", - "UploadsWasmError": "In wasm mode, please call the api to save", - "UploadActionButtonTemplateTitle": "Custom action button", - "UploadActionButtonTemplateIntro": "Customize the action buttons on the card by setting the `ActionButtonTemplate` parameter (appending it to the end of the default button), and customize the action buttons on the card by setting the `BeforeActionButtonTemplate` parameter (insert it before the default button)." - }, - "BootstrapBlazor.Server.Components.Samples.UploadDrops": { - "UploadsTitle": "DropUpload", - "UploadsSubTitle": "Upload one or more files by clicking on the component or by dragging or pasting", - "UploadsNote": "If the uploaded file is too large, it may trigger signalR communication interruption. Please adjust the HubOptions configuration yourself.", - "DropUploadTitle": "Basic usage", - "DropUploadIntro": "Handle all uploaded files via the OnChange callback", - "DropUploadFooterText": "File size should not exceed 5Mb", - "UploadsBodyTemplate": "Body Template", - "UploadsIconTemplate": "Icon Template", - "UploadsTextTemplate": "Text Template", - "UploadsUploadIcon": "Icon", - "UploadsUploadText": "Text", - "UploadsShowFooter": "Whether to display Footer", - "UploadsFooterTemplate": "Footer Text Template", - "UploadsFooterText": "Footer text" - }, - "BootstrapBlazor.Server.Components.Samples.ValidateForms": { - "ChangeButtonText": "Change", - "ResetButtonText": "Reset", - "ValidateFormsSubmitButtonText": "Submit", - "ValidateFormsTitle": "ValidateForm", - "ValidateFormsSubTitle": "Form components that can be used for data compliance checks", - "ValidateFormNormalTitle": "Basic usage", - "ValidateFormNormalIntro": "Data compliance checks are automatically performed when components placed in the ValidateForm are submitted", - "ValidateFormNormalBasicUsageDescription": "Introduction", - "ValidateFormNormalLi1": "ValidateForm component supports asynchronous setting of Model values", - "ValidateFormNormalLi2": "The form event is for OnValidSubmit OnInvalidSubmit", - "ValidateFormNormalLi3": "Model parameter is required is not allowed to be empty", - "ValidateFormNormalLi4": "Multiple buttons can be placed within the form to set whether the ButtonType='ButtonType.Submit' parameter is submitted to the form", - "ValidateFormNormalLi5": "The client authentication mechanism supports the model's Required label, setting the default English prompt information when not set by setting the ErrorMessage parameter prompt", - "ValidateFormNormalLi6": "The form checks by default whether the binding field values within the form are legitimate, and you can set the ValidateAllProperties property value to true if you need to check all fields in the model", - "ValidateFormNormalLi7": "Set the asynchronous submission form by setting the value of the Button Button property IsAsync", - "ValidateFormNormalLi8": "Components within a form are typically used to bind the property values of Model in both directions using bidirectional binding techniques, causing the component to refresh and re-render when its value changes StateHasChanged, and the method is called, i.e. its component or page is refreshed and re-rendered", - "ValidateFormNormalLi9": "After the value of the component control in the form is modified, the OnFieldChanged method is called", - "ValidateFormNormalFormLabelWidth": "The default width of component front label is 120px. If you need more, please change the style variable --bb-row-label-width in the project style file or remove RowType.Inline", - "ValidateFormNormalBasicUsageDescription2": "Note:", - "ValidateFormInnerComponentTitle": "Built-in components", - "ValidateFormInnerComponentIntro": "Place the support form components into the ValidateForm", - "ValidateFormInnerComponentInnerComponentLabel": "Examples of components that support form validation", - "ValidateFormInnerComponentInnerComponentDescription1": "Example illustration", - "ValidateFormInnerComponentInnerComponentLi1": "The name is the string type", - "ValidateFormInnerComponentInnerComponentLi2": "The age is an integer type", - "ValidateFormInnerComponentInnerComponentLi3": "Birthday is the datetime type", - "ValidateFormInnerComponentInnerComponentLi4": "Education is an enumeration type", - "ValidateFormInnerComponentInnerComponentLi5": "Hobbies are collection types", - "ValidateFormInnerComponentInnerComponentDescription2": "In this example, by setting the submit button property IsAsync to submit the form asynchronously, click Submit to disable itself, and resume after the asynchronous operation is complete", - "ValidateFormCustomDisplayErrorTitle": "Custom displays error messages", - "ValidateFormCustomDisplayErrorIntro": "Set the custom error message by calling SetError method", - "ValidateFormCustomDisplayErrorDescription": "Scenario

the client verification after the pass of the database save operation, if other problems, you can still make a form custom error prompt, in this case, after the data verification is legal, click the submit form button, the name field will show, the database already exists such a custom prompt

", - "ValidateFormValidatorAllFieldTitle": "Validate all field values", - "ValidateFormValidatorAllFieldIntro": "This component checks the model binding field values within the form by default, setting the ValidateAllProperties values if you need to check all field values for the model", - "ValidateFormValidatorAllFieldDescription": "The Address is not placed in this example, because the ValidateAllProperties parameter value is true, the Addres field is still checked, and OnInvalidSubmit is triggered when the data is submitted after all the data in the timely form is legitimate callback delegate", - "ValidateFormComplexValidationTitle": "Complex type support", - "ValidateFormComplexValidationIntro": "Supports any complex type of binding and validation", - "ValidateFormComplexValidationDescription": "The second binding in this example is a super-complex type ComplexModel.Dummy.Dummy2.Name Empty the value, click submit the formvalidate the data. After the second text box verifies compliance, the error prompt is displayed again by calling the SetError", - "ValidateFormComplexValidationPre": "ComplexForm.SetError('Dummy.Dummy2.Name','数据库中已存在');", - "ValidateFormDynamicFormTitle": "Dynamically adjust the components within the form", - "ValidateFormDynamicFormIntro": "By changing the components within the form, verify that the form can still be validated correctly", - "ValidateFormDynamicFormDescription": "Click the Change componentbutton address The component changes to count components, reset componentbutton recovery, name address component is required, count The component has a default value of 0 So you can check through the data", - "ValidateFormInnerFormLabelTitle": "Set the component label right alignment within the form", - "ValidateFormInnerFormLabelIntro": "Set the alignment of labels throughout the station or in a specific form with style uniformity", - "ValidateFormInnerFormLabelDescription": "Address text box adds email addressvalidation rules", - "ValidateFormCustomValidationFormTitle": "Customize the verification form", - "ValidateFormCustomValidationFormIntro": "Add custom validation rules by setting Rules", - "CustomValidationFormP1": "Address text box adds email addressverification rules, click On Submission to verify", - "CustomValidationFormComment1": "Add mailbox validation rules", - "CustomValidationFormComment2": "Used in Razor files", - "ValidateFormValidateTitle": "Manual Validate", - "ValidateFormValidateIntro": "call the ValidateForm instance method Validate for trigger the form validation", - "ValidateButtonText": "Save", - "ValidateFormValidateDescription": "The button is not submit button. so not trigger the form submit action, in this sample code use OnClickWithoutRender parameter for improve performance.", - "Model": "Form component-bound data model, required properties", - "ValidateAllProperties": "Whether to check all fields", - "ShowRequiredMark": "Whether the required items in the form display the * mark", - "ChildContent": "The instance of the subcomponent template", - "OnValidSubmit": "Callback delegate when data compliance checks pass when the form is submitted", - "OnInvalidSubmit": "Callback delegates when the data compliance check fails when the form is submitted", - "SetError": "Set up a validation failure method", - "Validate": "Trigger form validate", - "OnInvalidSubmitLog": "OnInvalidSubmit callback delegate: The validation failed", - "OnValidSubmitLog": "OnValidSubmit callback delegate: Verification passed", - "OnValidSubmitStartingLog": "OnValidSubmit callback delegate: Starting ...", - "OnValidSubmitDoneLog": "OnValidSubmit callback delegate: Done!", - "OnInvalidSubmitCallBackLog": "OnInvalidSubmit callback delegate", - "OnValidSubmitCallBackLog": "OnValidSubmit callback delegate", - "DatabaseExistLog": "Exists in the database", - "LongDisplayText": "I am very long display text", - "LongDisplayDescription": "In this example, set the ShowLabelTooltip in the form-inline style to true to make the mouse hover over the cropped label to display the complete information", - "ShowLabelTooltip": "Show complete information when mouse hover over the label", - "DisableAutoSubmitFormByEnter": "Disable automatic submit form", - "ValidateFormDisableAutoSubmitFormByEnterTitle": "Disable automatic submit form", - "ValidateFormDisableAutoSubmitFormByEnterIntro": "When the focus is in the input box in the form, pressing Enter will automatically submit the form by default. You can disable automatic submission by setting DisableAutoSubmitFormByEnter=\"false\"", - "DisableAutoSubmitFormByEnterDesc": "form form is an important element ofweb. If there is an input element in the form, when this element gets the focus, pressing Enter will automatically submit the form. This is a feature of the form element, not our component code logic. If this function is not needed, disable it by setting DisableAutoSubmitFormByEnter=\"true\", In this example, pressing Enter in the text box will not automatically submit and perform data compliance check. You need to click the Submit button to submit the form", - "ValidateFormIValidatableObjectTitle": "IValidatableObject", - "ValidateFormIValidatableObjectIntro": "The IValidatableObject interface provides more flexible custom validation, making it very suitable for performing complex data validation scenarios, such as validating combinations of multiple properties.", - "ValidateFormIValidatableObjectDescription": "This example uses the IValidatableObject interface to implement validation that Telephone 1 and Telephone 2 must not be the same, and that Name cannot be empty. In this example, Name is not provided, but since the model implements validation through the IValidatableObject interface, it still triggers the OnInvalidSubmit callback delegate when submitting data.", - "ValidateFormIValidateCollectionTitle": "IValidateCollection", - "ValidateFormIValidateCollectionIntro": "The IValidateCollection interface provides more flexible custom linked validation, which is very suitable for very complex data validation, such as combining multiple attributes for validation.", - "ValidateFormIValidateCollectionDescription": "This example uses IValidateCollection to verify that Telephone 1 and Telephone 2 cannot be the same. If any cell is changed so that the phone numbers are the same, both text boxes will prompt.", - "ValidateMetadataTypeTitle": "MetadataType IValidateCollection", - "ValidateMetadataTypeIntro": "The model uses [MetadataType(typeof(MockModelMetadataType))] to specify the metadata type MockModelMetadataType for model validation. If the specified model inherits the IValidateCollection interface, its Validate method is called to perform data compliance checks.", - "LabelWidth": "Label width" - }, - "BootstrapBlazor.Server.Components.Samples.Ajaxs": { - "AjaxTitle": "Ajax call", - "AjaxDescribe": "The ajax method used to use js directly in the browser to interact with the server currently only supports both input and output as json, and the return value is a json string, which can be converted and processed by itself.", - "NormalTitle": "Basic usage", - "NormalIntro": "Impersonate a login", - "NormalB": "Special attention:", - "NormalDiv": "Here is only a login simulation, and there is no real call to HttpContext.SignInAsync , the real use needs to refresh the page after the login is completed, otherwise the real login can not be successful.", - "GoToTitle": "Page jump", - "GoToIntro": "Implementing page jumps with Js addresses an issue where Blazor pages don't really refresh when they're jumped as SPA ", - "InvokeAsync": "Execute fetch", - "GoTo": "Execute goto", - "NormalButtonText1": "Login successful", - "NormalButtonText2": "Login failed", - "GoToButtonText1": "Jump to the first page of the document", - "GoToButtonText2": "Jump to yourself (refresh page)" - }, - "BootstrapBlazor.Server.Components.Samples.Avatars": { - "Title": "Avatar", - "SubTitle": "Present user or thing information as icons, pictures, or characters.", - "BasicUsageTitle": "Basic usage", - "BasicUsageIntro": "Set the shape and size of your avatar IsCircle and Size.", - "IconTitle": "The type of presentation", - "IconIntro": "Three types are supported: icons, pictures, and characters", - "BorderTitle": "Border", - "BorderIntro": "By setting the IsBorder whether to display the avatar border, the border in this mode when the picture fails to load is border-danger style, and when the load is successful, the border is border-success; The borders in the remaining modes are border-info", - "CircletTitle": "Asynchronous loading", - "CircleIntro": "Suitable for scenarios where the picture address is obtained asynchronously by interfaces such as webapi", - "Size": "The size of the avatar box", - "IsBorder": "Whether the border is displayed", - "IsCircle": "Whether it is a circle", - "IsIcon": "Whether it is an icon", - "IsText": "Whether to display as text", - "Icon": "The avatar box displays an icon", - "Text": "The avatar box displays text", - "Url": "Image avatar path address", - "GetUrlAsync": "Gets the Image avatar path address asynchronous callback delegate", - "BasicUsageDivider": "Split the line", - "BorderDiv1": "The first fillet square avatar box is loaded correctly, so the border is blue ", - "BorderDiv2": "The second circular avatar loads the picture path incorrectly, so the border is red and the picture appears as the default icon" - }, - "BootstrapBlazor.Server.Components.Samples.Badges": { - "Title": "Badge", - "SubTitle": "A number or status tag that appears next to a button, icon, or icon", - "BasicusageTitle": "Basic usage", - "BasicusageIntro": "Small badge assembly in a variety of colors is available", - "PillTitle": "Capsule badge", - "PillIntro": "Set the badge pendant with the of the property IsPill='true' to set the fillet", - "ButtonTitle": "The badge inside the button", - "ButtonIntro": "Button internal badge", - "ChildContent": "Content", - "Class": "Style", - "Color": "Color", - "IsPill": "Capsule style", - "ButtonSpan": "The primary button" - }, - "BootstrapBlazor.Server.Components.Samples.ShieldBadges": { - "Title": "ShieldBadge", - "SubTitle": "Badge component with icon label text like Shields Badge", - "ShieldBadgeNormalTitle": "Basic usage", - "ShieldBadgeNormalIntro": "Use Icon to set the icon, Label to set the left text, and Text to set the right text" - }, - "BootstrapBlazor.Server.Components.Samples.BarcodeReaders": { - "Title": "BarcodeReader", - "SubTitle": "This component scans the bar code by calling the camera to obtain the bar code content bar code/QR code", - "Attention": "Pay special attention to:", - "Li1": "The site wants to enable https, which is required by browser vendors", - "Li2": "The mobile iOS system must use the Safari browser to switch the front/rear camera keys to turn off the function button", - "Li3": "The high probability of Android phones requiring native system browsers, Chrome is certain to be possible, and some browsers may not be compatible with cameras", - "Li4": "The bar code recognition rate is related to the pixel, bar code size and mobile phone execution efficiency", - "BasicUsageTitle": "Basic usage", - "BasicUsageIntro": "The code is identified by the camera", - "Step": "How to do this:", - "BasicUsageLi1": "Tap to start turning on the camera", - "BasicUsageLi2": "Scan the barcode", - "BasicUsageLi3": "Click the close button to turn off the camera", - "ImageTitle": "Basic usage", - "ImageIntro": "Scan code recognition with still pictures", - "ImageLi1": "Click the code to pop up the selection file box", - "ImageLi2": "Select a picture that contains barcodes", - "ImageLi3": "Start recognizing barcodes", - "ButtonScanText": "Scan button text", - "ButtonScanTextDefaultValue": "Scan", - "ButtonStopText": "Turn off button text", - "ButtonStopTextDefaultValue": "Turn off", - "AutoStopText": "Auto-turn off button text", - "AutoStopTextDefaultValue": "Turn off automatically", - "DeviceLabel": "Pre-label text for the device list", - "DeviceLabelDefaultValue": "Camera", - "InitDevicesString": "Initialize the device list text", - "InitDevicesStringDefaultValue": "The camera is being identified", - "NotFoundDevicesString": "No video-related device text was found", - "NotFoundDevicesStringDefaultValue": "No video-related devices were found", - "AutoStart": "Whether the camera is automatically turned on when the component is initialized", - "AutoStop": "Whether to stop automatically after scanning to barcode", - "ScanType": "Scan the camera or picture", - "OnInit": "Initialize the camera callback method", - "OnResult": "Scan to barcode callback method", - "OnStart": "Turn on the camera callback method", - "OnClose": "Turn off the camera callback method", - "OnError": "An error callback method occurred", - "OnDeviceChanged": "switch camera device callback method", - "InitLog": "Initialize the camera to complete", - "ScanCodeLog": "Scan to barcode", - "ErrorLog": "An error has occurred", - "OpenCameraLog": "Turn on the camera", - "CloseCameraLog": "Turn off the camera" - }, - "BootstrapBlazor.Server.Components.Samples.Blocks": { - "Title": "Block", - "SubTitle": "Depending on the parameter conditions, the contents of the block are determined to be displayed, usually in conjunction with permission authorization", - "BasicUsageTitle": "Common usage", - "BasicUsageIntro": "Determines whether component content is displayed by setting the OnQueryCondition callback method return value", - "TemplateTitle": "Template", - "TemplateIntro": "By setting authorized NotAuthorized you can set what appears when you meet and do not meet the criteria, respectively", - "AuthorizateTitle": "Judging by permissions", - "AuthorizateIntro": "This example simulates a user logging in to control whether the content Block is displayed, which is easier to use than AuthorizeView", - "UsersTitle": "Pre-set the user", - "UsersIntro": "By setting Users controls the display, which is displayed when the currently logged-in user is a preset user", - "RolesTitle": "Preset roles", - "RolesIntro": "By setting Roles controls the display, which is displayed when the currently logged-in user is in a preset role", - "Tips": "By setting different Name as a resource, combined with the authorization system to authorize this resource can be achieved to any element of the Web page permission control", - "OnQueryCondition": "Whether to display this Block", - "ChildContent": "The content is displayed within the Block block", - "Authorized": "The contents of the block block are displayed in a compliant condition", - "NotAuthorized": "The block does not meet the criteria for displaying content", - "IsShow": "Show", - "IsHide": "Hide", - "Login": "Login", - "Logout": "Logout", - "Content": "I am component content", - "AuthorizateDiv1": "I am the contents of the component of the CondtionBlock, and the current logged-in user: {0}", - "AuthorizateDiv2": "I am the contents of the AuthorizeView component and the current logged-in user: {0}", - "AuthorizateDiv3": "I am the contents of the AuthorizeView component and are not currently logged in", - "TemplateDiv1": "I am the component content that displayed in accordancewith the criteria", - "TemplateDiv2": "I am the component content that displayed that not accordancethe criteria", - "UsersDiv1": "The current user {0} allows you to see this content", - "RolesDiv1": "The current role User allow this content to be seen" - }, - "BootstrapBlazor.Server.Components.Samples.Cards": { - "Title": "Card", - "SubTitle": "Aggregate information to display in a card container", - "BasicUsageTitle": "Card card components", - "BasicUsageIntro": "Card is a simple example", - "FooterTitle": "Header & Footer", - "FooterIntro": "You can show the content by adding the HeaderTemplate and FooterTemplate elements", - "IsCenterTitle": "Center", - "IsCenterIntro": "Make content center by IsCenter=true", - "ColorTitle": "A card with a border color", - "ColorIntro": "By setting, The makes the border and Body color appropriate", - "CollapsibleIntro": "Card body can collapse/expand by set IsCollapsible to true", - "CollapsibleIntroDesc": "Set Collapsed value to true for default collapsed card body.", - "CollapsibleHeaderTemplateTitle": "Header Template", - "CollapsibleHeaderTemplateIntro": "Setting HeaderTemplate for custom CardHeader", - "ShadowTitle": "Shadow effect", - "ShadowIntro": "Enable shadow effect by set IsShadow to true", - "BodyTemplate": "Gets or sets up BodyTemplate", - "FooterTemplate": "Gets or sets up FooterTemplate", - "HeaderTemplate": "Gets or sets up HeaderTemplate", - "Class": "Style", - "Color": "Set the color of the card border", - "IsCenter": "Make align center by set IsCenter to true", - "IsCollapsible": "Collapse card body by set IsCollapsible to true", - "Collapsed": "Collapsed by default", - "IsShadow": "Add shadow effect by set IsShadow to true", - "Compare": "CardCompare", - "CollapsibleTitle": "Collapsible", - "CollapsibleHeaderTemplate": "Header Template", - "CollapsibleBody": "Click card hader for collapse/expand card body", - "ShadowBody": "Shadow effect sample", - "HeaderPaddingY": "Header top and bottom padding" - }, - "BootstrapBlazor.Server.Components.Samples.Calendars": { - "Title": "Calendar", - "SubTitle": "Containers that display data as calendars. When the data is date or by date, such as schedule, schedule, price calendar, etc., lunar calendar, etc. Year/month switching is currently supported.", - "BasicUsageTitle": "Basic usage", - "BasicUsageIntro": "The underlying calendar is displayed.", - "BindTitle": "Data is bound in both directions", - "BindIntro": "The calendar box automatically updates the text box when the time is selected", - "ViewModeTitle": "Show by week", - "ViewModeIntro": "By setting the property CalendarViewMode.Week", - "CellTemplateTitle": "Cell Template", - "CellTemplateIntro": "customer the cell template via CellTemplate", - "HeaderTemplateTitle": "Header Template", - "HeaderTemplateIntro": "Customize the header template by setting the property HeaderTemplate", - "HeaderTemplateDesc": "Customize the UI by setting the BodyTemplate and HeaderTemplate. In this example, additional columns are added to the front and back of the month view, and a timeline is added to the week view", - "AppTitle": "Practical applications", - "AppIntro": "Curriculum", - "AppText": "Currently, the ChildContext is temporarily rendered by the week component, and the data-related operating components in all cells are not encapsulated and will be refined later", - "Siesta": "Siesta", - "Value": "The component value", - "ChildContent": "Subcomponents", - "ValueChanged": "Call back the delegate when the value changes", - "CellTemplate": "Cell template", - "CellTemplateDemoTitle": "Example of actual man hour system", - "CellTemplateDemoIntro": "Click the cell pop-up window to edit the working hours, and then close the pop-up window to re summarize the statistical data", - "CellTemplateDemoSummary": "Work hour statistics of the month", - "None": "None", - "Chinese": "Chinese", - "Math": "Math", - "English": "English", - "Study": "Study", - "FirstDayOfWeek": "The first day of the week" - }, - "BootstrapBlazor.Server.Components.Samples.Cameras": { - "Title": "Camera", - "SubTitle": "This component takes pictures by calling the camera", - "Attention": "Pay special attention to:", - "Li1": "The site wants to enable https, which is required by browser vendors", - "BasicUsageTitle": "Basic usage", - "BasicUsageIntro": "Take pictures through the camera", - "BasicUsageStep": "Steps:", - "BasicUsageLi1": "Click start to open the camera", - "BasicUsageLi2": "Click the photo button", - "BasicUsageLi3": "Click the close button to close the camera", - "ShowPreview": "Whether to show photo preview", - "AutoStart": "Whether open the camera auto", - "OnInit": "Initialize the camera callback method", - "OnStart": "Start capture callback method", - "OnClose": "Turn off the capture callback method", - "OnCapture": "Callback method for successful capture", - "VideoWidth": "The width of Video window", - "VideoHeight": "The height of Video window", - "CaptureJpeg": "Set the capture image format as Jpeg, default is Png", - "Quality": "Capture image quality, default is 0.9", - "DeviceLabel": "Camera", - "InitDevicesString": "Initializing ...", - "PlayText": "Open", - "StopText": "Close", - "PreviewText": "Preview", - "SaveText": "Save", - "NotFoundDevicesString": "Video device not found" - }, - "BootstrapBlazor.Server.Components.Samples.Captchas": { - "Title": "Captchas", - "SubTitle": "Human-machine recognition by dragging the slider", - "BasicUsageTitle": "Basic usage", - "BasicUsageIntro": "Simple human-machine identification", - "ImageTitle": "Specify the path and name of the graph bed", - "ImageIntro": "Set the map bed path ImagesPath, the picture name by ImagesName, and the background by calculating the full path name of the stitched random picture", - "ImageCallbackTitle": "Specify the graph bed delegate method", - "ImageCallbackIntro": "Set a custom method to stitch the full path name of a random picture by GetImageName", - "ImagesPath": "Figure the path of the bed", - "ImagesName": "The name of the slider background file", - "HeaderText": "Component Header displays text", - "HeaderTextDefaultValue": "Please complete the security verification", - "BarText": "Drag the slider to display the text", - "BarTextDefaultValue": "Swipe right to fill the puzzle", - "FailedText": "The background map failed to load to display text", - "FailedTextDefaultValue": "The load failed", - "LoadText": "The background map displays text when it loads", - "LoadTextDefaultValue": "Loading ...", - "TryText": "The puzzle failure slider displays text", - "TryTextDefaultValue": "Try again", - "Offset": "Puzzle alignment offset", - "Width": "Puzzle width", - "Height": "Puzzle height", - "OnValid": "The slider verification code calls back this method after the validation results are determined", - "GetImageName": "Custom method for getting the name of the background map file" - }, - "BootstrapBlazor.Server.Components.Samples.Carousels": { - "Title": "Carousel", - "SubTitle": "In limited space, loop through the same type of pictures, text, and more", - "BasicUsageTitle": "Basic usage", - "BasicUsageIntro": "A wide range of basic usages are used to bind components to an array of picture paths by setting the Items property values", - "ShowControlsTitle": "Show Controls", - "ShowControlsIntro": "Set ShowControls to true for show/hide the controls of Carousel", - "ShowIndicatorsTitle": "Indicator", - "ShowIndicatorsIntro": "Set ShowIndicators to true for show/hide the indicator of Carousel", - "FadeTitle": "Fade in and out", - "FadeIntro": "By setting the IsFade property, the picture switches with a fade-in and fade-out effect", - "CaptionTitle": "Caption", - "CaptionIntro": "Set CarouselItem parameter Caption for the content of caption", - "IntervalTitle": "Individual interval", - "IntervalIntro": "Set Interval to a CarouselItem to change the amount of time to delay between automatically cycling to the next item. the default value is 5000 ms", - "TouchSwipingTitle": "Disable touch swiping", - "TouchSwipingIntro": "Set DisableTouchSwiping disable the swiping function on mobile", - "CaptionTemplateTitle": "Caption Template", - "CaptionTemplateIntro": "Set CarouselItemCaptionTemplate custom the caption of item", - "CaptionClassTitle": "Caption Class", - "CaptionClassIntro": "Set CarouselItemCaptionClass custome the class of caption", - "CaptionClassP1": "Set the CaptionClass to d-none d-md-block do not show the Caption in the small screen", - "OnClickTitle": "Click on the image to call back the event", - "OnClickIntro": "After you set the OnClick property by setting, click Image to trigger the OnClick callback delegate", - "ChildContentTitle": "ChildContent", - "ChildContentIntro": "Use ChildContent render the customer content", - "Images": "Images collection", - "IsFade": "Whether to fade in and out", - "Width": "Set the width of the picture", - "OnClick": "Click on the image to call back the delegate", - "HoverPause": "If set to true, pauses the cycling of the carousel on mouseenter and resumes the cycling of the carousel on mouseleave. If set to false, hovering over the carousel won’t pause it", - "PlayMode": "autoplay the carousel mode" - }, - "BootstrapBlazor.Server.Components.Samples.Client": { - "Title": "Get client connection information", - "SubTitle": "More for system log tracking", - "BasicUsageTitle": "Basic usage", - "BasicUsageIntro": "The injection service displays client information", - "BasicUsageP1": "Introduction to usage", - "BasicUsageP2": "1. The UseBootstrapBlazor middleware in the Startup.cs file that client information collection is performed.", - "BasicUsageTips": "app.UseBootstrapBlazor Middleware is located assembly BootstrapBlazor.Middleware, please refer to this package yourself for proper use", - "BasicUsageP3": "2. The component uses the injection service WebClientService to call the GetClientInfo method.", - "BasicUsageP4": "3. Turn on IP geolocation", - "LocatorsProviderOptions": "BootstrapBlazorOptions section WebClientOptions By default it is false, which means the IP address location function is not enabled. Please change it to true in the configuration file or code.", - "LocatorsProviderDesc1": "Update the appsetting.json project configuration file", - "LocatorsProviderDesc2": "Or use the code to open", - "LocatorsProviderDesc3": "Or enable this function through configuration", - "GroupBoxTitle": "Connection information", - "IpLocatorFactoryDesc": "This service has built-in IP geolocation function. For detailed configuration and documentation, please refer to", - "Id": "Connection ID", - "RequestUrl": "RequestUrl", - "Ip": "Ip", - "City": "City", - "OS": "OS", - "Browser": "Browser", - "Engine": "Engine", - "Device": "Device", - "Language": "Language" - }, - "BootstrapBlazor.Server.Components.Samples.Circles": { - "Title": "Circle", - "SubTitle": "Chart class components. There are generally two uses:", - "CircleTips1": "Displays the percentage of progress for a task", - "CircleTips2": "Count the proportion of certain indicators.", - "BasicUsageTitle": "Basic usage", - "BasicUsageIntro": "Set the circular progress by setting the Value property", - "ColorTitle": "Color", - "ColorIntro": "Set the color of the circular progress bar by setting the Color property", - "StrokeWidthTitle": "The width of the progress bar", - "StrokeWidthIntro": "Set the width of the circular progress bar by setting the StrokeWidth property", - "ChildContentTitle": "Customize the display", - "ChildContentIntro": "Customize the display content with custom subcomponents", - "Width": "The width of the component", - "StrokeWidth": "The width of the progress bar", - "Value": "Current progress", - "Color": "The color of the progress bar", - "ShowProgress": "Whether to display progress bar information", - "ChildContent": "ChildContent", - "IncreaseSpan": "Increase", - "DecreaseSpan": "Decrease", - "ChildContentP1": "The size of the consumer population", - "ChildContentSpan": "Total number of people" - }, - "BootstrapBlazor.Server.Components.Samples.Collapses": { - "Title": "Collapse", - "SubTitle": "The content area is contained by the collapsed panel", - "BasicUsageTitle": "Basic usage", - "BasicUsageIntro": "Multiple panels can be expanded at the same time, with no effect between panels", - "AccordionTitle": "Accordion effect", - "AccordionIntro": "Only one panel can be expanded at a time", - "IconTitle": "Icon", - "IconIntro": "Show icon in header", - "ColorTitle": "The child title color", - "ColorIntro": "Each panel sets a different color", - "ItemsTitle": "Dynamic updates", - "ItemsIntro": "The CollapseItems is set by conditional logic", - "CollapseItems": "Content", - "IsAccordion": "Whether the accordion effect", - "OnCollapseChanged": "The callback of switch expand/collapse item state", - "Consistency": "Consistency", - "ConsistencyItem1": "Consistent with real life: consistent with real-life processes, logic, follow the user's habits of language and concepts;", - "ConsistencyItem2": "Consistent in the interface: All elements and structures need to be consistent, such as design styles, icons and text, the location of elements, and so on.", - "Feedback": "Feedback", - "FeedbackItem1": "Control feedback: through the interface style and interactive effect so that users can clearly perceive their own actions;", - "FeedbackItem2": "Page feedback: After the operation, the current state is clearly represented by changes in the page elements.", - "Efficiency": "Efficiency", - "EfficiencyItem1": "Simplify the process: design simple and intuitive operating process;", - "EfficiencyItem2": "Clear and clear: clear language and clear expression, so that users quickly understand and then make decisions;", - "EfficiencyItem3": "Help users identify: The interface is straightforward, allowing users to quickly identify rather than recall, reducing the user's memory burden.", - "Controllability": "Controllability", - "ControllabilityItem1": "User decision-making: according to the scene can give the user action advice or security tips, but can not replace the user to make decisions;", - "ControllabilityItem2": "Results controllable: Users are free to perform actions, including undoing, falling back, and terminating the current operation.", - "ButtonText": "Toggle", - "HeaderTemplateTitle": "Header Template", - "HeaderTemplateIntro": "Customize the Header display content by setting HeaderTemplate", - "CollapseItemAttributeText": "The title of header", - "CollapseItemAttributeIcon": "The icon of header", - "CollapseItemAttributeTitleColor": "The color of header", - "CollapseItemAttributeClass": "The class of item", - "CollapseItemAttributeHeaderClass": "The class of header", - "CollapseItemAttributeHeaderTemplate": "Header template", - "CollapseItemAttributeIsCollapsed": "The item status collapsed" - }, - "BootstrapBlazor.Server.Components.Samples.DateTimeRanges": { - "Title": "Date Time Range Picker", - "Description": "Select a date in the same picker", - "NormalTitle": "Basic skills", - "NormalIntro": "Take 'day' as the basic unit, select a period of time", - "BindValueTitle": "Data two-way binding", - "BindValueIntro": "Click the confirm button, the time selection box value is the same as the text box value. Enable auto-close by setting AutoClose=\"true\". Directly display the selected value by setting ShowSelectedValue=\"true\"", - "MaxMinValueTitle": "Max and Min", - "MaxMinValueIntro": "set time range", - "DisabledTitle": "Disabled", - "DisabledIntro": "When the IsDisabled attribute value is set to true, the component disables input", - "SidebarTitle": "Sidebar with shortcut keys", - "SidebarIntro": "When the ShowSidebar property value is set to true, the component displays the shortcut sidebar", - "SidebarTip": "by setting ShowSidebar The parameter enables the display sidebar shortcut options function, by setting SidebarItems The parameter collection replaces the default shortcuts built into the component", - "TodayTitle": "Show today button", - "TodayIntro": "When the ShowToday attribute value is set to true, the today shortcut button is displayed below the component", - "TodayTip": "Click Today Button,time limit yyyy-MM-dd 00:00:00 to yyyy-MM-dd 23:59:59", - "SingleViewTitle": "Single view mode", - "SingleViewTip": "Allow independent selection of start and end times by setting RenderMode=\"Single\"", - "ValidateFormTitle": "Used in the form", - "ValidateFormIntro": "Build components into ValidateForm used in", - "AutoCloseTitle": "AutoClose", - "AutoCloseIntro": "Click on the sidebar shortcuts to Close the pop-up automatically", - "Submit": "Submit", - "Limit": "time limit", - "ViewModeTitle": "ViewMode", - "ViewModeIntro": "By setting ViewMode=\"DatePickerViewMode.Year\", the component view is the year view, and by setting ViewMode=\"DatePickerViewMode.Month\", the component view is the year view.", - "Feature": "Feature", - "FeatureShowLunar": "Lunar", - "FeatureShowSolarTerm": "Solar Term", - "FeatureShowFestivals": "Festivals", - "FeatureShowHolidays": "Holidays" - }, - "BootstrapBlazor.Server.Components.Samples.Ips": { - "IpTitle": "IpAddress", - "IpSubTitle": "The IP Address component is a reusable component for entering and validating IP addresses.", - "IpNormalTitle": "Basic usage", - "IpNormalIntro": "Enter and display the ip address in sections, for example: 192.168.1.1", - "IsDisabledTitle": "IsDisabled", - "IsDisabledIntro": "Make the component disabled by setting IsDisabled" - }, - "BootstrapBlazor.Server.Components.Samples.Displays": { - "Title": "Display", - "SubTitle": "Displays static text data", - "BasicUsageTitle": "Basic usage", - "BasicUsageIntro": "Show only", - "BindWayTitle": "Bind data in both directions", - "BindWayIntro": "Two-way binding automatically gets the display labels in the resource file", - "BindWayP1": "When the Display components turn on bidirectional binding, the Display/DisplayName label value is automatically obtained based on the Model property value of the binding and appears as a pre-Label, with DisplayText properties you can customize the display of the pre-label, or by turning off the display of the pre-label through the ShowLabel property", - "DataTypeTitle": "Generic binding", - "DataTypeIntro": "The Display component has built-in processing of enumerated collections array, customize formatting or callback delegate methods if they do not meet the criteria", - "EditorFormTitle": "Used within the form", - "EditorFormIntro": "The Display component is used in form components EditorForm, and is used in detail pages and is not editable", - "FormatStringTitle": "Custom format", - "FormatStringIntro": "When you set the FormatString property value to yyyy-MM-dd, the component displays a time format of the year and day", - "LookupTitle": "Lookup", - "LookupIntro": "Set the Lookup value to IEnumerable<SelectedItem> collection, through which the component will perform translations through the Value display Text", - "LookupP1": "In this example, the component Value='@IntValue' set Lookup='@IntValueSource' component to display the Value corresponding to the value of the Text Value", - "ShowLabel": "Whether to display the front label", - "DisplayText": "The front label displays text", - "FormatString": "The numerically formatted string", - "Formatter": "TableHeader instance", - "TypeResolver": "It is used internally when the type resolution callback method tvalue is an array instance", - "BasicUsage": "Basic usage", - "BindWayCustomLabel": "Custom labels", - "BindWayP2": "Set the DisplayText value to custom label ", - "BindWayOccupants": "Occupants", - "BindWayP3": "The value of DisplayText is displayed when ShowLabel is true, regardless of whether the value is set", - "BindWayNotOccupants": "Do not occupy seats", - "BindWayP4": "The value of DisplayText is not displayed when the ShowLabel is false", - "Integer": "Integer", - "Enum": "Enumerate", - "Collection": "Collection", - "Arr": "Array", - "FormatStringSettingText": "Set up", - "FormatStringP": "The Display component binding byte[] array, formatted as an example of base64 encoded string", - "ShowTooltipTitle": "Show Tooltip", - "ShowTooltipIntro": "Wrapper with Tooltip or ShowTooltip=\"true\" component for show tooltip title" - }, - "BootstrapBlazor.Server.Components.Samples.DropdownWidgets": { - "Title": "DropdownWidget", - "SubTitle": "More for head information summary presentation", - "BasicUsageTitle": "Basic usage", - "BasicUsageIntro": "Write pendant content directly on the page through ChildContent", - "AttributeTitle": "DropdownWidgetItem", - "Icon": "Widget icon", - "BadgeColor": "Badge color", - "HeaderColor": "Header color", - "BadgeNumber": "The number of badges displayed", - "ShowArrow": "Whether to display a small arrow", - "MenuAlignment": "Menu alignment", - "HeaderTemplate": "Header template", - "BodyTemplate": "Body template", - "FooterTemplate": "Footer template", - "BasicUsageMessage": "You have 4 unread messages", - "BasicUsageViewMessage": "View all messages", - "BasicUsageNotify": "You have 10 unread notifications", - "BasicUsageViewNotify": "View all notifications", - "BasicUsageTasks": "You have 3 tasks", - "BasicUsageViewTasks": "View all tasks", - "OnItemCloseAsync": "Close dropdown widget item callback method" - }, - "BootstrapBlazor.Server.Components.Samples.Empties": { - "Title": "Empty", - "SubTitle": "Sub Title PlaceHolder", - "NormalTitle": "Basic usage", - "NormalIntro": "Just add Empty tag", - "ImageTitle": "Set the path to the empty state picture", - "ImageIntro": "Just set the Image property", - "TemplateTitle": "Customize the empty state template", - "TemplateIntro": "The inner set renders custom components Template labels", - "Image": "Customize the picture path", - "Text": "Custom description information", - "TextDefaultValue": "There is no description at this time", - "Width": "Customize the width of the picture", - "Height": "Customize the height of the picture", - "Template": "Custom templates", - "ChildContent": "ChildContent", - "ImageText": "No data at this time", - "TemplateText": "Customize the empty state template", - "TemplateIButtonText": "Go back to the previous page" - }, - "BootstrapBlazor.Server.Components.Samples.GroupBoxes": { - "Title": "GroupBox", - "SubTitle": "Simulate WinForm's GroupBox components", - "BasicUsageTitle": "Basic usage", - "BasicUsageIntro": "Put your own components inside the GroupBox", - "AttTitle": "Set the component title", - "GroupTitle": "An example of a form", - "GroupP1": "I'm an example of GroupBox", - "GroupP2": "For more examples, please refer to the EditorForms Form Example [the portal]" - }, - "BootstrapBlazor.Server.Components.Samples.LinkButtons": { - "LinkButtonsComTitle": "LinkButton", - "LinkButtonsSubTitle": "Provider A html tag as Button", - "LinkButtonTextTitle": "LinkButton", - "LinkButtonTextIntro": "Set Text for displayed text", - "LinkButtonText": "LinkButton", - "LinkButtonUrlTitle": "Navigation Url", - "LinkButtonUrlIntro": "Set Url for navigation Url", - "LinkButtonTitleTitle": "Tooltip", - "LinkButtonTitleIntro": "Set Title for tooltip", - "LinkButtonTitleDetail": "show Tooltip when hover on this button", - "LinkButtonImageTitle": "Image", - "LinkButtonImageIntro": "Set ImageUrl for image", - "LinkButtonChildTitle": "Template", - "LinkButtonChildIntro": "Set ChildContent for customer template", - "LinkButtonOnClickTitle": "OnClick", - "LinkButtonOnClickIntro": "Set OnClick handler onclick event", - "LinkButtonIconTitle": "Icon", - "LinkButtonIconIntro": "Set Icon for display as icon button", - "LinkButtonColorTitle": "Color", - "LinkButtonColorIntro": "Set Color change the color of text", - "LinkButtonIsDisabledTitle": "Disabled", - "LinkButtonIsDisabledIntro": "Set IsDisabled for disable the link button", - "LinkButtonVerticalTitle": "Vertical", - "LinkButtonVerticalIntro": "Set IsVertical for vertical layout the icon and text", - "Text": "Text", - "Url": "Url", - "Title": "Tooltip Title", - "ImageUrl": "ImageUrl", - "TooltipPlacement": "Tooltip placement", - "ChildContent": "ChildContent", - "OnClick": "OnClick", - "Icon": "Icon", - "LinkButtonTitleTooltip": "this is Tooltip title", - "LinkButtonIsDisabledText": "Disabled", - "LinkButtonColorText": "Button", - "LinkButtonVerticalText": "TestButton" - }, - "BootstrapBlazor.Server.Components.Samples.ListViews": { - "ListViewsTitle": "ListView", - "ListViewsSubTitle": "Provides rule arrangement controls", - "ProductListText": "The list of products", - "BasicUsageTitle": "Basic usage", - "BasicUsageIntro": "Apply to a large number of duplicate data implementation rule arrangements", - "BasicUsageP1": "The OnListViewItemClick event is triggered when you click on the image", - "PaginationTitle": "Paginated display", - "PaginationIntro": "Set the Pageable display paginated components", - "GroupTitle": "Group display", - "GroupIntro": "Set up grouping GroupName data. set the group order by GroupOrderCallback", - "CollapseTitle": "Collapsable", - "CollapseIntro": "Set up grouping can collapable via Collapsible=\"true\"", - "Collapsible": "Whether to collapsable", - "IsAccordionTitle": "Group accordion", - "IsAccordionIntro": "Set up grouping can accordion via IsAccordion=\"true\"", - "Items": "Component data source", - "Pageable": "Whether to paginated", - "HeaderTemplate": "ListView Header template", - "BodyTemplate": "ListView Body template", - "FooterTemplate": "ListView Footer template", - "Collapse": "Group collapse", - "IsAccordion": "Group accordion", - "OnQueryAsync": "Asynchronous query callback method", - "OnListViewItemClick": "The ListView element calls back when it clicks on the delegate", - "QueryAsync": "Manually query data methods", - "CollapsedGroupCallback": "Callback for set the IsCollapsed parameter of Collapse component", - "GroupOrderCallback": "Callback for set the order of group", - "GroupItemOrderCallback": "Callback for set the order of items on group", - "GroupHeaderTextCallback": "Callback for set the header text of group" - }, - "BootstrapBlazor.Server.Components.Samples.Locators": { - "LocatorsTitle": "Get the IP geographic location", - "LocatorsSubTitle": "More for system log tracking and analysis", - "LocatorsNormalTitle": "Basic usage", - "LocatorsNormalIntro": "The injection service displays client geographic location information", - "LocatorsNormalDescription": "Introduction to usage", - "LocatorsNormalInjectIPLocator": "The component uses the injection service IIPLocatorProvider call the Locate method", - "LocatorsNormalTipsTitle": "Some geographic location query interfaces may return character sets from other character sets such asgbk, and the program may report an error", - "LocatorsNormalTips1": "Solution:", - "LocatorsNormalTips2": "The Startup file add the following phrase to the ConfigureServices method", - "LocatorsNormalExtendDescription": "Extend the custom geo-location query interface", - "LocatorsNormalExtend1": "1. Implement a custom locator", - "LocatorsNormalExtend2": "2. Configure a custom locator", - "LocatorsNormalExtend3": "3. Use locator", - "LocatorsNormalCustomerLocator": "Add CustomerLocatorProvider to the service container using the AddSingleton method", - "LocatorsNormalIpTitle": "IP test data", - "LocatorsNormalTips3": "Shandong, China Unicom", - "LocatorsNormalTips4": "Shushan District Hefei, Anhui China Telecom", - "LocatorsNormalInputText": "IpAddress", - "LocatorsNormalDisplayText": "Geographical location", - "LocatorsNormalButtonText": "Locating", - "LocatorsProviderDesc": "

The component library has two built-in free online geolocation locators, BaiduIpLocatorProvider BaiduIpLocatorProviderV2

The component library has a built-in paid online geolocation locator BootstrapBlazor.JuHeIpLocatorProvider Nuget package Official website address

The component library has a built-in free offline geolocation locator BootstrapBlazor.IP2Region Nuget package

" - }, - "BootstrapBlazor.Server.Components.Samples.Print": { - "PrintsTitle": "Print", - "PrintsSubTitle": "Used to print a document or a local view", - "PrintsTips1": "Set up PreviewUrl, open a new page for print preview and click the print button on this page for page printing", - "PrintsTips2": "If you are printing a button in the Dialog component when you do not set the PreviewUrl, the pop-up contents are printed", - "PrintsButtonText": "Print", - "PrintButtonTitle": "Basic usage", - "PrintButtonIntro": "Print the page by clicking the print button", - "PrintsButtonDescription": "After clicking the print button below, a new page pops up for print preview, confirms that it is correct, and then clicks the print button in the print preview page for printer selection", - "PrintDialogTitle": "Print the bullet window", - "PrintDialogIntro": "Turn on printing by setting up the ShowPrint", - "PrintDialogP": "In this example, the pop-up window content is a custom component {0} the Footer where the button itself is located is hidden, so the Print button built into the pop-up window cannot be displayed, and setting the {1} makes the printThe button appears in the title bar", - "PrintServiceTitle": "Print service", - "PrintServiceIntro": "By setting up the content components to print, call the print service directly print jobs. Printing Service PrintService Service Document [Portal]", - "PrintsDialogTitle": "The data query window" - }, - "BootstrapBlazor.Server.Components.Samples.Tags": { - "TagsTitle": "Tag", - "TagsSubTitle": "Used for marking and selection.", - "Tag1": "Label I", - "Tag2": "Label II", - "Tag3": "Label III", - "Tag4": "Label IV", - "Tag5": "Label V", - "Tag6": "Label VI", - "Tag7": "Label VII", - "TagsNormalTitle": "Basic usage", - "TagsNormalIntro": "Non floating elements in the page will not disappear automatically.", - "TagsCloseButtonTitle": "Close button", - "TagsCloseButtonIntro": "Provides a label for the close button", - "TagsIconTitle": "With Icon", - "TagsIconIntro": "Improve readability when representing a state.", - "TagsChildContent": "ChildContent", - "TagsClass": "Class", - "TagsColor": "Color", - "TagsIcon": "Icon", - "TagsShowDismiss": "Close button", - "TagsOnDismiss": "Close label callback method" - }, - "BootstrapBlazor.Server.Components.Samples.Timelines": { - "TimelinesTitle": "Timeline", - "TimelinesSubTitle": "Visualize time flow information", - "TimelinesNormalTitle": "Basic usage", - "TimelinesNormalIntro": "Timeline can be split into multiple activities
arranged in positive or reverse order of timestamps, which are an important feature that distinguishes them from other controls, and should be used with care to distinguish them from Step component.", - "TimelinesNormalDescription": "sort:", - "TimelinesCustomNodeStyleTitle": "Customize the node style", - "TimelinesCustomNodeStyleIntro": "You can customize the node color according to the actual scene, or use the icon directly.", - "TimelinesLeftTitle": "Shown on the left", - "TimelinesLeftIntro": "Content takes turns appearing on the left side of the timeline", - "TimelinesLeftDescription": "Control the content appearing on the left side of the timeline by setting the IsLeft property", - "TimelinesAlternateTitle": "Alternate presentations", - "TimelinesAlternateIntro": "Content appears alternately on both sides of the timeline", - "TimelinesAlternateDescription": "Control the alternating timeline left and right by setting the IsAlternate property", - "TimelinesDisplayCustomComponentTitle": "Show custom components", - "TimelinesDisplayCustomComponentIntro": "Custom components are displayed on the timeline", - "TimelinesDisplayCustomComponentDescription": "Control the custom components that the timeline displays by setting the CustomerComponent of the TimelineItem", - "TimelinesSelectedItem1": "Positive order", - "TimelinesSelectedItem2": "Reverse order", - "TimelineItemContent1": "Creation time", - "TimelineItemContent2": "Approved", - "TimelineItemContent3": "The event starts on schedule", - "TimelineItemContent4": "The default style of the node", - "TimelineItemContent5": "Support for custom colors", - "TimelineItemContent6": "Icons are supported", - "TimelinesDescription1": "Real-time output", - "TimelinesDescription2": "Counter", - "TimelinesDescription3": "Weather forecast information", - "TimelinesItems": "A collection of data", - "TimelinesIsReverse": "Whether to display in reverse order", - "TimelinesIsLeft": "Whether the left side presents content", - "TimelinesIsAlternate": "Whether to alternate the content", - "TimelinesColor": "Node color", - "TimelinesContent": "The body of the content", - "TimelinesIcon": "Node icon", - "TimelinesDescription": "The node description text", - "TimelinesComponent": "Node custom components", - "TimelinesAttributeTitle": "TimelineItem attributes" - }, - "BootstrapBlazor.Server.Components.Samples.Searches": { - "SearchesTitle": "Search box", - "SearchesSubTitle": "Used for data search", - "SearchesPlaceHolder": "Search for examples", - "SearchesNormalTitle": "Basic usage", - "SearchesNormalIntro": "Enter some of the data to search", - "SearchesNormalDescription": "Please enter 1234 to get the Smart Prompt and turn on auto focus by setting IsAutoFocus='true'", - "SearchesDisplayButtonTitle": "The Empty button is displayed", - "SearchesDisplayButtonIntro": "Control whether the Empty button is displayed by setting the ShowClearButton parameter", - "SearchesKeyboardsTitle": "Keyboard input instant search", - "SearchesKeyboardsIntro": "Control whether search operations are performed in real time by setting IsTriggerSearchByInput parameter", - "SearchesValidateFormTitle": "ValidateForm", - "SearchesValidateFormIntro": "Inside ValidateForm", - "SearchesNoDataTip": "Auto-complete data prompts when there is no match", - "SearchesNoDataTipDefaultValue": "No matching data", - "SearchesButtonLoadingIcon": "Searching for button icon", - "SearchesClearButtonIcon": "Clear the button color", - "SearchesClearButtonText": "Empty the button text", - "SearchesClearButtonColor": "Clear the button color", - "SearchesButtonColor": "Search for button color", - "SearchesIsAutoFocus": "Whether to get the focus automatically", - "SearchesIsAutoClearAfterSearch": "Click Search to automatically empty the search box", - "SearchesIsTriggerSearchByInput": "Whether the search mode is triggered by input, it is triggered by clicking the search button by default", - "SearchesShowClearButton": "Whether the Clear button is displayed", - "SearchesOnSearch": "Call back this delegate when you click Search", - "SearchesOnClear": "Click Recall this order when emptying", - "SearchesItemTemplateTitle": "Item Template", - "SearchesItemTemplateIntro": "By setting ItemTemplate and matching generic data, you can achieve any desired effect. In this example, by searching for any keyword, the backend calls any third-party search results and displays them. After selecting the search item, you can handle it yourself through the OnSelectedItemChanged callback method", - "SearchesShowPrefixIconTitle": "ShowPrefixIcon", - "SearchesShowPrefixIconIntro": "Control whether to show the prefix icon by setting the ShowPrefixIcon parameter", - "SearchesShowPrefixIconDescription": "You can customize the prefix through PrefixIconTemplate. In this example, the Svg icon is used through the prefix template.", - "SearchesButtonTemplateTitle": "Button Template", - "SearchesButtonTemplateIntro": "Customize the buttons displayed by the component by setting ButtonTemplate", - "SearchesButtonTemplateDesc": "Customize the buttons displayed in front of the component by setting PrefixButtonTemplate", - "SearchesButtonTemplateDesc2": "In a custom template, you can call the OnClear OnSearch method inside the Search component with the context.", - "SearchesIsClearableTitle": "IsClearable", - "SearchesIsClearableIntro": "Display the clear icon by setting IsClearable=\"true\"", - "SearchesIsClearable": "Whether to display the clear icon", - "SearchesClearIcon": "Clear Icon", - "SearchesPrefixButtonTemplate": "Prefix button template", - "SearchesButtonTemplate": "Button template", - "SearchesIconTemplateTitle": "Icon Template", - "SearchesIconTemplateIntro": "Customize the icon displayed by the component by setting IconTemplate", - "SearchesIconTemplateDesc": "The search component context SearchContext<string> provides the OnClear OnSearch methods within the component" - }, - "BootstrapBlazor.Server.Components.Samples.Titles": { - "Title": "Title", - "SubTitle": "Used to set page title", - "Tips": "

NET6. 0 you can use the Microsoft PageTitle component to set the page title. This component additionally provides setting the current page title in the form of service

", - "BasicUsageTitle": "BasicUsage", - "BasicUsageIntro": "Add the Title component to the web page and set the text attribute", - "BasicUsageTips": "The Title component is used by ordinary components after setting text, and can be called by the service when the text attribute is not set", - "BasicUsageP": "Set the Text property", - "BasicUsageTitleText": "I am the title", - "BasicUsageP1": "Test page", - "AdvanceTitle": "Advanced usage", - "AdvanceIntro": "There is no need to add the Title component to the webpage, and the injection service TitleService is called", - "AdvanceB": "Pay attention:", - "AdvanceP": "When using this method, please add not set Text attribute in App or MainLayout or Page The Title component of ", - "FuncationParmeter": "I am the title", - "StaticTitle": "Static method", - "StaticIntro": "Call the TitleService static method directly", - "StaticB": "Pay attention", - "StaticDiv": "When using this method, please add not set Text attribute in App or MainLayout or PageThe Title component of " - }, - "BootstrapBlazor.Server.Components.Components.DemoBlock": { - "Title": "", - "TooltipText": "Copied" - }, - "BootstrapBlazor.Server.Components.Components.Tips": { - "Title": "Tips" - }, - "BootstrapBlazor.Server.Components.Components.AttributeTable": { - "Title": "Attributes" - }, - "BootstrapBlazor.Server.Components.Components.MethodTable": { - "Title": "Methods" - }, - "BootstrapBlazor.Server.Components.Common.AttributeItem": { - "Name": "Parameter", - "Description": "Description", - "Type": "Type", - "ValueList": "ValueList", - "DefaultValue": "DefaultValue" - }, - "BootstrapBlazor.Server.Components.Common.EventItem": { - "Name": "Parameter", - "Description": "Description", - "Type": "Type" - }, - "BootstrapBlazor.Server.Components.Common.MethodItem": { - "Title": "Methods", - "Name": "Parameter", - "Description": "Description", - "Type": "Type", - "Parameters": "Parameters", - "ReturnValue": "ReturnValue" - }, - "BootstrapBlazor.Server.Components.Layout.ComponentLayout": { - "Title": "Enterprise-level component library based on Bootstrap and Blazor", - "Example": "Example", - "Video": "Video", - "ViewRazorCode": "View Razor Code", - "ViewC#Code": "View C# Code", - "ViewExample": "View Example", - "IconTheme": "Icon", - "Group": "Community" - }, - "BootstrapBlazor.Server.Components.Samples.Alerts": { - "Title": "Alert", - "SubTitle": "Displays important alert messages.", - "BaseUsageText": "Basic usage", - "IntroText1": "Alert components are non-overlay elements in the page that does not disappear automatically.", - "CloseButtonUsageText": "Close button", - "IntroText2": "Customize the close button as texts or other symbols.", - "WithIconUsageText": "With Icon", - "IntroText3": "Displaying an icon improves readability.", - "ShowBarUsageText": "With Bar", - "IntroText4": "Show Tip", - "ShowBorderTitle": "Border", - "ShowBorderIntro": "Set ShowBorder=\"true\" show border", - "ShowShadowTitle": "Shadow", - "ShowShadowIntro": "Set ShowShadow=\"true\" Show shadow", - "AlertPrimaryText": "A simple primary alert—check it out!", - "AlertSecondaryText": "A simple secondary alert—check it out!", - "AlertSuccessText": "A simple success alert—check it out!", - "AlertDangerText": "A simple danger alert—check it out!", - "AlertWarningText": "A simple warning alert—check it out!", - "AlertInfoText": "A simple info alert—check it out!", - "AlertDarkText": "A simple dark alert—check it out!" - }, - "BootstrapBlazor.Server.Components.Samples.RibbonTabs": { - "RibbonTabsTitle": "RibbonTab", - "RibbonTabsDescription": "Office menu tab", - "RibbonTabsNormalTitle": "Basic usage", - "RibbonTabsNormalIntro": "Initialize the tab by setting Items", - "RibbonTabsFloatTitle": "Suspended", - "RibbonTabsFloatIntro": "By setting ShowFloatButton, the shrink button is displayed on the right side of the tab without occupying the main form space", - "RibbonTabsFloatContent": "I am the body content, I will move up after the menu is collapsed", - "RibbonTabsRightButtonsTemplateTitle": "top right button template", - "RibbonTabsRightButtonsTemplateIntro": "By setting RightButtonsTemplate some shortcut buttons can be added to the upper right corner of the tab", - "RibbonTabsRightButtonsTemplateContent": "Documentation", - "RibbonTabsShowFloatButtonAttr": "Display the small floating arrow", - "RibbonTabsOnFloatChanged": "Callback method when the suspension state of the component changes", - "RibbonTabsRibbonArrowUpIcon": "Tab up arrow icon", - "RibbonTabsRibbonArrowDownIcon": "Tab down arrow icon", - "RibbonTabsRibbonArrowPinIcon": "Tab Pinnable Icons", - "RibbonTabsShowFloatButton": "Display the small floating arrow", - "RibbonTabsItems": "Data source", - "RibbonTabsOnItemClickAsync": "Click the command button callback method", - "OnMenuClickAsyncAttr": "Click the command menu callback method", - "RibbonTabsRightButtonsTemplate": "Right button template", - "RibbonTabsItemsText1": "Document", - "RibbonTabsItems1": "Task 1", - "RibbonTabsItems2": "Task 2", - "RibbonTabsItems3": "Task 3", - "RibbonTabsItems4": "Open", - "RibbonTabsItems5": "Save", - "RibbonTabsItems6": "Save as", - "RibbonTabsItemsText2": "Edit", - "RibbonTabsItems7": "Open", - "RibbonTabsItems8": "Save", - "RibbonTabsItems9": "Save as", - "RibbonTabsItems10": "Task 1", - "RibbonTabsItems11": "Task 2", - "RibbonTabsItems12": "Task 3", - "ItemsGroupName1": "Group one", - "ItemsGroupName2": "Group two", - "RibbonTabsHeaderClickTitle": "Header click callback", - "RibbonTabsHeaderClickIntro": "Handler the event of click header via OnHeaderClickAsync", - "RibbonTabsAnchorTitle": "Anchor", - "RibbonTabsAnchorIntro": "Set IsSupportAnchor=\"true\" enable anchor support", - "RibbonTabsAnchorDesc": "Set EncodeAnchorCallback custom the encode hash rule, set DecodeAnchorCallback custom the decode hash rule" - }, - "BootstrapBlazor.Server.Components.Samples.Logouts": { - "LogoutsTitle": "Logout component", - "LogoutsDescription": "Used for site logout action", - "LogoutsNormalTitle": "Common usage", - "LogoutsNormalIntro": "Use the built-in template directly", - "LogoutsShowUserNameTitle": "Only show avatars", - "LogoutsShowUserNameIntro": "Set ShowUserName to false", - "LogoutsChildContentTitle": "Custom display template", - "LogoutsChildContentIntro": "Set ChildContent or write other components directly inside the component", - "LogoutsChildContentCustomDisplay": "Customize display content", - "LogoutsHeaderTemplateTitle": "Custom Login Information Template", - "LogoutsHeaderTemplateIntro": "set up HeaderTemplate", - "LogoutsHeaderTemplateUser1": "General manager", - "LogoutsHeaderTemplateUser2": "Admin", - "LogoutsLinkTemplateTitle": "Custom link template", - "LogoutsLinkTemplateIntro": "set up LinkTemplate", - "LogoutsLinkTemplatePersonalCenter": "personal center", - "LogoutsLinkTemplateSetup": "set up" - }, - "BootstrapBlazor.Server.Components.Samples.AutoRedirects": { - "Title": "AutoRedirect automatic jump component", - "Description": "Through the set address, automatically jump to the specified page when there is no mouse or keyboard action on the page", - "NormalTitle": "Common usage", - "NormalIntro": "By setting the Interval interval, when there is no mouse or keyboard action, it will automatically jump to the address set by RedirectUrl" - }, - "BootstrapBlazor.Server.Components.Samples.AnchorLinks": { - "AnchorLinkTitle": "AnchorLink", - "AnchorLinkDescribe1": "Apply to title strip", - "AnchorLinkDescribe2": "Anchor link, click to copy for easy sharing", - "AnchorLinkDemoTitle": "Common usage", - "AnchorLinkDemoIntroduction": "After placing the label click on the copy anchor link to the pasteboard", - "AnchorLinkTips1": "Anchor Link Component Properties", - "AnchorLinkTips2": "It is a required item, and the function of copying the anchor link will not be provided if it is not filled in", - "AnchorLinkTips3": "Component anchor icons are available via", - "AnchorLinkTips4": "The parameter is customized and the default is", - "AnchorLinkTips5": "TooltipText Used to set the prompt message after copying the address", - "AttrId": "Id", - "AttrIcon": "Icon", - "AttrText": "Display text", - "AttrTooltipText": "Tooltip text", - "AnchorLinkText": "I am a clickable anchor link" - }, - "BootstrapBlazor.Server.Components.Samples.QRCodes": { - "QRCodesTitle": "QRCode", - "QRCodesSubTitle": "Generate QR code", - "QRCodesNormalTitle": "Basic usage", - "QRCodesNormalIntro": "Click the Generate button to generate a QRCode", - "QRCodesContentTitle": "Direct build", - "QRCodesContentIntro": "Specify the contents of the QR code with the Content parameter", - "QRCodesWidthTitle": "Size", - "QRCodesWidthIntro": "Width of the QRCode", - "QRCodesColorTitle": "Color", - "QRCodesColorIntro": "DarkColor set the black color,LightColor set the white color", - "SuccessText": "QR code generated successfully", - "ClearText": "QR code clear successfully", - "OnGenerated": "Call back after QR code generation", - "OnCleared": "Call back after QR code clear", - "Width": "Size", - "ClearButtonText": "The text of Clear button", - "ClearButtonIcon": "The icon of Clear button", - "GenerateButtonText": "The text of Generate button", - "GenerateButtonIcon": "The icon of Generate button", - "ShowButtons": "Whether show the buttons", - "DarkColor": "The color of black", - "LightColor": "The color of white", - "QRCodesPlaceHolderValue": "Please input ...", - "QRCodesClearButtonTextValue": "Clear", - "QRCodesGenerateButtonTextValue": "Generate" - }, - "BootstrapBlazor.Server.Components.Samples.Anchors": { - "Title": "Anchor", - "SubTitle": "Hyperlinks to scroll on one page.", - "BaseUsageText": "Basic usage", - "IntroText1": "For displaying anchor hyperlinks on page and jumping between them.", - "IntroText2": "Click Anchor item try it", - "ContentText1": "

Cras mattis consectetur purus sit amet fermentum. Cras justo odio, dapibus ac facilisis in, egestas eget quam. Morbi leo risus, porta ac consectetur ac, vestibulum at eros.

Praesent commodo cursus magna, vel scelerisque nisl consectetur et. Vivamus sagittis lacus vel augue laoreet rutrum faucibus dolor auctor.

Aenean lacinia bibendum nulla sed consectetur. Praesent commodo cursus magna, vel scelerisque nisl consectetur et. Donec sed odio dui. Donec ullamcorper nulla non metus auctor fringilla.

Cras mattis consectetur purus sit amet fermentum. Cras justo odio, dapibus ac facilisis in, egestas eget quam. Morbi leo risus, porta ac consectetur ac, vestibulum at eros.

Praesent commodo cursus magna, vel scelerisque nisl consectetur et. Vivamus sagittis lacus vel augue laoreet rutrum faucibus dolor auctor.

", - "DescTarget": "Anchor Target Id", - "DescIsAnimation": "Enable scroll smooth", - "DescContainer": "Id of the element where the scroll bar is located", - "DescOffset": "The offset is used to adjust the gap use", - "DescChildContent": "Content" - }, - "BootstrapBlazor.Server.Components.Samples.Breadcrumbs": { - "Title": "Breadcrumb", - "Describe": "Display the path of the current page and quickly return to any previous page.", - "Block1Title": "Basic usage", - "Block1Intro": "Suitable for a wide range of basic usage." - }, - "BootstrapBlazor.Server.Data.Foo": { - "Name": "Name", - "DateTime": "DateTime", - "Address": "Address", - "Address.PlaceHolder": "required", - "Count": "Count", - "Count.PlaceHolder": "required", - "Complete": "Complete", - "Education": "Education", - "Hobby": "Hobby", - "ReadonlyColumn": "Readonly Column", - "Name.Required": "{0} is required.", - "Address.Required": "{0} is required.", - "Education.Required": "{0} is required.", - "Hobby.Required": "{0} is required.", - "Name.PlaceHolder": "required", - "Hobbies": "Swimming,Climb,Shoot,Chess", - "Foo.Name": "Zhangsan {0}", - "Foo.Address": "Lane {0} of Jinshajiang Road, Putuo District, Shanghai", - "Foo.Address2": "Earth, China, Lane {0} of Jinshajiang Road, Putuo District, Shanghai. Here is an example of super long cell", - "Foo.BindValue": "BindValue", - "True": "Pass", - "False": "Failed", - "NullItemText": "Not Set" - }, - "BootstrapBlazor.Server.Components.Samples.ValidateForms.ComplexFoo": { - "Name": "Name", - "Name.Required": "{0} is required." - }, - "BootstrapBlazor.Server.Components.Samples.ValidateForms.Dummy2": { - "Name": "Name", - "Name.Required": "Dummy2 {0} is required" - }, - "BootstrapBlazor.Server.Data.EnumEducation": { - "PlaceHolder": "Click to select ...", - "Primary": "Primary", - "Middle": "Middle" - }, - "BootstrapBlazor.Server.Components.Components.ThemeChooser": { - "Title": "Click to choose theme", - "HeaderText": "Themes" - }, - "BootstrapBlazor.Server.Components.Samples.Uploads.Person": { - "Name": "Name", - "Name.Required": "{0} is required", - "Picture": "File", - "Picture.Required": "{0} is required" - }, - "BootstrapBlazor.Server.Components.Components.CultureChooser": { - "Label": "Language:" - }, - "BootstrapBlazor.Server.Components.Components.GlobalSearch": { - "SearchPlaceHolder": "Search", - "SearchingText": "Searching ...", - "SearchResultText": "Found {0} results in {1}ms", - "LogoText": "Powered by BootstrapBlazor", - "SearchResultPlaceHolder": "Type something to search", - "EmptySearchResultPlaceHolder": "No match searches", - "EnterKeyText": "to Select", - "ArrowKeyText": "to Navigate", - "EscKeyText": "to Close" - }, - "BootstrapBlazor.Server.Components.Components.Header": { - "DownloadText": "Download", - "HomeText": "Home", - "IntroductionText": "Documents", - "TutorialsText": "Tutorials", - "FullScreenTooltipText": "Full Screen" - }, - "BootstrapBlazor.Server.Components.Layout.BaseLayout": { - "SiteTitle": "Bootstrap Blazor enterprise-level UI component library", - "FlowText": "Workflow", - "InstallAppText": "Install PWA App", - "InstallText": "Install", - "CancelText": "Cancel", - "Title": "View update log", - "ChatTooltip": "Azure OpenAI", - "LightMode": "Light Mode", - "DarkMode": "Dark Mode" - }, - "BootstrapBlazor.Server.Components.Layout.NavMenu": { - "GetStarted": "Getting Started", - "Introduction": "Introduction", - "Install": "Install", - "ProjectTemplate": "Template", - "HostMode": "Hosting Models", - "Globalization": "Globalization", - "Localization": "Localization", - "WebAppBlazor": "WebApp Blazor", - "ServerBlazor": "Server-side Blazor", - "ClientBlazor": "Client-side Blazor", - "MauiBlazor": "Maui Blazor", - "Labels": "Labels", - "ZIndex": "Layout", - "Breakpoints": "Breakpoints", - "Theme": "Theme", - "GlobalException": "Global Exception", - "GlobalOption": "Global Option", - "LayoutPage": "Admin Template", - "FAIcon": "FontAwesome Icons", - "Components": "Components", - "Client": "WebClientService", - "LayoutComponents": "Layouts", - "Divider": "Divider", - "DragDrop": "DragDrop", - "Layout": "Layout", - "FullScreen": "FullScreen", - "Footer": "Footer", - "Row": "Row", - "Scroll": "Scroll", - "Skeleton": "Skeleton", - "Split": "Split", - "Responsive": "Responsive", - "NavigationComponents": "Navigations", + "BootstrapBlazor.Server.Components.Layout.NavMenu": { + "Affix": "Affix", + "Ajax": "Ajax", + "Alert": "Alert", "Anchor": "Anchor", "AnchorLink": "AnchorLink", - "AutoRedirect": "Auto Redirect", - "Breadcrumb": "Breadcrumb", - "Dropdown": "Dropdown", - "Logout": "Logout", - "GoTop": "GoTop", - "Menu": "Menu", - "Navigation": "Nav", - "Pagination": "Pagination", - "Steps": "Step", - "Tab": "Tab", - "NotificationComponents": "Notifications", - "Alert": "Alert", - "Console": "Console", - "Dialog": "Dialog", - "Dispatch": "Dispatch", - "Drawer": "Drawer", - "EditDialog": "EditDialog", - "FloatingLabel": "FloatingLabel", - "Message": "Message", - "Modal": "Modal", - "Light": "Light", - "PopConfirm": "PopConfirmButton", - "Progress": "Progress", - "SearchDialog": "SearchDialog", - "SwitchButton": "Switch Button", - "Spinner": "Spinner", - "SweetAlert": "SweetAlert", - "Timer": "Timer", - "Toast": "Toast", - "FormsComponents": "Forms", + "AntDesignIcon": "AntDesign Icon", + "AudioDevice": "IAudioDevice", "AutoComplete": "AutoComplete", "AutoFill": "AutoFill", + "AutoRedirect": "Auto Redirect", + "Avatar": "Avatar", + "AvatarUpload": "AvatarUpload", + "AzureOpenAI": "AzureOpenAI", + "AzureTranslator": "AzureTranslator", + "Badge": "Badge", + "BaiduOcr": "IBaiduOcr", + "BarcodeGenerator": "BarcodeGenerator", + "BarcodeReader": "BarcodeReader", "Block": "Block", + "Bluetooth": "IBluetooth", + "BootstrapIcon": "Bootstrap Icons", + "Breadcrumb": "Breadcrumb", + "Breakpoints": "Breakpoints", + "BrowserFinger": "BrowserFingerService", "Button": "Button", + "ButtonUpload": "ButtonUpload", + "Calendar": "Calendar", + "Camera": "Camera", + "Captcha": "Captcha", + "Card": "Card", + "CardUpload": "CardUpload", + "Carousel": "Carousel", "Cascader": "Cascader", + "ChartBar": "Bar", + "ChartBubble": "Bubble", + "ChartDoughnut": "Doughnut", + "ChartLine": "Line", + "ChartPie": "Pie", + "Charts": "Chart", + "ChartSummary": "Introduction", "Checkbox": "Checkbox", "CheckboxList": "CheckboxList", + "CherryMarkdown": "Cherry-Markdown", + "Circle": "Circle", + "Client": "WebClientService", + "ClientBlazor": "Client-side Blazor", + "Clipboard": "Clipboard Service", + "ClockPicker": "ClockPicker", + "CodeEditor": "CodeEditor", + "Collapse": "Collapse", "ColorPicker": "ColorPicker", + "Components": "Components", + "ConnectionService": "ConnectionService", + "Console": "Console", + "ContextMenu": "ContextMenu", + "CountButton": "CountButton", + "CountUp": "CountUp", + "DataComponents": "Datas", + "DataPackageAdapter": "DataPackageAdapter", "DateTimePicker": "DateTimePicker", "DateTimeRange": "DateTimeRange", + "DialButton": "DialButton", + "Dialog": "Dialog", + "DialogService": "DialogService", + "Dispatch": "Dispatch", + "Display": "Display", + "Divider": "Divider", + "DockViewColumn": "DockView Column", + "DockViewComplex": "DockView Complex", + "DockViewComponents": "DockView", + "DockViewComponents2": "DockViewV2", + "DockViewIndex": "DockView Overview", + "DockViewLayout": "DockView Custom", + "DockViewLock": "DockView Lock", + "DockViewNest": "DockView Nest", + "DockViewRow": "DockView Row", + "DockViewStack": "DockView Stack", + "DockViewTitle": "DockView Title", + "DockViewV2Column": "DockViewV2 Column", + "DockViewV2Complex": "DockViewV2 Complex", + "DockViewV2Group": "DockViewV2 Group", + "DockViewV2Index": "DockViewV2 Overview", + "DockViewV2Layout": "DockViewV2 Custom", + "DockViewV2Lock": "DockViewV2 Lock", + "DockViewV2Nest": "DockViewV2 Nest", + "DockViewV2Row": "DockViewV2 Row", + "DockViewV2Title": "DockViewV2 Title", + "DockViewV2Visible": "DockViewV2 Visible", + "DockViewVisible": "DockView Visible", + "Dom2ImageService": "Dom2HtmlService", + "Download": "Download", + "DragDrop": "DragDrop", + "Drawer": "Drawer", + "DrawerService": "DrawerService", + "DriverJs": "DriverDotnetJs", + "Dropdown": "Dropdown", + "DropdownWidget": "DropdownWidget", + "DropUpload": "DropUpload", + "EditDialog": "EditDialog", "Editor": "Editor", "EditorForm": "EditorForm", + "ElementIcon": "Element Icon", + "EmbedPdf": "Embed PDF", + "Empty": "Empty", + "ExportPdfButton": "ExportPdfButton", "EyeDropper": "EyeDropper Service", + "FAIcon": "FontAwesome Icons", + "Festival": "ICalendarFestival", + "FileIcon": "FileIcon", + "FileViewer": "FileViewer", + "FlipClock": "FlipClock", + "FloatingLabel": "FloatingLabel", + "FluentSystemIcon": "Fluent Icons", + "Footer": "Footer", + "FormsComponents": "Forms", + "FullScreen": "FullScreen", + "FullScreenButton": "FullScreenButton", + "Gantt": "Gantt", + "Geolocation": "GeoLocationService", + "GetStarted": "Getting Started", + "GlobalException": "Global Exception", + "Globalization": "Globalization", + "GlobalOption": "Global Option", + "GoTop": "GoTop", + "GroupBox": "GroupBox", + "Handwritten": "HandWritten", + "HikVision": "HikVisionWebPlugin", + "Holiday": "ICalendarHoliday", + "HostMode": "Hosting Models", + "Html2Image": "IHtml2Image", + "Html2Pdf": "IHtml2Pdf", + "HtmlRenderer": "HtmlRenderer", + "Icon": "Icon", + "IconPark": "ByteDance IconPark", + "Icons": "Icons", + "IFrame": "IFrame", + "ImageCropper": "ImageCropper", + "ImageViewer": "ImageViewer", "Input": "Input", - "InputNumber": "InputNumber", "InputGroup": "InputGroup", + "InputNumber": "InputNumber", + "InputUpload": "InputUpload", + "Install": "Install", + "IntersectionObserver": "IntersectionObserver", + "Introduction": "Introduction", "Ip": "IpAddress", + "JSExtension": "JSRuntime Extensions", + "Labels": "Labels", + "Layout": "Layout", + "LayoutComponents": "Layouts", + "LayoutPage": "Admin Template", + "Light": "Light", + "LinkButton": "LinkButton", + "ListGroup": "ListGroup", + "ListView": "ListView", + "Live2DDisplayIntro": "Live2D Widget", + "Localization": "Localization", + "Locator": "IpLocatorFactory", + "Logout": "Logout", + "Lookup": "ILookupService", "Markdown": "Markdown", - "CherryMarkdown": "Cherry-Markdown", + "Marquee": "Marquee", + "Mask": "MaskService", + "MaterialIcon": "Material Icons", + "MauiBlazor": "Maui Blazor", + "Meet": "Meet", + "Menu": "Menu", + "MenuAccordion": "Accordion", + "MenuExpandAll": "Expand", + "Mermaid": "Mermaid", + "Message": "Message", + "MindMap": "Mind Map", + "Modal": "Modal", + "ModbusComponents": "Modbus Services", + "ModbusFactory": "IModbusFactory", + "MouseFollowerIntro": "MouseFollower", "MultiSelect": "MultiSelect", + "Navbar": "Navbar", + "Navigation": "Nav", + "NavigationComponents": "Navigations", + "NetworkMonitor": "Network Monitor", + "Notification": "NotificationService", + "NotificationComponents": "Notifications", + "OctIcon": "Oct Icons", + "OfficeViewer": "Office Viewer", + "OnlineText": "Online Users", + "OnScreenKeyboard": "OnScreenKeyboard", + "OpcDaService": "OpcDaServer", + "OtherComponents": "Others", + "OtpInput": "OtpInput", + "Pagination": "Pagination", + "PdfReader": "PDF Reader", + "PdfViewer": "PDF Viewer", + "Player": "Player", + "PopConfirm": "PopConfirmButton", + "Popover": "Popover", + "Print": "Print", + "PrintService": "PrintService", + "Progress": "Progress", + "ProjectTemplate": "Template", + "PulseButton": "PulseButton", + "QRCode": "QRCode", + "QueryBuilder": "QueryBuilder", "Radio": "Radio", "Rate": "Rate", + "RDKit": "RDKit", + "Recognizer": "Recognizer", + "Reconnector": "Reconnector", + "Repeater": "Repeater", + "Responsive": "Responsive", + "RibbonTab": "RibbonTab", + "Row": "Row", + "Scroll": "Scroll", + "Search": "Search", + "SearchDialog": "SearchDialog", + "Segmented": "Segmented", "Select": "Select", + "SelectCity": "City Selector", "SelectObject": "Select-Object", + "SelectProvince": "Province Selector", + "SelectRegion": "Region Selector", "SelectTable": "Select-Table", "SelectTree": "Select-Tree", + "SerialPortComponents": "SerialPort Services", + "SerialPortFactory": "ISerialPortFactory", + "ServerBlazor": "Server-side Blazor", + "Services": "Services", + "ShieldBadge": "ShieldBadge", + "SignaturePad": "SignaturePad", + "Skeleton": "Skeleton", + "SlideButton": "SlideButton", "Slider": "Slider", + "SmilesDrawer": "SmilesDrawer", + "SocketAutoConnect": "Reconnect", + "SocketAutoReceive": "Auto Receive", + "SocketComponents": "Socket Services", + "SocketDataEntity": "DataEntity", + "SocketManualReceive": "Manual Receive", + "SortableList": "SortableList", + "Speech": "Speech", + "SpeechComponents": "Speech", + "SpeechIntro": "Introduction", + "SpeechWave": "SpeechWave", + "Spinner": "Spinner", + "Split": "Split", + "Splitting": "Splitting", + "Stack": "Stack", + "Steps": "Step", + "SvgEditor": "SvgEditor", + "SweetAlert": "SweetAlert", "Switch": "Switch", - "Textarea": "Textarea", - "Toggle": "Toggle", - "Transfer": "Transfer", - "Upload": "Upload", - "ValidateForm": "ValidateForm", - "DataComponents": "Datas", - "Ajax": "Ajax", - "Avatar": "Avatar", - "Badge": "Badge", - "BarcodeReader": "BarcodeReader", - "Card": "Card", - "Calendar": "Calendar", - "Camera": "Camera", - "Captcha": "Captcha", - "Carousel": "Carousel", - "Circle": "Circle", - "Collapse": "Collapse", - "CountUp": "CountUp", - "Display": "Display", - "DropdownWidget": "DropdownWidget", - "GroupBox": "GroupBox", - "Handwritten": "HandWritten", - "LinkButton": "LinkButton", - "ListView": "ListView", - "ListGroup": "ListGroup", - "Locator": "IpLocatorFactory", - "Icon": "Icon", - "IFrame": "IFrame", - "ImageViewer": "ImageViewer", - "FileIcon": "FileIcon", - "Popover": "Popover", - "Print": "Print", - "Repeater": "Repeater", - "QRCode": "QRCode", - "Search": "Search", - "Tag": "Tag", - "Timeline": "Timeline", - "Title": "TitleService", - "Download": "Download", - "Tooltip": "Tooltip", - "Reconnector": "Reconnector", - "Tree": "Tree", - "TreeView": "TreeView", - "TableComponents": "Table", + "SwitchButton": "Switch Button", + "Synthesizer": "Synthesizer", + "Tab": "Tab", "Table": "Table", + "TableAttribute": "Attribute", + "TableAutoRefresh": "AutoRefresh", "TableBase": "Base", - "TableRow": "Row", + "TableCell": "Cell", "TableColumn": "Column", - "TableColumnDrag": "Column Dragging", - "TableColumnResizing": "Column Width", - "TableColumnList": "Columns Show/Hide", "TableColumnAlign": "Column Alignment", "TableColumnCopy": "Column Replication", + "TableColumnDrag": "Column Dragging", + "TableColumnList": "Columns Show/Hide", + "TableColumnResizing": "Column Width", "TableColumnTemplate": "Column Template", - "TableCell": "Cell", + "TableComponents": "Table", "TableDetail": "Detail", + "TableDialog": "Table-Dialog", "TableDynamic": "Dynamic", + "TableDynamicExcel": "Excel-DataTable", "TableDynamicObject": "DynamicObject", - "TableSearch": "Search", + "TableEdit": "Edit", + "TableExcel": "Excel-Items", + "TableExport": "Export", "TableFilter": "Sort/Filter", + "TableFixColumn": "FixColumn", "TableFixHeader": "FixHeader", + "TableFooter": "Footer", "TableHeaderGroup": "HeaderGroup", - "TableFixColumn": "FixColumn", + "TableLoading": "Table-Loading", + "TableLookup": "Lookup", "TablePage": "Pagination", + "TableRow": "Row", + "TableSearch": "Search", + "TableSelection": "Selection", "TableToolbar": "Toolbar", - "TableEdit": "Edit", "TableTracking": "Tracking", - "TableDynamicExcel": "Excel-DataTable", - "TableExcel": "Excel-Items", - "TableExport": "Export", - "TableSelection": "Selection", - "TableAutoRefresh": "AutoRefresh", - "TableFooter": "Footer", - "TableDialog": "Table-Dialog", - "TableWrap": "Wrap", "TableTree": "Table-Tree", - "TableLoading": "Table-Loading", - "TableLookup": "Lookup", "TableVirtualization": "Row Virtualization", - "TableAttribute": "Attribute", - "Topology": "Topology HMI", - "MenuAccordion": "Accordion", - "MenuExpandAll": "Expand", - "Empty": "Empty", - "Charts": "Chart", - "ChartSummary": "Introduction", - "ChartLine": "Line", - "ChartBar": "Bar", - "ChartPie": "Pie", - "ChartDoughnut": "Doughnut", - "ChartBubble": "Bubble", - "Transition": "Transition", - "Geolocation": "GeoLocationService", - "Notification": "NotificationService", - "SignaturePad": "SignaturePad", - "Speech": "Speech", - "SpeechComponents": "Speech", - "SpeechIntro": "Introduction", - "Recognizer": "Recognizer", - "Synthesizer": "Synthesizer", - "SpeechWave": "SpeechWave", - "WebSpeech": "Web Speech Api", - "OnScreenKeyboard": "OnScreenKeyboard", - "RibbonTab": "RibbonTab", - "PulseButton": "PulseButton", - "Bluetooth": "IBluetooth", - "EmbedPdf": "Embed PDF", - "PdfReader": "PDF Reader", - "PdfViewer": "PDF Viewer", - "VideoPlayer": "VideoPlayer", - "FileViewer": "FileViewer", - "FlipClock": "FlipClock", - "DriverJs": "DriverDotnetJs", - "BaiduOcr": "IBaiduOcr", - "AzureOpenAI": "AzureOpenAI", - "HtmlRenderer": "HtmlRenderer", - "Html2Image": "IHtml2Image", - "Html2Pdf": "IHtml2Pdf", - "Mask": "MaskService", - "ContextMenu": "ContextMenu", - "ClockPicker": "ClockPicker", - "TimePicker": "TimePicker", - "DockViewComponents": "DockView", - "DockViewComponents2": "DockViewV2", - "DockViewIndex": "DockView Overview", - "DockViewColumn": "DockView Column", - "DockViewRow": "DockView Row", - "DockViewStack": "DockView Stack", - "DockViewNest": "DockView Nest", - "DockViewComplex": "DockView Complex", - "DockViewVisible": "DockView Visible", - "DockViewLock": "DockView Lock", - "DockViewLayout": "DockView Custom", - "DockViewTitle": "DockView Title", - "DockViewV2Index": "DockViewV2 Overview", - "DockViewV2Column": "DockViewV2 Column", - "DockViewV2Row": "DockViewV2 Row", - "DockViewV2Group": "DockViewV2 Group", - "DockViewV2Nest": "DockViewV2 Nest", - "DockViewV2Complex": "DockViewV2 Complex", - "DockViewV2Visible": "DockViewV2 Visible", - "DockViewV2Lock": "DockViewV2 Lock", - "DockViewV2Layout": "DockViewV2 Custom", - "DockViewV2Title": "DockViewV2 Title", - "OtherComponents": "Others", - "MouseFollowerIntro": "MouseFollower", - "Live2DDisplayIntro": "Live2D Widget", - "SlideButton": "SlideButton", - "DialButton": "DialButton", - "CountButton": "CountButton", - "Splitting": "Splitting", - "QueryBuilder": "QueryBuilder", - "WebSerial": "ISerialService", - "MindMap": "Mind Map", - "Mermaid": "Mermaid", - "Marquee": "Marquee", - "Stack": "Stack", - "Segmented": "Segmented", - "Utility": "Utility", - "JSExtension": "JSRuntime Extensions", - "Clipboard": "Clipboard Service", - "CodeEditor": "CodeEditor", - "Gantt": "Gantt", - "ImageCropper": "ImageCropper", - "Services": "Services", - "AzureTranslator": "AzureTranslator", - "BarcodeGenerator": "BarcodeGenerator", - "ZipArchive": "IZipArchiveService", - "BrowserFinger": "BrowserFingerService", - "SvgEditor": "SvgEditor", - "Waterfall": "Waterfall", - "Holiday": "ICalendarHoliday", - "Festival": "ICalendarFestival", - "Lookup": "ILookupService", - "DialogService": "DialogService", - "OnlineText": "Online Users", - "PrintService": "PrintService", - "ConnectionService": "ConnectionService", - "ExportPdfButton": "ExportPdfButton", - "ThemeProvider": "IThemeProvider", - "IconPark": "ByteDance IconPark", - "IntersectionObserver": "IntersectionObserver", - "AntDesignIcon": "AntDesign Icon", - "Icons": "Icons", - "BootstrapIcon": "Bootstrap Icons", - "MaterialIcon": "Material Icons", - "ElementIcon": "Element Icon", - "FluentSystemIcon": "Fluent Icons", - "DrawerService": "DrawerService", - "SortableList": "SortableList", - "WinBox": "WinBox", - "Player": "Player", - "RDKit": "RDKit", - "SmilesDrawer": "SmilesDrawer", - "Affix": "Affix", - "Watermark": "Watermark", - "OctIcon": "Oct Icons", - "UniverIcon": "Univer Icons", - "Typed": "Typed", - "UniverSheet": "UniverSheet", - "ShieldBadge": "ShieldBadge", - "OtpInput": "OtpInput", - "TotpService": "ITotpService", - "VideoDevice": "IVideoDevice", - "AudioDevice": "IAudioDevice", - "FullScreenButton": "FullScreenButton", - "Meet": "Meet", - "InputUpload": "InputUpload", - "ButtonUpload": "ButtonUpload", - "AvatarUpload": "AvatarUpload", - "CardUpload": "CardUpload", - "DropUpload": "DropUpload", - "Vditor": "Vditor Markdown", + "TableWrap": "Wrap", + "Tag": "Tag", + "TaskDashBoard": "TaskDashBoard", "TcpSocketFactory": "ITcpSocketFactory", - "OfficeViewer": "Office Viewer", - "SocketComponents": "Socket Services", - "SocketAutoReceive": "Auto Receive", - "SocketManualReceive": "Manual Receive", - "DataPackageAdapter": "DataPackageAdapter", - "SocketAutoConnect": "Reconnect", - "SocketDataEntity": "DataEntity", - "ModbusComponents": "Modbus Services", - "SerialPortComponents": "SerialPort Services", - "ModbusFactory": "IModbusFactory", - "SerialPortFactory": "ISerialPortFactory", - "NetworkMonitor": "Network Monitor", + "Textarea": "Textarea", + "Theme": "Theme", + "ThemeProvider": "IThemeProvider", + "Timeline": "Timeline", + "TimePicker": "TimePicker", + "Timer": "Timer", + "Title": "TitleService", + "Toast": "Toast", + "Toggle": "Toggle", "Toolbar": "Toolbar", - "OpcDaService": "OpcDaServer", - "Navbar": "Navbar", - "TaskDashBoard": "TaskDashBoard", - "Dom2ImageService": "Dom2HtmlService", - "SelectRegion": "Region Selector", - "SelectProvince": "Province Selector", - "SelectCity": "City Selector", - "HikVision": "HikVisionWebPlugin" + "Tooltip": "Tooltip", + "Topology": "Topology HMI", + "TotpService": "ITotpService", + "Transfer": "Transfer", + "Transition": "Transition", + "Tree": "Tree", + "TreeView": "TreeView", + "Typed": "Typed", + "UniverIcon": "Univer Icons", + "UniverSheet": "UniverSheet", + "Upload": "Upload", + "Utility": "Utility", + "ValidateForm": "ValidateForm", + "Vditor": "Vditor Markdown", + "VideoDevice": "IVideoDevice", + "VideoPlayer": "VideoPlayer", + "Waterfall": "Waterfall", + "Watermark": "Watermark", + "WebAppBlazor": "WebApp Blazor", + "WebSerial": "ISerialService", + "WebSpeech": "Web Speech Api", + "WinBox": "WinBox", + "ZIndex": "Layout", + "ZipArchive": "IZipArchiveService" + }, + "BootstrapBlazor.Server.Components.Pages.Breakpoints": { + "Amount": "pixel", + "Footer1": "The components have been adapted to extra large screens by default, and many defaults are", + "Footer2": "like", + "Footer3": "The default popup size", + "Heading": "Breakpoints", + "Heading1": "Breakpoints are customizable widths that determine how responsive layouts behave in Bootstrap across devices or viewport sizes", + "Name1": "tiny", + "Name2": "small", + "Name3": "medium", + "Name4": "large", + "Name5": "oversized", + "Name6": "extra large", + "Paragraph1": "Available breakpoints", + "Paragraph2": "Bootstrap includes six default breakpoints, sometimes called grid layers, for responsive builds", + "TableHeading1": "Breakpoint name", + "TableHeading2": "Class suffix", + "TableHeading3": "Threshold" + }, + "BootstrapBlazor.Server.Components.Pages.CacheList": { + "CacheListAction": "Action", + "CacheListCount": "Total {0} Entry", + "CacheListDelete": "Delete", + "CacheListDeleteAll": "Clear", + "CacheListExpiration": "Expiration", + "CacheListIntro": "Manage the component library internal cache through the ICacheManager interface method", + "CacheListKey": "Key", + "CacheListRefresh": "Refresh", + "CacheListTitle": "CacheManager", + "CacheListValue": "Value" + }, + "BootstrapBlazor.Server.Components.Pages.Chats": { + "ChatInfo": "Due to the lack of free interfaces in GPT, the number of experiences has been {1} times, and the current number is {0}", + "ChatNormalIntro": "Chat dialog by calling IAzureOpenAIService service method GetChatCompletionsAsync", + "ChatNormalTitle": "Azure OpenAI", + "ChatsDescription": "Azure OpenAI service is a chatbot based on Azure cloud service, which can interact with users through dialogue", + "ChatsTitle": "Azure OpenAI", + "ChatUserMessageTitle": "Hello {0}", + "ChatUserTitle": "Chat session" + }, + "BootstrapBlazor.Server.Components.Pages.Globalization": { + "P1": "Please check before reading the following knowledge points Official document", + "SubTitle": "ASP.NET Core Blazor Globalization", + "Title": "Globalization" + }, + "BootstrapBlazor.Server.Components.Pages.GlobalOption": { + "SubTitle": "Added component ErrorLogger Through this component, global logs and exceptions can be output uniformly; currently, the Blazor framework does not provide a MVC like Global exception The overall solution", + "Title": "Global exception" + }, + "BootstrapBlazor.Server.Components.Pages.Index": { + "Docs": "Read the docs", + "DonateH1": "Donate", + "DonateH2": "Scan the code to donate and invite the author to have a cup of coffee", + "SubTitle": "BootstrapBlazor is an enterprise-grade library that fuses Bootstrap with Blazor, offering developers a powerful toolkit for building responsive and interactive web applications effortlessly.", + "Support": "Support", + "Title": "Bootstrap Blazor UI" + }, + "BootstrapBlazor.Server.Components.Pages.Install": { + "BootstrapStyle": "// Component styles have been integrated with the latest version of Bootstrap", + "FontAwesomeCss": "// FontAwesome font icon style Note that you need to reference the BootstrapBlazor.FontAwesome package", + "InstallDesc": "Getting started with BootstrapBlazor for faster and easier .NET web development.", + "InstallTitle": "Install", + "Manual": "Manual Install", + "ManualDesc": "If you already have a project and want to add BootstrapBlazor to it, either from a default template or a working application.", + "MotronicDesc": "// Motronic theme optional suggestion to add", + "OtherText": "Other", + "Step1": "1. Install Package", + "Step1Desc": "Install the library through the NuGet Package Manager or with following command", + "Step2": "2. Add Imports", + "Step2Desc": "After the package is added, you need to add the following in your _Imports.razor", + "Step3": "3. Add References", + "Step3Desc": "Add the following to your HTML head section, it's either index.html or _Layout.cshtml/_Host.cshtml/App.razor depending on whether you're running WebAssembly or Server.", + "Step4": "4. Add Scripts", + "Step4Desc": "Next, add the bootstrap.blazor.bundle.min.js file next to the default Blazor script at the end", + "Step5": "5. Remove References", + "Step5Desc": "To delete the bootstrap style, please also delete the bootstrap and open-iconic folders in the wwwroot folder.", + "Step6": "6. Register Services", + "Step6Desc": "Add the following in Program.cs", + "Step7": "7. Add BootstrapBlazorRoot Component", + "Step7Desc": "Add the BootstrapBlazorRoot component to the Layout component", + "Template": "Using Templates", + "TemplateDesc": "To get started quickly, you can use our dotnet templates. They're based on the Microsoft Web App template but have been modified to include BootstrapBlazor components." + }, + "BootstrapBlazor.Server.Components.Pages.Introduction": { + "Advantage": "Advantage", + "AdvantageLi1": "No need to write JavaScript to use components", + "AdvantageLi2": "The component supports all html features", + "AdvantageLi3": "The component supports two-way data binding", + "AdvantageLi4": "Components support automatic client verification", + "AdvantageLi5": "Component support combination", + "Community": "Community", + "Features": "Features of Components", + "GetStarted": "Get Started", + "LearnLi1": "Blazor Official Document", + "LearnLi2": "Use Blazor WebAssembly and Visual Studio Code to generate web applications", + "LearnLi3": "What is Blazor", + "LearnLi4": "Exercise-Configure the development environment", + "LearnLi5": "Blazor Components", + "LearnLi6": "Exercise-Add Components", + "LearnLi7": "Data binding and events", + "LearnLi8": "Exercise-Data binding and Events", + "LearnTitle": "Learning materials", + "P5": "The largest code hosting collaborative development platform in China Gitee C# The highest star in the sector star Works Universal background management system BootstrapAdmin Ready to use this component to achieve all functions", + "P6": "The Bootstrap Blazor UI component library provides everything from basic Button components to advanced web-level Online components", + "ProjectsShow": "Exhibition", + "QuickStart": "Quick Start", + "ShowWebSiteTitle2": "Demo Site(Blazor)", + "SubTitle": "BootstrapBlazor is an enterprise-level component library based on Bootstrap and Blazor, which can be considered as the Blazor version of the Bootstrap project.", + "Summarize": "Summarize", + "Title": "Introduction", + "UpdateLog": "In order to fix the components bugs, a small version of the component may be released every day.", + "UpdateLogLink": "[Update Log]", + "UpdateTitle": "Update Log" + }, + "BootstrapBlazor.Server.Components.Pages.Layout": { + "Button": "test", + "Heading": "Component Hierarchy", + "Para1": "Since there are many pop-up window components, in some scenarios, multiple pop-up windows will be used to combine them. This chapter describes how to manage components in layers. Below is", + "Para2": "provided built-in", + "Para3": "value", + "Para4": "This set of components additionally", + "Para5": "The components are layered as follows", + "Para6": "test session" + }, + "BootstrapBlazor.Server.Components.Pages.Localization": { + "AdditionalJsonFile": "Additional json localization file", + "ES": "Spanish (es)", + "LocalizationFileDesc": "The component built-in localization resource files are en zh. The other localization resource files de es pt zh-TW which are placed in the project folder localization. you can be downloaded by yourself and imported into the project through the injection service", + "N1": "How localization works in components", + "N10": "The component has a built-in localization language fallback mechanism. For example, the request culture is", + "N11": "When the corresponding culture resource file is not provided, the built-in logic tries to localize through the parent culture to", + "N12": "For example, the fallback mechanism is as follows", + "N13": "arrive", + "N14": "If the set localization language does not provide the resource file after falling back and still cannot find the resource file, use", + "N15": "The cultural information set by the parameter is localized, the default is", + "N16": "pay attention", + "N17": "Due to some systems such as", + "N18": "After the program runs, the thread cannot obtain the cultural information, and the default cultural information can be set through the configuration file", + "N19": "Enable localization", + "N2": "Components additionally support the use of", + "N20": "configuration file", + "N21": "pass", + "N22": "Set the fallback culture information, that is, use this configuration culture when the currently requested culture information is not found, through", + "N23": "Set supported cultures collection", + "N24": "Enable .NET Core localization service", + "N25": "Add Bootstrap Blazor components", + "N26": "Add multi-language support configuration information", + "N27": "Enable localization", + "N28": "Add BootstrapBlazor component", + "N29": "Add localization service configuration information", + "N3": "Type key-value information as a resource file, which is parsed as", + "N30": "Enable localization middleware and set supported culture info", + "N31": "Implement UI localization information storage (for example, cookies)", + "N32": "Add UI that allows users to change localization", + "N33": "Please select language", + "N34": "Using the api method is suitable for Server-Side mode", + "N35": "additional", + "N36": "resource", + "N37": "The component library supports Microsoft's default", + "N38": "Format resource, also supports embedded", + "N39": "format resources, and specific physical", + "N4": "String rendered in", + "N40": "document", + "N41": "The resource file is a merge relationship, and the addressing rule priority is", + "N42": "Microsoft resx embedded resource file", + "N43": "External json physical file", + "N44": "json embedded resource file", + "N45": "Built-in json resource file", + "N46": "Ignore cultural info loss logs", + "N47": "Set up RESX format multilingual resource files such as Program.{CultureName}.resx", + "N48": "Set Json format embedded resource file", + "N49": "Set Json physical path file", + "N5": "The package comes with the following resource files", + "N50": "or use service extension method", + "N51": "Ignore the loss of localized key-value culture information", + "N52": "Attach your own json multilingual culture resource file such as zh-TW.json", + "N53": "Set Json physical path file", + "N54": "Enable .NET Core localization service", + "N55": "Add BootstrapBlazor component", + "N56": "increase localization", + "N57": "Implement UI localization information storage (for example, localStorage)", + "N58": "Consistent with Server-Side", + "N59": "Change the default language setting", + "N6": "Chinese (zh)", + "N60": "Set default culture to zh-CN", + "N61": "Configure whether to display missing localized resource information", + "N62": "Add BootstrapBlazor service", + "N63": "Ignore the loss of localized key-value culture information", + "N7": "English (en)", + "N8": "German (de)", + "N9": "Portuguese (pu)", + "P1": "Localization is the process of customizing an application for a given language and region.", + "P2": "A component allows you to translate its UI elements into the desired language. This includes text for buttons, filter operator properties, etc. The component uses the current request by default", + "P3": "Culture language, this article will show you how to use this feature in your app", + "T1": "Please check before reading the following knowledge points", + "T2": "Microsoft Official Documentation", + "T3": "because", + "T4": "The mode cannot obtain the system language and culture information, the default culture information is", + "Title": "Localization", + "TW": "中國台灣 (zh-TW)" + }, + "BootstrapBlazor.Server.Components.Pages.Online": { + "Browser": "Browser", + "City": "City", + "ConnectionTime": "ConnectionTime", + "Device": "Device", + "Dur": "Dur", + "Engine": "Engine", + "Ip": "Ip", + "Language": "Language", + "LastBeatTime": "LastBeatTime", + "LocalHost": "localhost", + "OS": "OS", + "RequestUrl": "RequestUrl", + "SubTitle": "Online population statistics" + }, + "BootstrapBlazor.Server.Components.Pages.Template": { + "P1": "In order to make it easier for everyone to use this set of components to quickly build projects, the author has made Project Templates, using dotnet new command line mode, using Proceed as follows:", + "P2": "1. Install the project template", + "P3": "2. Create project", + "P4": "After the project is created, the BootstrapBlazorApp solution will be generated in the current folder, and the src directory contains Server-Side Wasm Both types of projects can be run directly with F5", + "P5": "3. Update project template", + "P6": "The dotnet new update option checks if there are updates available for the template packages that are currently installed and installs them.", + "P7": "4. Uninstall project template", + "SubTitle": "Bootstrap Blazor App Template", + "TemplateDesc": "After the template is installed, searching for Bootstrap when creating a new project will list the following template candidates:", + "TemplateList": "List", + "Title": "Project Template" + }, + "BootstrapBlazor.Server.Components.Pages.Theme": { + "H1": "Component theme", + "H2": "Test", + "P1": "The current website theme supports the following", + "P10": "add this line", + "P2": "Motronic (integrated)", + "P3": "LayUI (in progress)", + "P4": "Bluma (in progress)", + "P5": "Ant Design (in progress)", + "P6": "Theme switch", + "P7": "If switch to", + "P8": "theme, please use the original", + "P9": "The added style file is as follows" + }, + "BootstrapBlazor.Server.Components.Pages.Tutorials": { + "AdminSummary": "Admin", + "CategoryTitle": "Bootstrap Blazor Practical Cases", + "DashboardSummary": "Dashboard", + "DrawingSummary": "Drawing", + "LoginSummary": "Login&Register", + "MemorialMode": "Memorial", + "MFA": "MFA", + "OnlineSheet": "UniverSheet", + "TranslateSummary": "Translate", + "WaterfallSummary": "Waterfall" + }, + "BootstrapBlazor.Server.Components.Samples.Affixs": { + "AffixIntro": "Fix the element to a specific visible area", + "AffixNormalIntro": "Affix is fixed at the top of the page by default", + "AffixNormalTitle": "Basic usage", + "AffixPositionIntro": "The parameter Position controls whether the top or bottom is fixed, and the Offset value sets the offset to the top or bottom", + "AffixPositionTitle": "Position", + "AffixTitle": "Affix" + }, + "BootstrapBlazor.Server.Components.Samples.Ajaxs": { + "AjaxDescribe": "The ajax method used to use js directly in the browser to interact with the server currently only supports both input and output as json, and the return value is a json string, which can be converted and processed by itself.", + "AjaxTitle": "Ajax call", + "GoTo": "Execute goto", + "GoToButtonText1": "Jump to the first page of the document", + "GoToButtonText2": "Jump to yourself (refresh page)", + "GoToIntro": "Implementing page jumps with Js addresses an issue where Blazor pages don't really refresh when they're jumped as SPA ", + "GoToTitle": "Page jump", + "InvokeAsync": "Execute fetch", + "NormalB": "Special attention:", + "NormalButtonText1": "Login successful", + "NormalButtonText2": "Login failed", + "NormalDiv": "Here is only a login simulation, and there is no real call to HttpContext.SignInAsync , the real use needs to refresh the page after the login is completed, otherwise the real login can not be successful.", + "NormalIntro": "Impersonate a login", + "NormalTitle": "Basic usage" + }, + "BootstrapBlazor.Server.Components.Samples.Alerts": { + "AlertDangerText": "A simple danger alert—check it out!", + "AlertDarkText": "A simple dark alert—check it out!", + "AlertInfoText": "A simple info alert—check it out!", + "AlertPrimaryText": "A simple primary alert—check it out!", + "AlertSecondaryText": "A simple secondary alert—check it out!", + "AlertSuccessText": "A simple success alert—check it out!", + "AlertWarningText": "A simple warning alert—check it out!", + "BaseUsageText": "Basic usage", + "CloseButtonUsageText": "Close button", + "IntroText1": "Alert components are non-overlay elements in the page that does not disappear automatically.", + "IntroText2": "Customize the close button as texts or other symbols.", + "IntroText3": "Displaying an icon improves readability.", + "IntroText4": "Show Tip", + "ShowBarUsageText": "With Bar", + "ShowBorderIntro": "Set ShowBorder=\"true\" show border", + "ShowBorderTitle": "Border", + "ShowShadowIntro": "Set ShowShadow=\"true\" Show shadow", + "ShowShadowTitle": "Shadow", + "SubTitle": "Displays important alert messages.", + "Title": "Alert", + "WithIconUsageText": "With Icon" + }, + "BootstrapBlazor.Server.Components.Samples.AnchorLinks": { + "AnchorLinkDemoIntroduction": "After placing the label click on the copy anchor link to the pasteboard", + "AnchorLinkDemoTitle": "Common usage", + "AnchorLinkDescribe1": "Apply to title strip", + "AnchorLinkDescribe2": "Anchor link, click to copy for easy sharing", + "AnchorLinkText": "I am a clickable anchor link", + "AnchorLinkTips1": "Anchor Link Component Properties", + "AnchorLinkTips2": "It is a required item, and the function of copying the anchor link will not be provided if it is not filled in", + "AnchorLinkTips3": "Component anchor icons are available via", + "AnchorLinkTips4": "The parameter is customized and the default is", + "AnchorLinkTips5": "TooltipText Used to set the prompt message after copying the address", + "AnchorLinkTitle": "AnchorLink" + }, + "BootstrapBlazor.Server.Components.Samples.Anchors": { + "BaseUsageText": "Basic usage", + "ContentText1": "

Cras mattis consectetur purus sit amet fermentum. Cras justo odio, dapibus ac facilisis in, egestas eget quam. Morbi leo risus, porta ac consectetur ac, vestibulum at eros.

Praesent commodo cursus magna, vel scelerisque nisl consectetur et. Vivamus sagittis lacus vel augue laoreet rutrum faucibus dolor auctor.

Aenean lacinia bibendum nulla sed consectetur. Praesent commodo cursus magna, vel scelerisque nisl consectetur et. Donec sed odio dui. Donec ullamcorper nulla non metus auctor fringilla.

Cras mattis consectetur purus sit amet fermentum. Cras justo odio, dapibus ac facilisis in, egestas eget quam. Morbi leo risus, porta ac consectetur ac, vestibulum at eros.

Praesent commodo cursus magna, vel scelerisque nisl consectetur et. Vivamus sagittis lacus vel augue laoreet rutrum faucibus dolor auctor.

", + "IntroText1": "For displaying anchor hyperlinks on page and jumping between them.", + "IntroText2": "Click Anchor item try it", + "SubTitle": "Hyperlinks to scroll on one page.", + "Title": "Anchor" + }, + "BootstrapBlazor.Server.Components.Samples.AudioDevices": { + "AudioDeviceCloseText": "Stop", + "AudioDeviceDownloadText": "Download", + "AudioDeviceIntro": "Get audio equipment operation capabilities through this service", + "AudioDeviceOpenText": "Record", + "AudioDeviceRequestText": "List", + "AudioDeviceTitle": "IAudioDevice", + "BaseUsageIntro": "Perform different operations by calling different API methods", + "BaseUsageTitle": "Basic usage" + }, + "BootstrapBlazor.Server.Components.Samples.AutoCompletes": { + "AutoText": "Custom city", + "Block1Intro": "By setting Items data collection when the user types information that is automatically displayed", + "Block1Title": "Basic usage", + "Block2Intro": "By setting the IsLikeMatch value settings to turn on fuzzy matching of collections, you control whether case is ignored by setting the IgnoreCase", + "Block2Title": "Blur queries and ignore case", + "Block3Intro": "By setting the NoDataTip value setting automatically completes the custom prompt message that appears when the data is not found", + "Block3Title": "Custom prompt message", + "Block4Intro": "By setting up ValueChanged callback method reorganizes the data collection based on the data entered by the user before prompting for information", + "Block4Title": "Custom candidates", + "Block5Intro": "When a component binds in both directions, it automatically determines whether label text is displayed based on the conditions", + "Block5Title": "The label is displayed", + "BlockGroupIntro": "combox with BootstrapInputGroupLabel inside BootstrapInputGroupLabel", + "BlockGroupPrevLabel": "Prev", + "BlockGroupSuffixLabel": "Suffix", + "BlockGroupTitle": "InputGroup", + "DebounceDescription": "In this example, please type any string to display the viewing effect. Within the anti shake time, the auto completion component will only send the results to the back end after the last entry, which will greatly improve the performance", + "DebounceIntro": "Set Debounce value turn on debounce", + "DebounceTitle": "Debounce", + "Description": "The input box autocompletes the function", + "Divider1Text": "Bidirectional binding displays labels", + "Divider2Text": "Bidirectional bindings do not display labels", + "Divider3Text": "Customize DisplayText", + "ItemTemplateIntro": "Set ItemTemplate for customer the dropdown item", + "ItemTemplateTitle": "ItemTemplate", + "LikeMatchDescription": "In this example, type the abc string to display the viewing effect and select all matches in the collection that contain abc and have the same case", + "NoDataTip": "There is nothing", + "NoDataTipDescription": "In this example, type 567 strings because the autocomplete information center does not display custom prompt information - the data you want is not found", + "NormalDescription": "In this example, type 123 strings to display the viewing effect, automatically give the component initialization to the auto-prompt dataset, and the dataset does not change. Enable the clear button by setting IsClearable", + "OnSelectedItemChangedIntro": "Click the dropdown item or Enter trigger the callback", + "OnSelectedItemChangedTitle": "OnSelectedItemChanged", + "PopoverIntro": "Set IsPopover to true, use popover render UI prevent The dropdown menu cannot be fully displayed because the parent container is set to overflow: hidden", + "PopoverTitle": "Popover dropdown menu", + "ShowLabelDescription": "The pre-label explicit rules are consistent with the BootstrapInput component of the [portal]", + "Title": "AutoComplete", + "ValueChangedDescription": "In this example, type any string to display the viewing effect, and automatically complete the component's dynamic changes from the newly obtained prompt dataset based on the string you type" + }, + "BootstrapBlazor.Server.Components.Samples.AutoFills": { + "CustomFilterDesc": "Enter the name intelligent prompt, and delegate OnCustomFilter to filter data by setting a user-defined filter condition callback. The current filter condition is that Name contains the input string Count and the value is greater than 50", + "CustomFilterIntro": "Filter data by setting custom filter condition callback delegate OnCustomFilter", + "CustomFilterTitle": "custom filter", + "Description": "Auto-fill forms when selected via IntelliSense prompt option", + "IsVirtualizeDescription": "Component virtual scrolling supports two ways of providing data through Items or OnQueryAsync callback methods", + "IsVirtualizeIntro": "Set IsVirtualize to true enable virtual scroll for large data", + "IsVirtualizeTitle": "Virtualize", + "NormalDesc": "input Name Name smart prompt, automatically fill in the form below after selecting the prompt item Currently supports keyboard Enter Esc ", + "NormalIntro": "fill the form", + "NormalTitle": "Basic usage", + "ShowDropdownListOnFocusDesc": "parameter ShowDropdownListOnFocus the default value is true. After the component gets the focus, it will automatically expand the candidate drop-down box, set to false turn off this feature", + "ShowDropdownListOnFocusIntro": "By setting ShowDropdownListOnFocus="false"", + "ShowDropdownListOnFocusTitle": "Turn off auto-expand dropdown", + "Title": "AutoFill components" + }, + "BootstrapBlazor.Server.Components.Samples.AutoRedirects": { + "Description": "Through the set address, automatically jump to the specified page when there is no mouse or keyboard action on the page", + "NormalIntro": "By setting the Interval interval, when there is no mouse or keyboard action, it will automatically jump to the address set by RedirectUrl", + "NormalTitle": "Common usage", + "Title": "AutoRedirect automatic jump component" + }, + "BootstrapBlazor.Server.Components.Samples.Avatars": { + "BasicUsageDivider": "Split the line", + "BasicUsageIntro": "Set the shape and size of your avatar IsCircle and Size.", + "BasicUsageTitle": "Basic usage", + "BorderDiv1": "The first fillet square avatar box is loaded correctly, so the border is blue ", + "BorderDiv2": "The second circular avatar loads the picture path incorrectly, so the border is red and the picture appears as the default icon", + "BorderIntro": "By setting the IsBorder whether to display the avatar border, the border in this mode when the picture fails to load is border-danger style, and when the load is successful, the border is border-success; The borders in the remaining modes are border-info", + "BorderTitle": "Border", + "CircleIntro": "Suitable for scenarios where the picture address is obtained asynchronously by interfaces such as webapi", + "CircletTitle": "Asynchronous loading", + "IconIntro": "Three types are supported: icons, pictures, and characters", + "IconTitle": "The type of presentation", + "SubTitle": "Present user or thing information as icons, pictures, or characters.", + "Title": "Avatar" + }, + "BootstrapBlazor.Server.Components.Samples.Badges": { + "BasicusageIntro": "Small badge assembly in a variety of colors is available", + "BasicusageTitle": "Basic usage", + "ButtonIntro": "Button internal badge", + "ButtonSpan": "The primary button", + "ButtonTitle": "The badge inside the button", + "PillIntro": "Set the badge pendant with the of the property IsPill='true' to set the fillet", + "PillTitle": "Capsule badge", + "SubTitle": "A number or status tag that appears next to a button, icon, or icon", + "Title": "Badge" + }, + "BootstrapBlazor.Server.Components.Samples.BaiduOcr": { + "BaiduOcrDesc": "本组件通过调用 Baidu AI 平台文字识别接口进行增值税发票文字识别。支持对增值税普票、专票、全电发票(新版全国统一电子发票,专票/普票)、卷票、区块链发票的所有字段进行结构化识别,包括发票基本信息、销售方及购买方信息、商品信息、价税信息等,其中五要素字段的识别准确率超过 99.9%; 同时,支持对增值税卷票的 21 个关键字段进行识别,包括发票类型、发票代码、发票号码、机打号码、机器编号、收款人、销售方名称、销售方纳税人识别号、开票日期、购买方名称、购买方纳税人识别号、项目、单价、数量、金额、税额、合计金额(小写)、合计金额(大写)、校验码、省、市,四要素字段的识别准确率可达95%。上传图片不能超过 4M", + "BaiduOcrIntro": "Usage", + "BaiduOcrStep1": "1. Get IBaiduOcr instance by inject service", + "BaiduOcrStep1Desc": "Update the appsettings.json file with the following configuration. Please register on Baidu AI Open Platform and apply for relevant parameter values.", + "BaiduOcrStep2": "2. Get IBaiduOcr instance by inject service", + "BaiduOcrStep3": "3. Call IBaiduOcr instance method", + "SubTitle": "Character recognition", + "Title": "IBaiduOcr", + "VatInvoiceIntro": "Call Baidu Ocr interface for text recognition by uploading VAT invoice image", + "VatInvoiceTitle": "VAT Invoice", + "VerifyVatInvoiceIntro": "通过调用 IBaiduOcr 服务实例的发票验真方法 VerifyInvoiceAsync 返回 InvoiceVerifyResult 其属性 Validtrue 时为真", + "VerifyVatInvoiceTitle": "增值税验真" + }, + "BootstrapBlazor.Server.Components.Samples.BarcodeGenerators": { + "BarcodeGeneratorNormalIntro": "Renders a one-dimensional barcode in the corresponding format by giving the Value value", + "BarcodeGeneratorNormalText": "Barcode Generator", + "Title": "Barcode generator" + }, + "BootstrapBlazor.Server.Components.Samples.BarcodeReaders": { + "Attention": "Pay special attention to:", + "BasicUsageIntro": "The code is identified by the camera", + "BasicUsageLi1": "Tap to start turning on the camera", + "BasicUsageLi2": "Scan the barcode", + "BasicUsageLi3": "Click the close button to turn off the camera", + "BasicUsageTitle": "Basic usage", + "CloseCameraLog": "Turn off the camera", + "ErrorLog": "An error has occurred", + "ImageIntro": "Scan code recognition with still pictures", + "ImageLi1": "Click the code to pop up the selection file box", + "ImageLi2": "Select a picture that contains barcodes", + "ImageLi3": "Start recognizing barcodes", + "ImageTitle": "Basic usage", + "InitLog": "Initialize the camera to complete", + "Li1": "The site wants to enable https, which is required by browser vendors", + "Li4": "The bar code recognition rate is related to the pixel, bar code size and mobile phone execution efficiency", + "OpenCameraLog": "Turn on the camera", + "ScanCodeLog": "Scan to barcode", + "Step": "How to do this:", + "SubTitle": "This component scans the bar code by calling the camera to obtain the bar code content bar code/QR code" + }, + "BootstrapBlazor.Server.Components.Samples.Blocks": { + "AuthorizateDiv3": "I am the contents of the AuthorizeView component and are not currently logged in", + "AuthorizateIntro": "This example simulates a user logging in to control whether the content Block is displayed, which is easier to use than AuthorizeView", + "AuthorizateTitle": "Judging by permissions", + "BasicUsageIntro": "Determines whether component content is displayed by setting the OnQueryCondition callback method return value", + "BasicUsageTitle": "Common usage", + "Content": "I am component content", + "IsHide": "Hide", + "IsShow": "Show", + "Login": "Login", + "Logout": "Logout", + "RolesDiv1": "The current role User allow this content to be seen", + "RolesIntro": "By setting Roles controls the display, which is displayed when the currently logged-in user is in a preset role", + "RolesTitle": "Preset roles", + "SubTitle": "Depending on the parameter conditions, the contents of the block are determined to be displayed, usually in conjunction with permission authorization", + "TemplateDiv1": "I am the component content that displayed in accordancewith the criteria", + "TemplateDiv2": "I am the component content that displayed that not accordancethe criteria", + "TemplateIntro": "By setting authorized NotAuthorized you can set what appears when you meet and do not meet the criteria, respectively", + "TemplateTitle": "Template", + "Tips": "By setting different Name as a resource, combined with the authorization system to authorize this resource can be achieved to any element of the Web page permission control", + "Title": "Block", + "UsersIntro": "By setting Users controls the display, which is displayed when the currently logged-in user is a preset user", + "UsersTitle": "Pre-set the user" + }, + "BootstrapBlazor.Server.Components.Samples.Bluetooth": { + "BaseUsageIntro": "Request communication with Bluetooth devices through the IBluetooth service", + "BaseUsageTitle": "Basic usage", + "BluetoothConnectText": "Connect", + "BluetoothDescription": "Allows websites to communicate with Bluetooth devices connected to the user's computer. For example, you can connect to a Bluetooth printer to print.", + "BluetoothDeviceInfoText": "Device Info", + "BluetoothDisconnectText": "Disconnect", + "BluetoothGetBatteryText": "Battery", + "BluetoothGetCharacteristicsText": "Characteristics", + "BluetoothGetCurrentTimeText": "Time", + "BluetoothGetServicesText": "Services", + "BluetoothIntro": "Provides methods to query Bluetooth availability and request access to devices", + "BluetoothReadValueText": "ReadValue", + "BluetoothRequestText": "Scan", + "BluetoothTipsLi1": "This feature is available only in secure contexts (HTTPS)", + "BluetoothTipsLi2": "This is an experimental technology Check the Browser compatibility table carefully before using this in production", + "BluetoothTipsTitle": "Note: The IBluetoothDevice interface instance inherits IAsyncDisposable. When switching routes, you need to release its resources by calling its DisposeAsync.", + "BluetoothTitle": "IBluetooth Service ", + "NotSupportBluetoothContent": "The current browser does not support serial port operations. Please change to Edge or Chrome browser.", + "NotSupportBluetoothTitle": "Scan Devices", + "UsageDesc": "Click the Scan button and select the phone to test in the pop-up window" + }, + "BootstrapBlazor.Server.Components.Samples.BootstrapBlazorIcons": { + "FAIntro": "You can specify the icon style by setting Name", + "FATitle": "Font Icons", + "IconsDescription": "Supports font icons, vector SVG icons, and Image pictures", + "IconsTitle": "Icon", + "ImageIntro": "Customize the displayed content through the ChildContent template", + "ImageTitle": "Image", + "SvgIntro": "Load the Svg sprite image by setting IsSvgSprites=\"true\" Url and specify its Id value by Name", + "SvgTitle": "Svg Icons" + }, + "BootstrapBlazor.Server.Components.Samples.Breadcrumbs": { + "Block1Intro": "Suitable for a wide range of basic usage.", + "Block1Title": "Basic usage", + "Describe": "Display the path of the current page and quickly return to any previous page.", + "Title": "Breadcrumb" + }, + "BootstrapBlazor.Server.Components.Samples.BrowserFingers": { + "BrowserFingerIntro": "Obtain the client browser fingerprint by calling the IBrowserFingerService service instance method GetFingerCodeAsync. The fingerprint is consistent in privacy mode", + "BrowserFingerTitle": "Browser fingerprint", + "GetClientHubIdAsync": "Method for obtaining client hub Id", + "GetFingerCodeAsync": "Method for obtaining fingerprints" + }, + "BootstrapBlazor.Server.Components.Samples.Buttons": { + "Block1Intro": "The underlying button usage.", + "Block1Title": "Basic usage", + "Block2Intro": "Display different button styles by setting the ButtonStyle", + "Block2Title": "Different styles", + "Block3Intro": "Set the color style of the button border by setting the IsOutline='true'.", + "Block3Title": "Outline", + "Block4Intro": "The Button component provides a variety of sizes in addition to the default values, and by setting the Size property, you can select the appropriate button size in different scenarios.", + "Block4Title": "Different sizes.", + "Block5Intro": "Button is not available. By setting the IsDisabled property", + "Block5Title": "Disable the state", + "Block6Intro": "A combination of multiple buttons", + "Block6Title": "Button group", + "Block7Intro": "Set the button icon by setting the Icon property, which is fa-fa when using font strings such as the font-awesome icon", + "Block7Title": "Button with icon", + "Block8Intro": "The button display text is set by setting the Text property of the winButton component, and the click button is the text on the right that shows the clicked button", + "Block8Title": "Secondary encapsulation button", + "Block9Intro": "By setting whether the isAsync property button is asynchronous request button by setting whether the is false by default. Note This will only take effect when ShowSplit=\"true\" is set", + "Block9Title": "Asynchronous request button", + "BlockButton": "Block", + "ButtonAsync": "Asynchronous", + "ButtonAsyncDescription": "When the button is an asynchronous request button, the button is changed to disabled, and the loading small icon is displayed, returning to normal after the asynchronous request ends, in this case, after clicking the asynchronous button, the request load animation is displayed and returns to normal after 5 seconds. In some specific scenarios, the button needs to remain disabled after asynchronous operation. Please control this using the IsKeepDisabled parameter.", + "ButtonAvailable": "Click to make the first button available", + "ButtonDisabled": "Click to be disabled", + "ButtonExtraExtraLargeText": "ExtraExtraLarge", + "ButtonOne": "Button one", + "ButtonProgress": "Progress button", + "ButtonStatus": "Status button", + "ButtonTwo": "Button two", + "DangerButton": "Danger", + "DarkButton": "Dark", + "Description": "Common action buttons.", + "Description1": "Button disable effects can be achieved by setting its own IsDisabled property in the OnClick callback method, or by calling the component instance method SetDisable", + "Description2": "Because using the IsDisabled property requires an explicit manual call to the StateHasChanged method, which causes the component where the button is located to refresh as a whole, it is recommended that you use the instance method SetDisable refresh the button only", + "EventDesc1": "This event is triggered when the button is clicked", + "EventDesc2": "This event is triggered when the button is clicked and the current component is not refreshed for performance improvement", + "ExtraLargeButton": "ExtraLarge", + "ExtraSmallButton": "ExtraSmall", + "HighlightButton": "Highlight", + "InformationButton": "Information", + "IsDisabledTip": "This page transfer is 4.8K when set with the IsDisabled property", + "LargeButton": "Large", + "LinkButton": "Link", + "MediumButton": "Medium", + "MethodDesc1": "set whether the button is available", + "NoneButtonColor": "None", + "NormalButton": "Button", + "PrimaryButton": "Primary", + "SecondaryButton": "Secondary", + "SetDisableTip": "This page transfer is 280B when set up using the SetDisable method", + "SmallButton": "Small", + "SubTitle": "Performance comparison:", + "SuccessButton": "Success", + "Title": "Button", + "ToggleButton": "Toggle", + "ToggleIntroduction": "Get the current button Toggle state by setting the IsActiveChanged or OnToggleAsync callback method", + "TooltipDisabledText": "Disabled", + "TooltipIntro": "Set TooltipText TooltipPlacement TooltipTrigger shortcut button prompt bar information, position, and triggering method. For more functions, please use the Tooltip component to implement. In this example, the second button is in the disabled state, and the prompt bar is still available", + "TooltipText": "Button", + "TooltipTitle": "Tooltip", + "WarningButton": "Warning" + }, + "BootstrapBlazor.Server.Components.Samples.Calendars": { + "AppIntro": "Curriculum", + "AppText": "Currently, the ChildContext is temporarily rendered by the week component, and the data-related operating components in all cells are not encapsulated and will be refined later", + "AppTitle": "Practical applications", + "BasicUsageIntro": "The underlying calendar is displayed.", + "BasicUsageTitle": "Basic usage", + "BindIntro": "The calendar box automatically updates the text box when the time is selected", + "BindTitle": "Data is bound in both directions", + "CellTemplateDemoIntro": "Click the cell pop-up window to edit the working hours, and then close the pop-up window to re summarize the statistical data", + "CellTemplateDemoSummary": "Work hour statistics of the month", + "CellTemplateDemoTitle": "Example of actual man hour system", + "CellTemplateIntro": "customer the cell template via CellTemplate", + "CellTemplateTitle": "Cell Template", + "Chinese": "Chinese", + "English": "English", + "HeaderTemplateDesc": "Customize the UI by setting the BodyTemplate and HeaderTemplate. In this example, additional columns are added to the front and back of the month view, and a timeline is added to the week view", + "HeaderTemplateIntro": "Customize the header template by setting the property HeaderTemplate", + "HeaderTemplateTitle": "Header Template", + "Math": "Math", + "None": "None", + "Study": "Study", + "SubTitle": "Containers that display data as calendars. When the data is date or by date, such as schedule, schedule, price calendar, etc., lunar calendar, etc. Year/month switching is currently supported.", + "Title": "Calendar", + "ValueChanged": "Call back the delegate when the value changes", + "ViewModeIntro": "By setting the property CalendarViewMode.Week", + "ViewModeTitle": "Show by week" + }, + "BootstrapBlazor.Server.Components.Samples.Cameras": { + "Attention": "Pay special attention to:", + "BasicUsageIntro": "Take pictures through the camera", + "BasicUsageLi1": "Click start to open the camera", + "BasicUsageLi2": "Click the photo button", + "BasicUsageLi3": "Click the close button to close the camera", + "BasicUsageStep": "Steps:", + "BasicUsageTitle": "Basic usage", + "DeviceLabel": "Camera", + "InitDevicesString": "Initializing ...", + "Li1": "The site wants to enable https, which is required by browser vendors", + "NotFoundDevicesString": "Video device not found", + "PlayText": "Open", + "PreviewText": "Preview", + "SaveText": "Save", + "StopText": "Close", + "SubTitle": "This component takes pictures by calling the camera", + "Title": "Camera" + }, + "BootstrapBlazor.Server.Components.Samples.Captchas": { + "BasicUsageIntro": "Simple human-machine identification", + "BasicUsageTitle": "Basic usage", + "GetImageName": "Custom method for getting the name of the background map file", + "ImageCallbackIntro": "Set a custom method to stitch the full path name of a random picture by GetImageName", + "ImageCallbackTitle": "Specify the graph bed delegate method", + "ImageTitle": "Specify the path and name of the graph bed", + "OnValid": "The slider verification code calls back this method after the validation results are determined", + "SubTitle": "Human-machine recognition by dragging the slider", + "Title": "Captchas" + }, + "BootstrapBlazor.Server.Components.Samples.Cards": { + "BasicUsageIntro": "Card is a simple example", + "BasicUsageTitle": "Card card components", + "CollapsibleBody": "Click card hader for collapse/expand card body", + "CollapsibleHeaderTemplate": "Header Template", + "CollapsibleHeaderTemplateIntro": "Setting HeaderTemplate for custom CardHeader", + "CollapsibleHeaderTemplateTitle": "Header Template", + "CollapsibleIntro": "Card body can collapse/expand by set IsCollapsible to true", + "CollapsibleIntroDesc": "Set Collapsed value to true for default collapsed card body.", + "CollapsibleTitle": "Collapsible", + "ColorIntro": "By setting, The makes the border and Body color appropriate", + "ColorTitle": "A card with a border color", + "Compare": "CardCompare", + "FooterIntro": "You can show the content by adding the HeaderTemplate and FooterTemplate elements", + "FooterTitle": "Header & Footer", + "IsCenterIntro": "Make content center by IsCenter=true", + "IsCenterTitle": "Center", + "ShadowBody": "Shadow effect sample", + "ShadowIntro": "Enable shadow effect by set IsShadow to true", + "ShadowTitle": "Shadow effect", + "SubTitle": "Aggregate information to display in a card container", + "Title": "Card" + }, + "BootstrapBlazor.Server.Components.Samples.Carousels": { + "BasicUsageIntro": "A wide range of basic usages are used to bind components to an array of picture paths by setting the Items property values", + "BasicUsageTitle": "Basic usage", + "CaptionClassIntro": "Set CarouselItemCaptionClass custome the class of caption", + "CaptionClassP1": "Set the CaptionClass to d-none d-md-block do not show the Caption in the small screen", + "CaptionClassTitle": "Caption Class", + "CaptionIntro": "Set CarouselItem parameter Caption for the content of caption", + "CaptionTemplateIntro": "Set CarouselItemCaptionTemplate custom the caption of item", + "CaptionTemplateTitle": "Caption Template", + "CaptionTitle": "Caption", + "ChildContentIntro": "Use ChildContent render the customer content", + "ChildContentTitle": "ChildContent", + "FadeIntro": "By setting the IsFade property, the picture switches with a fade-in and fade-out effect", + "FadeTitle": "Fade in and out", + "IntervalIntro": "Set Interval to a CarouselItem to change the amount of time to delay between automatically cycling to the next item. the default value is 5000 ms", + "IntervalTitle": "Individual interval", + "OnClickIntro": "After you set the OnClick property by setting, click Image to trigger the OnClick callback delegate", + "OnClickTitle": "Click on the image to call back the event", + "ShowControlsIntro": "Set ShowControls to true for show/hide the controls of Carousel", + "ShowControlsTitle": "Show Controls", + "ShowIndicatorsIntro": "Set ShowIndicators to true for show/hide the indicator of Carousel", + "ShowIndicatorsTitle": "Indicator", + "SubTitle": "In limited space, loop through the same type of pictures, text, and more", + "Title": "Carousel", + "TouchSwipingIntro": "Set DisableTouchSwiping disable the swiping function on mobile", + "TouchSwipingTitle": "Disable touch swiping" + }, + "BootstrapBlazor.Server.Components.Samples.Cascaders": { + "Block1Intro": "Drop-down selection boxes are available in a variety of colors", + "Block1Title": "Cascade selection", + "Block2Intro": "Cascading selection is not available", + "Block2Title": "Turn off cascading selection", + "Block3Desc": "You can use IsClearable to control whether to display the clear button. The default value is false", + "Block3Intro": "The values in the text box change when you change the cascading selection option by binding the Value property with the Select component.", + "Block3Title": "Two-way binding", + "Block4Intro": "When cascading selection is not selected, click the submit button to block.", + "Block4Title": "Client validation", + "Block5Intro": "The component binding value is an example of a Guid structure", + "Block5Title": "The binding generic is the Guid structure", + "Block6Intro": "When a component binds in both directions, it automatically determines whether label text is displayed based on the conditions", + "Block6Title": "The label is displayed", + "BlockParentSelectableIntro": "Whether can select on the parent node", + "BlockParentSelectableTitle": "Parent selectable", + "BlockShowFullLevelsIntro": "Whether show the full levels via ShowFullLevels", + "BlockShowFullLevelsTitle": "Show Full Levels", + "CascaderText": "Custom city", + "Description": "The pre-label explicit rules are consistent with the BootstrapInput component of the [portal]", + "Divider1": "Bidirectional binding displays labels", + "Divider2": "Bidirectional bindings do not display labels", + "Divider3": "Customize DisplayText", + "Event1": "This event is triggered when the cascading selection option changes", + "item1": "Melbourne", + "item1_child1": "Brunswick", + "item1_child1_child": "so-and-so street", + "item1_child2": "Fitzroy", + "item1_child3": "Carlton", + "item1_child4": "Thornbury", + "item2": "Sydney", + "item2_child1": "Millsons Point", + "item2_child2": "Potts Point", + "item2_child3": "North Sydney", + "item3": "Brisbane", + "item3_child1": "Brisbane", + "item3_child2": "Gold Cost", + "SubmitButtonText": "Submit", + "Title": "Cascader", + "ValidateButtonText": "Validate" + }, + "BootstrapBlazor.Server.Components.Samples.Charts.Bar": { + "BarAspectRatioIntro": "Setting the height and width will automatically disable the constraint chart ratio, and the chart will fill the container", + "BarAspectRatioTitle": "Chart ratio", + "BarColorSeparatelyIntro": "By setting BarColorSeparately property,control whether to Set bar chart colors separately,and By setting BackgroundColor property, set bar chart color", + "BarColorSeparatelyTitle": "Set bar chart colors separately", + "BarShowDataLabelIntro": "By setting ShowDataLabel property,control whether to display chart data values", + "BarShowDataLabelTitle": "Display chart data values", + "BarStackedIntro": "By setting the X/Y axis Stacked property, control whether to stack the arrangement", + "BarStackedTitle": "Stacked", + "BarTwoYAxesIntro": "Show secondary Y axis: alignment, title and data group", + "BarTwoYAxesTitle": "Double Y axis", + "BarTypeAddData": "Adding data", + "BarTypeAddDataSet": "Add dataset", + "BarTypeAnimationOff": "turn off animation", + "BarTypeAnimationOn": "turn on animation", + "BarTypeIntro": "Change the chart to a bar chart by setting ChartType", + "BarTypeRandomData": "random data", + "BarTypeReload": "Reload", + "BarTypeRemoveData": "Remove data", + "BarTypeRemoveDataSet": "Remove dataset", + "BarTypeTitle": "Bar graph" + }, + "BootstrapBlazor.Server.Components.Samples.Charts.Bubble": { + "BubbleBarAspectRatioIntro": "Setting the height and width will automatically disable the constraint chart ratio, and the chart will fill the container", + "BubbleBarAspectRatioTitle": "Chart ratio", + "BubbleNormalAddData": "Adding data", + "BubbleNormalAddDataSet": "Add dataset", + "BubbleNormalIntro": "Change the chart to a bubble chart by setting ChartType", + "BubbleNormalRandomData": "Random data", + "BubbleNormalReload": "Reload", + "BubbleNormalRemoveData": "Remove data", + "BubbleNormalRemoveDataset": "Remove dataset", + "BubbleNormalTitle": "Bubble diagram" + }, + "BootstrapBlazor.Server.Components.Samples.Charts.Doughnut": { + "DoughnutAspectRatioIntro": "Setting the height and width will automatically disable the constraint chart ratio, and the chart will fill the container", + "DoughnutAspectRatioTitle": "Chart ratio", + "DoughnutNormalAddDataset": "Add dataset", + "DoughnutNormalAddingData": "Adding data", + "DoughnutNormalHalf": "Half circle/Full circle", + "DoughnutNormalIntro": "Change the chart to a doughnut chart by setting ChartType", + "DoughnutNormalRandomData": "Random data", + "DoughnutNormalReload": "Reload", + "DoughnutNormalRemoveData": "Remove data", + "DoughnutNormalRemoveDataset": "Remove dataset", + "DoughnutNormalTitle": "Doughnut diagram" + }, + "BootstrapBlazor.Server.Components.Samples.Charts.Index": { + "Chart": "Chart", + "ChartIntro": "Drawing components of various charts with given data", + "ChartIntro2": "Component data can be set in the OnInit callback delegate" + }, + "BootstrapBlazor.Server.Components.Samples.Charts.Line": { + "AppendDataIntro": "Since ChartDataSource does not fully encapsulate all parameters in Chart.JS, when we need to set some unprovided parameters, we can use AppendData to complete it.", + "AppendDataTitle": "Append Data", + "CustomTooltipIntro": "Customizing Tooltip requires using client script settings", + "CustomTooltipLi1": "Chart component settings Id parameter", + "CustomTooltipLi2": "Create a client-side JavaScript script. This example uses the isolated script method to export the method name customTooltip. The parameters are component Id callback reference instance callback method name (TooltipLog)", + "CustomTooltipLi3": "In this example, the base class method InvokeInitAsync is overloaded to call the client script through the await InvokeVoidAsync(\"customTooltip\", CustomTooltipId, Interop, nameof(TooltipLog)) statement", + "CustomTooltipTitle": "Tooltip", + "LineBarAspectRatioIntro": "Setting the height and width will automatically disable the constraint chart ratio, and the chart will fill the container", + "LineBarAspectRatioTitle": "Chart ratio", + "LineChartJSIntro": "Due to the underlying reference ofBootstrapBlazor.CharttoChart.JS, we can call and generate charts through JS.", + "LineChartJSTitle": "Generate Chart through JS", + "LineContinueIntro": "Call the instance method Reload, readjust the data to shift the curve to the left, set IsAnimation to turn off the animation effect", + "LineContinueTitle": "Plot", + "LineNullableIntro": "Use to set the Data parameter of the ChartDataset instance with null, and the line chart is connected with a dotted line", + "LineNullableTitle": "Line graph", + "LineOnInitAddDataset": "Add dataset", + "LineOnInitAddingData": "Adding data", + "LineOnInitIntro": "Use OnInit to call back the delegate method, and after assigning the initialization data, the drawing operation can be performed, By setting the BorderWidth attribute, you can set the line width of the line chart, with a default value of 3, you can set the font size of Legend Labels by setting the ChartOptions.LegendLabelsFontSize property", + "LineOnInitRandomData": "Random data", + "LineOnInitReload": "Reload", + "LineOnInitRemoveData": "Remove data", + "LineOnInitRemoveDataset": "Remove dataset", + "LineOnInitTitle": "Line graph", + "LineTensionIntro": "Use the Tension parameter of the ChartDataset instance to adjust the curvature of the polyline, the default is 0.4f", + "LineTensionTitle": "Line graph", + "LineTwoYAxesIntro": "Show secondary Y axis: alignment, title and data group", + "LineTwoYAxesTitle": "Double Y axis" + }, + "BootstrapBlazor.Server.Components.Samples.Charts.Pie": { + "PieAspectRatioIntro": "Setting the height and width will automatically disable the constraint chart ratio, and the chart will fill the container", + "PieAspectRatioTitle": "Chart ratio", + "PieLegendPositionIntro": "Set the legend position through LegendPosition", + "PieLegendPositionTitle": "LegendPostion", + "PieNormalAddDataset": "Add dataset", + "PieNormalAddingData": "Adding data", + "PieNormalIntro": "Change the chart to a pie chart by setting ChartType", + "PieNormalRandomData": "Random data", + "PieNormalReload": "Reload", + "PieNormalRemoveData": "Remove data", + "PieNormalRemoveDataset": "Remove dataset", + "PieNormalTitle": "Pie diagram" + }, + "BootstrapBlazor.Server.Components.Samples.CheckboxLists": { + "AttributeOnMaxSelectedCountExceed": "Select the callback method when the maximum number of nodes is reached", + "CheckboxListGenericIntro": "Enable generic support by using the RadioListGeneric component with SelectedItem<TValue>", + "CheckboxListGenericTitle": "Generic List", + "CheckboxListsTip": "The control is used to create a multi-select check box group", + "Counter": "item is selected component binding value", + "Description": "TValue is set to IEnumerable<string> generic collection", + "DisabledIntro": "Disable by setting IsDisabled='true'", + "DisabledTitle": "Disable", + "EnumIntro": "The binding value is enumeration", + "EnumTip": "When CheckboxList binds an enumeration set, Items does not need to be specified, Items will be automatically set to all values in the enumeration. If you need to bind some values, please provide the enumeration set Items", + "EnumTitle": "Bidirectional binding enumeration", + "Event1": "Call back this method when the state of the check box changes", + "Foo": "Pat,Argo", + "Header": "common", + "IsButtonIntro": "Set IsButton=\"true\" to change the checkbox style to a button style", + "IsButtonTitle": "Button CheckboxList", + "item1": "Pat", + "item2": "Argo", + "item3": "Doom", + "item4": "Simon", + "ItemTemplateIntro": "Set ItemTemplate for customer the item UI", + "ItemTemplateTitle": "ItemTemplate", + "MaxSelectedCountDesc": "When more than 2 nodes are selected, a Toast prompt bar will pop up", + "MaxSelectedCountIntro": "Control the maximum number of selectable items by setting the MaxSelectedCount property, and handle the logic through the OnMaxSelectedCountExceed callback", + "MaxSelectedCountTitle": "MaxSelectedCount", + "NoBorderIntro": "By setting ShowBorder='false' do not display borders", + "NoBorderTip": "Displays a red border when validation fails", + "NoBorderTitle": "No border", + "NormalIntro": "Show check box groups by data binding", + "NormalTips1": "Set bidirectional binding data value through bind-Value", + "NormalTips2": "Set candidate data sources through Items", + "NormalTips3": "Get the changed item instance through the onSelectedChanged callback method", + "NormalTips4": "Enable label tooltip by ShowLabelTooltip=\"true\"", + "NormalTitle": "Basic usage", + "OnMaxSelectedCountExceedTitle": "Maximum Info", + "ShowLabelIntro": "Binding values are collections", + "ShowLabelTip": "TValue is set to IEnumerable<int> generic collection, the ValueField specified field of the bound collection must be consistent with the generic type", + "ShowLabelTitle": "Bidirectional binding collection", + "Title": "CheckboxList", + "ValidateFormIntro": "Built in ValidateForm", + "ValidateFormTips1": "You can experience adaptive layout by changing the window size", + "ValidateFormTips2": "In this example, the Name field of the binding model binditem is automatically changed by checking the option", + "ValidateFormTips3": "Because it is built into the ValidateForm form, in this example, RequiredAttribute required for verification is added. When all options are cancelled, the verification result will be prompted", + "ValidateFormTitle": "Client Validation", + "VerticalIntro": "Arrange checkboxes vertically by setting IsVertical=\"true\"", + "VerticalTitle": "Vertical arrangement" + }, + "BootstrapBlazor.Server.Components.Samples.Checkboxs": { + "BindStringIntro": "Binding variables within a component, data is automatically synchronized", + "BindStringTitle": "Bind string data in both directions", + "Checkbox2Text": "Two-way binding", + "Checkbox3Text": "Handwritten labels", + "Description": "Multiple-select in a set of alternatives", + "DisabledIntro": "Check box is not available, and the IsDisabled is set by whether the component is available", + "DisabledTitle": "Disable the check box", + "DisplayTextIntro": "Change the component size by setting the Size property", + "DisplayTextTitle": "Size", + "ItemTemplateIntro": "Set ItemTemplate for customer the item UI", + "ItemTemplateTitle": "ItemTemplate", + "NormalIntro": "Using alone can represent a switch between two states, and column head or header can represent a switch between three states when used. Components support generic data binding, setting the binding data type the TValue, and setting the component state by State", + "NormalTitle": "Basic usage", + "OnBeforeStateChanged": "This method is called back before the selection box status changes", + "OnBeforeStateChangedIntro": "By setting the OnBeforeStateChanged callback method, you can cancel the state change logic", + "OnBeforeStateChangedSwalContent": "Whether the current checkbox is selected", + "OnBeforeStateChangedSwalTitle": "Confirm Select", + "OnBeforeStateChangedText": "Confirm", + "OnBeforeStateChangedTitle": "OnBeforeStateChanged", + "OnStateChanged": "This method is called back when the selection box state changes", + "OnStateChangedIntro": "Binding variables within a component, data automatically synchronized, binding data types boolean type when the value is automatically flipped", + "OnStateChangedTitle": "Two-way binding boolean", + "ShowAfterLabelDescription": "Set DisplayText property, or display text messages through bidirectional binding", + "ShowAfterLabelIntro": "The check box displays text, and the component status flips when you tap display text, using the DisplayText settings component to display text", + "ShowAfterLabelTitle": "Label text", + "ShowLabelIntro": "Change the component background color by setting the Color property", + "ShowLabelTitle": "Color", + "StateChanged": "The state changes the callback method", + "StatusText1": "Selected", + "StatusText2": "Not selected", + "StatusText3": "Indeterminate", + "Title": "Checkbox", + "ValidateFormDescription": "The pre-label explicit rules are consistent with the BootstrapInput component [portal]", + "ValidateFormIntro": "When you use Checkbox in a form, the display label text is placed in front of the component", + "ValidateFormTitle": "Used in forms" + }, + "BootstrapBlazor.Server.Components.Samples.CherryMarkdowns": { + "ApiIntro": "Control content externally using CherryMarkdown's Api", + "ApiTitle": "External control components", + "CustomIntro": "Customize the toolbar via ToolbarSettings, and customize the editor style via EditorSettings", + "CustomTitle": "custom content", + "FileUploadIntro": "Use the OnFileUpload event to handle the file upload event, support directly pasting pictures to the browser", + "FileUploadTitle": "Handle file upload events yourself", + "Header": "CherryMarkdown", + "InsertCheckListButtonText": "Insert a CheckList", + "InsertPictureButtonText": "insert a picture", + "MarkdownsNote": "If you edit too much content, signalR communication interruption may be triggered. Please adjust the HubOptions configuration.", + "NormalIntro": "Use two-way binding to get the corresponding html and markdown content", + "NormalTitle": "Basic usage", + "Tip": "Rich text box component based on CherryMarkdown", + "ViewIntro": "Pure browsing mode, no editor", + "ViewTitle": "browse mode" + }, + "BootstrapBlazor.Server.Components.Samples.Circles": { + "BasicUsageIntro": "Set the circular progress by setting the Value property", + "BasicUsageTitle": "Basic usage", + "ChildContentIntro": "Customize the display content with custom subcomponents", + "ChildContentP1": "The size of the consumer population", + "ChildContentSpan": "Total number of people", + "ChildContentTitle": "Customize the display", + "CircleTips1": "Displays the percentage of progress for a task", + "CircleTips2": "Count the proportion of certain indicators.", + "ColorIntro": "Set the color of the circular progress bar by setting the Color property", + "ColorTitle": "Color", + "DecreaseSpan": "Decrease", + "IncreaseSpan": "Increase", + "StrokeWidthIntro": "Set the width of the circular progress bar by setting the StrokeWidth property", + "StrokeWidthTitle": "The width of the progress bar", + "SubTitle": "Chart class components. There are generally two uses:", + "Title": "Circle" + }, + "BootstrapBlazor.Server.Components.Samples.Client": { + "BasicUsageIntro": "The injection service displays client information", + "BasicUsageP1": "Introduction to usage", + "BasicUsageP2": "1. The UseBootstrapBlazor middleware in the Startup.cs file that client information collection is performed.", + "BasicUsageP3": "2. The component uses the injection service WebClientService to call the GetClientInfo method.", + "BasicUsageP4": "3. Turn on IP geolocation", + "BasicUsageTips": "app.UseBootstrapBlazor Middleware is located assembly BootstrapBlazor.Middleware, please refer to this package yourself for proper use", + "BasicUsageTitle": "Basic usage", + "Browser": "Browser", + "City": "City", + "Device": "Device", + "Engine": "Engine", + "GroupBoxTitle": "Connection information", + "Id": "Connection ID", + "Ip": "Ip", + "IpLocatorFactoryDesc": "This service has built-in IP geolocation function. For detailed configuration and documentation, please refer to", + "Language": "Language", + "LocatorsProviderDesc1": "Update the appsetting.json project configuration file", + "LocatorsProviderDesc2": "Or use the code to open", + "LocatorsProviderDesc3": "Or enable this function through configuration", + "LocatorsProviderOptions": "BootstrapBlazorOptions section WebClientOptions By default it is false, which means the IP address location function is not enabled. Please change it to true in the configuration file or code.", + "OS": "OS", + "RequestUrl": "RequestUrl", + "SubTitle": "More for system log tracking", + "Title": "Get client connection information" + }, + "BootstrapBlazor.Server.Components.Samples.Clipboards": { + "ClipboardCopyMethod": "Copy text to the clipboard method", + "ClipboardGetMethod": "Method for reading clipboard content", + "ClipboardGetTextMethod": "Method for reading clipboard text content", + "ClipboardIntro": "Clipboard service! Please note that it can only be run under HTTPS secure connections or used in the localhost development environment.", + "ClipboardTitle": "ClipboardService" + }, + "BootstrapBlazor.Server.Components.Samples.ClockPickers": { + "AutoSwitchText": "Whether to automatically switch the dial", + "BindValueIntro": "By settingIsAutoSwitch=\"false\" to disable automatic switching of hour, minute, and stopwatch dial functions", + "BindValueTitle": "bind", + "Description": "Select a time by dragging the watch needle", + "HasSecondsIntro": "By settingShowSecond=\"false\" to not display the second hand dial", + "HasSecondsTitle": "Do not set the number of seconds", + "ShowClockScaleIntro": "By settingShowClockScale=\"true\" to display the dial scale", + "ShowClockScaleTitle": "Display dial scale", + "ShowMinuteIntro": "By settingShowMinute=\"false\"to not display the minute dial", + "ShowMinuteTitle": "Do not set minutes", + "Title": "ClockPicker" + }, + "BootstrapBlazor.Server.Components.Samples.CodeEditors": { + "BasicIntro": "Basic Use", + "BasicTitle": "Basic Use", + "Language": "Language used by the editor: csharp, JavaScript, ...", + "Theme": "Theme of the editor", + "Title": "Code Editor", + "Value": "Gets or sets the value of the input", + "ValueChanged": "Gets or sets a callback that updates the bound value" + }, + "BootstrapBlazor.Server.Components.Samples.Collapses": { + "AccordionIntro": "Only one panel can be expanded at a time", + "AccordionTitle": "Accordion effect", + "BasicUsageIntro": "Multiple panels can be expanded at the same time, with no effect between panels", + "BasicUsageTitle": "Basic usage", + "ButtonText": "Toggle", + "CollapseItemAttributeClass": "The class of item", + "CollapseItemAttributeHeaderClass": "The class of header", + "CollapseItemAttributeHeaderTemplate": "Header template", + "CollapseItemAttributeIcon": "The icon of header", + "CollapseItemAttributeIsCollapsed": "The item status collapsed", + "CollapseItemAttributeText": "The title of header", + "CollapseItemAttributeTitleColor": "The color of header", + "ColorIntro": "Each panel sets a different color", + "ColorTitle": "The child title color", + "Consistency": "Consistency", + "ConsistencyItem1": "Consistent with real life: consistent with real-life processes, logic, follow the user's habits of language and concepts;", + "ConsistencyItem2": "Consistent in the interface: All elements and structures need to be consistent, such as design styles, icons and text, the location of elements, and so on.", + "Controllability": "Controllability", + "ControllabilityItem1": "User decision-making: according to the scene can give the user action advice or security tips, but can not replace the user to make decisions;", + "ControllabilityItem2": "Results controllable: Users are free to perform actions, including undoing, falling back, and terminating the current operation.", + "Efficiency": "Efficiency", + "EfficiencyItem1": "Simplify the process: design simple and intuitive operating process;", + "EfficiencyItem2": "Clear and clear: clear language and clear expression, so that users quickly understand and then make decisions;", + "EfficiencyItem3": "Help users identify: The interface is straightforward, allowing users to quickly identify rather than recall, reducing the user's memory burden.", + "Feedback": "Feedback", + "FeedbackItem1": "Control feedback: through the interface style and interactive effect so that users can clearly perceive their own actions;", + "FeedbackItem2": "Page feedback: After the operation, the current state is clearly represented by changes in the page elements.", + "HeaderTemplateIntro": "Customize the Header display content by setting HeaderTemplate", + "HeaderTemplateTitle": "Header Template", + "IconIntro": "Show icon in header", + "IconTitle": "Icon", + "ItemsIntro": "The CollapseItems is set by conditional logic", + "ItemsTitle": "Dynamic updates", + "SubTitle": "The content area is contained by the collapsed panel", + "Title": "Collapse" + }, + "BootstrapBlazor.Server.Components.Samples.ColorPickers": { + "BindValueIntro": "Set the color value by setting the Value property", + "BindValueTitle": "Two-way binding", + "Description": "Select color to use", + "Disabled": "Disabled", + "DisabledIntro": "Disable this component by setting the IsDisabled property", + "DisabledTitle": "Disabled", + "FormatterIntro": "Set the display value by setting the Formatter callback method", + "FormatterTitle": "Formatter", + "IsSupportOpacityIntro": "Enable transparency support by setting IsSupportOpacity=\"true\"", + "IsSupportOpacityTitle": "Support Opacity", + "NormalIntro": "Set the color value by setting the Value property", + "NormalTitle": "Basic Usage", + "SupportOpacity": "Support Opacity", + "TemplateIntro": "Customize the display template by setting Template", + "TemplateTitle": "Display Template", + "Title": "ColorPicker", + "ValidateFormIntro": "Built in ValidateForm to use", + "ValidateFormTitle": "Used in the verification form", + "ValueDescription": "Set Value='@Value' to initialize the default value", + "ValueIntro": "Set the color value by setting the Value property", + "ValueTitle": "Set Initial Value" + }, + "BootstrapBlazor.Server.Components.Samples.Consoles": { + "ColorIntro": "Changes to colors are made by setting the Color parameter of ConsoleMessageItem", + "ColorTitle": "messages in different colors", + "ConsoleMessageItem": "ConsoleMessageItem property", + "Description": "Console component, generally used for the output of background tasks", + "IsAutoScrollDescription": "by setting IsAutoScroll Turn on autoscroll", + "IsAutoScrollIntro": "Enable or disable automatic scrolling by setting the ShowAutoScroll property value", + "IsAutoScrollTitle": "auto scroll", + "NormalIntro": "Display background push messages", + "NormalTitle": "Basic usage", + "OnClearIntro": "The data set is cleared by setting the OnClear callback method. Since this example uses the same data source as the previous example, it will cause the data source update delay in the above example", + "OnClearTitle": "Empty console", + "ShowAutoScrollDescription": "set up ShowAutoScroll=\"true\" Show autoscroll options", + "ShowAutoScrollIntro": "Switch auto scroll the data by set ShowAutoScroll parameter", + "ShowAutoScrollTitle": "ShowAutoScroll", + "Title": "Console" + }, + "BootstrapBlazor.Server.Components.Samples.ContextMenus": { + "ContextMenuCallbackIntro": "By setting the ContextMenu component parameter OnBeforeShowCallback, you can get the callback event before the right-click menu pops up, which can be used for data preparation or render menus based on conditions", + "ContextMenuCallbackTitle": "ContextMenu Callback", + "ContextMenuCustomUIIntro": "Right click on the row of Li to pop up a context menu", + "ContextMenuCustomUITitle": "Custom component", + "ContextMenuDescription": "Context menu that pops up when the user clicks the right mouse button", + "ContextMenuDisabledIntro": "By setting the ContextMenuItem component parameter OnDisabledCallback callback method, you can set whether the current right-click option is disabled.", + "ContextMenuDisabledTitle": "OnDisabledCallback", + "ContextMenuItemCopy": "Copy", + "ContextMenuItemPast": "Past", + "ContextMenuNormalIntro": "Right click on the row of div to pop up a context menu", + "ContextMenuNormalTitle": "Basic usage", + "ContextMenuTableIntro": "Right click on the Table to pop up a context menu", + "ContextMenuTableTitle": "Table", + "ContextMenuTitle": "ContextMenu", + "ContextMenuTreeIntro": "Right click on the Tree to pop up a context menu", + "ContextMenuTreeTitle": "Tree" + }, + "BootstrapBlazor.Server.Components.Samples.CountButtons": { + "BaseUsageIntro": "Set the countdown time through the Count parameter value, which defaults to 5 seconds", + "BaseUsageText": "Basic usage", + "Description": "It is often used to force a period of execution time logic, such as waiting for input 60 seconds after sending a verification code", + "Text": "Send code", + "TextIntro": "Set countdown text through CountText parameter values", + "TextTitle": "Timing Text", + "Title": "CountButton" + }, + "BootstrapBlazor.Server.Components.Samples.CountUps": { + "CountUpsNormalIntro": "Set Value", + "CountUpsNormalTitle": "Normal", + "Description": "Animates a numerical value by counting to it", + "Title": "CountUp" + }, + "BootstrapBlazor.Server.Components.Samples.DateTimePickers": { + "BindValueIntro": "The values in the text box change as the date component time changes", + "BindValueTitle": "Data is bound in both directions", + "BlockAutoCloseDesc": "AutoClose The default value is true When selecting a date, the pop-up window will automatically close. When the value is set to false, the pop-up window needs to be closed when the confirm button is clicked", + "BlockAutoCloseIntro": "Auto close the popup window by se AutoClose to true", + "BlockAutoCloseTitle": "Auto close", + "BlockGroupIntro": "Used in the built-in BootstrapInputGroup and in combination with BootstrapInputGroupLabel", + "BlockGroupLabel": "Prev", + "BlockGroupSuffixLabel": "Suffix", + "BlockGroupTitle": "InputGroup", + "DateTimeOffsetIntro": "Select the control based on the date of the day in 「day」 as the base unit", + "DateTimeOffsetTitle": "Click on the pop-up date box", + "DateTimePickerIntro": "Select the hour, minute, and second on the clock dial to obtain the current date and time.", + "DateTimePickerTitle": "Select the time", + "DayTemplateIntro": "By setting the DayTemplate custom display template, the disabled date template is DayDisabledTemplate", + "DayTemplateTitle": "Custom date display", + "Description": "Used to select or enter a date", + "DisableDayCallbackAllowNullDisplayText": "DateTime?", + "DisableDayCallbackIntro": "Customize which days need to be disabled by setting OnGetDisabledDaysCallback", + "DisableDayCallbackNotAllowNullDisplayText": "DateTime", + "DisableDayCallbackTip": "
  • When a component is assigned a disabled date, the component still displays its value by default. If you need to display the disabled date as an empty string, please set DisplayDisabledDayAsEmpty=\"true\"
  • This example uses slightly more complex logic to determine the disabled date. The disabled date is a combination of conditions, so when the conditions change, you need to call the component instance method ClearDisabledDays to clear the internal cache

In this example, the first component has DisplayDisabledDayAsEmpty=\"true\" set, so the component value is DateTime.Today and the displayed value is empty string

In this example, the data type of the second component is non-nullable type. Since the default value of the parameter AutoToday is true So even if the initial value is DateTime.MinValue, its display value is DateTime.Today Even when today is disabled, it is still displayed. If you need to display an empty string, please set DisplayDisabledDayAsEmpty=\"true\"
", + "DisableDayCallbackTitle": "Customize the disable date", + "DisabledIntro": "When you set the IsDisabled property value to true, the component suppresses input", + "DisabledTitle": "Disable", + "DisableOptions": "Disable options", + "DisableToday": "Disable today", + "DisableWeekend": "Disable weekend", + "DisplayText": "Select the time", + "Event1": "Confirm that the button calls back the delegate", + "Event2": "Callback delegates are used for bidirectional binding when component values change", + "Feature": "Feature", + "FeatureFestivalIntro": "The festival function is provided by the built-in service ICalendarFestivals in the component library. The built-in default implementation provides 12 Gregorian festivals and 7 lunar festivals, which can be extended through custom festival services. For detailed function introductions, please refer to the Festival Services documentation [Portal]", + "FeatureIntro": "Holidays Functional dependency component packages BootstrapBlazor.Holiday [Portal]", + "FeatureShowFestivals": "Festivals", + "FeatureShowFestivalsIntro": "ShowFestivals Whether to display festivals", + "FeatureShowHolidays": "Holidays", + "FeatureShowHolidaysIntro": "ShowHolidays Whether to display holidays", + "FeatureShowLunar": "Lunar", + "FeatureShowLunarIntro": "ShowLunar Whether to display the lunar calendar", + "FeatureShowSolarTerm": "Solar Term", + "FeatureShowSolarTermIntro": "ShowSolarTerm Whether to display the 24 solar terms", + "IsEditableIntro": "Enable manual input function by setting IsEditable=\"true\"", + "IsEditableTitle": "Editable", + "MinValueIntro": "Set the MinValue property value to the MaxValue limit the range of optional values, in this case setting the range to 45days", + "MinValueTitle": "Set the range of values", + "NormalIntro": "Select the control based on the date of the day in 「day」as the base unit", + "NormalTitle": "Select the day", + "NullValueIntro": "More for conditional selection", + "NullValueTip": "The emptybutton automatically appears when the binding value is DateTime? for an empty type", + "NullValueTitle": "Allow empty time", + "OnGetDisabledDaysCallbackEvent": "Disable date callback method", + "ShowIconIntro": "Save space by setting ShowIcon=\"false\" to not display component icons", + "ShowIconTitle": "Whether show the component icon", + "ShowLabelIntro": "When you are a form component, the label in front of the component is displayed", + "ShowLabelTip": "Set the DisplayText property value to select time, The pre-label explicit rules are consistent with the BootstrapInput component of the [portal]", + "ShowLabelTitle": "The label is displayed", + "ShowSidebarIntro": "When you set the ShowSidebar property value to true, the component displays the shortcut sidebar", + "ShowSidebarTitle": "Sidebar with shortcuts", + "SubmitText": "Save", + "Title": "DatePicker", + "ValidateFormIntro": "Check data validity and prompt automatically based on custom validation rules", + "ValidateFormTitle": "Client validation", + "ViewModeIntro": "Select the date and time in the same selector, click the confirm button and close the pop-up window", + "ViewModeTip": "Set the value of the viewMode property to The DateTime of DatePickerViewMode.DateTime", + "ViewModeTitle": "Selector with time" + }, + "BootstrapBlazor.Server.Components.Samples.DateTimeRanges": { + "AutoCloseIntro": "Click on the sidebar shortcuts to Close the pop-up automatically", + "AutoCloseTitle": "AutoClose", + "BindValueIntro": "Click the confirm button, the time selection box value is the same as the text box value. Enable auto-close by setting AutoClose=\"true\". Directly display the selected value by setting ShowSelectedValue=\"true\"", + "BindValueTitle": "Data two-way binding", + "Description": "Select a date in the same picker", + "DisabledIntro": "When the IsDisabled attribute value is set to true, the component disables input", + "DisabledTitle": "Disabled", + "Feature": "Feature", + "FeatureShowFestivals": "Festivals", + "FeatureShowHolidays": "Holidays", + "FeatureShowLunar": "Lunar", + "FeatureShowSolarTerm": "Solar Term", + "Limit": "time limit", + "MaxMinValueIntro": "set time range", + "MaxMinValueTitle": "Max and Min", + "NormalIntro": "Take 'day' as the basic unit, select a period of time", + "NormalTitle": "Basic skills", + "SidebarIntro": "When the ShowSidebar property value is set to true, the component displays the shortcut sidebar", + "SidebarTip": "by setting ShowSidebar The parameter enables the display sidebar shortcut options function, by setting SidebarItems The parameter collection replaces the default shortcuts built into the component", + "SidebarTitle": "Sidebar with shortcut keys", + "SingleViewTitle": "Single view mode", + "Submit": "Submit", + "Title": "Date Time Range Picker", + "TodayIntro": "When the ShowToday attribute value is set to true, the today shortcut button is displayed below the component", + "TodayTip": "Click Today Button,time limit yyyy-MM-dd 00:00:00 to yyyy-MM-dd 23:59:59", + "TodayTitle": "Show today button", + "ValidateFormIntro": "Build components into ValidateForm used in", + "ValidateFormTitle": "Used in the form", + "ViewModeIntro": "By setting ViewMode=\"DatePickerViewMode.Year\", the component view is the year view, and by setting ViewMode=\"DatePickerViewMode.Month\", the component view is the year view.", + "ViewModeTitle": "ViewMode" + }, + "BootstrapBlazor.Server.Components.Samples.DialButtons": { + "BaseUsageIntro": "By setting Placement value for set the dial button popup direction", + "BaseUsageText": "Basic usage", + "DialButtonIntro": "After clicking the button, a function menu and other information will pop up, mostly used for displaying secondary functions", + "DialButtonTitle": "DialButton" + }, + "BootstrapBlazor.Server.Components.Samples.Dialogs": { + "ApplyDisplayText": "Primary key parameter", + "ApplyIntro": "In this example, by passing a primary key, the components in the pop-up window perform data query through this primary key, and display the results in the pop-up window", + "ApplyOpenDialogButton": "Pop-ups", + "ApplyTitle": "Practical application", + "Attribute": "DialogOption property", + "BodyContextIntro": "By setting the BodyContext attribute value, parameters can be passed to the components in the pop-up window", + "BodyContextOpenDialogButton": "Dialog parameter passing example", + "BodyContextTip": "In this example, when the button is clicked, the value of BodyContext is set to I am a parameter, and the content of the pop-up window is the custom component DemoComponent, which is cascaded in the component. parameter gets its value", + "BodyContextTitle": "Pop-up window", + "CloseDialogByCodeIntro": "This example explains how to open and close a popup window through code", + "CloseDialogByCodeTip": "Use DialogOption instance method CloseDialogAsync to close the popup", + "CloseDialogByCodeTitle": "Code to close the popup", + "ComponentIntro": "Pop up a custom component by calling Show<Counter>()", + "ComponentOpenDialogButton": "Click to open Dialog", + "ComponentTip": "In this example, the pop-up dialog box contains a built-in Counter component of a sample website", + "ComponentTitle": "Pop out complex components", + "ConfirmDialogButton": "Popup Modal", + "ConfirmDialogModalContent": "

this is the prompt message.

this is a danger info
", + "ConfirmDialogModalTitle": "Literal Confirmation Modal", + "CustomerHeaderIntro": "Customize the title bar of the modal box by setting the HeaderTemplate property", + "CustomerHeaderOpenDialogButton": "Pop-ups", + "CustomerHeaderTitle": "Custom title bar", + "Description": "Human-computer interaction by calling the Show method pop-up window by injecting the service", + "DialogTitle": "Data query window", + "DisableHeaderCloseButtonIntro": "This example explains how to open and close a popup window through code", + "DisableHeaderCloseButtonTip": "Setting parameters ShowHeaderCloseButton Ban pop-ups Header Shows the Close button on the right", + "DisableHeaderCloseButtonTitle": "Disable close button in Header", + "EditDialogButton": "Edit popup", + "EditDialogIntro": "Pop up the save dialog through the ShowEditDialog method", + "EditDialogTip1": "Features", + "EditDialogTip2": "Click the button to pop up the edit popup", + "EditDialogTip3": "Set the pop-up window through the EditDialogOption parameter", + "EditDialogTip4": "The design starting point automatically generates a form window with client-side validation by giving a Model or Items", + "EditDialogTitle": "Edit dialog", + "EmailDialogButtonYes": "Choose", + "EmailDialogTitle": "Select recipient", + "EmailInput": "please enter ...", + "EmailIntro": "Simulate a mail application, select the recipient in the pop-up window and fill in the recipient box below.", + "EmailLabel": "recipient", + "EmailTip1": "Features", + "EmailTip2": "Click the button to pop up a modal popup", + "EmailTip3": "Pass 10 to the pop-up window by cascading parameters BodyContext to initialize data", + "EmailTip4": "Select the row data in the Table component and update the SelectedRows data through two-way binding", + "EmailTip5": "Click the Check button to update the Emails data via two-way binding", + "EmailTip6": "Emails value not updated when Cancel or Close button is clicked", + "EmailTip7": "When clicking the pop-up modal pop-up window again, the selected state of the inner row of the component remains the same", + "EmailTip8": "Prohibit closing the popup when no user is selected in the popup", + "EmailTitle": "Practical drill", + "ErrorLoggerButton": "global exception test", + "ErrorLoggerIntro": "Through BootstrapBlazorRoot built-in ErrorLogger global exception capture for errors in the pop-up window", + "ErrorLoggerTitle": "exception catch", + "ExportPdfButton": "Export Pdf", + "ExportPdfDialogIntro": "Set ShowExportPdfButtonInHeader to display an export PDF button on the Header", + "ExportPdfDialogTip": "More parameters can be set by setting ExportPdfButtonOptions", + "ExportPdfDialogTitle": "Pop up window with export Pdf function", + "HeaderToolbarTemplateButtonText": "Print", + "HeaderToolbarTemplateDialogTitle": "Custom toolbar sample", + "HeaderToolbarTemplateIntro": "Set HeaderToolbarTemplate custom the buttons on Header", + "HeaderToolbarTemplateTitle": "Header Toolbar Template", + "HeaderToolbarTemplateToastContent": "Print button clicked", + "KeyboardIntro": "Set the basic properties of the modal box by setting the DialogOption property", + "KeyboardOpenDialogButton": "Click to open Dialog", + "KeyboardTip": "by setting DialogOption IsKeyboard parameter, whether the pop-up window supports ESC, please click the back button to set and then click the pop-up window button to test the effect", + "KeyboardTitle": "Basic usage", + "ModalDialogButton": "Click to open Dialog", + "ModalDialogIntro": "Pop up a dialog box in thread blocking mode through the ShowModal method", + "ModalDialogTip1": "Features", + "ModalDialogTip2": "Click the button to pop up a modal popup", + "ModalDialogTip3": "Change the value in the modal pop-up window when the confirm button is clicked update", + "ModalDialogTip4": "Change the value in the modal pop-up window and click the Cancel or Close button when the value is not updated", + "ModalDialogTip5": "When the modal pop-up window is clicked again, the value remains the same", + "ModalDialogTitle": "Modal dialog", + "MultipleDialogButton": "Pop-ups", + "MultipleDialogDesc": "At present, multi-level pop-up windows have been implemented. Each ModalDialog can independently set the IsBackdrop IsKeyboard parameters. This fixes the problem of pressing ESC in the previous version to remove all pop-up windows", + "MultipleDialogIntro": "Click the button inside the popup to continue the popup dialog", + "MultipleDialogTip1": "Features", + "MultipleDialogTip2": "Click the button to pop up a dialog", + "MultipleDialogTip3": "Switch the third tab of the Tab component in the pop-up window role management", + "MultipleDialogTip4": "Click the popup in the tab to continue the popup dialog", + "MultipleDialogTip5": "Keep state of previously opened dialogs after closing the current dialog", + "MultipleDialogTitle": "Multi-level popup", + "PrintDialogButton": "Click to open Dialog", + "PrintDialogIntro": "Show a print preview button on the Header by setting ShowPrintButton", + "PrintDialogTip": "by setting PrintButtonText change the Print Preview button text", + "PrintDialogTitle": "Print button", + "ResizeIntro": "Resize the modal box by setting the ShowResize property", + "ResizeTitle": "Resize", + "SaveDialogButton": "Save popup", + "SaveDialogIntro": "Pop up the save dialog through the ShowSaveDialog method", + "SaveDialogTip1": "Features", + "SaveDialogTip2": "Click the button to pop up the save popup", + "SaveDialogTip3": "The design starting point automatically generates a save window by giving a TComponent, and performs data processing in the save callback method by setting saveCallback, which is required by TComponent generic components Parameters can be passed through parameters", + "SaveDialogTitle": "Save dialog", + "SearchDialogButton": "Search popup", + "SearchDialogIntro": "Pop up the save dialog through the ShowSearchDialog method", + "SearchDialogTip1": "Features", + "SearchDialogTip2": "Click the button to pop up a search popup", + "SearchDialogTip3": "Set the pop-up window through the SearchDialogOption parameter", + "SearchDialogTip4": "The design starting point automatically generates a search window by giving a Model or Items", + "SearchDialogTitle": "Search dialog", + "ShowMaximizeButton": "Click to open Dialog", + "ShowMaximizeButtonIntro": "Show a window maximize button on the Header by setting ShowMaximizeButton", + "ShowMaximizeButtonTitle": "Full screen popup", + "SizeButton": "Fullscreen popup (< 1200px)", + "SizeIntro": "Very flexible form size control can be achieved by setting the Size FullScreenSize parameter combination", + "SizeTitle": "Dialog size", + "Tip1": "Component usage introduction", + "Tip2": "inject service DialogService [Portal]", + "Tip3": "call DialogOption instance method OnCloseAsync", + "Tip4": "CascadingParameter", + "Tip5": "DialogCloseButton", + "Title": "Dialog component" + }, + "BootstrapBlazor.Server.Components.Samples.Dispatches": { + "Description": "By injecting the service to call the instance method, the site-wide pop-up window is used for message notification", + "DispatchIntro": "Click the button to distribute the message, all people who open this page can receive the message distributed by this button", + "DispatchNoticeButtonText": "Notice", + "DispatchNoticeMessage": "Test dispatch message", + "DispatchTip": "Since this function is a site-wide push notification, in order to prevent malicious use, in the example below, the button notification is disabled for 30 seconds; the message injection code is in the MainLayout template", + "DispatchTitle": "Practical application", + "NormalTip": "Through this component function, this site realizes the function of prompting the whole site when the code warehouse is submitted.", + "NormalTips1": "1. Get the Injection Service specified message entity class", + "NormalTips2": "2. Subscribe notifications", + "NormalTips3": "3. Unsubscribe when the page or component is destroyed", + "NormalTips4": "4. Notification implementation method Notify", + "NormalTips5": "used in this example Toast component for notification, and any other built-in message component or custom component can be used for notification operation in actual combat", + "NormalTipsContent": "Notification content", + "NormalTipsTitle": "notification title", + "Tips": "This component provides functions in the form of injection services, which are usually used for site-wide message push and other functions; using this service requires subscribe and unsubscribe operations in the code", + "Title": "Dispatch message distribution" + }, + "BootstrapBlazor.Server.Components.Samples.Displays": { + "Arr": "Array", + "BasicUsage": "Basic usage", + "BasicUsageIntro": "Show only", + "BasicUsageTitle": "Basic usage", + "BindWayCustomLabel": "Custom labels", + "BindWayIntro": "Two-way binding automatically gets the display labels in the resource file", + "BindWayNotOccupants": "Do not occupy seats", + "BindWayOccupants": "Occupants", + "BindWayP1": "When the Display components turn on bidirectional binding, the Display/DisplayName label value is automatically obtained based on the Model property value of the binding and appears as a pre-Label, with DisplayText properties you can customize the display of the pre-label, or by turning off the display of the pre-label through the ShowLabel property", + "BindWayP2": "Set the DisplayText value to custom label ", + "BindWayP3": "The value of DisplayText is displayed when ShowLabel is true, regardless of whether the value is set", + "BindWayP4": "The value of DisplayText is not displayed when the ShowLabel is false", + "BindWayTitle": "Bind data in both directions", + "Collection": "Collection", + "DataTypeIntro": "The Display component has built-in processing of enumerated collections array, customize formatting or callback delegate methods if they do not meet the criteria", + "DataTypeTitle": "Generic binding", + "EditorFormIntro": "The Display component is used in form components EditorForm, and is used in detail pages and is not editable", + "EditorFormTitle": "Used within the form", + "Enum": "Enumerate", + "FormatStringIntro": "When you set the FormatString property value to yyyy-MM-dd, the component displays a time format of the year and day", + "FormatStringP": "The Display component binding byte[] array, formatted as an example of base64 encoded string", + "FormatStringSettingText": "Set up", + "FormatStringTitle": "Custom format", + "Integer": "Integer", + "LookupIntro": "Set the Lookup value to IEnumerable<SelectedItem> collection, through which the component will perform translations through the Value display Text", + "LookupP1": "In this example, the component Value='@IntValue' set Lookup='@IntValueSource' component to display the Value corresponding to the value of the Text Value", + "LookupTitle": "Lookup", + "ShowTooltipIntro": "Wrapper with Tooltip or ShowTooltip=\"true\" component for show tooltip title", + "ShowTooltipTitle": "Show Tooltip", + "SubTitle": "Displays static text data", + "Title": "Display" + }, + "BootstrapBlazor.Server.Components.Samples.Dividers": { + "AlignmentContent1": "Just a Content Test 1", + "AlignmentContent2": "Just a Content Test 2", + "AlignmentContent3": "A cute icon", + "AlignmentContent4": "Learning makes me happy", + "AlignmentDivider1": "Young Bao Qingtian", + "AlignmentDivider2": "League of Legends", + "AlignmentDivider3": "Learning Quotations", + "AlignmentIntro": "You can customize the content of the copy on the dividing line.", + "AlignmentTitle": "Set copy", + "ChildContent1": "A sunny day above my head, I missed one in my heart", + "ChildContent2": "When the knight returns, the day the broken sword is reforged", + "ChildContentIntro": "Any content can be customized by setting the content of ChildContent", + "ChildContentTitle": "Custom content", + "Description": "The dividing line that separates the content.", + "DividerChildContent": "I am a custom content div element", + "IconBookmark": "Bookmarks", + "IconContent1": "A sunny day above my head, I missed one in my heart", + "IconContent2": "When the knight returns, the day the broken sword is reforged", + "IconContent3": "A cute icon", + "IconContent4": "Learning makes me happy", + "IconIntro": "You can customize the content of the copy on the dividing line.", + "IconTitle": "Settings icon", + "NormalContent1": "Youth is a short dream, when you wake up, it has long since disappeared.", + "NormalContent2": "A small amount of evil is enough to cancel out all the noble qualities, causing people to be infamous.", + "NormalIntro": "Split text paragraphs in different chapters.", + "NormalTitle": "Basic usage", + "Title": "Dividing line", + "VerticalContent1": "Rain", + "VerticalContent2": "Old hometown", + "VerticalContent3": "Deep vegetation", + "VerticalDivider": "Dividing line", + "VerticalIntro": "Display dividing line vertically", + "VerticalTitle": "Vertical split" + }, + "BootstrapBlazor.Server.Components.Samples.DockViews.DockViewCol": { + "DockViewColIntro": "Make the DockView vertical by setting Type=\"DockContentType.Column\"", + "DockViewColTitle": "DockView - Column" + }, + "BootstrapBlazor.Server.Components.Samples.DockViews.DockViewComplex": { + "DockViewComplexIntro": "Complex layouts can be achieved by combining and nesting DockContentType values", + "DockViewComplexTitle": "DockView - Complex" + }, + "BootstrapBlazor.Server.Components.Samples.DockViews.DockViewLayout": { + "DockViewLayoutIntro": "Initialize the display layout of the control panel by setting the LayoutConfig property of DockView, and get the display layout of the panel by using the GetLayoutConfig method", + "DockViewLayoutTitle": "DockView - Custom Layout" + }, + "BootstrapBlazor.Server.Components.Samples.DockViews.DockViewLock": { + "DockViewLockIntro": "By setting the IsLock property of DockView, you can control whether all panels can be dragged.", + "DockViewLockTitle": "DockView - Lock" + }, + "BootstrapBlazor.Server.Components.Samples.DockViews.DockViewNest": { + "DockViewNestIntro": "DockView can be nested inside DockComponent and its label can be made invisible by setting ShowHeader=\"false\"", + "DockViewNestTitle": "DockView - Nested Layouts" + }, + "BootstrapBlazor.Server.Components.Samples.DockViews.DockViewRow": { + "DockViewRowIntro": "Make the DockView horizontal by setting Type=\"DockContentType.Row\"", + "DockViewRowTitle": "DockView - Row" + }, + "BootstrapBlazor.Server.Components.Samples.DockViews.DockViewStack": { + "DockViewStackIntro": "Make the DockView group layout by setting Type=\"DockContentType.Stack\"", + "DockViewStackTitle": "DockView - Stack" + }, + "BootstrapBlazor.Server.Components.Samples.DockViews.DockViewVisible": { + "DockViewVisibleIntro": "Control whether to display the component by setting Visible, and use OnVisibleStateChangedAsync to set the panel closing callback delegate method", + "DockViewVisibleTitle": "DockView - Visible" + }, + "BootstrapBlazor.Server.Components.Samples.DockViews.Index": { + "DockViewDescription": "A multi window layout manager for webapps", + "DockViewIntro": "

DockView component is wrapped Golden Layout lib,it is a JavaScript layout manager which enables you to layout components in a web page and re-arrange them with drag and drop. Its features include:

  • Native popup windows
  • Touch support
  • Support for application frameworks such as Angular and Vue
  • Virtual components
  • Comprehensive API
  • Load and save layouts
  • Focus components
  • Completely themeable
  • Works in modern browsers (Firefox, Chrome)
  • Responsive design
", + "DockViewTitle": "DockView" + }, + "BootstrapBlazor.Server.Components.Samples.DockViews2.DockViewCol": { + "DockViewColIntro": "Make the DockViewV2 layout vertically by setting Type=\"DockContentType.Column\" and initialize its panel height by setting Height=\"240\"", + "DockViewColTitle": "DockViewV2 - Column" + }, + "BootstrapBlazor.Server.Components.Samples.DockViews2.DockViewComplex": { + "DockViewComplexIntro": "Complex layouts can be achieved by combining and nesting DockContentType values", + "DockViewComplexTitle": "DockViewV2 - Complex" + }, + "BootstrapBlazor.Server.Components.Samples.DockViews2.DockViewGroup": { + "DockViewGroupIntro": "Make the DockViewV2 group layout by setting Type=\"DockContentType.Group\"", + "DockViewGroupTitle": "DockViewV2 - Group" + }, + "BootstrapBlazor.Server.Components.Samples.DockViews2.DockViewLayout": { + "DockViewLayoutIntro": "Initialize the display layout of the control panel by setting the LayoutConfig property of DockView, and get the display layout of the panel by using the GetLayoutConfig method", + "DockViewLayoutTitle": "DockViewV2 - Custom Layout" + }, + "BootstrapBlazor.Server.Components.Samples.DockViews2.DockViewLock": { + "DockViewLockIntro": "By setting the IsLock property of DockViewV2, you can control whether all panels can be dragged, and by setting ShowLock, you can control whether the lock button is displayed.", + "DockViewLockTitle": "DockViewV2 - Lock" + }, + "BootstrapBlazor.Server.Components.Samples.DockViews2.DockViewNest": { + "DockViewNestIntro": "DockViewV2 can be nested inside the DockViewComponent component. Its label can be made invisible by setting ShowHeader=\"false\"", + "DockViewNestTitle": "DockViewV2 - Nested Layouts" + }, + "BootstrapBlazor.Server.Components.Samples.DockViews2.DockViewRow": { + "DockViewRowIntro": "Make the DockViewV2 layout horizontally by setting Type=\"DockContentType.Row\" and initialize its panel width by setting Width=\"240\"", + "DockViewRowTitle": "DockViewV2 - Row" + }, + "BootstrapBlazor.Server.Components.Samples.DockViews2.DockViewTitle": { + "DockViewTitleIntro": "By setting ShowTitleBar to control whether to display the function button before the title, use OnClickTitleBarCallback to set the callback delegate method, and use TitleTemplate to customize complex functions", + "DockViewTitleTitle": "DockViewV2 - Title" + }, + "BootstrapBlazor.Server.Components.Samples.DockViews2.DockViewVisible": { + "DockViewVisibleIntro": "Control whether to display the component by setting Visible, and use OnVisibleStateChangedAsync to set the panel closing callback delegate method", + "DockViewVisibleTitle": "DockViewV2 - Visible" + }, + "BootstrapBlazor.Server.Components.Samples.DockViews2.Index": { + "DockView2Description": "A multi window layout manager for webapps", + "DockView2Intro": "

DockView component is wrapped Golden Layout lib,it is a JavaScript layout manager which enables you to layout components in a web page and re-arrange them with drag and drop. Its features include:

  • Native popup windows
  • Touch support
  • Support for application frameworks such as Angular and Vue
  • Virtual components
  • Comprehensive API
  • Load and save layouts
  • Focus components
  • Completely themeable
  • Works in modern browsers (Firefox, Chrome)
  • Responsive design
", + "DockView2Title": "DockViewV2" + }, + "BootstrapBlazor.Server.Components.Samples.Dom2Images": { + "Dom2ImageButtonText": "Convert", + "Dom2ImageDesc": "Since the underlying framework uses SnapDOM , if you encounter any problems during actual use, please refer to the project Issue", + "Dom2ImageDownloadText": "Download", + "Dom2ImageFullText": "Capture", + "Dom2ImageIntro": "Export HTML snippets as images", + "Dom2ImageNormalIntro": "Convert the node to an image by specifying a Selector", + "Dom2ImageNormalTitle": "Basic usage", + "Dom2ImageTitle": "Dom2Image" + }, + "BootstrapBlazor.Server.Components.Samples.Downloads": { + "DownloadBigFileButtonText": "The button sets the value of IsAsync to true for asynchronous download operation", + "DownloadBigFileIntro": "This simulation generates a text file of 1 million lines, about 58M, which can be tested by yourself", + "DownloadBigFileTitle": "Large file download test", + "DownloadFolderButtonText": "download", + "DownloadFolderIntro": "By setting the physical path of the folder, the files in the directory are packaged and compressed and downloaded", + "DownloadFolderTitle": "Folder download", + "DownloadImageButtonText": "Since the test uses the files under wwwroot, there is no code generation, and wasm cannot access the wwwroot folder, so only the ssr mode is available for the test. wasm please test it yourself.", + "DownloadImageIntro": "Simulate the situation where the verification code is generated directly from the front-end page or the uploaded image is not saved and displayed directly.", + "DownloadImageTitle": "Get the picture and display it", + "DownloadNormalButtonText": "download", + "DownloadNormalIntro": "Download files directly by setting the physical path", + "DownloadNormalTitle": "Normal download", + "DownloadsExample": "Example", + "DownloadsExampleButtonText": "download file", + "DownloadsExampleCodeTitle": "C# code", + "DownloadsExampleContent": "Self-generated and written text, here can be replaced with pictures or other content", + "DownloadsExampleRazorCodeContent": "", + "DownloadsExampleRazorCodeTitle": "Razor code", + "DownloadsExampleTestFile": "test file", + "DownloadsSubTitle": "For direct download of physical files", + "DownloadsTips1": "pay attention", + "DownloadsTips2": "Download use the DotNetStreamReference object which allows streaming file data to the client. This approach loads the entire file into the client's' memory, which can impair performance. To download relatively large files (>=250 MB), it is recommended to follow the MVC download from Url.", + "DownloadsTitle": "Download file download" + }, + "BootstrapBlazor.Server.Components.Samples.DragDrops": { + "AcceptsIntro": "Use Accepts to only allow 10 drags on the left and use AllowsDrag to limit 2 to not be dragged, use MaxItems to limit the right to have a maximum of 6 nodes", + "AcceptsTitle": "Limit what can be dragged in", + "CopyItemIntro": "Use CopyItem to copy a new copy to a new location", + "CopyItemTitle": "Copy to new container", + "Description": "For drag and drop", + "EventIntro": "When the dragging quantity exceeds the limit OnItemDropRejectedByMaxItemLimit, when dragging is prohibited OnItemDropRejected, return to the bottom ItemOnReplacedItemDrop, return the dropped Item OnItemDrop", + "EventTitle": "Various events", + "M1": "Whether to run drag and drop", + "M2": "Whether the node is allowed to be dragged", + "M3": "Copy a new Item to the target location", + "M4": "Add special css class for Item", + "M5": "Event when Item is released", + "M6": "Event when Item release is rejected", + "M7": "Event when Item is released on another Item, not blank space", + "M8": "Event when an Item is rejected because the maximum number in the Dropzone exceeds the limit", + "NormalIntro": "simple drag and drop", + "NormalTitle": "Basic usage", + "Title": "DragDrop" + }, + "BootstrapBlazor.Server.Components.Samples.Drawers": { + "BodyScrollIntro": "By setting BodyScroll, you can control whether scrolling is allowed when the drawer pop-up window is displayed. Body is false by default, scrolling is not allowed", + "BodyScrollTitle": "Body Scroll", + "Close": "close the drawer", + "Content": "The layout, components, etc. in the drawer are fully customizable", + "Description": "Sometimes, the Dialog component does not meet our needs. For example, your form is very long, or you need to temporarily display some documents. Drawer has almost the same API as Dialog, which brings a different experience to the UI.", + "DrawerServiceIntro": "Open the drawer pop-up window by calling the DrawerService service", + "DrawerServiceTitle": "Drawer Service", + "DrawerTips": "Sometimes we want to expand a pop-up window in a certain container. We can do this by embedding a <Drawer/> drawer component in a specific container and then setting the parameter Position=\"absolute\" for relative positioning. Note: The parent container style needs to be set to position: relative;", + "IsKeyboardIntro": "By default, the component uses the ESC key to close the drawer popup. You can enable this function by IsKeyboard=\"true\"", + "IsKeyboardTitle": "ESC", + "NoBackdropIntro": "By setting the ShowBackdrop=\"false\" do not show the backdrop", + "NoBackdropTitle": "No backdrop", + "NormalIntro": "Call out a temporary sidebar that can be called out from multiple directions", + "NormalTitle": "Basic usage", + "Open": "click me to open", + "PlacementContent": "Click on the shaded part of the mask to automatically close the drawer", + "PlacementIntro": "By setting the IsBackdrop property to true, the drawer is automatically closed when the mask part is clicked", + "PlacementTitle": "Click to close the mask", + "Title": "Drawer" + }, + "BootstrapBlazor.Server.Components.Samples.DriverDotnetJs": { + "DriverJsDestroyDesc": "You can use the OnBeforeDestroyAsync callback to add some logic when the user tries to exit the tour. Prevent destruction when the callback method OnBeforeDestroyAsync returns not NULL string. You can also prevent the user from exiting the tour using AllowClose option. This option is useful when you want to force the user to complete the tour before they can exit.", + "DriverJsDestroyIntro": "Callback method before destruction OnBeforeDestroyAsync or callback method for destruction OnDestroyedAsync", + "DriverJsDestroyTitle": "Destroy callback", + "DriverJsHighlightIntro": "By calling the DriverJs component instance method Highlight, the specified element is highlighted and focused.", + "DriverJsHighlightTitle": "Highlight", + "DriverJsNormalDesc": "Disable the animation effect by setting the DriverJsConfig parameter Animate=\"false\"", + "DriverJsNormalIntro": "Simple configuration with a click of a button to start user step-by-step guidance", + "DriverJsNormalTitle": "Basic usage", + "DriverJsPopoverContentText2": "Here is the component introduction. You can switch the icon theme by clicking the radio button below", + "DriverJsPopoverContentText3": "This is the sample area, where specific examples are shown", + "DriverJsPopoverContentText4": "Here is the example area", + "DriverJsPopoverContentText5": "Click here to get started", + "DriverJsPopoverDesc": "For detailed parameter information, please see [Portal]", + "DriverJsPopoverIntro": "By setting the DriverJsPopover component to configure Popover related configuration information", + "DriverJsPopoverStyleIntro": "By setting PopoverClass=\"driverjs-theme\" custome the popover UI", + "DriverJsPopoverStyleTitle": "Custom Popover", + "DriverJsPopoverTitle": "Popover", + "DriverJsPopoverTitleText": "Animated Tour Example", + "DriverJsSubtitle": "built to be highly configurable. You can configure the driver globally, or per step. You can also configure the driver on the fly, while it’s running", + "DriverJsTitle": "drive the user's focus across the page" + }, + "BootstrapBlazor.Server.Components.Samples.Dropdowns": { + "AddItem": "Add", + "AlignmentIntro": "By default, the right side of the drop-down menu is aligned by setting MenuAlignment=Alignment.Right", + "AlignmentTitle": "Menu alignment", + "ButtonTemplateIntro": "You can customize the displayed content by setting ButtonTemlate", + "ButtonTemplateTitle": "Button Template", + "CascadeIntro": "By selecting different options in the first drop-down box, the second drop-down box is filled with content dynamically.", + "CascadeTitle": "Cascade binding", + "City": "City", + "ColorIntro": "Provide warning message boxes in various colors. Quote Color='Color.Primary' and other color and style classes to define the appearance of the drop-down menu", + "ColorTitle": "Drop-down box with color", + "Description": "Collapse actions or menus into drop-down menus", + "DirectionIntro": "Add the style of Direction='Direction.Dropup' to make the drop-down menu expand upward.", + "DirectionTitle": "Expanding direction", + "DropdownCascadeItem1": "Select ...", + "DropdownCascadeItem2": "Melbourne", + "DropdownCascadeItem3": "Sydney", + "DropdownCascadeItem4": "Hangzhou", + "DropdownCascadeItem5": "Chaoyang", + "DropdownCascadeItem6": "Haidian", + "DropdownCascadeItem7": "Jingan", + "DropdownCascadeItem8": "Huangpu", + "DropdownItemsTemplateIntro": "You can customize all the content of the dropdown list by setting ``. In this example, we use the `` component and `` component to customize the dropdown list component.", + "DropdownItemsTemplateTitle": "Items Template", + "DropdownItemTemplateIntro": "By setting ItemTemplate, you can customize the content displayed in the drop-down item. In this example, the Tooltip component is used to add a tooltip function when the mouse is hovered.", + "DropdownItemTemplateTitle": "Item Template", + "EventDesc1": "This event is triggered when the button is clicked", + "EventDesc2": "This event is triggered when the button is clicked and the current component is not refreshed for performance improvement", + "EventOnSelectedItemChanged": "Triggered when the value of the drop-down box changes", + "FixedButtonTextIntro": "Set the FixedButtonText value for fixed button text", + "FixedButtonTextTitle": "Set the fixed button text", + "IsAsyncIntro": "By setting whether the isAsync property button is asynchronous request button by setting whether the is false by default", + "IsAsyncTitle": "Asynchronous request button", + "IsFixedButtonTextIntro": "Set IsFixedButtonText to true make the ButtonText to const", + "IsFixedButtonTextTitle": "Fixed button text", + "Item1": "Melbourne", + "Item2": "Sydney", + "Item3": "Queensland", + "ItemsIntro": "When you click the button on the right, the menu items in the drop-down box will increase", + "ItemsTitle": "Bind data source", + "NormalIntro": "Use TagName='a' to open a drop-down list with a button tag", + "NormalTitle": "Basic usage", + "NullIntro": "Allow empty Items drop-down menus", + "NullTitle": "Dropdown empty drop-down menu", + "RadioIntro": "When you change the options, the menu items in the drop-down box will increase", + "RadioTitle": "Bind data source", + "RemoveItem": "Remove", + "SizeIntro": "The drop-down menu has a variety of size specifications to choose from Size attributes, including preset and split button drop-down menus.", + "SizeTitle": "Size definition", + "SplitIntro": "You can create a split drop-down menu with tags similar to a single button drop-down menu, and add ShowSplit='true' when you use a split component. Insert this symbol as a drop-down The options are handled at appropriate intervals (distance).", + "SplitTitle": "Split button drop-down menu", + "Title": "Dropdown" + }, + "BootstrapBlazor.Server.Components.Samples.DropdownWidgets": { + "AttributeTitle": "DropdownWidgetItem", + "BasicUsageIntro": "Write pendant content directly on the page through ChildContent", + "BasicUsageMessage": "You have 4 unread messages", + "BasicUsageNotify": "You have 10 unread notifications", + "BasicUsageTasks": "You have 3 tasks", + "BasicUsageTitle": "Basic usage", + "BasicUsageViewMessage": "View all messages", + "BasicUsageViewNotify": "View all notifications", + "BasicUsageViewTasks": "View all tasks", + "SubTitle": "More for head information summary presentation", + "Title": "DropdownWidget" + }, + "BootstrapBlazor.Server.Components.Samples.EditDialogs": { + "Description": "Automatic rendering of edit popups by binding the data model", + "EditDialogOption": "EditDialogOption property", + "LeftAlignedButton": "Edit popup (left-aligned)", + "NoRenderIntro": "By setting the Address Count Ignore=true of the IEditorItem instance, the editable pop-up window do not shown.", + "NoRenderTitle": "Setting bound model part property does not show", + "NormalIntro": "Automatically generate editable forms for each field of the model by binding the TModel data model", + "NormalTitle": "Basic usage", + "PopupButton": "Pop-ups", + "RightAlignedButton": "Edit popup (right aligned)", + "SubDescription": "EditDialog The component is an extension of the Dialog component and is suitable for data popup editing.", + "Tip": "Inject the service by calling DialogService of ShowEditDialog The method directly pops up the editing dialog box, which greatly reduces the amount of code. EditDialogOption Configuration class inheritance DialogOption,For more parameter settings, please click [portal]\"", + "Title": "EditDialog edit popup" + }, + "BootstrapBlazor.Server.Components.Samples.EditorForms": { + "AlignmentIntro": "Control the rendering component type by setting the CompnentType property values", + "AlignmentTips1": "inline layout mode aligns the labels in the form right by setting the LabelAlign=\"Alignment.Right\"", + "AlignmentTips2": "In layout mode, adjust the label width by setting the value of LabelWidth. If the global style variable --bb-row-label-width is not set by default, the default value is 120px", + "AlignmentTips3": "Buttons template you can nest div and style text-end align the right side of the button", + "AlignmentTitle": "Custom rendering component types", + "Att10": "Binding column data types", + "Att11": "Whether to allow editing", + "Att12": "Whether to read only", + "Att13": "Edit the column's front label name", + "Att14": "Column editing template", + "Att9": "The current bound data value", + "AutoGenerateDescription": "In this example, by setting the autoGenerate AllItem value to false, turning off auto-generation, and rendering the form editing by manually adding two EditoItem edits", + "AutoGenerateIntro": "By setting the property AutoGenerateAllItem value of false the property is prohibited from being automatically generated, and the display property is controlled by setting the FieldItems internal collection", + "AutoGenerateTitle": "It is not automatically generated by default", + "Description": "Edit forms are automatically rendered through the bound data model", + "EditorFormAttributeTitle": "EditorItem Attribute", + "EditorFormTips1": "The binding model automatically generates all properties by default, and you can change to not automatically build by setting AutoGenerateAllItem", + "EditorFormTips2": "If you don't need to edit the columns, set the Editable, the default is true build editing components", + "EditorFormTips3": "Complex edit columns, set up EditTemplate templates, and edit custom components", + "EditorFormTips4": "The buttons in the form can be set up multiplely, just set the buttons Buttons template", + "GroupBoxTitle": "An example of a form", + "IsDisplayIntro": "Make the entire form non-editable by setting IsDisplay=\"true\"", + "IsDisplayTitle": "Readonly Form", + "ItemsPerRowDescription": "This example sets ItemsPerRow=3 show 3 components per row", + "ItemsPerRowIntro": "Control the layout by setting the property values ItemsPerRow", + "ItemsPerRowTitle": "Set the number of controls displayed per row", + "NormalDescription": "Directly bind the model model, setting the Educationcompletefield not to appear", + "NormalIntro": "By binding TModel data model, editable forms for individual fields of the model are automatically generated", + "NormalTitle": "Basic usage", + "SkipValidateDescription": "In some cases, the value of some columns in the form may be a secondary classification, etc., and you need to know the information for a level 1 classification, at which point the first-level classification requires additional components to render if Select, which is independent of the current context binding model Model, which requires that you set the SkipValidate value to true, turn off model validation for this component", + "SkipValidateIntro": "By setting the property AutoGenerateAllItem value of false the property is prohibited from being automatically generated, and the display property is controlled by setting the FieldItems internal collection", + "SkipValidateTitle": "The components within the form component bind fields that are not model-independent", + "SubButtonText": "Submit", + "SubDescription": "EditorForm component is a very useful component that, when editing data, simply assigns the Model property.", + "TestAddress": "The test address", + "TestName": "Tom", + "Title": "EditorForm", + "ValidateFormIntro": "Data compliance checks are implemented through nested ValidateForm components", + "ValidateFormTips1": "The component is built into the ValidateForm to turn on data compliance checks, and hobbyfields use the EditTemplate template to customize the component to render the data", + "ValidateFormTips2": "Make the birthday field read-only by setting the Readonly property", + "ValidateFormTitle": "Turn on data validation" + }, + "BootstrapBlazor.Server.Components.Samples.Editors": { + "DoMethodAsyncButton1": "Insert Html", + "DoMethodAsyncButton2": "Update to H2", + "DoMethodAsyncButton3": "Insert Image", + "DoMethodAsyncButton4": "Get Code", + "DoMethodAsyncDescription": "In this example, by setting the ToolbarItems property, the default available toolbar buttons are changed", + "DoMethodAsyncIntro": "Call the instance method, please refer summernote api", + "DoMethodAsyncPasteHTML": "Here is the content inserted by the external button", + "DoMethodAsyncTitle": "Instance Method", + "EditorCustomerToolbarButtonsDescription": "In this example, two buttons are added to the toolbar by extending the CustomerPluginItems property. Click the button to pop up the SweetAlert modal box, click the modal box confirmation button and insert the text box A piece of content", + "EditorCustomerToolbarButtonsIntro": "Customize the extension of the edit box toolbar by setting the CustomerPluginItems property, and do the function by setting the OnClickPluginItem callback delegate", + "EditorCustomerToolbarButtonsTitle": "Customize the extended edit box button", + "EditorEmptyPlaceholder": "Customize the prompt message for empty values", + "EditorHeightIntro": "Set the height of the component by setting the Height property", + "EditorHeightTitle": "Custom height", + "EditorIsEditorIntro": "Set the component to be directly displayed as a rich text edit box by setting the IsEditor property. When uploading an image, you can get the image information through the OnFileUpload callback method", + "EditorIsEditorTitle": "Display as a rich text edit box by default", + "EditorNormalDescription": "Set the IsEditor attribute value to control whether the component defaults to div or editor", + "EditorNormalDiv": "I am a normal div click and can’t edit", + "EditorNormalIntro": "The default rendering is div and it becomes a rich text edit box when clicked", + "EditorNormalTitle": "Basic usage", + "EditorOnValueChangedDescription": "Use bind-Value to bind the backend properties of EditorValue in two ways. After editing in the edit box, click the Finish button, and then enter the text box below. Show edited result", + "EditorOnValueChangedInitValue": "Initial value Test", + "EditorOnValueChangedIntro": "In actual combat, two-way binding to Value automatically obtains the editing content of the client's rich text box in the background", + "EditorOnValueChangedLabel": "Show edit content:", + "EditorOnValueChangedTitle": "Two-way binding", + "EditorOnValueChangedUpdateValue": "Changed value", + "EditorPlaceholderDescription": "The default prompt is Edit after clicking", + "EditorPlaceholderIntro": "The prompt message when a null value is set by setting the Placeholder attribute", + "EditorPlaceholderTitle": "Custom prompt message", + "EditorsDescription": "Convert the entered text into html code snippets", + "EditorsTips": "The Editor component is a secondary package of Summernote component, such as If you need to use the localization function, please download the corresponding language pack from the official website and quote it by yourself. zh-CN en-US has been built in the required css JavaScript dynamically loaded on demand. If you edit too much content, signalR communication interruption may be triggered. Please adjust the HubOptions configuration.", + "EditorsTitle": "Editor", + "EditorSubmitDescription": "ShowSubmit The default value is true to display the submit button. The OnValueChanged callback method is triggered after the submit button is clicked on the design. This design greatly improves performance and saves server computing Force, after setting the value to false, it will use the summernode library onChange to trigger, which is applicable to the scene where the edited content needs to be obtained in real time", + "EditorSubmitIntro": "Use ShowSubmit control the Submit button display or not", + "EditorSubmitTitle": "Show submit", + "EditorsUploadDesc": "Upload File Callback", + "EditorsUploadDesc2": "After the component sets a callback, when a file is selected for upload within the component, it will be returned to the caller as an instance of EditorUploadFile. The Stream property allows saving to the server or directly storing to Cloud Object Storage (OSS). The callback return value is the Url used for previewing the stored file.", + "EditorToolbarItemsDescription": "In this example, by setting the ToolbarItems property, the default avaiLabel toolbar buttons are changed", + "EditorToolbarItemsIntro": "Customize the toolbar content by setting the ToolbarItems property. For the currently supported toolbar values, please refer to Summernote Official website", + "EditorToolbarItemsTitle": "Customize the rich text edit box of the toolbar", + "Ret1": "
Data returned from plugin1
", + "Ret2": "Data returned from plugin2", + "Swal1Content": "After clicking the plug-in button, the window will pop up and confirm before proceeding to the next step.", + "Swal1Title": "A pop-up window will pop up after clicking the plugin1 button", + "Swal2Content": "After clicking the plug-in button, the window will pop up and confirm before proceeding to the next step.", + "Swal2Title": "After clicking the plugin2 button, a pop-up window will appear", + "ToolTip1": "This is the tip of plugin1", + "ToolTip2": "This is the tip of plugin2" + }, + "BootstrapBlazor.Server.Components.Samples.EmbedPdfs": { + "PdfDescription": "EmbedPDF is an open-source JavaScript PDF reader based on PDFium, which renders directly in the browser without requiring backend support.", + "PdfReaderNormalIntro": "Set the PDF file address using the Url parameter.", + "PdfReaderNormalText": "Basic usage", + "PdfTitle": "EmbedPDF PDF" + }, + "BootstrapBlazor.Server.Components.Samples.Empties": { + "ImageIntro": "Just set the Image property", + "ImageText": "No data at this time", + "ImageTitle": "Set the path to the empty state picture", + "NormalIntro": "Just add Empty tag", + "NormalTitle": "Basic usage", + "SubTitle": "Sub Title PlaceHolder", + "TemplateIButtonText": "Go back to the previous page", + "TemplateIntro": "The inner set renders custom components Template labels", + "TemplateText": "Customize the empty state template", + "TemplateTitle": "Customize the empty state template", + "Title": "Empty" + }, + "BootstrapBlazor.Server.Components.Samples.ExportPdfButtons": { + "ExportPdfButtonsDescription": "Export HTML fragments or web page elements as Pdf", + "ExportPdfButtonsTitle": "Convert specified webpage content to Pdf", + "ExportPdfButtonTips": "IHtml2Pdf service interfaces, please refer to [Portal]", + "GroupBoxTitle": "Edit form", + "NormalIntro": "Export specified elements by Id", + "NormalTitle": "ElementId", + "SelectorIntro": "Export Pdf by specifying element Selector", + "SelectorTitle": "Selector", + "ToastContent": "Exporting Pdf file", + "ToastDownloadTitle": "Download Pdf", + "ToastTitle": "Export Pdf" + }, + "BootstrapBlazor.Server.Components.Samples.EyeDroppers": { + "EyeDropperDescription": "The EyeDropperService provides a mechanism for creating an eyedropper tool. Using this tool, users can sample colors from their screens, including outside of the browser window.", + "EyeDropperNormalButtonText": "Pick", + "EyeDropperNormalIntro": "Using the EyeDropperService application can start the eyedropper mode. Once started, the cursor changes to indicate to the user that the mode is active. The user can then either select a color from anywhere on the screen, or dismiss the eyedropper mode by pressing Escape", + "EyeDropperNormalTitle": "Basic usage", + "EyeDropperTips1": "This is an experimental technology Check the Browser compatibility table carefully before using this in production. ", + "EyeDropperTips2": "To prevent malicious websites from getting pixel data from a user's screen without them realizing, the EyeDropper API implements the following measures. Only be called in response to a user action (like a button click)", + "EyeDropperTips3": "To help users notice the eyedropper mode more easily, it is made obvious by browsers. The normal mouse cursor disappears after a short delay and a magnifying glass appears instead. There is also a delay between when the eyedropper mode starts and when the user can select a pixel to ensure the user has had time to see the magnifying glass", + "EyeDropperTips4": "Users are also able to cancel the eyedropper mode at any time (by pressing the Escape key)", + "EyeDropperTitle": "EyeDropper Service" + }, + "BootstrapBlazor.Server.Components.Samples.FileIcons": { + "BackgroundTemplateIntro": "Set BackgroundTemplate custom the file icon", + "BackgroundTemplateTitle": "Background Template", + "BaseUsageIntro": "Set the Extension parameter for the file type", + "BaseUsageTitle": "Base Usage", + "ColorIntro": "Set IconColor for the file extension badge background color", + "ColorTitle": "Color", + "CustomCssIntro": "Set class parameter set the style for the file icon component", + "CustomCssTitle": "Custom css", + "Intro": "The icon show the file extension", + "SizeIntro": "Set the icon size by setting Size", + "SizeTitle": "Size", + "Title": "File Icon" + }, + "BootstrapBlazor.Server.Components.Samples.FileViewers": { + "BaseUsageIntro": "Excel/Word file path or URL", + "BaseUsageIntro2": "Using the Reload method", + "BaseUsageText": "Basic usage", + "BaseUsageText2": "Reload file", + "Tips": "Currently only supports Excel(.xlsx) and Word(.docx) formats.
Note:
If throw The type initializer for 'Gdip' threw an exception. error under Linux, please install libgdiplus and enable System. Drawing support.
Enable System.Drawing support for non-Windows platforms in your project file (*.csproj), add:", + "Title": "FileViewer" + }, + "BootstrapBlazor.Server.Components.Samples.FlipClocks": { + "CardGroupMargin": "Card Group Margin", + "CardHeight": "Card Height", + "CardMargin": "Card Margin", + "CardWidth": "Card Width", + "CountIntro": "By setting ViewMode=\"FlipClockViewMode.Count\" to enable the timer function, the start time can be set using StartValue", + "CountText": "Counter", + "Custom": "Parameter Settings", + "CustomIntro": "Customize the display content by setting parameters", + "CustomText": "Custom Text", + "FlipClocksDescription": "Used for website timing or countdown", + "FlipClocksTitle": "FlipClock", + "FontSize": "Font Size", + "Height": "Height", + "IsCountDownIntro": "By setting ViewMode=\"FlipClockViewMode.CountDown\" for the countdown function, the start time can be set using StartValue. Trigger the OnCompletedAsync callback method when the countdown ends", + "IsCountDownText": "CountDown" + }, + "BootstrapBlazor.Server.Components.Samples.FloatingLabels": { + "FloatingLabelBindValueDisplayText": "Client validation", + "FloatingLabelBindValueIntro": "Check data validity and prompt automatically based on custom validation rules", + "FloatingLabelBindValueTitle": "Client validation", + "FloatingLabelDisabledDisplayText": "Disable", + "FloatingLabelDisabledIntro": "When you set the IsDisabled property value to true, the component suppresses input", + "FloatingLabelDisabledTitle": "Disable", + "FloatingLabelDisplayTextIntro": "Displays the value of variables within the component", + "FloatingLabelDisplayTextTitle": "One-way binding data", + "FloatingLabelFormatStringDisplayText": "Generic binding", + "FloatingLabelFormatStringIntro": "BootstrapInput component bidirectional binding value is generic, in this case a two-way binding of an int type value", + "FloatingLabelFormatStringTitle": "Generic binding", + "FloatingLabelFormatterDescription": "The BootstrapInput component binds byte[] array and formats it as an example of base64 encoded string", + "FloatingLabelFormatterDisplayText": "An array of bytes", + "FloatingLabelFormatterDiv2": "Set up", + "FloatingLabelFormatterTitle": "Custom format", + "FloatingLabelGroupBoxTitle": "GroupBox", + "FloatingLabelNormalIntro": "Provides basic text entry components", + "FloatingLabelNormalTitle": "Basic usage", + "FloatingLabelPasswordDescription": "In order to support more text box properties this component can be written directly to type's 'email' type'number' type'phone' and so onhttpl5 all property values supported by the new standard, the component does not set the type value using the default type='text'", + "FloatingLabelPasswordDisplayText": "The password box", + "FloatingLabelPasswordIntro": "By setting the property type value to password the password input box that is blocked by * after entering text", + "FloatingLabelPasswordTitle": "The password box", + "FloatingLabelsSubtitle": "Enter characters with the mouse or keyboard", + "FloatingLabelsTestName": "Tom", + "FloatingLabelsTitle": "FloatingLabel" + }, + "BootstrapBlazor.Server.Components.Samples.Footers": { + "FooterChildContentIntro": "Set ChildContent for custom the child content", + "FooterChildContentTitle": "ChildContent", + "FooterNormalIntro": "Pass the ID of the scroll bar component to the footer component", + "FooterNormalTitle": "Basic usage", + "FootersContent1": "The Footer component is displayed at the bottom, and the page will automatically scroll back to the top when you click to return to the top", + "FootersContent2": "This example passes the component client ID", + "FootersDescription": "Displayed at the bottom of the page, with a back to top button", + "FooterShowGotoIntro": "Set ShowGoto to false for hide the Goto navigator on the right of footer", + "FooterShowGotoTitle": "Show Goto", + "FootersTips": "When using Footer components, pay attention to the setting of the style sheet position attribute", + "FootersTitle": "Footer" + }, + "BootstrapBlazor.Server.Components.Samples.FullScreenButtons": { + "FullScreenButtonIntro": "Use the FullScreenButton component to make the entire web page or a specified element full screen", + "FullScreenButtonNormalIntro": "You can set the default icon of the button through Icon, and set the icon when exiting full screen through the FullScreenExitIcon property", + "FullScreenButtonNormalTitle": "Basic usage", + "FullScreenButtonTitle": "FullScreenButton", + "FullScreenTitleLi1": "Set the fullscreen element ID through the TargetId parameter", + "FullScreenTitleLi2": "Set the current page title text through the Text property" + }, + "BootstrapBlazor.Server.Components.Samples.FullScreens": { + "FullScreenNormalButtonText1": "FullScreen", + "FullScreenNormalIntro": "The entire page is fully screened by calling the Show method that FullScreenService service instance", + "FullScreenNormalTitle": "Basic usage", + "FullScreenOptionDesc": "You can set the full-screen window by setting FullScreenOption, and specify the page element by ElementReference Id Selector", + "FullScreensDescription": "Human-computer interaction by injecting service calls Show method pop-ups", + "FullScreensTitle": "FullScreen" + }, + "BootstrapBlazor.Server.Components.Samples.Gantts": { + "AttrItems": "Data Source", + "AttrMethod": "Change the Gantt chart view", + "AttrOnClick": "The callback that is triggered when you click on a task", + "AttrOnDataChanged": "A callback that is triggered when a task is dragged", + "AttrOnProgressChanged": "A callback that is triggered when a task progress is dragged", + "AttrOption": "Configuration items", + "BasicTitle": "Basic usage", + "ViewModeDesc": "Switch view mode call change_view_mode", + "ViewModeTitle": "Change the view" + }, + "BootstrapBlazor.Server.Components.Samples.Geolocations": { + "Accuracy": "Accuracy", + "Altitude": "Altitude", + "AltitudeAccuracy": "AltitudeAccuracy", + "ClearWatchPositionButtonText": "Stop Watch Position", + "ClearWatchPositionResultFailed": "Stop watch position failed", + "ClearWatchPositionResultSuccess": "Stop watch position success", + "CurrentDistance": "CurrentDistance", + "GeolocationNormalIntro": "Obtain location information through browser API.", + "GeolocationNormalIntro2": "Click the button to get your coordinates.", + "GeolocationNormalIntro3": "Note: For security reasons, when a web page tries to access location information, the user is notified and asked to grant permission. Be aware that each browser has its own policies and methods for requesting this permission.", + "GeolocationNormalText": "Basic usage", + "GeolocationsTitle": "Geolocation", + "GetLocationButtonText": "Get Location", + "Heading": "Heading", + "LastUpdateTime": "UpdateTime", + "Latitude": "Latitude", + "Longitude": "Longitude", + "Speed": "Speed", + "TotalDistance": "TotalDistance", + "WatchPositionButtonText": "Watch Position", + "WatchPositionResultFailed": "Call WatchPosition failed", + "WatchPositionResultSuccess": "Call WatchPosition success" + }, + "BootstrapBlazor.Server.Components.Samples.GlobalException": { + "Block1Intro": "This function is to obtain the component instance through the cascade parameter and use its function", + "Block1Title": "Test", + "Block2Intro": "Set custom exception handling logic by setting OnErrorHandleAsync callback method", + "Block2Title": "OnErrorHandleAsync", + "ButtonText": "test", + "DialogIntro": "Click the button to pop up a pop-up window. The button in the pop-up window triggers an exception and the error is displayed in the pop-up window", + "DialogText": "Popup", + "DialogTitle": "In Dialog", + "ExceptionTestIntroduce": "In this example code, an error code that divides by zero is written. Because try/catch is used to capture the exception, the error message is displayed in the console below", + "H1": "Instructions", + "Introduce": "Added component ErrorLogger Through this component, global logs and exceptions can be output uniformly; currently, the Blazor framework does not provide a MVC like Global exception The overall solution", + "PageErrorIntro": "Click the button to navigate to the page where the error occurred during the page life cycle. The error is displayed on the current page and does not affect the menu and the overall page layout.", + "PageErrorTitle": "Page", + "Step1": "1. Add AddLogging to the Startup file to enable the net core system log function", + "Step1Introduce": "Use AddFileLogger need to reference Longbow.Logging component package", + "Step2": "2. Use BootstrapBlazorRoot to wrap the content", + "Step3": "3. Use cascading parameters in the code to get examples", + "Step4": "4. Console or IIS output visible log information", + "Step5": "5. Controls whether error details are displayed", + "Step5Intro": "Through the configuration file appsettings.json, which is appsettings.Development.json in the development environment, if not set, it defaults to false and is not displayed. The default behavior is only a pop-up prompt to prevent the exposure of sensitive information", + "Title": "Global exception" + }, + "BootstrapBlazor.Server.Components.Samples.GoTops": { + "Description": "Click to return to the top of the specified container", + "Description1": "The Footer component appears at the bottom, and the page automatically scrolls back to the top when you click Back to the Top", + "Description2": "This example passes the component client ID", + "NormalIntro": "Click to return to the top usage", + "NormalTitle": "Basic usage", + "Title": "GoTop" + }, + "BootstrapBlazor.Server.Components.Samples.GroupBoxes": { + "BasicUsageIntro": "Put your own components inside the GroupBox", + "BasicUsageTitle": "Basic usage", + "GroupP1": "I'm an example of GroupBox", + "GroupP2": "For more examples, please refer to the EditorForms Form Example [the portal]", + "GroupTitle": "An example of a form", + "SubTitle": "Simulate WinForm's GroupBox components", + "Title": "GroupBox" + }, + "BootstrapBlazor.Server.Components.Samples.Handwrittens": { + "SubTitle": "Used to save the mobile terminal signature as Base64 encoded string", + "Tips": "Deprecated, please use the BootstrapBlazor.SignaturePad component", + "Title": "Handwritten" + }, + "BootstrapBlazor.Server.Components.Samples.HikVisions": { + "BasicUsageIntro": "Operations are performed by calling the HikVision component instance method.", + "BasicUsageTitle": "Basic usage", + "Title": "HikVision" + }, + "BootstrapBlazor.Server.Components.Samples.Html2Images": { + "Html2ImageButtonText": "Image", + "Html2ImageDesc": "Since the underlying library is html-to-image, if you encounter any problems during actual use, please refer to the project Issue", + "Html2ImageElementIntro": "Get the base64-encoded image by calling the GetDataAsync method", + "Html2ImageElementTitle": "ToPng", + "Html2ImageIntro": "Convert any area web page into an image service", + "Html2ImageTitle": "Html to Image" + }, + "BootstrapBlazor.Server.Components.Samples.Html2Pdfs": { + "ExportButtonText": "Export Pdf", + "ExportPdfButtonIntro": "Export the specified Id element content as Pdf by setting ExportPdfButton component parameter ElementId", + "ExportPdfButtonTitle": "ExportPdfButton", + "Html2PdfDescription": "Export Html fragments or web page elements as Pdf", + "Html2PdfElementDesc": "Call IHtml2Pdf service instance method PdfStreamFromHtmlAsync. export html to Pdf", + "Html2PdfElementIntro": "Export Html element content as Pdf stream", + "Html2PdfElementTitle": "Export DOM", + "Html2PdfIntro1": "1. Retrieve web page elements through the getHTML script HTML code", + "Html2PdfIntro2": "2. Generate web page code using a template using HTML code. Note the style sheet required for the web page needs to be provided _content/BootstrapBlazor/css/bootstrap.blazor.bundle.min.css", + "Html2PdfIntro3": "3. Convert web pages to Pdf using the IHtml2Pdf service instance method PdfStreamFromHtmlAsync", + "Html2PdfIntro4": "4. IHtml2Pdf Implement service usage PuppeterSharp convert web pages to Pdf, download Chromium runtime when running for the first time, which may be slow under poor network conditions", + "Html2PdfNote": "If you export too much content, signalR communication interruption may be triggered. Please adjust the HubOptions configuration.", + "Html2PdfTitle": "Html export to Pdf", + "PackageIntro": "Component default not implemented IHtml2Pdf, please refer to the package BootstrapBlazor.Html2Pdf package", + "Tips1": "Introduce", + "Tips2": "service", + "ToastContent": "Export table by id to pdf success.", + "ToastTitle": "Export Pdf" + }, + "BootstrapBlazor.Server.Components.Samples.HtmlRenderers": { + "BaseUsageText": "Normal", + "IntroText": "Some application scenarios require us to obtain the Html code fragment finally output by Component, and call the RenderAsync instance method of IComponentHtmlRenderer service", + "SubTitle": "Render components into Html strings", + "Title": "Html Renderer" + }, + "BootstrapBlazor.Server.Components.Samples.Icons.AntDesign.AntDesignIcons": { + "AntDesignIconDescription": "Semantic vector graphics.", + "AntDesignIconTitle": "AntDesign Svg Icon Lib", + "CopiedTooltipText": "Copied", + "Icons": "For icon list, please visit [portal]", + "P1": "1. After referencing the extension package, add the package built-in style file to open the icon", + "P2": "2. Enable css isolation and automatically reference component styles after compilation", + "P3": "Please copy the following code segement" + }, + "BootstrapBlazor.Server.Components.Samples.Icons.BootstrapIcons": { + "BaseUsageText": "Free, high quality, open source icon library", + "Icons": "For icon list, please visit [portal]", + "P1": "Extending the Component Package by Reference", + "P2": "After adding the stylesheet file link open icon", + "Title": "Bootstrap Icons" + }, + "BootstrapBlazor.Server.Components.Samples.Icons.ElementIcon.ElementIcons": { + "CopiedTooltipText": "Copied", + "ElementIconDescription": "Free, high quality, open source icon library", + "ElementIconTitle": "Element-plus Icons", + "Icons": "For icon list, please visit [portal]", + "P1": "1. After referencing the extension package, add the package built-in style file to open the icon", + "P2": "2. Enable css isolation and automatically reference component styles after compilation", + "P3": "Please copy the following code segement" + }, + "BootstrapBlazor.Server.Components.Samples.Icons.FAIcons": { + "BaseUsageText": "BootstrapBlazor uses Font Awesome latest version as the built-in icon library. All icons are as follows", + "CopiedTooltipText": "Copied", + "Icons": "For icon list, please visit [portal]", + "P1": "Extending the Component Package by Reference", + "P2": "After adding the stylesheet file link open icon", + "SwitchButtonTextOff": "Click to copy", + "SwitchButtonTextOn": "Show Copy Dialog", + "Title": "Font Awesome Icons" + }, + "BootstrapBlazor.Server.Components.Samples.Icons.FluentSystemIcons": { + "BaseUsageText": "Microsoft Free Open Source Icon Library", + "Icons": "For icon list, please visit [portal]", + "P1": "Extending the Component Package by Reference", + "P2": "After adding the stylesheet file link open icon", + "Title": "Fluent System Icons" + }, + "BootstrapBlazor.Server.Components.Samples.Icons.IconPark.IconParks": { + "CopiedTooltipText": "Copied", + "IconParkDescription": "It has covered all platforms of ByteDance commercial product series and has been introduced and used by 12 platforms as the underlying code, ensuring the uniformity of icon style and cognition.", + "IconParkTitle": "ByteDance Svg Icon Lib", + "Icons": "For icon list, please visit [portal]", + "P1": "1. After referencing the extension package, add the package built-in style file to open the icon", + "P2": "2. Enable css isolation and automatically reference component styles after compilation", + "P3": "Please copy the following code segement" + }, + "BootstrapBlazor.Server.Components.Samples.Icons.MaterialDesignIcons": { + "BaseUsageText": "Material Design system icons are simple, modern and user-friendly", + "Icons": "For icon list, please visit [portal]", + "P1": "Extending the Component Package by Reference", + "P2": "After adding the stylesheet file link open icon", + "Title": "MaterialDesign Icons" + }, + "BootstrapBlazor.Server.Components.Samples.Icons.OctIcon.OctIcons": { + "CopiedTooltipText": "Copied", + "Icons": "For icon list, please visit [portal]", + "OctIconDescription": "A scalable set of icons handcrafted with <3 by GitHub", + "OctIconTitle": "Oct Svg Icon Lib", + "P1": "1. After referencing the extension package, add the package built-in style file to open the icon", + "P2": "2. Enable css isolation and automatically reference component styles after compilation", + "P3": "Please copy the following code segement" + }, + "BootstrapBlazor.Server.Components.Samples.Icons.UniverIcon.UniverIcons": { + "CopiedTooltipText": "Copied", + "Icons": "For icon list, please visit [portal]", + "P1": "1. After referencing the extension package, add the package built-in style file to open the icon", + "P2": "2. Enable css isolation and automatically reference component styles after compilation", + "P3": "Please copy the following code segement", + "UniverIconDescription": "Icons used by Univer", + "UniverIconTitle": "Univer Svg Icon Lib" + }, + "BootstrapBlazor.Server.Components.Samples.IFrames": { + "IFrameDescription": "Allows embedding documents, videos and interactive media in a page. By doing so, a secondary page can be displayed on the main page. The iFrame element allows including content from other sources, it can integrate content anywhere on the page.", + "IFrameNormalIntro": "Use the Src parameter to set the URL of other website pages and inline their content into this page", + "IFrameNormalTitle": "Basic usage", + "IFrameTitle": "IFrame" + }, + "BootstrapBlazor.Server.Components.Samples.ImageCroppers": { + "ImageCropperClearText": "Clear", + "ImageCropperDisabledText": "Disabled", + "ImageCropperEnableText": "Enable", + "ImageCropperNormalIntro": "The URL of the image can be set by setting the Url parameter. The cropping ratio can be set by setting ImageCropperOption.AspectRatio=16/9f. 1 is a square.", + "ImageCropperNormalText": "Basic usage", + "ImageCropperReplaceText": "Replace", + "ImageCropperResetText": "Reset", + "ImageCropperRotateText": "Rotate", + "ImageCropperRoundIntro": "Set the cropping mode to circular by setting the IsRound parameter", + "ImageCropperRoundText": "Round", + "Title": "Image cropper" + }, + "BootstrapBlazor.Server.Components.Samples.ImageViewers": { + "ImagePreviewerButton": "Show Previewer", + "ImagePreviewerIntro": "Pop up the Previewer directly in conjunction with other components like Button", + "ImagePreviewerTitle": "Use ImagePreviewer Standalone", + "ImageViewerDescription": "In container, and retain the native characteristics of the img, to support lazy loading, custom placeholder, load, failure, etc", + "ImageViewerErrorTemplateCustom": "The custom", + "ImageViewerErrorTemplateIntro": "Can be set up by the Error Template open Error Template function, Url parameter Url unable to load images displayed when the content of the Template", + "ImageViewerErrorTemplateLoadFailed": "Load failed", + "ImageViewerErrorTemplateTitle": "Load failed", + "ImageViewerErrorTemplateUrlError": "Url The path error", + "ImageViewerNormalIntro": "Load and display the image files", + "ImageViewerNormalTips1": "object-fit: fill Fill the default drawing picture to fill the whole container, does not guarantee that keep the original proportion", + "ImageViewerNormalTips2": "object-fit: contain Contains keep original size scaling to ensure the whole image can be appeared in the container, so this parameter may be left blank in the container", + "ImageViewerNormalTips3": "object-fit: cover Cover to keep the original size scaling, width and height of at least one consistent and containers (size small) so this parameter may let image section area is not visible", + "ImageViewerNormalTips4": "object-fit: none No keep original size proportion, while maintaining the original size, hidden extra parts", + "ImageViewerNormalTips5": "object-fit: scale-down To reduce as if, in turn, set the none or contain the is the relatively small size of the ultimate", + "ImageViewerNormalTitle": "Basic usage", + "ImageViewerPlaceHolderCustom": "Custom", + "ImageViewerPlaceHolderDefault": "Default", + "ImageViewerPlaceHolderIntro": "Can be set up by the Show Place Holder open placeholder function, by setting the Place Holder Template define placeholder content", + "ImageViewerPlaceHolderLoading": "Loading ...", + "ImageViewerPlaceHolderTemplateIntro": "Can be set up by the Place Holder Template open placeholder Template function, not set Url or being loaded displayed when the content of the Template", + "ImageViewerPlaceHolderTemplateLoadingShow": "When loading show", + "ImageViewerPlaceHolderTemplatePlaceholder": "The placeholder template", + "ImageViewerPlaceHolderTemplateTips1": "Pictures after loading the default browser caches, suggest F12 turn off caching experience this functionality", + "ImageViewerPlaceHolderTemplateTitle": "The placeholder template", + "ImageViewerPlaceHolderTemplateUrl": "Is not set Url", + "ImageViewerPlaceHolderTips1": "Pictures after loading the default browser caches, suggest F12 turn off caching experience this functionality", + "ImageViewerPlaceHolderTitle": "The placeholder content", + "ImageViewerPreviewListIntro": "Can be set up by the Preview List opens a larger Preview of the function, set ZoomSpeed to control the speed of scrolling and scaling", + "ImageViewerPreviewListTitle": "A larger preview", + "ImageViewerTitle": "Image Viewer pictures", + "IntersectionObserverIntro": "By setting IsIntersectionObserver=\"true\" to enable lazy loading, the image will not be loaded when it is in the invisible area, and will be loaded only when it is about to be visible.", + "IntersectionObserverTitle": "Intersection Observer" + }, + "BootstrapBlazor.Server.Components.Samples.InputGroups": { + "InputGroupsCheckboxIntro": "Add Checkbox or CheckboxList to the InputGroup", + "InputGroupsCheckboxTitle": "Checkbox", + "InputGroupsDateTimePickerIntro": "Add DateTimePicker or DateTimeRange to the InputGroup", + "InputGroupsDateTimePickerTitle": "DateTimePicker/Range", + "InputGroupsDescription": "Input can add labels and buttons before or after it to make as a group", + "InputGroupsDropdownIntro": "Add Dropdown to the InputGroup", + "InputGroupsDropdownTitle": "Dropdown", + "InputGroupsMultipleDistance": "Distance", + "InputGroupsMultipleIntro": "The InputGroup can have lots of children", + "InputGroupsMultipleTitle": "Add multiple components", + "InputGroupsNormalIntro": "Add a label before the Input, or Add a Button after the Input", + "InputGroupsNormalTitle": "Basic usage", + "InputGroupsNormalUserName": "UserName", + "InputGroupsRadioIntro": "Add RadioList to the InputGroup", + "InputGroupsRadioTitle": "Radio", + "InputGroupsSelectIntro": "Add Select component to the InputGroup", + "InputGroupsSelectTitle": "Add Select", + "InputGroupsSlideButtonIntro": "Add SlideButton to the InputGroup", + "InputGroupsSlideButtonTitle": "SlideButton", + "InputGroupsStatusText1": "CheckboxItem", + "InputGroupsSwitchIntro": "Add Switch to the InputGroup", + "InputGroupsSwitchTitle": "Switch", + "InputGroupsTitle": "InputGroup", + "InputGroupsValidateFormIntro": "Inside ValidateForm", + "InputGroupsValidateFormTitle": "ValidateForm", + "InputGroupsWidthIntro": "Customize label width by setting Widthparameters", + "InputGroupsWidthTitle": "Custom Width" + }, + "BootstrapBlazor.Server.Components.Samples.InputNumbers": { + "InputNumbersColorDescription1": "Show button", + "InputNumbersColorDescription2": "No button", + "InputNumbersColorIntro": "Set the Color parameter to customize the button color", + "InputNumbersColorTitle": "Color", + "InputNumbersDateTypeIntro": "This component uses generic support the underlying data type int short long float double decimal", + "InputNumbersDateTypeTitle": "Data type", + "InputNumbersDescription": "Only standard numeric values are allowed, and custom ranges and other advanced features are supported", + "InputNumbersDisabledIntro": "When you set the IsDisabled property value to true, the component suppresses input", + "InputNumbersDisabledTitle": "Disable", + "InputNumbersNormalIntro": "The Numer numeric type displays a text box, and the mobile side automatically pops up the numeric keypad", + "InputNumbersNormalTitle": "Basic usage", + "InputNumbersNullableIntro": "When binding to a data type that can be empty, the component allows empty strings. When inputting illegal data such as 1+2+3e, the component UI value is an empty string", + "InputNumbersNullableTitle": "Nullable data type", + "InputNumbersRangeIntro": "Set the Max Min to control the range of value intervals 1-10", + "InputNumbersRangeTitle": "Interval limit usage", + "InputNumbersShowButtonDescription": "This example sets a maximum of 10 minimum value of 0", + "InputNumbersShowButtonIntro": "Set the ShowButton parameter to control whether the buttons are displayed to increase or decrease", + "InputNumbersShowButtonTitle": "Control button", + "InputNumbersStep0.1": "The step defaults to 0.1", + "InputNumbersStep1": "The step defaults to 1", + "InputNumbersStep10": "The step defaults to 10", + "InputNumbersStepIntro": "Set the Step parameter to control the increase or decrease in steps", + "InputNumbersStepTitle": "Custom steps", + "InputNumbersTitle": "InputNumber", + "InputNumbersUseInputEventIntro": "Component uses OnInput event for value updates", + "InputNumbersUseInputEventTitle": "OnInput", + "InputNumbersValidateFormDescription": "The pre-label explicit rules are consistent with the BootstrapInput component of the > of the [The portal]", + "InputNumbersValidateFormDivider1": "Bidirectional binding displays labels", + "InputNumbersValidateFormDivider2": "Bidirectional bindings do not display labels", + "InputNumbersValidateFormDivider3": "Custom DisplayText", + "InputNumbersValidateFormInputText": "Customization", + "InputNumbersValidateFormIntro": "When a component binds in both directions, it automatically determines whether label text is displayed based on the conditions", + "InputNumbersValidateFormTitle": "The label is displayed" + }, + "BootstrapBlazor.Server.Components.Samples.Inputs": { + "ClearableIntro": "By setting the Clearable=\"true\" parameter, a small Clear button will be displayed when the component gains focus or when the mouse hovers over it.", + "ClearableTitle": "Clearable", + "InputLabelsText": "Custom labels", + "InputsBaseUsage": "Basic usage", + "InputsColorIntro": "Change the color of the text border by setting Color", + "InputsColorTitle": "Color", + "InputsDescription": "Enter characters with the mouse or keyboard", + "InputsDisabledIntro": "When you set the IsDisabled property value to true, the component suppresses input", + "InputsDisabledTitle": "Disable", + "InputsFormatStringIntro": "When you set the FormatString property value to yyyy-MM-dd, the component displays a time format of the year and day", + "InputsFormatStringSetting": "Set up", + "InputsFormatStringTips": "The BootstrapInput component binds byte[] array and formats it as an example of base64 encoded string", + "InputsFormatStringTitle": "Custom format", + "InputsGenericBindValue": "The binding value", + "InputsGenericIntro": "BootstrapInput component bidirectional binding value is generic, in this case a two-way binding of an int type value", + "InputsGenericTitle": "Generic binding", + "InputsKeyboardIntro": "Using OnEnterAsync OnEscAsync callback delegates to respond to the Enter ESC keystrokes", + "InputsKeyboardLog": "The key triggers the current text box value", + "InputsKeyboardTips1": "Press the keyboard Enter or Esc test", + "InputsKeyboardTips2": "Execute @ref.SelectAllTextAsync() method select the all text", + "InputsKeyboardTitle": "Keyboard response", + "InputsLabelsDescription": "when BootstrapInput components turn on bidirectional binding, the Display/DisplayName label value is automatically fetched based on the bound Model property value and appears as a pre-Label, by DisplayText Properties can customize the display of pre-labels, or turn off the display of pre-labels through the ShowLabel property", + "InputsLabelsDivider1": "Custom labels", + "InputsLabelsDivider2": "Occupants", + "InputsLabelsDivider3": "Do not occupy seats", + "InputsLabelsIntro": "Binding variables within a component, data is automatically synchronized", + "InputsLabelsTips1": "Set the DisplayText value to custom label", + "InputsLabelsTips3": "The value of DisplayText is not displayed when the ShowLabel is false", + "InputsLabelsTitle": "Bind data in both directions", + "InputsLabelsTps2": "The value of DisplayText is displayed when ShowLabel is true, regardless of whether the value is set", + "InputsNormalDescription": "You can set the IsAutoFocus whether to automatically get focus, and the components that are last executed when multiple text boxes set auto-focus will get focus", + "InputsNormalIntro": "Provides basic text entry components", + "InputsOnInputIntro": "Use UseInputEvent=\"true\" to trigger when the value of the text box changes, used for key-by-key response occasions", + "InputsOnInputTitle": "Fires when the value of the text box changes", + "InputsPassword2Intro": "Use the BootstrapPassword component", + "InputsPassword2Title": "The password box", + "InputsPasswordDescription": "In order to support more text box properties this component can be written directly to type='email' type='number' type='phone' and so onhtml5 all property values supported by the new standard, the component does not set the type value using the default type='text'", + "InputsPasswordIntro": "By setting the property type value to password the password input box that is blocked by * after entering text", + "InputsPasswordTitle": "The password box", + "InputsPlaceholderIntro": "Displays the value of variables within the component", + "InputsPlaceholderSpan": "One-way binding", + "InputsPlaceholderTitle": "One-way binding data", + "InputsTitle": "Input", + "InputsTrimIntro": "Use IsTrim=\"true\" to automatically trim white space when entering content", + "InputsTrimTitle": "Trim", + "InputsValidateFormIntro": "Check data validity and prompt automatically based on custom validation rules", + "InputsValidateFormTips1": "When using bidirectional binding, you will automatically look for the key value the resource file with a value of {FieldName}.PlaceHolder the corresponding value as placeholder shows that in this example, the placeholder value is the Name.PlaceHolder key corresponding value in the resource filerequired non-empty ", + "InputsValidateFormTitle": "Client valiation", + "IsSelectAllTextOnEnterLabel": "Select all on enter", + "IsSelectAllTextOnFocusLabel": "Select all on focus", + "NormalPlaceHolder": "Please enter ...", + "OnInputDescription": "The ValueChanged callback will be trigger when the keyboard is pressed if set the parameter UseInputEvent to true", + "PlaceHolder": "Please enter ...", + "TestName": "Tom", + "TrimDescription": "The front and back spaces in the component will be trimmed when set IsTrim to true" + }, + "BootstrapBlazor.Server.Components.Samples.IntersectionObservers": { + "IntersectionObserverBaseUsage": "Basic usage", + "IntersectionObserverDescription": "Scrolling makes the element visible to trigger component callbacks, mostly used for data lazy loading functions", + "IntersectionObserverLoadDesc1": "By setting Threshold=\"1.0\" to constrain the loading indicator to be fully visible, perform the load more action", + "IntersectionObserverLoadDesc2": "Ensure that the loading indicator visibility is always checked by setting AutoUnobserve=\"false\" to prevent automatic removal of the check once it becomes visible", + "IntersectionObserverLoadDesc3": "Simulate network delay of 1s by setting the OnLoadMoreAsync method", + "IntersectionObserverLoadIntro": "After scrolling to the bottom, a loading more indicator appears, notifying the background to load data", + "IntersectionObserverLoadTitle": "Load", + "IntersectionObserverNormalDescription": "This example loads 100 pictures. The invisible pictures load the default pictures (cached). When you scroll to the visible area, you load the real pictures.", + "IntersectionObserverNormalIntro": "Monitor element visibility changes by setting RootSelector RootMargin Threshold parameter values", + "IntersectionObserverThresholdDesc": "Drag the scroll bar of the div below to observe data changes", + "IntersectionObserverThresholdIntro": "After setting Threshold, the intersection ratio between the observed element and the root element is obtained through the callback parameter IntersectionObserveEntry attribute IntersectionRatio", + "IntersectionObserverThresholdTitle": "IntersectionRatio", + "IntersectionObserverTitle": "IntersectionObserver", + "IntersectionObserverVisibleDesc": "In this example, Threshold=\"1\" is set, which means that the trigger condition is to play when the video is fully visible, otherwise it will automatically pause", + "IntersectionObserverVisibleIntro": "By setting Threshold specifying a ratio of intersection area to total bounding box area for the observed target", + "IntersectionObserverVisiblePauseLabel": "Video Paused", + "IntersectionObserverVisiblePlayLabel": "Video Playing", + "IntersectionObserverVisibleTitle": "Threshold", + "LoadMoreDesc": "

In this example, the loading indicator is displayed by setting CanLoading to true, and the No More Data prompt text is displayed when loading is complete.

  • Customize the UI for loading more through LoadingTemplate
  • Customize the UI displayed when there is no more data through NoMoreTemplate
  • Set the indicator text displayed when there are no more add-ons through the NoMoreText parameter
  • ", + "LoadMoreIntro": "By setting the LoadMore component parameter IsLoading to control the loading state, the OnLoadMoreAsync callback method loads more data", + "LoadMoreTitle": "LoadMore Component" + }, + "BootstrapBlazor.Server.Components.Samples.Ips": { + "IpNormalIntro": "Enter and display the ip address in sections, for example: 192.168.1.1", + "IpNormalTitle": "Basic usage", + "IpSubTitle": "The IP Address component is a reusable component for entering and validating IP addresses.", + "IpTitle": "IpAddress", + "IsDisabledIntro": "Make the component disabled by setting IsDisabled", + "IsDisabledTitle": "IsDisabled" + }, + "BootstrapBlazor.Server.Components.Samples.JSRuntimeExtensions": { + "EvalAttr": "Call Eval method", + "EvalIntro": "Dynamically run Java Script code within the current scope using the Eval function.", + "EvalTitle": "JS Eval", + "FunctionAttr": "Call Function method", + "FunctionIntro": "Dynamically run Java Script code within the global scope through the Function function.", + "FunctionTitle": "JS Function", + "IsMobileAttr": "Determine whether the current device is a mobile device", + "IsMobileIntro": "Determine userAgent through regular expressions, indicating whether the current device is a mobile device", + "IsMobileTitle": "GetIsMobileDevice", + "JSTips": "Before use, import the module according to the following code", + "OpenUrlAttr": "Open a url in a specific window", + "OpenUrlIntro": "Open url in a Window", + "OpenUrlTips": "Default to:", + "OpenUrlTitle": "OpenUrl" + }, + "BootstrapBlazor.Server.Components.Samples.Labels": { + "EditorFormLabelAlignCenter": "Alignment
    LabelAlign=\"Alignment.Center\" set the label alignment is center
    ", + "EditorFormLabelAlignRight": "Alignment
    LabelAlign=\"Alignment.Right\" set the label alignment is right
    ", + "LabelsDescription": "This set of components includes ValidateForm EditorForm and a variety of Form components inherited from ValidateBase<TValue>. Among these components There is a special set of display front label logic, now let’s sort it out in a unified way:", + "LabelsDescriptionTips1": "The ValidateForm component is a verifiable form component. The form component in this component will automatically perform data compliance checks. If Data non-compliance will prevent the Submit action, which is the most frequently used component in data submission", + "LabelsDescriptionTips2": "The EditorForm component is an ordinary form component. After this component is bound to the Model, the entire form can be automatically generated, which greatly reduces repetition Code, put the ValidateForm on the outside to open the data compliance check very convenient, concise and efficient", + "LabelsDescriptionTips3": "Take the BootstrapInput input box component as an example to explain whether to display the Label logic", + "LabelsEditorFormDescription1": "Do not display labels
    Set ShowLabel=\"false\", all form components in the component Do not display tags
    ", + "LabelsEditorFormDescription2": "Show label
    The ShowLabel property of the EditorForm component is not set. If it is not set, it is equivalent to set to true. All components display tags
    ", + "LabelsEditorFormIntro": "Not used in ValidateForm", + "LabelsEditorFormTitle": "Used in EditorForm", + "LabelsNormalDescription": "When two-way binding is not used", + "LabelsNormalDescription2": "When using two-way binding", + "LabelsNormalGroupBox1Tips1": "No settings in the first text box, no label", + "LabelsNormalGroupBox1Tips2": "The second text box setting ShowLabel='true' DisplayText=`` displays a placeholder label without content", + "LabelsNormalGroupBox1Tips3": "The third text box setting ShowLabel='true' DisplayText='Name' shows the set content label", + "LabelsNormalGroupBox1Tips4": "The fourth text box setting ShowLabel='true' DisplayText='@null' displays a placeholder label without content", + "LabelsNormalGroupBox1Title": "No two-way binding", + "LabelsNormalGroupBox2Tips1": "The first text box is set to @bind-Value='Dummy.Name', no label is displayed", + "LabelsNormalGroupBox2Tips2": "The second text box setting @bind-Value='Dummy.Name' ShowLabel='true' DisplayText='@Localizer[nameof(Foo.Address)]' Display the contents of the setting", + "LabelsNormalGroupBox2Tips3": "The third text box setting @bind-Value='Dummy.Name' ShowLabel='true' DisplayText=`` Show no content placeholder label", + "LabelsNormalGroupBox2Tips4": "The fourth text box setting @bind-Value='Dummy.Name' ShowLabel='true' DisplayText='@null' Display the label content under the resource file mechanismLabel code>", + "LabelsNormalGroupBox2Title": "Two-way binding", + "LabelsNormalIntro": "Suitable for data entry", + "LabelsNormalTips1": "Label will not be displayed by default", + "LabelsNormalTips2": "Control whether to display through the ShowLabel property", + "LabelsNormalTips3": "Display content when setting DisplayText", + "LabelsNormalTips4": "When not set, render a contentless label component as a placeholder", + "LabelsNormalTitle": "Use alone", + "LabelsRowLabelWidthIntro": "Control label width by setting style variable --bb-row-label-width", + "LabelsRowLabelWidthTitle": "Style setting label width", + "LabelsTips": "The logic of ShowLabel is the principle of proximity. The closer the setting is to itself, the setting takes effect. For example, the form component is built into the ValidateForm component, even if ValidateForm is set to >ShowLabel=true, when the form component itself sets ShowLabel=false, the final result of the label is not displayed", + "LabelsTitle": "Component label", + "LabelsValidateForm1Description1": "Show label
    The ShowLabel property of the EditorForm component is not set. If it is not set, it is equivalent to set to true. All components display tags
    ", + "LabelsValidateForm1Description2": "Do not display labels
    Set ShowLabel=\"false\", all form components in the component Do not display tags
    ", + "LabelsValidateForm1Intro": "Used in external ValidateForm", + "LabelsValidateForm1Title": "Use in EditorForm built-in ValidateForm", + "LabelsValidateForm2Description1": "Show label
    The ShowLabel property of the EditorForm component is not set. If it is not set, it is equivalent to set to true. All components display tags
    ", + "LabelsValidateForm2Description2": "Do not display labels
    Set ShowLabel=\"false\", all form components in the component Do not display tags
    ", + "LabelsValidateForm2Description3": "Show labels
    set class form-inline for the all labels within the component are prefixed
    ", + "LabelsValidateForm2Intro": "Show labels are automatically turned on by default", + "LabelsValidateForm2Title": "Used in ValidateForm", + "LabelsWidthCode1": "As shown in the code above, the final value is 180 according to the principle of proximity", + "LabelsWidthDescription": "The components ValidateForm EditorForm BootstrapLabelSetting ValidateForm can set the label width value. The components use the proximity principle to determine the final value", + "LabelsWidthIntro": "Control the label width by setting the variable LabelWidth", + "LabelsWidthTitle": "Parameter setting label width", + "ValidateFormAlignCenter": "Center
    form-inline-center set the label alignment is center
    ", + "ValidateFormAlignRight": "Right
    form-inline-end set the label alignment is right
    " + }, + "BootstrapBlazor.Server.Components.Samples.LayoutPages": { + "H1": "full page level components", + "P1": "via built-in components", + "P10": "multi-label", + "P11": "mode, if there is", + "P12": "Razor Components", + "P13": "When in an extra assembly, set it correctly", + "P14": "Attribute values ​​so that routes within the label component are resolved correctly, related documentation", + "P15": "portal", + "P16": "Layout adjustment", + "P17": "show footer", + "P18": "multi-label", + "P19": "single page", + "P2": "For full page layout, you can use", + "P20": "Fixed adjustment", + "P21": "fixed label", + "P22": "fixed header", + "P23": "fixed footer", + "P24": "Shrink adjustment", + "P25": "Please click", + "P26": "small button", + "P27": "height adjustment", + "P28": "view height", + "P29": "Tab Test", + "P3": "or install", + "P30": "click", + "P31": "test", + "P32": "test", + "P33": "button will add a new tab", + "P34": "Navigate to a new tab page as code", + "P35": "navigation", + "P4": "Project plugin selection", + "P5": "Bootstrap Blazor Project Template", + "P6": "It can be automatically generated. For detailed documents, please click", + "P7": "portal", + "P8": "pay attention", + "P9": "component on" + }, + "BootstrapBlazor.Server.Components.Samples.Layouts": { + "LayoutsAppIntro": "In application", + "LayoutsAppTips1": "In actual use, the sidebar generally has two uses", + "LayoutsAppTips2": "The sidebar fills the entire screen, and scroll bars appear when the overall height of the menu exceeds the screen", + "LayoutsAppTips3": "The sidebar is not processed and the height is automatically opened by the content", + "LayoutsAppTips4": "Because there are many ways to use it, this component is not packaged, and it is up to you to decide how to carry out the layout. The following is a practical example in actual use", + "LayoutsAppTips5": "In order to facilitate your study and comparison, try to use the style inline style in the following practical examples", + "LayoutsAppTips6": "In this example, a scroll bar appears after clicking the menu on the left to expand", + "LayoutsAppTips7": "The available area in the right panel is all by default, which is suitable for layouts with Tab components. In this example, for the sake of beauty, the Main template has a built-in div And set the style to style='padding: 1rem;'", + "LayoutsAppTips8": "In this example, if the scroll bar does not appear after clicking the left menu to expand, the height of the parent container will be expanded", + "LayoutsAppTips9": "Please refer to Tab component for practical examples of using Layout component and Tab component together", + "LayoutsAppTitle": "Practical application", + "LayoutsCustomPercentIntro": "The width of the sidebar is controlled by setting the SideWidth property, which supports percentage writing. When setting 0, the width setting function is turned off, and the internal sub-controls are used to fill the width feature", + "LayoutsCustomPercentTitle": "Customize sidebar width support percentage", + "LayoutsDemosTitle": "Common page layout", + "LayoutsDescription1": "The container component used for layout, which is convenient to quickly build the basic structure of the page:", + "LayoutsDescription1_Container": "Outer container. When the child element contains Header or Footer, all child elements will be arranged vertically up and down, otherwise they will be arranged horizontally.", + "LayoutsDescription1_Footer": "Bottom bar container", + "LayoutsDescription1_Header": "Top bar container", + "LayoutsDescription1_Main": "Main area container", + "LayoutsDescription1_Side": "Sidebar container", + "LayoutsDescription2": "Component overview", + "LayoutsDescription2_Footer": "Bottom layout, with default style, any element can be nested under it", + "LayoutsDescription2_Header": "Top layout, with default style, any elements can be nested under it", + "LayoutsDescription2_Layout": "Layout container, Header Sider Main Footer or Layout itself can be nested under it , Can be placed in any parent container", + "LayoutsDescription2_Main": "The content part, with its own default style, any element can be nested under it", + "LayoutsDescription2_Side": "Sidebar, with default style and basic functions, any elements can be nested under it", + "LayoutsLeftRightIntro": "The right side adopts an upper, middle and lower structure, which is mostly used for back-end management of the website layout, and the layout is controlled to the left and right structure by setting the IsFullSide attribute value", + "LayoutsLeftRightTitle": "Left and right structure", + "LayoutsMiddleLeftRightIntro": "The middle part adopts the left and right structure, which is mostly used for back-end management website layout. When the Side component is added to the layout template, the upper middle and lower parts are used by default, and the middle part adopts the left and right structure layout.", + "LayoutsMiddleLeftRightTitle": "Left and right structural layout in the middle", + "LayoutsPageHrefTitle": "Whole page component generator", + "LayoutsPageIntro": "By setting the IsPage layout the full page", + "LayoutsPageTips1": "By setting the IsPage property to set whether the Layout component controls the layout of the front page level, after setting it to true, the component adopts the full-screen layout", + "LayoutsPageTitle": "Full page level components", + "LayoutsTips1": "The above components adopt flex layout, please make sure the target browser is compatible before using. In addition, the child element of Layout can only be the latter four, and the parent element of the latter four can only be Layout", + "LayoutsTips2": "Matters needing attention", + "LayoutsTips3": "In order to make it easy for everyone to use this set of components to quickly build projects, the author has created Project Templates
    , using the dotnet new command line, and Bootstrap Blazor App Extension extension plug-in Create a new project through Visual Studio. For specific usage and steps, please click Portal", + "LayoutsTitle": "Layout", + "LayoutsUpAndDownIntro": "Commonly found in Internet website layout", + "LayoutsUpAndDownTitle": "Top, middle and bottom layout" + }, + "BootstrapBlazor.Server.Components.Samples.Lights": { + "LightsColorIntro": "Color the light by setting the value of the parameter Color", + "LightsColorTitle": "discoloration", + "LightsDescription": "Provides various status indicators", + "LightsFlashingIntro": "Flash the light by setting the parameter IsFlash", + "LightsFlashingTitle": "flicker", + "LightsFlatIntro": "Make the indicator light flat by setting the parameter IsFlat", + "LightsFlatTitle": "Flat", + "LightsNormalIntro": "for status indication", + "LightsNormalTitle": "common usage", + "LightsTitle": "Light indicator", + "LightsTooltipTextIntro": "By setting the value of the attribute TooltipText to make the tooltip text prompt when the mouse hovers over the indicator light", + "LightsTooltipTextTitle": "prompt text", + "TooltipText": "I am prompt text message" + }, + "BootstrapBlazor.Server.Components.Samples.LinkButtons": { + "LinkButtonChildIntro": "Set ChildContent for customer template", + "LinkButtonChildTitle": "Template", + "LinkButtonColorIntro": "Set Color change the color of text", + "LinkButtonColorText": "Button", + "LinkButtonColorTitle": "Color", + "LinkButtonIconIntro": "Set Icon for display as icon button", + "LinkButtonIconTitle": "Icon", + "LinkButtonImageIntro": "Set ImageUrl for image", + "LinkButtonImageTitle": "Image", + "LinkButtonIsDisabledIntro": "Set IsDisabled for disable the link button", + "LinkButtonIsDisabledText": "Disabled", + "LinkButtonIsDisabledTitle": "Disabled", + "LinkButtonOnClickIntro": "Set OnClick handler onclick event", + "LinkButtonOnClickTitle": "OnClick", + "LinkButtonsComTitle": "LinkButton", + "LinkButtonsSubTitle": "Provider A html tag as Button", + "LinkButtonText": "LinkButton", + "LinkButtonTextIntro": "Set Text for displayed text", + "LinkButtonTextTitle": "LinkButton", + "LinkButtonTitleDetail": "show Tooltip when hover on this button", + "LinkButtonTitleIntro": "Set Title for tooltip", + "LinkButtonTitleTitle": "Tooltip", + "LinkButtonTitleTooltip": "this is Tooltip title", + "LinkButtonUrlIntro": "Set Url for navigation Url", + "LinkButtonUrlTitle": "Navigation Url", + "LinkButtonVerticalIntro": "Set IsVertical for vertical layout the icon and text", + "LinkButtonVerticalText": "TestButton", + "LinkButtonVerticalTitle": "Vertical" + }, + "BootstrapBlazor.Server.Components.Samples.ListGroups": { + "BasicUsageIntro": "Set datasource by Items", + "BasicUsageTitle": "Basic usage", + "HeaderTemplateIntro": "Set HeaderTemplate for custom Header", + "HeaderTemplateTitle": "Header Template", + "HeaderText": "Header Title", + "HeaderTextIntro": "By set HeaderText for header text", + "HeaderTextTitle": "Header", + "ListGroupsSubTitle": "Mostly used for data browsing and selection", + "ListGroupsTips": "
  • Set the list box to display the dataset through Items
  • Set the list box data item display text by GetItemDisplayText
  • Due to the internal height of the component being set to 100%, the parent container will be automatically filled when used. When the parent container is set to a height, a scroll bar will automatically appear on the list items. In this example, set the height of the external container element code>list-group-demo to 280px
  • ", + "ListGroupsTitle": "ListGroup" + }, + "BootstrapBlazor.Server.Components.Samples.ListViews": { + "BasicUsageIntro": "Apply to a large number of duplicate data implementation rule arrangements", + "BasicUsageP1": "The OnListViewItemClick event is triggered when you click on the image", + "BasicUsageTitle": "Basic usage", + "CollapseIntro": "Set up grouping can collapable via Collapsible=\"true\"", + "CollapseTitle": "Collapsable", + "GroupIntro": "Set up grouping GroupName data. set the group order by GroupOrderCallback", + "GroupTitle": "Group display", + "IsAccordionIntro": "Set up grouping can accordion via IsAccordion=\"true\"", + "IsAccordionTitle": "Group accordion", + "ListViewsSubTitle": "Provides rule arrangement controls", + "ListViewsTitle": "ListView", + "PaginationIntro": "Set the Pageable display paginated components", + "PaginationTitle": "Paginated display", + "ProductListText": "The list of products", + "QueryAsync": "Manually query data methods" + }, + "BootstrapBlazor.Server.Components.Samples.Live2DDisplays": { + "Live2DDisplayDescription": "Live2D Widget plugin based on pixi live2d display, supporting all versions of Live2D models.", + "Live2DDisplayNormalIntro": "By adjusting the default parameter options, achieve dynamic changes in the model.", + "Live2DDisplayNormalTips": "Add the following code to Program.cs.", + "Live2DDisplayNormalTitle": "Usage", + "Live2DDisplayTitle": "Live2D Widget" + }, + "BootstrapBlazor.Server.Components.Samples.Locators": { + "LocatorsNormalButtonText": "Locating", + "LocatorsNormalCustomerLocator": "Add CustomerLocatorProvider to the service container using the AddSingleton method", + "LocatorsNormalDescription": "Introduction to usage", + "LocatorsNormalDisplayText": "Geographical location", + "LocatorsNormalExtend1": "1. Implement a custom locator", + "LocatorsNormalExtend2": "2. Configure a custom locator", + "LocatorsNormalExtend3": "3. Use locator", + "LocatorsNormalExtendDescription": "Extend the custom geo-location query interface", + "LocatorsNormalInjectIPLocator": "The component uses the injection service IIPLocatorProvider call the Locate method", + "LocatorsNormalInputText": "IpAddress", + "LocatorsNormalIntro": "The injection service displays client geographic location information", + "LocatorsNormalIpTitle": "IP test data", + "LocatorsNormalTips1": "Solution:", + "LocatorsNormalTips2": "The Startup file add the following phrase to the ConfigureServices method", + "LocatorsNormalTips3": "Shandong, China Unicom", + "LocatorsNormalTips4": "Shushan District Hefei, Anhui China Telecom", + "LocatorsNormalTipsTitle": "Some geographic location query interfaces may return character sets from other character sets such asgbk, and the program may report an error", + "LocatorsNormalTitle": "Basic usage", + "LocatorsProviderDesc": "

    The component library has two built-in free online geolocation locators, BaiduIpLocatorProvider BaiduIpLocatorProviderV2

    The component library has a built-in paid online geolocation locator BootstrapBlazor.JuHeIpLocatorProvider Nuget package Official website address

    The component library has a built-in free offline geolocation locator BootstrapBlazor.IP2Region Nuget package

    ", + "LocatorsSubTitle": "More for system log tracking and analysis", + "LocatorsTitle": "Get the IP geographic location" + }, + "BootstrapBlazor.Server.Components.Samples.Logouts": { + "LogoutsChildContentCustomDisplay": "Customize display content", + "LogoutsChildContentIntro": "Set ChildContent or write other components directly inside the component", + "LogoutsChildContentTitle": "Custom display template", + "LogoutsDescription": "Used for site logout action", + "LogoutsHeaderTemplateIntro": "set up HeaderTemplate", + "LogoutsHeaderTemplateTitle": "Custom Login Information Template", + "LogoutsHeaderTemplateUser1": "General manager", + "LogoutsHeaderTemplateUser2": "Admin", + "LogoutsLinkTemplateIntro": "set up LinkTemplate", + "LogoutsLinkTemplatePersonalCenter": "personal center", + "LogoutsLinkTemplateSetup": "set up", + "LogoutsLinkTemplateTitle": "Custom link template", + "LogoutsNormalIntro": "Use the built-in template directly", + "LogoutsNormalTitle": "Common usage", + "LogoutsShowUserNameIntro": "Set ShowUserName to false", + "LogoutsShowUserNameTitle": "Only show avatars", + "LogoutsTitle": "Logout component" + }, + "BootstrapBlazor.Server.Components.Samples.Markdowns": { + "MarkdownsAsyncButtonText": "load", + "MarkdownsAsyncIntro": "Get Markdown display with Webapi", + "MarkdownsAsyncTitle": "Load the data asynchronously", + "MarkdownsBrowserButtonText1": "Insert a line of text", + "MarkdownsBrowserButtonText2": "Insert a picture", + "MarkdownsBrowserButtonText3": "The cursor moves to the end", + "MarkdownsBrowserIntro": "Using APIs to manipulate the Editor from the outside, the specific API reference tui.editor api", + "MarkdownsBrowserText": "coconut palm", + "MarkdownsBrowserTitle": "External operation Markdown", + "MarkdownsCommonPropertyDescription": "Set the minimum height of the Markdown Editor 300px, the default height 500px, indicating that this is the Markdown, tab display, the default display of the WYSIWYG page", + "MarkdownsCommonPropertyIntro": "Change the default parameters", + "MarkdownsCommonPropertyPlaceHolder": "This is Markdown", + "MarkdownsCommonPropertyTitle": "Common properties", + "MarkdownsCss": "CSS file", + "MarkdownsCssText": "dynamic import css", + "MarkdownsDescription": "A text editor that provides support for the Markdown syntax", + "MarkdownsEnableHighlightIntro": "Enable plugins with EnableHighlight=true, highlighting using ``` followed by code formatting, and js highlight syntax for example ```js", + "MarkdownsEnableHighlightTitle": "Enable the code highlighting plugin", + "MarkdownsIsDarkTitle": "Dark mode", + "MarkdownsIsViewerDescription": "Set the markdown editor to browse-only mode, IsViewer='true'", + "MarkdownsIsViewerIntro": "Simple browsing mode, not editable", + "MarkdownsIsViewerTitle": "Browser mode", + "MarkdownsJs": "JS file", + "MarkdownsJsText": "dynamic import JavaScript", + "MarkdownsLocalizationTips": "The component has a built-in Chinese to switch between current cultural information for Chinese", + "MarkdownsLocalizationTipsTitle": "Localization", + "MarkdownsNormalDescription": "Once you Markdown code, click on the relevant area below to display the data", + "MarkdownsNormalIntro": "The default setting", + "MarkdownsNormalTitle": "Common usage", + "MarkdownsNote": "If you edit too much content, signalR communication interruption may be triggered. Please adjust the HubOptions configuration.", + "MarkdownsTitle": "Markdown", + "MarkdownString": "Test", + "MarkdownsValidateIntro": "Check data validity and prompt automatically based on custom validation rules", + "MarkdownsValidateSubmitText": "Save", + "MarkdownsValidateTitle": "Validate" + }, + "BootstrapBlazor.Server.Components.Samples.Marquees": { + "MarqueeBase": "Usage", + "MarqueeBaseIntro": "Adjusting the text scrolling effect through parameters", + "MarqueeDescription": "The component is mostly used to create scrolling text, usually for news scrolling, advertising scrolling, etc.", + "MarqueeTitle": "Marquee component" + }, + "BootstrapBlazor.Server.Components.Samples.Masks": { + "MaskCloseIntro": "Close the popup by using the DialogCloseButton component or cascade parameters", + "MaskCloseTitle": "Close By Code", + "MaskContainerIntro": "Specify the mask position by setting the MaskOption parameter ContainerId", + "MaskContainerTitle": "Container", + "MaskDescription": "By calling the service display and hide methods, a mask layer is displayed to mask the data.", + "MaskNormalDesc": "You can adjust the ZIndex Opacity BackgroundColor parameters via MaskOption", + "MaskNormalIntro": "Call the MaskService mask service example method Show to display a mask, and call the instance method Close to close the mask after 3 seconds", + "MaskNormalTitle": "Basic usage", + "MaskTitle": "Mask", + "MultipleMaskContainerDesc": "Set the Mask component in the component. When calling the Show instance method of MaskService, specify the Mask instance as the second parameter.", + "MultipleMaskContainerIntro": "By customizing the Mask component, you can mask multiple parts of a web page.", + "MultipleMaskContainerTitle": "Multiple Mask", + "ShowMaskButtonText": "Show" + }, + "BootstrapBlazor.Server.Components.Samples.Menus": { + "MenusAccordionIntro": "Set the accordion effect sidebar menu by setting the IsAccordion property", + "MenusAccordionTitle": "Sidebar for accordion effects", + "MenusBottomBarIntro": "Set the parameter IsBottom value is true menu bar at the bottom of the container, for the mover", + "MenusBottomBarTips": "Because the bottom bar menu is relatively positioned relative to the parent container, you need to set the parent node style position-, or customize the style theposition-fixed", + "MenusBottomBarTitle": "Bottom bar", + "MenusClickShrinkAlertText": "Note that the IsCollapsed property is available only if the IsVertical is true, i.e. only sidebar menus", + "MenusClickShrinkDescription": "In this example, the layout component Layout is used to build a web page", + "MenusClickShrinkIntro": "Set the sidebar menu to the put-away state by setting the IsCollapsed property", + "MenusClickShrinkMenuTitle": "Admin", + "MenusClickShrinkSpanSpan": "I am the title of the website", + "MenusClickShrinkTitle": "Sidebar effect with shrink", + "MenusCustomNodeDescription": "In this example, the permission settingsnode is expanded and the remaining nodes are in the recess state", + "MenusCustomNodeIntro": "Set whether the node is receding by setting the IsCollapsed property of the MenuItem", + "MenusCustomNodeTitle": "Custom node shrinkage", + "MenusDescription": "A list of menus that provide navigation for pages and features.", + "MenusDynamicButton1Text": "Update the menu", + "MenusDynamicButton2Text": "Reset the menu", + "MenusDynamicIntro": "Change the menu item by dynamically setting Theitems property values", + "MenusDynamicTitle": "Dynamically change the menu", + "MenusIconLeftIntro": "Set the menu icon by setting the menu item the Icon property of the MenuItem", + "MenusIconLeftTitle": "Sidebar menu with icon", + "MenusIconTopIntro": "For simple website apps, set the menu icon by setting the menu item the Icon property of the MenuItem", + "MenusIconTopTitle": "Top bar menu with icon", + "MenusLeftRightLayoutIntro": "For sites with left and right structure layouts, change the navigation menu to sidebar by setting IsVertical", + "MenusLeftRightLayoutTitle": "Sidebar", + "MenusPartDisableDescription1": "In this example navigation two node is disabled and the menu and its submenu are not clickable", + "MenusPartDisableDescription2": "Example of a disablement of the sidebar", + "MenusPartDisableIntro": "Set whether the node is disabled by setting the IsDisabled property of theMenuItem", + "MenusPartDisableTitle": "Some menus disable functionality", + "MenusTips1": "Menu component is generally used for menu navigation, i.e. redirect navigation by clicking on the address bar after the menu, but sometimes you don't need navigation in real life, by setting OnClick callback delegate, custom processing logic, at this point by setting Property The of TheableNavigation, in this case all Menu are set to true disable navigation because they are analog menu clicks and do not actually navigate the address bar", + "MenusTitle": "Menu", + "MenusTopBarIntro": "A wide range of basic usages are applicable.", + "MenusTopBarTitle": "Top bar", + "MenusWidgetIntro": "Set the custom component into the menu by setting the Component property of the MenuItem ", + "MenusWidgetTitle": "Menu with pendant" + }, + "BootstrapBlazor.Server.Components.Samples.Mermaids": { + "DownloadPdfButtonText": "Export Pdf", + "MermaidDescription": "This component renders Markdown-inspired text definitions to dynamically create and modify diagrams.", + "MermaidNormalIntro": "Mermaid basic style", + "MermaidNormalTitle": "Basic usage", + "MermaidStyleTitle": "Custom styles", + "MermaidTitle": "Mermaid", + "MermaidType": "Type" + }, + "BootstrapBlazor.Server.Components.Samples.Messages": { + "MessagesAsyncDemoStep1Text": "Packing documents, please wait...", + "MessagesAsyncDemoStep2Text": "Packaging completed, downloading...", + "MessagesAsyncDemoStep3Text": "Download completed, close the window automatically", + "MessagesAsyncIntro": "By setting the button's IsAsync parameter, use the same MessageOption to update the pop-up window information for different steps", + "MessagesAsyncText": "AsyncNotify", + "MessagesAsyncTitle": "Async notification", + "MessagesCloseButtonIntro": "Change the close button to appear on the right side of the message box by setting the ShowDismiss property of MessageOption", + "MessagesCloseButtonTitle": "message box with close button", + "MessagesDescription": "Often used for feedback prompts after active operations. The difference from Toast is that the latter is more passive reminder for system-level notifications", + "MessagesDifferentColorDanger": "Danger message", + "MessagesDifferentColorInfo": "Info message", + "MessagesDifferentColorIntro": "Change the message box color by setting the Color property of MessageOption", + "MessagesDifferentColorPrimary": "Primary message", + "MessagesDifferentColorSecondary": "Secondary message", + "MessagesDifferentColorSuccess": "success message", + "MessagesDifferentColorTitle": "message boxes in different colors", + "MessagesDifferentColorWarning": "Warning message", + "MessagesIconIntro": "Change the small icon on the left side of the message box by setting the Icon property of MessageOption", + "MessagesIconTitle": "message box with icon", + "MessagesIntro": "Component usage introduction:", + "MessagesItem": "MessageOption property", + "MessagesLeftBoardIntro": "Change the left border style of the message box by setting the ShowBar property of MessageOption", + "MessagesLeftBoardTitle": "message box with border on the left", + "MessagesMessagePrompt": "Open the message prompt", + "MessagesNormalIntro": "Appears from the top and automatically disappears after 4 seconds", + "MessagesNormalTitle": "Basic usage", + "MessagesPositionIntro": "Specify the Message component that has set the bottom display position by setting the component parameter of the MessageService service", + "MessagesPositionTitle": "message box pop-up location", + "MessagesShowModeIntro": "Specify the display mode by setting the ShowMode parameter", + "MessagesShowModePrompt": "Show only last message", + "MessagesShowModeTitle": "Show mode", + "MessagesTemplateIntro": "By setting the ChildContent template, rich custom styles and content prompt information can be achieved", + "MessagesTemplatePrompt": "Custom message", + "MessagesTemplateTitle": "Custom template", + "MessagesTips1": "1. Inject service MessageService", + "MessagesTips2": "2. call its instance api", + "MessagesTips3": "This is a reminder message", + "MessagesTitle": "Message prompt" + }, + "BootstrapBlazor.Server.Components.Samples.MindMaps": { + "CustomButtonText": "Custom", + "ExportButtonText": "ExportPng", + "ExportJsonButtonText": "ExportJSON", + "FitButtonText": "Fit", + "GetDataButtonText": "GetData", + "GetFullDataButtonText": "GetFullData", + "MindMapDescription": "Used to display specific Json format data as a Web mind map", + "MindMapExtensionDesc": "

    Because MindMap encapsulates many api methods, the component library cannot fully encapsulate them, so extension methods are provided. For example, if you need a combination button to use the component, you can call your own Javascript through your own code to control MindMap

    • The custom button calls the component instance method MindMap.Execute(\"clickCustom\", \"args1\"), assuming the parameter is args1
    • Your own Javascript is responsible for handling the clickCustom event
    • this in the clickCustom method is the current MindMap instance, and you can call any of its methods to develop your own business

    The complete example is as follows:

    ", + "MindMapLayout": "Layout", + "MindMapNormalTitle": "Basic usage", + "MindMapTheme": "Theme", + "MindMapTitle": "Mind Map", + "ResetButtonText": "Reset", + "Sample1ButtonText": "Example 1", + "Sample2ButtonText": "Example 2: week arrangement", + "Scale1ButtonText": "ZoomOut", + "Scale2ButtonText": "ZoomIn", + "SetDataButtonText": "SetData" + }, + "BootstrapBlazor.Server.Components.Samples.Modals": { + "ModalsBigPopup": "big popup", + "ModalsCenterVerticallyIntro": "Set the vertical centering of the popup component via IsCentered", + "ModalsCenterVerticallyTitle": "Center vertically", + "ModalsDescription": "Inform the user and host relevant actions while preserving the current page state", + "ModalsDialogResizeIntro": "Resize the modal box by setting the ShowResize property", + "ModalsDialogResizeTitle": "Resize", + "ModalsDialogSizeIntro": "Set the size of the popup component through Size", + "ModalsDialogSizeTitle": "Bullet size", + "ModalsFullScreenPopup": "Full screen popup", + "ModalsFullScreenPopup1200": "Full screen popup(<1200px)", + "ModalsFullScreenPopup1400": "Full screen popup(<1400px)", + "ModalsFullScreenPopup992": "Full screen popup(<992px)", + "ModalsFullScreenSizeIntro": "Just set the property FullScreenSize", + "ModalsFullScreenSizeTitle": "Full screen popup", + "ModalsIsBackdropIntro": "Click the area outside the pop-up window to close the pop-up window effect by default", + "ModalsIsBackdropTitle": "IsBackdrop background off mode", + "ModalsIsBackdropToClose": "Click on the background to close the popup", + "ModalsIsDraggableIntro": "Click on the title bar of the pop-up window to drag and drop the pop-up window", + "ModalsIsDraggableTitle": "Draggable popup", + "ModalsLargeFullScreenPopup": "Large full screen popup", + "ModalsLargeFullScreenPopupWindow": "Large full-screen pop-up window", + "ModalsLongContentIntro": "Use IsScrolling to set the scroll wheel sliding function of the pop-up frame component for the excess content", + "ModalsLongContentTitle": "Extra long content", + "ModalsMaximizeIntro": "Show the maximize button by setting the ShowMaximinzeButton popup", + "ModalsMaximizePopup": "Maximize popup", + "ModalsMaximizeTitle": "Maximize button", + "ModalsNormalDefaultPopup": "Default popup", + "ModalsNormalDefaultPopupText": "I am the text in the pop-up window", + "ModalsNormalIntro": "A dialog box pops up, suitable for scenarios that require more customization", + "ModalsNormalIsKeyboard": "by setting Modal component IsKeyboard:true parameter, whether to open the pop-up window is supported ESC", + "ModalsNormalPopups": "Pop-ups", + "ModalsNormalPopupText": "popup text", + "ModalsNormalPopupTitle": "Popup title", + "ModalsNormalTitle": "Basic usage", + "ModalsOverSizedPopup": "OverSized pop-up window", + "ModalsResize": "Resize", + "ModalsScrollBarPopup": "Built-in scroll bar popup", + "ModalsShownCallbackAsyncIntro": "By setting the ShowCallbackAsync callback delegate, this method will be recalled after the pop-up window is displayed", + "ModalsShownCallbackAsyncTitle": "Popup shows callback method", + "ModalsSmallPopup": "small popup", + "ModalsSuperLargeFullScreenPopupWindow": "Super large full-screen pop-up window", + "ModalsSuperLargePopup": "super large pop-up window", + "ModalsTitle": "Modal box", + "ModalsTitlePopupWindowText": "I am the text in the pop-up window", + "ModalsVerticallyCenteredPopup": "Vertically centered popup", + "ModalsVeryLongContent": "Pop-up window with very long content" + }, + "BootstrapBlazor.Server.Components.Samples.MouseFollowers": { + "MouseFollowerIconIntro": "If you use SVG spritesheet in your project and want to display them in the cursor, then you can use this method. In this case, you need to specify the path to the SVG sprite in the options and set class names.", + "MouseFollowerIconTitle": "Icon mode", + "MouseFollowerImageIntro": "This method allows you to show any picture in the cursor", + "MouseFollowerImageTitle": "Image mode", + "MouseFollowerNormalIntro": "A Mouse Follower pointer", + "MouseFollowerNormalTitle": "Normal mode", + "MouseFollowersDescription": "create amazing and smooth effects for the mouse cursor on your website.。", + "MouseFollowersTitle": "Mouse Follower", + "MouseFollowerTextIntro": "To display text in the cursor use this method", + "MouseFollowerTextTitle": "Text mode", + "MouseFollowerVideoIntro": "You can also play videos", + "MouseFollowerVideoTitle": "Video mode" + }, + "BootstrapBlazor.Server.Components.Samples.MultiSelects": { + "MultiSelectAdd": "Add", + "MultiSelectBindingCollectionDescription": "In this example, the SelectArrayValues collection variable by binding bidirectionally, and selects to change its value through the drop-down box", + "MultiSelectBindingCollectionIntro": "Bind a generic a collection of IEnumerable", + "MultiSelectBindingCollectionTitle": "A collection of bidirectional binding values", + "MultiSelectBindingEnumCollectionDescription": "In this example, by binding SelectEnumValues collection variables in both directions, you choose to change their values through the drop-down box, and you do not need to set the Items parameter when enumeratingtype, the added feature is that the component tries to find resource files or DisplayAttribute And DescriptionAttribute labels attempt local translation, such as this example when switching to Chinese enumerates the values elementary schoolmiddle school ", + "MultiSelectBindingEnumCollectionIntro": "Bind a generic a collection of IEnumerable", + "MultiSelectBindingEnumCollectionTitle": "Bidirectional binding enumerates the collection", + "MultiSelectBindingNumberDescription": "In this example, an array variable SelectedIntArrayValues selected by a bidirectional binding, selects to change its value through a drop-down box", + "MultiSelectBindingNumberIntro": "Bind an array int[]", + "MultiSelectBindingNumberTitle": "An array of two-way bound values", + "MultiSelectBindingStringDescription": "
    The MultiSelect component data source Items and selected values the SelectItemsValue support bidirectional binding;In this example, the SelectItemsValue variable by binding bidirectionally, and chooses to change its value through the drop-down box.
    ", + "MultiSelectBindingStringIntro": "Bind a comma string-splitting string", + "MultiSelectBindingStringTitle": "A two-way binding value string", + "MultiSelectButtonIntro": "By setting ShowToolbar value settings component displays the toolbox, by setting ShowDefaultButtons value settings component displays the default buttons, by setting ShowSearch value settings component displays the search box", + "MultiSelectButtonTitle": "Full and reverse buttons", + "MultiSelectCascadingDescription": "In this example, clicking on the first drop-down box allows you to get the data source for the second multi-box by asynchronous means, and after assigning, call StateHasChanged to re-render the multi-box ", + "MultiSelectCascadingIntro": "The second drop-down box dynamically populates the content by selecting the different options for the first drop-down box.", + "MultiSelectCascadingTitle": "Cascading bindings", + "MultiSelectClean": "Clear", + "MultiSelectClientValidationDescription": "When built into the ValidateForm component, client authentication is automatically turned on, and the binding model has Required tags", + "MultiSelectClientValidationIntro": "When the drop-down box is not selected, it is blocked when the submit button is clicked.", + "MultiSelectClientValidationSubmit": "Submit", + "MultiSelectClientValidationTitle": "Client validation", + "MultiSelectColorIntro": "Multi-select drop-down boxes in a variety of colors are available", + "MultiSelectColorTitle": "Color", + "MultiSelectDecrease": "Decrease", + "MultiSelectDisableDescription": "The component does not respond when the state is disabled", + "MultiSelectDisableIntro": "Set the component disabled state by setting the IsDisabled value", + "MultiSelectDisableTitle": "Disable the feature", + "MultiSelectDisplayLabelCustomDisplayText": "Customize DisplayText", + "MultiSelectDisplayLabelCustomText": "Custom name", + "MultiSelectDisplayLabelDescription": "The pre-label explicit rules are consistent with the BootstrapInput component of the of the [The portal]", + "MultiSelectDisplayLabelHideLabel": "Bidirectional bindings do not display labels", + "MultiSelectDisplayLabelIntro": "When a component binds in both directions, it automatically determines whether label text is displayed based on the conditions", + "MultiSelectDisplayLabelShowLabel": "Bidirectional binding displays labels", + "MultiSelectDisplayLabelTitle": "The label is displayed", + "MultiSelectDisplayTemplateIntro": "customize display template by set DisplayTemplate", + "MultiSelectDisplayTemplateTitle": "Display Template", + "MultiSelectExpandButtonIntro": "Customize features by setting ButtonTemplate custom toolbar buttons", + "MultiSelectExpandButtonText": "Test", + "MultiSelectExpandButtonTitle": "Extend the toolbar button", + "MultiSelectFlagsEnumIntro": "When the binding value is an Enum data type, if it has a Flags tag, multiple selection mode is automatically supported", + "MultiSelectFlagsEnumTitle": "Flags Enum", + "MultiSelectGenericIntro": "Data source Items supports generics when using SelectedItem<TValue>", + "MultiSelectGenericTitle": "Generic", + "MultiSelectGroupIntro": "Alternatives are presented in groups", + "MultiSelectGroupTitle": "Grouping", + "MultiSelectIsEditableDescription": "By setting the EditSubmitKey parameter, you can specify whether to submit via Enter or Space", + "MultiSelectIsEditableIntro": "Make the component editable by setting the IsEditable parameter", + "MultiSelectIsEditableTitle": "Editable", + "MultiSelectIsSingleLineDescription": "When there are too many candidates, the component is laid out horizontally, and a horizontal scroll bar is displayed when the mouse is hovering over the component for data scrolling.", + "MultiSelectIsSingleLineIntro": "Make the component always render in one line by setting IsSingleLine=\"true\"", + "MultiSelectIsSingleLineTitle": "Single line display", + "MultiSelectItemTemplateIntro": "customer item template by set ItemTemplate", + "MultiSelectItemTemplateTitle": "Item Template", + "MultiSelectMaxMinIntro": "Set the limit on the number of options available to components by setting the max Min values", + "MultiSelectMaxMinMax": "You can select up to two options", + "MultiSelectMaxMinMin": "Select at least two options", + "MultiSelectMaxMinTitle": "Set the maximum and minimum number of options", + "MultiSelectOptionChangeIntro": "Get the currently selected data set change event by setting the onSelectedItemsChanged callback method by setting", + "MultiSelectOptionChangeLog": "Select the collection of items", + "MultiSelectOptionChangeTitle": "Events when the option changes", + "MultiSelectPopoverIntro": "Set IsPopover to true, use popover render UI prevent The dropdown menu cannot be fully displayed because the parent container is set to overflow: hidden", + "MultiSelectPopoverTitle": "Popover dropdown menu", + "MultiSelectsDescription": "When you have multiple options, use the drop-down menu to present and provide a search for multiple choices", + "MultiSelectSearchDescription": "In this example, the search callback delegate method is set onSearchTextChanged to customize search results if the display text is used internally to make a fuzzy match when not set", + "MultiSelectSearchIntro": "Turn on search by setting the ShowSearch value", + "MultiSelectSearchLog": "Search for text", + "MultiSelectSearchTitle": "Search function", + "MultiSelectsEvent_OnSearchTextChanged": "Call back this method when the search text changes", + "MultiSelectsEvent_OnSelectedItemsChanged": "This event is triggered when the drop-down option changes", + "MultiSelectsTitle": "MultiSelect", + "MultiSelectVeryLongTextDisplayText": "Extra long text", + "MultiSelectVeryLongTextIntro": "The candidate text is particularly long", + "MultiSelectVeryLongTextTitle": "Options for extra-long text", + "MultiSelectVirtualizeDescription": "Component virtual scrolling supports two ways of providing data through Items or OnQueryAsync callback methods", + "MultiSelectVirtualizeIntro": "Set IsVirtualize to true enable virtual scroll for large data", + "MultiSelectVirtualizeTitle": "Virtualize" }, - "BootstrapBlazor.Server.Components.Samples.Table.TablesHeader": { - "TablesHeaderTitle": "Header grouping function", - "TablesHeaderDescription": "When the data structure is complex, multi-level headers can be used to show the hierarchical relationship of the data", - "TablesHeaderNormalTitle": "Basic usage", - "TablesHeaderNormalIntro": "Set the MultiHeaderTemplate template", - "TablesHeaderNormalTips1": "By setting ShowMultiFilterHeader value to control whether to display the filter header", - "TablesHeaderNormalTips2": "Pay attention to the details. After the first column of cells is merged, there will be no cells in the first column of the last row header, so you need to set the style yourself border-bottom consistent with other cells", - "TablesHeaderNormal_Time": "time", - "TablesHeaderNormal_Info": "Personal information", - "TablesHeaderNormal_Name": "personal name", - "TablesHeaderNormal_Address": "personal address" + "BootstrapBlazor.Server.Components.Samples.Navbars": { + "NavbarDescription": "A powerful, responsive navigation header, the navbar. Includes support for branding, navigation, and more", + "NavbarTitle": "Navbar", + "NormalIntro": "By setting NavbarBrand NavbarToggleButton NavbarCollapse NavbarGroup NavbarItem to layout its internal elements", + "NormalTitle": "Basic usage" }, - "BootstrapBlazor.Server.Components.Samples.SelectTrees": { - "SelectTreesTitle": "SelectTree", - "SelectTreesDescription": "A tree-like data structure is presented in the drop-down box for selection", - "SelectTreesNormalTitle": "Common usage", - "SelectTreesNormalIntro": "Selected node", - "SelectTreesDisableTitle": "Disabled", - "SelectTreesDisableIntro": "Disabled the component by set IsDisabled to true", - "SelectTreesBindingTitle": "Select two-way binding", - "SelectTreesBindingIntro": "The values in the text box change as you change the drop-down option by binding the Model.Name property to the component with Select Tree", - "SelectTreesClientValidationTitle": "Validation", - "SelectTreesClientValidationIntro": "validate the value when submit the form. Inside ValidateForm", - "SelectTreesEditTitle": "Edit", - "SelectTreesEditIntro": "By setting IsEditable=\"true\" you can edit the input textbox", - "SelectTreesEditDesc": "After setting IsEditable=\"true\", the content displayed in the text box is the Value value of the node selected in the TreeView, the input value may not be in the Items collection", - "SelectTreesIsPopoverTitle": "IsPopover", - "SelectTreesIsPopoverIntro": "Set IsPopover to true, use popover render UI prevent The dropdown menu cannot be fully displayed because the parent container is set to overflow: hidden", - "SelectTreesClientValidationButtonText": "Submit" + "BootstrapBlazor.Server.Components.Samples.Navigation": { + "NavsAlignIntro": "Control component alignment by setting the property of Signment", + "NavsAlignTitle": "Align", + "NavsDescription": "A menu that provides navigation for your site.", + "NavsDivider": "Split the line", + "NavsFillAndAlignIntro": "By setting the IsFill properties controls that the navigation menu is evenly distributed to fill the entire navigation bar", + "NavsFillAndAlignTitle": "Fill and align", + "NavsNormalIntro": "In this example, by setting the Items property, the navigation component is assigned through the program api and the NavLink component is written directly to the ChildContext of the navigation component", + "NavsNormalTitle": "Basic navigation style.", + "NavsPillsIntro": "Control the background color of the navigation menu by setting the IsPills property", + "NavsPillsTitle": "Capsule", + "NavsTitle": "Nav", + "NavsVerticalIntro": "In this example, you control whether the navigation is vertically distributed by setting the IsVertical property", + "NavsVerticalTitle": "Vertical", + "NavsWideIntro": "By setting the IsIze property so that each navigation item will have the same width.", + "NavsWideTitle": "Equal width" }, - "BootstrapBlazor.Server.Components.Samples.Table.TablesDetailRow": { - "TablesDetailRowTitle": "Display detail line function", - "TablesDetailRowDesc": "Used to display parent-child relationship table data", - "DetailRowTemplateTitle": "Simple Application", - "DetailRowTemplateIntro": "Set the detail row content by setting the DetailRowTemplate template", - "DetailRowTemplateP": "In the detail row, another field education of the binding row is displayed in the form of ordinary text", - "DetailRowTemplateP1": "Through the IsDetails parameter, it is possible to dynamically switch whether to display the detail row function", - "DetailRowTemplate2Title": "Nested Table Component Application", - "DetailRowTemplate2Intro": "Set the detail behavior sub-table data by setting the DetailRowTemplate template", - "DetailRowTemplate2P": "Another Table component is nested in the detail row. Since each row must be associated with sub-table data, for performance reasons, this function adopts the lazy loading mode. , that is, after clicking the expand button, the nested Table is filled with data, and the ShowDetailRow callback delegate can control whether each row displays the detail row. In this example, the Complete attribute to control whether to display the detail line, you can test this function by turning the page", - "HeightTitle": "Fix the header to enable the detail row function", - "HeightIntro": "Set the content of the detail row by setting the Height template after the header is fixed", - "HeightP": "In this example, after the header is fixed, the detail line function is enabled", - "DetailRowTemplate3Title": "Use Tab component in detail row", - "DetailRowTemplate3Intro": "Set the detail row content by setting the DetailRowTemplate template", - "DetailRowTemplate3P": "In this example, the Tab component is used in the detail row to split the data into two TabItem contents again to demonstrate the data splitting again", - "DynamicTitle": "Detail row of dynamic data", - "DynamicIntro": "Data source is DataTable", - "EducationText": "Education:", - "DetailTextTrue": "Enable", - "DetailTextFalse": "Disable", - "TabItemText": "Associated Data", - "DetailRowTemplateIsAccordion": "IsAccordion" + "BootstrapBlazor.Server.Components.Samples.NetworkMonitors": { + "IndicatorLi1": "Green: Very good network (4G)", + "IndicatorLi2": "Yellow: Average network (3G)", + "IndicatorLi3": "Red: Poor network (2G)", + "IndicatorLi4": "Gray: Offline", + "NetworkMonitorDescription": "Use the browser native API navigator.connection to display the current network status in real time", + "NetworkMonitorTitle": "NetworkMonitor", + "NormalIntro": "Use the component NetworkMonitorIndicator to display indicator lights of different colors when the network status changes, and display the network status details when the mouse moves over it", + "NormalTitle": "Basic usage" }, - "BootstrapBlazor.Server.Components.Samples.Table.Tables": { - "ButtonAddColumnText": "Add Column", - "ButtonRemoveColumnText": "Remove Column", - "TableBaseTitle": "Table", - "TableBaseDescription": "It is used to display multiple pieces of data with similar structure. You can sort, filter, compare or other user-defined operations on the data.", - "TableBaseExplain1": "The Table component already supports mobile terminal adaptation. When the screen is smaller than the rendermoderesponsewidth set value, the component will be rendered as a card for easy viewing of data, and its default value is 768 ", - "TableBaseExplain2": "Table component has a rendermode attribute. Its default value is auto and other values are defined as follows", - "TableBaseTips1": "Auto: Use cardview mode when the screen is smaller than 768px, otherwise use Table mode", - "TableBaseTips2": "Table: Table rendering mode, using table elements for data rendering, suitable for viewing data in a wide screen", - "TableBaseTips3": "CardView:Card rendering mode, using div elements for data rendering, which is suitable for viewing data on a narrow screen", - "TableBaseTips4": "TableColumn When using @bind-Field to bind a complex type, All complex type properties must be instantiated", - "TableBaseNormalTitle": "Basic table", - "TableBaseNormalIntro": "Basic table presentation usage", - "TableBaseNormalDescription": "Update data source when clicking button items component Table display data is automatically updated", - "TableBaseStripedTitle": "Tables with zebra stripes", - "TableBaseStripedIntro": "Using a table with zebra stripes, it is easier to distinguish data from different rows. Just set istriped = true ", - "TableBaseBorderedTitle": "Bordered tables", - "TableBaseBorderedIntro": "Increase the effect of table frame by setting isbordered attribute", - "TableBaseSizeTitle": "Compact tables", - "TableBaseSizeIntro": "Set the tablesize attribute to make the gap in the table smaller and suitable for big data display", - "TableBaseSizeDescription": " Tablesize is an enumeration type of table size, the default value is normal , and the compact value is compact ", - "TableBaseHeaderStyleTitle": "Header style", - "TableBaseHeaderStyleIntro": "By setting headerstyle Properties", - "TableBaseHeaderStyleDescription": " Headerstyle is the table header style, and the default value is none ", - "AttributeTitle": "Table Attribute", - "TableBaseNormalRefreshText": "Refresh", - "TableBaseHeaderStyleMode": "The style of table header" + "BootstrapBlazor.Server.Components.Samples.Notifications": { + "NotificationsIconText": "Icon", + "NotificationsNormalButtonText": "Display notification", + "NotificationsNormalCheckPermissionText": "Check Permission", + "NotificationsNormalDescription": "Click the button to notification.", + "NotificationsNormalGetPermissionCallbackText": "Get permission callback", + "NotificationsNormalIntro": "Notification information through browser API.", + "NotificationsNormalMessageSampleText": "Your package has arrived on Panama South Road, and there are only 3 stops left for distribution.", + "NotificationsNormalMessageText": "Message", + "NotificationsNormalOnClickText": "Click notification callback method name", + "NotificationsNormalPermissionText": "Permission", + "NotificationsNormalSilentText": "Silent", + "NotificationsNormalTips1": "Note: For security reasons, when a web page tries to access notifications, the user is notified and asked to grant permission.", + "NotificationsNormalTips2": "Uses the static class BrowserNotification to call the Dispatch method", + "NotificationsNormalTitle": "Basic usage", + "NotificationsNormalTitleSampleText": "You have a new logistics notification", + "NotificationsNormalTitleText": "Title", + "NotificationsSoundText": "The audio URL to play when the notification", + "NotificationsTitle": "Notifications" }, - "BootstrapBlazor.Server.Components.Samples.Table.TablesColumn": { - "TablesColumnTitle": "Table Column", - "TablesColumnDescription": "Used to display multiple pieces of data with similar structures, data can be sorted, filtered, compared or other custom operations.", - "ColumnTextTitle": "Custom column name", - "ColumnTextIntro": "Add column header display name by setting Text", - "ColumnTextDesc": "The fields in the table component TableColumns template are automatically displayed according to the DisplayName tag value of the bound model. If you want to customize the display name, please set Text property", - "SelectTitle": "Table with select list", - "SelectIntro": "Add the first column of the table by setting IsMultipleSelect=\"true\" to select the column, and the ShowRowCheckboxCallback callback delegate can control whether each row displays the checkbox. In this example, the Complete attribute to control whether to display the checkbox", - "ShowCheckboxTitle": "Checkbox table with display text", - "ShowCheckboxIntro": "By setting ShowCheckboxText=true the display text in the first column of the table is select", - "DisabledTitle": "Select Box Column", - "DisabledIntro": "RowTemplate internal component TableCell set Checkbox and set related data binding. In this example, data binding will select The box component is bound to the value", - "FormatterTitle": "Custom column data format", - "FormatterIntro": "Format the cell value by specifying the FormatString or Formatter callback delegate when the column is bound", - "FormatterP1": "In this example the column DateTime values ​​are formatted according to FormatString to yyyy-MM-dd year month day format", - "FormatterP2": "In this example the column Count value is formatted according to Formatter to 0.00 with two decimal places", - "AlignTitle": "Column data alignment", - "AlignIntro": "Set the alignment by specifying the Align attribute when the column is bound", - "AlignP1": "In this example the column DateTime is set to center alignment Alignment.Center", - "AlignP2": "In this example the column Count is set to right-align Alignment.Right", - "ShowCopyColumnTitle": "Show copy column icon", - "ShowCopyColumnIntro": "Set ShowCopyColumn show the icon for copy entire column data", - "ShowCopyColumnDesc": "You can fine-tune the Tooltip related parameters of the copy column data icon by setting ShowCopyColumnTooltip CopyColumnTooltipText CopyColumnCopiedTooltipText and other settings", - "ShowColumnToolboxTitle": "Column Toolbox", - "ShowColumnToolboxIntro": "Enable the column toolbar button by setting the ToolboxTemplate parameter", - "BindComplexObjectTitle": "Bind Complex Types and Expressions", - "BindComplexObjectIntro": "When binding a complex type, whether the bound object collection is empty or not, the TItem must provide a parameterless constructor. Otherwise, it is required to provide a construction callback through CreateItemCallback. When binding a complex expression, the bound expression must not throw a NullReferenceException exception. If the business logic cannot avoid this issue, it is recommended to handle it using a Template", - "BindComplexObjectP1": "In this example, the complex type ComplexFoo does not have a parameterless constructor, so a construction callback for ComplexFoo should be provided through CreateItemCallback", - "BindComplexObjectP2": "In this example, we want to bind a complex expression context.Company.Name to the column CompanyName, but the business logic cannot ensure that the value of the Company property is not null at the time of binding. Therefore, we can first bind a simple expression and then handle it using the column template Template", - "BindComplexObjectButtonText": "Set company", - "ComplexFooDateTime": "DateTime", - "ComplexFooName": "Name", - "ComplexFooAddress": "Address", - "ComplexFooAge": "Age", - "ComplexFooCompany": "Company", - "OnColumnCreatingTitle": "Set current column properties", - "OnColumnCreatingIntro": "By specifying OnColumnCreating callback, make secondary data changes to the column collection", - "OnColumnCreatingP1": "Existing columns can be extended through the parameters in the OnColumnCreating callback method:", - "OnColumnCreatingP2": "You can also implement some special functions according to your own business logic; in this example, the Name column is set to read-only through the callback function", - "OnColumnCreatingLi1": "Remove the display of some columns according to business logic", - "OnColumnCreatingLi2": "Render components to specific columns according to business logic and assign values ​​to ComponentType ComponentParameters", - "AdvanceTitle": "Practical Example", - "AdvanceIntro": "Custom rendering of columns by showing template Template", - "CustomColText1": "Custom Column Name 1", - "CustomColText2": "Custom column name 2", - "CustomColText3": "Custom column name 3", - "ColumnIgnoreTitle": "Column Ignored", - "ColumnIgnoreIntro": "By setting the Ignore parameter to control whether the column is rendered, this parameter is different from Visible. SettingVisible=\"false\" to not display the column can be checked and displayed in the list through ShowColumnList=\"true\"", - "ColumnIgnoreButtonText": "Ignoring/Not Ignoring", - "ColumnOrderTitle": "Column Order", - "ColumnOrderIntro": "Set the order by setting the Order parameter of TableColumn", - "ShowMoreButtonTitle": "ShowMoreButton", - "ShowMoreButtonIntro": "By setting the ShowMoreButton parameter, a More button appears when the row expands. Furthermore, by setting the MoreButtonDropdownTemplate template, the dropdown menu options are customized. This design significantly reduces the amount of row space occupied.", - "ShowMoreButtonDesc": "MoreButtonDropdownTemplate Context context is the instance of the current row.", - "MoreButtonTextDesc": "Set the button's text using MoreButtonText", - "MoreButtonColorDesc": "Set the button color using MoreButtonColor" + "BootstrapBlazor.Server.Components.Samples.OfficeViewers": { + "OfficeViewerDescription": "This component previews Office documents using Microsoft's online document preview feature", + "OfficeViewerNormalIntro": "Set the document URL for preview by configuring the Url value", + "OfficeViewerNormalTitle": "Basic Usage", + "OfficeViewerTitle": "Office Document Viewer", + "OfficeViewerToastSuccessfulContent": "Office document loaded successfully" }, - "BootstrapBlazor.Server.Components.Samples.Table.TablesColumnDrag": { - "TablesColumnTitle": "Table Column", - "TablesColumnDescription": "Used to display multiple pieces of data with similar structures, data can be sorted, filtered, compared or other custom operations.", - "AllowDragOrderTitle": "Allow dragging column headings to adjust table column order", - "AllowDragOrderIntro": "By specifying AllowDragColumn, set the table columns to allow dragging column headings to adjust the table column order", - "AllowDragOrderDesc": "

    Pressing the mouse over a column heading and dragging it to another column heading position can adjust the column to be in front of the target column, but the built-in columns in the Table component, such as DetailRow, LineNo, MultipleSelect, and Operation columns, cannot be adjusted

    This example enables localized storage by setting the ClientTableName parameter. After dragging and adjusting the order, the page can be refreshed, and the column order remains in the previous state

    By setting the ColumnOrderCallback callback method, server-side column order persistence can be achieved

    " + "BootstrapBlazor.Server.Components.Samples.OnScreenKeyboards": { + "OnScreenKeyboardsAppDescription": "Bind", + "OnScreenKeyboardsAppTitle": "BootstrapBlazor component", + "OnScreenKeyboardsBasicTitle": "Basic", + "OnScreenKeyboardsCss": " .kioskboard-body-padding { padding-top: unset !important;} ", + "OnScreenKeyboardsNormalIntro": "Full Keyboard", + "OnScreenKeyboardsNormalText": "Basic usage", + "OnScreenKeyboardsSpecialcharactersCustomerTitle": "Special characters in customer", + "OnScreenKeyboardsSpecialcharactersTitle": "Special characters europe", + "OnScreenKeyboardsThemeDarkTitle": "Theme dark", + "OnScreenKeyboardsTips": "If the performance is not normal, you can add this css to debug", + "OnScreenKeyboardsTitle": "On-Screen keyboard", + "OnScreenKeyboardsTypekeyboardTitle": "Keyboard", + "OnScreenKeyboardsTypeNumpadTitle": "Numpad" + }, + "BootstrapBlazor.Server.Components.Samples.OpcDa": { + "OpcDaDescription": "Connect to OpcDa Server to obtain PLC real-time data", + "OpcDaNormalIntro": "Get an instance by injecting the service IOpcDaServer and call the Read method to get the PLC Tag value.", + "OpcDaNormalTitle": "Basic usage", + "OpcDaTitle": "OpcDa Server" }, - "BootstrapBlazor.Server.Components.Samples.Table.TablesColumnResizing": { - "TablesColumnTitle": "Table Column", - "TablesColumnDescription": "Used to display multiple pieces of data with similar structures, data can be sorted, filtered, compared or other custom operations.", - "WidthTitle": "Customize the width of each column", - "WidthIntro": "By setting the TableColumn Width property, the column width is controlled, and the inline button operation column width is controlled by the ExtendButtonColumnWidth property", - "WidthP1": "Continue the previous example in this example, implement four custom function buttons, and extend them to the row. When each button is clicked, there is a corresponding callback delegate method. TableToolbarButton uses It is the way of Delegate to complete the data exchange. When the toolbar button is clicked, set the OnClick delegate method to obtain the selected row data set in the table", - "WidthP2": "RowButtonTemplate button template places the custom button behind the built-in button by default. If you need to place the custom button before the built-in button, please use the BeforeRowButtonTemplate template", - "WidthP3": "Control whether the button is displayed by setting the button IsShow parameter", - "AllowResizingTitle": "Allow column resizing", - "AllowResizingIntro": "Set table columns to allow resizing by specifying AllowResizing", - "AllowResizingDesc": "Note: Table scrollbar only appears when the parent container has valid width values, By setting the ShowColumnWidthTooltip parameter, you can control whether to display the column width tooltip. The default value is false", - "WidthButtonText1": "Details", - "WidthButtonText2": "Edit", - "WidthButtonText3": "Permissions", - "WidthButtonText4": "Approval", - "WidthConfirmButtonText": "Confirm", - "CustomerButtonTitle": "Custom button processing method", - "CustomerButtonContent": "The button processing logic is distinguished by different functions. The parameter Items is the selected row data collection in the Table component, and the currently selected data is {0}", - "OnRowButtonClickContent": "The button processing logic is distinguished by different functions, and the parameter Item is the current row data" + "BootstrapBlazor.Server.Components.Samples.OtpInputs": { + "OtpInputsDescription": "A secure verification password box based on OTP (One-Time Password) that is limited to one-time use and has a time limit", + "OtpInputsNormalIntro": "Control the password type or length by setting parameters such as Type", + "OtpInputsNormalTitle": "Basic usage", + "OtpInputsTips": "OTP (One Time Password, abbreviated as OTP): This is a security measure used to generate a unique password for each login or transaction. This component is used in conjunction with ITotpService IHotpService to greatly improve security.", + "OtpInputsTitle": "OtpInput", + "OtpInputsValidateFormIntro": "When the password is not provided, click the Submit button, the password box will be displayed in red and it will be prompted that it cannot be empty.", + "OtpInputsValidateFormTitle": "ValidateForm" }, - "BootstrapBlazor.Server.Components.Samples.Table.TablesColumnList": { - "TablesColumnTitle": "Table Column", - "TablesColumnDescription": "Used to display multiple pieces of data with similar structures, data can be sorted, filtered, compared or other custom operations.", - "ShownWithBreakPointTitle": "Automatically show/hide columns based on screen width", - "ShownWithBreakPointIntro": "Set whether to display at different widths by specifying the ShownWithBreakPoint attribute", - "ShownWithBreakPointP1": "ShownWithBreakPoint enumeration value: ", - "ShownWithBreakPointLi1": "None is displayed if not set", - "ShownWithBreakPointLi2": "Small is displayed when the screen is greater than or equal to 576px", - "ShownWithBreakPointLi3": "Medium is displayed when the screen is greater than or equal to 768px", - "ShownWithBreakPointLi4": "Large is displayed when the screen is greater than or equal to 992px", - "ShownWithBreakPointLi5": "ExtraLarge is displayed when the screen is greater than or equal to 1200px", - "ShownWithBreakPointP2": "In this example, the Count column is set to BreakPoint.Large, that is, the screen will only be displayed when it is larger than 992px", - "ShownWithBreakPointP3": "Note:", - "ShownWithBreakPointP4": "Because the Table component supports mobile adaptation by default, the card mode is used for small screens. In this example, the explicit setting uses RenderMode=\"TableRenderMode. Table\" mode", - "VisibleTitle": "Custom show/hide columns", - "VisibleIntro": "Set whether the column is displayed by specifying the ShowColumnList attribute", - "VisibleP1": "ShowColumnList The default value is false, and if it is explicitly specified as true, the corresponding column adjustment button will appear in the toolbar", - "VisibleP2": "TableColumn adds the Visiable property, its default value is true, this column will not be displayed when the display is set to false", - "VisibleP3": "In this example, the quantity column is not displayed by setting Visible, and it can be displayed through the column control button", - "VisibleP4": "Trigger the OnColumnVisibleChanged callback when switch the column state Show/Hide", - "ResetVisibleColumnsButtonText": "Set Columns", - "ResetVisibleColumnsDesc": "Call the instancel method ResetVisibleColumns of Table for set the multiple columns visible value", - "ShowColumnListControlsDesc": "The ShowColumnListControls setting controls whether the column dropdown list displays control buttons. The built-in control buttons are All and Invert." + "BootstrapBlazor.Server.Components.Samples.OtpServices": { + "BaseUsageIntro": "By calling the Compute method of the ITotpService service instance, you can get the password in the current time window. By calling the Instance.GetRemainingSeconds method, you can display the remaining validity time of the current password. In this example, the progress bar is used for dynamic display.", + "BaseUsageTitle": "Basic usage", + "SubTitle": "An implementation TOTP RFC 6238 and HOTP RFC 4226 Authenticator service.", + "Title": "ITotpService" }, - "BootstrapBlazor.Server.Components.Samples.Table.TablesColumnTemplate": { - "TablesColumnTitle": "Table Column", - "TablesColumnDescription": "Used to display multiple pieces of data with similar structures, data can be sorted, filtered, compared or other custom operations.", - "TableColumnTitle": "Custom Column Data Template", - "TableColumnIntro": "Customize the Template template of the TableColumn column to implement any UI", - "TableColumnP1": "In this example, the column DateTime value is displayed in different colors depending on whether the Complete value is true", - "TableColumnP2": "In this example, the column Complete is displayed as a Checkbox component according to the value of Complete", - "TableColumnP3": "Template template comes with Context associated context, its value is of type TableColumnContext", - "TableColumnLi1": "Value is the data value of the currently bound column", - "TableColumnLi2": "Row is the data value of the row where the currently bound column is located", - "TemplateTitle": "Custom Column Template", - "TemplateIntro": "By specifying Template set the last column to display as a custom button", - "AutoGenerateColumnsTitle": "Auto Generate Columns", - "AutoGenerateColumnsIntro": "By specifying the AutoGenerateColumns property value as true, enable the function of automatically generating column information based on the binding model", - "AutoGenerateColumnsP1": "In this example, by setting the value of AutoGenerateColumns to true, the automatic column generation function is enabled. All attributes of the bound model entity class are all generated by default. code>AutoGenerateColumnAttribute
    tag class for function settings, such as: ", - "AutoGenerateColumnsLi1": "Ignore means ignore this property, i.e. not generate", - "AutoGenerateColumnsLi2": "Readonly means read only", - "AutoGenerateColumnsLi3": "For more attributes, see Source code", - "AutoGenerateColumnsP2": " In this example the date column is formatted through the [AutoGenerateColumn(Order = 1, FormatString = \"yyyy-MM-dd\")] tag; Set the template column in the code to customize the Complete column and use the Switch component to render; through the [AutoGenerateColumn(Order = 10)] tag in the Order set the display order", - "TableTemplateTips": "Special attention: When using the Template, practical application scenarios often encounter situations where several or more columns need to be linked. In this case, directly placing the linked components into the EditTemplate cannot complete the linkage. The correct approach is to separate the small components that need to be linked into a separate component and complete the linkage within this component" + "BootstrapBlazor.Server.Components.Samples.Paginations": { + "PaginationsAlignmentIntro": "Set Alignment contorl the pagination alginment", + "PaginationsAlignmentTitle": "Alignment", + "PaginationsDescription": "When there is too much data, use paging to break down the data.", + "PaginationsDisplayTextIntro": "Only one page does not display the switch page number component, only text prompts", + "PaginationsDisplayTextTitle": "Only text prompts are displayed", + "PaginationsGotoIntro": "Set ShowGotoNavigator show/hide the Goto,can GotoTemplate custom the Goto navigator", + "PaginationsGotoTitle": "Goto navigator", + "PaginationsInfoTemplateIntro": "Set PageInfoTemplate curstom the template of page info", + "PaginationsInfoTemplateTitle": "Pager info template", + "PaginationsInfoTotal": "Total 20 pages", + "PaginationsMaxPageLinkCountIntro": "By ShowPaginationInfo = 'false' setting does not display text prompts", + "PaginationsMaxPageLinkCountTitle": "Only paginated components are displayed", + "PaginationsNormalIntro": "You can select the amount of data displayed per page by the drop-down box", + "PaginationsNormalTitle": "Basic usage", + "PaginationsPageInfoTextIntro": "Set ShowInfo show/hide the pager info", + "PaginationsPageInfoTextTitle": "Pager info", + "PaginationsTitle": "Pagination" }, - "BootstrapBlazor.Server.Components.Samples.Table.TablesEdit": { - "TablesEditTitle": "Table", - "TablesEditDescription": "Commonly used in single table maintenance, simple addition, deletion, modification, search, sorting, filtering, search and other common functions can be realized through attribute configuration, and very complex business requirements can be realized through advanced usage of Template", - "TablesEditItemsTitle": "Use collection as data source to realize editing function", - "TablesEditItemsIntro": "Set Items as the data source, without setting OnSaveAsync OnDeleteAsync callback delegate to use built-in processing logic to update and delete functions", - "TablesEditItemsDescription": "Setting Items as the data source eliminates the need to set OnSaveAsync OnDeleteAsync callback delegates to use built-in processing logic for updates and deletes. Meanwhile, it should be noted that the [Key] tag of the Foo attribute of the class instance Foo of the generic constraint of TItem should be configured correctly; The `IsGroupExtendButtons` parameter controls whether the inline function buttons are displayed in a group. The default is `true`.", - "TablesEditTemplateTitle": "Tables with single table maintenance", - "TablesEditTemplateIntro": "Set ShowSearch to show the query component", - "TablesEditTemplateDescription": "In this example, the right alignment of Count is set, the Complete column is set to center alignment, and the Boolean column is automatically rendered as a Switch component", - "TablesEditTemplateDisplayLabel": "Detail", - "TablesEditTemplateDisplayDetail1": "Detail 1", - "TablesEditTemplateDisplayDetail2": "Detail 2", - "TablesEditOnAddAsyncTitle": "Automatically generate tables for single table maintenance function", - "TablesEditOnAddAsyncIntro": "When the OnAddAsync or OnSaveAsync callback delegate method is set, if the EditTemplate is not set to edit the template, the component will try to automatically generate the form maintenance UI", - "TablesEditOnAddAsyncDescription": "Client-side validation can be achieved by setting validation tags such as [Required] of the Foo attribute of the class instance Foo of the generic constraint of TItem", - "TablesEditOnAddAsyncTips1": "When the data binding type is a nullable type, it is automatically allowed to be null, such as the date binding column is of type DateTime?", - "TablesEditOnAddAsyncTips2": "When the data binding type is a numerical type, for example, if the quantity binding column is of type int, numerical verification is performed automatically", - "TablesEditOnAddAsyncTips3": "Some data columns presented in the table are calculated results. This type of column cannot be edited. By setting Ignore=true to automatically generate the editing UI, the editing component of this column will not be generated, such as In this example, the Count column does not appear in the edit popup", - "TablesEditOnAddAsyncTips4": "By setting Readonly=true to automatically generate editing UI, this field will be read-only, please assign the default value to Model when creating a new one", - "TablesEditOnAddAsyncTips5": "Make the extension buttons appear in front of the row by setting IsExtendButtonsInRowHeader=true", - "TablesEditOnAddAsyncTips6": "Make the edit popup draggable by setting EditDialogDraggable='true'", - "TablesColumnEditTemplateTitle": "Custom column editing template", - "TablesColumnEditTemplateIntro": "When the EditTemplate of the column is set, the component automatically generates the form maintenance UI using this template as the rendered UI; Hobby is listed as a custom component DemoHobbyTemplate and is rendered using a multi-select box component", - "TablesColumnEditTemplateDescription1": "Use the drop-down box to select the name when custom editing by setting the EditTemplate of the name column", - "TablesColumnEditTemplateTips": "In this example, Name is listed as a custom component TableNameDrop, which defaults to please select ... when creating a new one", - "TablesEditModeTitle": "set edit mode", - "TablesEditModeIntro": "By setting the EditMode property of the table, set the component to edit the row data in the pop-up window or edit the data in the row", - "TablesEditModeDescription": "EditMode is an enumeration type and its values ​​are: Popup EditForm InCell Its default value is Popup pop-up window to edit row data", - "TablesEditModeTips1": "In this example, the data source Items is set as two-way binding, which is especially suitable for parent-child table entry. You can directly use the data source when saving.", - "TablesEditModeTips2": "EditForm Pattern example", - "TablesEditInjectDataServiceTitle": "Using the inject data service", - "TablesEditInjectDataServiceIntro": "When the data operation callback method is not provided, the component automatically finds the registered data service to add, delete, modify and check the data.", - "TablesEditDataServiceTitle": "Use custom data services", - "TablesEditDataServiceIntro": "By setting the DataService attribute of the table, use an independent data service to add, delete, modify and check data", - "TablesEditDataServiceDescription": "custom data service", - "TablesEditDataServiceTips1": "After enabling the use of the injected data service, you can set the component individually by setting the DataServices parameter, if the instance provided by the internal use of the injected service is not set", - "TablesEditDataServiceTips2": "In this example, by setting the EditDialogShowMaximizeButton parameter, the Maximize button is displayed in the edit pop-up window", - "TablesEditFooterTemplateTitle": "Custom button in EditDialog footer", - "TablesEditFooterTemplateIntro": "Set EditFooterTemplate custom button in EditDialog Footer", - "TablesEditFooterTemplateDescription": "Click the Edit button in the table to pop up the Edit pop-up window. The buttons in the pop-up window Footer are user-defined buttons. In order to keep the functions of the original Close and Save buttons while facilitating the second opening, two corresponding components DialogCloseButton DialogSaveButton These two buttons do not need to write the click related processing methods", - "TablesEditModeAddModalTitle": "Add test data window", - "TablesEditModeEditModalTitle": "Edit Test Data Window", - "TablesEditModeInCell": "InCell Pattern example", - "TablesEditModeDrawer": "Drawer Pattern example", - "TablesEditShowSearchPlaceHolderString": "Cannot be empty, within 50 characters", - "TablesEditInjectDataServiceDescription": "The database operations of adding, deleting, modifying and checking are performed by registering the data service without assigning the following callback delegates. The priority level is that the callback method is called first if there is a callback method.", - "TablesEditInjectDataServiceTips1": "Startup file injects data service", - "TablesEditInjectDataServiceTips2": "Implementation principle and usage introduction", - "TablesEditInjectDataServiceTips3": "custom data service", - "TablesEditInjectDataServiceTips4": "After enabling the use of the injected data service, you can set the component individually by setting the DataServices parameter, if the instance provided by the internal use of the injected service is not set", - "TablesVisibleTitle": "Editor Visible/Hidden", - "TablesVisibleIntro": "If the IsVisibleWhenAdd or IsVisibleWhenEdit property is set to false, hide this column when creating or updating. In this example, the New pop-up window does not display Count Edit Pop up window does not display Complete edit the item", - "TablesReadonlyColumnTitle": "Readonly Column", - "TablesReadonlyColumnIntro": "By setting Field and FieldName", - "TablesReadonlyColumnDescription": "Corresponding database calculated columns, or model read-only attributes", - "TablesReadonlyColumnTips1": "Do not write @bind-Field. Read-only columns cannot be entered when Add or Edit", - "TablesReadonlyColumnTips2": "The old version needs to write the complete code as follows", - "TablesTemplateColumnTitle": "TemplateColumn", - "TablesTemplateColumnIntro": "By using TableTemplateColumn instead of TableColumn component, you can avoid binding model.", - "TablesTemplateColumnDescription": "The title display text is set by setting the Text property, and the cell display content is set by Template. The template context is a TableColumnContext instance. The current row model instance can be obtained through @v.Row. Template columns do not participate in data editing functions such as New and Edit.", - "TableTemplateColumnText": "Template" + "BootstrapBlazor.Server.Components.Samples.PdfReaders": { + "PdfDescription": "Embed and display PDF documents directly in web pages without relying on a PDF reader installed locally by the user.", + "PdfReaderDownloadFileNameDesc": "You can set the download file name by configuring the parameter DownloadFileName.", + "PdfReaderFAIconDesc": "The PdfReader component icon depends on the BootstrapBlazor.FontAwesome package. You need to reference the following styles; otherwise, the toolbar icon will not display.", + "PdfReaderNormalIntro": "Set the PDF file address using the Url parameter, or specify the file stream to be rendered using the OnGetStreamAsync parameter.", + "PdfReaderNormalText": "Basic usage", + "PdfReaderSetPdfStreamDesc": "Rendering can be performed by calling the instance method SetPdfStreamAsync or SetPdfBase64DataAsync.", + "PdfTitle": "PDF Reader" }, - "BootstrapBlazor.Server.Components.Samples.Table.TablesVirtualization": { - "TablesVirtualizationTitle": "Table virtual scroll row", - "TablesVirtualizationDescription": "When the Table component displays large data, it usually uses paging to load data. There is also a virtual row technology similar to the automatic loading of data in the background when the mobile phone scrolls to the bottom.", - "VirtualizationNormalTitle": "Normal use", - "VirtualizationNormalIntro": "Background on-demand loading when scrolling data without paging", - "VirtualizationNormalDescription": "

    Need to set ScrollMode Height RowHeight PageItems parameters to set virtual scrolling

    ", - "TablesFooterFixedLabel": "Fixed Footer", - "TablesFooterInfo": "Count:", - "TablesFooterFixedText": "Fixed", - "TablesFooterNotFixedText": "Stack", - "VirtualizationDynamicTitle": "Get data dynamically", - "VirtualizationDynamicIntro": "Background on-demand loading when scrolling data without paging", - "VirtualizationDynamicDescription": "Display row placeholders when scrolling quickly to improve user experience" + "BootstrapBlazor.Server.Components.Samples.PdfViewers": { + "PdfViewerDescription": "Open the PDF file in the component to read its contents", + "PdfViewerNormalIntro": "Load a PDF file by setting the Url parameter. Set UseGoogleDocs to use docs.google.com preview", + "PdfViewerNormalTitle": "Basic usage", + "PdfViewerTitle": "PDFViewer", + "PdfViewerToastNotSupportContent": "The browser does not support inline viewing of PDF files.", + "PdfViewerToastSuccessfulContent": "PDF document loaded successfully." }, - "BootstrapBlazor.Server.Components.Samples.Table.TablesLoading": { - "TablesLoadingTitle": "Display data loading function", - "TablesLoadingDescription": "When calling the remote data interface, there may be a delay due to network reasons, you can use the display loading function to shield", - "TablesLoadingShowLoadingTitle": "Basic usage", - "TablesLoadingShowLoadingIntro": "Just set ShowLoading", - "TablesLoadingShowSkeletonTitle": "Skeleton screen", - "TablesLoadingShowSkeletonIntro": "Set ShowSkeleton to", - "TablesLoadingShowLoadingInFirstRenderTitle": "Turn off loading animation", - "TablesLoadingShowLoadingInFirstRenderIntro": "Just set ShowLoadingInFirstRender" + "BootstrapBlazor.Server.Components.Samples.Players": { + "PlayersAudioIntro": "Play audio files by setting Mode=\"PlayerMode.Audio\"", + "PlayersAudioTitle": "Audio Player", + "PlayersDescription": "A simple, accessible and customisable media player for Video, Audio, YouTube and Vimeo", + "PlayersHlsIntro": "Enable Hls support by setting IsHls=\"true\"", + "PlayersHlsTitle": "HLS", + "PlayersNormalIntro": "The callback method OnInitAsync sets the configuration instance PlayerOption required by the component. The player is set through the PlayerOption property value.", + "PlayersNormalTitle": "Basic usage", + "PlayersTips": "Player supports VideoAudioYoutube and Vimeo", + "PlayersTitle": "Player", + "PlayersVimeoIntro": "Play Vimei videos by setting Mode=\"PlayerSources\" parameter Provider=\"vimeo\"", + "PlayersVimeoTitle": "Vimeo", + "PlayersYouTubeIntro": "Play YouTube videos by setting the Mode=\"PlayerSources\" parameter Provider=\"youtube\"", + "PlayersYouTubeTitle": "YouTube" }, - "BootstrapBlazor.Server.Components.Samples.Table.TablesTree": { - "TablesTreeTitle": "Table tree data display", - "TablesTreeDescription": "The table supports the display of tree data", - "TablesTreeTip_title": "Control whether it is tree data through the IsTree parameter", - "TablesTreeTip_note1": "Tree-structure conversion of datasets through TreeNodeConverter", - "TablesTreeTip_note2": "Set TableTreeNode its IsExpand parameter to control whether the current child node is expanded", - "TablesTreeTip_note3": "When clicking the child item expansion arrow, the child item data is obtained through the OnTreeExpand callback delegate method", - "TablesTreeTip_note4": "Maintain line state fallback mechanism, ModelEqualityComparer CustomKeyAttribute IEqualityComparer<TItem> Equals overloaded method", - "TablesTreeStep1": "Step 1: Set IsTree to true", - "TablesTreeStep2": "Step 2: Set Items or OnQueryAsync to get component data collection", - "TablesTreeStep3": "Step 3: Set TreeNodeConverter to convert the component data collection into a tree structure", - "TablesTreeStep4": "Step 4: Set the OnTreeExpand callback delegate to expand the response line to get the child item data set", - "TablesTreeDataTitle": "tree data display", - "TablesTreeDataIntro": "Open the tree table by setting IsTree", - "TablesTreeLevelTitle": "Hierarchical indentation", - "TablesTreeLevelIntro": "Control the indent width of each layer by setting IndentSize .", - "TablesTreeLevelTips1": "The default level indent width is 16px by setting Indent to change the indent width", - "TablesTreeLevelTips2": "In this example change the indent width to 8px", - "TablesTreeEditTitle": "Tree data with single table maintenance", - "TablesTreeEditIntro": "Realize simple addition, deletion, modification and checking functions.", - "TablesTreeIconTitle": "icon", - "TablesTreeIconIntro": "Change the little arrow icon that indicates by setting TreeIcon", - "TablesTreeIconTips1": "The default level indent width is 16px by setting Indent to change the indent width", - "TablesTreeIconTips2": "In this example change the indent width to 8px" + "BootstrapBlazor.Server.Components.Samples.PopoverConfirms": { + "PopoverConfirmsBodyTemplateButtonText": "Customize content", + "PopoverConfirmsBodyTemplateIntro": "Customize the content by setting the BodyTemplate property", + "PopoverConfirmsBodyTemplateTitle": "Customize the PopConfirmButton content", + "PopoverConfirmsContentDelete": "Delete confirmation button", + "PopoverConfirmsContentDeleteContent": "Are you sure you want to delete the data?", + "PopoverConfirmsContentIntro": "Change the text displayed in the confirmation popup by setting the Content attribute", + "PopoverConfirmsContentTitle": "Content Change the text displayed in the confirmation popup", + "PopoverConfirmsCustomClassCustomButtonContent": "Are you sure you want to delete the data?", + "PopoverConfirmsCustomClassCustomButtonText": "custom style button", + "PopoverConfirmsCustomClassIntro": "Set the CssClass custom component style", + "PopoverConfirmsCustomClassTitle": "custom style", + "PopoverConfirmsDescription": "Click on the element to pop up a bubble confirmation box.", + "PopoverConfirmsFormIntro": "By setting the ButtonType property value to ButtonType.Submit, the confirmation button is clicked to perform asynchronous form data submission", + "PopoverConfirmsFormSubmitFormContent": "Are you sure you want to submit data?", + "PopoverConfirmsFormSubmitFormText": "submit Form", + "PopoverConfirmsFormTitle": "form submission", + "PopoverConfirmsIsAsyncConfirmationContent": "Are you sure you want to delete the data?", + "PopoverConfirmsIsAsyncConfirmationText": "Asynchronous confirmation", + "PopoverConfirmsIsAsyncIntro": "By setting the IsAsync attribute, the data is submitted asynchronously when the confirm button is clicked. In some specific scenarios, the button needs to remain disabled after asynchronous operation. Please control this using the IsKeepDisabled parameter.", + "PopoverConfirmsIsAsyncTitle": "Asynchronous confirmation", + "PopoverConfirmsIsLinkHyperLinkContent": "Are you sure you want to delete the data?", + "PopoverConfirmsIsLinkHyperLinkText": "i am hyperlink", + "PopoverConfirmsIsLinkIntro": "By setting the IsLink attribute the component uses the A tag to render", + "PopoverConfirmsIsLinkTitle": "hyperlink button", + "PopoverConfirmsNormalIntro": "The attributes of PopConfirm are very similar to Popover, so for repeated attributes, please refer to the attributes of Popover documentation, which is not explained in detail in this document.", + "PopoverConfirmsNormalLeftPopup": "left popup", + "PopoverConfirmsNormalLeftPopupContent": "Is this a piece of content sure to delete?", + "PopoverConfirmsNormalPopupAbove": "popup above", + "PopoverConfirmsNormalPopupAboveContent": "Are you sure you want to delete a piece of content?", + "PopoverConfirmsNormalPopupBoxContent": "Is this a piece of content sure to delete?", + "PopoverConfirmsNormalPopupBoxText": "pop-up box below", + "PopoverConfirmsNormalRightPopup": "right popup", + "PopoverConfirmsNormalRightPopupContent": "Is this a piece of content sure to delete?", + "PopoverConfirmsNormalTitle": "Basic usage", + "PopoverConfirmsShowButtonsButtonText": "Custom Component", + "PopoverConfirmsShowButtonsDesc": "In a custom component, you can call the Close or Confirm method inside the component through cascading parameters", + "PopoverConfirmsShowButtonsIntro": "By setting ShowCloseButton=\"false\" ShowConfirmButton=\"false\", you don't display the built-in function buttons, and customize an Approve button in the custom component.", + "PopoverConfirmsShowButtonsTitle": "Custom Component", + "PopoverConfirmsTitle": "PopConfirm bubble check box", + "PopoverConfirmsTriggerIntro": "By setting the Trigger parameter, you can set the way the component pops up the confirmation box. The default value is click. You can also set hover focus to use in combination.", + "PopoverConfirmsTriggerTitle": "Trigger" + }, + "BootstrapBlazor.Server.Components.Samples.Popovers": { + "PopoversButtonButtonText": "Click to activate/deactivate", + "PopoversButtonIntro": "Popover pop-up box pops up after clicking the button", + "PopoversButtonTitle": "button activates popup", + "PopoversCssClassButtonText": "Click to activate/deactivate", + "PopoversCssClassDescription": "set up Popover parameter CssClass=\"custom-popover\" make custom styles", + "PopoversCssClassIntro": "Customize the pop-up window by setting the Popover parameter CssClass", + "PopoversCssClassTitle": "custom style", + "PopoversDescription": "Click/mouse into the element to pop up a bubble-like card overlay", + "PopoversManualDescLI1": "The child component uses the cascade parameters to get the Popover instance and then calls its methods Show Hide Toggle", + "PopoversManualDescLI2": "Get the Popover instance through @ref and call its instances method", + "PopoversManualIntro": "Use code to control the popover state by setting Trigger=\"manual\"", + "PopoversManualTitle": "Manual", + "PopoversNormalIntro": "Click the text input box to pop up the Popover pop-up box, Placement set the position of the pop-up box, close the pop-up box when clicking the second time", + "PopoversNormalTitle": "Basic usage", + "PopoversTemplateButtonText": "Template", + "PopoversTemplateIntro": "Customize the pop-up content by setting the Template template", + "PopoversTemplateTitle": "Custom Template", + "PopoversTemplateTitleText": "Custom Template", + "PopoversTitle": "Popover popup component" }, - "BootstrapBlazor.Server.Components.Samples.Table.TablesWrap": { - "TablesWrapTitle": "Table wrapping example", - "TablesWrapDescription": "When the content of the header or the cell in the row is too long, the effect of omitting, wrapping, etc. can be realized by changing the style", - "TablesWrapTip": "Note:Because the Table component has realized the function of adapting to the mobile terminal, this demo needs to be viewed on the computer side", - "TablesWrapNormalTitle": "Example of super long header", - "TablesWrapNormalIntro": "In some special cases, the header may be relatively long, and the header needs to be controlled within a fixed width. When the mouse moves over the header, Tooltip is displayed to display the complete header information.", - "TablesWrapNormalDescription": "You can drag the window size, and the horizontal scroll bar will automatically appear when the window is too small", - "TablesWrapHeaderTextWrapTitle": "The header is too long to wrap", - "TablesWrapHeaderTextWrapIntro": "Wrap the super long header by setting HeaderTextWrap", - "TablesWrapHeaderTextWrapDescription": "You can drag the window size. When the window is too small, the horizontal scroll bar will automatically appear, and the header will automatically wrap.", - "TablesWrapLongDataTitle": "Example of extra-long wrapping of cell data", - "TablesWrapLongDataIntro": "In some special cases, the cell content may be long and need to be wrapped", - "TablesWrapLongDataTips1": "You can drag the window size, the address column will be automatically wrapped when the window is too small", - "TablesWrapLongDataTips2": "Enable word wrapping by setting TextWrap", - "TablesWrapLongDataTips3": "Note: It is recommended to use Width to set the column width", - "TablesWrapDataResizingTitle": "Example of over-length omission of cell data", - "TablesWrapDataResizingIntro": "In some special cases, the content of the cell may be relatively long, and it needs to be omitted.", - "TablesWrapDataResizingTips1": "You can drag the window size, and the address column will be automatically omitted if the window is too small", - "TablesWrapDataResizingTips2": "Enable text ellipsis by setting TextEllipsis", - "TablesWrapDataResizingTips3": "Note: It is recommended to use Width to set the column width. If the column width is not set, it will automatically use 200px width inside", - "TablesWrapDataResizingTips4": "After the text in the cell is omitted, you can use the ShowTips property to control whether to display all the text on mouse hover, the default is false, You can customize the display content of Tooltip by setting the GetTooltipTextCallback callback method", - "TablesWrapDataResizingTips5": "Drag the address column, the cell display content will automatically increase and decrease", - "TablesWrapCustomCellTitle": "Custom in-cell typography", - "TablesWrapCustomCellIntro": "Use templates for special layout of in-cell data", - "TablesWrapNormalColumHeaderText_DateTime": "I'm a super long schedule head", - "TablesWrapNormalColumHeaderText_Name": "I am a super long name header", - "TablesWrapNormalColumHeaderText_Address": "I am a super long address header", - "TablesWrapHeaderTextWrapColumHeaderText_DateTime": "I'm a super long schedule head", - "TablesWrapHeaderTextWrapColumHeaderText_Name": "I am a super long name header", - "TablesWrapHeaderTextWrapColumHeaderText_Address": "I am a super long address header", - "TablesWrapLongDataColumHeaderText_DateTime": "Time", - "TablesWrapLongDataColumHeaderText_Name": "Name", - "TablesWrapLongDataColumHeaderText_Address": "Address", - "TablesWrapDataResizingColumHeaderText_DateTime": "time", - "TablesWrapDataResizingColumHeaderText_Name": "Name", - "TablesWrapDataResizingColumHeaderText_Address": "Address", - "TablesWrapCustomCellColumHeaderText_DateTime": "time", - "TablesWrapCustomCellColumHeaderText_Name": "Name", - "TablesWrapCustomCellColumHeaderText_Address": "Address", - "TablesWrapCustomCellTemplate_State": "state", - "TablesWrapCustomCellTemplate_Time": "time" + "BootstrapBlazor.Server.Components.Samples.Print": { + "PrintButtonIntro": "Print the page by clicking the print button", + "PrintButtonTitle": "Basic usage", + "PrintDialogIntro": "Turn on printing by setting up the ShowPrint", + "PrintDialogTitle": "Print the bullet window", + "PrintsButtonDescription": "After clicking the print button below, a new page pops up for print preview, confirms that it is correct, and then clicks the print button in the print preview page for printer selection", + "PrintsButtonText": "Print", + "PrintsDialogTitle": "The data query window", + "PrintServiceIntro": "By setting up the content components to print, call the print service directly print jobs. Printing Service PrintService Service Document [Portal]", + "PrintServiceTitle": "Print service", + "PrintsSubTitle": "Used to print a document or a local view", + "PrintsTips1": "Set up PreviewUrl, open a new page for print preview and click the print button on this page for page printing", + "PrintsTips2": "If you are printing a button in the Dialog component when you do not set the PreviewUrl, the pop-up contents are printed", + "PrintsTitle": "Print" }, - "BootstrapBlazor.Server.Components.Samples.Table.TablesTracking": { - "TablesTrackingTitle": "Table table", - "TablesTrackingDescription": "Applicable to application scenarios where parent and child tables are submitted together", - "TablesTrackingNormalTitle": "tracking mode", - "TablesTrackingNormalIntro": "Set IsTracking with Items without setting OnSaveAsync and other callback methods", - "TablesTrackingNormalTips1": "The prompt information of the Save Delete button can be turned off by setting ShowToastAfterSaveOrDeleteModel='false'", - "TablesTrackingNormalTips2": "All data editing in this mode edits the original data and updates the data source through bind-Items, so no Cancel button is provided" + "BootstrapBlazor.Server.Components.Samples.Progress": { + "ProgressBindingIntro": "Bind data", + "ProgressBindingTitle": "Two-way binding data", + "ProgressColorIntro": "Set the progress bar color", + "ProgressColorTitle": "Progress bar with color", + "ProgressDecimalsIntro": "Adjust the number of decimal places by setting the Round parameter, which defaults to 0. Adjust the rounding mode by setting the MidpointRoundingparameter, which defaults to MidpointRounding. AwayFromZero rounding", + "ProgressDecimalsTitle": "Decimals", + "ProgressDescription": "Used to display the progress of the operation, inform the user of the current status and expectations", + "ProgressDisplayValueIntro": "Set the progress bar value display through IsShowValue", + "ProgressDisplayValueTitle": "Display value", + "ProgressDynamicIntro": "Set the dynamic display of the progress bar through IsAnimated", + "ProgressDynamicTitle": "Whether to display dynamically", + "ProgressHeightIntro": "Set the progress bar height via Height", + "ProgressHeightTitle": "Set the progress bar height", + "ProgressNormalIntro": "Common progress bar", + "ProgressNormalTitle": "Progress bar component", + "ProgressStripeIntro": "Set the stripe setting of the progress bar via IsStriped", + "ProgressStripeTitle": "Whether to show stripes", + "ProgressTitle": "Progress progress bar" }, - "BootstrapBlazor.Server.Components.Samples.Table.TablesFooter": { - "TablesFooterTitle": "Table Footer", - "TablesFooterDescription": "For statistics", - "TablesFooterStatisticsTitle": "Statistics example", - "TablesFooterStatisticsIntro": "Set ShowFooter=true to show Footer custom total function, fixed the footer by set IsFixedFooter", - "TablesFooterStatisticsTips1": "The Table component has a TableFooter template whose data context is the data collection of the Table component IEnumerable<TItem>", - "TablesFooterStatisticsTips2": "The associated context in the TableFooter template context is the current page data collection", - "TablesFooterStatisticsTips3": "The content of the cell td can be customized in the TableFooter template, or the built-in TableFooterCell component can be used for data display", - "TablesFooterTemplateTitle": "Footer template", - "TablesFooterTemplateIntro": "Set FooterTemplate to customize the content displayed at the bottom of the table", - "TablesFooterTemplateDescription": "Footer is displayed by default when there is no data. You can hide Footer by setting the @nameof(Table.IsHideFooterWhenNoData) parameter", - "TablesFooterStatisticsTotal": "Total:", - "TablesFooterTemplateSentences": "Here you can write some descriptive sentences", - "TablesFooterTemplateTotal": "Total:" + "BootstrapBlazor.Server.Components.Samples.PulseButtons": { + "Block1Intro": "The underlying button usage.", + "Block1Title": "Basic usage", + "PulseButtonHeader": "PulseButton (heartbeat) button", + "PulseButtonPara": "It is suitable for highlighting function to attract users' attention. The default button is circular", + "PulseButtonPara2": "The heartbeat button component is inherited from the button, so a heartbeat ring is added on the basis of the original function of the button. Please refer to the switch style button in the lower right corner of the website." }, - "BootstrapBlazor.Server.Components.Samples.Table.TablesAutoRefresh": { - "TablesAutoRefreshTitle": "Auto Refresh table", - "TablesAutoRefreshDescription": "In a certain application scenario, the change of the data source needs to refresh the table component", - "TablesAutoRefreshNormalTitle": "Auto Refresh", - "TablesAutoRefreshNormalIntro": "This example demonstrates monitoring the data source in a background thread, and notifies the table component to refresh the data when the data source changes", - "TablesAutoRefreshNormalTips1": "The auto refresh function is enabled by setting the value of the IsAutoRefresh property. The default value of the AutoRefreshInterval property is 2000 milliseconds, which is the auto refresh interval, and the component's QueryAsync is called periodically. The method makes the table auto-refresh", - "TablesAutoRefreshNormalTips2": "In this example, a new piece of data is added every 2 seconds and a maximum of 10 pieces of data are maintained", - "TablesAutoRefreshControlTitle": "Control whether to update automatically by setting a variable", - "TablesAutoRefreshControlIntro": "This example controls whether to automatically update by setting a variable", - "TablesAutoRefreshControlDescription": "Enable/disable automatic update function by clicking the button", - "TablesAutoRefreshControlToggleAuto": "Change Auto", - "TablesAutoRefreshControlIsAutoRefresh": "The current value" + "BootstrapBlazor.Server.Components.Samples.QRCodes": { + "ClearText": "QR code clear successfully", + "QRCodesColorIntro": "DarkColor set the black color,LightColor set the white color", + "QRCodesColorTitle": "Color", + "QRCodesContentIntro": "Specify the contents of the QR code with the Content parameter", + "QRCodesContentTitle": "Direct build", + "QRCodesNormalIntro": "Click the Generate button to generate a QRCode", + "QRCodesNormalTitle": "Basic usage", + "QRCodesSubTitle": "Generate QR code", + "QRCodesTitle": "QRCode", + "QRCodesWidthIntro": "Width of the QRCode", + "QRCodesWidthTitle": "Size", + "SuccessText": "QR code generated successfully" }, - "BootstrapBlazor.Server.Components.Samples.Table.TablesSelection": { - "TablesSelectionTitle": "Table Selection", - "TablesSelectionDescription": "Set the table row state by setting SelectedRows, and set the highlight by selecting the style", - "TablesSelectionNormalTitle": "Set row selection function", - "TablesSelectionNormalIntro": "Defaults to the selected state when the table is initialized by setting the SelectedRows property collection", - "TablesSelectionNormalTips": "Maintain line state fallback mechanism, ModelEqualityComparer CustomKeyAttribute IEqualityComparer<TItem> Equals overloaded method", - "TablesSelectionNormalSelectRow": "selected row record", - "TablesSelectionNormalButtonText": "clear selection", - "TablesSelectionKeepInfo": "Keep State:", - "TablesSelectionKeepOnText": "Keep", - "TablesSelectionKeepOffText": "No keep", - "TablesSelectionCountText": "Count:{0}", - "TablesSelectionScrollTitle": "Callback method after rendering", - "TablesSelectionScrollIntro": "Perform some special operations by setting the OnAfterRenderCallback callback method", - "TablesSelectionScrollDescription": "After clicking the button, select the last row and automatically scroll the selected row to the visible area of the window. This code is an example, and this function can be enabled by setting AutoScrollLastSelectedRowToView=\"true\", Set the alignment via the AutoScrollVerticalAlign parameter", - "TablesSelectionScrollButtonText": "Select Last Row" + "BootstrapBlazor.Server.Components.Samples.QueryBuilders": { + "QueryBuilderHeaderIntro": "Turn off the control button by setting ShowHeader=\"false\"", + "QueryBuilderHeaderTitle": "Display control buttons", + "QueryBuilderNormalIntro": "Build filter conditions directly in the Razor file through QueryGroup QueryColumn", + "QueryBuilderNormalTitle": "Basic usage", + "QueryBuilderSubTitle": "Can be used for generating forms and table filtering conditions", + "QueryBuilderTitle": "QueryBuilder" }, - "BootstrapBlazor.Server.Components.Samples.Table.TablesExcel": { - "TablesExcelTitle": "Table Excel", - "TablesExcelDescription": "Commonly used for large data sheet maintenance", - "TablesExcelOnQueryTitle": "binding collection", - "TablesExcelOnQueryIntro": "Get data collection through OnQueryAsync callback", - "TablesExcelTips": "When using the List<TItem> generic collection as a data source, you need to follow the steps below to set", - "TablesExcelSetDataSourceTitle": "1. Set the data source", - "TablesExcelSetDataSourceDescription": "Set the Items property of the Table component or the OnQueryAsync callback delegate method", - "TablesExcelNewLogicTitle": "2. Handle the new logic", - "TablesExcelNewLogicDescription": "Set the OnAddAsync callback delegate function to handle the New logic", - "TablesExcelNewLogicNote1": "The code here is sample code", - "TablesExcelNewLogicNote1Address": "custom address", - "TablesExcelNewLogicNote2": "output log information", - "TablesExcelNewLogicNote2Log1": "Collection value change notification column", - "TablesExcelNewLogicNote2Log2": "Type", - "TablesExcelDeleteLogicTitle": "3. Handle delete logic", - "TablesExcelDeleteLogicDescription": "Set the OnDeleteAsync callback delegate function to handle the delete logic", - "TablesExcelDeleteLogicNote1": "The code here is sample code", - "TablesExcelDeleteLogicNote2": "output log information", - "TablesExcelDeleteLogicNote2Log1": "Collection value change notification column", - "TablesExcelDeleteLogicNote2Log2": "Type", - "TablesExcelUpdateLogicTitle": "4. Handle the update logic", - "TablesExcelUpdateLogicDescription1": "Set the OnSaveAsync callback delegate function to handle the cell update logic", - "TablesExcelUpdateLogicDescription2": "After all cells in the component are edited and updated, the OnSaveAsync callback delegate will be automatically triggered, and the parameter is the current update model TItem", - "TablesExcelUpdateLogicNote": "The code here is sample code", - "TablesExcelUpdateLogicLog1": "Cell Change Notification Class: Foo", - "TablesExcelUpdateLogicLog2": "value: cell", - "TablesExcelCellRenderTitle": "Individually control how cells are rendered by editing the template", - "TablesExcelCellRenderIntro": "Advanced usage", - "TablesExcelCellRenderTips1": "IsFixedHeader fixed header height is set to Height='500px'", - "TablesExcelCellRenderTips2": "Name is not editable display avatar" + "BootstrapBlazor.Server.Components.Samples.Radios": { + "RadioListGenericIntro": "Enable generic support by using the RadioListGeneric component with SelectedItem<TValue>", + "RadioListGenericTitle": "Generic List", + "RadiosAdd1": "Beijing", + "RadiosAdd2": "Shanghai", + "RadiosAutoSelectFirstWhenValueIsNullIntro": "The selection of RadioList candidates can be controlled by setting the AutoSelectFirstWhenValueIsNull parameter. The default value of the parameter is true, which means that if the current value of the component is inconsistent with the value in the candidate, the first candidate is automatically selected. If it is set to false, all candidates will be unselected.", + "RadiosAutoSelectFirstWhenValueIsNullTitle": "AutoSelectFirst", + "RadiosBindingIntro": "Binding variables within a component, data automatically synchronized, binding an array of selectedItem types", + "RadiosBindingTitle": "Bind data in both directions", + "RadiosColorIntro": "Change the component background color by setting the Color property", + "RadiosColorTitle": "Color", + "RadiosDescription": "Single in a set of alternatives", + "RadiosDisableIntro": "The unavailable status of the radio box is IsDisabled='true'", + "RadiosDisableTitle": "Turn off the radio box", + "RadiosEnumDescription": "By setting the IsAutoAddNullItem automatically adds the empty valueoption, and by setting the NullItemText the custom nulloption", + "RadiosEnumIntro": "You do not need to set up Items Value by binding both directions", + "RadiosEnumText": "null", + "RadiosEnumTitle": "The binding enumeration type", + "RadiosIsButtonIntro": "Set IsButton to True make the radio item display as Button", + "RadiosIsButtonTitle": "Button Radio", + "RadiosItem1": "Option one", + "RadiosItem2": "Option two", + "RadiosItemTemplateIntro": "Set ItemTemplate for customer the item UI", + "RadiosItemTemplateTitle": "ItemTemplate", + "RadiosLabelIntro": "The radio box displays text", + "RadiosLabelText": "Button group", + "RadiosLabelTitle": "Label text", + "RadiosLog1": "The component selects the value:", + "RadiosLog2": "The value is displayed:", + "RadiosLog3": "Component value:", + "RadiosNormalIntro": "Select selectors are recommended because the options are visible by default and should not be too many", + "RadiosNormalTitle": "Basic usage", + "RadiosOnSelectedChangedEvent": "Call back this method when the check box state changes", + "RadiosTitle": "Radio", + "RadiosVerticalIntro": "Make the components vertically arranged internally by setting the IsVertical", + "RadiosVerticalTitle": "Vertical arrangement" }, - "BootstrapBlazor.Server.Components.Samples.Table.TablesDynamicExcel": { - "TablesDynamicExcelTitle": "Excel-DataTable", - "TablesDynamicExcelDescription": "Commonly used for large data sheet maintenance", - "TablesDynamicExcelNormalTitle": "Excel mode", - "TablesDynamicExcelNormalIntro": "Make the component render like Excel by setting the table's IsExcel property", - "TablesDynamicExcelNormalDescription": "When the binding is dynamic type in Excel mode, TableColumn cannot be used to set column properties. In this example is used DynamicContext Instance object DataTableDynamicContext constructor to set", - "TablesDynamicExcelEnumTitle": "Enum type", - "TablesDynamicExcelEnumIntro": "Set the column Items value, and render the enum type into a Select component", - "TablesDynamicExcelEnumNotSet": "not set", - "TablesDynamicExcelEnumTip": "Use the above code to render the Education column using the Select component", - "TablesDynamicExcelKeyboardTitle": "Keyboard Support", - "TablesDynamicExcelKeyboardIntro": "This example is used to test keyboard support in Excel mode", - "TablesDynamicExcelKeyboardDescription": "Currently supported", - "TablesDynamicExcelKeyboardTips_IsExcel": "After the IsExcel mode is enabled, some parameters will no longer take effect, and the zebra IsStriped tree table IsTree has more detail lines IsDetails Select column IsMultipleSelect", - "TablesDynamicExcelKeyboardTips_DatTable": "When using DatTable as the data source, you need to follow the steps below to set", - "TablesDynamicExcelKeyboardTips1_Title": "1. Set the data source context", - "TablesDynamicExcelKeyboardTips1_note1": "Set the TItem property of the Table component to DynamicObject", - "TablesDynamicExcelKeyboardTips1_note2": "Set the DynamicContext property of the Table component to the DataTableDynamicContext instance", - "TablesDynamicExcelKeyboardTips1_note3": "Set the Enum type to render to Select", - "TablesDynamicExcelKeyboardTips1_note4": "Convert enum to List", - "TablesDynamicExcelKeyboardTips2_Title": "2. Handle DataRow change logic", - "TablesDynamicExcelKeyboardTips2_note1": "Set the OnChanged callback delegate function to handle the New/Delete logic", - "TablesDynamicExcelKeyboardTips2_note2": "output log information", - "TablesDynamicExcelKeyboardTips3_Title": "3. Handle DataCell change logic", - "TablesDynamicExcelKeyboardTips3_note1": "Set the OnValueChanged callback delegate function to handle the cell update logic", - "TablesDynamicExcelKeyboardTips3_note2": "Get built-in OnValueChanged callback", - "TablesDynamicExcelKeyboardTips3_note3": "Invoke internally provided methods", - "TablesDynamicExcelKeyboardTips3_note4": "The internal method updates the original data source DataTable", - "TablesDynamicExcelKeyboardTips3_note5": "output log information" + "BootstrapBlazor.Server.Components.Samples.Rates": { + "RatesCry": "Cry", + "RatesDescription": "Scoring components", + "RatesDisableIntro": "Disable components by setting IsDisable property to true", + "RatesDisableTitle": "Disable", + "RatesEvent1": "Call back the delegate when the value changes", + "RatesGrin": "Grin", + "RatesIconIntro": "Set ItemTemplate and custom-rate custom the UI", + "RatesIconTitle": "Item Template", + "RatesIsWrapIntro": "By setting IsWrap=\"true\" set to wrap. default value is not wrap", + "RatesIsWrapTitle": "Wrap", + "RatesLog": "Star rating:", + "RatesNormalIntro": "Rate component represents the numeric level with 1 - 5 stars, and the value can be bound in both directions in the background by bind-Value Through the Rate component changes its value, the mouse swipe changes the value, and confirms its value when you click on the star", + "RatesNormalTitle": "Basic usage", + "RatesReadOnlyIntro": "Readonly components by setting IsReadonly property to true", + "RatesReadOnlyTitle": "Readonly", + "RatesShowValueIntro": "By setting ShowValue=\"true\" to show the value", + "RatesShowValueTitle": "Show value", + "RatesSmile": "Smile", + "RatesSurprise": "Surprise", + "RatesSwitchOff": "Enable", + "RatesSwitchOn": "Disable", + "RatesTear": "Tear", + "RatesTitle": "Rate" + }, + "BootstrapBlazor.Server.Components.Samples.RDKits": { + "RDKitDescription": "A powerful cheminformatics and molecule rendering toolbelt for Blazor, Powered by RDKit", + "RDKitNormalIntro": "Set the molecular formula through Smiles and draw the component", + "RDKitNormalTitle": "Basic usage", + "RDKitSizeIntro": "Set the width and height of the molecular formula by setting the Width and Height values", + "RDKitSizeTitle": "Size", + "RDKitSmartsIntro": "By setting the Smarts value, parts of the molecular formula can be highlighted", + "RDKitSmartsLabel": "Show Smarts", + "RDKitSmartsTitle": "Smarts", + "RDKitTitle": "RDKit" }, - "BootstrapBlazor.Server.Components.Samples.Table.TablesExport": { - "TablesExportTitle": "Table Export", - "TablesExportDescription1": "By setting ShowExportButton to display the export button, the component has built-in export Excel function", - "TablesExportDescription2": "The export function provides an export callback method OnExportAsync, which can be used to export data by providing a custom export method. If no data export method is provided, the component will export data according to the injected export service", - "TablesExportTips": "inject service", - "TablesExportNote1": "Add BootstrapBlazor component", - "TablesExportNote2": "Add Table Excel export service", - "TablesExportShowExportButtonTitle": "Table export function", - "TablesExportShowExportButtonIntro": "Whether to display the export button by setting the ShowExportButton property, the default is false", - "TablesExportShowExportCsvButtonTitle": "Export Csv/Pdf Button", - "TablesExportShowExportCsvButtonIntro": "Show/hide Csv/Pdf button by set ShowExportCsvButton=\"true\" ShowExportPdfButton=\"true\"", - "TablesExportOnExportAsyncTitle": "Custom export method", - "TablesExportOnExportAsyncIntro": "You can customize the export method by setting the OnExportAsync callback delegate method. If you don't set it, the built-in export function of the component will be used. You can set the column property IgnoreWhenExport=\"true\" to ignore this column when exporting", - "TablesExportButtonDropdownTemplateTitle": "Custom export dropdown button", - "TablesExportButtonDropdownTemplateIntro": "Customize the content of the export button dropdown box by setting the ExportButtonDropdownTemplate template", - "TablesExportButtonExcelText": "Export Page data - Excel", - "TablesExportButtonExcelAllText": "Export All data - Excel", - "TablesExportButtonCliBoardText": "Export Page data - ClipBoard", - "TablesExportButtonCliBoardAllText": "Export All data - ClipBoard", - "TablesExportToastTitle": "Export Data", - "TablesExportToastSuccessContent": "Export success,auto close after 4 second", - "TablesExportToastFailedContent": "Export failed,auto close after 4 second", - "TablesExportPdfDesc": "Export Pdf function dependencies on additional packages", - "TablesExportPdfNote1": "Injecting the Html2Pdf service", - "TablesExportPdfNote2": "Added Html2Pdf export service" + "BootstrapBlazor.Server.Components.Samples.Reconnectors": { + "Application": "Application", + "Intro": "The following table describes the CSS classes applied to the components-reconnect-modal element by the Blazor framework.", + "IntroTitle": "Template", + "ReconnectFailedTemplateText": "reconnection failed", + "ReconnectingTemplateText": "attempting to reconnect", + "ReconnectRejectedTemplateText": "reconnection rejected", + "Step1": "1. Add code in _Layout.cshtml", + "Step2": "2. Add code in App.razor", + "SubTitle": "Reflect the connection state in the UI (Blazor Server)", + "TableHeader1": "CSS class", + "TableHeader2": "Indicates", + "TableRow1": "A lost connection. The client is attempting to reconnect. Show the modal.", + "TableRow2": "An active connection is re-established to the server. Hide the modal.", + "TableRow3": "Reconnection failed, probably due to a network failure. To attempt reconnection, call window.Blazor.reconnect() in JavaScript.", + "TableRow4": "Reconnection rejected. The server was reached but refused the connection, and the user's state on the server is lost. To reload the app, call location.reload() in JavaScript. This connection state may result when:", + "TableRow5": "
  • A crash in the server-side circuit occurs.
  • The client is disconnected long enough for the server to drop the user's state. Instances of the user's components are disposed.
  • The server is restarted, or the app's worker process is recycled.
  • ", + "Title": "Reconnector", + "Usage": "Usage" }, - "BootstrapBlazor.Server.Components.Samples.Table.TablesToolbar": { - "TablesToolbarTitle": "Table", - "TablesToolbarDescription": "It is used to display multiple pieces of data with similar structure, and the data can be sorted, filtered, compared or other custom operations.", - "TablesToolbarNormalTitle": "Table with Toolbar", - "TablesToolbarNormalIntro": "Set ShowToolbar to show the toolbar component", - "TablesToolbarQueryTableTitle": "Form with query", - "TablesToolbarQueryTableIntro": "Set ShowSearch to show the query component", - "TablesToolbarQueryTableDescription": "In this example, the View button is displayed by setting ShowCardView to switch the rendering mode of the Table component", - "TablesToolbarCustomButtonTitle": "Custom extension button", - "TablesToolbarCustomButtonIntro": "Set the TableToolbarTemplate template to add custom extension buttons", - "TablesToolbarCustomButtonDescription": "In this example, a classic application scenario is implemented", - "TablesToolbarCustomButtonTips1_title": "Click the download button to open the download thread in the background for data processing, disable download button", - "TablesToolbarCustomButtonTips1_note1": "A progress bar is displayed in the foreground, and it is being packaged and exported. During this period, other transactions can be processed.", - "TablesToolbarCustomButtonTips1_note2": "After the data processing is completed, close the foreground prompt pop-up window, restore download button", - "TablesToolbarCustomButtonTips2_title": "In this example, by setting the IsAsync property of the TableToolbarButton button to enable asynchronous operation mode, please note that OnClickCallback needs to be in the callback delegate Use true async operations otherwise no effect", - "TablesToolbarCustomDisplayButtonTitle": "Custom display function buttons", - "TablesToolbarCustomDisplayButtonIntro": "By setting the ShowAddButton ShowEditButton ShowDeleteButton attribute value to control whether the individual function button is displayed, when ShowDefaultButtons is set to When false, all buttons are not displayed", - "TablesToolbarCustomButton1": "Download 1", - "TablesToolbarCustomButton2": "Download 2", - "TableToolbarPopConfirmButton1": "Confirm", - "TablesToolbarCustomComponentTitle": "Custom Component", - "TablesToolbarCustomComponentIntro": "Use the TableToolbarComponent component to implement placing the components you need on the toolbar", - "TablesToolbarCustomComponentDescription": "The custom component currently does not render when shrunk into a small icon, and will be resolved later when a better solution is available, If you want to place components behind built-in buttons, please use the TableToolbarTemplate template", - "TablesToolbarShowRefreshTitle": "Do not display the refresh button", - "TablesToolbarShowRefreshIntro": "Set ShowToolbar=\"true\" ShowRefresh=\"false\" to display the toolbar and not the refresh button.", - "TablesToolbarShowRefreshDesc": "Click the Refresh button. The component instance method QueryAsync is called internally. If the virtual scrolling mode is used, different request data modes are triggered according to different data sources. If the OnQueryAsync callback method is used as the data source, it is automatically called." + "BootstrapBlazor.Server.Components.Samples.Repeaters": { + "RepeaterContainerIntro": "By setting ContainerTemplate to the container template, the repetitive part of the template is still rendered via ItemTemplate, In this case, the component is rendered as Table using ContainerTemplate", + "RepeaterContainerTitle": "Container Template", + "RepeaterDescription": "Iterates on a collection and use a template to generate the page", + "RepeaterEmptyIntro": "If Items is empty, use ShowEmpty controls whether no data message is displayed. You can customize the empty data template by EmptyTemplate. EmptyText allows you to customize empty data text information", + "RepeaterEmptyTitle": "No Data", + "RepeaterLoadingIntro": "If Items is not provided, you can set ShowLoading to control whether loading prompt information is displayed. You can customize loading information by using LoadingTemplate", + "RepeaterLoadingTitle": "Async Data", + "RepeaterNormalIntro": "custom the template by ItemTemplate", + "RepeaterNormalTitle": "Normal", + "RepeaterTitle": "Repeater" }, - "BootstrapBlazor.Server.Components.Samples.Table.TablesCell": { - "TablesCellTitle": "Table Cell", - "TablesCellDescription": "Cell related operation example", - "TableCellMergeCellTitle": "Merge Cells", - "TableCellMergeCellIntro": "Basic table display usage", - "TableCellMergeCellTip": "In this example, by setting the OnCellRenderHandler callback delegate, the cell merge operation is performed on the two columns Name and Address through the judgment condition, And set the background color of the merged cell by setting the TableCellArgs attribute Class value to cell-demo style sheet name", - "TableCellOnDoubleClickCellTitle": "Double-click cell", - "TableCellOnDoubleClickCellIntro": "Set the double-click event of the current cell by setting the OnDoubleClickColumn callback", - "TableCellOnDoubleClickCellTip": "After setting the double-click cell callback, a subscript horizontal line appears in the cell after the mouse hovers over the cell, as a reminder, which can be overridden by the .table-cell .is-dbcell style", - "RowAttr": "The current cell row data, please convert it into a binding model", - "ColumnNameAttr": "Current cell binding column name", - "ColspanAttr": "Number of merged cells", - "ClassAttr": "Current cell style", - "ValueAttr": "Current cell display content", - "TableCellOnDoubleClickCellToastTitle": "Double-click cell callback", - "TableCellOnDoubleClickCellCurrentCellName": "Current cell name:", - "TableCellOnDoubleClickCellCurrentValue": "Current Value:" + "BootstrapBlazor.Server.Components.Samples.Responsives": { + "ResponsiveDescription": "Determines whether to re-render the content of a responsive layout based on parameter conditions, usually used for responsive layouts", + "ResponsiveNormalIntro": "Resize the browser window and observe the change of Breakpoint", + "ResponsiveNormalIntroCurrentText": "current", + "ResponsiveNormalTitle": "Basic usage", + "ResponsiveTitle": "Responsive breakpoint monitoring" }, - "BootstrapBlazor.Server.Components.Samples.Table.TablesLookup": { - "TablesLookupTitle": "Table Lookup", - "TablesLookupDescription": "Used to automatically convert foreign key columns to Text display text", - "TableLookupNormalTitle": "Lookup external data source", - "TableLookupNormalIntro": "Auto-translate display text by setting Lookup", - "TableLookupNormalTips2": "The component automatically converts Complete to a preset in the DataSource collection", - "TableLookupNormalTips3": "In this example, the ILookupService service is used for unified processing, and the Lookup data collection is obtained from the service by setting the LookupServiceKey value", - "TableLookupNormalTips1": "For detailed ILookupService documentation, please refer to [Portal]" + "BootstrapBlazor.Server.Components.Samples.RibbonTabs": { + "ItemsGroupName1": "Group one", + "ItemsGroupName2": "Group two", + "RibbonTabsAnchorDesc": "Set EncodeAnchorCallback custom the encode hash rule, set DecodeAnchorCallback custom the decode hash rule", + "RibbonTabsAnchorIntro": "Set IsSupportAnchor=\"true\" enable anchor support", + "RibbonTabsAnchorTitle": "Anchor", + "RibbonTabsDescription": "Office menu tab", + "RibbonTabsFloatContent": "I am the body content, I will move up after the menu is collapsed", + "RibbonTabsFloatIntro": "By setting ShowFloatButton, the shrink button is displayed on the right side of the tab without occupying the main form space", + "RibbonTabsFloatTitle": "Suspended", + "RibbonTabsHeaderClickIntro": "Handler the event of click header via OnHeaderClickAsync", + "RibbonTabsHeaderClickTitle": "Header click callback", + "RibbonTabsItems1": "Task 1", + "RibbonTabsItems10": "Task 1", + "RibbonTabsItems11": "Task 2", + "RibbonTabsItems12": "Task 3", + "RibbonTabsItems2": "Task 2", + "RibbonTabsItems3": "Task 3", + "RibbonTabsItems4": "Open", + "RibbonTabsItems5": "Save", + "RibbonTabsItems6": "Save as", + "RibbonTabsItems7": "Open", + "RibbonTabsItems8": "Save", + "RibbonTabsItems9": "Save as", + "RibbonTabsItemsText1": "Document", + "RibbonTabsItemsText2": "Edit", + "RibbonTabsNormalIntro": "Initialize the tab by setting Items", + "RibbonTabsNormalTitle": "Basic usage", + "RibbonTabsRightButtonsTemplateContent": "Documentation", + "RibbonTabsRightButtonsTemplateIntro": "By setting RightButtonsTemplate some shortcut buttons can be added to the upper right corner of the tab", + "RibbonTabsRightButtonsTemplateTitle": "top right button template", + "RibbonTabsTitle": "RibbonTab" }, - "BootstrapBlazor.Server.Components.Samples.Table.TablesRow": { - "TablesRowTitle": "Table Row", - "TablesRowDesc": "Used to display multiple pieces of data with similar structures, data can be sorted, filtered, compared or other custom operations.", - "RowNumberTitle": "Show row numbers", - "RowNumberIntro": "By setting the ShowLineNo property to true, the table displays the row number, the default value is false", - "RowNumberP": "Set the LineNoText property value to set the line number column header display text, the default is line number", - "ClickToSelectTitle": "Click the cell to select the entire row effect", - "ClickToSelectIntro": "By setting the ClickToSelect property value, you can click any cell to select the entire row, and the selected row style is set to active", - "ClickToSelectP": "You can set the OnClickRowCallback callback delegate method to handle the clicked row accordingly. After clicking any row in the table, the Name value of the bound data of the selected row will be displayed below", - "ClickToSelectP2": "Note: UI rendering is not performed inside this callback delegate. When UI data update operation is required, please manually and explicitly call the StateHasChanged method", - "DoubleClickToEditTitle": "DoubleClickToEditTitle", - "DoubleClickToEditIntro": "By setting the DoubleClickToEdit attribute value, you can double-click any cell to edit the current row. This function is only available if the Edit function is available", - "DoubleClickToEditP": "The mobile terminal (CardView) mode temporarily does not support double-click to edit the current row function", - "DoubleClickToEditP1": "The multi-select mode also supports the double-click editing function. If you set the ClickToSelect click selection effect, the double-click editing function will cause the row selection state to be alternately selected. Please set ClickToSelect=false. Disable this feature", - "DoubleClickRowCallbackTitle": "Custom row double click event", - "DoubleClickRowCallbackIntro": "This function is only valid in the Table component single-selection mode. By setting the DoubleClickRowCallback attribute value, you can double-click any cell to customize the callback delegate method and realize your own the required function", - "DoubleClickRowCallbackP": "The mobile terminal (CardView) mode temporarily does not support double-click editing of the current row function", - "SetRowClassFormatterTitle": "Custom row highlighting", - "SetRowClassFormatterIntro": "By setting the SetRowClassFormatter attribute value, you can set the row style through the row data logic, and realize the function of your own highlighting requirements", - "SetRowClassFormatterP": "In this example, the SetRowClassFormatter method will highlight the row by judging the Count > 60 of the bound data", - "RowNumberText": "Number", - "ClickToSelectP3": "Currently selected row:", - "ClickToSelectNoneText": "None", - "PlaceHolder": "Cannot be empty, within 50 characters", - "RowContentTemplateTitle": "Row Content Template", - "RowContentTemplateIntro": "By setting the RowContentTemplate template, you can implement custom row cell linkage logic by sub-packaging components to achieve performance optimization and avoid the problem of refreshing the entire table component after linkage due to cell data refresh.", - "RowContentTemplateDesc": "In this example, a custom component is used to select a date, link the quantity column, randomly generate a random number, and save it to the original data, so there is no need to refresh the entire Table component.", - "RowTemplateTitle": "Row Template", - "RowTemplateIntro": "By setting the RowTemplate template, you can implement the row merging function according to your own business logic" + "BootstrapBlazor.Server.Components.Samples.Rows": { + "RowCommonDescription": "3 rows are displayed, using Row", + "RowCommonIntro": "Put your own components inside Row", + "RowCommonTitle": "Place common controls", + "RowFormInlineDescription": "In this example, the Row component is built into the ValidateForm component, and the front Label tag is automatically added", + "RowFormInlineIntro": "When placing form controls, you can specify RowType as Inline, and Label will be displayed on the left, and the control will fill the remaining space", + "RowFormInlineTitle": "Place form controls (inline)", + "RowFormIntro": "When placing form controls, you can specify Normal as FormRow, and Label will be displayed on the top, and the control will be full", + "RowFormTitle": "Place form controls", + "RowNestedIntro": "The Row component supports nested use. For example, the outermost Row below sets a row to display two controls, the first is TextBox, the second One is still Row, and the second Row continues to be set to display two controls", + "RowNestedTitle": "Nested use", + "RowsDescription": "The number of components displayed in a row can be easily set", + "RowSpanIntro": "The Row component can set the number of spanning columns by specifying the ColSpan value. Combining these functions can achieve complex layouts", + "RowSpanTips1": "4 in a row", + "RowSpanTips2": "2 in a row", + "RowSpanTips3": "The row shows 4 Address in 2 columns", + "RowSpanTips4": "Row shows 4, the second component ColSpan is set to 3", + "RowSpanTips5": "Row shows 2, the first component ColSpan is set to 3", + "RowSpanTips6": "A component in a row", + "RowSpanTitle": "Cross-column", + "RowsTitle": "Row" }, - "BootstrapBlazor.Server.Components.Samples.Table.TablesDynamic": { - "TablesDynamicTitle": "Table Dynamic", - "TablesDynamicDescription": "Supports dynamically adding columns", - "TablesDynamicDataTableTitle": "Common usage", - "TablesDynamicDataTableIntro": "Only show DataTable data", - "TablesDynamicEditTitle": "Edit function", - "TablesDynamicEditIntro": "Add editing and maintenance functions", - "TablesDynamicEditDescription": "By setting the OnChanged callback method of the DataTableDynamicContext instance, the value is automatically set when a new row is created", - "TablesDynamicDynamicColTitle": "Dynamic Column", - "TablesDynamicDynamicColIntro": "Dynamic adjustment of the DataTable table component automatically updates via code", - "TablesDynamicPageTitle": "Pagination", - "TablesDynamicPageIntro": "Use Pagination component", - "TablesDynamicDynamicColButtonAddColumnText": "Add Column", - "TablesDynamicDynamicColButtonRemoveColumnText": "Remove Column" + "BootstrapBlazor.Server.Components.Samples.Scrolls": { + "ScrollDescription": "Add scroll bars to components whose height or width exceeds the standard", + "ScrollNormalBottom": "bottom", + "ScrollNormalDescription": "Please scroll the scroll bar on the right", + "ScrollNormalIntro": "Add a scroll bar to the component. By setting the height of Height to 200px, the scroll bar appears when the height of the inner child element is 500px", + "ScrollNormalTitle": "Common usage", + "ScrollTips": "The scroll bar can be rendered only when its element has a fixed height. Its height attribute can be set through the coat element", + "ScrollTitle": "Scroll", + "ScrollToBottom": "Scroll to bottom" }, - "BootstrapBlazor.Server.Components.Samples.Table.TablesSearch": { - "TablesSearchTitle": "Table Search", - "TablesSearchDesc": "Commonly used for single table maintenance, simple addition, deletion, modification, search, sorting, filtering, search and other common functions can be realized through attribute configuration, and very complex can be realized through the advanced usage of Template business needs functions", - "SearchTableTips": "The search function of the Table component provides two modes, which can be set through SearchMode. The default is Popup, which is the popup mode. In the Top mode, the search bar will be built into the top of the table. In this mode, the Refresh button and the Search button are combined into one, you can set the ShowSearchButton=false close the search button", - "SearchTableTitle": "Table with search function", - "SearchTableIntro": "Set ShowSearch to display the query component, customize the search UI by setting the SearchTemplate template", - "SearchTableLi1": "Enable no data display function by setting ShowEmpty=\"true\"", - "SearchTableLi2": "The EmptyText parameter is used to set the text to be displayed when there is no data, the default is to take the built-in text in the resource file", - "SearchTableLi3": "EmptyTemplate parameter is used to customize no data display template", - "AutoGenerateSearchTitle": "Auto-generate search function table", - "AutoGenerateSearchIntro": "When ShowSearch is set, if SearchTemplate is not set when editing template, the component will try to automatically generate search criteria UI", - "AutoGenerateSearchP": "When the column information is bound, set the Searchable property and set the search criteria to automatically build the UI. You can set the SearchDialogShowMaximizeButton to maximize the search pop-up window display Maximize button", - "AutoGenerateSearchTips": "

    When building a search popup window automatically, since each column is set to Searchable, the component will pass SearchText and set Searchable Each column whose value is true automatically builds a search lambda expression, which is obtained through the attribute Searches of QueryPageOptions

    ", - "AutoGenerateSearchComment": "Logical relationship usage", - "CustomColSearchTitle": "Custom Column Search Template", - "CustomColSearchIntro": "When SearchTemplate is set, the component automatically generates the search UI using this template as the rendering UI", - "CustomColSearchP": "By setting the SearchTemplate of the name column to customize the edit, use the drop-down box to select the name", - "CustomColSearchP1": "Because it is a search condition, in this example, the drop-down box of the name search column is added. Please select... item", - "CustomColSearchP2": "The column search template is generated in the search order SearchTemplate -> AutoGenerate first to find out whether the search template is set, and then automatically generated according to the bound field type", - "CustomColSearchP3": "Control whether to display the entire search bar by setting ShowSearch", - "CustomColSearchP4": "Control whether to display the fuzzy search bar by setting ShowSearchText", - "CustomColSearchP5": "Control whether to display the reset search button by setting ShowResetButton", - "CustomColSearchP6": "Control whether to display the advanced search button by setting ShowAdvancedSearch", - "CustomColSearchP7": "Make the search popup draggable by setting SearchDialogDraggable=\"true\"", - "CustomerSearchModelTitle": "Custom Search Model", - "CustomerSearchModelIntro": "Set CustomerSearchModel and CustomerSearchTemplate to fully control the search criteria UI", - "CustomerSearchModelP": "Due to a certain application scenario, our form entity class TItem is not ideal as a search model, for example, we have an attribute that is int or enum, we need a blank condition item of all or please select... as a search condition. It is very difficult to use the default model at this time , you can use the custom search model CustomerSearchModel and CustomerSearchTemplate to customize the control search interface", - "AddModelTitle": "Add Test Data Window", - "EditModelTitle": "Edit Test Data Window", - "SelectedItemText": "Please select...", - "SelectedItemText1": "Name1", - "SelectedItemText2": "Name2", - "SelectedItemValue1": "Name1", - "SelectedItemValue2": "Name2", - "AutoGenerateSearchGroupBoxTitle": "Search function experience area", - "DisplayText1": "Search Mode", - "DisplayText2": "Fuzzy Search", - "DisplayText3": "Display reset", - "DisplayText4": "Display Search", - "SearchTableGroupBoxText": "Search Criteria", - "NamePlaceholder": "Please enter your name within 50 characters", - "AddressPlaceholder": "Please enter the address within 500 characters", - "AutoHeightIntro": "

    Highly Adaptive

    In this example, when the parent container height is set to 600px expand/collapse the search bar, the table automatically fills the parent container

    " + "BootstrapBlazor.Server.Components.Samples.SearchDialogs": { + "SearchDialogOptionAttr": "SearchDialogOption property", + "SearchDialogsDescription": "SearchDialog component is Dialog An extension of the component, suitable for setting search criteria in the data popup.", + "SearchDialogsFieldButtonText": "Click to pop up search popup", + "SearchDialogsFieldIntro": "Explicitly set the displayed search field by setting the Columns parameter", + "SearchDialogsFieldTitle": "Customize the criteria fields displayed in the search popup", + "SearchDialogsLayoutButtonText1": "Search popup (left-aligned)", + "SearchDialogsLayoutButtonText2": "Search popup (right aligned)", + "SearchDialogsLayoutIntro": "By setting the RowType parameter to explicitly set the layout of the components in the pop-up window, the default is the upper and lower layout, and the value can be set to inline horizontal layout", + "SearchDialogsLayoutTitle": "Set the layout in the search popup", + "SearchDialogsNormalButtonText": "Click to pop up search popup", + "SearchDialogsNormalIntro": "By binding the TModel data model, the search form for each field of the model is automatically generated", + "SearchDialogsNormalTitle": "Basic usage", + "SearchDialogsSubTitle": "Automatically render search popups by binding the data model", + "SearchDialogsTips": "Inject the service by calling DialogService of ShowSearchDialog The method directly pops up the search criteria pop-up window, which greatly reduces the amount of code. SearchDialogOption Configuration class inheritance DialogOption , for more parameter settings, please click [portal]", + "SearchDialogsTitle": "SearchDialog search popup" + }, + "BootstrapBlazor.Server.Components.Samples.Searches": { + "SearchesButtonTemplateDesc": "Customize the buttons displayed in front of the component by setting PrefixButtonTemplate", + "SearchesButtonTemplateDesc2": "In a custom template, you can call the OnClear OnSearch method inside the Search component with the context.", + "SearchesButtonTemplateIntro": "Customize the buttons displayed by the component by setting ButtonTemplate", + "SearchesButtonTemplateTitle": "Button Template", + "SearchesDisplayButtonIntro": "Control whether the Empty button is displayed by setting the ShowClearButton parameter", + "SearchesDisplayButtonTitle": "The Empty button is displayed", + "SearchesIconTemplateDesc": "The search component context SearchContext<string> provides the OnClear OnSearch methods within the component", + "SearchesIconTemplateIntro": "Customize the icon displayed by the component by setting IconTemplate", + "SearchesIconTemplateTitle": "Icon Template", + "SearchesIsClearableIntro": "Display the clear icon by setting IsClearable=\"true\"", + "SearchesIsClearableTitle": "IsClearable", + "SearchesItemTemplateIntro": "By setting ItemTemplate and matching generic data, you can achieve any desired effect. In this example, by searching for any keyword, the backend calls any third-party search results and displays them. After selecting the search item, you can handle it yourself through the OnSelectedItemChanged callback method", + "SearchesItemTemplateTitle": "Item Template", + "SearchesKeyboardsIntro": "Control whether search operations are performed in real time by setting IsTriggerSearchByInput parameter", + "SearchesKeyboardsTitle": "Keyboard input instant search", + "SearchesNormalDescription": "Please enter 1234 to get the Smart Prompt and turn on auto focus by setting IsAutoFocus='true'", + "SearchesNormalIntro": "Enter some of the data to search", + "SearchesNormalTitle": "Basic usage", + "SearchesPlaceHolder": "Search for examples", + "SearchesShowPrefixIconDescription": "You can customize the prefix through PrefixIconTemplate. In this example, the Svg icon is used through the prefix template.", + "SearchesShowPrefixIconIntro": "Control whether to show the prefix icon by setting the ShowPrefixIcon parameter", + "SearchesShowPrefixIconTitle": "ShowPrefixIcon", + "SearchesSubTitle": "Used for data search", + "SearchesTitle": "Search box", + "SearchesValidateFormIntro": "Inside ValidateForm", + "SearchesValidateFormTitle": "ValidateForm" }, - "BootstrapBlazor.Server.Components.Samples.Table.TablesFilter": { - "MultiFilterTitle": "Multiple selection list filtering", - "MultiFilterIntro": "Use the built-in MultiFilter component to provide multi-select filtering via FilterTemplate", - "MultiFilterTips": "The component provides two ways to set the data source: Items and OnGetItemsAsync", - "MultiFilterTipsLi1": "Items is suitable for small amounts of data and statically prepared data sets", - "MultiFilterTipsLi2": "OnGetItemsAsync is suitable for large and dynamic data collections. For performance reasons, the component uses a local lazy record method to fill in data, that is, the callback is called to obtain data when the filter window is opened.", - "TablesFilterTitle": "Filter and sort function", - "TablesFilterDesc": "Filter to quickly find the data you want to see; sort to quickly find or compare data.", - "TablesFilterDescLi1": "Filters a column of data to specify the column to be filtered by specifying the filterable property of the column", - "TablesFilterDescLi2": "Sort a column of data, specify the column to be sorted by specifying the Sortable property of the column, change the collation by multiple clicks", - "FilterableTitle": "Table with filterable data", - "FilterableIntro": "Set the Filterable property of the TableColumn column to control whether the column header has data filtering enabled", - "FilterableP": "Filterable currently supports two applications:", - "FilterableLi1": "The Filters in the query method parameters are filter criteria, and the database can filter the data by itself through this property when querying data", - "FilterableLi2": "No sense of use, normal query data, no processing is done to filtering, internal processing will be carried out according to Filter", - "FilterableLi3": "When external filtering has been made, set the Value of the IsFiltered property of the QueryData<TItem> parameter to true", - "FilterableLi4": "Each column can be set separately, and the filter between columns is And and relationship", - "FilterableDiv": "This example is of DateTime, string, bool, enum, int type, and the pop-up filter box is also different", - "FilterableAlert": "To enable filtering, you only need to set the Filterable value of TableColumn to true, no additional code required", - "FilterTemplateTitle": "Custom Filter Template", - "FilterTemplateIntro": "Set FilterTemplate template values, customize column filter templates, very suitable for complex types of filter pop-ups", - "ShowFilterHeaderTitle": "Show Filter Header", - "ShowFilterHeaderIntro": "Show filter header when the ShowFilterHeader property value is set to true", - "DefaultSortTitle": "Default sort function", - "DefaultSortIntro": "Default sorts as default when setting the DefaultSort property value to true", - "DefaultSortLi1": "Set DefaultSort=true to enable the default sort function, when multiple columns set this property, the first column works", - "DefaultSortLi2": "Set DefaultSortOrder value, set default collation", - "DefaultSortP": "In this case the default sort is the last column in reverse order", - "SortListTitle": "Multi-column sort", - "SortListIntro": "Set the SortList property, use this parameter for multi-column sorting when the table loads", - "SortListP": "The default collation in this case is: DeteTime desc Address, you don't need to handle the sort logic yourself, the component is already built-in", - "OnSortTitle": "Dynamic multi-column sorting", - "OnSortIntro": "Set OnSort Parameters", - "OnSortP": "When clicking the column header to sort, the component calls the OnSort callback internally, where its return value can be set according to the business logic to achieve dynamic multi-column sorting, in this case, when clicking the time column header for positive order sorting, use DateTime,Count internally, useDateTime desc, Count descwhen Count reverse order", - "OnAdvancedSortTitle": "Custom sort", - "OnAdvancedSortIntro": "By setting ShowAdvancedSort=\"true\" to show the Advanced Sort button.", - "SetFilterInCodeTitle": "Set filters by code", - "SetFilterInCodeIntro": "Example shows how to set filters through code", - "SetFilterInCodeButtonText1": "Name contains 01", - "SetFilterInCodeButtonText2": "Reset All Filter", - "TablesFilterTemplateDescription": "

    The FilterTemplate type is RenderFragment its value is a custom component, and the component must inherit the filterBase In this case, the last column in this case, the Quantity column, uses the custom component by filtering the template CustomerFilter [portal] CustomerFilter component source code

    Notes:

    • Custom filter components are wrapped with FilterProvider, and FilterProvider must be under the FilterTemplate node
    • Filters can be fine-tuned through the parameters of the FilterProvider component; for example, by setting ShowMoreButton to control whether the + - symbol is displayed
    • Before v9.6.2, use OnFilterValueChanged to trigger the filter callback. After refactoring, use OnFilterAsync to trigger the filter callback method.
    • ", - "CustomerFilterItem1": "All", - "CustomerFilterItem2": "Greater than 10", - "CustomerFilterItem3": "Greater than 50", - "CustomerFilterItem4": "Greater than 80" + "BootstrapBlazor.Server.Components.Samples.Segmenteds": { + "BasicIntro": "select a single option", + "BasicTitle": "Basic", + "BlockIntro": "block property will make the Segmented fit to its parent width", + "BlockTitle": "Block", + "IconIntro": "Set the Icon for the segmented item", + "IconTitle": "Icon", + "IsDisabledIntro": "Make one of them prohibited", + "IsDisabledTitle": "Disable", + "ItemTemplateIntro": "Use ItemTemplate to custom-render SegmentedItems", + "ItemTemplateTitle": "Custom Rendering", + "SegmentItemIntro": "Write Razor in Razor", + "SegmentItemTitle": "SegmentItem", + "SizeIntro": "Set Size defines three sizes (large, default, small) with heights of 40px, 32px, and 4px2", + "SizeTitle": "Size", + "SubTitle": "displaying multiple options and user can select a single option", + "Title": "Segmented" }, - "BootstrapBlazor.Server.Components.Samples.Table.TablesFixedHeader": { - "TablesFixedHeaderTitle": "Fixed header function", - "TablesFixedHeaderDesc": "When scrolling data, the header is fixed to facilitate viewing the header information of each column", - "TablesFixedHeaderDescP": " The fixed header of this component adopts the double header method. When there is a common problem, the column is not aligned. Please add some styles according to your actual situation.
      Please set the width of each column as much as possible to avoid the problem of misalignment of column width", - "FixedHeaderTitle": "Width adaptive", - "FixedHeaderIntro": "Set Height=200 and IsFixedHeader=\"true\" fixed header", - "FixedHeaderP": "Example of vertical scroll bar after more data is loaded", - "FixedHeaderP1": "Please set a column width, allow a column width not set, auto-fill", - "FixedWidthTitle": "FixedWidth", - "FixedWidthIntro": "Set the Height=200 and IsFixedHeader=\"true\" fixed header, when the displayed data on each page is 10 rows, the height exceeds the set value 200, A vertical scroll bar appears on the Table component", - "FixedWidthP": "All columns are set to width, and a horizontal scroll bar will automatically appear when the screen is too small", - "AllowResizingTitle": "Width Adjustable", - "AllowResizingIntro": "Set the AllowResizing property while fixing the header so that the column width can be adjusted", - "AllowResizingP": "By setting the Height parameter to fix the header, by setting AllowResizing, the parameter allows the column width to be adjusted", - "AutoHeightTitle": "Automatic Height", - "AutoHeightIntro": "Do not set the Height value to adapt the height through the parent container", - "AutoHeightP": "In this example, when the height of the parent container of the Table changes, the component will adapt to the height and width", - "DialogIntro": "Table inside Dialog", - "DialogDesc": "

      Tips for using theTable with a fixed header in the Dialog:

      The Dialog should assign values to theClass parameter of DialogOption. In this example, it is set todialog-table. This operation is to enable us to customize the style to locate theTable component's parent container in the Dialog and set its height, Here you can use the writing method of adaptive height height: calc (100vh - 400px);; When the parent container of a Tablecomponent has a height, the component itself will perform adaptive height adaptation through calculation
      ", - "DialogTitle": "In Dialog", - "DialogButtonText": "Dialog" + "BootstrapBlazor.Server.Components.Samples.SelectCities": { + "CityDescription": "Provides a city selector classified by province", + "CityNormalIntro": "Select a city from the drop-down box", + "CityNormalTitle": "Basic usage", + "CityTitle": "City Selector" }, - "BootstrapBlazor.Server.Components.Samples.Table.TablesAttribute": { - "TableAttributeTitle": "AutoGenerateClassAttribute/AutoGenerateColumnAttribute", - "TableAttributeDescription": "By using feature tags, you can save a lot of code", - "AutoGenerateClassAttribute": "AutoGenerateClassAttribute", - "AutoGenerateColumnAttribute": "AutoGenerateColumnAttribute", - "AutoGenerateClassP1": "1. Usage", - "AutoGenerateClassP1Content": "In this example, by setting Filterable=true, all columns in the table are filterable.", - "AutoGenerateCode": "The equivalent code is as follows:", - "AutoGenerateClassP2": "1. Usage", - "AutoGenerateClassP2Content": "In this example, we enable the filter function for the table's Name column by setting Filterable=true", - "TableAttributeIntro": "Priority", - "TableAttributeIntroLI1": "Only AutoGenerateClassAttribute been set and its parameter value is used as the basis", - "TableAttributeIntroLI2": "Only AutoGenerateColumnAttribute been set and its parameter value is used as the basis", - "TableAttributeIntroLI3": "Write AutoGenerateClassAttribute and write AutoGenerateColumnAttribute to merge the two parameter values and take the value of AutoGenerateColumnAttribute", - "TableAttributeIntroLI4": "When setting the TableColumn parameter value, the TableColumn parameter value is the final value.", - "TableAttributeQA1": "I wrote AutoGenerateClassAttribute and AutoGenerateColumnAttribute to combine the two parameter values and give an example", - "TableAttributeQAP1": "Because AutoGenerateClassAttribute sets Filterable to true, and AutoGenerateColumn keeps Filterable to its default value of false, the final UI uses true", - "TableAttributeQAP2": "Since AutoGenerateClassAttribute is not set, Sortable remains at the default value of false, and AutoGenerateColumn sets the Sortable value to true, the final UI uses true", - "TableAttributeQAP3": "In the latest version, some parameter values ​​such as Filterable of TableColumn are changed to nullable data type, and their default value is changed from false to null. Therefore, as long as the value of the Filterable parameter of TableColumn is not null, the TableColumn value is used as the final UI value.", - "TableAttributeColumn": "TableColumn value" + "BootstrapBlazor.Server.Components.Samples.SelectObjects": { + "CustomComponentIntro": "Any component can be placed in a dropdown box, and a callback is required for assignment or window closure", + "CustomComponentTitle": "Custom Components", + "HeightIntro": "Change the height of the dropdown box by setting the Height value", + "HeightTitle": "Height", + "Intro": "Dropdown boxes are used to display the selection requirements for complex types for any component", + "MinWidthIntro": "Change the minimum width of the dropdown box by setting the DropdownMinWidth value", + "MinWidthTitle": "Min-Width", + "NormalDesc": "You can use IsClearable to control whether to display the clear button. The default value is false", + "NormalIntro": "Use built in ListView component to select images", + "NormalTitle": "Basic usage", + "Title": "Table-Object" }, - "BootstrapBlazor.Server.Components.Pages.Introduction": { - "Title": "Introduction", - "SubTitle": "BootstrapBlazor is an enterprise-level component library based on Bootstrap and Blazor, which can be considered as the Blazor version of the Bootstrap project.", - "UpdateTitle": "Update Log", - "UpdateLog": "In order to fix the components bugs, a small version of the component may be released every day.", - "UpdateLogLink": "[Update Log]", - "LearnTitle": "Learning materials", - "LearnLi1": "Blazor Official Document", - "LearnLi2": "Use Blazor WebAssembly and Visual Studio Code to generate web applications", - "LearnLi3": "What is Blazor", - "LearnLi4": "Exercise-Configure the development environment", - "LearnLi5": "Blazor Components", - "LearnLi6": "Exercise-Add Components", - "LearnLi7": "Data binding and events", - "LearnLi8": "Exercise-Data binding and Events", - "Summarize": "Summarize", - "ProjectsShow": "Exhibition", - "P5": "The largest code hosting collaborative development platform in China Gitee C# The highest star in the sector star Works Universal background management system BootstrapAdmin Ready to use this component to achieve all functions", - "ShowWebSiteTitle2": "Demo Site(Blazor)", - "GetStarted": "Get Started", - "QuickStart": "Quick Start", - "Features": "Features of Components", - "P6": "The Bootstrap Blazor UI component library provides everything from basic Button components to advanced web-level Online components", - "Advantage": "Advantage", - "AdvantageLi1": "No need to write JavaScript to use components", - "AdvantageLi2": "The component supports all html features", - "AdvantageLi3": "The component supports two-way data binding", - "AdvantageLi4": "Components support automatic client verification", - "AdvantageLi5": "Component support combination", - "Community": "Community" + "BootstrapBlazor.Server.Components.Samples.SelectProvinces": { + "ProvinceDescription": "Provide a drop-down box to select the province", + "ProvinceMultipleIntro": "Enable multiple selection mode by setting IsMultiple", + "ProvinceMultipleTitle": "Multiple", + "ProvinceNormalIntro": "Select the province from the drop-down box", + "ProvinceNormalTitle": "Basic usage", + "ProvinceTitle": "Province Selector" }, - "BootstrapBlazor.Server.Components.Components.QQGroup": { - "Group": "QQ Group", - "Status": " Full", - "Welcome": "Welcome to join the group discussion" + "BootstrapBlazor.Server.Components.Samples.SelectRegions": { + "RegionDescription": "A simple region cascade selector, provide 4 levels Chinese administrative division data", + "RegionNormalIntro": "Use grouping to switch the selection mode for displaying administrative areas", + "RegionNormalTitle": "Basic usage", + "RegionTitle": "Region" }, - "BootstrapBlazor.Server.Components.Components.EventTable": { - "Title": "Event" + "BootstrapBlazor.Server.Components.Samples.Selects": { + "SelectConfirmSelectDesc1": "Set the OnBeforeSelectedItemChange callback method, and pop up a window in the callback method to confirm whether to change the value. If it returns true, the value will be changed, otherwise it will not be changed.", + "SelectConfirmSelectDesc2": "Set ShowSwal=\"true\" and then confirm the value of the SwalTitle SwalContent parameter using the built-in popup window. In the callback method, you can confirm whether to change the value.", + "SelectsBindingIntro": "The values in the text box change as you change the drop-down option by binding the Model.Name property to the component with Select", + "SelectsBindingSelectedItemIntro": "The values in the text box change as you change the drop-down option by binding the SelectItem property to the component with Select .", + "SelectsBindingSelectedItemTitle": "Select two-way binding SelectItem type", + "SelectsBindingTitle": "Select two-way binding", + "SelectsCascadingButtonText1": "In Dialog", + "SelectsCascadingIntro": "The second drop-down box dynamically populates the content by selecting the different options for the first drop-down box.", + "SelectsCascadingTitle": "Select cascading binding", + "SelectsClearableDesc": "Cannot be a null integer. Setting IsClearable has no effect. Its default value is 0", + "SelectsClearableIntro": "You can clear Select using a clear icon", + "SelectsClearableTitle": "Clearable", + "SelectsClientValidationButtonText2": "Submit", + "SelectsClientValidationIntro": "When the drop-down box is not selected, it is blocked when the submit button is clicked.", + "SelectsClientValidationTitle": "Select client validation", + "SelectsConfirmSelectIntro": "Prevent the current value from changing by setting the OnBeforeSelectedItemChange delegate or setting the ShowSwal parameter to true.", + "SelectsConfirmSelectTitle": "Drop-down box with confirmation", + "SelectsCustomTemplateIntro": "By setting the ItemTemplate you can customize the option rendering style", + "SelectsCustomTemplateTitle": "Custom option templates", + "SelectsDescription": "When there are too many options, use the drop-down menu to present and select content", + "SelectsDisableIntro": "Selector unavailable state", + "SelectsDisableOption": "The options in the drop-down box disable the example", + "SelectsDisableTitle": "Select disables the drop-down box", + "SelectsDisplayLabelDescription": "The pre-label explicit rules are consistent with the BootstrapInput component of the of the [The portal]", + "SelectsDisplayLabelDivider1": "Bidirectional binding displays labels", + "SelectsDisplayLabelDivider2": "Bidirectional bindings show that bidirectional bindings do not display labels", + "SelectsDisplayLabelDivider3": "Customize DisplayText", + "SelectsDisplayLabelIntro": "When a component binds in both directions, it automatically determines whether label text is displayed based on the conditions", + "SelectsDisplayLabelSelectText": "Custom city", + "SelectsDisplayLabelTitle": "The label is displayed", + "SelectsDisplayTemplateIntro": "Custom UI of display template", + "SelectsDisplayTemplateTitle": "Display Template", + "SelectsEnumDescription1": "Enumeration When the binding value is an empty enumeration type, the component automatically adds preferences internally through the PlaceHolder value, and when the PlaceHolder value is not set, please select ... as a preference, and this example binds the EnumEducation enumeration type data", + "SelectsEnumDescription2": "Setting PlaceHolder is not valid when the binding value is an enumerated type", + "SelectsEnumIntro": "an example of a type enumerated a select component binding", + "SelectsEnumSelectText1": "Can be empty", + "SelectsEnumSelectText2": "Not empty", + "SelectsEnumSelectText3": "Using enum integer values ​​as Items", + "SelectsEnumTitle": "Enumerate the data", + "SelectsGroupIntro": "Alternatives are presented in groups", + "SelectsGroupTitle": "Grouping", + "SelectsGuidIntro": "The component binding value is an example of a Guid structure", + "SelectsGuidTitle": "The binding generic is the Guid structure", + "SelectsIsEditableDesc": "After the editable function is enabled, if the input value is not in the candidate items, the new value can be returned through the TextConvertToValueCallback callback method, and the Items data source can be updated through the OnInputChangedCallback callback to prevent the input value from being lost after the page is refreshed.", + "SelectsIsEditableIntro": "By setting IsEditable=\"true\" to make the component editable", + "SelectsIsEditableTitle": "Editable", + "SelectsNormalDescription": "In this example, the first drop-down box does not have a Value bidirectional binding, so you only change when you select different options, and the remaining drop-down boxes share the same data source Items and bind Value values in both directions, changing together when you select different options", + "SelectsNormalIntro": "Drop-down selection boxes are available in a variety of colors", + "SelectsNormalTitle": "Select drop-down selection box", + "SelectsNullableBooleanDescription1": "Can be used for the empty boolean type more than in the conditional search box", + "SelectsNullableBooleanDescription2": "When the first option is selected, the binding value SelectIntItem to null", + "SelectsNullableBooleanIntro": "an example of the bool? type of select component binding", + "SelectsNullableBooleanTitle": "The binding can be an empty Boolean type", + "SelectsNullableDescription": "When the first option is selected, the binding value SelectIntItem to null", + "SelectsNullableIntro": "an example of the Select component binding int? type", + "SelectsNullableTitle": "The binding can be an empty type", + "SelectsOnBeforeSelectedItemChange": "This event is triggered before the drop-down option changes", + "SelectsOnInputChangedCallback": "Callback method for converting input text into corresponding Value in edit mode", + "SelectsOnSelectedItemChanged": "This event is triggered when the drop-down option changes", + "SelectsOption1": "Please select ...", + "SelectsOption2": "Beijing", + "SelectsOption3": "Shanghai", + "SelectsOption4": "Guangzhou", + "SelectsPlaceHolder": "Not selected", + "SelectsPopoverIntro": "Set IsPopover to true, use popover render UI prevent The dropdown menu cannot be fully displayed because the parent container is set to overflow: hidden", + "SelectsPopoverTitle": "Popover dropdown menu", + "SelectsShowSearchIntro": "Controls whether the search box is displayed by setting the ShowSearch property, which is not displayed by default false. You can set the IsAutoClearSearchTextWhenCollapsed parameter to control whether the text in the search box is automatically cleared after the drop-down box is collapsed. The default value is false.", + "SelectsShowSearchTitle": "Drop-down box with search box", + "SelectsStaticIntro": "Hard-coded writing directly inside the Select component is suitable for static data drop-down boxes", + "SelectsStaticTitle": "Static data", + "SelectsTimeZoneIntro": "Display data of Timezone", + "SelectsTimeZoneTitle": "Timezone", + "SelectsTitle": "Select", + "SelectsVirtualizeDescription": "Component virtual scrolling supports two ways of providing data through Items or OnQueryAsync callback methods", + "SelectsVirtualizeIntro": "Set IsVirtualize to true enable virtual scroll for large data", + "SelectsVirtualizeTitle": "Virtualize", + "SwalContent": "Are you sure you want to change the option value?", + "SwalFooter": "Click Confirm to change the option value and select Cancel to leave the value unchanged", + "SwalTitle": "The drop-down box value changes" }, - "BootstrapBlazor.Server.Components.Samples.Handwrittens": { - "Title": "Handwritten", - "SubTitle": "Used to save the mobile terminal signature as Base64 encoded string", - "Tips": "Deprecated, please use the BootstrapBlazor.SignaturePad component", - "BaseUsageText": "Basic usage", - "IntroText1": "Touch device handwritten signature as Base64.", - "IntroText2": "For desktop browser testing, please use F12 to simulate a touch device.", - "HandwrittenButtonText": "Signature", - "SaveButtonText": "Save button text", - "SaveButtonTextDefaultValue": "Save", - "ClearButtonText": "Clear the button text", - "ClearButtonTextDefaultValue": "Clear", - "Result": "Handwritten signature imgBase64 string", - "HandwrittenBase64": "Handwritten result callback method" + "BootstrapBlazor.Server.Components.Samples.SelectTables": { + "ColorIntro": "Change component border color by setting Color", + "ColorTitle": "Color", + "Intro": "The dropdown box is a table used to display the selection requirements for complex types", + "IsDisabledIntro": "When you set the IsDisabled property value to true, the component suppresses select", + "IsDisabledTitle": "Disabled", + "NormalDesc": "You can use IsClearable to control whether to display the clear button. The default value is false", + "NormalIntro": "Suitable for candidates with a relatively large amount of information, presenting information using Table", + "NormalTitle": "Basic usage", + "SearchIntro": "By setting TableColumn Searchable to enable column searchability, just like the component Table, by setting IsPagination ShowSearch to enable pagination and table search functions", + "SearchTitle": "Sort/Filter", + "SortableIntro": "Enable sorting and filtering functions by setting Sortable Filterable in TableColumn, just like the component Table", + "SortableTitle": "Sort/Filter", + "TemplateIntro": "Present customized display content by customizing the Template", + "TemplateTitle": "Value Template", + "Title": "Table Select", + "ValidateFormIntro": "Intercept data when the value is empty", + "ValidateFormTitle": "ValidateForm" }, - "BootstrapBlazor.Server.Components.Samples.ImageViewers": { - "ImageViewerTitle": "Image Viewer pictures", - "ImageViewerDescription": "In container, and retain the native characteristics of the img, to support lazy loading, custom placeholder, load, failure, etc", - "ImageViewerNormalTitle": "Basic usage", - "ImageViewerNormalIntro": "Load and display the image files", - "ImageViewerPlaceHolderTitle": "The placeholder content", - "ImageViewerPlaceHolderIntro": "Can be set up by the Show Place Holder open placeholder function, by setting the Place Holder Template define placeholder content", - "ImageViewerPlaceHolderTemplateTitle": "The placeholder template", - "ImageViewerPlaceHolderTemplateIntro": "Can be set up by the Place Holder Template open placeholder Template function, not set Url or being loaded displayed when the content of the Template", - "ImageViewerErrorTemplateTitle": "Load failed", - "ImageViewerErrorTemplateIntro": "Can be set up by the Error Template open Error Template function, Url parameter Url unable to load images displayed when the content of the Template", - "ImageViewerPreviewListTitle": "A larger preview", - "ImageViewerPreviewListIntro": "Can be set up by the Preview List opens a larger Preview of the function, set ZoomSpeed to control the speed of scrolling and scaling", - "ImageViewersAttrUrl": "Picture Url", - "ImageViewersAttrAlt": "Native Alt attribute", - "ImageViewersAttrShowPlaceHolder": "Whether display placeholder for large images added", - "ImageViewersAttrHandleError": "Error loading fail whether display placeholder", - "ImageViewersAttrPlaceHolderTemplate": "Placeholder template is not set the Url or being loaded a larger version", - "ImageViewersAttrErrorTemplate": "The template image path errors", - "ImageViewersAttrFitMode": "Native object-fit attributes", - "ImageViewersAttrZIndex": "Native z-the index attribute", - "ImageViewersAttrPreviewList": "A larger preview link set", - "ImageViewersAttrOnLoadAsync": "The callback method picture when it is loaded successfully", - "ImageViewersAttrOnErrorAsync": "Images load failed callback methods", - "ImageViewersAttrIsIntersectionObserver": "Images lazy loading by view window", - "ImageViewerNormalTips1": "object-fit: fill Fill the default drawing picture to fill the whole container, does not guarantee that keep the original proportion", - "ImageViewerNormalTips2": "object-fit: contain Contains keep original size scaling to ensure the whole image can be appeared in the container, so this parameter may be left blank in the container", - "ImageViewerNormalTips3": "object-fit: cover Cover to keep the original size scaling, width and height of at least one consistent and containers (size small) so this parameter may let image section area is not visible", - "ImageViewerNormalTips4": "object-fit: none No keep original size proportion, while maintaining the original size, hidden extra parts", - "ImageViewerNormalTips5": "object-fit: scale-down To reduce as if, in turn, set the none or contain the is the relatively small size of the ultimate", - "ImageViewerPlaceHolderTips1": "Pictures after loading the default browser caches, suggest F12 turn off caching experience this functionality", - "ImageViewerPlaceHolderDefault": "Default", - "ImageViewerPlaceHolderCustom": "Custom", - "ImageViewerPlaceHolderLoading": "Loading ...", - "ImageViewerPlaceHolderTemplateTips1": "Pictures after loading the default browser caches, suggest F12 turn off caching experience this functionality", - "ImageViewerPlaceHolderTemplateUrl": "Is not set Url", - "ImageViewerPlaceHolderTemplatePlaceholder": "The placeholder template", - "ImageViewerPlaceHolderTemplateLoadingShow": "When loading show", - "ImageViewerErrorTemplateUrlError": "Url The path error", - "ImageViewerErrorTemplateCustom": "The custom", - "ImageViewerErrorTemplateLoadFailed": "Load failed", - "ImagePreviewerTitle": "Use ImagePreviewer Standalone", - "ImagePreviewerIntro": "Pop up the Previewer directly in conjunction with other components like Button", - "ImagePreviewerButton": "Show Previewer", - "IntersectionObserverTitle": "Intersection Observer", - "IntersectionObserverIntro": "By setting IsIntersectionObserver=\"true\" to enable lazy loading, the image will not be loaded when it is in the invisible area, and will be loaded only when it is about to be visible." + "BootstrapBlazor.Server.Components.Samples.SelectTables+SelectTableMode": { + "Foo.Required": "{0} is required." }, - "BootstrapBlazor.Server.Components.Samples.Geolocations": { - "GeolocationsTitle": "Geolocation", - "GeolocationNormalText": "Basic usage", - "GeolocationNormalIntro": "Obtain location information through browser API.", - "GeolocationNormalIntro2": "Click the button to get your coordinates.", - "GeolocationNormalIntro3": "Note: For security reasons, when a web page tries to access location information, the user is notified and asked to grant permission. Be aware that each browser has its own policies and methods for requesting this permission.", - "GetLocationButtonText": "Get Location", - "WatchPositionButtonText": "Watch Position", - "ClearWatchPositionButtonText": "Stop Watch Position", - "GetLocationResultSuccess": "Call GetLocaltion success", - "GetLocationResultFailed": "Call GetLocaltion failed", - "WatchPositionResultSuccess": "Call WatchPosition success", - "WatchPositionResultFailed": "Call WatchPosition failed", - "ClearWatchPositionResultSuccess": "Stop watch position success", - "ClearWatchPositionResultFailed": "Stop watch position failed", - "Longitude": "Longitude", - "Latitude": "Latitude", - "Accuracy": "Accuracy", - "Altitude": "Altitude", - "AltitudeAccuracy": "AltitudeAccuracy", - "Heading": "Heading", - "Speed": "Speed", - "LastUpdateTime": "UpdateTime", - "CurrentDistance": "CurrentDistance", - "TotalDistance": "TotalDistance" + "BootstrapBlazor.Server.Components.Samples.SelectTrees": { + "SelectTreesBindingIntro": "The values in the text box change as you change the drop-down option by binding the Model.Name property to the component with Select Tree", + "SelectTreesBindingTitle": "Select two-way binding", + "SelectTreesClientValidationButtonText": "Submit", + "SelectTreesClientValidationIntro": "validate the value when submit the form. Inside ValidateForm", + "SelectTreesClientValidationTitle": "Validation", + "SelectTreesDescription": "A tree-like data structure is presented in the drop-down box for selection", + "SelectTreesDisableIntro": "Disabled the component by set IsDisabled to true", + "SelectTreesDisableTitle": "Disabled", + "SelectTreesEditDesc": "After setting IsEditable=\"true\", the content displayed in the text box is the Value value of the node selected in the TreeView, the input value may not be in the Items collection", + "SelectTreesEditIntro": "By setting IsEditable=\"true\" you can edit the input textbox", + "SelectTreesEditTitle": "Edit", + "SelectTreesIsPopoverIntro": "Set IsPopover to true, use popover render UI prevent The dropdown menu cannot be fully displayed because the parent container is set to overflow: hidden", + "SelectTreesIsPopoverTitle": "IsPopover", + "SelectTreesNormalIntro": "Selected node", + "SelectTreesNormalTitle": "Common usage", + "SelectTreesTitle": "SelectTree" }, - "BootstrapBlazor.Server.Components.Samples.Notifications": { - "NotificationsTitle": "Notifications", - "NotificationsNormalTitle": "Basic usage", - "NotificationsNormalIntro": "Notification information through browser API.", - "NotificationsNormalDescription": "Click the button to notification.", - "NotificationsNormalTips1": "Note: For security reasons, when a web page tries to access notifications, the user is notified and asked to grant permission.", - "NotificationsNormalButtonText": "Display notification", - "NotificationSilentButtonText": "Display silent notification", - "NotificationsNormalCheckPermissionText": "Check Permission", - "NotificationsNormalPermissionText": "Permission", - "NotificationsNormalSilentText": "Silent", - "NotificationsNormalTitleText": "Title", - "NotificationsNormalMessageText": "Message", - "NotificationsIconText": "Icon", - "NotificationsSoundText": "The audio URL to play when the notification", - "CheckPermissionResultSuccess": "Check permission success", - "NotificationResultSuccess": "Call Notification success", - "NotificationsNormalTips2": "Uses the static class BrowserNotification to call the Dispatch method", - "NotificationsNormalShowNotificationCallbackText": "Show notification callback", - "NotificationsNormalGetPermissionCallbackText": "Get permission callback", - "NotificationsNormalOnClickText": "Click notification callback method name", - "NotificationsNormalTitleSampleText": "You have a new logistics notification", - "NotificationsNormalMessageSampleText": "Your package has arrived on Panama South Road, and there are only 3 stops left for distribution." + "BootstrapBlazor.Server.Components.Samples.ShieldBadges": { + "ShieldBadgeNormalIntro": "Use Icon to set the icon, Label to set the left text, and Text to set the right text", + "ShieldBadgeNormalTitle": "Basic usage", + "SubTitle": "Badge component with icon label text like Shields Badge", + "Title": "ShieldBadge" }, - "BootstrapBlazor.Server.Components.Samples.SignaturePads": { - "BaseUsageText": "Basic usage", - "BaseUsageIntro": "Signature with touch or mouse", - "ButtonCssStyleText": "Button CSS style", - "ButtonCssStyleIntro": "Set button css", - "CustomButtonText": "Custom button text", - "CustomButtonIntro": "Custom button text", - "SignText": "signature", - "Tips": "Complex signatures will cause a large amount of data to be transmitted, and ssr will show a reload error. The configuration changes the maximum size of a single incoming hub message (default 32KB) to solve this problem. builder.Services.AddServerSideBlazor().AddHubOptions(o => o.MaximumReceiveMessageSize = null); ", - "Title": "SignaturePad", - "CleanText": "Clean", + "BootstrapBlazor.Server.Components.Samples.SignaturePadPageResponsive": { + "BackText": "Back", "ResponsiveInterfaceText": "Responsive signature interface", - "ResultBase64Text": "Your signature in base64", "ResultText": "Your signature", "SignatureText": "Signature", - "BackText": "Back", "TipsResponsive": "When device width is less than 640px (such as mobile phones) automatically topless without borders, the width is less than 500px the button is automatically rotated. Optional transparent background." }, - "BootstrapBlazor.Server.Components.Samples.SignaturePadPageResponsive": { - "BackText": "Back", + "BootstrapBlazor.Server.Components.Samples.SignaturePads": { + "BaseUsageIntro": "Signature with touch or mouse", + "BaseUsageText": "Basic usage", + "ButtonCssStyleIntro": "Set button css", + "ButtonCssStyleText": "Button CSS style", + "CustomButtonIntro": "Custom button text", + "CustomButtonText": "Custom button text", "ResponsiveInterfaceText": "Responsive signature interface", "ResultBase64Text": "Your signature in base64", "ResultText": "Your signature", - "SignatureText": "Signature", - "TipsResponsive": "When device width is less than 640px (such as mobile phones) automatically topless without borders, the width is less than 500px the button is automatically rotated. Optional transparent background." - }, - "BootstrapBlazor.Server.Components.Samples.Reconnectors": { - "Title": "Reconnector", - "SubTitle": "Reflect the connection state in the UI (Blazor Server)", - "ReconnectingTemplateAttr": "Template for attempting to reconnect", - "ReconnectFailedTemplateAttr": "Template for reconnection failed", - "ReconnectRejectedTemplateAttr": "Template for reconnection rejected", - "ReconnectingTemplateText": "attempting to reconnect", - "ReconnectFailedTemplateText": "reconnection failed", - "ReconnectRejectedTemplateText": "reconnection rejected", - "Intro": "The following table describes the CSS classes applied to the components-reconnect-modal element by the Blazor framework.", - "IntroTitle": "Template", - "Usage": "Usage", - "Step1": "1. Add code in _Layout.cshtml", - "Step2": "2. Add code in App.razor", - "TableHeader1": "CSS class", - "TableHeader2": "Indicates", - "TableRow1": "A lost connection. The client is attempting to reconnect. Show the modal.", - "TableRow2": "An active connection is re-established to the server. Hide the modal.", - "TableRow3": "Reconnection failed, probably due to a network failure. To attempt reconnection, call window.Blazor.reconnect() in JavaScript.", - "TableRow4": "Reconnection rejected. The server was reached but refused the connection, and the user's state on the server is lost. To reload the app, call location.reload() in JavaScript. This connection state may result when:", - "TableRow5": "
    • A crash in the server-side circuit occurs.
    • The client is disconnected long enough for the server to drop the user's state. Instances of the user's components are disposed.
    • The server is restarted, or the app's worker process is recycled.
    • ", - "Application": "Application" + "SignText": "signature", + "Tips": "Complex signatures will cause a large amount of data to be transmitted, and ssr will show a reload error. The configuration changes the maximum size of a single incoming hub message (default 32KB) to solve this problem. builder.Services.AddServerSideBlazor().AddHubOptions(o => o.MaximumReceiveMessageSize = null); ", + "TipsResponsive": "When device width is less than 640px (such as mobile phones) automatically topless without borders, the width is less than 500px the button is automatically rotated. Optional transparent background.", + "Title": "SignaturePad" }, - "BootstrapBlazor.Server.Components.Samples.OnScreenKeyboards": { - "OnScreenKeyboardsTitle": "On-Screen keyboard", - "OnScreenKeyboardsNormalText": "Basic usage", - "OnScreenKeyboardsNormalIntro": "Full Keyboard", - "OnScreenKeyboardsTypekeyboardTitle": "Keyboard", - "OnScreenKeyboardsTypeNumpadTitle": "Numpad", - "OnScreenKeyboardsThemeDarkTitle": "Theme dark", - "OnScreenKeyboardsSpecialcharactersTitle": "Special characters europe", - "OnScreenKeyboardsSpecialcharactersCustomerTitle": "Special characters in customer", - "OnScreenKeyboardsAppTitle": "BootstrapBlazor component", - "OnScreenKeyboardsAppDescription": "Bind", - "OnScreenKeyboardsTips": "If the performance is not normal, you can add this css to debug", - "OnScreenKeyboardsCss": " .kioskboard-body-padding { padding-top: unset !important;} ", - "OnScreenKeyboardsBasicTitle": "Basic" + "BootstrapBlazor.Server.Components.Samples.Skeletons": { + "SkeletonsDescription": "Provide a placeholder graphic combination where you need to wait for content to load", + "SkeletonsFormIntro": "Suitable for display when the edit form is loaded", + "SkeletonsFormTitle": "Form skeleton", + "SkeletonsImgDescription": "It can be set to a circle display by setting the Circle property", + "SkeletonsImgIntro": "Suitable for display when loading avatars, pictures, etc.", + "SkeletonsImgTitle": "Picture frame", + "SkeletonsParagraphDescription": "The default paragraph skeleton screen only displays three lines. If you need multiple lines to occupy space, please place multiple SkeletonParagraph.", + "SkeletonsParagraphIntro": "Applicable to display when loading large paragraphs of text and other types", + "SkeletonsParagraphTitle": "Paragraph skeleton", + "SkeletonsTableIntro": "Applicable to display when the edit table is loaded", + "SkeletonsTableTitle": "Table skeleton", + "SkeletonsTips1": "When the network is slow and it takes a long time to wait for the loading process", + "SkeletonsTips2": "Lists/cards with more graphic information content", + "SkeletonsTips3": "Only used when loading data for the first time", + "SkeletonsTips4": "Can be completely replaced by Spin, but can provide better visual effects and user experience than Spin in available scenarios", + "SkeletonsTipsTitle": "When to use", + "SkeletonsTitle": "Skeleton", + "SkeletonsTreeIntro": "Display when tree component is loaded", + "SkeletonsTreeTitle": "Tree skeleton" }, - "BootstrapBlazor.Server.Components.Samples.Bluetooth": { - "BluetoothTitle": "IBluetooth Service ", - "BluetoothIntro": "Provides methods to query Bluetooth availability and request access to devices", - "BluetoothDescription": "Allows websites to communicate with Bluetooth devices connected to the user's computer. For example, you can connect to a Bluetooth printer to print.", - "BluetoothTipsLi1": "This feature is available only in secure contexts (HTTPS)", - "BluetoothTipsLi2": "This is an experimental technology Check the Browser compatibility table carefully before using this in production", - "BluetoothTipsTitle": "Note: The IBluetoothDevice interface instance inherits IAsyncDisposable. When switching routes, you need to release its resources by calling its DisposeAsync.", - "NotSupportBluetoothTitle": "Scan Devices", - "NotSupportBluetoothContent": "The current browser does not support serial port operations. Please change to Edge or Chrome browser.", - "BluetoothRequestText": "Scan", - "BluetoothConnectText": "Connect", - "BluetoothDisconnectText": "Disconnect", - "BluetoothGetBatteryText": "Battery", - "BluetoothGetHeartRateText": "HeartRate", - "BaseUsageTitle": "Basic usage", - "BaseUsageIntro": "Request communication with Bluetooth devices through the IBluetooth service", - "BluetoothGetCurrentTimeText": "Time", - "BluetoothDeviceInfoText": "Device Info", - "UsageDesc": "Click the Scan button and select the phone to test in the pop-up window", - "BluetoothGetServicesText": "Services", - "BluetoothGetCharacteristicsText": "Characteristics", - "BluetoothReadValueText": "ReadValue" + "BootstrapBlazor.Server.Components.Samples.SlideButtons": { + "AutoCloseIntro": "By setting IsAutoClose to control whether to click on areas outside the pop-up window to automatically close the pop-up window", + "AutoCloseText": "IsAutoClose", + "BaseUsageIntro": "Provide secondary function menu data items by setting Items", + "BaseUsageText": "Basic usage", + "BodyTemplateIntro": "Customize the pop-up data by setting BodyTemplate", + "BodyTemplateText": "BodyTemplate", + "ShowHeaderIntro": "By setting ShowHeader to control whether a title bar is displayed, the default value is false", + "ShowHeaderText": "ShowHeader", + "SlideButtonHeaderText": "Foo List", + "SlideButtonIntro": "After clicking the button, a function menu and other information will pop up, mostly used for displaying secondary functions", + "SlideButtonItemsIntro": "Directly enter the SlideButtonItems collection as the data source on the page", + "SlideButtonItemsText": "SlideButtonItems", + "SlideButtonTitle": "SlideButton" }, - "BootstrapBlazor.Server.Components.Samples.FileIcons": { - "Title": "File Icon", - "Intro": "The icon show the file extension", - "BaseUsageTitle": "Base Usage", - "BaseUsageIntro": "Set the Extension parameter for the file type", - "ColorTitle": "Color", - "ColorIntro": "Set IconColor for the file extension badge background color", - "BackgroundTemplateTitle": "Background Template", - "BackgroundTemplateIntro": "Set BackgroundTemplate custom the file icon", - "CustomCssTitle": "Custom css", - "CustomCssIntro": "Set class parameter set the style for the file icon component", - "ExtensionAttr": "The extension of file", - "IconColorAttr": "The backgound color for badge of extension", - "BackgroundTemplateAttr": "The template for custom the backgroup file", - "SizeTitle": "Size", - "SizeIntro": "Set the icon size by setting Size" + "BootstrapBlazor.Server.Components.Samples.Sliders": { + "SlidersDescription": "Select within a fixed interval by dragging the slider", + "SlidersIsDisabledIntro": "Disable components by setting IsDisabled=\"true\"", + "SlidersIsDisabledTitle": "Disabled", + "SlidersNormalIntro": "Change the current value as you drag the slider", + "SlidersNormalTitle": "Basic usage", + "SlidersRangeIntro": "Auto generate min max by set RangeAttribute", + "SlidersRangeTitle": "Range", + "SlidersTitle": "Slider", + "SlidersValueChanged": "ValueChanged callback method" }, - "BootstrapBlazor.Server.Components.Samples.PdfReaders": { - "PdfTitle": "PDF Reader", - "PdfDescription": "Embed and display PDF documents directly in web pages without relying on a PDF reader installed locally by the user.", - "PdfReaderNormalText": "Basic usage", - "PdfReaderNormalIntro": "Set the PDF file address using the Url parameter, or specify the file stream to be rendered using the OnGetStreamAsync parameter.", - "PdfReaderFAIconDesc": "The PdfReader component icon depends on the BootstrapBlazor.FontAwesome package. You need to reference the following styles; otherwise, the toolbar icon will not display.", - "PdfReaderSetPdfStreamDesc": "Rendering can be performed by calling the instance method SetPdfStreamAsync or SetPdfBase64DataAsync.", - "PdfReaderDownloadFileNameDesc": "You can set the download file name by configuring the parameter DownloadFileName.", - "PdfReaderStreamModeText": "Stream mode", - "PdfReaderStreamModeIntro": "read remote files by cross-domain", - "PdfReaderCompatibilityModeText": "Compatibility mode", - "PdfReaderCompatibilityModeIntro": "Compatible with older browsers", - "PdfReaderAdvancedText": "Advanced parameters", - "PdfReaderAdvancedIntro": "Can be use advanced parameters", - "PdfReaderIssue": "Destructive update reference link: remove pdfoobject", - "AttributesPdfReaderFilename": "PDF file path (Url or relative path)", - "AttributesPdfReaderStreamMode": "Use stream mode to read files across domains", - "AttributesPdfReaderWidth": "Width unit (px/%)", - "AttributesPdfReaderHeight": "High unit (px/%)", - "AttributesPdfReaderStyleString": "Component appearance Css Style", - "AttributesPdfReaderPage": "Page", - "AttributesPdfReaderPageMode": "Page mode", - "AttributesPdfReaderZoom": "Zoom mode", - "AttributesPdfReaderSearch": "Query String", - "AttributesPdfReaderRefresh": "Refresh Components", - "AttributesPdfReaderNavigateToPage": "Jump to the specified page number", - "AttributesPdfReaderRefreshPage": "Refresh and jump to page number", - "AttributesPdfReaderRefreshComponent": "Refresh component (query keyword, page number, page mode, zoom mode)", - "AttributesPdfReaderStream": "The file stream used for rendering. If it is empty, the URL parameter is used to read the file", - "AttributesPdfReaderViewerBase": "Browser page path", - "AttributesPdfReaderViewerBaseDefaultValue": "built-in", - "AttributesPdfReaderNavPanels": "Show Navigation Pane", - "AttributesPdfReaderToolbar": "Show Toolbar", - "AttributesPdfReaderStatusBar": "show the status bar", - "AttributesPdfReaderDebug": "Display debugging information", - "PdfReaderAdvancedViewMode": "ViewMode", - "PdfReaderAdvancedPageMode": "PageMode", - "PdfReaderAdvancedPagePrevious": "PagePrevious", - "PdfReaderAdvancedPageNext": "PageNext", - "PdfReaderAdvancedGoToPage": "GoTo", - "PdfReaderAdvancedRefreshPage": "RefreshPage", - "PdfReaderAdvancedStreamModeLabel": "StreamMode", - "PdfReaderAdvancedFilenameLabel": "The file in the wwwroot relative path or url", - "PdfReaderAdvancedSearchLabel": "Search", - "PdfReaderAdvancedReadOnlyLabel": "Disable copy/print/download", - "PdfReaderAdvancedWatermarkLabel": "Watermark content", - "PdfReaderCompatibilityModeTips": "- Chrome < 97 automatically uses version 2.4.456
      - Chrome < 109 automatically uses version 2.6.347
      - Note: ReadOnly and Watermark cannot be used in these two compatibility modes", - "LocalFileName": "local PDF file path" + "BootstrapBlazor.Server.Components.Samples.SmilesDrawers": { + "SmilesDrawerDescription": "A small, highly performant JavaScript component for parsing and drawing SMILES strings", + "SmilesDrawerNormalIntro": "Set the molecular formula through Smiles and draw the component", + "SmilesDrawerNormalTitle": "Basic usage", + "SmilesDrawerSizeIntro": "Set the width and height of the molecular formula by setting the Width and Height values", + "SmilesDrawerSizeTitle": "Size", + "SmilesDrawerTitle": "SmilesDrawer" }, - "BootstrapBlazor.Server.Components.Samples.PdfViewers": { - "PdfViewerTitle": "PDFViewer", - "PdfViewerDescription": "Open the PDF file in the component to read its contents", - "PdfViewerNormalTitle": "Basic usage", - "PdfViewerNormalIntro": "Load a PDF file by setting the Url parameter. Set UseGoogleDocs to use docs.google.com preview", - "PdfViewerToastSuccessfulContent": "PDF document loaded successfully.", - "PdfViewerToastNotSupportContent": "The browser does not support inline viewing of PDF files." + "BootstrapBlazor.Server.Components.Samples.Sockets.Adapters": { + "AdaptersDescription": "Receive data through the data adapter and display", + "AdaptersTitle": "DataPackageAdapter", + "NormalIntro": "After the connection is established, the timestamp data sent by the server is received through the ReceivedCallBack callback method of the DataPackageAdapter data adapter.", + "NormalTitle": "Basic usage" }, - "BootstrapBlazor.Server.Components.Samples.EmbedPdfs": { - "PdfTitle": "EmbedPDF PDF", - "PdfDescription": "EmbedPDF is an open-source JavaScript PDF reader based on PDFium, which renders directly in the browser without requiring backend support.", - "PdfReaderNormalText": "Basic usage", - "PdfReaderNormalIntro": "Set the PDF file address using the Url parameter." + "BootstrapBlazor.Server.Components.Samples.Sockets.AutoReceives": { + "NormalIntro": "After connecting, the timestamp data sent by the server is automatically received through the ReceivedCallBack callback method", + "NormalTitle": "Basic usage", + "ReceivesDescription": "Receive data through ReceivedCallBack and display it", + "ReceivesTitle": "Socket Receive" }, - "BootstrapBlazor.Server.Components.Samples.VideoPlayers": { - "VideoPlayersTitle": "VideoPlayer", - "VideoPlayersNormalTitle": "Basic usage", - "VideoPlayersNormalIntro": "", - "VideoPlayersChangeURLTitle": "Switch playback resources", - "VideoPlayersChangeURLIntro": "Use the Reload method to switch playback resources", - "VideoPlayersTips": "Silent mode enabled by default, this is the way for autoplay follow the modern browser standards.", - "MineType": "MineType", - "ResourceUrl": "Resource Address", - "MineTypeDesc": "Resource types", - "ValueList": "(see footer)", - "Width": "Width", - "Height": "Height", - "ShowControls": "Displays the control bar", - "AutoPaly": "Autoplay", - "Poster": "Set the cover resource, relative or absolute path", - "SwitchResource": "Toggle playback resources", - "SetPoster": "Set the cover", - "ShowBar": "Wether show bar", - "OnError": "Error callback" + "BootstrapBlazor.Server.Components.Samples.Sockets.AutoReconnects": { + "AutoReconnectsDescription": "Receive data through the data adapter and display", + "AutoReconnectsTitle": "DataPackageAdapter", + "NormalIntro": "Enable automatic reconnection by setting IsAutoReconnect", + "NormalTitle": "Basic usage" }, - "BootstrapBlazor.Server.Components.Components.PackageTips": { - "Tips": "

      Precautions

      This component relies on {0}, which needs to reference its component package when using this component

      Nuget Install

      Use nuget.org to install {0} component

      " + "BootstrapBlazor.Server.Components.Samples.Sockets.DataEntities": { + "ConfigIntro": "Use the ConfigureDataConverters method to map the entity class and automatically convert the received data", + "ConfigTitle": "DataType Converter", + "DataEntityDescription": "After receiving the communication data, it is automatically converted into the entity class required by the business", + "DataEntityTitle": "Socket Auto Entity", + "NormalIntro": "Enable automatic data conversion through the DataPropertyConverterAttribute attribute", + "NormalTitle": "Basic usage" }, - "BootstrapBlazor.Server.Components.Samples.FileViewers": { - "Title": "FileViewer", - "BaseUsageText": "Basic usage", - "BaseUsageIntro": "Excel/Word file path or URL", - "BaseUsageText2": "Reload file", - "BaseUsageIntro2": "Using the Reload method", - "Tips": "Currently only supports Excel(.xlsx) and Word(.docx) formats.
      Note:
      If throw The type initializer for 'Gdip' threw an exception. error under Linux, please install libgdiplus and enable System. Drawing support.
      Enable System.Drawing support for non-Windows platforms in your project file (*.csproj), add:" + "BootstrapBlazor.Server.Components.Samples.Sockets.ManualReceives": { + "NormalIntro": "After the connection is established, the data sent by the server is received through the ReceiveAsync callback method. The data problems of sticking and splitting packets need to be handled by the client.", + "NormalTitle": "Basic usage", + "ReceivesDescription": "Receive data through call ReceiveAsync and display it", + "ReceivesTitle": "Manual Receive" }, - "BootstrapBlazor.Server.Components.Samples.CountUps": { - "Title": "CountUp", - "Description": "Animates a numerical value by counting to it", - "CountUpsNormalTitle": "Normal", - "CountUpsNormalIntro": "Set Value", - "Value": "Obtain/Set value", - "CountOption": "option value", - "OnCompleted": "Counting end callback method", - "StartValue": "number to start at", - "Duration": "animation duration in seconds", - "UseEasing": "ease animation", - "DecimalPlaces": "number of decimal places", - "Decimal": "decimal", - "UseGrouping": "example: 1,000 vs 1000", - "UseIndianSeparators": "example: 1,00,000 vs 100,000", - "Separator": "grouping separator", - "Prefix": "text prepended to result", - "Suffix": "text appended to result", - "SmartEasingThreshold": "smooth easing for large numbers above this if useEasing", - "SmartEasingAmount": "amount to be eased for numbers above threshold", - "EnableScrollSpy": "start animation when target is in view", - "ScrollSpyDelay": "delay (ms) after target comes into view", - "ScrollSpyOnce": "run only once", - "Numerals": "numeral glyph substitution" + "BootstrapBlazor.Server.Components.Samples.SortableLists": { + "SortableListClassLi1": "Chosen item style sortable-chosen", + "SortableListClassLi2": "The default style of drag element clones is sortable-ghost and can be customized through GhostClass", + "SortableListClassTitle": "Because SortableList is a container component, its contents are all custom components and cannot be styled. You need to set the style yourself according to the actual situation.", + "SortableListCloneIntro": "Set the SortableListOption parameter Clone to set whether to clone the current element when dragging", + "SortableListCloneTitle": "Clone", + "SortableListDescription": "Reorderable drag-and-drop lists", + "SortableListDisableSortIntro": "By setting the SortableListOption parameter Sort to set whether to sort the current element when dragging", + "SortableListDisableSortTitle": "Disable Sort", + "SortableListFilterIntro": "By setting the SortableListOption parameter Filter to set conditional drag elements, the red element in the example cannot be dragged", + "SortableListFilterTitle": "Filter", + "SortableListGroupIntro": "By setting the SortableListOption parameter Group to specify the group name, elements between different groups can be dragged", + "SortableListGroupTitle": "Group", + "SortableListHandlerIntro": "By setting the SortableListOption parameter Handle to specify the draggable element, the entire element is dragged when the mouse drags the icon", + "SortableListHandlerTitle": "Handler", + "SortableListMultiIntro": "By setting the SortableListOption parameter MultiDrag you can select multiple items before dragging", + "SortableListMultiTitle": "Multiple Drag", + "SortableListNestIntro": "By nesting the SortableList component", + "SortableListNestTitle": "Nest", + "SortableListNormalIntro": "Get the root element by setting the RootSelector parameter of the SortableListOption", + "SortableListNormalTitle": "Simple list example", + "SortableListOnAddIntro": "Get the SortableList to which the dragged item belongs by setting the FromId parameter of the SortableEvent. In this example, the elements in the three areas can be dragged arbitrarily", + "SortableListOnAddTitle": "Multiple SortableList", + "SortableListSwapIntro": "By setting the Swap parameter of SortableListOption, the drag item and the target item are swapped.", + "SortableListSwapTitle": "Swap", + "SortableListTableIntro": "By setting the SortableListOption parameter RootSelector to specify the drag root element as tbody, you can drag rows.", + "SortableListTableTitle": "Table Row", + "SortableListTitle": "SortableList" }, - "BootstrapBlazor.Server.Components.Samples.EyeDroppers": { - "EyeDropperTitle": "EyeDropper Service", - "EyeDropperDescription": "The EyeDropperService provides a mechanism for creating an eyedropper tool. Using this tool, users can sample colors from their screens, including outside of the browser window.", - "EyeDropperNormalTitle": "Basic usage", - "EyeDropperNormalIntro": "Using the EyeDropperService application can start the eyedropper mode. Once started, the cursor changes to indicate to the user that the mode is active. The user can then either select a color from anywhere on the screen, or dismiss the eyedropper mode by pressing Escape", - "EyeDropperNormalButtonText": "Pick", - "EyeDropperTips1": "This is an experimental technology Check the Browser compatibility table carefully before using this in production. ", - "EyeDropperTips2": "To prevent malicious websites from getting pixel data from a user's screen without them realizing, the EyeDropper API implements the following measures. Only be called in response to a user action (like a button click)", - "EyeDropperTips3": "To help users notice the eyedropper mode more easily, it is made obvious by browsers. The normal mouse cursor disappears after a short delay and a magnifying glass appears instead. There is also a delay between when the eyedropper mode starts and when the user can select a pixel to ensure the user has had time to see the magnifying glass", - "EyeDropperTips4": "Users are also able to cancel the eyedropper mode at any time (by pressing the Escape key)" + "BootstrapBlazor.Server.Components.Samples.Speeches.Index": { + "SpeechButtonText": "Get started", + "SpeechDescription": "Converted to text (STT) through microphone voice capture, or read aloud through text (TTS)", + "SpeechDescription1": "This set of components is built-in Azure and Baidu Speech service, this example relies on", + "SpeechDescription2": "When using this component, you need to reference its component package", + "SpeechGroupBoxHeaderText": "command panel", + "SpeechGroupBoxTitle": "Command output area", + "SpeechLi1": "Click start After pressing the button, speak to the computer 'Please turn on the light for me'", + "SpeechLi2": "After the computer receives the command, it will ask Are you sure you want to turn on the light? Please confirm!", + "SpeechLi3": "You speak to the computer: confirm", + "SpeechLi4": "The computer executes the command and enters it in the text box below has been opened for you text", + "SpeechLiTitle": "Actual combat experience", + "SpeechTips1": "1. registration service", + "SpeechTips1Text": "Add Baidu voice service", + "SpeechTips2": "2. use the service", + "SpeechTips2Text1": "speech recognition service", + "SpeechTips2Text2": "speech synthesis service", + "SpeechTitle": "Speech Recognition and Synthesis" }, - "BootstrapBlazor.Server.Components.Pages.Chats": { - "ChatsTitle": "Azure OpenAI", - "ChatsDescription": "Azure OpenAI service is a chatbot based on Azure cloud service, which can interact with users through dialogue", - "ChatNormalTitle": "Azure OpenAI", - "ChatNormalIntro": "Chat dialog by calling IAzureOpenAIService service method GetChatCompletionsAsync", - "ChatUserTitle": "Chat session", - "ChatUserMessageTitle": "Hello {0}", - "ChatInfo": "Due to the lack of free interfaces in GPT, the number of experiences has been {1} times, and the current number is {0}" + "BootstrapBlazor.Server.Components.Samples.Speeches.Recognizers": { + "RecognizerNormalDescription": "Instructions for use", + "RecognizerNormalIntro": "Click to start recognition to recognize the input voice", + "RecognizerNormalTips": "click

      start to identify

      After the script runs, it may prompt for recording permission. After authorization, start speaking. After 5 seconds (configurable), the text box on the right will display the speech recognition result. Do not click directly after speaking.

      end recognition

      ", + "RecognizerNormalTitle": "Common usage", + "RecognizersSubTitle": "Convert speech to text with a voice capture device", + "RecognizersTitle": "Recognizer Speech Recognition" }, - "BootstrapBlazor.Server.Components.Samples.HtmlRenderers": { - "Title": "Html Renderer", - "SubTitle": "Render components into Html strings", - "BaseUsageText": "Normal", - "IntroText": "Some application scenarios require us to obtain the Html code fragment finally output by Component, and call the RenderAsync instance method of IComponentHtmlRenderer service" + "BootstrapBlazor.Server.Components.Samples.Speeches.SpeechWaves": { + "NormalIntro": "Displays the waveform plot", + "NormalTitle": "Basic usage", + "ShowUsedTimeIntro": "Via ShowUsedTime", + "ShowUsedTimeTitle": "The length of the display", + "SpeechWavesDescription": "The dynamic plot of the waveform that is displayed when you start acquiring speech", + "SpeechWaveTitle": "SpeechWave", + "ValueButtonText1": "Hide", + "ValueButtonText2": "Show", + "ValueIntro": "Use the Show value to control whether the waveform plot is displayed", + "ValueTitle": "Parameters control whether it is displayed" }, - "BootstrapBlazor.Server.Components.Samples.ContextMenus": { - "ContextMenuItemCopy": "Copy", - "ContextMenuItemPast": "Past", - "ContextMenuTitle": "ContextMenu", - "ContextMenuDescription": "Context menu that pops up when the user clicks the right mouse button", - "ContextMenuNormalTitle": "Basic usage", - "ContextMenuNormalIntro": "Right click on the row of div to pop up a context menu", - "ContextMenuCustomUITitle": "Custom component", - "ContextMenuCustomUIIntro": "Right click on the row of Li to pop up a context menu", - "ContextMenuTableTitle": "Table", - "ContextMenuTableIntro": "Right click on the Table to pop up a context menu", - "ContextMenuTreeTitle": "Tree", - "ContextMenuTreeIntro": "Right click on the Tree to pop up a context menu", - "ContextMenuCallbackTitle": "ContextMenu Callback", - "ContextMenuCallbackIntro": "By setting the ContextMenu component parameter OnBeforeShowCallback, you can get the callback event before the right-click menu pops up, which can be used for data preparation or render menus based on conditions", - "ContextMenuDisabledTitle": "OnDisabledCallback", - "ContextMenuDisabledIntro": "By setting the ContextMenuItem component parameter OnDisabledCallback callback method, you can set whether the current right-click option is disabled." + "BootstrapBlazor.Server.Components.Samples.Speeches.Synthesizers": { + "SynthesizerNormalIntro": "After clicking to start synthesis, perform speech synthesis on the text content", + "SynthesizerNormalTitle": "Common usage", + "SynthesizersSubTitle": "Convert text content to speech", + "SynthesizersTitle": "Synthesizer speech synthesis" }, - "BootstrapBlazor.Server.Components.Samples.DockViews.Index": { - "DockViewTitle": "DockView", - "DockViewDescription": "A multi window layout manager for webapps", - "DockViewIntro": "

      DockView component is wrapped Golden Layout lib,it is a JavaScript layout manager which enables you to layout components in a web page and re-arrange them with drag and drop. Its features include:

      • Native popup windows
      • Touch support
      • Support for application frameworks such as Angular and Vue
      • Virtual components
      • Comprehensive API
      • Load and save layouts
      • Focus components
      • Completely themeable
      • Works in modern browsers (Firefox, Chrome)
      • Responsive design
      " + "BootstrapBlazor.Server.Components.Samples.Speeches.WebSpeeches": { + "WebSpeechNormalIntro": "After entering the text, select the corresponding language to read aloud", + "WebSpeechNormalTitle": "Speech Synthesizer", + "WebSpeechRecognitionButtonText": "Recognition", + "WebSpeechRecognitionContinuousButtonText": "Recognition", + "WebSpeechRecognitionContinuousIntro": "Real-time speech recognition by setting the WebSpeechRecognitionOption parameter Continuous=\"true\" InterimResults=\"true\"", + "WebSpeechRecognitionContinuousTitle": "Real-time speech recognition", + "WebSpeechRecognitionIntro": "Input voice through microphone for voice recognition", + "WebSpeechRecognitionTitle": "Speech Recognition", + "WebSpeechSpeakButtonText": "Speak", + "WebSpeechStopButtonText": "Stop", + "WebSpeechSubTitle": "Provide speech recognition/synthesis services using browser interface functions", + "WebSpeechText": "Welcome blazor", + "WebSpeechTitle": "Web Speech Api" }, - "BootstrapBlazor.Server.Components.Samples.DockViews.DockViewCol": { - "DockViewColTitle": "DockView - Column", - "DockViewColIntro": "Make the DockView vertical by setting Type=\"DockContentType.Column\"" + "BootstrapBlazor.Server.Components.Samples.Spinners": { + "SpinnersColorIntro": "Provides a spin icon in base color", + "SpinnersColorTitle": "Spinner Spinner icon with color", + "SpinnersCustomIntro": "Custom layout with text", + "SpinnersCustomLoading": "Loading...", + "SpinnersCustomTitle": "Custom Title", + "SpinnersDescription": "Show animation when loading data", + "SpinnersFlexIntro": "Custom layout", + "SpinnersFlexTitle": "Spinner Flex", + "SpinnersFloatIntro": "Use Float layout", + "SpinnersFloatTitle": "Spinner Floats", + "SpinnersGrowingColorIntro": "Provides a spin icon in base color", + "SpinnersGrowingColorTitle": "Growing Spinner Spinning icon with color", + "SpinnersGrowingIntro": "Growing Rotation Icon", + "SpinnersGrowingTitle": "Growing Spinner spin icon", + "SpinnersNormalIntro": "Default rotate icon", + "SpinnersNormalTitle": "Basic usage", + "SpinnersSizeIntro": "Icon style size", + "SpinnersSizeTitle": "Spinner spin icon size", + "SpinnersTips": "When the page is partially waiting for asynchronous data or is being rendered, appropriate loading animations can effectively relieve the user's anxiety.", + "SpinnersTipsTitle": "when to use", + "SpinnersTitle": "Spinner icon" }, - "BootstrapBlazor.Server.Components.Samples.DockViews.DockViewRow": { - "DockViewRowTitle": "DockView - Row", - "DockViewRowIntro": "Make the DockView horizontal by setting Type=\"DockContentType.Row\"" + "BootstrapBlazor.Server.Components.Samples.Splits": { + "SplitsBarHandleHide": "Bar handle hidden", + "SplitsBarHandleShow": "Bar handle shown", + "SplitsCollapsibleFalse": "Collapse button hidden", + "SplitsCollapsibleIntro": "Set whether the panels can be collapsed by configuring the FirstPaneCollapsible and SecondPaneCollapsible properties", + "SplitsCollapsibleTitle": "Collapse/Expand", + "SplitsCollapsibleTrue": "Collapse button shown", + "SplitSetLeftIntro": "Use the component instance method SetLeftWidth to set the width of the left/top panel, and the width of the right/bottom panel will be adaptive", + "SplitSetLeftTitle": "Code to set panel width", + "SplitsMinimumIntro": "By setting FirstPaneMinimumSize SecondPaneMinimumSize values. In this example, the minimum values ​​of the left and right panels are set to 10%", + "SplitsMinimumTitle": "Minimum", + "SplitsNestedIntro": "Combine layout by nesting Split components", + "SplitsNestedTitle": "Nested use", + "SplitsNormalIntro": "Left and Right", + "SplitsNormalTitle": "Basic usage", + "SplitsPanel1": "I am the left panel", + "SplitsPanel10": "Right", + "SplitsPanel2": "I am the right panel", + "SplitsPanel3": "I am the upper panel", + "SplitsPanel4": "I am the bottom panel", + "SplitsPanel5": "Upper", + "SplitsPanel6": "Lower", + "SplitsPanel7": "Right", + "SplitsPanel8": "Upper", + "SplitsPanel9": "Lower", + "SplitsPercentIntro": "Set the proportion of the initial position by setting the Basis attribute", + "SplitsPercentTitle": "Set initialization percentage", + "SplitsTitle": "Split", + "SplitsVerticalIntro": "Control the vertical split panel by setting the IsVertical property", + "SplitsVerticalTitle": "Vertical split" }, - "BootstrapBlazor.Server.Components.Samples.DockViews.DockViewStack": { - "DockViewStackTitle": "DockView - Stack", - "DockViewStackIntro": "Make the DockView group layout by setting Type=\"DockContentType.Stack\"" + "BootstrapBlazor.Server.Components.Samples.Splittings": { + "SplittingColorIntro": "Modify the color of progress", + "SplittingColorTitle": "Color", + "SplittingColumnsIntro": "Modify the Colunms of progress bar segmentation granularity", + "SplittingColumnsText": "Colunms", + "SplittingColumnsTitle": "Colunms", + "SplittingDescription": "Display dynamic effects when loading data", + "SplittingNormalIntro": "Default Load Animation", + "SplittingNormalTitle": "Basic usage", + "SplittingText": "Loading 。。。", + "SplittingTextIntro": "Modify the displayed text content", + "SplittingTextTitle": "Custom Text", + "SplittingTips": "When parts of the page are waiting for asynchronous data or during the rendering process, appropriate loading dynamics can effectively alleviate user anxiety.", + "SplittingTipsTitle": "When to use", + "SplittingTitle": "Loader" }, - "BootstrapBlazor.Server.Components.Samples.DockViews.DockViewComplex": { - "DockViewComplexTitle": "DockView - Complex", - "DockViewComplexIntro": "Complex layouts can be achieved by combining and nesting DockContentType values" + "BootstrapBlazor.Server.Components.Samples.Stacks": { + "AlignItems": "align-items", + "AlignSelf": "align-self", + "AttrAlignItems": "Change the alignment of flex items on the cross axis", + "AttrChildContent": "Child content render fragment", + "AttrIsReverse": "Start the horizontal or vertical direction from the opposite side.", + "AttrIsRow": "Flex direction", + "AttrIsWrap": "Change how flex items wrap in a flex container", + "AttrJustify": "Change the alignment of flex items on the main axis", + "BasicIntro": "Lets you arrange its subcomponents in a horizontal or vertical stack", + "BasicTitle": "Basic", + "ColumnMode": "Column", + "IsReverse": "reverse", + "IsWrap": "wrap", + "Justify": "justify-content", + "Mode": "mode", + "RowMode": "Row", + "StackItemGrowShrinkDesc": "StackItem 子项还有两个控制方式:", + "StackItemGrowShrinkLi": "
    • Use .flex-grow-* utilities to toggle a flex item’s ability to grow to fill available space. In the example below, the .flex-grow-1 elements uses all available space it can, while allowing the remaining two flex items their necessary space.
    • Use .flex-shrink-* utilities to toggle a flex item’s ability to shrink if necessary. In the example below, the second flex item with .flex-shrink-1 is forced to wrap its contents to a new line, “shrinking” to allow more space for the previous flex item with .w-100.
    • ", + "Title": "Stack Layout" }, - "BootstrapBlazor.Server.Components.Samples.DockViews.DockViewLayout": { - "DockViewLayoutTitle": "DockView - Custom Layout", - "DockViewLayoutIntro": "Initialize the display layout of the control panel by setting the LayoutConfig property of DockView, and get the display layout of the panel by using the GetLayoutConfig method" + "BootstrapBlazor.Server.Components.Samples.Steps": { + "Step1Text": "First", + "Step1Title": "Step 1", + "Step2Text": "Second", + "Step2Title": "Step 2", + "Step3Text": "End", + "Step3Title": "Step 3", + "StepDesc": "This is a description", + "StepsAttrChildContent": "The template for child", + "StepsAttrDescription": "Describe the information", + "StepsAttrFinishedIcon": "The finished step display icon", + "StepsAttrHeaderTemplate": "The template for Header", + "StepsAttrIcon": "The step display icon", + "StepsAttrText": "The step text", + "StepsAttrTitle": "The step display title", + "StepsAttrTitleTemplate": "The template for Title", + "StepsDescIntro": "Each step described has its own description bar of step status", + "StepsDescription": "A navigation bar that guides the user through the process", + "StepsDescTitle": "There is a description of the step bar", + "StepsHeaderTemplateIntro": "custom the title by set HeaderTemplate", + "StepsHeaderTemplateTitle": "Custom the header", + "StepsNormalFinishedTemplateDesc": "By setting FinishedTemplate, the subsequent processing logic after all steps are completed can be achieved, such as displaying completed steps. If a certain delay is needed to jump to a new page, a custom component needs to be customized and processed in its OnAfterRenderAsync lifecycle", + "StepsNormalIntro": "Simple step bar, by directly binding the data source Items", + "StepsNormalNextButtonText": "Next", + "StepsNormalPrevButtonText": "Prev", + "StepsNormalResetButtonText": "Reset", + "StepsNormalTitle": "Basic usage", + "StepsStepIntro": "A simple step bar that uses the Step component setup step directly inside the component", + "StepsStepTitle": "Basic usage", + "StepsTips": "Steps component supports UI rendering by setting the Items property or by embedding the Step component directly", + "StepsTipsTitle": "Step-by-step navigation bar that guides the user through the process, setting steps of no less than 2 steps based on the actual scenario", + "StepsTitle": "Step", + "StepsTitleTemplateIntro": "custom the title by set TitleTemplate", + "StepsTitleTemplateTitle": "Custom the title", + "StepsVerticalIntro": "vertical the step by set IsVertical=\"true\"", + "StepsVerticalTitle": "Vertical step" }, - "BootstrapBlazor.Server.Components.Samples.DockViews.DockViewLock": { - "DockViewLockTitle": "DockView - Lock", - "DockViewLockIntro": "By setting the IsLock property of DockView, you can control whether all panels can be dragged." + "BootstrapBlazor.Server.Components.Samples.SvgEditors": { + "BasicIntro": "Use svg editor", + "BasicTitle": "Svg Editor", + "SvgEditorTitle": "SvgEditor" }, - "BootstrapBlazor.Server.Components.Samples.DockViews.DockViewVisible": { - "DockViewVisibleTitle": "DockView - Visible", - "DockViewVisibleIntro": "Control whether to display the component by setting Visible, and use OnVisibleStateChangedAsync to set the panel closing callback delegate method" + "BootstrapBlazor.Server.Components.Samples.SweetAlerts": { + "SwalConsoleInfo": "Return result:", + "SwalOptionContent": "Content", + "SwalOptionTitle": "Modal", + "SweetAlertsAutoCloseButtonText": "Auto close swal", + "SweetAlertsAutoCloseDescription": "parameter IsAutoHide Defaults to false to disable auto-close, The parameter Delay defaults to 4000 milliseconds", + "SweetAlertsAutoCloseIntro": "Customize the auto-close time by setting the IsAutoHide Delay property", + "SweetAlertsAutoCloseTitle": "Auto-off function", + "SweetAlertsButtonIntro": "Customize the buttons in the pop-up window by setting ButtonTemplate", + "SweetAlertsButtonTitle": "Custom button", + "SweetAlertsCloseButtonText": "close swal", + "SweetAlertsCloseDescription": "Set IsAutoHide=\"false\" ShowClose=\"false\", close the pop-up window by call await option.CloseAsync", + "SweetAlertsCloseIntro": "Close the swal popup by call SwalOption instance method CloseAsync", + "SweetAlertsCloseTitle": "Close by function", + "SweetAlertsComponentIntro": "By setting the Component popup content as a custom component", + "SweetAlertsComponentTitle": "Show custom components", + "SweetAlertsDescription": "Modal dialog box, mostly used to continue after inquiring during the action, or to display the execution result", + "SweetAlertsDisplayIntro": "By setting Title Content is used to display the title and content of the pop-up window", + "SweetAlertsDisplayTitle": "Set display content", + "SweetAlertsFooterButtonText": "Popup with Footer", + "SweetAlertsFooterDescription": "parameter ShowFooter The default is false to not display the footer template, it needs to be set to true", + "SweetAlertsFooterIntro": "Customize the Footer template by setting FooterTemplate", + "SweetAlertsFooterTitle": "Show Footer Information", + "SweetAlertsModalDescription": "This sample code calls The method await SwalService.ShowModal pops up a modal box, and the subsequent code continues to execute only after the pop-up window is closed.", + "SweetAlertsModalIntro": "By calling the await SwalService.ShowModal method, the modal box is popped up. After clicking the button in the pop-up window to close the pop-up window, the subsequent code continues to execute.", + "SweetAlertsModalTips": "IsConfirm The parameter indicates that the pop-up window is a confirmation window, and two buttons are automatically generated Cancel Confirm", + "SweetAlertsModalTitle": "Modal dialog", + "SweetAlertsNormalDoubt": "doubt", + "SweetAlertsNormalFail": "fail", + "SweetAlertsNormalHint": "hint", + "SweetAlertsNormalIntro": "Call Swal by injecting the service to pop up a dialog", + "SweetAlertsNormalSuccess": "success", + "SweetAlertsNormalTitle": "Basic usage", + "SweetAlertsNormalWarn": "warn", + "SweetAlertsPopups": "Pop-ups", + "SweetAlertsPreContentText": "I am Content", + "SweetAlertsPreTitleText": "I am Title", + "SweetAlertsTips1": "1. Inject the service SwalService", + "SweetAlertsTips2": "2. Call its instance api", + "SweetAlertsTipsTitle": "Component usage introduction", + "SweetAlertsTitle": "SweetAlert popup component" }, - "BootstrapBlazor.Server.Components.Samples.DockViews.DockViewNest": { - "DockViewNestTitle": "DockView - Nested Layouts", - "DockViewNestIntro": "DockView can be nested inside DockComponent and its label can be made invisible by setting ShowHeader=\"false\"" + "BootstrapBlazor.Server.Components.Samples.SwitchButtons": { + "SwitchButtonsDescription": "Toggle state after button click", + "SwitchButtonsNormalIntro": "Click the component to automatically switch the state", + "SwitchButtonsNormalTitle": "Basic usage", + "SwitchButtonsOnClickDescription": "OnClick callback is EventCallback will automatically refresh the current component or page, if you don't need to refresh the component or page, you can use ToggleStateChanged", + "SwitchButtonsOnClickIntro": "Initialize component state by setting ToggleState", + "SwitchButtonsOnClickTitle": "click callback method", + "SwitchButtonsTitle": "Switch Button state switch button", + "SwitchButtonsToggleStateDescription": "The current component state can be obtained by setting the ToggleStateChanged callback method", + "SwitchButtonsToggleStateIntro": "Initialize component state by setting ToggleState", + "SwitchButtonsToggleStateTitle": "initialized state" }, - "BootstrapBlazor.Server.Components.Samples.DockViews2.Index": { - "DockView2Title": "DockViewV2", - "DockView2Description": "A multi window layout manager for webapps", - "DockView2Intro": "

      DockView component is wrapped Golden Layout lib,it is a JavaScript layout manager which enables you to layout components in a web page and re-arrange them with drag and drop. Its features include:

      • Native popup windows
      • Touch support
      • Support for application frameworks such as Angular and Vue
      • Virtual components
      • Comprehensive API
      • Load and save layouts
      • Focus components
      • Completely themeable
      • Works in modern browsers (Firefox, Chrome)
      • Responsive design
      " + "BootstrapBlazor.Server.Components.Samples.Switches": { + "SwitchesBindingDescription1": "when the Switch component turns on bidirectional binding, the DisplayName label value is automatically obtained based on the bound Model property value and appears as a pre-Label, which can be customized to display the pre-label through the DisplayText property, or through the ShowLabel property turns off the display of the prelabel", + "SwitchesBindingDescription2": "The pre-label explicit rules are consistent with the BootstrapInput component of the [The portal]", + "SwitchesBindingDisplayText1": "An example of a two-way binding", + "SwitchesBindingDisplayText2": "Custom labels", + "SwitchesBindingDisplayText3": "Do not display", + "SwitchesBindingDividerText1": "Custom labels", + "SwitchesBindingDividerText2": "Occupants", + "SwitchesBindingDividerText3": "Do not occupy seats", + "SwitchesBindingDivText1": "The binding value", + "SwitchesBindingIntro": "Binding variables within a component, data is automatically synchronized", + "SwitchesBindingTips1": "Set the DisplayText value to custom label ", + "SwitchesBindingTips2": "The value of DisplayText is displayed when ShowLabel is true, regardless of whether the value is set", + "SwitchesBindingTips3": "The value of DisplayText is not displayed when the ShowLabel is false", + "SwitchesBindingTitle": "Two-way binding", + "SwitchesColorIntro": "Set the switch status color by setting the OnColor OffColor property values", + "SwitchesColorTitle": "Switch color", + "SwitchesDescription": "The most common switching applications are available", + "SwitchesDisableIntro": "Control the unavailable state of the component by setting the IsDisabled property", + "SwitchesDisableTitle": "Disable the state", + "SwitchesEventValueChanged": "Gets the value of the selection change", + "SwitchesInnerTextDescription": "By setting the onInnerText OffInnerText property to change the built-in text, a Chinese character is recommended by default to customize the component width to increase the amount of built-in text", + "SwitchesInnerTextIntro": "By setting ShowInnerText property control component displays built-in text", + "SwitchesInnerTextLabelText1": "Default text:", + "SwitchesInnerTextLabelText2": "Custom text:", + "SwitchesInnerTextOffInnerText": "Not", + "SwitchesInnerTextOnInnerText": "Be", + "SwitchesInnerTextTitle": "Displays built-in text", + "SwitchesNormalDescription": "Click the first switch to output the log with value", + "SwitchesNormalIntro": "Click the button to switch statuses", + "SwitchesNormalTitle": "Basic usage", + "SwitchesNullableIntro": "Control the default value of the Null value by setting the DefaultValueWhenNull property, which is false when not set", + "SwitchesNullableTitle": "Can be an empty type switch", + "SwitchesOffText": "Off", + "SwitchesOnText": "On", + "SwitchesTitle": "Switch" }, - "BootstrapBlazor.Server.Components.Samples.DockViews2.DockViewCol": { - "DockViewColTitle": "DockViewV2 - Column", - "DockViewColIntro": "Make the DockViewV2 layout vertically by setting Type=\"DockContentType.Column\" and initialize its panel height by setting Height=\"240\"" + "BootstrapBlazor.Server.Components.Samples.Table.Tables": { + "TableBaseBorderedIntro": "Increase the effect of table frame by setting isbordered attribute", + "TableBaseBorderedTitle": "Bordered tables", + "TableBaseDescription": "It is used to display multiple pieces of data with similar structure. You can sort, filter, compare or other user-defined operations on the data.", + "TableBaseExplain1": "The Table component already supports mobile terminal adaptation. When the screen is smaller than the rendermoderesponsewidth set value, the component will be rendered as a card for easy viewing of data, and its default value is 768 ", + "TableBaseExplain2": "Table component has a rendermode attribute. Its default value is auto and other values are defined as follows", + "TableBaseHeaderStyleDescription": " Headerstyle is the table header style, and the default value is none ", + "TableBaseHeaderStyleIntro": "By setting headerstyle Properties", + "TableBaseHeaderStyleMode": "The style of table header", + "TableBaseHeaderStyleTitle": "Header style", + "TableBaseNormalDescription": "Update data source when clicking button items component Table display data is automatically updated", + "TableBaseNormalIntro": "Basic table presentation usage", + "TableBaseNormalRefreshText": "Refresh", + "TableBaseNormalTitle": "Basic table", + "TableBaseSizeDescription": " Tablesize is an enumeration type of table size, the default value is normal , and the compact value is compact ", + "TableBaseSizeIntro": "Set the tablesize attribute to make the gap in the table smaller and suitable for big data display", + "TableBaseSizeTitle": "Compact tables", + "TableBaseStripedIntro": "Using a table with zebra stripes, it is easier to distinguish data from different rows. Just set istriped = true ", + "TableBaseStripedTitle": "Tables with zebra stripes", + "TableBaseTips1": "Auto: Use cardview mode when the screen is smaller than 768px, otherwise use Table mode", + "TableBaseTips2": "Table: Table rendering mode, using table elements for data rendering, suitable for viewing data in a wide screen", + "TableBaseTips3": "CardView:Card rendering mode, using div elements for data rendering, which is suitable for viewing data on a narrow screen", + "TableBaseTips4": "TableColumn When using @bind-Field to bind a complex type, All complex type properties must be instantiated", + "TableBaseTitle": "Table" }, - "BootstrapBlazor.Server.Components.Samples.DockViews2.DockViewRow": { - "DockViewRowTitle": "DockViewV2 - Row", - "DockViewRowIntro": "Make the DockViewV2 layout horizontally by setting Type=\"DockContentType.Row\" and initialize its panel width by setting Width=\"240\"" + "BootstrapBlazor.Server.Components.Samples.Table.TablesAttribute": { + "AutoGenerateClassAttribute": "AutoGenerateClassAttribute", + "AutoGenerateClassP1": "1. Usage", + "AutoGenerateClassP1Content": "In this example, by setting Filterable=true, all columns in the table are filterable.", + "AutoGenerateClassP2": "1. Usage", + "AutoGenerateClassP2Content": "In this example, we enable the filter function for the table's Name column by setting Filterable=true", + "AutoGenerateCode": "The equivalent code is as follows:", + "AutoGenerateColumnAttribute": "AutoGenerateColumnAttribute", + "TableAttributeColumn": "TableColumn value", + "TableAttributeDescription": "By using feature tags, you can save a lot of code", + "TableAttributeIntro": "Priority", + "TableAttributeIntroLI1": "Only AutoGenerateClassAttribute been set and its parameter value is used as the basis", + "TableAttributeIntroLI2": "Only AutoGenerateColumnAttribute been set and its parameter value is used as the basis", + "TableAttributeIntroLI3": "Write AutoGenerateClassAttribute and write AutoGenerateColumnAttribute to merge the two parameter values and take the value of AutoGenerateColumnAttribute", + "TableAttributeIntroLI4": "When setting the TableColumn parameter value, the TableColumn parameter value is the final value.", + "TableAttributeQA1": "I wrote AutoGenerateClassAttribute and AutoGenerateColumnAttribute to combine the two parameter values and give an example", + "TableAttributeQAP1": "Because AutoGenerateClassAttribute sets Filterable to true, and AutoGenerateColumn keeps Filterable to its default value of false, the final UI uses true", + "TableAttributeQAP2": "Since AutoGenerateClassAttribute is not set, Sortable remains at the default value of false, and AutoGenerateColumn sets the Sortable value to true, the final UI uses true", + "TableAttributeQAP3": "In the latest version, some parameter values ​​such as Filterable of TableColumn are changed to nullable data type, and their default value is changed from false to null. Therefore, as long as the value of the Filterable parameter of TableColumn is not null, the TableColumn value is used as the final UI value.", + "TableAttributeTitle": "AutoGenerateClassAttribute/AutoGenerateColumnAttribute" }, - "BootstrapBlazor.Server.Components.Samples.DockViews2.DockViewGroup": { - "DockViewGroupTitle": "DockViewV2 - Group", - "DockViewGroupIntro": "Make the DockViewV2 group layout by setting Type=\"DockContentType.Group\"" + "BootstrapBlazor.Server.Components.Samples.Table.TablesAutoRefresh": { + "TablesAutoRefreshControlDescription": "Enable/disable automatic update function by clicking the button", + "TablesAutoRefreshControlIntro": "This example controls whether to automatically update by setting a variable", + "TablesAutoRefreshControlIsAutoRefresh": "The current value", + "TablesAutoRefreshControlTitle": "Control whether to update automatically by setting a variable", + "TablesAutoRefreshControlToggleAuto": "Change Auto", + "TablesAutoRefreshDescription": "In a certain application scenario, the change of the data source needs to refresh the table component", + "TablesAutoRefreshNormalIntro": "This example demonstrates monitoring the data source in a background thread, and notifies the table component to refresh the data when the data source changes", + "TablesAutoRefreshNormalTips1": "The auto refresh function is enabled by setting the value of the IsAutoRefresh property. The default value of the AutoRefreshInterval property is 2000 milliseconds, which is the auto refresh interval, and the component's QueryAsync is called periodically. The method makes the table auto-refresh", + "TablesAutoRefreshNormalTips2": "In this example, a new piece of data is added every 2 seconds and a maximum of 10 pieces of data are maintained", + "TablesAutoRefreshNormalTitle": "Auto Refresh" }, - "BootstrapBlazor.Server.Components.Samples.DockViews2.DockViewComplex": { - "DockViewComplexTitle": "DockViewV2 - Complex", - "DockViewComplexIntro": "Complex layouts can be achieved by combining and nesting DockContentType values" + "BootstrapBlazor.Server.Components.Samples.Table.TablesCell": { + "TableCellMergeCellIntro": "Basic table display usage", + "TableCellMergeCellTip": "In this example, by setting the OnCellRenderHandler callback delegate, the cell merge operation is performed on the two columns Name and Address through the judgment condition, And set the background color of the merged cell by setting the TableCellArgs attribute Class value to cell-demo style sheet name", + "TableCellMergeCellTitle": "Merge Cells", + "TableCellOnDoubleClickCellCurrentCellName": "Current cell name:", + "TableCellOnDoubleClickCellCurrentValue": "Current Value:", + "TableCellOnDoubleClickCellIntro": "Set the double-click event of the current cell by setting the OnDoubleClickColumn callback", + "TableCellOnDoubleClickCellTip": "After setting the double-click cell callback, a subscript horizontal line appears in the cell after the mouse hovers over the cell, as a reminder, which can be overridden by the .table-cell .is-dbcell style", + "TableCellOnDoubleClickCellTitle": "Double-click cell", + "TableCellOnDoubleClickCellToastTitle": "Double-click cell callback", + "TablesCellDescription": "Cell related operation example", + "TablesCellTitle": "Table Cell" }, - "BootstrapBlazor.Server.Components.Samples.DockViews2.DockViewLayout": { - "DockViewLayoutTitle": "DockViewV2 - Custom Layout", - "DockViewLayoutIntro": "Initialize the display layout of the control panel by setting the LayoutConfig property of DockView, and get the display layout of the panel by using the GetLayoutConfig method" + "BootstrapBlazor.Server.Components.Samples.Table.TablesColumn": { + "AdvanceIntro": "Custom rendering of columns by showing template Template", + "AdvanceTitle": "Practical Example", + "AlignIntro": "Set the alignment by specifying the Align attribute when the column is bound", + "AlignP1": "In this example the column DateTime is set to center alignment Alignment.Center", + "AlignP2": "In this example the column Count is set to right-align Alignment.Right", + "AlignTitle": "Column data alignment", + "BindComplexObjectButtonText": "Set company", + "BindComplexObjectIntro": "When binding a complex type, whether the bound object collection is empty or not, the TItem must provide a parameterless constructor. Otherwise, it is required to provide a construction callback through CreateItemCallback. When binding a complex expression, the bound expression must not throw a NullReferenceException exception. If the business logic cannot avoid this issue, it is recommended to handle it using a Template", + "BindComplexObjectP1": "In this example, the complex type ComplexFoo does not have a parameterless constructor, so a construction callback for ComplexFoo should be provided through CreateItemCallback", + "BindComplexObjectP2": "In this example, we want to bind a complex expression context.Company.Name to the column CompanyName, but the business logic cannot ensure that the value of the Company property is not null at the time of binding. Therefore, we can first bind a simple expression and then handle it using the column template Template", + "BindComplexObjectTitle": "Bind Complex Types and Expressions", + "ColumnIgnoreButtonText": "Ignoring/Not Ignoring", + "ColumnIgnoreIntro": "By setting the Ignore parameter to control whether the column is rendered, this parameter is different from Visible. SettingVisible=\"false\" to not display the column can be checked and displayed in the list through ShowColumnList=\"true\"", + "ColumnIgnoreTitle": "Column Ignored", + "ColumnOrderIntro": "Set the order by setting the Order parameter of TableColumn", + "ColumnOrderTitle": "Column Order", + "ColumnTextDesc": "The fields in the table component TableColumns template are automatically displayed according to the DisplayName tag value of the bound model. If you want to customize the display name, please set Text property", + "ColumnTextIntro": "Add column header display name by setting Text", + "ColumnTextTitle": "Custom column name", + "ComplexFooAddress": "Address", + "ComplexFooAge": "Age", + "ComplexFooCompany": "Company", + "ComplexFooDateTime": "DateTime", + "ComplexFooName": "Name", + "CustomColText1": "Custom Column Name 1", + "CustomColText2": "Custom column name 2", + "CustomColText3": "Custom column name 3", + "DisabledIntro": "RowTemplate internal component TableCell set Checkbox and set related data binding. In this example, data binding will select The box component is bound to the value", + "DisabledTitle": "Select Box Column", + "FormatterIntro": "Format the cell value by specifying the FormatString or Formatter callback delegate when the column is bound", + "FormatterP1": "In this example the column DateTime values ​​are formatted according to FormatString to yyyy-MM-dd year month day format", + "FormatterP2": "In this example the column Count value is formatted according to Formatter to 0.00 with two decimal places", + "FormatterTitle": "Custom column data format", + "MoreButtonColorDesc": "Set the button color using MoreButtonColor", + "MoreButtonTextDesc": "Set the button's text using MoreButtonText", + "OnColumnCreatingIntro": "By specifying OnColumnCreating callback, make secondary data changes to the column collection", + "OnColumnCreatingLi1": "Remove the display of some columns according to business logic", + "OnColumnCreatingLi2": "Render components to specific columns according to business logic and assign values ​​to ComponentType ComponentParameters", + "OnColumnCreatingP1": "Existing columns can be extended through the parameters in the OnColumnCreating callback method:", + "OnColumnCreatingP2": "You can also implement some special functions according to your own business logic; in this example, the Name column is set to read-only through the callback function", + "OnColumnCreatingTitle": "Set current column properties", + "SelectIntro": "Add the first column of the table by setting IsMultipleSelect=\"true\" to select the column, and the ShowRowCheckboxCallback callback delegate can control whether each row displays the checkbox. In this example, the Complete attribute to control whether to display the checkbox", + "SelectTitle": "Table with select list", + "ShowCheckboxIntro": "By setting ShowCheckboxText=true the display text in the first column of the table is select", + "ShowCheckboxTitle": "Checkbox table with display text", + "ShowColumnToolboxIntro": "Enable the column toolbar button by setting the ToolboxTemplate parameter", + "ShowColumnToolboxTitle": "Column Toolbox", + "ShowCopyColumnDesc": "You can fine-tune the Tooltip related parameters of the copy column data icon by setting ShowCopyColumnTooltip CopyColumnTooltipText CopyColumnCopiedTooltipText and other settings", + "ShowCopyColumnIntro": "Set ShowCopyColumn show the icon for copy entire column data", + "ShowCopyColumnTitle": "Show copy column icon", + "ShowMoreButtonDesc": "MoreButtonDropdownTemplate Context context is the instance of the current row.", + "ShowMoreButtonIntro": "By setting the ShowMoreButton parameter, a More button appears when the row expands. Furthermore, by setting the MoreButtonDropdownTemplate template, the dropdown menu options are customized. This design significantly reduces the amount of row space occupied.", + "ShowMoreButtonTitle": "ShowMoreButton", + "TablesColumnDescription": "Used to display multiple pieces of data with similar structures, data can be sorted, filtered, compared or other custom operations.", + "TablesColumnTitle": "Table Column" }, - "BootstrapBlazor.Server.Components.Samples.DockViews2.DockViewLock": { - "DockViewLockTitle": "DockViewV2 - Lock", - "DockViewLockIntro": "By setting the IsLock property of DockViewV2, you can control whether all panels can be dragged, and by setting ShowLock, you can control whether the lock button is displayed." + "BootstrapBlazor.Server.Components.Samples.Table.TablesColumnDrag": { + "AllowDragOrderDesc": "

      Pressing the mouse over a column heading and dragging it to another column heading position can adjust the column to be in front of the target column, but the built-in columns in the Table component, such as DetailRow, LineNo, MultipleSelect, and Operation columns, cannot be adjusted

      This example enables localized storage by setting the ClientTableName parameter. After dragging and adjusting the order, the page can be refreshed, and the column order remains in the previous state

      By setting the ColumnOrderCallback callback method, server-side column order persistence can be achieved

      ", + "AllowDragOrderIntro": "By specifying AllowDragColumn, set the table columns to allow dragging column headings to adjust the table column order", + "AllowDragOrderTitle": "Allow dragging column headings to adjust table column order", + "TablesColumnDescription": "Used to display multiple pieces of data with similar structures, data can be sorted, filtered, compared or other custom operations.", + "TablesColumnTitle": "Table Column" }, - "BootstrapBlazor.Server.Components.Samples.DockViews2.DockViewTitle": { - "DockViewTitleTitle": "DockViewV2 - Title", - "DockViewTitleIntro": "By setting ShowTitleBar to control whether to display the function button before the title, use OnClickTitleBarCallback to set the callback delegate method, and use TitleTemplate to customize complex functions" + "BootstrapBlazor.Server.Components.Samples.Table.TablesColumnList": { + "ResetVisibleColumnsButtonText": "Set Columns", + "ResetVisibleColumnsDesc": "Call the instancel method ResetVisibleColumns of Table for set the multiple columns visible value", + "ShowColumnListControlsDesc": "The ShowColumnListControls setting controls whether the column dropdown list displays control buttons. The built-in control buttons are All and Invert.", + "ShownWithBreakPointIntro": "Set whether to display at different widths by specifying the ShownWithBreakPoint attribute", + "ShownWithBreakPointLi1": "None is displayed if not set", + "ShownWithBreakPointLi2": "Small is displayed when the screen is greater than or equal to 576px", + "ShownWithBreakPointLi3": "Medium is displayed when the screen is greater than or equal to 768px", + "ShownWithBreakPointLi4": "Large is displayed when the screen is greater than or equal to 992px", + "ShownWithBreakPointLi5": "ExtraLarge is displayed when the screen is greater than or equal to 1200px", + "ShownWithBreakPointP1": "ShownWithBreakPoint enumeration value: ", + "ShownWithBreakPointP2": "In this example, the Count column is set to BreakPoint.Large, that is, the screen will only be displayed when it is larger than 992px", + "ShownWithBreakPointP3": "Note:", + "ShownWithBreakPointP4": "Because the Table component supports mobile adaptation by default, the card mode is used for small screens. In this example, the explicit setting uses RenderMode=\"TableRenderMode. Table\" mode", + "ShownWithBreakPointTitle": "Automatically show/hide columns based on screen width", + "TablesColumnDescription": "Used to display multiple pieces of data with similar structures, data can be sorted, filtered, compared or other custom operations.", + "TablesColumnTitle": "Table Column", + "VisibleIntro": "Set whether the column is displayed by specifying the ShowColumnList attribute", + "VisibleP1": "ShowColumnList The default value is false, and if it is explicitly specified as true, the corresponding column adjustment button will appear in the toolbar", + "VisibleP2": "TableColumn adds the Visiable property, its default value is true, this column will not be displayed when the display is set to false", + "VisibleP3": "In this example, the quantity column is not displayed by setting Visible, and it can be displayed through the column control button", + "VisibleP4": "Trigger the OnColumnVisibleChanged callback when switch the column state Show/Hide", + "VisibleTitle": "Custom show/hide columns" }, - "BootstrapBlazor.Server.Components.Samples.DockViews2.DockViewVisible": { - "DockViewVisibleTitle": "DockViewV2 - Visible", - "DockViewVisibleIntro": "Control whether to display the component by setting Visible, and use OnVisibleStateChangedAsync to set the panel closing callback delegate method" + "BootstrapBlazor.Server.Components.Samples.Table.TablesColumnResizing": { + "AllowResizingDesc": "Note: Table scrollbar only appears when the parent container has valid width values, By setting the ShowColumnWidthTooltip parameter, you can control whether to display the column width tooltip. The default value is false", + "AllowResizingIntro": "Set table columns to allow resizing by specifying AllowResizing", + "AllowResizingTitle": "Allow column resizing", + "CustomerButtonTitle": "Custom button processing method", + "OnRowButtonClickContent": "The button processing logic is distinguished by different functions, and the parameter Item is the current row data", + "TablesColumnDescription": "Used to display multiple pieces of data with similar structures, data can be sorted, filtered, compared or other custom operations.", + "TablesColumnTitle": "Table Column", + "WidthButtonText1": "Details", + "WidthButtonText2": "Edit", + "WidthButtonText3": "Permissions", + "WidthButtonText4": "Approval", + "WidthConfirmButtonText": "Confirm", + "WidthIntro": "By setting the TableColumn Width property, the column width is controlled, and the inline button operation column width is controlled by the ExtendButtonColumnWidth property", + "WidthP1": "Continue the previous example in this example, implement four custom function buttons, and extend them to the row. When each button is clicked, there is a corresponding callback delegate method. TableToolbarButton uses It is the way of Delegate to complete the data exchange. When the toolbar button is clicked, set the OnClick delegate method to obtain the selected row data set in the table", + "WidthP2": "RowButtonTemplate button template places the custom button behind the built-in button by default. If you need to place the custom button before the built-in button, please use the BeforeRowButtonTemplate template", + "WidthP3": "Control whether the button is displayed by setting the button IsShow parameter", + "WidthTitle": "Customize the width of each column" }, - "BootstrapBlazor.Server.Components.Samples.DockViews2.DockViewNest": { - "DockViewNestTitle": "DockViewV2 - Nested Layouts", - "DockViewNestIntro": "DockViewV2 can be nested inside the DockViewComponent component. Its label can be made invisible by setting ShowHeader=\"false\"" + "BootstrapBlazor.Server.Components.Samples.Table.TablesColumnTemplate": { + "AutoGenerateColumnsIntro": "By specifying the AutoGenerateColumns property value as true, enable the function of automatically generating column information based on the binding model", + "AutoGenerateColumnsLi1": "Ignore means ignore this property, i.e. not generate", + "AutoGenerateColumnsLi2": "Readonly means read only", + "AutoGenerateColumnsLi3": "For more attributes, see Source code", + "AutoGenerateColumnsP1": "In this example, by setting the value of AutoGenerateColumns to true, the automatic column generation function is enabled. All attributes of the bound model entity class are all generated by default. code>AutoGenerateColumnAttribute
      tag class for function settings, such as: ", + "AutoGenerateColumnsP2": " In this example the date column is formatted through the [AutoGenerateColumn(Order = 1, FormatString = \"yyyy-MM-dd\")] tag; Set the template column in the code to customize the Complete column and use the Switch component to render; through the [AutoGenerateColumn(Order = 10)] tag in the Order set the display order", + "AutoGenerateColumnsTitle": "Auto Generate Columns", + "TableColumnIntro": "Customize the Template template of the TableColumn column to implement any UI", + "TableColumnLi1": "Value is the data value of the currently bound column", + "TableColumnLi2": "Row is the data value of the row where the currently bound column is located", + "TableColumnP1": "In this example, the column DateTime value is displayed in different colors depending on whether the Complete value is true", + "TableColumnP2": "In this example, the column Complete is displayed as a Checkbox component according to the value of Complete", + "TableColumnP3": "Template template comes with Context associated context, its value is of type TableColumnContext", + "TableColumnTitle": "Custom Column Data Template", + "TablesColumnDescription": "Used to display multiple pieces of data with similar structures, data can be sorted, filtered, compared or other custom operations.", + "TablesColumnTitle": "Table Column", + "TableTemplateTips": "Special attention: When using the Template, practical application scenarios often encounter situations where several or more columns need to be linked. In this case, directly placing the linked components into the EditTemplate cannot complete the linkage. The correct approach is to separate the small components that need to be linked into a separate component and complete the linkage within this component", + "TemplateIntro": "By specifying Template set the last column to display as a custom button", + "TemplateTitle": "Custom Column Template" }, - "BootstrapBlazor.Server.Components.Samples.MouseFollowers": { - "MouseFollowersTitle": "Mouse Follower", - "MouseFollowersDescription": "create amazing and smooth effects for the mouse cursor on your website.。", - "MouseFollowerNormalTitle": "Normal mode", - "MouseFollowerNormalIntro": "A Mouse Follower pointer", - "MouseFollowerTextTitle": "Text mode", - "MouseFollowerTextIntro": "To display text in the cursor use this method", - "MouseFollowerIconTitle": "Icon mode", - "MouseFollowerIconIntro": "If you use SVG spritesheet in your project and want to display them in the cursor, then you can use this method. In this case, you need to specify the path to the SVG sprite in the options and set class names.", - "MouseFollowerImageTitle": "Image mode", - "MouseFollowerImageIntro": "This method allows you to show any picture in the cursor", - "MouseFollowerVideoTitle": "Video mode", - "MouseFollowerVideoIntro": "You can also play videos", - "MouseFollowersFollowerMode": "MouseFollowerMode.Normal,MouseFollowerMode.Text ,MouseFollowerMode.Icon ,MouseFollowerMode.Image ,MouseFollowerMode.Video ", - "MouseFollowersGlobalMode": "Global | Local, Mode", - "MouseFollowersContent": "Text | icon | imagepath | videopath" + "BootstrapBlazor.Server.Components.Samples.Table.TablesDetailRow": { + "DetailRowTemplate2Intro": "Set the detail behavior sub-table data by setting the DetailRowTemplate template", + "DetailRowTemplate2P": "Another Table component is nested in the detail row. Since each row must be associated with sub-table data, for performance reasons, this function adopts the lazy loading mode. , that is, after clicking the expand button, the nested Table is filled with data, and the ShowDetailRow callback delegate can control whether each row displays the detail row. In this example, the Complete attribute to control whether to display the detail line, you can test this function by turning the page", + "DetailRowTemplate2Title": "Nested Table Component Application", + "DetailRowTemplate3Intro": "Set the detail row content by setting the DetailRowTemplate template", + "DetailRowTemplate3P": "In this example, the Tab component is used in the detail row to split the data into two TabItem contents again to demonstrate the data splitting again", + "DetailRowTemplate3Title": "Use Tab component in detail row", + "DetailRowTemplateIntro": "Set the detail row content by setting the DetailRowTemplate template", + "DetailRowTemplateIsAccordion": "IsAccordion", + "DetailRowTemplateP": "In the detail row, another field education of the binding row is displayed in the form of ordinary text", + "DetailRowTemplateTitle": "Simple Application", + "DynamicIntro": "Data source is DataTable", + "DynamicTitle": "Detail row of dynamic data", + "EducationText": "Education:", + "HeightIntro": "Set the content of the detail row by setting the Height template after the header is fixed", + "HeightP": "In this example, after the header is fixed, the detail line function is enabled", + "HeightTitle": "Fix the header to enable the detail row function", + "TabItemText": "Associated Data", + "TablesDetailRowDesc": "Used to display parent-child relationship table data" }, - "BootstrapBlazor.Server.Components.Samples.ExportPdfButtons": { - "ExportPdfButtonsTitle": "Convert specified webpage content to Pdf", - "ExportPdfButtonsDescription": "Export HTML fragments or web page elements as Pdf", - "ExportPdfButtonTips": "IHtml2Pdf service interfaces, please refer to [Portal]", - "NormalTitle": "ElementId", - "NormalIntro": "Export specified elements by Id", - "SelectorTitle": "Selector", - "SelectorIntro": "Export Pdf by specifying element Selector", - "GroupBoxTitle": "Edit form", - "ToastTitle": "Export Pdf", - "ToastContent": "Exporting Pdf file", - "ToastDownloadTitle": "Download Pdf", - "ToastDownloadContent": "Pdf file {0} download successful", - "AttributeElementId": "Specify the export Pdf element Id", - "AttributeSelector": "Specify export Pdf element selector", - "AttributeStyleTags": "Specify the export of Pdf element style sheets", - "AttributeScriptTags": "Specify export Pdf element script", - "AttributePdfFileName": "Specify the export Pdf file name", - "AttributeAutoDownload": "Do you want to automatically download Pdf", - "AttributeOnBeforeExport": "Callback delegate before exporting Pdf", - "AttributeOnBeforeDownload": "Callback delegate before downloading Pdf", - "AttributeOnAfterDownload": "Callback delegate after downloading Pdf" + "BootstrapBlazor.Server.Components.Samples.Table.TablesDialog": { + "TableDialogNormalChoose": "Choose", + "TableDialogNormalDescription": "In this example, if the Modal component is linked with Table, the data is selected in the pop-up window, and then edited", + "TableDialogNormalIntro": "Click the Select button in the toolbar to pop up a dialog box to select candidate data", + "TableDialogNormalSelectItem": "Select item", + "TableDialogNormalSure": "Sure", + "TableDialogNormalTips1": "Click the Select button to pop up a dialog box to select the product Product", + "TableDialogNormalTips2": "After selecting the product in the pop-up window, click the OK button to close the pop-up window", + "TableDialogNormalTips3": "Click the Edit button, since some data are set as read-only, only the Count field can be changed", + "TableDialogNormalTitle": "Data linkage in the pop-up window", + "TablesDialogDescription": "Used in data selection with hierarchical relationship" }, - "BootstrapBlazor.Server.Components.Samples.Html2Pdfs": { - "Html2PdfTitle": "Html export to Pdf", - "Html2PdfDescription": "Export Html fragments or web page elements as Pdf", - "Html2PdfNote": "If you export too much content, signalR communication interruption may be triggered. Please adjust the HubOptions configuration.", - "Html2PdfElementTitle": "Export DOM", - "Html2PdfElementIntro": "Export Html element content as Pdf stream", - "Html2PdfElementDesc": "Call IHtml2Pdf service instance method PdfStreamFromHtmlAsync. export html to Pdf", - "ExportPdfButtonTitle": "ExportPdfButton", - "ExportPdfButtonIntro": "Export the specified Id element content as Pdf by setting ExportPdfButton component parameter ElementId", - "ExportButtonText": "Export Pdf", - "ToastTitle": "Export Pdf", - "ToastContent": "Export table by id to pdf success.", - "Tips1": "Introduce", - "Tips2": "service", - "PackageIntro": "Component default not implemented IHtml2Pdf, please refer to the package BootstrapBlazor.Html2Pdf package", - "Html2PdfIntro1": "1. Retrieve web page elements through the getHTML script HTML code", - "Html2PdfIntro2": "2. Generate web page code using a template using HTML code. Note the style sheet required for the web page needs to be provided _content/BootstrapBlazor/css/bootstrap.blazor.bundle.min.css", - "Html2PdfIntro3": "3. Convert web pages to Pdf using the IHtml2Pdf service instance method PdfStreamFromHtmlAsync", - "Html2PdfIntro4": "4. IHtml2Pdf Implement service usage PuppeterSharp convert web pages to Pdf, download Chromium runtime when running for the first time, which may be slow under poor network conditions" + "BootstrapBlazor.Server.Components.Samples.Table.TablesDynamic": { + "TablesDynamicDataTableIntro": "Only show DataTable data", + "TablesDynamicDataTableTitle": "Common usage", + "TablesDynamicDescription": "Supports dynamically adding columns", + "TablesDynamicDynamicColButtonAddColumnText": "Add Column", + "TablesDynamicDynamicColButtonRemoveColumnText": "Remove Column", + "TablesDynamicDynamicColIntro": "Dynamic adjustment of the DataTable table component automatically updates via code", + "TablesDynamicDynamicColTitle": "Dynamic Column", + "TablesDynamicEditDescription": "By setting the OnChanged callback method of the DataTableDynamicContext instance, the value is automatically set when a new row is created", + "TablesDynamicEditIntro": "Add editing and maintenance functions", + "TablesDynamicEditTitle": "Edit function", + "TablesDynamicPageIntro": "Use Pagination component", + "TablesDynamicPageTitle": "Pagination", + "TablesDynamicTitle": "Table Dynamic" }, - "BootstrapBlazor.Server.Components.Samples.Live2DDisplays": { - "Live2DDisplayTitle": "Live2D Widget", - "Live2DDisplayDescription": "Live2D Widget plugin based on pixi live2d display, supporting all versions of Live2D models.", - "Live2DDisplayNormalTitle": "Usage", - "Live2DDisplayNormalIntro": "By adjusting the default parameter options, achieve dynamic changes in the model.", - "Live2DDisplayNormalTips": "Add the following code to Program.cs.", - "Live2DDisplaysSource": "Model data source, CDN path or local path.", - "Live2DDisplaysScale": "Model Display Scale.", - "Live2DDisplaysXOffset": "The X-axis offset of the model on the canvas canvas canvas.", - "Live2DDisplaysYOffset": "The Y-axis offset of the model on the canvas canvas canvas.", - "Live2DDisplaysIsDraggable": "Can the model be dragged (not yet implemented).", - "Live2DDisplaysAddHitAreaFrames": "Display the model by clicking on the area box.", - "Live2DDisplaysPosition": "The default display location enumeration for the model.", - "Live2DDisplaysBackgroundColor": "Canvas palette background color.", - "Live2DDisplaysBackgroundAlpha": "Is the canvas canvas canvas background transparent." + "BootstrapBlazor.Server.Components.Samples.Table.TablesDynamicExcel": { + "TablesDynamicExcelDescription": "Commonly used for large data sheet maintenance", + "TablesDynamicExcelEnumIntro": "Set the column Items value, and render the enum type into a Select component", + "TablesDynamicExcelEnumNotSet": "not set", + "TablesDynamicExcelEnumTip": "Use the above code to render the Education column using the Select component", + "TablesDynamicExcelEnumTitle": "Enum type", + "TablesDynamicExcelKeyboardDescription": "Currently supported", + "TablesDynamicExcelKeyboardIntro": "This example is used to test keyboard support in Excel mode", + "TablesDynamicExcelKeyboardTips1_note1": "Set the TItem property of the Table component to DynamicObject", + "TablesDynamicExcelKeyboardTips1_note2": "Set the DynamicContext property of the Table component to the DataTableDynamicContext instance", + "TablesDynamicExcelKeyboardTips1_note3": "Set the Enum type to render to Select", + "TablesDynamicExcelKeyboardTips1_note4": "Convert enum to List", + "TablesDynamicExcelKeyboardTips1_Title": "1. Set the data source context", + "TablesDynamicExcelKeyboardTips2_note1": "Set the OnChanged callback delegate function to handle the New/Delete logic", + "TablesDynamicExcelKeyboardTips2_note2": "output log information", + "TablesDynamicExcelKeyboardTips2_Title": "2. Handle DataRow change logic", + "TablesDynamicExcelKeyboardTips3_note1": "Set the OnValueChanged callback delegate function to handle the cell update logic", + "TablesDynamicExcelKeyboardTips3_note2": "Get built-in OnValueChanged callback", + "TablesDynamicExcelKeyboardTips3_note3": "Invoke internally provided methods", + "TablesDynamicExcelKeyboardTips3_note4": "The internal method updates the original data source DataTable", + "TablesDynamicExcelKeyboardTips3_note5": "output log information", + "TablesDynamicExcelKeyboardTips3_Title": "3. Handle DataCell change logic", + "TablesDynamicExcelKeyboardTips_DatTable": "When using DatTable as the data source, you need to follow the steps below to set", + "TablesDynamicExcelKeyboardTips_IsExcel": "After the IsExcel mode is enabled, some parameters will no longer take effect, and the zebra IsStriped tree table IsTree has more detail lines IsDetails Select column IsMultipleSelect", + "TablesDynamicExcelKeyboardTitle": "Keyboard Support", + "TablesDynamicExcelNormalDescription": "When the binding is dynamic type in Excel mode, TableColumn cannot be used to set column properties. In this example is used DynamicContext Instance object DataTableDynamicContext constructor to set", + "TablesDynamicExcelNormalIntro": "Make the component render like Excel by setting the table's IsExcel property", + "TablesDynamicExcelNormalTitle": "Excel mode", + "TablesDynamicExcelTitle": "Excel-DataTable" }, - "BootstrapBlazor.Server.Components.Samples.SlideButtons": { - "SlideButtonTitle": "SlideButton", - "SlideButtonIntro": "After clicking the button, a function menu and other information will pop up, mostly used for displaying secondary functions", - "SlideButtonHeaderText": "Foo List", - "BaseUsageText": "Basic usage", - "BaseUsageIntro": "Provide secondary function menu data items by setting Items", - "ShowHeaderText": "ShowHeader", - "ShowHeaderIntro": "By setting ShowHeader to control whether a title bar is displayed, the default value is false", - "AutoCloseText": "IsAutoClose", - "AutoCloseIntro": "By setting IsAutoClose to control whether to click on areas outside the pop-up window to automatically close the pop-up window", - "SlideButtonItemsText": "SlideButtonItems", - "SlideButtonItemsIntro": "Directly enter the SlideButtonItems collection as the data source on the page", - "BodyTemplateText": "BodyTemplate", - "BodyTemplateIntro": "Customize the pop-up data by setting BodyTemplate" + "BootstrapBlazor.Server.Components.Samples.Table.TablesDynamicObject": { + "TablesDynamicObjectDescription": "Use the IDynamicMetaObjectProvider class as a data source", + "TablesDynamicObjectIDynamicObjectIntro": "Use the IDynamicObject data collection as the data source by setting the Items data source", + "TablesDynamicObjectIDynamicObjectTitle": "IDynamicObject collection", + "TablesDynamicObjectMetaObjectProviderIntro": "Use the IDynamicMetaObjectProvider data collection as the data source by setting the Items data source", + "TablesDynamicObjectMetaObjectProviderTitle": "IDynamicMetaObjectProvider Collection", + "TablesDynamicObjectTitle": "Table table" }, - "BootstrapBlazor.Server.Components.Samples.DialButtons": { - "DialButtonTitle": "DialButton", - "DialButtonIntro": "After clicking the button, a function menu and other information will pop up, mostly used for displaying secondary functions", - "BaseUsageText": "Basic usage", - "BaseUsageIntro": "By setting Placement value for set the dial button popup direction" + "BootstrapBlazor.Server.Components.Samples.Table.TablesEdit": { + "TablesColumnEditTemplateDescription1": "Use the drop-down box to select the name when custom editing by setting the EditTemplate of the name column", + "TablesColumnEditTemplateIntro": "When the EditTemplate of the column is set, the component automatically generates the form maintenance UI using this template as the rendered UI; Hobby is listed as a custom component DemoHobbyTemplate and is rendered using a multi-select box component", + "TablesColumnEditTemplateTips": "In this example, Name is listed as a custom component TableNameDrop, which defaults to please select ... when creating a new one", + "TablesColumnEditTemplateTitle": "Custom column editing template", + "TablesEditDataServiceDescription": "custom data service", + "TablesEditDataServiceIntro": "By setting the DataService attribute of the table, use an independent data service to add, delete, modify and check data", + "TablesEditDataServiceTips1": "After enabling the use of the injected data service, you can set the component individually by setting the DataServices parameter, if the instance provided by the internal use of the injected service is not set", + "TablesEditDataServiceTips2": "In this example, by setting the EditDialogShowMaximizeButton parameter, the Maximize button is displayed in the edit pop-up window", + "TablesEditDataServiceTitle": "Use custom data services", + "TablesEditDescription": "Commonly used in single table maintenance, simple addition, deletion, modification, search, sorting, filtering, search and other common functions can be realized through attribute configuration, and very complex business requirements can be realized through advanced usage of Template", + "TablesEditFooterTemplateDescription": "Click the Edit button in the table to pop up the Edit pop-up window. The buttons in the pop-up window Footer are user-defined buttons. In order to keep the functions of the original Close and Save buttons while facilitating the second opening, two corresponding components DialogCloseButton DialogSaveButton These two buttons do not need to write the click related processing methods", + "TablesEditFooterTemplateIntro": "Set EditFooterTemplate custom button in EditDialog Footer", + "TablesEditFooterTemplateTitle": "Custom button in EditDialog footer", + "TablesEditInjectDataServiceDescription": "The database operations of adding, deleting, modifying and checking are performed by registering the data service without assigning the following callback delegates. The priority level is that the callback method is called first if there is a callback method.", + "TablesEditInjectDataServiceIntro": "When the data operation callback method is not provided, the component automatically finds the registered data service to add, delete, modify and check the data.", + "TablesEditInjectDataServiceTips1": "Startup file injects data service", + "TablesEditInjectDataServiceTips2": "Implementation principle and usage introduction", + "TablesEditInjectDataServiceTips3": "custom data service", + "TablesEditInjectDataServiceTips4": "After enabling the use of the injected data service, you can set the component individually by setting the DataServices parameter, if the instance provided by the internal use of the injected service is not set", + "TablesEditInjectDataServiceTitle": "Using the inject data service", + "TablesEditItemsDescription": "Setting Items as the data source eliminates the need to set OnSaveAsync OnDeleteAsync callback delegates to use built-in processing logic for updates and deletes. Meanwhile, it should be noted that the [Key] tag of the Foo attribute of the class instance Foo of the generic constraint of TItem should be configured correctly; The `IsGroupExtendButtons` parameter controls whether the inline function buttons are displayed in a group. The default is `true`.", + "TablesEditItemsIntro": "Set Items as the data source, without setting OnSaveAsync OnDeleteAsync callback delegate to use built-in processing logic to update and delete functions", + "TablesEditItemsTitle": "Use collection as data source to realize editing function", + "TablesEditModeAddModalTitle": "Add test data window", + "TablesEditModeDescription": "EditMode is an enumeration type and its values ​​are: Popup EditForm InCell Its default value is Popup pop-up window to edit row data", + "TablesEditModeDrawer": "Drawer Pattern example", + "TablesEditModeEditModalTitle": "Edit Test Data Window", + "TablesEditModeInCell": "InCell Pattern example", + "TablesEditModeIntro": "By setting the EditMode property of the table, set the component to edit the row data in the pop-up window or edit the data in the row", + "TablesEditModeTips1": "In this example, the data source Items is set as two-way binding, which is especially suitable for parent-child table entry. You can directly use the data source when saving.", + "TablesEditModeTips2": "EditForm Pattern example", + "TablesEditModeTitle": "set edit mode", + "TablesEditOnAddAsyncDescription": "Client-side validation can be achieved by setting validation tags such as [Required] of the Foo attribute of the class instance Foo of the generic constraint of TItem", + "TablesEditOnAddAsyncIntro": "When the OnAddAsync or OnSaveAsync callback delegate method is set, if the EditTemplate is not set to edit the template, the component will try to automatically generate the form maintenance UI", + "TablesEditOnAddAsyncTips1": "When the data binding type is a nullable type, it is automatically allowed to be null, such as the date binding column is of type DateTime?", + "TablesEditOnAddAsyncTips2": "When the data binding type is a numerical type, for example, if the quantity binding column is of type int, numerical verification is performed automatically", + "TablesEditOnAddAsyncTips3": "Some data columns presented in the table are calculated results. This type of column cannot be edited. By setting Ignore=true to automatically generate the editing UI, the editing component of this column will not be generated, such as In this example, the Count column does not appear in the edit popup", + "TablesEditOnAddAsyncTips4": "By setting Readonly=true to automatically generate editing UI, this field will be read-only, please assign the default value to Model when creating a new one", + "TablesEditOnAddAsyncTips5": "Make the extension buttons appear in front of the row by setting IsExtendButtonsInRowHeader=true", + "TablesEditOnAddAsyncTips6": "Make the edit popup draggable by setting EditDialogDraggable='true'", + "TablesEditOnAddAsyncTitle": "Automatically generate tables for single table maintenance function", + "TablesEditShowSearchPlaceHolderString": "Cannot be empty, within 50 characters", + "TablesEditTemplateDescription": "In this example, the right alignment of Count is set, the Complete column is set to center alignment, and the Boolean column is automatically rendered as a Switch component", + "TablesEditTemplateDisplayDetail1": "Detail 1", + "TablesEditTemplateDisplayDetail2": "Detail 2", + "TablesEditTemplateDisplayLabel": "Detail", + "TablesEditTemplateIntro": "Set ShowSearch to show the query component", + "TablesEditTemplateTitle": "Tables with single table maintenance", + "TablesEditTitle": "Table", + "TablesReadonlyColumnDescription": "Corresponding database calculated columns, or model read-only attributes", + "TablesReadonlyColumnIntro": "By setting Field and FieldName", + "TablesReadonlyColumnTips1": "Do not write @bind-Field. Read-only columns cannot be entered when Add or Edit", + "TablesReadonlyColumnTips2": "The old version needs to write the complete code as follows", + "TablesReadonlyColumnTitle": "Readonly Column", + "TablesTemplateColumnDescription": "The title display text is set by setting the Text property, and the cell display content is set by Template. The template context is a TableColumnContext instance. The current row model instance can be obtained through @v.Row. Template columns do not participate in data editing functions such as New and Edit.", + "TablesTemplateColumnIntro": "By using TableTemplateColumn instead of TableColumn component, you can avoid binding model.", + "TablesTemplateColumnTitle": "TemplateColumn", + "TablesVisibleIntro": "If the IsVisibleWhenAdd or IsVisibleWhenEdit property is set to false, hide this column when creating or updating. In this example, the New pop-up window does not display Count Edit Pop up window does not display Complete edit the item", + "TablesVisibleTitle": "Editor Visible/Hidden", + "TableTemplateColumnText": "Template" }, - "BootstrapBlazor.Server.Components.Samples.CountButtons": { - "Title": "CountButton", - "Description": "It is often used to force a period of execution time logic, such as waiting for input 60 seconds after sending a verification code", - "BaseUsageText": "Basic usage", - "BaseUsageIntro": "Set the countdown time through the Count parameter value, which defaults to 5 seconds", - "TextTitle": "Timing Text", - "TextIntro": "Set countdown text through CountText parameter values", - "Text": "Send code", - "CountButtonText": "Try again in {0} seconds", - "Count": "count down", - "CountText": "timing text", - "CountTextCallback": "timing text callback method" + "BootstrapBlazor.Server.Components.Samples.Table.TablesExcel": { + "TablesExcelCellRenderIntro": "Advanced usage", + "TablesExcelCellRenderTips1": "IsFixedHeader fixed header height is set to Height='500px'", + "TablesExcelCellRenderTips2": "Name is not editable display avatar", + "TablesExcelCellRenderTitle": "Individually control how cells are rendered by editing the template", + "TablesExcelDeleteLogicDescription": "Set the OnDeleteAsync callback delegate function to handle the delete logic", + "TablesExcelDeleteLogicNote1": "The code here is sample code", + "TablesExcelDeleteLogicNote2": "output log information", + "TablesExcelDeleteLogicNote2Log1": "Collection value change notification column", + "TablesExcelDeleteLogicNote2Log2": "Type", + "TablesExcelDeleteLogicTitle": "3. Handle delete logic", + "TablesExcelDescription": "Commonly used for large data sheet maintenance", + "TablesExcelNewLogicDescription": "Set the OnAddAsync callback delegate function to handle the New logic", + "TablesExcelNewLogicNote1": "The code here is sample code", + "TablesExcelNewLogicNote1Address": "custom address", + "TablesExcelNewLogicNote2": "output log information", + "TablesExcelNewLogicNote2Log1": "Collection value change notification column", + "TablesExcelNewLogicNote2Log2": "Type", + "TablesExcelNewLogicTitle": "2. Handle the new logic", + "TablesExcelOnQueryIntro": "Get data collection through OnQueryAsync callback", + "TablesExcelOnQueryTitle": "binding collection", + "TablesExcelSetDataSourceDescription": "Set the Items property of the Table component or the OnQueryAsync callback delegate method", + "TablesExcelSetDataSourceTitle": "1. Set the data source", + "TablesExcelTips": "When using the List<TItem> generic collection as a data source, you need to follow the steps below to set", + "TablesExcelTitle": "Table Excel", + "TablesExcelUpdateLogicDescription1": "Set the OnSaveAsync callback delegate function to handle the cell update logic", + "TablesExcelUpdateLogicDescription2": "After all cells in the component are edited and updated, the OnSaveAsync callback delegate will be automatically triggered, and the parameter is the current update model TItem", + "TablesExcelUpdateLogicLog1": "Cell Change Notification Class: Foo", + "TablesExcelUpdateLogicLog2": "value: cell", + "TablesExcelUpdateLogicNote": "The code here is sample code", + "TablesExcelUpdateLogicTitle": "4. Handle the update logic" }, - "BootstrapBlazor.Server.Components.Samples.QueryBuilders": { - "QueryBuilderTitle": "QueryBuilder", - "QueryBuilderSubTitle": "Can be used for generating forms and table filtering conditions", - "QueryBuilderNormalTitle": "Basic usage", - "QueryBuilderNormalIntro": "Build filter conditions directly in the Razor file through QueryGroup QueryColumn", - "QueryBuilderHeaderTitle": "Display control buttons", - "QueryBuilderHeaderIntro": "Turn off the control button by setting ShowHeader=\"false\"" + "BootstrapBlazor.Server.Components.Samples.Table.TablesExport": { + "TablesExportButtonCliBoardAllText": "Export All data - ClipBoard", + "TablesExportButtonCliBoardText": "Export Page data - ClipBoard", + "TablesExportButtonDropdownTemplateIntro": "Customize the content of the export button dropdown box by setting the ExportButtonDropdownTemplate template", + "TablesExportButtonDropdownTemplateTitle": "Custom export dropdown button", + "TablesExportButtonExcelAllText": "Export All data - Excel", + "TablesExportButtonExcelText": "Export Page data - Excel", + "TablesExportDescription1": "By setting ShowExportButton to display the export button, the component has built-in export Excel function", + "TablesExportDescription2": "The export function provides an export callback method OnExportAsync, which can be used to export data by providing a custom export method. If no data export method is provided, the component will export data according to the injected export service", + "TablesExportNote1": "Add BootstrapBlazor component", + "TablesExportNote2": "Add Table Excel export service", + "TablesExportOnExportAsyncIntro": "You can customize the export method by setting the OnExportAsync callback delegate method. If you don't set it, the built-in export function of the component will be used. You can set the column property IgnoreWhenExport=\"true\" to ignore this column when exporting", + "TablesExportOnExportAsyncTitle": "Custom export method", + "TablesExportPdfDesc": "Export Pdf function dependencies on additional packages", + "TablesExportPdfNote1": "Injecting the Html2Pdf service", + "TablesExportPdfNote2": "Added Html2Pdf export service", + "TablesExportShowExportButtonIntro": "Whether to display the export button by setting the ShowExportButton property, the default is false", + "TablesExportShowExportButtonTitle": "Table export function", + "TablesExportShowExportCsvButtonIntro": "Show/hide Csv/Pdf button by set ShowExportCsvButton=\"true\" ShowExportPdfButton=\"true\"", + "TablesExportShowExportCsvButtonTitle": "Export Csv/Pdf Button", + "TablesExportTips": "inject service", + "TablesExportTitle": "Table Export", + "TablesExportToastFailedContent": "Export failed,auto close after 4 second", + "TablesExportToastSuccessContent": "Export success,auto close after 4 second", + "TablesExportToastTitle": "Export Data" }, - "BootstrapBlazor.Server.Components.Samples.WebSerials": { - "WebSerialTitle": "Web Serial", - "WebSerialIntro": "Serial port is a widely used communication protocol that enables data transmission between computers", - "WebSerialDescription": "allow websites to communicate with peripherals connected to a user's computer. It provides the ability to connect to devices that are required by the operating system to communicate via the serial API", - "WebSerialNormalTitle": "Basic usage", - "WebSerialNormalIntro": "By calling the ISerialService service, you can connect, open, close, read and write to the serial port device.", - "BaudRateText": "BaudRate", - "DataBitsText": "DataBits", - "StopBitsText": "StopBits", - "ParityTypeText": "ParityType", - "BufferSizeText": "BufferSize", - "FlowControlTypeText": "FlowControlType", - "RequestPortText": "Request", - "OpenPortText": "Open", - "ClosePortText": "Close", - "WriteButtonText": "Write", - "WriteDataText": "Send Data", - "ReadDataText": "Receive Data", - "CRLFText": "CRLF", - "HEXText": "HEX", - "LoopSendText": "Loop", - "LoopIntervalText": "Interval(ms)", - "WebSerialTipsLi1": "This feature is available only in secure contexts (HTTPS)", - "WebSerialTipsLi2": "This is an experimental technology Check the Browser compatibility table carefully before using this in production", - "WebSerialTipsTitle": "Note: The ISerialPort interface instance inherits IAsyncDisposable. When switching routes, you need to release its resources by calling its DisposeAsync", - "NotSupportSerialTitle": "Get Port", - "NotSupportSerialContent": "The current browser does not support serial port operations. Please change to Edge or Chrome browser.", - "OpenPortSerialTitle": "Open Port", - "OpenPortSerialContent": "Failed to open the serial port", - "GetSignalsButtonText": "Signals", - "GetInfoButtonText": "Infos" + "BootstrapBlazor.Server.Components.Samples.Table.TablesFilter": { + "DefaultSortIntro": "Default sorts as default when setting the DefaultSort property value to true", + "DefaultSortLi1": "Set DefaultSort=true to enable the default sort function, when multiple columns set this property, the first column works", + "DefaultSortLi2": "Set DefaultSortOrder value, set default collation", + "DefaultSortP": "In this case the default sort is the last column in reverse order", + "DefaultSortTitle": "Default sort function", + "FilterableAlert": "To enable filtering, you only need to set the Filterable value of TableColumn to true, no additional code required", + "FilterableDiv": "This example is of DateTime, string, bool, enum, int type, and the pop-up filter box is also different", + "FilterableIntro": "Set the Filterable property of the TableColumn column to control whether the column header has data filtering enabled", + "FilterableLi1": "The Filters in the query method parameters are filter criteria, and the database can filter the data by itself through this property when querying data", + "FilterableLi2": "No sense of use, normal query data, no processing is done to filtering, internal processing will be carried out according to Filter", + "FilterableLi3": "When external filtering has been made, set the Value of the IsFiltered property of the QueryData<TItem> parameter to true", + "FilterableLi4": "Each column can be set separately, and the filter between columns is And and relationship", + "FilterableP": "Filterable currently supports two applications:", + "FilterableTitle": "Table with filterable data", + "FilterTemplateIntro": "Set FilterTemplate template values, customize column filter templates, very suitable for complex types of filter pop-ups", + "FilterTemplateTitle": "Custom Filter Template", + "MultiFilterIntro": "Use the built-in MultiFilter component to provide multi-select filtering via FilterTemplate", + "MultiFilterTips": "The component provides two ways to set the data source: Items and OnGetItemsAsync", + "MultiFilterTipsLi1": "Items is suitable for small amounts of data and statically prepared data sets", + "MultiFilterTipsLi2": "OnGetItemsAsync is suitable for large and dynamic data collections. For performance reasons, the component uses a local lazy record method to fill in data, that is, the callback is called to obtain data when the filter window is opened.", + "MultiFilterTitle": "Multiple selection list filtering", + "OnAdvancedSortIntro": "By setting ShowAdvancedSort=\"true\" to show the Advanced Sort button.", + "OnAdvancedSortTitle": "Custom sort", + "OnSortIntro": "Set OnSort Parameters", + "OnSortP": "When clicking the column header to sort, the component calls the OnSort callback internally, where its return value can be set according to the business logic to achieve dynamic multi-column sorting, in this case, when clicking the time column header for positive order sorting, use DateTime,Count internally, useDateTime desc, Count descwhen Count reverse order", + "OnSortTitle": "Dynamic multi-column sorting", + "SetFilterInCodeButtonText1": "Name contains 01", + "SetFilterInCodeButtonText2": "Reset All Filter", + "SetFilterInCodeIntro": "Example shows how to set filters through code", + "SetFilterInCodeTitle": "Set filters by code", + "ShowFilterHeaderIntro": "Show filter header when the ShowFilterHeader property value is set to true", + "ShowFilterHeaderTitle": "Show Filter Header", + "SortListIntro": "Set the SortList property, use this parameter for multi-column sorting when the table loads", + "SortListP": "The default collation in this case is: DeteTime desc Address, you don't need to handle the sort logic yourself, the component is already built-in", + "SortListTitle": "Multi-column sort", + "TablesFilterDesc": "Filter to quickly find the data you want to see; sort to quickly find or compare data.", + "TablesFilterDescLi1": "Filters a column of data to specify the column to be filtered by specifying the filterable property of the column", + "TablesFilterDescLi2": "Sort a column of data, specify the column to be sorted by specifying the Sortable property of the column, change the collation by multiple clicks" }, - "BootstrapBlazor.Server.Components.Samples.MindMaps": { - "MindMapTitle": "Mind Map", - "MindMapDescription": "Used to display specific Json format data as a Web mind map", - "MindMapNormalTitle": "Basic usage", - "MindMapLayout": "Layout", - "MindMapTheme": "Theme", - "Sample1ButtonText": "Example 1", - "Sample2ButtonText": "Example 2: week arrangement", - "ExportButtonText": "ExportPng", - "ExportJsonButtonText": "ExportJSON", - "GetFullDataButtonText": "GetFullData", - "GetDataButtonText": "GetData", - "SetDataButtonText": "SetData", - "ResetButtonText": "Reset", - "FitButtonText": "Fit", - "Scale1ButtonText": "ZoomOut", - "Scale2ButtonText": "ZoomIn", - "CustomButtonText": "Custom", - "Data": "Data", - "Export": "Download as file", - "GetData": "Get data", - "SetData": "Import data", - "Reset": "Reset", - "SetTheme": "switch themes", - "SetLayout": "switch layout", - "MindMapExtensionDesc": "

      Because MindMap encapsulates many api methods, the component library cannot fully encapsulate them, so extension methods are provided. For example, if you need a combination button to use the component, you can call your own Javascript through your own code to control MindMap

      • The custom button calls the component instance method MindMap.Execute(\"clickCustom\", \"args1\"), assuming the parameter is args1
      • Your own Javascript is responsible for handling the clickCustom event
      • this in the clickCustom method is the current MindMap instance, and you can call any of its methods to develop your own business

      The complete example is as follows:

      " + "BootstrapBlazor.Server.Components.Samples.Table.TablesFixedColumn": { + "TablesFixedColHeaderDescription": "In this example, set Name Education Count Complete The first two columns and the last column are fixed columns, and the middle columns are scrolled horizontally", + "TablesFixedColHeaderIntro": "Set the Fixed attribute to fix the header", + "TablesFixedColHeaderTitle": "Fixed column header and column footer", + "TablesFixedColTableHeaderIntro": "Set IsFixedHeader=\"true\" to fix the header, set Fixed to fix the column", + "TablesFixedColTableHeaderTitle": "Fixed headers and columns", + "TablesFixedColumnDescription": "For data with a large number of columns, you can fix the front and rear columns and scroll horizontally to view other data", + "TablesFixedColumnNote": "For fixed column usage, please set the fixed column width as much as possible", + "TablesFixedExtendButtonsColumnIntro": "Set FixedExtendButtonsColumn to fix the action column", + "TablesFixedExtendButtonsColumnTitle": "Fixed button action column", + "TablesFixedHeaderAndExtendButtonsColumnIntro": "Set IsFixedHeader=\"true\" to fix the header, set FixedMultipleColumn to fix the checkbox column, set FixedExtendButtonsColumn to fix the operation column", + "TablesFixedHeaderAndExtendButtonsColumnTitle": "Fixed header and button action columns" }, - "BootstrapBlazor.Server.Components.Samples.Mermaids": { - "MermaidTitle": "Mermaid", - "MermaidDescription": "This component renders Markdown-inspired text definitions to dynamically create and modify diagrams.", - "MermaidNormalTitle": "Basic usage", - "MermaidNormalIntro": "Mermaid basic style", - "MermaidStyleTitle": "Custom styles", - "MermaidStyleIntro": "", - "MermaidType": "Type", - "DownloadPdfButtonText": "Export Pdf" + "BootstrapBlazor.Server.Components.Samples.Table.TablesFixedHeader": { + "AllowResizingIntro": "Set the AllowResizing property while fixing the header so that the column width can be adjusted", + "AllowResizingP": "By setting the Height parameter to fix the header, by setting AllowResizing, the parameter allows the column width to be adjusted", + "AllowResizingTitle": "Width Adjustable", + "AutoHeightIntro": "Do not set the Height value to adapt the height through the parent container", + "AutoHeightP": "In this example, when the height of the parent container of the Table changes, the component will adapt to the height and width", + "AutoHeightTitle": "Automatic Height", + "DialogButtonText": "Dialog", + "DialogDesc": "

      Tips for using theTable with a fixed header in the Dialog:

      The Dialog should assign values to theClass parameter of DialogOption. In this example, it is set todialog-table. This operation is to enable us to customize the style to locate theTable component's parent container in the Dialog and set its height, Here you can use the writing method of adaptive height height: calc (100vh - 400px);; When the parent container of a Tablecomponent has a height, the component itself will perform adaptive height adaptation through calculation
      ", + "DialogIntro": "Table inside Dialog", + "DialogTitle": "In Dialog", + "FixedHeaderIntro": "Set Height=200 and IsFixedHeader=\"true\" fixed header", + "FixedHeaderP": "Example of vertical scroll bar after more data is loaded", + "FixedHeaderP1": "Please set a column width, allow a column width not set, auto-fill", + "FixedHeaderTitle": "Width adaptive", + "FixedWidthIntro": "Set the Height=200 and IsFixedHeader=\"true\" fixed header, when the displayed data on each page is 10 rows, the height exceeds the set value 200, A vertical scroll bar appears on the Table component", + "FixedWidthP": "All columns are set to width, and a horizontal scroll bar will automatically appear when the screen is too small", + "FixedWidthTitle": "FixedWidth", + "TablesFixedHeaderDesc": "When scrolling data, the header is fixed to facilitate viewing the header information of each column", + "TablesFixedHeaderDescP": " The fixed header of this component adopts the double header method. When there is a common problem, the column is not aligned. Please add some styles according to your actual situation.
      Please set the width of each column as much as possible to avoid the problem of misalignment of column width" }, - "BootstrapBlazor.Server.Components.Samples.Speeches.WebSpeeches": { - "WebSpeechTitle": "Web Speech Api", - "WebSpeechSubTitle": "Provide speech recognition/synthesis services using browser interface functions", - "WebSpeechNormalTitle": "Speech Synthesizer", - "WebSpeechNormalIntro": "After entering the text, select the corresponding language to read aloud", - "WebSpeechSpeakButtonText": "Speak", - "WebSpeechStopButtonText": "Stop", - "WebSpeechText": "Welcome blazor", - "WebSpeechRecognitionTitle": "Speech Recognition", - "WebSpeechRecognitionIntro": "Input voice through microphone for voice recognition", - "WebSpeechRecognitionButtonText": "Recognition", - "WebSpeechRecognitionContinuousTitle": "Real-time speech recognition", - "WebSpeechRecognitionContinuousIntro": "Real-time speech recognition by setting the WebSpeechRecognitionOption parameter Continuous=\"true\" InterimResults=\"true\"", - "WebSpeechRecognitionContinuousButtonText": "Recognition", - "RecognitionErrorNotAllowed": "The user agent disallowed any speech input from occurring for reasons of security, privacy or user preference", - "RecognitionErrorNoSpeech": "No speech was detected", - "RecognitionErrorAborted": "Speech input was aborted in some manner, perhaps by some user-agent-specific behavior like a button the user can press to cancel speech input", - "RecognitionErrorAudioCapture": "Audio capture failed", - "RecognitionErrorNetwork": "Network communication required for completing the recognition failed", - "RecognitionErrorNotSupported": "The browser does not support speech recognition", - "RecognitionErrorServiceNotAllowed": "The user agent disallowed the requested speech recognition service, either because the user agent doesn't support it or because of reasons of security, privacy or user preference. In this case it would allow another more suitable speech recognition service to be used instead", - "RecognitionErrorBadGrammar": "There was an error in the speech recognition grammar or semantic tags, or the chosen grammar format or semantic tag format was unsupported", - "RecognitionErrorLanguageNotSupported": "The user agent does not support the language specified in the value of lang attribute of the SpeechRecognition object. The set of supported languages is browser-dependent, and from frontend code there is no way to programmatically determine what languages a user's browser supports for speech recognition" + "BootstrapBlazor.Server.Components.Samples.Table.TablesFooter": { + "TablesFooterDescription": "For statistics", + "TablesFooterStatisticsIntro": "Set ShowFooter=true to show Footer custom total function, fixed the footer by set IsFixedFooter", + "TablesFooterStatisticsTips1": "The Table component has a TableFooter template whose data context is the data collection of the Table component IEnumerable<TItem>", + "TablesFooterStatisticsTips2": "The associated context in the TableFooter template context is the current page data collection", + "TablesFooterStatisticsTips3": "The content of the cell td can be customized in the TableFooter template, or the built-in TableFooterCell component can be used for data display", + "TablesFooterStatisticsTitle": "Statistics example", + "TablesFooterStatisticsTotal": "Total:", + "TablesFooterTemplateDescription": "Footer is displayed by default when there is no data. You can hide Footer by setting the @nameof(Table.IsHideFooterWhenNoData) parameter", + "TablesFooterTemplateIntro": "Set FooterTemplate to customize the content displayed at the bottom of the table", + "TablesFooterTemplateSentences": "Here you can write some descriptive sentences", + "TablesFooterTemplateTitle": "Footer template", + "TablesFooterTemplateTotal": "Total:" }, - "BootstrapBlazor.Server.Components.Samples.ListGroups": { - "ListGroupsTitle": "ListGroup", - "ListGroupsSubTitle": "Mostly used for data browsing and selection", - "ListGroupsTips": "
    • Set the list box to display the dataset through Items
    • Set the list box data item display text by GetItemDisplayText
    • Due to the internal height of the component being set to 100%, the parent container will be automatically filled when used. When the parent container is set to a height, a scroll bar will automatically appear on the list items. In this example, set the height of the external container element code>list-group-demo to 280px
    • ", - "BasicUsageTitle": "Basic usage", - "BasicUsageIntro": "Set datasource by Items", - "HeaderTextTitle": "Header", - "HeaderTextIntro": "By set HeaderText for header text", - "HeaderText": "Header Title", - "HeaderTemplateTitle": "Header Template", - "HeaderTemplateIntro": "Set HeaderTemplate for custom Header", - "AttrItems": "the collection of data source", - "AttrValue": "current value", - "AttrHeaderTemplate": "the template of Header", - "AttrHeaderText": "the title of Header", - "AttrItemTemplate": "the template of Item", - "AttrOnClickItem": "the callback on click item", - "AttrOnDoubleClickItem": "the callback on double click item", - "GetItemDisplayText": "the callback on get item display text" + "BootstrapBlazor.Server.Components.Samples.Table.TablesHeader": { + "TablesHeaderDescription": "When the data structure is complex, multi-level headers can be used to show the hierarchical relationship of the data", + "TablesHeaderNormalIntro": "Set the MultiHeaderTemplate template", + "TablesHeaderNormalTips1": "By setting ShowMultiFilterHeader value to control whether to display the filter header", + "TablesHeaderNormalTips2": "Pay attention to the details. After the first column of cells is merged, there will be no cells in the first column of the last row header, so you need to set the style yourself border-bottom consistent with other cells", + "TablesHeaderNormalTitle": "Basic usage", + "TablesHeaderNormal_Address": "personal address", + "TablesHeaderNormal_Info": "Personal information", + "TablesHeaderNormal_Name": "personal name", + "TablesHeaderNormal_Time": "time" }, - "BootstrapBlazor.Server.Components.Samples.Marquees": { - "MarqueeTitle": "Marquee component", - "MarqueeDescription": "The component is mostly used to create scrolling text, usually for news scrolling, advertising scrolling, etc.", - "MarqueeBase": "Usage", - "MarqueeBaseIntro": "Adjusting the text scrolling effect through parameters" + "BootstrapBlazor.Server.Components.Samples.Table.TablesLoading": { + "TablesLoadingDescription": "When calling the remote data interface, there may be a delay due to network reasons, you can use the display loading function to shield", + "TablesLoadingShowLoadingInFirstRenderIntro": "Just set ShowLoadingInFirstRender", + "TablesLoadingShowLoadingInFirstRenderTitle": "Turn off loading animation", + "TablesLoadingShowLoadingIntro": "Just set ShowLoading", + "TablesLoadingShowLoadingTitle": "Basic usage", + "TablesLoadingShowSkeletonIntro": "Set ShowSkeleton to", + "TablesLoadingShowSkeletonTitle": "Skeleton screen" }, - "BootstrapBlazor.Server.Components.Samples.Stacks": { - "Title": "Stack Layout", - "BasicTitle": "Basic", - "BasicIntro": "Lets you arrange its subcomponents in a horizontal or vertical stack", - "RowMode": "Row", - "ColumnMode": "Column", - "Mode": "mode", - "Justify": "justify-content", - "AlignItems": "align-items", - "IsWrap": "wrap", - "IsReverse": "reverse", - "AlignSelf": "align-self", - "StackItemGrowShrinkDesc": "StackItem 子项还有两个控制方式:", - "StackItemGrowShrinkLi": "
    • Use .flex-grow-* utilities to toggle a flex item’s ability to grow to fill available space. In the example below, the .flex-grow-1 elements uses all available space it can, while allowing the remaining two flex items their necessary space.
    • Use .flex-shrink-* utilities to toggle a flex item’s ability to shrink if necessary. In the example below, the second flex item with .flex-shrink-1 is forced to wrap its contents to a new line, “shrinking” to allow more space for the previous flex item with .w-100.
    • ", - "AttrIsRow": "Flex direction", - "AttrIsWrap": "Change how flex items wrap in a flex container", - "AttrIsReverse": "Start the horizontal or vertical direction from the opposite side.", - "AttrJustify": "Change the alignment of flex items on the main axis", - "AttrAlignItems": "Change the alignment of flex items on the cross axis", - "AttrChildContent": "Child content render fragment" + "BootstrapBlazor.Server.Components.Samples.Table.TablesLookup": { + "TableLookupNormalIntro": "Auto-translate display text by setting Lookup", + "TableLookupNormalTips1": "For detailed ILookupService documentation, please refer to [Portal]", + "TableLookupNormalTips2": "The component automatically converts Complete to a preset in the DataSource collection", + "TableLookupNormalTips3": "In this example, the ILookupService service is used for unified processing, and the Lookup data collection is obtained from the service by setting the LookupServiceKey value", + "TableLookupNormalTitle": "Lookup external data source", + "TablesLookupDescription": "Used to automatically convert foreign key columns to Text display text", + "TablesLookupTitle": "Table Lookup" }, - "BootstrapBlazor.Server.Components.Samples.Segmenteds": { - "Title": "Segmented", - "SubTitle": "displaying multiple options and user can select a single option", - "BasicTitle": "Basic", - "BasicIntro": "select a single option", - "IsDisabledTitle": "Disable", - "IsDisabledIntro": "Make one of them prohibited", - "ItemTemplateTitle": "Custom Rendering", - "ItemTemplateIntro": "Use ItemTemplate to custom-render SegmentedItems", - "IconTitle": "Icon", - "IconIntro": "Set the Icon for the segmented item", - "SizeTitle": "Size", - "SizeIntro": "Set Size defines three sizes (large, default, small) with heights of 40px, 32px, and 4px2", - "SegmentItemTitle": "SegmentItem", - "SegmentItemIntro": "Write Razor in Razor", - "BlockTitle": "Block", - "BlockIntro": "block property will make the Segmented fit to its parent width", - "ItemsAttr": "Data source", - "SizeAttr": "Set the component size", - "IsDisabledAttr": "Whether to disable, Default is fasle", - "ValueAttr": "The value of segment", - "ValueChangedAttr": "This event fires when the segment selector options change", - "OnValueChanged": "Callback for the Value changed", - "ItemTemplateAttr": "The template of segement item", - "ChildContent": "The template of segment content", - "IsBlockAttr": "Whether fit the parent width", - "ShowTooltipAttr": "Whether show to tooltip for segment item", - "ChildContentAttr": "Child content template" + "BootstrapBlazor.Server.Components.Samples.Table.TablesPages": { + "TablesPagePaginationIntro": "Set IsPagination to display the pagination component", + "TablesPagePaginationTitle": "Pagination table", + "TablesPagesDescription": "It is used to display multiple pieces of data with similar structure, and the data can be sorted, filtered, compared or other custom operations.", + "TablesPageShowTopPaginationIntro": "Set ShowTopPagination to true is the top display pagination component. You can use IsAutoScrollTopWhenClickPage to control whether to automatically scroll to the top after turning the page. The default value is false to keep the scroll bar position", + "TablesPageShowTopPaginationTitle": "Show on top", + "TablesPagesTitle": "Table" }, - "BootstrapBlazor.Server.Components.Samples.CodeEditors": { - "Title": "Code Editor", - "BasicTitle": "Basic Use", - "BasicIntro": "Basic Use", - "Value": "Gets or sets the value of the input", - "Theme": "Theme of the editor", - "Language": "Language used by the editor: csharp, JavaScript, ...", - "ValueChanged": "Gets or sets a callback that updates the bound value" + "BootstrapBlazor.Server.Components.Samples.Table.TablesRow": { + "ClickToSelectIntro": "By setting the ClickToSelect property value, you can click any cell to select the entire row, and the selected row style is set to active", + "ClickToSelectNoneText": "None", + "ClickToSelectP": "You can set the OnClickRowCallback callback delegate method to handle the clicked row accordingly. After clicking any row in the table, the Name value of the bound data of the selected row will be displayed below", + "ClickToSelectP2": "Note: UI rendering is not performed inside this callback delegate. When UI data update operation is required, please manually and explicitly call the StateHasChanged method", + "ClickToSelectP3": "Currently selected row:", + "ClickToSelectTitle": "Click the cell to select the entire row effect", + "DoubleClickRowCallbackIntro": "This function is only valid in the Table component single-selection mode. By setting the DoubleClickRowCallback attribute value, you can double-click any cell to customize the callback delegate method and realize your own the required function", + "DoubleClickRowCallbackP": "The mobile terminal (CardView) mode temporarily does not support double-click editing of the current row function", + "DoubleClickRowCallbackTitle": "Custom row double click event", + "DoubleClickToEditIntro": "By setting the DoubleClickToEdit attribute value, you can double-click any cell to edit the current row. This function is only available if the Edit function is available", + "DoubleClickToEditP": "The mobile terminal (CardView) mode temporarily does not support double-click to edit the current row function", + "DoubleClickToEditP1": "The multi-select mode also supports the double-click editing function. If you set the ClickToSelect click selection effect, the double-click editing function will cause the row selection state to be alternately selected. Please set ClickToSelect=false. Disable this feature", + "DoubleClickToEditTitle": "DoubleClickToEditTitle", + "PlaceHolder": "Cannot be empty, within 50 characters", + "RowContentTemplateDesc": "In this example, a custom component is used to select a date, link the quantity column, randomly generate a random number, and save it to the original data, so there is no need to refresh the entire Table component.", + "RowContentTemplateIntro": "By setting the RowContentTemplate template, you can implement custom row cell linkage logic by sub-packaging components to achieve performance optimization and avoid the problem of refreshing the entire table component after linkage due to cell data refresh.", + "RowContentTemplateTitle": "Row Content Template", + "RowNumberIntro": "By setting the ShowLineNo property to true, the table displays the row number, the default value is false", + "RowNumberP": "Set the LineNoText property value to set the line number column header display text, the default is line number", + "RowNumberText": "Number", + "RowNumberTitle": "Show row numbers", + "RowTemplateIntro": "By setting the RowTemplate template, you can implement the row merging function according to your own business logic", + "RowTemplateTitle": "Row Template", + "SetRowClassFormatterIntro": "By setting the SetRowClassFormatter attribute value, you can set the row style through the row data logic, and realize the function of your own highlighting requirements", + "SetRowClassFormatterP": "In this example, the SetRowClassFormatter method will highlight the row by judging the Count > 60 of the bound data", + "SetRowClassFormatterTitle": "Custom row highlighting", + "TablesRowDesc": "Used to display multiple pieces of data with similar structures, data can be sorted, filtered, compared or other custom operations.", + "TablesRowTitle": "Table Row" }, - "BootstrapBlazor.Server.Components.Samples.JSRuntimeExtensions": { - "JSTips": "Before use, import the module according to the following code", - "OpenUrlTitle": "OpenUrl", - "OpenUrlIntro": "Open url in a Window", - "OpenUrlTips": "Default to:", - "IsMobileTitle": "GetIsMobileDevice", - "IsMobileIntro": "Determine userAgent through regular expressions, indicating whether the current device is a mobile device", - "EvalTitle": "JS Eval", - "EvalIntro": "Dynamically run Java Script code within the current scope using the Eval function.", - "FunctionTitle": "JS Function", - "FunctionIntro": "Dynamically run Java Script code within the global scope through the Function function.", - "OpenUrlAttr": "Open a url in a specific window", - "IsMobileAttr": "Determine whether the current device is a mobile device", - "EvalAttr": "Call Eval method", - "FunctionAttr": "Call Function method" + "BootstrapBlazor.Server.Components.Samples.Table.TablesSearch": { + "AddModelTitle": "Add Test Data Window", + "AddressPlaceholder": "Please enter the address within 500 characters", + "AutoGenerateSearchComment": "Logical relationship usage", + "AutoGenerateSearchGroupBoxTitle": "Search function experience area", + "AutoGenerateSearchIntro": "When ShowSearch is set, if SearchTemplate is not set when editing template, the component will try to automatically generate search criteria UI", + "AutoGenerateSearchP": "When the column information is bound, set the Searchable property and set the search criteria to automatically build the UI. You can set the SearchDialogShowMaximizeButton to maximize the search pop-up window display Maximize button", + "AutoGenerateSearchTips": "

      When building a search popup window automatically, since each column is set to Searchable, the component will pass SearchText and set Searchable Each column whose value is true automatically builds a search lambda expression, which is obtained through the attribute Searches of QueryPageOptions

      ", + "AutoGenerateSearchTitle": "Auto-generate search function table", + "AutoHeightIntro": "

      Highly Adaptive

      In this example, when the parent container height is set to 600px expand/collapse the search bar, the table automatically fills the parent container

      ", + "CustomColSearchIntro": "When SearchTemplate is set, the component automatically generates the search UI using this template as the rendering UI", + "CustomColSearchP": "By setting the SearchTemplate of the name column to customize the edit, use the drop-down box to select the name", + "CustomColSearchP1": "Because it is a search condition, in this example, the drop-down box of the name search column is added. Please select... item", + "CustomColSearchP2": "The column search template is generated in the search order SearchTemplate -> AutoGenerate first to find out whether the search template is set, and then automatically generated according to the bound field type", + "CustomColSearchP3": "Control whether to display the entire search bar by setting ShowSearch", + "CustomColSearchP4": "Control whether to display the fuzzy search bar by setting ShowSearchText", + "CustomColSearchP5": "Control whether to display the reset search button by setting ShowResetButton", + "CustomColSearchP6": "Control whether to display the advanced search button by setting ShowAdvancedSearch", + "CustomColSearchP7": "Make the search popup draggable by setting SearchDialogDraggable=\"true\"", + "CustomColSearchTitle": "Custom Column Search Template", + "CustomerSearchModelIntro": "Set CustomerSearchModel and CustomerSearchTemplate to fully control the search criteria UI", + "CustomerSearchModelP": "Due to a certain application scenario, our form entity class TItem is not ideal as a search model, for example, we have an attribute that is int or enum, we need a blank condition item of all or please select... as a search condition. It is very difficult to use the default model at this time , you can use the custom search model CustomerSearchModel and CustomerSearchTemplate to customize the control search interface", + "CustomerSearchModelTitle": "Custom Search Model", + "DisplayText1": "Search Mode", + "DisplayText2": "Fuzzy Search", + "DisplayText3": "Display reset", + "DisplayText4": "Display Search", + "EditModelTitle": "Edit Test Data Window", + "NamePlaceholder": "Please enter your name within 50 characters", + "SearchTableGroupBoxText": "Search Criteria", + "SearchTableIntro": "Set ShowSearch to display the query component, customize the search UI by setting the SearchTemplate template", + "SearchTableLi1": "Enable no data display function by setting ShowEmpty=\"true\"", + "SearchTableLi2": "The EmptyText parameter is used to set the text to be displayed when there is no data, the default is to take the built-in text in the resource file", + "SearchTableLi3": "EmptyTemplate parameter is used to customize no data display template", + "SearchTableTips": "The search function of the Table component provides two modes, which can be set through SearchMode. The default is Popup, which is the popup mode. In the Top mode, the search bar will be built into the top of the table. In this mode, the Refresh button and the Search button are combined into one, you can set the ShowSearchButton=false close the search button", + "SearchTableTitle": "Table with search function", + "SelectedItemText": "Please select...", + "SelectedItemText1": "Name1", + "SelectedItemText2": "Name2", + "SelectedItemValue1": "Name1", + "SelectedItemValue2": "Name2", + "TablesSearchDesc": "Commonly used for single table maintenance, simple addition, deletion, modification, search, sorting, filtering, search and other common functions can be realized through attribute configuration, and very complex can be realized through the advanced usage of Template business needs functions", + "TablesSearchTitle": "Table Search" }, - "BootstrapBlazor.Server.Components.Samples.Clipboards": { - "ClipboardTitle": "ClipboardService", - "ClipboardIntro": "Clipboard service! Please note that it can only be run under HTTPS secure connections or used in the localhost development environment.", - "ClipboardMessage": "Text content: {0}, copied to clipboard", - "ClipboardGetTextMessage": "Read clipboard text content: {0}", - "ClipboardCopyMethod": "Copy text to the clipboard method", - "ClipboardGetMethod": "Method for reading clipboard content", - "ClipboardGetTextMethod": "Method for reading clipboard text content" + "BootstrapBlazor.Server.Components.Samples.Table.TablesSelection": { + "TablesSelectionDescription": "Set the table row state by setting SelectedRows, and set the highlight by selecting the style", + "TablesSelectionKeepInfo": "Keep State:", + "TablesSelectionKeepOffText": "No keep", + "TablesSelectionKeepOnText": "Keep", + "TablesSelectionNormalButtonText": "clear selection", + "TablesSelectionNormalIntro": "Defaults to the selected state when the table is initialized by setting the SelectedRows property collection", + "TablesSelectionNormalSelectRow": "selected row record", + "TablesSelectionNormalTips": "Maintain line state fallback mechanism, ModelEqualityComparer CustomKeyAttribute IEqualityComparer<TItem> Equals overloaded method", + "TablesSelectionNormalTitle": "Set row selection function", + "TablesSelectionScrollButtonText": "Select Last Row", + "TablesSelectionScrollDescription": "After clicking the button, select the last row and automatically scroll the selected row to the visible area of the window. This code is an example, and this function can be enabled by setting AutoScrollLastSelectedRowToView=\"true\", Set the alignment via the AutoScrollVerticalAlign parameter", + "TablesSelectionScrollIntro": "Perform some special operations by setting the OnAfterRenderCallback callback method", + "TablesSelectionScrollTitle": "Callback method after rendering", + "TablesSelectionTitle": "Table Selection" }, - "BootstrapBlazor.Server.Components.Samples.Gantts": { - "Title": "A simple, interactive, modern web Gantt gallery with dragging, resizing, dependencies, and timescales", - "BasicTitle": "Basic usage", - "BasicDesc": "Drag tasks across the timeline, resize to change duration, click to view more information", - "ViewModeTitle": "Change the view", - "ViewModeDesc": "Switch view mode call change_view_mode", - "AttrItems": "Data Source", - "AttrOnClick": "The callback that is triggered when you click on a task", - "AttrOnDataChanged": "A callback that is triggered when a task is dragged", - "AttrOnProgressChanged": "A callback that is triggered when a task progress is dragged", - "AttrOption": "Configuration items", - "AttrMethod": "Change the Gantt chart view" + "BootstrapBlazor.Server.Components.Samples.Table.TablesToolbar": { + "TablesToolbarCustomButton1": "Download 1", + "TablesToolbarCustomButton2": "Download 2", + "TablesToolbarCustomButtonDescription": "In this example, a classic application scenario is implemented", + "TablesToolbarCustomButtonIntro": "Set the TableToolbarTemplate template to add custom extension buttons", + "TablesToolbarCustomButtonTips1_note1": "A progress bar is displayed in the foreground, and it is being packaged and exported. During this period, other transactions can be processed.", + "TablesToolbarCustomButtonTips1_note2": "After the data processing is completed, close the foreground prompt pop-up window, restore download button", + "TablesToolbarCustomButtonTips1_title": "Click the download button to open the download thread in the background for data processing, disable download button", + "TablesToolbarCustomButtonTips2_title": "In this example, by setting the IsAsync property of the TableToolbarButton button to enable asynchronous operation mode, please note that OnClickCallback needs to be in the callback delegate Use true async operations otherwise no effect", + "TablesToolbarCustomButtonTitle": "Custom extension button", + "TablesToolbarCustomComponentDescription": "The custom component currently does not render when shrunk into a small icon, and will be resolved later when a better solution is available, If you want to place components behind built-in buttons, please use the TableToolbarTemplate template", + "TablesToolbarCustomComponentIntro": "Use the TableToolbarComponent component to implement placing the components you need on the toolbar", + "TablesToolbarCustomComponentTitle": "Custom Component", + "TablesToolbarCustomDisplayButtonIntro": "By setting the ShowAddButton ShowEditButton ShowDeleteButton attribute value to control whether the individual function button is displayed, when ShowDefaultButtons is set to When false, all buttons are not displayed", + "TablesToolbarCustomDisplayButtonTitle": "Custom display function buttons", + "TablesToolbarDescription": "It is used to display multiple pieces of data with similar structure, and the data can be sorted, filtered, compared or other custom operations.", + "TablesToolbarNormalIntro": "Set ShowToolbar to show the toolbar component", + "TablesToolbarNormalTitle": "Table with Toolbar", + "TablesToolbarQueryTableDescription": "In this example, the View button is displayed by setting ShowCardView to switch the rendering mode of the Table component", + "TablesToolbarQueryTableIntro": "Set ShowSearch to show the query component", + "TablesToolbarQueryTableTitle": "Form with query", + "TablesToolbarShowRefreshDesc": "Click the Refresh button. The component instance method QueryAsync is called internally. If the virtual scrolling mode is used, different request data modes are triggered according to different data sources. If the OnQueryAsync callback method is used as the data source, it is automatically called.", + "TablesToolbarShowRefreshIntro": "Set ShowToolbar=\"true\" ShowRefresh=\"false\" to display the toolbar and not the refresh button.", + "TablesToolbarShowRefreshTitle": "Do not display the refresh button", + "TablesToolbarTitle": "Table", + "TableToolbarPopConfirmButton1": "Confirm" }, - "BootstrapBlazor.Server.Components.Samples.ImageCroppers": { - "Title": "Image cropper", - "ImageCropperNormalText": "Basic usage", - "ImageCropperNormalIntro": "The URL of the image can be set by setting the Url parameter. The cropping ratio can be set by setting ImageCropperOption.AspectRatio=16/9f. 1 is a square.", - "ImageCropperRoundText": "Round", - "ImageCropperRoundIntro": "Set the cropping mode to circular by setting the IsRound parameter", - "ImageCropperResetText": "Reset", - "ImageCropperReplaceText": "Replace", - "ImageCropperRotateText": "Rotate", - "ImageCropperEnableText": "Enable", - "ImageCropperDisabledText": "Disabled", - "ImageCropperClearText": "Clear", - "AttributesImageCropperUrl": "Image Url", - "AttributesImageCropperIsDisabled": "Whether the component is disabled", - "AttributesImageCropperOnCropAsync": "Crop result callback method", - "AttributesImageCropperOptions": "Crop option", - "AttributesImageCropperShape": "Crop shape" + "BootstrapBlazor.Server.Components.Samples.Table.TablesTracking": { + "TablesTrackingDescription": "Applicable to application scenarios where parent and child tables are submitted together", + "TablesTrackingNormalIntro": "Set IsTracking with Items without setting OnSaveAsync and other callback methods", + "TablesTrackingNormalTips1": "The prompt information of the Save Delete button can be turned off by setting ShowToastAfterSaveOrDeleteModel='false'", + "TablesTrackingNormalTips2": "All data editing in this mode edits the original data and updates the data source through bind-Items, so no Cancel button is provided", + "TablesTrackingNormalTitle": "tracking mode", + "TablesTrackingTitle": "Table table" }, - "BootstrapBlazor.Server.Components.Samples.Translators": { - "TranslatorsTitle": "Azure Translator", - "TranslatorsDescription": "Converts characters or letters of a source language to the corresponding characters or letters of a target language.", - "TranslatorsNormalTitle": "Basic usage", - "TranslatorsNormalIntro": "Call TranslateAsync method for convert target language", - "TranslatorsInjectService": "Inject Service", - "TranslatorsTranslate": "Translate" + "BootstrapBlazor.Server.Components.Samples.Table.TablesTree": { + "TablesTreeDataIntro": "Open the tree table by setting IsTree", + "TablesTreeDataTitle": "tree data display", + "TablesTreeDescription": "The table supports the display of tree data", + "TablesTreeEditIntro": "Realize simple addition, deletion, modification and checking functions.", + "TablesTreeEditTitle": "Tree data with single table maintenance", + "TablesTreeIconIntro": "Change the little arrow icon that indicates by setting TreeIcon", + "TablesTreeIconTips1": "The default level indent width is 16px by setting Indent to change the indent width", + "TablesTreeIconTips2": "In this example change the indent width to 8px", + "TablesTreeIconTitle": "icon", + "TablesTreeLevelIntro": "Control the indent width of each layer by setting IndentSize .", + "TablesTreeLevelTips1": "The default level indent width is 16px by setting Indent to change the indent width", + "TablesTreeLevelTips2": "In this example change the indent width to 8px", + "TablesTreeLevelTitle": "Hierarchical indentation", + "TablesTreeStep1": "Step 1: Set IsTree to true", + "TablesTreeStep2": "Step 2: Set Items or OnQueryAsync to get component data collection", + "TablesTreeStep3": "Step 3: Set TreeNodeConverter to convert the component data collection into a tree structure", + "TablesTreeStep4": "Step 4: Set the OnTreeExpand callback delegate to expand the response line to get the child item data set", + "TablesTreeTip_note1": "Tree-structure conversion of datasets through TreeNodeConverter", + "TablesTreeTip_note2": "Set TableTreeNode its IsExpand parameter to control whether the current child node is expanded", + "TablesTreeTip_note3": "When clicking the child item expansion arrow, the child item data is obtained through the OnTreeExpand callback delegate method", + "TablesTreeTip_note4": "Maintain line state fallback mechanism, ModelEqualityComparer CustomKeyAttribute IEqualityComparer<TItem> Equals overloaded method", + "TablesTreeTip_title": "Control whether it is tree data through the IsTree parameter" }, - "BootstrapBlazor.Server.Components.Samples.BarcodeGenerators": { - "Title": "Barcode generator", - "BarcodeGeneratorNormalText": "Barcode Generator", - "BarcodeGeneratorNormalIntro": "Renders a one-dimensional barcode in the corresponding format by giving the Value value", - "OnCompletedAsync": "Barcode generation (svg) callback method", - "Options": "Barcode options", - "Format": "Barcode format", - "Value": "Barcode value", - "Width": "Width of a single bar", - "Height": "Height of the barcode", - "DisplayValue": "Display barcode text", - "Text": "Overwrite the displayed text", - "FontOptions": "Font style", - "Font": "Font", - "TextAlign": "Text Alignment", - "TextPosition": "Text Position", - "TextMargin": "Text Margin", - "FontSize": "Font size", - "Background": "Background color", - "LineColor": "Line Color", - "Margin": "Margin", - "MarginTop": "Top margin", - "MarginBottom": "Bottom margin", - "MarginLeft": "Left margin", - "MarginRight": "Right margin", - "Flat": "Bottom line is flat (EAN8/EAN13 only)" + "BootstrapBlazor.Server.Components.Samples.Table.TablesVirtualization": { + "TablesFooterFixedLabel": "Fixed Footer", + "TablesFooterFixedText": "Fixed", + "TablesFooterInfo": "Count:", + "TablesFooterNotFixedText": "Stack", + "TablesVirtualizationDescription": "When the Table component displays large data, it usually uses paging to load data. There is also a virtual row technology similar to the automatic loading of data in the background when the mobile phone scrolls to the bottom.", + "VirtualizationDynamicDescription": "Display row placeholders when scrolling quickly to improve user experience", + "VirtualizationDynamicIntro": "Background on-demand loading when scrolling data without paging", + "VirtualizationDynamicTitle": "Get data dynamically", + "VirtualizationNormalDescription": "

      Need to set ScrollMode Height RowHeight PageItems parameters to set virtual scrolling

      ", + "VirtualizationNormalIntro": "Background on-demand loading when scrolling data without paging", + "VirtualizationNormalTitle": "Normal use" }, - "BootstrapBlazor.Server.Components.Samples.ZipArchives": { - "ZipArchivesTitle": "IZipArchive", - "ZipArchivesSubTitle": "Component built-in service that can compress files or folders into archive files with specified names", - "ZipArchiveInjectText": "Inject service", - "ZipArchiveFileText": "Archive file", - "ZipArchiveDirectoryText": "Archive directory", - "ZipArchiveExtractText": "Extract" + "BootstrapBlazor.Server.Components.Samples.Table.TablesWrap": { + "TablesWrapCustomCellColumHeaderText_Address": "Address", + "TablesWrapCustomCellColumHeaderText_DateTime": "time", + "TablesWrapCustomCellColumHeaderText_Name": "Name", + "TablesWrapCustomCellIntro": "Use templates for special layout of in-cell data", + "TablesWrapCustomCellTemplate_State": "state", + "TablesWrapCustomCellTemplate_Time": "time", + "TablesWrapCustomCellTitle": "Custom in-cell typography", + "TablesWrapDataResizingColumHeaderText_Address": "Address", + "TablesWrapDataResizingColumHeaderText_DateTime": "time", + "TablesWrapDataResizingColumHeaderText_Name": "Name", + "TablesWrapDataResizingIntro": "In some special cases, the content of the cell may be relatively long, and it needs to be omitted.", + "TablesWrapDataResizingTips1": "You can drag the window size, and the address column will be automatically omitted if the window is too small", + "TablesWrapDataResizingTips2": "Enable text ellipsis by setting TextEllipsis", + "TablesWrapDataResizingTips3": "Note: It is recommended to use Width to set the column width. If the column width is not set, it will automatically use 200px width inside", + "TablesWrapDataResizingTips4": "After the text in the cell is omitted, you can use the ShowTips property to control whether to display all the text on mouse hover, the default is false, You can customize the display content of Tooltip by setting the GetTooltipTextCallback callback method", + "TablesWrapDataResizingTips5": "Drag the address column, the cell display content will automatically increase and decrease", + "TablesWrapDataResizingTitle": "Example of over-length omission of cell data", + "TablesWrapDescription": "When the content of the header or the cell in the row is too long, the effect of omitting, wrapping, etc. can be realized by changing the style", + "TablesWrapHeaderTextWrapColumHeaderText_Address": "I am a super long address header", + "TablesWrapHeaderTextWrapColumHeaderText_DateTime": "I'm a super long schedule head", + "TablesWrapHeaderTextWrapColumHeaderText_Name": "I am a super long name header", + "TablesWrapHeaderTextWrapDescription": "You can drag the window size. When the window is too small, the horizontal scroll bar will automatically appear, and the header will automatically wrap.", + "TablesWrapHeaderTextWrapIntro": "Wrap the super long header by setting HeaderTextWrap", + "TablesWrapHeaderTextWrapTitle": "The header is too long to wrap", + "TablesWrapLongDataColumHeaderText_Address": "Address", + "TablesWrapLongDataColumHeaderText_DateTime": "Time", + "TablesWrapLongDataColumHeaderText_Name": "Name", + "TablesWrapLongDataIntro": "In some special cases, the cell content may be long and need to be wrapped", + "TablesWrapLongDataTips1": "You can drag the window size, the address column will be automatically wrapped when the window is too small", + "TablesWrapLongDataTips2": "Enable word wrapping by setting TextWrap", + "TablesWrapLongDataTips3": "Note: It is recommended to use Width to set the column width", + "TablesWrapLongDataTitle": "Example of extra-long wrapping of cell data", + "TablesWrapNormalColumHeaderText_Address": "I am a super long address header", + "TablesWrapNormalColumHeaderText_DateTime": "I'm a super long schedule head", + "TablesWrapNormalColumHeaderText_Name": "I am a super long name header", + "TablesWrapNormalDescription": "You can drag the window size, and the horizontal scroll bar will automatically appear when the window is too small", + "TablesWrapNormalIntro": "In some special cases, the header may be relatively long, and the header needs to be controlled within a fixed width. When the mouse moves over the header, Tooltip is displayed to display the complete header information.", + "TablesWrapNormalTitle": "Example of super long header", + "TablesWrapTip": "Note:Because the Table component has realized the function of adapting to the mobile terminal, this demo needs to be viewed on the computer side" }, - "BootstrapBlazor.Server.Components.Samples.Tutorials.Translation.Translator": { - "File": "File", - "Hide": "Hide", - "Language": "Language", - "Load": "Load", - "LoadContent": "All localization items loaded successfully", - "LoadTitle": "Load", - "Operation": "Operation", - "Save": "Save", - "SaveContent": "All localization items saved successfully", - "SaveTitle": "Save", - "Show": "Show", - "ToolboxCardTitle": "Tools", - "Translate": "Translate" + "BootstrapBlazor.Server.Components.Samples.Tabs": { + "ActiveButtonText": "Activate the first one", + "AddButtonText": "Add", + "BackText1": "Counter", + "BackText2": "Weather forecast", + "Block9Div": "Header", + "BlockHeaderTemplateDesc": "Use Badge in the HeaderTemplate", + "BlockHeaderTemplateHeaderText": "Todo List", + "DividerText": "Split Line", + "MethodTitle": "Method", + "RemoveButtonText": "Rmove", + "ShowTabInHeaderDesc": "After enabling the multi-tab function in the Layout component, you can render the Tab tag header into the Layout Header template by setting ShowTabInHeader=\"true\". The effect can be viewed by creating a new project in the Project Template", + "TabItem1Content": "I am a user manager", + "TabItem1Text": "User", + "TabItem2Content": "I am menu management", + "TabItem2Text": "Menu", + "TabItem3Content": "I am roles management", + "TabItem3Text": "Roles", + "TabItem4Content": "I am department management", + "TabItem4Text": "Department ", + "TabItem5Content": "I am a system log", + "TabItem5Text": "System logs", + "TabItem6Content": "I am Sign log management", + "TabItem6Text": "Sign log", + "TabItem7Content": "I am a timed task manager", + "TabItem7Text": "Timed task", + "TabItem8Text": "Count", + "TabItem9Text": "Weather forecast", + "TabMethod1AddTab": "Add TabItem to Tab, can set new Tab position if necessary", + "TabMethod2RemoveTab": "Remove TabItem", + "TabMethod3ActiveTab": "The setting specifies tabItem as active", + "TabMethod4ClickPrevTab": "Switch to the previous label method", + "TabMethod5ClickNextTab": "Switch to the next label method", + "TabMethod6CloseCurrentTab": "Close the current tab method", + "TabMethod7CloseOtherTabs": "Close other tab methods", + "TabMethod8CloseAllTabs": "Close all tab methods", + "TabMethod9GetActiveTab": "Get current tab methods", + "TabsAddTabItemIntro": "Dynamically add/remove TabItem by calling the component api", + "TabsAddTabItemTitle": "Custom add tab triggers", + "TabsAppDescription": "Dynamically adjust the number of TabItem by adding, deletebuttons to view the left and right effects beyond the number of containers, user management is set to not close, and the feature button cannot close this tab. The component switches tabs in a loop by default. You can disable this feature by IsLoopSwitchTabItem=\"false\"", + "TabsAppIntro": "By setting the ShowExtendButtons property to true, turning on the left and right buttons of the component and closing the drop-down menu, it is very useful in practice", + "TabsAppTitle": "Live Tab components", + "TabsBorderIntro": "Set tab-style tabs by IsBorderCard='true'.", + "TabsBorderTitle": "Carding", + "TabsCapsuleStyleIntro": "Set the capsule tab style by setting TabStyle=\"TabStyle.Capsule\". Currently only supports Placement=\"Placement.Top\" Placement=\"Placement.Bottom\" mode", + "TabsCapsuleStyleTitle": "Capsule Style", + "TabsCardIntro": "Set tab-style tabs by isCard='true'.", + "TabsCardTitle": "Tab style ", + "TabsChromeStyleIntro": "Set the Chrome browser tab style by setting TabStyle=\"TabStyle.Chrome\". Currently only supports Placement=\"Placement.Top\" mode", + "TabsChromeStyleTitle": "Chrome Style", + "TabsClosableIntro": "Show the close button to the tab by setting the ShowClose property", + "TabsClosableTips": "

      Tab component turns on the showClose , TabItem property Closable can be set individually to close tab, defaulting to true;In this example UserTabs do not provide a to turn off functionality

      ", + "TabsClosableTitle": "Close", + "TabsComponentDescription": "Tab The contents of each panel of the component remain state by default, and in this case the original data is maintained when the panel switches", + "TabsComponentIntro": "other components are built into the TabItem", + "TabsComponentTitle": "Additional components are built in", + "TabsContextMenuDesc": "The disabled tab can be set by setting the OnBeforeShowContextMenu callback method to control whether the right-click menu is displayed according to the return value. If it is not set, the right-click menu is also displayed for the disabled tab", + "TabsContextMenuIntro": "Use the built-in ContextMenuZone component to pop up a custom context menu when you right-click a tab item", + "TabsContextMenuTitle": "TabItem Context Menu", + "TabsDescription": "Tab components are designed in the form of templates, and this component is used by adding TabItem subcomponents to the tabItems in the template", + "TabsDisabledIntro": "Disable the current TabItem by setting IsDisabled=\"true\" to prohibit click, drag, close etc.", + "TabsDisabledTitle": "Disabled", + "TabsDragIntro": "By setting AllowDrag to enable the tab item drag and drop function, call back the OnDragItemEndAsync method after dropping the tab item", + "TabsDragTitle": "Drag", + "TabsDynamicTabItemDescription": "In this example, the right the Tab the inside of the panel remains in state, and the component reloads when it is closed and reopened", + "TabsDynamicTabItemIntro": "This feature allows you to click on the menu link in the sidebar and render multiple labels at the top of the data area on the right", + "TabsDynamicTabItemTitle": "The program dynamically adds the TabItem panel", + "TabsHeaderTemplateIntro": "customer the header UI via HeaderTemplate", + "TabsHeaderTemplateTitle": "Header Template", + "TabsIconIntro": "Set the tab icon by setting the Icon property of the TabItem component", + "TabsIconTitle": "Icon", + "TabsInfoItem2": "Tab properties can be set when navigating using the built-in extension method Navigator.NavigateTo(\"provider\", \"url\", \"text\", \"icon\", \"closable\")", + "TabsInfoItem4": "Setting @attribute [TabItemOption(Text = \"LayoutPage\", Icon = \"fa-solid fa-font-awesome\")] in razor page", + "TabsInfoTitle": "Set additional information during tab navigation", + "TabsIsOnlyRenderActiveIntro": "By setting the isOnlyRenderActiveTab parameter, the component renders only the current active label", + "TabsIsOnlyRenderActiveTitle": "Only the current label is rendered", + "TabsItemMenuTitle": "Configure Tab and Menu linked dictionary, this method can automatically obtain tab page properties without separately setting TabItemOption.", + "TabsLazyLoadIntro": "By setting IsLazyLoadTabItem=\"true\" enable the lazy load feature", + "TabsLazyLoadTitle": "Lazy load tab item", + "TabsNormalIntro": "Basic, concise tabs.", + "TabsNormalTitle": "Basic usage", + "TabsOnTabHeaderTextLocalizerIntro": "Localization of `TabItemOption` is achieved by setting the `OnTabHeaderTextLocalizer` callback delegate method. The input parameter is the `TabItemOption` parameter `Text`, and the return value is the localized value", + "TabsOnTabHeaderTextLocalizerTitle": "TabItemOption Localizer", + "TabsPlacementIntro": "By setting the Placement property to change the label position, a small arrow scrolls up and down to TabItem switch when you change to left or right", + "TabsPlacementTitle": "Position", + "TabsQA1": "Get TabSet by cascading parameter", + "TabsQA2": "Get TabItem by cascading parameter", + "TabsQA3": "How to navigate to a new tab item in razor", + "TabsQA4": "How to navigate to a new tab in the code", + "TabsQATitle": "Q&A", + "TabsSetHeaderTemplateIntro": "Set the parameter Text of TabItem custom the tabitem's header title'", + "TabsSetHeaderTemplateTitle": "Set header text", + "TabsSetTabItemHeaderTextIntro": "Set the parameter by TabItem instance method SetHeader", + "TabsSetTabItemHeaderTextTitle": "Set header text icon", + "TabsSubTitle": "A collection of data that is associated with the separation content but belongs to a different category.", + "TabsTips1": "Split as data", + "TabsTips2": "Page navigation", + "TabsTips3": "The default behavior of this component is data segmentation,Clicking on the TabItem title does not navigate, and if you need to navigate the address bar, set the ClickTabToNavigation property to true,When you click on the TabItem title, the address bar redirects navigation, mostly for the background management system to be used in conjunction with the Menu components,The actual combat can refer to the multi-label mode in the background template simulator, When you have Razor Component in the additional Assemblies, set the AdditionalAssemblies property value correctly so that the route within the label component is resolved correctly, and the relevant documentation [Portal]", + "TabsTips4": "This component adapts to width height, etc., and scroll arrows can appear left and right or up and down when appropriate", + "TabsTipsTitle": "Tab components are generally used in two ways:", + "TabsTitle": "Tabs", + "TabsToolbarDesc": "After clicking the button, the counter value increases, and clicking the Refresh button on the toolbar will reset the counter.", + "TabsToolbarIntro": "By setting ShowToolbar, you can display the tab toolbar. By default, the Refresh and Fullscreen buttons are displayed. You can control whether to display them by ShowRefreshToolbarButton and ShowFullscreenToolbarButton, click the Refresh button to trigger the OnToolbarRefreshCallback callback method. You can customize toolbar buttons using ToolbarTemplate", + "TabsToolbarTitle": "Toolbar" }, - "BootstrapBlazor.Server.Components.Samples.SelectTables": { - "Title": "Table Select", - "Intro": "The dropdown box is a table used to display the selection requirements for complex types", - "NormalTitle": "Basic usage", - "NormalIntro": "Suitable for candidates with a relatively large amount of information, presenting information using Table", - "NormalDesc": "You can use IsClearable to control whether to display the clear button. The default value is false", - "ColorTitle": "Color", - "ColorIntro": "Change component border color by setting Color", - "IsDisabledTitle": "Disabled", - "IsDisabledIntro": "When you set the IsDisabled property value to true, the component suppresses select", - "TemplateTitle": "Value Template", - "TemplateIntro": "Present customized display content by customizing the Template", - "AttributeItems": "Data source table display content set", - "AttributeTableColumns": "Table Display Column Set", - "AttributeColor": "Color", - "AttributeIsDisabled": "Is it disabled", - "AttributeShowAppendArrow": "Is the right extended small arrow displayed", - "AttributeGetTextCallback": "Get display value callback method", - "AttributePlaceHolder": "Placeholder", - "AttributeHeight": "Table height", - "AttributeTableMinWidth": "The min width of Table", - "AttributeTemplate": "Display Template", - "ValidateFormTitle": "ValidateForm", - "ValidateFormIntro": "Intercept data when the value is empty", - "SortableTitle": "Sort/Filter", - "SortableIntro": "Enable sorting and filtering functions by setting Sortable Filterable in TableColumn, just like the component Table", - "SearchTitle": "Sort/Filter", - "SearchIntro": "By setting TableColumn Searchable to enable column searchability, just like the component Table, by setting IsPagination ShowSearch to enable pagination and table search functions" + "BootstrapBlazor.Server.Components.Samples.Tags": { + "Tag1": "Label I", + "Tag2": "Label II", + "Tag3": "Label III", + "Tag4": "Label IV", + "Tag5": "Label V", + "Tag6": "Label VI", + "Tag7": "Label VII", + "TagsCloseButtonIntro": "Provides a label for the close button", + "TagsCloseButtonTitle": "Close button", + "TagsIconIntro": "Improve readability when representing a state.", + "TagsIconTitle": "With Icon", + "TagsNormalIntro": "Non floating elements in the page will not disappear automatically.", + "TagsNormalTitle": "Basic usage", + "TagsOnDismiss": "Close label callback method", + "TagsSubTitle": "Used for marking and selection.", + "TagsTitle": "Tag" }, - "BootstrapBlazor.Server.Components.Samples.SelectTables+SelectTableMode": { - "Foo.Required": "{0} is required." + "BootstrapBlazor.Server.Components.Samples.TaskBoard": { + "TaskBoardIntro": "Background task dashboard", + "TaskBoardNormalIntro": "This component provides detailed information about background task schedule trigger.", + "TaskBoardNormalTitle": "Basic usage", + "TaskBoardTitle": "Task DashBoard" }, - "BootstrapBlazor.Server.Components.Samples.SelectObjects": { - "Title": "Table-Object", - "Intro": "Dropdown boxes are used to display the selection requirements for complex types for any component", - "NormalTitle": "Basic usage", - "NormalIntro": "Use built in ListView component to select images", - "NormalDesc": "You can use IsClearable to control whether to display the clear button. The default value is false", - "MinWidthTitle": "Min-Width", - "MinWidthIntro": "Change the minimum width of the dropdown box by setting the DropdownMinWidth value", - "HeightTitle": "Height", - "HeightIntro": "Change the height of the dropdown box by setting the Height value", - "CustomComponentTitle": "Custom Components", - "CustomComponentIntro": "Any component can be placed in a dropdown box, and a callback is required for assignment or window closure" + "BootstrapBlazor.Server.Components.Samples.TextAreas": { + "TextAreaAutoScroll": "Automatic scrolling", + "TextAreaBindWayBindValue": "The binding value", + "TextAreaBindWayIntro": "Binding variables within a component, data is automatically synchronized", + "TextAreaBindWayTitle": "Two-way binding", + "TextAreaDisableIntro": "When you set the IsDisabled property value to true, the component suppresses input", + "TextAreaDisableTitle": "Disable", + "TextAreaHeightIntro": "When you set the rows property, component initialization displays a fixed row height", + "TextAreaHeightTitle": "Height", + "TextAreaKeyEventIntro": "Start the Enter Esc key callback event by setting OnEnterAsync OnEscAsync", + "TextAreaKeyEventPlaceHolder": "Press Enter/Esc key to trigger the event", + "TextAreaKeyEventTitle": "Enter/Esc KeyEvent", + "TextAreaMockChat": "Mock chat ", + "TextAreaNormalIntro": "A large amount of text is acceptable", + "TextAreaNormalTitle": "Basic usage", + "TextAreaPlaceHolder": "Please enter ...", + "TextAreaReadOnlyIntro": "When you set the readonly property, the component prohibits input", + "TextAreaReadOnlyTitle": "Readonly", + "TextAreaScrollIntro": "Scroll to bottom/top/position", + "TextAreaScrollTitle": "Content scrolling", + "TextAreaScrollTo": "Scroll +20", + "TextAreaScrollToBottom": "Scroll to bottom", + "TextAreaScrollToTop": "Scroll to top", + "TextAreaSubTitle": "Used to enter a large amount of text", + "TextAreaTitle": "Textarea", + "TextAreaUseShiftEnterIntro": "By setting UseShiftEnter=\"true\" you can start using Shift + Enter for line breaks, which is suitable for dialog applications.", + "TextAreaUseShiftEnterPlaceHolder": "Please enter some text, Enter sends Shift + Enter line break", + "TextAreaUseShiftEnterTitle": "Shift Enter" }, - "BootstrapBlazor.Server.Components.Samples.BrowserFingers": { - "BrowserFingerTitle": "Browser fingerprint", - "BrowserFingerIntro": "Obtain the client browser fingerprint by calling the IBrowserFingerService service instance method GetFingerCodeAsync. The fingerprint is consistent in privacy mode", - "GetFingerCodeAsync": "Method for obtaining fingerprints", - "GetClientHubIdAsync": "Method for obtaining client hub Id" + "BootstrapBlazor.Server.Components.Samples.Timelines": { + "TimelineItemContent1": "Creation time", + "TimelineItemContent2": "Approved", + "TimelineItemContent3": "The event starts on schedule", + "TimelineItemContent4": "The default style of the node", + "TimelineItemContent5": "Support for custom colors", + "TimelineItemContent6": "Icons are supported", + "TimelinesAlternateDescription": "Control the alternating timeline left and right by setting the IsAlternate property", + "TimelinesAlternateIntro": "Content appears alternately on both sides of the timeline", + "TimelinesAlternateTitle": "Alternate presentations", + "TimelinesAttributeTitle": "TimelineItem attributes", + "TimelinesColor": "Node color", + "TimelinesComponent": "Node custom components", + "TimelinesContent": "The body of the content", + "TimelinesCustomNodeStyleIntro": "You can customize the node color according to the actual scene, or use the icon directly.", + "TimelinesCustomNodeStyleTitle": "Customize the node style", + "TimelinesDescription": "The node description text", + "TimelinesDescription1": "Real-time output", + "TimelinesDescription2": "Counter", + "TimelinesDescription3": "Weather forecast information", + "TimelinesDisplayCustomComponentDescription": "Control the custom components that the timeline displays by setting the CustomerComponent of the TimelineItem", + "TimelinesDisplayCustomComponentIntro": "Custom components are displayed on the timeline", + "TimelinesDisplayCustomComponentTitle": "Show custom components", + "TimelinesIcon": "Node icon", + "TimelinesLeftDescription": "Control the content appearing on the left side of the timeline by setting the IsLeft property", + "TimelinesLeftIntro": "Content takes turns appearing on the left side of the timeline", + "TimelinesLeftTitle": "Shown on the left", + "TimelinesNormalDescription": "sort:", + "TimelinesNormalIntro": "Timeline can be split into multiple activities arranged in positive or reverse order of timestamps, which are an important feature that distinguishes them from other controls, and should be used with care to distinguish them from Step component.", + "TimelinesNormalTitle": "Basic usage", + "TimelinesSelectedItem1": "Positive order", + "TimelinesSelectedItem2": "Reverse order", + "TimelinesSubTitle": "Visualize time flow information", + "TimelinesTitle": "Timeline" }, - "BootstrapBlazor.Server.Components.Samples.SvgEditors": { - "SvgEditorTitle": "SvgEditor", - "BasicTitle": "Svg Editor", - "BasicIntro": "Use svg editor" + "BootstrapBlazor.Server.Components.Samples.TimePickers": { + "Description": "Used to select or enter a timespan", + "HasSecondsIntro": "Whether to display or hide the seconds control", + "HasSecondsTitle": "Hide seconds", + "OnConfirmIntro": "You can choose any time", + "OnConfirmTitle": "Select any point in time", + "Title": "TimePicker" }, - "BootstrapBlazor.Server.Components.Samples.FlipClocks": { - "FlipClocksTitle": "FlipClock", - "FlipClocksDescription": "Used for website timing or countdown", - "CountText": "Counter", - "CountIntro": "By setting ViewMode=\"FlipClockViewMode.Count\" to enable the timer function, the start time can be set using StartValue", - "IsCountDownText": "CountDown", - "IsCountDownIntro": "By setting ViewMode=\"FlipClockViewMode.CountDown\" for the countdown function, the start time can be set using StartValue. Trigger the OnCompletedAsync callback method when the countdown ends", - "CustomText": "Custom Text", - "CustomIntro": "Customize the display content by setting parameters", - "Custom": "Parameter Settings", - "Height": "Height", - "FontSize": "Font Size", - "CardHeight": "Card Height", - "CardWidth": "Card Width", - "CardMargin": "Card Margin", - "CardGroupMargin": "Card Group Margin", - "ShowDay_Description": "Show day", - "ShowHour_Description": "Show hour", - "ShowMinute_Description": "Show minute", - "ShowMonth_Description": "Show month", - "ShowYear_Description": "Show year", - "ViewMode_Description": "View mode", - "StartValue_Description": "Start time", - "OnCompletedAsync_Description": "Callback when timer completed", - "Height_Description": "Height", - "BackgroundColor_Description": "Background color", - "FontSize_Description": "Font size", - "CardWidth_Description": "Card width", - "CardHeight_Description": "Card height", - "CardColor_Description": "Card font color", - "CardBackgroundColor_Description": "Card background color", - "CardDividerHeight_Description": "Card divider height", - "CardDividerColor_Description": "Card divider color", - "CardMargin_Description": "Card margin", - "CardGroupMargin_Description": "Card group margin" + "BootstrapBlazor.Server.Components.Samples.Timers": { + "TimersColorIntro": "Set the circular progress bar color by setting the Color property", + "TimersColorTitle": "Color", + "TimersDescription": "For time countdown", + "TimersNormalIntro": "Set the countdown time by setting the Value attribute", + "TimersNormalTitle": "Basic usage", + "TimersTitle": "Timer" }, - "BootstrapBlazor.Server.Components.Samples.Icons.BootstrapIcons": { - "Title": "Bootstrap Icons", - "BaseUsageText": "Free, high quality, open source icon library", - "Icons": "For icon list, please visit [portal]", - "P1": "Extending the Component Package by Reference", - "P2": "After adding the stylesheet file link open icon" + "BootstrapBlazor.Server.Components.Samples.Titles": { + "AdvanceB": "Pay attention:", + "AdvanceIntro": "There is no need to add the Title component to the webpage, and the injection service TitleService is called", + "AdvanceP": "When using this method, please add not set Text attribute in App or MainLayout or Page The Title component of ", + "AdvanceTitle": "Advanced usage", + "BasicUsageIntro": "Add the Title component to the web page and set the text attribute", + "BasicUsageP": "Set the Text property", + "BasicUsageP1": "Test page", + "BasicUsageTips": "The Title component is used by ordinary components after setting text, and can be called by the service when the text attribute is not set", + "BasicUsageTitle": "BasicUsage", + "BasicUsageTitleText": "I am the title", + "FuncationParmeter": "I am the title", + "StaticB": "Pay attention", + "StaticDiv": "When using this method, please add not set Text attribute in App or MainLayout or PageThe Title component of ", + "StaticIntro": "Call the TitleService static method directly", + "StaticTitle": "Static method", + "SubTitle": "Used to set page title", + "Tips": "

      NET6. 0 you can use the Microsoft PageTitle component to set the page title. This component additionally provides setting the current page title in the form of service

      ", + "Title": "Title" }, - "BootstrapBlazor.Server.Components.Samples.Icons.FluentSystemIcons": { - "Title": "Fluent System Icons", - "BaseUsageText": "Microsoft Free Open Source Icon Library", - "Icons": "For icon list, please visit [portal]", - "P1": "Extending the Component Package by Reference", - "P2": "After adding the stylesheet file link open icon" + "BootstrapBlazor.Server.Components.Samples.Toasts": { + "ShowHeaderText": "Toast", + "ToastsAsyncDemoStep1Text": "Packing documents, please wait...", + "ToastsAsyncDemoStep2Text": "Packaging completed, downloading...", + "ToastsAsyncDemoStep3Text": "Download completed, close the window automatically", + "ToastsAsyncDemoTitle": "Async notification", + "ToastsAsyncIntro": "By setting the button's IsAsync parameter, use the same ToastOption to update the pop-up window information for different steps", + "ToastsAsyncText": "AsyncNotify", + "ToastsAsyncTitle": "Async notification", + "ToastsCloseIntro": "It will not close automatically, you need to manually click the close button. You can customize the event after closing the pop-up window by settingOnCloseAsynccallback delegate", + "ToastsCloseNotificationText": "success notification", + "ToastsCloseTitle": "Toast is closed manually", + "ToastsDanger": "Failure notification", + "ToastsDescriptionTitle": "Component usage introduction", + "ToastsHeaderTemplateIntro": "set HeaderTemplate custom the header content", + "ToastsHeaderTemplateTitle": "Custom header", + "ToastsInfo": "Information notice", + "ToastsNormalIntro": "When the user operates, the lower right corner will give appropriate prompt information", + "ToastsNormalTitle": "Basic usage", + "ToastsPositionAddComponent": "Add BootstrapBlazor component", + "ToastsPositionAddsNew": "The system adds new components, it will automatically shut down after 4 seconds", + "ToastsPositionAttentionText": "pay attention", + "ToastsPositionAutoClose": "Save data successfully, automatically close after 4 seconds", + "ToastsPositionAutomaticDisappearance": "Uniformly set the automatic disappearance time of the Toast component", + "ToastsPositionBoxTitle": "Notification box Title value", + "ToastsPositionCategory": "Notification category", + "ToastsPositionConfigured": "Configured via the ConfigureServices method in the Startup file for Server-Side App and WebAssembly App", + "ToastsPositionContent": "Notification body content", + "ToastsPositionDescription": "Set the location where the popup appears by setting the Placement value of the Toast component. The default value is BottomEnd. upper right corner", + "ToastsPositionDisappearance": "Uniformly set the automatic disappearance time of the Toast component", + "ToastsPositionIntro": "Provides settings where the Toast popup appears", + "ToastsPositionNote1": "Special Note: The Delay parameter value of the Toast component in the entire system can be set through the BootstrapBlazorOptions global unified configuration parameter", + "ToastsPositionNote2": "Configured through the configuration file appsetting.json file, suitable for Server-Side App", + "ToastsPositionNotification": "notification", + "ToastsPositionSaved": "Successfully saved", + "ToastsPositionServerSide": "Or, for Server-Side App only", + "ToastsPositionTips": "This component provides functions in the form of injection services, and the user experience is very comfortable when used, and can be called anytime, anywhere
      The injection service provides the following shortcut invocation methods:", + "ToastsPositionTips2": "Examples are as follows", + "ToastsPositionTitle": "Toast display location", + "ToastsPreventIntro": "By setting PreventDuplicates=\"true\" to repeatedly click the button below, only one pop-up window will appear", + "ToastsPreventText": "Prevent Duplicates", + "ToastsPreventTitle": "Prevent Duplicates", + "ToastsShowHeaderIntro": "Set ShowHeader=\"false\" remove Header", + "ToastsShowHeaderTitle": "No header", + "ToastsSubTitle": "Provides a lightweight toast popup", + "ToastsSuccess": "Success notification", + "ToastsTips1": "1. Inject service ToastService", + "ToastsTips2": "2. Call its instance api", + "ToastsTitle": "Toast Lightweight Popup", + "ToastsWarning": "Warning notice" }, - "BootstrapBlazor.Server.Components.Samples.Icons.ElementIcon.ElementIcons": { - "ElementIconTitle": "Element-plus Icons", - "ElementIconDescription": "Free, high quality, open source icon library", - "CopiedTooltipText": "Copied", - "P1": "1. After referencing the extension package, add the package built-in style file to open the icon", - "P2": "2. Enable css isolation and automatically reference component styles after compilation", - "P3": "Please copy the following code segement", - "Icons": "For icon list, please visit [portal]" + "BootstrapBlazor.Server.Components.Samples.Toggles": { + "BasicUsageP": "Click the first switch to output the log with value", + "BindToWayDisplayText1": "An example of a two-way binding", + "BindToWayDiv": "The binding value:", + "BindToWayP1": "when the Switch component turns on bidirectional binding, the DisplayName label value is automatically obtained based on the bound Model property value and appears as a pre-Label, which can be customized to display the pre-label through the DisplayText property, or through the ShowLabel property turns off the display of the prelabel", + "BindToWayP2": "Set the DisplayText value to custom label ", + "BindToWayP3": "The value of DisplayText is displayed when ShowLabel is true, regardless of whether the value is set", + "BindToWayP4": "The value of DisplayText is not displayed when the ShowLabel is false", + "CustomLabelText": "Custom labels", + "NotDisplayText": "Do not display", + "NotOccupantsText": "Not Occupants", + "OccupantsText": "Occupants", + "TogglesBindToWayIntro": "Binding variables within a component, data is automatically synchronized", + "TogglesBindToWayTitle": "Bind data in both directions", + "TogglesDisableIntro": "The switch is not available.", + "TogglesDisableTitle": "Disable the state", + "TogglesNormalIntro": "Click the button to switch statuses", + "TogglesNormalTitle": "Basic usage", + "TogglesOffText": "Off", + "TogglesOnText": "On", + "TogglesSubTitle": "The most common switching application is available with a value of true false", + "TogglesTitle": "Toggle", + "ValueChanged": "Gets the value of the selection change" }, - "BootstrapBlazor.Server.Components.Samples.Icons.FAIcons": { - "Title": "Font Awesome Icons", - "BaseUsageText": "BootstrapBlazor uses Font Awesome latest version as the built-in icon library. All icons are as follows", - "SwitchButtonTextOff": "Click to copy", - "SwitchButtonTextOn": "Show Copy Dialog", - "P1": "Extending the Component Package by Reference", - "P2": "After adding the stylesheet file link open icon", - "CopiedTooltipText": "Copied", - "Icons": "For icon list, please visit [portal]" + "BootstrapBlazor.Server.Components.Samples.Toolbars": { + "NormalTitle": "Normal", + "ToolbarsTitle": "Toolbar", + "ToolbarSubTitle": "ToolBar component is a container for buttons or other application-specific tools" }, - "BootstrapBlazor.Server.Components.Samples.Icons.MaterialDesignIcons": { - "Title": "MaterialDesign Icons", - "BaseUsageText": "Material Design system icons are simple, modern and user-friendly", - "Icons": "For icon list, please visit [portal]", - "P1": "Extending the Component Package by Reference", - "P2": "After adding the stylesheet file link open icon" + "BootstrapBlazor.Server.Components.Samples.Tooltips": { + "BootstrapTooltipIntro": "Try to make a new component that is more comfortable to use, you can use it early, the name of the component may be changed later", + "BootstrapTooltipTips1": "Wrap other components or HTML elements through BootstrapTooltip so that the wrapped object has the function of Tooltip", + "BootstrapTooltipTips2": "In this example, an icon is wrapped by BootstrapTooltip. When the mouse moves over the icon, the default Tooltip is displayed, which is easier and faster to use.", + "BootstrapTooltipTitle": "test component", + "TooltipsButtonIntro": "Provides a tooltip after hovering over the mouse or gaining focus", + "TooltipsButtonTitle": "Button component tooltip", + "TooltipsCustomClassIntro": "Set the custom style by setting the CustomClass parameter", + "TooltipsCustomClassTitle": "custom style", + "TooltipsDescription": "Provides a tooltip after hovering over the mouse or gaining focus", + "TooltipsManualDescLI1": "The child component uses the cascade parameters to get the Tooltip instance and then calls its methods Show Hide Toggle", + "TooltipsManualDescLI2": "Get the Tooltip instance through @ref and call its instances method", + "TooltipsManualIntro": "Use code to control the tooltip state by setting Trigger=\"manual\"", + "TooltipsManualTitle": "Manual", + "TooltipsNormalIntro": "Often used to display the prompt information when the mouse hovers", + "TooltipsNormalTitle": "Basic usage", + "TooltipsSelectorIntro": "Precisely locate trigger prompt box elements by setting Selector parameters", + "TooltipsSelectorTitle": "Prompt host settings", + "TooltipsTitle": "Tooltip" }, - "BootstrapBlazor.Server.Components.Samples.Icons.IconPark.IconParks": { - "IconParkTitle": "ByteDance Svg Icon Lib", - "IconParkDescription": "It has covered all platforms of ByteDance commercial product series and has been introduced and used by 12 platforms as the underlying code, ensuring the uniformity of icon style and cognition.", - "CopiedTooltipText": "Copied", - "P1": "1. After referencing the extension package, add the package built-in style file to open the icon", - "P2": "2. Enable css isolation and automatically reference component styles after compilation", - "P3": "Please copy the following code segement", - "Icons": "For icon list, please visit [portal]" + "BootstrapBlazor.Server.Components.Samples.Topologies": { + "TopologiesDescription": "Rendering of human-computer interface through Topology open source components", + "TopologiesNormalIntro": "Just load the Json file exported by the website, click the number box below the fan to control the operation", + "TopologiesNormalTitle": "Basic usage", + "TopologiesTitle": "Topology HMI" }, - "BootstrapBlazor.Server.Components.Samples.Icons.AntDesign.AntDesignIcons": { - "AntDesignIconTitle": "AntDesign Svg Icon Lib", - "AntDesignIconDescription": "Semantic vector graphics.", - "CopiedTooltipText": "Copied", - "P1": "1. After referencing the extension package, add the package built-in style file to open the icon", - "P2": "2. Enable css isolation and automatically reference component styles after compilation", - "P3": "Please copy the following code segement", - "Icons": "For icon list, please visit [portal]" + "BootstrapBlazor.Server.Components.Samples.Transfers": { + "Backup": "Backup", + "BindToWayButtonText1": "Add", + "ClientValidationButtonText": "Submit", + "ClientValidationP1": "The Transfer component built into the ValidateForm component turns on client authentication, in this case the component bidirectional binding Model.Hobby type is IEnumerable<string>", + "Data": "Data", + "LeftButtonText": "To the left", + "LeftPanelText": "The list on the left", + "OnSelectedItemsChanged": "The callback method when the component binding data item collection options change", + "OnSetItemClass": "Set the Item style callback method", + "PlaceHolder": "Please enter", + "RightButtonText": "To the Right", + "RightPanelText": "The list on the right", + "TransferBindDescription": "Transfer component is a generic component that supports three binding types string IEnumerable<string> IEnumerable<SelectedItem> in this case bidirectional binding TheSelectValue type is IEnumerable<SelectedItem>", + "TransferBindIntro": "When component data changes, the bidirectional binding bind-Value values change synchronously", + "TransferBindTitle": "Two-way binding", + "TransferCustomerIntro": "You can customize the list title copy, button copy, rendering function of data items, check status copy at the bottom of the list, content area at the bottom of the list, and so on.", + "TransferCustomerTitle": "Customizable", + "TransferDisableIntro": "When you set the IsDisabled property value to true, the component suppresses input", + "TransferDisableTitle": "Disable", + "TransferItemClassIntro": "By setting the OnSetItemClass callback method styles options based on the values of SelectedItem", + "TransferItemClassTitle": "Set the Item style", + "TransferMinMaxIntro": "By setting Min Max Parameter to limit the number of options", + "TransferMinMaxTitle": "Max Min Constraint", + "TransferNormalIntro": "Select the candidate items on the left and click the move button to move them to the right", + "TransferNormalTitle": "Basic usage", + "TransferSearchIntro": "In cases where there is a lot of data, you can search and filter the data.", + "TransferSearchTitle": "Searchable", + "TransfersTitle": "Transfer", + "TransferValidateIntro": "When component data changes, the bidirectional binding bind-Value values change synchronously", + "TransferValidateTitle": "Client Validation" }, - "BootstrapBlazor.Server.Components.Samples.Icons.OctIcon.OctIcons": { - "OctIconTitle": "Oct Svg Icon Lib", - "OctIconDescription": "A scalable set of icons handcrafted with <3 by GitHub", - "CopiedTooltipText": "Copied", - "P1": "1. After referencing the extension package, add the package built-in style file to open the icon", - "P2": "2. Enable css isolation and automatically reference component styles after compilation", - "P3": "Please copy the following code segement", - "Icons": "For icon list, please visit [portal]" + "BootstrapBlazor.Server.Components.Samples.Transitions": { + "TransitionsDescription": "BootstarpBlazor applies the transition animation to some components, you can also use it directly.", + "TransitionsDurationIntro": "Control the animation duration in milliseconds by setting the Duration parameter", + "TransitionsDurationTitle": "Set animation duration", + "TransitionsEndCallbackIntro": "Execute the callback function after the animation is completed", + "TransitionsEndCallbackTitle": "Animation execution complete callback", + "TransitionsNormalIntro": "Demonstration of basic animation effects", + "TransitionsNormalTitle": "Basic usage", + "TransitionsTitle": "Transition effect" }, - "BootstrapBlazor.Server.Components.Samples.Icons.UniverIcon.UniverIcons": { - "UniverIconTitle": "Univer Svg Icon Lib", - "UniverIconDescription": "Icons used by Univer", - "CopiedTooltipText": "Copied", - "P1": "1. After referencing the extension package, add the package built-in style file to open the icon", - "P2": "2. Enable css isolation and automatically reference component styles after compilation", - "P3": "Please copy the following code segement", - "Icons": "For icon list, please visit [portal]" + "BootstrapBlazor.Server.Components.Samples.Translators": { + "TranslatorsDescription": "Converts characters or letters of a source language to the corresponding characters or letters of a target language.", + "TranslatorsInjectService": "Inject Service", + "TranslatorsNormalIntro": "Call TranslateAsync method for convert target language", + "TranslatorsNormalTitle": "Basic usage", + "TranslatorsTitle": "Azure Translator", + "TranslatorsTranslate": "Translate" }, - "BootstrapBlazor.Server.Components.Samples.BootstrapBlazorIcons": { - "IconsTitle": "Icon", - "IconsDescription": "Supports font icons, vector SVG icons, and Image pictures", - "FATitle": "Font Icons", - "FAIntro": "You can specify the icon style by setting Name", - "SvgTitle": "Svg Icons", - "SvgIntro": "Load the Svg sprite image by setting IsSvgSprites=\"true\" Url and specify its Id value by Name", - "ImageTitle": "Image", - "ImageIntro": "Customize the displayed content through the ChildContent template", - "Icons": "For icon list, please visit [portal]" + "BootstrapBlazor.Server.Components.Samples.TreeViews": { + "OnMaxSelectedCountExceedTitle": "Maximum Info", + "TreeViewAccordionModelDescription": "Enable the accordion effect by setting the IsAccordion property of the Tree component", + "TreeViewAccordionModelIntro": "For nodes of the same level, only one can be expanded at a time", + "TreeViewAccordionModelTitle": "Accordion mode", + "TreeViewCheckboxAddButtonText": "Add", + "TreeViewCheckboxButtonText": "Refresh", + "TreeViewCheckboxCheckBoxDisplayText1": "Automatically select child nodes", + "TreeViewCheckboxCheckBoxDisplayText2": "Automatically select parent node", + "TreeViewCheckboxIntro": "Suitable for use when you need to select a level", + "TreeViewCheckboxTips1": "By setting the OnTreeItemChecked property to monitor the event when the tree control node is checked, when the check box in front of the tree control node is selected, the following log displays the data of the selected node", + "TreeViewCheckboxTips2": "The Tree component will keep the status of each node when loading data. The Refresh button will update the data source Items and reinitialize the component. When you click the Append Node button, only the data inside the data source will be changed without reassigning values, so the status of each node will remain unchanged.", + "TreeViewCheckboxTitle": "Checkbox", + "TreeViewCheckedItemsIntro": "Get all nodes by setting the OnTreeItemChecked callback delegate", + "TreeViewCheckedItemsTitle": "Get all selected nodes", + "TreeViewDefaultExpandDescription": "By setting the IsExpand property of the TreeViewItem object, you can control whether this node is in the expanded state by default. In this example, navigation 2 is in the expanded state by default, and the rest Node defaults to contracted state", + "TreeViewDefaultExpandIntro": "Some nodes of Tree can be set to be expanded or selected by default", + "TreeViewDefaultExpandTitle": "Expanded by default and selected by default", + "TreeViewDraggableDescription": "By setting the AllowDrag property, you can drag and drop nodes in the tree control. Use the OnDragItemEndAsync callback delegate to handle the drop event.", + "TreeViewDraggableIntro": "Allows nodes to be dragged and dropped in the tree control", + "TreeViewDraggableTitle": "Draggable nodes", + "TreeViewEnableKeyboardArrowUpDownIntro": "Support keyboard up and down arrow operations by setting EnableKeyboardArrowUpDown=\"true\". ArrowLeft collapse the node, ArrowRight expand the node, ArrowUp move the node up, ArrowDown move the node down, Space select the node,", + "TreeViewEnableKeyboardArrowUpDownTitle": "Keyboard", + "TreeViewMaxSelectedCountDesc": "When more than 2 nodes are selected, a Toast prompt bar will pop up", + "TreeViewMaxSelectedCountIntro": "Control the maximum number of selectable items by setting the MaxSelectedCount property, and handle the logic through the OnMaxSelectedCountExceed callback", + "TreeViewMaxSelectedCountTitle": "MaxSelectedCount", + "TreeViewNormalDescription": "By setting the OnTreeItemClick property to monitor the event when the tree control node is clicked, the following log displays the data of the selected node when the tree control node is clicked", + "TreeViewNormalIntro": "Basic tree structure display", + "TreeViewNormalTitle": "Basic usage", + "TreeViewsAttribute": "TreeViewItem property", + "TreeViewsDescription": "Present information in a clear hierarchy that can be expanded or collapsed", + "TreeViewsDisableWholeTreeView": "Whole TreeView disable", + "TreeViewSetActiveDisplayText": "Current Active Node", + "TreeViewSetActiveIntro": "Set the currently active node by calling the SetActiveItem method", + "TreeViewSetActiveTitle": "Set Active Node", + "TreeViewShowSearchIntro": "By setting ShowSearch to display the search bar, and using the OnSearchAsync callback method to set the data source to refresh the page", + "TreeViewShowSearchTitle": "Show search", + "TreeViewShowSkeletonButtonText": "Asynchronous loading", + "TreeViewShowSkeletonIntro": "When the component Items is null, set ShowSkeleton=\"true\" to display the skeleton screen when asynchronously loading data. Set ShowSkeleton=\"false\" to display the default loading animation.", + "TreeViewShowSkeletonTitle": "Loading skeleton screen", + "TreeViewShowToolbarDesc": "After it is turned on, when the mouse hovers over a node, a toolbar icon appears on the right, and the toolbar function can be customized; data is updated by setting the OnUpdateCallbackAsync callback method; the toolbar template is defined by setting ToolbarTemplate, and if not set, the internal default node name template is used", + "TreeViewShowToolbarIntro": "Show the toolbar by setting ShowToolbar=\"true\"", + "TreeViewShowToolbarTitle": "Show Toolbar", + "TreeViewsTips1": "If the component is a generic component, you need to use TItem to specify the bound data model. In this example, the model is TreeFoo and needs to be set", + "TreeViewsTips10": "Step 2: Set Items to get the component data source Note The data source type is IEnumerable<TreeViewItem<TItem>>", + "TreeViewsTips11": "Step 3: Set the OnExpandNodeAsync callback delegate to expand the response node to get the child data source collection", + "TreeViewsTips12": "Step 4: Set ModelEqualityComparer to provide a component identification model comparison delegate method, Note This setting is optional. Perform downgrade search through the fallback mechanism explained above", + "TreeViewsTips2": "Set TreeViewItem its IsExpand parameter to control whether the current child node is expanded", + "TreeViewsTips3": "When clicking on the small arrow to expand the child item, obtain the child item data collection through the OnExpandNodeAsync callback delegate method", + "TreeViewsTips4": "Keep the node state fallback mechanism, ModelEqualityComparer CustomKeyAttribute IEqualityComparer<TItem> Equals overloaded method", + "TreeViewsTips5": "The component will remain in the expanded collapsed selected state", + "TreeViewsTips6": "Set whether the node is expanded state through TreeViewItem<TItem>.IsExpand", + "TreeViewsTips7": "Set whether the node is selected state through TreeViewItem<TItem>.IsActive", + "TreeViewsTips8": "Through TreeViewItem<TItem>.Checked, set whether the node is in checked/single selection state", + "TreeViewsTips9": "Step 1: Set the TItem generic model", + "TreeViewsTipsOnBeforeTreeItemClick": "You can prevent a node click by setting the OnBeforeTreeItemClick callback method, and cancel the click action when it returns false.", + "TreeViewsTitle": "Tree tree control", + "TreeViewsWhetherToExpandWhenDisable": "Whether to expand when the control node is disabled", + "TreeViewTreeClickExpandDescription": "By setting the ClickToggleNode property of the TreeViewItem object, you can control whether this node can be expanded and contracted by clicking", + "TreeViewTreeClickExpandIntro": "By setting ClickToggleNode to control whether to expand and contract when the node is clicked", + "TreeViewTreeClickExpandTitle": "Click on the node to expand and contract", + "TreeViewTreeCustomNodeIntro": "Implement your own node template by setting TreeViewItem Template", + "TreeViewTreeCustomNodeTitle": "Custom node", + "TreeViewTreeDisableDescription": "By setting the Disabled property of the data source TreeViewItem object, you can control whether this node can be checked or not. When set to false, it will not affect the node expansion. /shrink function", + "TreeViewTreeDisableIntro": "Some nodes of the Tree can be set to disabled state", + "TreeViewTreeDisableTitle": "Disabled state", + "TreeViewTreeDisplayIconDescription": "By setting the ShowIcon property of the TreeViewItem object, you can control whether this node displays the icon or not", + "TreeViewTreeDisplayIconIntro": "Control whether the component displays the icon by setting ShowIcon", + "TreeViewTreeDisplayIconTitle": "Show icon", + "TreeViewTreeLazyLoadingDescription": "By setting the node HasChildNode to control whether to display the small arrow picture of the node. Add nodes through Tree's OnExpandNodeAsync delegate", + "TreeViewTreeLazyLoadingIntro": "Dynamically add child nodes when expanding a node", + "TreeViewTreeLazyLoadingTitle": "Lazy loading", + "TreeViewTreeNodeColorIntro": "Implement your own node style by setting TreeViewItem CssClass", + "TreeViewTreeNodeColorTitle": "Node color", + "TreeViewTreeValidationFormDescription": "Show Checkbox built into validation component ValidateForm by setting ShowCheckbox property does not show DisplayName", + "TreeViewTreeValidationFormIntro": "Tree can be enabled inside the component Checkbox will be displayed when it is built into the validation form DisplayName This function needs to be disabled in the tree component", + "TreeViewTreeValidationFormTitle": "The Tree component is built into the validation form", + "TreeViewVirtualizeDescription": "The component uses Virtualize to implement virtual scrolling logic, which reduces the pressure on the browser. However, if there is a lot of tree structure data, such as Select All, all data must be marked, resulting in large data in the memory. This problem has not been solved yet. Currently, this component still puts a lot of pressure on the CPU due to large data.", + "TreeViewVirtualizeIntro": "Enable virtual scrolling by setting IsVirtualize=\"true\" to support big data", + "TreeViewVirtualizeTitle": "Virtualize" }, - "BootstrapBlazor.Server.Components.Samples.DriverDotnetJs": { - "DriverJsPopoverTitleText": "Animated Tour Example", - "DriverJsPopoverContentText1": "Here is the menu. Click it and a detailed example will appear on the right panel.", - "DriverJsPopoverContentText2": "Here is the component introduction. You can switch the icon theme by clicking the radio button below", - "DriverJsPopoverContentText3": "This is the sample area, where specific examples are shown", - "DriverJsPopoverContentText4": "Here is the example area", - "DriverJsPopoverContentText5": "Click here to get started", - "DriverJsTitle": "drive the user's focus across the page", - "DriverJsSubtitle": "built to be highly configurable. You can configure the driver globally, or per step. You can also configure the driver on the fly, while it’s running", - "DriverJsNormalTitle": "Basic usage", - "DriverJsNormalIntro": "Simple configuration with a click of a button to start user step-by-step guidance", - "DriverJsNormalDesc": "Disable the animation effect by setting the DriverJsConfig parameter Animate=\"false\"", - "DriverJsPopoverTitle": "Popover", - "DriverJsPopoverIntro": "By setting the DriverJsPopover component to configure Popover related configuration information", - "DriverJsPopoverDesc": "For detailed parameter information, please see [Portal]", - "DriverJsPopoverStyleTitle": "Custom Popover", - "DriverJsPopoverStyleIntro": "By setting PopoverClass=\"driverjs-theme\" custome the popover UI", - "DriverJsDestroyTitle": "Destroy callback", - "DriverJsDestroyIntro": "Callback method before destruction OnBeforeDestroyAsync or callback method for destruction OnDestroyedAsync", - "DriverJsDestroyDesc": "You can use the OnBeforeDestroyAsync callback to add some logic when the user tries to exit the tour. Prevent destruction when the callback method OnBeforeDestroyAsync returns not NULL string. You can also prevent the user from exiting the tour using AllowClose option. This option is useful when you want to force the user to complete the tour before they can exit.", - "DriverJsHighlightTitle": "Highlight", - "DriverJsHighlightIntro": "By calling the DriverJs component instance method Highlight, the specified element is highlighted and focused." + "BootstrapBlazor.Server.Components.Samples.Tutorials.BarCodeGenerator": { + "EmailDesc": "Use your iPhone's camera or the QR code scanner to scan the QR code below, then open the Email app to send an email.", + "Preview": "Preview", + "SelectType": "Select content type", + "TextDesc": "Use your iPhone's camera or the QR code scanning function to scan the QR code below, then open the Safari browser and search for the current text using the default search engine.", + "UrlDesc": "Use your iPhone's camera or the QR code scanning function to scan the QR code below, then open the Safari browser and open the current address", + "WiFiDesc": "Use your iPhone's camera or the QR code scanner to scan the QR code below to automatically join the WiFi network." }, - "BootstrapBlazor.Server.Components.Samples.IntersectionObservers": { - "IntersectionObserverTitle": "IntersectionObserver", - "IntersectionObserverDescription": "Scrolling makes the element visible to trigger component callbacks, mostly used for data lazy loading functions", - "IntersectionObserverBaseUsage": "Basic usage", - "IntersectionObserverNormalIntro": "Monitor element visibility changes by setting RootSelector RootMargin Threshold parameter values", - "IntersectionObserverNormalDescription": "This example loads 100 pictures. The invisible pictures load the default pictures (cached). When you scroll to the visible area, you load the real pictures.", - "IntersectionObserverLoadTitle": "Load", - "IntersectionObserverLoadIntro": "After scrolling to the bottom, a loading more indicator appears, notifying the background to load data", - "IntersectionObserverLoadDesc1": "By setting Threshold=\"1.0\" to constrain the loading indicator to be fully visible, perform the load more action", - "IntersectionObserverLoadDesc2": "Ensure that the loading indicator visibility is always checked by setting AutoUnobserve=\"false\" to prevent automatic removal of the check once it becomes visible", - "IntersectionObserverLoadDesc3": "Simulate network delay of 1s by setting the OnLoadMoreAsync method", - "IntersectionObserverVisibleTitle": "Threshold", - "IntersectionObserverVisibleIntro": "By setting Threshold specifying a ratio of intersection area to total bounding box area for the observed target", - "IntersectionObserverVisibleDesc": "In this example, Threshold=\"1\" is set, which means that the trigger condition is to play when the video is fully visible, otherwise it will automatically pause", - "IntersectionObserverVisiblePauseLabel": "Video Paused", - "IntersectionObserverVisiblePlayLabel": "Video Playing", - "IntersectionObserverThresholdTitle": "IntersectionRatio", - "IntersectionObserverThresholdIntro": "After setting Threshold, the intersection ratio between the observed element and the root element is obtained through the callback parameter IntersectionObserveEntry attribute IntersectionRatio", - "IntersectionObserverThresholdDesc": "Drag the scroll bar of the div below to observe data changes", - "AttributeUseElementViewport": "The element that is used as the viewport for checking visibility of the target", - "AttributeRootMargin": "Margin around the root. Can have values similar to the CSS margin property", - "AttributeThreshold": "Either a single number or an array of numbers which indicate at what percentage of the target's visibility the observer's callback should be executed", - "AttributeAutoUnobserveWhenIntersection": "Whether to automatically cancel the observation when element visible", - "AttributeAutoUnobserveWhenNotIntersection": "Whether to automatically cancel the observation when element invisible", - "AttributeOnIntersectingAsync": "The callback when intersecting", - "AttributeChildContent": "Child component", - "LoadMoreTitle": "LoadMore Component", - "LoadMoreIntro": "By setting the LoadMore component parameter IsLoading to control the loading state, the OnLoadMoreAsync callback method loads more data", - "LoadMoreDesc": "

      In this example, the loading indicator is displayed by setting CanLoading to true, and the No More Data prompt text is displayed when loading is complete.

      • Customize the UI for loading more through LoadingTemplate
      • Customize the UI displayed when there is no more data through NoMoreTemplate
      • Set the indicator text displayed when there are no more add-ons through the NoMoreText parameter
      • " + "BootstrapBlazor.Server.Components.Samples.Tutorials.OnlineSheet": { + "ToastOnReadyContent": "After 4 seconds the table is updated by other writers to change the content", + "ToastOnReadyTitle": "Collaboration Notification" }, - "BootstrapBlazor.Server.Components.Samples.SortableLists": { - "SortableListTitle": "SortableList", - "SortableListDescription": "Reorderable drag-and-drop lists", - "SortableListNormalTitle": "Simple list example", - "SortableListNormalIntro": "Get the root element by setting the RootSelector parameter of the SortableListOption", - "SortableListGroupTitle": "Group", - "SortableListGroupIntro": "By setting the SortableListOption parameter Group to specify the group name, elements between different groups can be dragged", - "SortableListCloneTitle": "Clone", - "SortableListCloneIntro": "Set the SortableListOption parameter Clone to set whether to clone the current element when dragging", - "SortableListDisableSortTitle": "Disable Sort", - "SortableListDisableSortIntro": "By setting the SortableListOption parameter Sort to set whether to sort the current element when dragging", - "SortableListHandlerTitle": "Handler", - "SortableListHandlerIntro": "By setting the SortableListOption parameter Handle to specify the draggable element, the entire element is dragged when the mouse drags the icon", - "SortableListFilterTitle": "Filter", - "SortableListFilterIntro": "By setting the SortableListOption parameter Filter to set conditional drag elements, the red element in the example cannot be dragged", - "SortableListNestTitle": "Nest", - "SortableListNestIntro": "By nesting the SortableList component", - "SortableListMultiTitle": "Multiple Drag", - "SortableListMultiIntro": "By setting the SortableListOption parameter MultiDrag you can select multiple items before dragging", - "SortableListTableTitle": "Table Row", - "SortableListTableIntro": "By setting the SortableListOption parameter RootSelector to specify the drag root element as tbody, you can drag rows.", - "SortableListClassTitle": "Because SortableList is a container component, its contents are all custom components and cannot be styled. You need to set the style yourself according to the actual situation.", - "SortableListClassLi1": "Chosen item style sortable-chosen", - "SortableListClassLi2": "The default style of drag element clones is sortable-ghost and can be customized through GhostClass", - "SortableListClassLi3": "Drag elements to swap items. Default style sortable-swap-highlight can be customized by SwapClass", - "SortableListSwapTitle": "Swap", - "SortableListSwapIntro": "By setting the Swap parameter of SortableListOption, the drag item and the target item are swapped.", - "SortableListOnAddTitle": "Multiple SortableList", - "SortableListOnAddIntro": "Get the SortableList to which the dragged item belongs by setting the FromId parameter of the SortableEvent. In this example, the elements in the three areas can be dragged arbitrarily", - "AttributeSortableListOption": "SortableListOption instance", - "AttributeOnAdd": "Callback method when adding elements", - "AttributeOnUpdate": "Callback method when updating elements", - "AttributeOnRemove": "Callback method when deleting elements" + "BootstrapBlazor.Server.Components.Samples.Tutorials.Translation.Translator": { + "File": "File", + "Hide": "Hide", + "Language": "Language", + "Load": "Load", + "LoadContent": "All localization items loaded successfully", + "LoadTitle": "Load", + "Operation": "Operation", + "Save": "Save", + "SaveContent": "All localization items saved successfully", + "SaveTitle": "Save", + "Show": "Show", + "ToolboxCardTitle": "Tools", + "Translate": "Translate" }, - "BootstrapBlazor.Server.Components.Samples.WinBoxes": { - "WinBoxTitle": "WinBox", - "WinBoxDescription": "Components that emulate Windows window styles", - "WinBoxNormalTitle": "Basic usage", - "WinBoxNormalIntro": "By setting the WinBoxOption parameter value, a pop-up window is created and displayed.", - "AttributeRoot": "Pop-up container root node", - "AttributeTitle": "Pop-up title", - "AttributeClass": "Pop-up style", - "AttributeBackground": "Popup background color", - "AttributeBorder": "Pop-up border", - "AttributeIcon": "Pop-up title icon", - "OnCreateAsync": "Create a pop-up callback method", - "OnShownAsync": "Pop-up window visible callback method", - "OnHideAsync": "Hide pop-up window callback method", - "OnFocusAsync": "Pop-up window gets focus callback method", - "OnBlurAsync": "Pop-up window loses focus callback method", - "OnFullscreenAsync": "Pop-up full screen callback method", - "OnRestoreAsync": "Restore pop-up window callback method", - "OnMaximizeAsync": "Maximize pop-up window callback method", - "OnMinimizeAsync": "Minimize pop-up window callback method", - "OnCloseAsync": "Close pop-up window callback method" + "BootstrapBlazor.Server.Components.Samples.Typeds": { + "NormalIntro": "Set the text to be displayed by setting the Text parameter", + "NormalTitle": "Text", + "TypedIntro": "Enter in any string, and watch it type at the speed you've set, backspace what it's typed, and begin a new sentence for however many strings you've set.", + "TypedOptionsIntro": "Customize typing speed, delay, and other settings by setting the properties of the TypedOptions parameter", + "TypedOptionsTitle": "TypedOptions", + "TypedTitle": "Typed" }, - "BootstrapBlazor.Server.Components.Samples.Players": { - "PlayersTitle": "Player", - "PlayersDescription": "A simple, accessible and customisable media player for Video, Audio, YouTube and Vimeo", - "PlayersTips": "Player supports VideoAudioYoutube and Vimeo", - "PlayersNormalTitle": "Basic usage", - "PlayersNormalIntro": "The callback method OnInitAsync sets the configuration instance PlayerOption required by the component. The player is set through the PlayerOption property value.", - "PlayersHlsTitle": "HLS", - "PlayersHlsIntro": "Enable Hls support by setting IsHls=\"true\"", - "PlayersAudioTitle": "Audio Player", - "PlayersAudioIntro": "Play audio files by setting Mode=\"PlayerMode.Audio\"", - "PlayersYouTubeTitle": "YouTube", - "PlayersYouTubeIntro": "Play YouTube videos by setting the Mode=\"PlayerSources\" parameter Provider=\"youtube\"", - "PlayersVimeoTitle": "Vimeo", - "PlayersVimeoIntro": "Play Vimei videos by setting Mode=\"PlayerSources\" parameter Provider=\"vimeo\"" + "BootstrapBlazor.Server.Components.Samples.UniverSheets": { + "NormalDesc1": "Push data to the spreadsheet by calling the instance method PushDataAsync. Click the Save Data button to get the serialized data of the table data", + "NormalDesc2": "Click the Push Data button to push data to the table, and click the first icon on the Toolbar to get data from the server.", + "NormalDescDarkMode": "The parameter IsDarkMode controls whether the component uses dark mode.", + "NormalDescRibbonType": "Set the toolbar style using the parameter RibbonType.", + "NormalIntro": "Set your own plugins by setting the Plugins parameter", + "NormalTitle": "Basic usage", + "PluginIntro": "Set custom plugins by setting the Plugins parameter", + "PluginTitle": "Plugins", + "PushButtonText": "Push", + "SaveButtonText": "Save", + "ToastOnReadyContent": "The sheet is ready for push data.", + "ToastOnReadyTitle": "Notification", + "UniverSheetIntro": "Encapsulates the core spreadsheet component of the open source office suite ​Univer​, providing a high-performance, scalable online spreadsheet solution", + "UniverSheetTitle": "UniverSheet" }, - "BootstrapBlazor.Server.Data.CustomValidataModel": { - "Name": "Name", - "Telephone1": "Telephone 1", - "Telephone2": "Telephone 2", - "CanNotBeTheSame": "Telephone 1 and Telephone 2 can not be the same" + "BootstrapBlazor.Server.Components.Samples.UploadAvatars": { + "AvatarUploadAcceptIntro": "The component provides Accept property for upload file filtering, in this case the circular avatar box accepts both GIF and JPEG images, sets the Accept='image/gif, image/jpeg' and can be written as: Accept='image/*' if you don't restrict the format of the image. Whether this property is not secure or should be to file format validation using the server-side authentication", + "AvatarUploadAcceptTitle": "Accept", + "AvatarUploadButtonText": "Submit", + "AvatarUploadIntro": "AvatarUpload component, using the OnChange to limit the format and size of images uploaded by users. In this example, only jpg/png/bmp/jpeg/gif five picture formats are allowed. The component processes user uploaded avatars by setting the OnChange callback function. If this callback is not provided, the component will use the built-in method to try to read the uploaded file and generate the preview data in base64 format.", + "AvatarUploadTitle": "Basic usage", + "AvatarUploadValidateIntro": "Place it in ValidateForm to integrate automatic data validation function. For details, please refer to ValidateForm component. In this example, the uploaded file extension is limited to .png, .jpg, .jpeg. An error message will be displayed when uploading other formats. The file size limit is 5M. An error message will also be displayed when it exceeds", + "AvatarUploadValidateTitle": "ValidateForm", + "UploadsNote": "If you edit too much content, signalR communication interruption may be triggered. Please adjust the HubOptions configuration.", + "UploadsSubTitle": "Click to upload a file, usually used to upload a preview of one or a group of avatar-like images", + "UploadsTitle": "AvatarUpload", + "UploadsValidateFormInValidContent": "Please correct it and submit the form again", + "UploadsValidateFormTitle": "ValidateForm", + "UploadsValidateFormValidContent": "Saved successfully" }, - "BootstrapBlazor.Server.Data.CustomValidateCollectionModel": { - "Telephone1": "Telephone 1", - "Telephone2": "Telephone 2" + "BootstrapBlazor.Server.Components.Samples.UploadButtons": { + "ButtonUploadIntro": "By setting ShowUploadFileList=\"true\" you can display the uploaded file list, and setting ShowDeleteButton=\"true\" you can display the Delete button", + "ButtonUploadTitle": "Basic usage", + "UploadsNote": "If you edit too much content, signalR communication interruption may be triggered. Please adjust the HubOptions configuration.", + "UploadsSubTitle": "Upload files by clicking on them, usually used to upload file attachments", + "UploadsTitle": "ButtonUpload" }, - "BootstrapBlazor.Server.Components.Samples.IFrames": { - "IFrameTitle": "IFrame", - "IFrameDescription": "Allows embedding documents, videos and interactive media in a page. By doing so, a secondary page can be displayed on the main page. The iFrame element allows including content from other sources, it can integrate content anywhere on the page.", - "IFrameNormalTitle": "Basic usage", - "IFrameNormalIntro": "Use the Src parameter to set the URL of other website pages and inline their content into this page", - "AttributeSrc": "Frame load url", - "AttributeData": "Data passed", - "AttributeOnPostDataAsync": "Passed back data" + "BootstrapBlazor.Server.Components.Samples.UploadCards": { + "ButtonUploadIntro": "Use DefaultFileList to set up uploaded content", + "ButtonUploadTitle": "Basic usage", + "UploadActionButtonTemplateIntro": "Customize the action buttons on the card by setting the `ActionButtonTemplate` parameter (appending it to the end of the default button), and customize the action buttons on the card by setting the `BeforeActionButtonTemplate` parameter (insert it before the default button).", + "UploadActionButtonTemplateTitle": "Custom action button", + "UploadBase64Intro": "By setting the PrevUrl parameter value of the UploadFile instance, use the image content string in the data:image/xxx;base64,XXXXX format as the preview file path", + "UploadBase64Title": "Base64 format", + "UploadFileIconIntro": "Icons are displayed in different file formats", + "UploadFileIconTemplateIntro": "By setting the IconTemplate parameter and using the FileIcon component, you can further customize the file icon [FileIcon example]", + "UploadFileIconTemplateTitle": "Custom file icon", + "UploadFileIconTitle": "The file icon", + "UploadsFileError": "The file is larger than 5M. Please reselect the file to upload.", + "UploadsFileTitle": "Upload", + "UploadsNote": "If you edit too much content, signalR communication interruption may be triggered. Please adjust the HubOptions configuration.", + "UploadsSaveFileError": "File save failed", + "UploadsSubTitle": "Click the button to pop up the file selection box to select one or more files, which will be presented in a card-style preview mode.", + "UploadsSuccess": "File saved successfully", + "UploadsTitle": "CardUpload", + "UploadsWasmError": "In wasm mode, please call the api to save" }, - "BootstrapBlazor.Server.Components.Samples.RDKits": { - "RDKitTitle": "RDKit", - "RDKitDescription": "A powerful cheminformatics and molecule rendering toolbelt for Blazor, Powered by RDKit", - "RDKitNormalTitle": "Basic usage", - "RDKitNormalIntro": "Set the molecular formula through Smiles and draw the component", - "RDKitSmartsTitle": "Smarts", - "RDKitSmartsIntro": "By setting the Smarts value, parts of the molecular formula can be highlighted", - "RDKitSmartsLabel": "Show Smarts", - "RDKitSizeTitle": "Size", - "RDKitSizeIntro": "Set the width and height of the molecular formula by setting the Width and Height values" + "BootstrapBlazor.Server.Components.Samples.UploadDrops": { + "DropUploadFooterText": "File size should not exceed 5Mb", + "DropUploadIntro": "Handle all uploaded files via the OnChange callback", + "DropUploadTitle": "Basic usage", + "UploadsNote": "If the uploaded file is too large, it may trigger signalR communication interruption. Please adjust the HubOptions configuration yourself.", + "UploadsSubTitle": "Upload one or more files by clicking on the component or by dragging or pasting", + "UploadsTitle": "DropUpload" }, - "BootstrapBlazor.Server.Components.Samples.SmilesDrawers": { - "SmilesDrawerTitle": "SmilesDrawer", - "SmilesDrawerDescription": "A small, highly performant JavaScript component for parsing and drawing SMILES strings", - "SmilesDrawerNormalTitle": "Basic usage", - "SmilesDrawerNormalIntro": "Set the molecular formula through Smiles and draw the component", - "SmilesDrawerSizeTitle": "Size", - "SmilesDrawerSizeIntro": "Set the width and height of the molecular formula by setting the Width and Height values" + "BootstrapBlazor.Server.Components.Samples.UploadInputs": { + "UploadFormSettingsButtonText": "Submit", + "UploadFormSettingsIntro": "Use the file upload component to constrain the file format within the form", + "UploadFormSettingsLi1": "Using the ValidateForm form component, custom validation is set by setting the fileValidation label of the model properties to support file extensionsizevalidation, in this case with the extension .png .jpg .jpeg and the file size limit to 5M", + "UploadFormSettingsLi2": "After selecting the file and not starting to upload the file, click the submit button to verify that the data is legitimate, and then upload the file OnSubmit callback delegate, noting that the Pictureproperty type is IBrowserFile", + "UploadFormSettingsTitle": "ValidateForm", + "UploadNormalIntro": "You can show the Delete button by setting ShowDeleteButton=\"true\"", + "UploadNormalLabelPhoto": "Select one or more files", + "UploadNormalTitle": "Basic usage", + "UploadsNote": "If you edit too much content, signalR communication interruption may be triggered. Please adjust the HubOptions configuration.", + "UploadsSubTitle": "Select one or more files to upload by clicking the Browse button.", + "UploadsTitle": "InputUpload" }, - "BootstrapBlazor.Server.Components.Samples.Affixs": { - "AffixTitle": "Affix", - "AffixIntro": "Fix the element to a specific visible area", - "AffixNormalTitle": "Basic usage", - "AffixNormalIntro": "Affix is fixed at the top of the page by default", - "AffixPositionTitle": "Position", - "AffixPositionIntro": "The parameter Position controls whether the top or bottom is fixed, and the Offset value sets the offset to the top or bottom" + "BootstrapBlazor.Server.Components.Samples.Uploads.Person": { + "Name": "Name", + "Name.Required": "{0} is required", + "Picture": "File", + "Picture.Required": "{0} is required" }, - "BootstrapBlazor.Server.Components.Samples.Watermarks": { - "WatermarkTitle": "Watermark", - "WatermarkIntro": "Add specific text or patterns to the page", - "WatermarkNormalTitle": "Basic usage", - "WatermarkNormalIntro": "Use the Text property to set a string to specify the watermark text", - "WatermarkDescription": "

        How to add a watermark globally

        You can add a watermark component to the template page MainLayout and set IsPage=\"true\"

        " + "BootstrapBlazor.Server.Components.Samples.ValidateForms": { + "ChangeButtonText": "Change", + "CustomValidationFormComment1": "Add mailbox validation rules", + "CustomValidationFormComment2": "Used in Razor files", + "CustomValidationFormP1": "Address text box adds email addressverification rules, click On Submission to verify", + "DatabaseExistLog": "Exists in the database", + "DisableAutoSubmitFormByEnterDesc": "form form is an important element ofweb. If there is an input element in the form, when this element gets the focus, pressing Enter will automatically submit the form. This is a feature of the form element, not our component code logic. If this function is not needed, disable it by setting DisableAutoSubmitFormByEnter=\"true\", In this example, pressing Enter in the text box will not automatically submit and perform data compliance check. You need to click the Submit button to submit the form", + "LongDisplayDescription": "In this example, set the ShowLabelTooltip in the form-inline style to true to make the mouse hover over the cropped label to display the complete information", + "LongDisplayText": "I am very long display text", + "OnInvalidSubmitCallBackLog": "OnInvalidSubmit callback delegate", + "OnInvalidSubmitLog": "OnInvalidSubmit callback delegate: The validation failed", + "OnValidSubmitCallBackLog": "OnValidSubmit callback delegate", + "OnValidSubmitDoneLog": "OnValidSubmit callback delegate: Done!", + "OnValidSubmitLog": "OnValidSubmit callback delegate: Verification passed", + "OnValidSubmitStartingLog": "OnValidSubmit callback delegate: Starting ...", + "ResetButtonText": "Reset", + "SetError": "Set up a validation failure method", + "Validate": "Trigger form validate", + "ValidateButtonText": "Save", + "ValidateFormComplexValidationDescription": "The second binding in this example is a super-complex type ComplexModel.Dummy.Dummy2.Name Empty the value, click submit the formvalidate the data. After the second text box verifies compliance, the error prompt is displayed again by calling the SetError", + "ValidateFormComplexValidationIntro": "Supports any complex type of binding and validation", + "ValidateFormComplexValidationPre": "ComplexForm.SetError('Dummy.Dummy2.Name','数据库中已存在');", + "ValidateFormComplexValidationTitle": "Complex type support", + "ValidateFormCustomDisplayErrorDescription": "Scenario

        the client verification after the pass of the database save operation, if other problems, you can still make a form custom error prompt, in this case, after the data verification is legal, click the submit form button, the name field will show, the database already exists such a custom prompt

        ", + "ValidateFormCustomDisplayErrorIntro": "Set the custom error message by calling SetError method", + "ValidateFormCustomDisplayErrorTitle": "Custom displays error messages", + "ValidateFormCustomValidationFormIntro": "Add custom validation rules by setting Rules", + "ValidateFormCustomValidationFormTitle": "Customize the verification form", + "ValidateFormDisableAutoSubmitFormByEnterIntro": "When the focus is in the input box in the form, pressing Enter will automatically submit the form by default. You can disable automatic submission by setting DisableAutoSubmitFormByEnter=\"false\"", + "ValidateFormDisableAutoSubmitFormByEnterTitle": "Disable automatic submit form", + "ValidateFormDynamicFormDescription": "Click the Change componentbutton address The component changes to count components, reset componentbutton recovery, name address component is required, count The component has a default value of 0 So you can check through the data", + "ValidateFormDynamicFormIntro": "By changing the components within the form, verify that the form can still be validated correctly", + "ValidateFormDynamicFormTitle": "Dynamically adjust the components within the form", + "ValidateFormInnerComponentInnerComponentDescription1": "Example illustration", + "ValidateFormInnerComponentInnerComponentDescription2": "In this example, by setting the submit button property IsAsync to submit the form asynchronously, click Submit to disable itself, and resume after the asynchronous operation is complete", + "ValidateFormInnerComponentInnerComponentLabel": "Examples of components that support form validation", + "ValidateFormInnerComponentInnerComponentLi1": "The name is the string type", + "ValidateFormInnerComponentInnerComponentLi2": "The age is an integer type", + "ValidateFormInnerComponentInnerComponentLi3": "Birthday is the datetime type", + "ValidateFormInnerComponentInnerComponentLi4": "Education is an enumeration type", + "ValidateFormInnerComponentInnerComponentLi5": "Hobbies are collection types", + "ValidateFormInnerComponentIntro": "Place the support form components into the ValidateForm", + "ValidateFormInnerComponentTitle": "Built-in components", + "ValidateFormInnerFormLabelDescription": "Address text box adds email addressvalidation rules", + "ValidateFormInnerFormLabelIntro": "Set the alignment of labels throughout the station or in a specific form with style uniformity", + "ValidateFormInnerFormLabelTitle": "Set the component label right alignment within the form", + "ValidateFormIValidatableObjectDescription": "This example uses the IValidatableObject interface to implement validation that Telephone 1 and Telephone 2 must not be the same, and that Name cannot be empty. In this example, Name is not provided, but since the model implements validation through the IValidatableObject interface, it still triggers the OnInvalidSubmit callback delegate when submitting data.", + "ValidateFormIValidatableObjectIntro": "The IValidatableObject interface provides more flexible custom validation, making it very suitable for performing complex data validation scenarios, such as validating combinations of multiple properties.", + "ValidateFormIValidatableObjectTitle": "IValidatableObject", + "ValidateFormIValidateCollectionDescription": "This example uses IValidateCollection to verify that Telephone 1 and Telephone 2 cannot be the same. If any cell is changed so that the phone numbers are the same, both text boxes will prompt.", + "ValidateFormIValidateCollectionIntro": "The IValidateCollection interface provides more flexible custom linked validation, which is very suitable for very complex data validation, such as combining multiple attributes for validation.", + "ValidateFormIValidateCollectionTitle": "IValidateCollection", + "ValidateFormNormalBasicUsageDescription": "Introduction", + "ValidateFormNormalBasicUsageDescription2": "Note:", + "ValidateFormNormalFormLabelWidth": "The default width of component front label is 120px. If you need more, please change the style variable --bb-row-label-width in the project style file or remove RowType.Inline", + "ValidateFormNormalIntro": "Data compliance checks are automatically performed when components placed in the ValidateForm are submitted", + "ValidateFormNormalLi1": "ValidateForm component supports asynchronous setting of Model values", + "ValidateFormNormalLi2": "The form event is for OnValidSubmit OnInvalidSubmit", + "ValidateFormNormalLi3": "Model parameter is required is not allowed to be empty", + "ValidateFormNormalLi4": "Multiple buttons can be placed within the form to set whether the ButtonType='ButtonType.Submit' parameter is submitted to the form", + "ValidateFormNormalLi5": "The client authentication mechanism supports the model's Required label, setting the default English prompt information when not set by setting the ErrorMessage parameter prompt", + "ValidateFormNormalLi6": "The form checks by default whether the binding field values within the form are legitimate, and you can set the ValidateAllProperties property value to true if you need to check all fields in the model", + "ValidateFormNormalLi7": "Set the asynchronous submission form by setting the value of the Button Button property IsAsync", + "ValidateFormNormalLi8": "Components within a form are typically used to bind the property values of Model in both directions using bidirectional binding techniques, causing the component to refresh and re-render when its value changes StateHasChanged, and the method is called, i.e. its component or page is refreshed and re-rendered", + "ValidateFormNormalLi9": "After the value of the component control in the form is modified, the OnFieldChanged method is called", + "ValidateFormNormalTitle": "Basic usage", + "ValidateFormsSubmitButtonText": "Submit", + "ValidateFormsSubTitle": "Form components that can be used for data compliance checks", + "ValidateFormsTitle": "ValidateForm", + "ValidateFormValidateDescription": "The button is not submit button. so not trigger the form submit action, in this sample code use OnClickWithoutRender parameter for improve performance.", + "ValidateFormValidateIntro": "call the ValidateForm instance method Validate for trigger the form validation", + "ValidateFormValidateTitle": "Manual Validate", + "ValidateFormValidatorAllFieldDescription": "The Address is not placed in this example, because the ValidateAllProperties parameter value is true, the Addres field is still checked, and OnInvalidSubmit is triggered when the data is submitted after all the data in the timely form is legitimate callback delegate", + "ValidateFormValidatorAllFieldIntro": "This component checks the model binding field values within the form by default, setting the ValidateAllProperties values if you need to check all field values for the model", + "ValidateFormValidatorAllFieldTitle": "Validate all field values", + "ValidateMetadataTypeIntro": "The model uses [MetadataType(typeof(MockModelMetadataType))] to specify the metadata type MockModelMetadataType for model validation. If the specified model inherits the IValidateCollection interface, its Validate method is called to perform data compliance checks.", + "ValidateMetadataTypeTitle": "MetadataType IValidateCollection" }, - "BootstrapBlazor.Server.Data.AttributeItem": { + "BootstrapBlazor.Server.Components.Samples.ValidateForms.ComplexFoo": { "Name": "Name", - "Description": "Description", - "Type": "Type", - "ValueList": "ValueList", - "DefaultValue": "DefaultValue" + "Name.Required": "{0} is required." }, - "BootstrapBlazor.Server.Data.EventItem": { + "BootstrapBlazor.Server.Components.Samples.ValidateForms.Dummy2": { "Name": "Name", - "Description": "Description", - "Type": "Type" - }, - "BootstrapBlazor.Server.Components.Pages.CacheList": { - "CacheListTitle": "CacheManager", - "CacheListIntro": "Manage the component library internal cache through the ICacheManager interface method", - "CacheListKey": "Key", - "CacheListValue": "Value", - "CacheListExpiration": "Expiration", - "CacheListAction": "Action", - "CacheListRefresh": "Refresh", - "CacheListDelete": "Delete", - "CacheListDeleteAll": "Clear", - "CacheListCount": "Total {0} Entry" - }, - "BootstrapBlazor.Server.Components.Samples.Typeds": { - "TypedTitle": "Typed", - "TypedIntro": "Enter in any string, and watch it type at the speed you've set, backspace what it's typed, and begin a new sentence for however many strings you've set.", - "NormalTitle": "Text", - "NormalIntro": "Set the text to be displayed by setting the Text parameter", - "TypedOptionsTitle": "TypedOptions", - "TypedOptionsIntro": "Customize typing speed, delay, and other settings by setting the properties of the TypedOptions parameter" - }, - "BootstrapBlazor.Server.Components.Samples.Html2Images": { - "Html2ImageTitle": "Html to Image", - "Html2ImageIntro": "Convert any area web page into an image service", - "Html2ImageElementTitle": "ToPng", - "Html2ImageElementIntro": "Get the base64-encoded image by calling the GetDataAsync method", - "Html2ImageButtonText": "Image", - "Html2ImageDesc": "Since the underlying library is html-to-image, if you encounter any problems during actual use, please refer to the project Issue" - }, - "BootstrapBlazor.Server.Components.Samples.UniverSheets": { - "UniverSheetTitle": "UniverSheet", - "UniverSheetIntro": "Encapsulates the core spreadsheet component of the open source office suite ​Univer​, providing a high-performance, scalable online spreadsheet solution", - "NormalTitle": "Basic usage", - "NormalIntro": "Set your own plugins by setting the Plugins parameter", - "NormalDesc1": "Push data to the spreadsheet by calling the instance method PushDataAsync. Click the Save Data button to get the serialized data of the table data", - "NormalDesc2": "Click the Push Data button to push data to the table, and click the first icon on the Toolbar to get data from the server.", - "NormalDescRibbonType": "Set the toolbar style using the parameter RibbonType.", - "NormalDescDarkMode": "The parameter IsDarkMode controls whether the component uses dark mode.", - "PushButtonText": "Push", - "SaveButtonText": "Save", - "ToastOnReadyTitle": "Notification", - "ToastOnReadyContent": "The sheet is ready for push data.", - "PluginTitle": "Plugins", - "PluginIntro": "Set custom plugins by setting the Plugins parameter" - }, - "BootstrapBlazor.Server.Components.Samples.Tutorials.OnlineSheet": { - "ToastOnReadyTitle": "Collaboration Notification", - "ToastOnReadyContent": "After 4 seconds the table is updated by other writers to change the content" - }, - "BootstrapBlazor.Server.Components.Samples.OtpInputs": { - "OtpInputsTitle": "OtpInput", - "OtpInputsDescription": "A secure verification password box based on OTP (One-Time Password) that is limited to one-time use and has a time limit", - "OtpInputsTips": "OTP (One Time Password, abbreviated as OTP): This is a security measure used to generate a unique password for each login or transaction. This component is used in conjunction with ITotpService IHotpService to greatly improve security.", - "OtpInputsNormalTitle": "Basic usage", - "OtpInputsNormalIntro": "Control the password type or length by setting parameters such as Type", - "OtpInputsValidateFormTitle": "ValidateForm", - "OtpInputsValidateFormIntro": "When the password is not provided, click the Submit button, the password box will be displayed in red and it will be prompted that it cannot be empty." + "Name.Required": "Dummy2 {0} is required" }, - "BootstrapBlazor.Server.Components.Samples.OtpServices": { - "Title": "ITotpService", - "SubTitle": "An implementation TOTP RFC 6238 and HOTP RFC 4226 Authenticator service.", + "BootstrapBlazor.Server.Components.Samples.Vditors": { + "BaseUsageIntro": "Set the content displayed by the component by setting the Value value, and set the component configuration information by setting the Options parameter", "BaseUsageTitle": "Basic usage", - "BaseUsageIntro": "By calling the Compute method of the ITotpService service instance, you can get the password in the current time window. By calling the Instance.GetRemainingSeconds method, you can display the remaining validity time of the current password. In this example, the progress bar is used for dynamic display." - }, - "BootstrapBlazor.Server.Components.Samples.Tutorials.BarCodeGenerator": { - "SelectType": "Select content type", - "Preview": "Preview", - "TextDesc": "Use your iPhone's camera or the QR code scanning function to scan the QR code below, then open the Safari browser and search for the current text using the default search engine.", - "UrlDesc": "Use your iPhone's camera or the QR code scanning function to scan the QR code below, then open the Safari browser and open the current address", - "WiFiDesc": "Use your iPhone's camera or the QR code scanner to scan the QR code below to automatically join the WiFi network.", - "EmailDesc": "Use your iPhone's camera or the QR code scanner to scan the QR code below, then open the Email app to send an email." + "VditorSubTitle": "Vditor is a browser-based Markdown editor that supports WYSIWYG, instant rendering (similar to Typora), and split-screen preview mode.", + "VditorTitle": "Vditor Markdown" }, "BootstrapBlazor.Server.Components.Samples.VideoDevices": { - "VideoDeviceTitle": "IVideoDevice", - "VideoDeviceIntro": "Get video equipment operation capabilities through this service", - "BaseUsageTitle": "Basic usage", - "BaseUsageIntro": "Perform different operations by calling different API methods", - "VideoDeviceRequestText": "List", - "VideoDeviceOpenText": "Open", - "VideoDeviceCloseText": "Close", - "VideoDeviceCaptureText": "Capture", - "VideoDeviceDownloadText": "Download" - }, - "BootstrapBlazor.Server.Components.Samples.AudioDevices": { - "AudioDeviceTitle": "IAudioDevice", - "AudioDeviceIntro": "Get audio equipment operation capabilities through this service", - "BaseUsageTitle": "Basic usage", "BaseUsageIntro": "Perform different operations by calling different API methods", - "AudioDeviceRequestText": "List", - "AudioDeviceOpenText": "Record", - "AudioDeviceCloseText": "Stop", - "AudioDevicePauseText": "Pause", - "AudioDeviceResumeText": "Resume", - "AudioDeviceDownloadText": "Download" - }, - "BootstrapBlazor.Server.Components.Samples.Vditors": { - "VditorTitle": "Vditor Markdown", - "VditorSubTitle": "Vditor is a browser-based Markdown editor that supports WYSIWYG, instant rendering (similar to Typora), and split-screen preview mode.", "BaseUsageTitle": "Basic usage", - "BaseUsageIntro": "Set the content displayed by the component by setting the Value value, and set the component configuration information by setting the Options parameter" - }, - "BootstrapBlazor.Server.Components.Samples.OfficeViewers": { - "OfficeViewerTitle": "Office Document Viewer", - "OfficeViewerDescription": "This component previews Office documents using Microsoft's online document preview feature", - "OfficeViewerNormalTitle": "Basic Usage", - "OfficeViewerNormalIntro": "Set the document URL for preview by configuring the Url value", - "OfficeViewerToastSuccessfulContent": "Office document loaded successfully" - }, - "BootstrapBlazor.Server.Components.Samples.Sockets.ManualReceives": { - "ReceivesTitle": "Manual Receive", - "ReceivesDescription": "Receive data through call ReceiveAsync and display it", - "NormalTitle": "Basic usage", - "NormalIntro": "After the connection is established, the data sent by the server is received through the ReceiveAsync callback method. The data problems of sticking and splitting packets need to be handled by the client." - }, - "BootstrapBlazor.Server.Components.Samples.Sockets.AutoReceives": { - "ReceivesTitle": "Socket Receive", - "ReceivesDescription": "Receive data through ReceivedCallBack and display it", - "NormalTitle": "Basic usage", - "NormalIntro": "After connecting, the timestamp data sent by the server is automatically received through the ReceivedCallBack callback method" - }, - "BootstrapBlazor.Server.Components.Samples.Sockets.Adapters": { - "AdaptersTitle": "DataPackageAdapter", - "AdaptersDescription": "Receive data through the data adapter and display", - "NormalTitle": "Basic usage", - "NormalIntro": "After the connection is established, the timestamp data sent by the server is received through the ReceivedCallBack callback method of the DataPackageAdapter data adapter." - }, - "BootstrapBlazor.Server.Components.Samples.Sockets.AutoReconnects": { - "AutoReconnectsTitle": "DataPackageAdapter", - "AutoReconnectsDescription": "Receive data through the data adapter and display", - "NormalTitle": "Basic usage", - "NormalIntro": "Enable automatic reconnection by setting IsAutoReconnect" + "VideoDeviceCaptureText": "Capture", + "VideoDeviceCloseText": "Close", + "VideoDeviceDownloadText": "Download", + "VideoDeviceIntro": "Get video equipment operation capabilities through this service", + "VideoDeviceOpenText": "Open", + "VideoDeviceRequestText": "List", + "VideoDeviceTitle": "IVideoDevice" }, - "BootstrapBlazor.Server.Components.Samples.Sockets.DataEntities": { - "DataEntityTitle": "Socket Auto Entity", - "DataEntityDescription": "After receiving the communication data, it is automatically converted into the entity class required by the business", - "NormalTitle": "Basic usage", - "NormalIntro": "Enable automatic data conversion through the DataPropertyConverterAttribute attribute", - "ConfigTitle": "DataType Converter", - "ConfigIntro": "Use the ConfigureDataConverters method to map the entity class and automatically convert the received data" + "BootstrapBlazor.Server.Components.Samples.VideoPlayers": { + "MineType": "MineType", + "VideoPlayersChangeURLIntro": "Use the Reload method to switch playback resources", + "VideoPlayersChangeURLTitle": "Switch playback resources", + "VideoPlayersNormalTitle": "Basic usage", + "VideoPlayersTips": "Silent mode enabled by default, this is the way for autoplay follow the modern browser standards.", + "VideoPlayersTitle": "VideoPlayer" }, - "BootstrapBlazor.Server.Components.Samples.NetworkMonitors": { - "NetworkMonitorTitle": "NetworkMonitor", - "NetworkMonitorDescription": "Use the browser native API navigator.connection to display the current network status in real time", - "NormalTitle": "Basic usage", - "NormalIntro": "Use the component NetworkMonitorIndicator to display indicator lights of different colors when the network status changes, and display the network status details when the mouse moves over it", - "IndicatorLi1": "Green: Very good network (4G)", - "IndicatorLi2": "Yellow: Average network (3G)", - "IndicatorLi3": "Red: Poor network (2G)", - "IndicatorLi4": "Gray: Offline" + "BootstrapBlazor.Server.Components.Samples.Watermarks": { + "WatermarkDescription": "

        How to add a watermark globally

        You can add a watermark component to the template page MainLayout and set IsPage=\"true\"

        ", + "WatermarkIntro": "Add specific text or patterns to the page", + "WatermarkNormalIntro": "Use the Text property to set a string to specify the watermark text", + "WatermarkNormalTitle": "Basic usage", + "WatermarkTitle": "Watermark" }, - "BootstrapBlazor.Server.Components.Samples.Toolbars": { - "ToolbarsTitle": "Toolbar", - "ToolbarSubTitle": "ToolBar component is a container for buttons or other application-specific tools", - "NormalTitle": "Normal", - "NormalIntro": "" + "BootstrapBlazor.Server.Components.Samples.WebSerials": { + "BaudRateText": "BaudRate", + "BufferSizeText": "BufferSize", + "ClosePortText": "Close", + "CRLFText": "CRLF", + "DataBitsText": "DataBits", + "FlowControlTypeText": "FlowControlType", + "GetInfoButtonText": "Infos", + "GetSignalsButtonText": "Signals", + "HEXText": "HEX", + "LoopIntervalText": "Interval(ms)", + "LoopSendText": "Loop", + "NotSupportSerialContent": "The current browser does not support serial port operations. Please change to Edge or Chrome browser.", + "NotSupportSerialTitle": "Get Port", + "OpenPortSerialContent": "Failed to open the serial port", + "OpenPortSerialTitle": "Open Port", + "OpenPortText": "Open", + "ParityTypeText": "ParityType", + "ReadDataText": "Receive Data", + "RequestPortText": "Request", + "StopBitsText": "StopBits", + "WebSerialDescription": "allow websites to communicate with peripherals connected to a user's computer. It provides the ability to connect to devices that are required by the operating system to communicate via the serial API", + "WebSerialIntro": "Serial port is a widely used communication protocol that enables data transmission between computers", + "WebSerialNormalIntro": "By calling the ISerialService service, you can connect, open, close, read and write to the serial port device.", + "WebSerialNormalTitle": "Basic usage", + "WebSerialTipsLi1": "This feature is available only in secure contexts (HTTPS)", + "WebSerialTipsLi2": "This is an experimental technology Check the Browser compatibility table carefully before using this in production", + "WebSerialTipsTitle": "Note: The ISerialPort interface instance inherits IAsyncDisposable. When switching routes, you need to release its resources by calling its DisposeAsync", + "WebSerialTitle": "Web Serial", + "WriteButtonText": "Write", + "WriteDataText": "Send Data" }, - "BootstrapBlazor.Server.Components.Samples.OpcDa": { - "OpcDaTitle": "OpcDa Server", - "OpcDaDescription": "Connect to OpcDa Server to obtain PLC real-time data", - "OpcDaNormalTitle": "Basic usage", - "OpcDaNormalIntro": "Get an instance by injecting the service IOpcDaServer and call the Read method to get the PLC Tag value." + "BootstrapBlazor.Server.Components.Samples.WinBoxes": { + "WinBoxDescription": "Components that emulate Windows window styles", + "WinBoxNormalIntro": "By setting the WinBoxOption parameter value, a pop-up window is created and displayed.", + "WinBoxNormalTitle": "Basic usage", + "WinBoxTitle": "WinBox" }, - "BootstrapBlazor.Server.Components.Samples.Navbars": { - "NavbarTitle": "Navbar", - "NavbarDescription": "A powerful, responsive navigation header, the navbar. Includes support for branding, navigation, and more", - "NormalTitle": "Basic usage", - "NormalIntro": "By setting NavbarBrand NavbarToggleButton NavbarCollapse NavbarGroup NavbarItem to layout its internal elements" + "BootstrapBlazor.Server.Components.Samples.ZipArchives": { + "ZipArchiveDirectoryText": "Archive directory", + "ZipArchiveExtractText": "Extract", + "ZipArchiveFileText": "Archive file", + "ZipArchiveInjectText": "Inject service", + "ZipArchivesSubTitle": "Component built-in service that can compress files or folders into archive files with specified names", + "ZipArchivesTitle": "IZipArchive" }, - "BootstrapBlazor.Server.Components.Samples.TaskBoard": { - "TaskBoardTitle": "Task DashBoard", - "TaskBoardIntro": "Background task dashboard", - "TaskBoardNormalTitle": "Basic usage", - "TaskBoardNormalIntro": "This component provides detailed information about background task schedule trigger." + "BootstrapBlazor.Server.Data.AttributeItem": { + "DefaultValue": "DefaultValue", + "Description": "Description", + "Name": "Name", + "Type": "Type", + "ValueList": "ValueList" }, - "BootstrapBlazor.Server.Components.Samples.Dom2Images": { - "Dom2ImageTitle": "Dom2Image", - "Dom2ImageIntro": "Export HTML snippets as images", - "Dom2ImageNormalTitle": "Basic usage", - "Dom2ImageNormalIntro": "Convert the node to an image by specifying a Selector", - "Dom2ImageDesc": "Since the underlying framework uses SnapDOM , if you encounter any problems during actual use, please refer to the project Issue", - "Dom2ImageButtonText": "Convert", - "Dom2ImageDownloadText": "Download", - "Dom2ImageFullText": "Capture" + "BootstrapBlazor.Server.Data.CustomValidataModel": { + "CanNotBeTheSame": "Telephone 1 and Telephone 2 can not be the same", + "Name": "Name", + "Telephone1": "Telephone 1", + "Telephone2": "Telephone 2" }, - "BootstrapBlazor.Server.Components.Samples.SelectRegions": { - "RegionTitle": "Region", - "RegionDescription": "A simple region cascade selector, provide 4 levels Chinese administrative division data", - "RegionNormalTitle": "Basic usage", - "RegionNormalIntro": "Use grouping to switch the selection mode for displaying administrative areas" + "BootstrapBlazor.Server.Data.CustomValidateCollectionModel": { + "Telephone1": "Telephone 1", + "Telephone2": "Telephone 2" }, - "BootstrapBlazor.Server.Components.Samples.SelectCities": { - "CityTitle": "City Selector", - "CityDescription": "Provides a city selector classified by province", - "CityNormalTitle": "Basic usage", - "CityNormalIntro": "Select a city from the drop-down box" + "BootstrapBlazor.Server.Data.EnumEducation": { + "Middle": "Middle", + "PlaceHolder": "Click to select ...", + "Primary": "Primary" }, - "BootstrapBlazor.Server.Components.Samples.SelectProvinces": { - "ProvinceTitle": "Province Selector", - "ProvinceDescription": "Provide a drop-down box to select the province", - "ProvinceNormalTitle": "Basic usage", - "ProvinceNormalIntro": "Select the province from the drop-down box", - "ProvinceMultipleTitle": "Multiple", - "ProvinceMultipleIntro": "Enable multiple selection mode by setting IsMultiple" + "BootstrapBlazor.Server.Data.EventItem": { + "Description": "Description", + "Name": "Name", + "Type": "Type" }, - "BootstrapBlazor.Server.Components.Samples.HikVisions": { - "Title": "HikVision", - "SubTitle": "", - "BasicUsageTitle": "Basic usage", - "BasicUsageIntro": "Operations are performed by calling the HikVision component instance method." + "BootstrapBlazor.Server.Data.Foo": { + "Address": "Address", + "Address.PlaceHolder": "required", + "Address.Required": "{0} is required.", + "Complete": "Complete", + "Count": "Count", + "Count.PlaceHolder": "required", + "DateTime": "DateTime", + "Education": "Education", + "Education.Required": "{0} is required.", + "False": "Failed", + "Foo.Address": "Lane {0} of Jinshajiang Road, Putuo District, Shanghai", + "Foo.Address2": "Earth, China, Lane {0} of Jinshajiang Road, Putuo District, Shanghai. Here is an example of super long cell", + "Foo.BindValue": "BindValue", + "Foo.Name": "Zhangsan {0}", + "Hobbies": "Swimming,Climb,Shoot,Chess", + "Hobby": "Hobby", + "Hobby.Required": "{0} is required.", + "Name": "Name", + "Name.PlaceHolder": "required", + "Name.Required": "{0} is required.", + "NullItemText": "Not Set", + "ReadonlyColumn": "Readonly Column", + "True": "Pass" } } diff --git a/src/BootstrapBlazor.Server/Locales/zh-CN.json b/src/BootstrapBlazor.Server/Locales/zh-CN.json index 820d0ac2c12..203c924eea6 100644 --- a/src/BootstrapBlazor.Server/Locales/zh-CN.json +++ b/src/BootstrapBlazor.Server/Locales/zh-CN.json @@ -1,5740 +1,3708 @@ { - "BootstrapBlazor.Server.Components.Pages.Online": { - "SubTitle": "在线人数统计", - "ConnectionTime": "连接时间", - "LastBeatTime": "最后心跳时间", - "Dur": "持续时间", - "Ip": "IP地址", - "City": "城市", - "LocalHost": "本地连接", - "OS": "操作系统", - "Device": "设备", - "Browser": "浏览器", - "Language": "语言", - "Engine": "引擎", - "RequestUrl": "请求URL" - }, - "BootstrapBlazor.Server.Components.Pages.Tutorials": { - "CategoryTitle": "BootstrapBlazor 实战案例", - "DashboardSummary": "仪表盘 Dashboard", - "LoginSummary": "登陆注册 Login&Register", - "WaterfallSummary": "瀑布流图片 Waterfall", - "TranslateSummary": "翻译工具 Translate", - "DrawingSummary": "画图 Drawing", - "AdminSummary": "中台 Admin", - "OnlineSheet": "在线表格 UniverSheet", - "MemorialMode": "追悼模式", - "MFA": "多因子认证 MFA" + "BootstrapBlazor.Server.Components.Common.AttributeItem": { + "DefaultValue": "默认值", + "Description": "说明", + "Name": "参数", + "Type": "类型", + "ValueList": "可选值" }, - "BootstrapBlazor.Server.Components.Components.Pre": { - "LoadingText": "正在加载 ...", - "TooltipTitle": "点击复制代码", - "PlusTooltipTitle": "点击增加显示行数", - "MinusTooltipTitle": "点击减少显示行数", - "CopiedText": "复制代码成功" + "BootstrapBlazor.Server.Components.Common.EventItem": { + "Description": "说明", + "Name": "参数", + "Type": "类型" }, - "BootstrapBlazor.Server.Components.Pages.Index": { - "Support": "支持", - "Title": "Bootstrap Blazor UI", - "SubTitle": "BootstrapBlazor 是一套基于 Bootstrap 和 Blazor 的企业级组件库,无缝整合了 Bootstrap 框架与 Blazor 技术。它提供了一整套强大的工具,使开发者能够轻松创建响应式和交互式的 Web 应用程序。", - "Docs": "阅读文档", - "DonateH1": "捐助", - "DonateH2": "扫码捐助请作者喝一杯咖啡" + "BootstrapBlazor.Server.Components.Common.MethodItem": { + "Description": "说明", + "Name": "参数", + "Parameters": "参数", + "ReturnValue": "返回值", + "Title": "Methods 方法", + "Type": "类型" }, - "BootstrapBlazor.Server.Components.Layout.HomeLayout": { - "FooterH1": "相关作品", - "FooterLi1": "滑块验证码", - "FriendLink": "友情链接", - "Community": "社区", - "CommunityLi1": "贡献指南", - "CommunityLi2": "加入我们", - "CommunityLi3": "联系方式", - "Footer": "码云托管平台" + "BootstrapBlazor.Server.Components.Components.AttributeTable": { + "AutoGenerateColumns": "自动生成", + "Total": "合计" }, - "BootstrapBlazor.Server.Components.Samples.Table.TablesDialog": { - "TablesDialogTitle": "Table 表格在弹窗内使用", - "TablesDialogDescription": "用于带层级关系的数据选择中", - "TableDialogNormalTitle": "弹窗中数据联动", - "TableDialogNormalIntro": "点击工具栏中的选择按钮弹出对话框选择候选数据", - "TableDialogNormalDescription": "本例中展示如果通过 Modal 组件与 Table 进行联动,通过弹窗中选择数据,然后再进行编辑", - "TableDialogNormalTips1": "点击 选择 按钮弹出对话框选择产品 Product", - "TableDialogNormalTips2": "弹窗中选择产品后点击 确定 按钮关闭弹窗", - "TableDialogNormalTips3": "点击 编辑 按钮,由于设置部分数据为只读,只能更改 Count 字段", - "TableDialogNormalChoose": "选择", - "TableDialogNormalSelectItem": "选择项目", - "TableDialogNormalSure": "确定" + "BootstrapBlazor.Server.Components.Components.CultureChooser": { + "Label": "语言:" }, - "BootstrapBlazor.Server.Components.Samples.Table.TablesDynamicObject": { - "TablesDynamicObjectTitle": "Table 表格", - "TablesDynamicObjectDescription": "使用 IDynamicMetaObjectProvider 类作为数据源", - "TablesDynamicObjectMetaObjectProviderTitle": "IDynamicMetaObjectProvider 集合", - "TablesDynamicObjectMetaObjectProviderIntro": "通过设置 Items 数据源,使用 IDynamicMetaObjectProvider 数据集合作为数据源", - "TablesDynamicObjectIDynamicObjectTitle": "IDynamicObject 集合", - "TablesDynamicObjectIDynamicObjectIntro": "通过设置 Items 数据源,使用 IDynamicObject 数据集合作为数据源" + "BootstrapBlazor.Server.Components.Components.CustomPopConfirmContent": { + "CustomPopConfirmContentButtonText": "审批", + "CustomPopConfirmContentText": "自定义弹窗内容" }, - "BootstrapBlazor.Server.Components.Samples.Table.TablesPages": { - "TablesPagesTitle": "Table 表格", - "TablesPagesDescription": "用于展示多条结构类似的数据,可对数据进行排序、筛选、对比或其他自定义操作。", - "TablesPagePaginationTitle": "分页表格", - "TablesPagePaginationIntro": "设置 IsPagination 显示分页组件", - "TablesPageShowTopPaginationTitle": "显示在顶端", - "TablesPageShowTopPaginationIntro": "设置 ShowTopPaginationtrue 是顶端显示分页组件,可通过 IsAutoScrollTopWhenClickPage 控制是否翻页后自动滚动到顶端,默认值为 false 保持滚动条位置" + "BootstrapBlazor.Server.Components.Components.DemoBlock": { + "Title": "未设置", + "TooltipText": "已拷贝到剪贴板" }, - "BootstrapBlazor.Server.Components.Samples.Table.TablesFixedColumn": { - "TablesFixedColumnTitle": "固定列功能", - "TablesFixedColumnDescription": "对于列数很多的数据,可以固定前后的列,横向滚动查看其它数据", - "TablesFixedColumnNote": "固定列用法请尽可能的设置固定列宽度,本页面如果宽度过长,请 F12 人为减小可视页面宽度", - "TablesFixedColHeaderTitle": "固定列头与列尾", - "TablesFixedColHeaderIntro": "设置 Fixed 属性固定表头", - "TablesFixedColHeaderDescription": "本例中设置 Name Education Count Complete 前两列和最后一列为固定列,中间各列进行水平滚动,本例中设置 AllowResize=\"true\" 固定列也可以调整宽度", - "TablesFixedColTableHeaderTitle": "固定表头与列", - "TablesFixedColTableHeaderIntro": "设置 IsFixedHeader=\"true\" 固定表头,设置 Fixed 对列进行固定", - "TablesFixedExtendButtonsColumnTitle": "固定按钮操作列", - "TablesFixedExtendButtonsColumnIntro": "设置 FixedExtendButtonsColumn 对操作列进行固定", - "TablesFixedHeaderAndExtendButtonsColumnTitle": "固定表头与按钮操作列", - "TablesFixedHeaderAndExtendButtonsColumnIntro": "设置 IsFixedHeader=\"true\" 固定表头,设置 FixedMultipleColumn 对选择列进行固定,设置 FixedExtendButtonsColumn 对操作列进行固定" + "BootstrapBlazor.Server.Components.Components.DemoTabItem": { + "ButtonText": "更改标题", + "Info": "点击下方按钮,本 TabItem 标题更改为当前分钟与秒" }, - "BootstrapBlazor.Server.Components.Samples.Tooltips": { - "TooltipsTitle": "Tooltip 提示工具条", - "TooltipsDescription": "提供鼠标悬停或者获得焦点后显示提示框", - "TooltipsNormalTitle": "基础用法", - "TooltipsNormalIntro": "常用于展示鼠标 hover 时的提示信息", - "TooltipsButtonTitle": "Button 组件提示框", - "TooltipsButtonIntro": "提供鼠标悬停或者获得焦点后显示提示框", - "BootstrapTooltipTitle": "测试组件", - "TooltipsSelectorTitle": "提示信息宿主设置", - "TooltipsSelectorIntro": "通过设置 Selector 参数精确定位触发提示框元素", - "TooltipsCustomClassTitle": "自定义样式", - "TooltipsCustomClassIntro": "通过设置 CustomClass 参数进行自定义样式设置", - "BootstrapTooltipIntro": "尝试新做一个用起来比较舒服的组件,可尝鲜使用,后期组件名字可能会更改", - "BootstrapTooltipTips1": "通过 BootstrapTooltip 对其他组件或者 HTML 元素进行包裹,使其被包裹对象具有 Tooltip 功能", - "BootstrapTooltipTips2": "本例中通过 BootstrapTooltip 包裹一个图标,鼠标移动到图标上时,显示预设 Tooltip 使用更简单快捷", - "TooltipsManualTitle": "手动控制状态", - "TooltipsManualIntro": "通过设置 Trigger=\"manual\" 使用代码控制提示栏状态", - "TooltipsManualDescLI1": "子组件使用级联参数得到 Tooltip 实例,然后调用其相应方法 Show Hide Toggle", - "TooltipsManualDescLI2": "通过 @ref 获得 Tooltip 实例调用其对应方法" + "BootstrapBlazor.Server.Components.Components.EventTable": { + "Title": "事件 Event" }, - "BootstrapBlazor.Server.Components.Samples.Toasts": { - "ToastsTitle": "Toast 轻量弹窗", - "ToastsSubTitle": "提供轻量级 Toast 弹窗", - "ToastsDescriptionTitle": "组件使用介绍", - "ToastsTips1": "1. 注入服务 ToastService", - "ToastsTips2": "2. 调用其实例 api", - "ToastsNormalTitle": "基础用法", - "ToastsNormalIntro": "用户操作时,右下角给予适当的提示信息", - "ToastsSuccess": "成功通知", - "ToastsDanger": "失败通知", - "ToastsInfo": "信息通知", - "ToastsPreventTitle": "阻止重复", - "ToastsPreventIntro": "通过设置 PreventDuplicates=\"true\" 重复点击下方按钮时,仅弹窗一次", - "ToastsPreventText": "阻止重复", - "ToastsAsyncTitle": "线程阻塞通知", - "ToastsAsyncIntro": "通过设置按钮 IsAsync 参数,使用同一个 ToastOption 更新弹窗信息提示不同步骤时的信息", - "ToastsAsyncDemoTitle": "异步通知", - "ToastsAsyncDemoStep1Text": "正在打包文档,请稍等...", - "ToastsAsyncDemoStep2Text": "打包完成,正在下载...", - "ToastsAsyncDemoStep3Text": "下载完成,自动关窗", - "ToastsWarning": "警告通知", - "ToastsAsyncText": "线程阻塞通知示例", - "ToastsCloseTitle": "Toast 手动关闭", - "ToastsCloseIntro": "不会自动关闭,需要人工点击关闭按钮,可通过设置 OnCloseAsync 回调委托自定义关闭弹窗后事件", - "ToastsCloseNotificationText": "成功通知", - "ToastsPositionTitle": "Toast 显示位置", - "ToastsPositionIntro": "提供设置 Toast 弹窗出现位置", - "ToastsPositionDescription": "通过设置 Toast 组件的 Placement 值来设置弹窗出现的位置,默认值为 BottomEnd 除此之外的值均为右上角", - "ToastsPositionAttentionText": "特别注意", - "ToastsPositionTips": "本组件使用注入服务的形式提供功能,使用时用户体验效果非常舒适,随时随地的调用。
        注入服务提供以下几种快捷调用方法:", - "ToastsPositionTips2": "示例如下", - "ToastsPositionSaved": "保存成功", - "ToastsPositionAutoClose": "保存数据成功,4 秒后自动关闭", - "ToastsPositionCategory": "通知类别", - "ToastsPositionBoxTitle": "通知框 Title 值", - "ToastsPositionNotification": "消息通知", - "ToastsPositionContent": "通知正文内容", - "ToastsPositionAddsNew": "系统增加新组件啦,4 秒后自动关闭", - "ToastsPositionNote1": "特别说明: 可以通过 BootstrapBlazorOptions 全局统一配置参数可以设置整个系统内的 Toast 组件 Delay 参数值", - "ToastsPositionNote2": "通过配置文件 appsetting.json 文件配置,适用于 Server-Side App", - "ToastsPositionConfigured": "通过 Startup 文件中的 ConfigureServices 方法配置,适用于 Server-Side AppWebAssembly App", - "ToastsPositionDisappearance": "统一设置 Toast 组件自动消失时间", - "ToastsPositionServerSide": "或者,仅适用于 Server-Side App", - "ToastsPositionAddComponent": "增加 BootstrapBlazor 组件", - "ToastsPositionAutomaticDisappearance": "统一设置 Toast 组件自动消失时间", - "ToastsShowHeaderTitle": "不显示 Header", - "ToastsShowHeaderIntro": "通过设置 ShowHeader=\"false\" 关闭 Header", - "ShowHeaderText": "Toast", - "ToastsHeaderTemplateTitle": "自定义标题栏", - "ToastsHeaderTemplateIntro": "通过设置 HeaderTemplate 自定义标题栏内容", - "ToastsAttrCategory": "Toast 类型", - "ToastsAttrTitle": "Toast 标题", - "ToastsAttrContent": "Toast 内容,支持 Html 标签", - "ToastsAttrDelay": "自动关闭时间", - "ToastsAttrIsAutoHide": "是否自动关闭提示框", - "ToastsAttrIsHtml": "内容是否包含 HTML", - "ToastsAttrPlacement": "弹窗位置" + "BootstrapBlazor.Server.Components.Components.GlobalSearch": { + "ArrowKeyText": "导航", + "EmptySearchResultPlaceHolder": "无匹配搜索", + "EnterKeyText": "选择", + "EscKeyText": "关闭", + "LogoText": "Powered by BootstrapBlazor", + "SearchingText": "正在搜索 ...", + "SearchPlaceHolder": "搜索", + "SearchResultPlaceHolder": "键入要搜索的内容", + "SearchResultText": "匹配到 {0} 条记录,耗时 {1} 毫秒" }, - "BootstrapBlazor.Server.Components.Samples.Timers": { - "TimersTitle": "Timer 计时器", - "TimersDescription": "用于时间倒计时", - "TimersNormalTitle": "基本用法", - "TimersNormalIntro": "通过设置 Value 属性设定倒计时时间", - "TimersColorTitle": "颜色", - "TimersColorIntro": "通过设置 Color 属性设定圆形进度条颜色" + "BootstrapBlazor.Server.Components.Components.Header": { + "DownloadText": "Download", + "FullScreenTooltipText": "点击切换全屏模式", + "HomeText": "首页", + "IntroductionText": "文档", + "TutorialsText": "实战" }, - "BootstrapBlazor.Server.Components.Samples.SweetAlerts": { - "SweetAlertsTitle": "SweetAlert 弹窗组件", - "SweetAlertsDescription": "模态对话框,多用于动作过程中进行询问后继续,或者显示执行结果", - "SweetAlertsTipsTitle": "组件使用介绍", - "SweetAlertsTips1": "1. 注入服务 SwalService", - "SweetAlertsTips2": "2. 调用其实例 api", - "SweetAlertsPreTitleText": "我是 Title", - "SweetAlertsPreContentText": "我是 Content", - "SweetAlertsNormalTitle": "基础用法", - "SweetAlertsNormalIntro": "通过注入服务调用 Swal 来弹出一个对话框", - "SweetAlertsNormalSuccess": "成功", - "SweetAlertsPopups": "弹窗", - "SweetAlertsNormalFail": "失败", - "SweetAlertsNormalWarn": "警告", - "SweetAlertsNormalHint": "提示", - "SweetAlertsNormalDoubt": "疑问", - "SweetAlertsDisplayTitle": "设置显示内容", - "SweetAlertsDisplayIntro": "通过设置 Title Content 用于显示弹窗标题与内容", - "SweetAlertsButtonTitle": "自定义按钮", - "SweetAlertsButtonIntro": "通过设置 ButtonTemplate 自定义弹窗内按钮", - "SweetAlertsComponentTitle": "显示自定义组件", - "SweetAlertsComponentIntro": "通过设置 Component 弹窗内容为自定义组件", - "SweetAlertsModalTitle": "模态对话框", - "SweetAlertsModalIntro": "通过调用 await SwalService.ShowModal 方法弹出模态框,点击弹窗内按钮关闭弹窗后,后续代码继续执行", - "SweetAlertsModalDescription": "本示例代码通过调用 await SwalService.ShowModal 方法弹出模态框,只有关闭弹窗后,后续代码才继续执行", - "SweetAlertsModalTips": "IsConfirm 参数表示弹窗为确认窗口,自动生成 取消 确认 两个按钮", - "SweetAlertsFooterTitle": "显示 Footer 信息", - "SweetAlertsFooterIntro": "通过设置 FooterTemplate 自定义 Footer 模板", - "SweetAlertsFooterDescription": "参数 ShowFooter 默认为 false 不显示页脚模板,需要显示设置为 true", - "SweetAlertsFooterButtonText": "带 Footer 弹窗", - "SweetAlertsAutoCloseTitle": "自动关闭功能", - "SweetAlertsAutoCloseIntro": "通过设置 IsAutoHide Delay 属性,自定义自动关闭时间", - "SweetAlertsAutoCloseDescription": "参数 IsAutoHide 默认为 false 不启用自动关闭功能, 参数 Delay 默认为 4000 毫秒", - "SweetAlertsAutoCloseButtonText": "自动关闭弹窗", - "SweetAlertsCloseTitle": "代码关闭功能", - "SweetAlertsCloseIntro": "通过调用 SwalOption CloseAsync 方法关闭弹窗", - "SweetAlertsCloseDescription": "不启用自动关闭功能 IsAutoHide=\"false\" 并且隐藏关闭按钮 ShowClose=\"false\", 可通过代码主动关闭弹窗", - "SweetAlertsCloseButtonText": "代码关闭弹窗", - "SwalOptionTitle": "模态对话框示例", - "SwalOptionContent": "模态对话框内容,不同按钮返回不同值", - "SwalConsoleInfo": "模态弹窗返回值为", - "AttrCategory": "弹出框类型", - "AttrTitle": "弹窗标题", - "AttrContent": "弹窗内容", - "AttrDelay": "自动关闭时间间隔", - "AttrAutoHide": "是否自动关闭", - "AttrShowClose": "是否显示关闭按钮", - "AttrShowFooter": "是否显示页脚模板", - "AttrIsConfirm": "是否为确认弹窗模式", - "AttrBodyContext": "弹窗参数", - "AttrBodyTemplate": "Body 模板", - "AttrFooterTemplate": "Footer 模板", - "AttrButtonTemplate": "模态按钮模板" + "BootstrapBlazor.Server.Components.Components.MethodTable": { + "Title": "Methods 方法" }, - "BootstrapBlazor.Server.Components.Samples.Spinners": { - "SpinnersTitle": "Spinner 旋转图标", - "SpinnersDescription": "加载数据时显示动效", - "SpinnersTipsTitle": "何时使用", - "SpinnersTips": "页面局部处于等待异步数据或正在渲染过程时,合适的加载动效会有效缓解用户的焦虑。", - "SpinnersNormalTitle": "基础用法", - "SpinnersNormalIntro": "默认旋转图标", - "SpinnersColorTitle": "Spinner 带有颜色的旋转图标", - "SpinnersColorIntro": "提供基本颜色的旋转图标", - "SpinnersGrowingTitle": "Growing Spinner 旋转图标", - "SpinnersGrowingIntro": "生长式旋转图标", - "SpinnersGrowingColorTitle": "Growing Spinner 带有颜色的旋转图标", - "SpinnersGrowingColorIntro": "提供基本颜色的旋转图标", - "SpinnersSizeTitle": "Spinner 旋转图标大小", - "SpinnersSizeIntro": "图标样式大小", - "SpinnersFlexTitle": "Flex 布局", - "SpinnersFlexIntro": "自定义布局", - "SpinnersCustomTitle": "自定义标题", - "SpinnersCustomIntro": "带有文字的自定义布局", - "SpinnersCustomLoading": "Loading...", - "SpinnersFloatTitle": "悬浮", - "SpinnersFloatIntro": "使用 Float 布局" + "BootstrapBlazor.Server.Components.Components.PackageTips": { + "Tips": "

        注意事项 :

        本组件依赖于 {0},使用本组件时需要引用其组件包

        Nuget 包安装

        使用 nuget.org 进行 {0} 组件的安装

        " }, - "BootstrapBlazor.Server.Components.Samples.Splittings": { - "SplittingTitle": "Loader 加载动画", - "SplittingDescription": "加载数据时显示动效", - "SplittingTipsTitle": "何时使用", - "SplittingTips": "页面局部处于等待异步数据或正在渲染过程时,合适的加载动效会有效缓解用户的焦虑。", - "SplittingNormalTitle": "基础用法", - "SplittingNormalIntro": "默认加载动画", - "SplittingTextTitle": "自定义文本", - "SplittingTextIntro": "修改显示的文本内容", - "SplittingColorTitle": "颜色", - "SplittingColorIntro": "设置 Color 更改进度条颜色", - "SplittingColumnsTitle": "分割粒度", - "SplittingColumnsIntro": "设置 Columns 更改进度条分割粒度", - "SplittingColumnsText": "分割粒度", - "SplittingText": "加载中 。。。" + "BootstrapBlazor.Server.Components.Components.Pre": { + "CopiedText": "复制代码成功", + "LoadingText": "正在加载 ...", + "MinusTooltipTitle": "点击减少显示行数", + "PlusTooltipTitle": "点击增加显示行数", + "TooltipTitle": "点击复制代码" }, - "BootstrapBlazor.Server.Components.Samples.SearchDialogs": { - "SearchDialogsTitle": "SearchDialog 搜索弹窗", - "SearchDialogsSubTitle": "通过绑定数据模型自动呈现搜索弹窗", - "SearchDialogsDescription": "SearchDialog 组件是 Dialog 组件的扩展,适用于数据弹出窗设置搜索条件。", - "SearchDialogsTips": "通过调用注入服务 DialogServiceShowSearchDialog 方法直接弹出搜索条件弹窗,大大减少代码量。SearchDialogOption 配置类继承 DialogOption ,更多参数设置请点击 [传送门]", - "SearchDialogsNormalTitle": "基础用法", - "SearchDialogsNormalIntro": "通过绑定 TModel 数据模型,自动生成模型各个字段的搜索表单", - "SearchDialogsNormalButtonText": "点击弹出搜索弹窗", - "SearchDialogsFieldTitle": "自定义搜索弹窗内显示的条件字段", - "SearchDialogsFieldIntro": "通过设定 Columns 参数显式设置显示的搜索字段", - "SearchDialogsFieldButtonText": "点击弹出搜索弹窗", - "SearchDialogsLayoutTitle": "设置搜索弹窗内布局方式", - "SearchDialogsLayoutIntro": "通过设定 RowType 参数显式设置弹窗内组件布局方式,默认为上下布局,可设置值 inline 水平布局", - "SearchDialogsLayoutButtonText1": "搜索弹窗(左对齐)", - "SearchDialogsLayoutButtonText2": "搜索弹窗(右对齐)", - "SearchDialogOptionAttr": "SearchDialogOption 属性" - }, - "BootstrapBlazor.Server.Components.Samples.PopoverConfirms": { - "PopoverConfirmsTitle": "PopConfirm 气泡确认框", - "PopoverConfirmsDescription": "点击元素,弹出气泡确认框。", - "PopoverConfirmsNormalTitle": "基础用法", - "PopoverConfirmsNormalIntro": "PopConfirm 的属性与 Popover 很类似,因此对于重复属性,请参考 Popover 的文档,在此文档中不做详尽解释。", - "PopoverConfirmsNormalPopupBoxText": "下面弹框", - "PopoverConfirmsNormalPopupBoxContent": "这是一段内容确定删除吗?", - "PopoverConfirmsNormalRightPopup": "右侧弹窗", - "PopoverConfirmsNormalRightPopupContent": "这是一段内容确定删除吗?", - "PopoverConfirmsNormalLeftPopup": "左侧弹窗", - "PopoverConfirmsNormalLeftPopupContent": "这是一段内容确定删除吗?", - "PopoverConfirmsNormalPopupAbove": "上面弹窗", - "PopoverConfirmsNormalPopupAboveContent": "是一段内容确定删除吗?", - "PopoverConfirmsContentTitle": "Content 更改确认弹窗显示文字", - "PopoverConfirmsContentIntro": "通过设置 Content 属性更改确认弹窗显示文字", - "PopoverConfirmsContentDelete": "删除确认按钮", - "PopoverConfirmsContentDeleteContent": "确定删除数据吗?", - "PopoverConfirmsIsAsyncTitle": "异步确认", - "PopoverConfirmsIsAsyncIntro": "通过设置 IsAsync 属性点击确认按钮时异步进行数据提交。有些特定场景异步后需要按钮继续保持禁用状态,请通过 IsKeepDisabled 参数控制", - "PopoverConfirmsIsAsyncConfirmationText": "异步确认", - "PopoverConfirmsIsAsyncConfirmationContent": "确定删除数据吗?", - "PopoverConfirmsFormTitle": "表单提交", - "PopoverConfirmsFormIntro": "通过设置 ButtonType 属性值为 ButtonType.Submit 使确认确认按钮点击后进行异步表单数据提交", - "PopoverConfirmsFormSubmitFormText": "提交表单", - "PopoverConfirmsFormSubmitFormContent": "确定提交数据吗?", - "PopoverConfirmsIsLinkTitle": "超链接按钮", - "PopoverConfirmsIsLinkIntro": "通过设置 IsLink 属性组件使用 A 标签进行渲染", - "PopoverConfirmsIsLinkHyperLinkText": "我是超链接", - "PopoverConfirmsIsLinkHyperLinkContent": "确定删除数据吗?", - "PopoverConfirmsCustomClassTitle": "自定义样式", - "PopoverConfirmsCustomClassIntro": "设置 CssClass 自定义组件样式", - "PopoverConfirmsCustomClassCustomButtonText": "自定义样式按钮", - "PopoverConfirmsCustomClassCustomButtonContent": "确定删除数据吗?", - "PopoverConfirmsBodyTemplateTitle": "自定义 PopConfirmButton 内容", - "PopoverConfirmsBodyTemplateIntro": "通过设置 BodyTemplate 属性,自定义内容", - "PopoverConfirmsBodyTemplateButtonText": "自定义内容", - "PopoverConfirmsShowButtonsTitle": "自定义组件", - "PopoverConfirmsShowButtonsIntro": "通过设置 ShowCloseButton=\"false\" ShowConfirmButton=\"false\" 不显示内置功能按钮,在自定义组件中自定义一个 审批 按钮", - "PopoverConfirmsShowButtonsButtonText": "自定义组件", - "PopoverConfirmsShowButtonsDesc": "自定义组件内可通过级联参数调用组件内部的 Close 或者 Confirm 方法", - "PopoverConfirmsTriggerTitle": "触发方式", - "PopoverConfirmsTriggerIntro": "通过设置 Trigger 参数来设置组件弹出确认框的方式,默认值为 click 还可以设置 hover focus 可组合使用" - }, - "BootstrapBlazor.Server.Components.Components.CustomPopConfirmContent": { - "CustomPopConfirmContentText": "自定义弹窗内容", - "CustomPopConfirmContentButtonText": "审批" - }, - "BootstrapBlazor.Server.Components.Samples.Popovers": { - "PopoversTitle": "Popover 弹出窗组件", - "PopoversDescription": "点击/鼠标移入元素,弹出气泡式的卡片浮层", - "PopoversNormalTitle": "基础用法", - "PopoversNormalIntro": "点击文本输入框弹出 Popover 弹出框,Placement 设置弹出框的位置 二次点击时关闭弹出框", - "PopoversButtonTitle": "按钮激活弹出框", - "PopoversButtonIntro": "点击按钮后弹出 Popover 弹出框", - "PopoversButtonButtonText": "Click 激活/关闭", - "PopoversTemplateTitle": "自定义模板", - "PopoversTemplateIntro": "通过设置 Template 模板,自定义弹窗内容", - "PopoversTemplateButtonText": "自定义模板", - "PopoversTemplateTitleText": "自定义模板", - "PopoversCssClassTitle": "自定义样式", - "PopoversCssClassIntro": "通过设置 Popover 参数 CssClass 对弹窗进行自定义样式", - "PopoversCssClassDescription": "设置 Popover 参数 CssClass=\"custom-popover\" 进行自定义样式", - "PopoversCssClassButtonText": "Click 激活/关闭", - "PopoversManualTitle": "手动控制状态", - "PopoversManualIntro": "通过设置 Trigger=\"manual\" 使用代码控制提示栏状态", - "PopoversManualDescLI1": "子组件使用级联参数得到 Popover 实例,然后调用其相应方法 Show Hide Toggle", - "PopoversManualDescLI2": "通过 @ref 获得 Popover 实例调用其对应方法" + "BootstrapBlazor.Server.Components.Components.QQGroup": { + "Group": "QQ群", + "Status": "满", + "Welcome": "欢迎加群讨论" }, - "BootstrapBlazor.Server.Components.Samples.Progress": { - "ProgressTitle": "Progress 进度条", - "ProgressDescription": "用于展示操作进度,告知用户当前状态和预期", - "ProgressNormalTitle": "进度条组件", - "ProgressNormalIntro": "常用的进度条", - "ProgressDisplayValueTitle": "显示值", - "ProgressDisplayValueIntro": "通过 IsShowValue 设置进度条值显示", - "ProgressHeightTitle": "设置进度条高度", - "ProgressHeightIntro": "通过 Height 进度条高度设置", - "ProgressColorTitle": "带颜色进度条", - "ProgressColorIntro": "设置进度条颜色", - "ProgressStripeTitle": "是否显示条纹", - "ProgressStripeIntro": "通过 IsStriped 设置进度条的条纹设置", - "ProgressDynamicTitle": "是否动态显示", - "ProgressDynamicIntro": "通过 IsAnimated 设置进度条的动态显示", - "ProgressBindingTitle": "双向绑定数据", - "ProgressBindingIntro": "绑定数据", - "ProgressDecimalsTitle": "小数", - "ProgressDecimalsIntro": "通过设置 Round 参数调整保留小数点位数,默认为 0,通过设置 MidpointRounding 参数调整四舍五入模式,默认为 MidpointRounding.AwayFromZero 四舍五入" + "BootstrapBlazor.Server.Components.Components.ThemeChooser": { + "HeaderText": "请选择主题", + "Title": "点击切换主题" }, - "BootstrapBlazor.Server.Components.Samples.Responsives": { - "ResponsiveTitle": "Responsive 断点监听", - "ResponsiveDescription": "根据参数条件,确定是否重新渲染响应布局的内容,通常用于响应布局", - "ResponsiveNormalTitle": "基础用法", - "ResponsiveNormalIntro": "调整浏览器窗口大小,观察 Breakpoint 的变化", - "ResponsiveNormalIntroCurrentText": "当前" + "BootstrapBlazor.Server.Components.Components.Tips": { + "Title": "小提示" }, - "BootstrapBlazor.Server.Components.Samples.Modals": { - "ModalsTitle": "Modal 模态框", - "ModalsDescription": "在保留当前页面状态的情况下,告知用户并承载相关操作", - "ModalsNormalTitle": "基本用法", - "ModalsNormalIntro": "弹出一个对话框,适合需要定制性更大的场景", - "ModalsNormalPopupTitle": "弹窗标题", - "ModalsNormalPopupText": "弹窗正文", - "ModalsNormalIsKeyboard": "通过设置 Modal 组件的 IsKeyboard:true 参数,开启弹窗是否支持 ESC", - "ModalsNormalPopups": "弹窗", - "ModalsNormalDefaultPopup": "默认弹窗", - "ModalsNormalDefaultPopupText": "我是弹窗内正文", - "ModalsIsBackdropTitle": "IsBackdrop 背景关闭模式", - "ModalsIsBackdropIntro": "点击弹窗以外区域默认关闭弹窗效果", - "ModalsIsBackdropToClose": "点击背景可关闭弹窗", - "ModalsTitlePopupWindowText": "我是弹窗内正文", - "ModalsDialogSizeTitle": "弹框大小", - "ModalsDialogSizeIntro": "通过 Size 设置弹框组件的大小", - "ModalsResize": "弹框大小", - "ModalsDialogResizeTitle": "调整大小弹窗", - "ModalsDialogResizeIntro": "通过设置 ShowResize=\"true\" 可以通过鼠标拉动弹窗右下角进行窗口大小调整", - "ModalsSmallPopup": "小弹窗", - "ModalsBigPopup": "大弹窗", - "ModalsOverSizedPopup": "超大弹窗", - "ModalsSuperLargePopup": "超超大弹窗", - "ModalsFullScreenSizeTitle": "全屏弹窗", - "ModalsFullScreenSizeIntro": "设置属性 FullScreenSize 即可", - "ModalsFullScreenPopup": "全屏弹窗", - "ModalsFullScreenPopup992": "全屏弹窗(<992px)", - "ModalsLargeFullScreenPopup": "大全屏弹窗", - "ModalsFullScreenPopup1200": "全屏弹窗(<1200px)", - "ModalsLargeFullScreenPopupWindow": "超大全屏弹窗", - "ModalsFullScreenPopup1400": "全屏弹窗(<1400px)", - "ModalsSuperLargeFullScreenPopupWindow": "超超大全屏弹窗", - "ModalsCenterVerticallyTitle": "垂直居中", - "ModalsCenterVerticallyIntro": "通过 IsCentered 设置弹框组件的垂直居中", - "ModalsVerticallyCenteredPopup": "垂直居中的弹窗", - "ModalsLongContentTitle": "超长内容", - "ModalsLongContentIntro": "通过 IsScrolling 针对超出内容设置弹框组件滚轮滑动功能", - "ModalsVeryLongContent": "内容超长的弹窗", - "ModalsScrollBarPopup": "内置滚动条弹窗", - "ModalsIsDraggableTitle": "可拖拽弹窗", - "ModalsIsDraggableIntro": "点击弹窗标题栏对弹窗进行拖拽", - "ModalsMaximizeTitle": "最大化按钮", - "ModalsMaximizeIntro": "通过设置 ShowMaximinzeButton 弹窗显示最大化按钮", - "ModalsMaximizePopup": "可最大化弹窗", - "ModalsShownCallbackAsyncTitle": "弹窗已显示回调方法", - "ModalsShownCallbackAsyncIntro": "通过设置 ShownCallbackAsync 回调委托,弹窗显示后回调此方法", - "ModalsAttributesFirstAfterRenderCallbackAsync": "首次页面渲染后的回调方法,进入页面后就立即弹窗", - "ModalsAttributeHeaderTemplate": "模态头部模板", - "ModalsAttributeBodyTemplate": "模态弹窗内容模板", - "ModalsAttributeChildContent": "内容", - "ModalsAttributeFooterTemplate": "模态底部的ModalFooter组件", - "ModalsAttributeIsBackdrop": "是否关闭后台弹出窗口", - "ModalsAttributeIsKeyboard": "是否响应ESC键盘", - "ModalsAttributeIsCentered": "是否垂直居中", - "ModalsAttributeIsScrolling": "弹出窗口的文本过长时是否滚动", - "ModalsAttributeIsFade": "是否启用淡入淡出动画效果", - "ModalsAttributeIsDraggable": "是否启用拖动效果", - "ModalsAttributeShowCloseButton": "是否显示关闭按钮", - "ModalsAttributeShowFooter": "是否显示页脚", - "ModalsAttributeSize": "大小", - "ModalsAttributeFullScreenSize": "全屏显示", - "ModalsAttributeTitle": "弹出窗口标题", - "ModalsAttributeShowMaximizeButton": "是否显示弹出的最大化按钮", - "ModalsAttributeShownCallbackAsync": "弹出菜单显示回调方法" + "BootstrapBlazor.Server.Components.Components.UpdateIntro": { + "B1": "首先感谢您对本套组件的关注,目前本套组件已经拥有将近 200 个组件,本组件是基于", + "B2": "企业级组件库,提供如布局、导航、表单、数据、通知、图标、语音等几大类通用组件,每一个组件都经过精心设计,具有模块化、响应式和优秀的性能。从更多实际场景出发,满足多种场景的需求,极大的减少开发者时间成本,大大缩短开发周期,大幅提高开发效率,并提供了一套", + "B3": "通用权限管理系统", + "B4": "示例工程", + "B5": "产品是由一支专业的全职技术团队进行维护,高效的响应速度,多元化的解决方案,长期提供支持,并提供企业级支持。目前已在多家知名国企内部使用,项目最高在线 1200 人稳定运行。右侧为国内人数最多的中文 Blazor QQ 社区二维码,欢迎扫描加群。", + "H1": "组件库 更新到", + "P1": "组件更新到", + "P2": "更新日志", + "P3": "传送门", + "P4": "如果组件给您带来了方便,请您帮忙给项目点亮" }, - "BootstrapBlazor.Server.Components.Samples.Masks": { - "MaskTitle": "遮罩组件", - "MaskDescription": "通过调用服务显示,隐藏方法,显示一个遮罩层对数据进行遮罩操作", - "MaskNormalTitle": "基本用法", - "MaskNormalIntro": "调用 MaskService 遮罩服务示例方法 Show 方法显示一个遮罩,3 秒后调用实例方法 Close 关闭遮罩", - "MaskNormalDesc": "可以通过 MaskOption 调整 ZIndex Opacity BackgroundColor 参数", - "ShowMaskButtonText": "打开", - "MaskContainerTitle": "指定容器", - "MaskContainerIntro": "通过设置 MaskOption 参数 ContainerId 指定遮罩出现位置", - "MultipleMaskContainerTitle": "多遮罩", - "MultipleMaskContainerIntro": "通过自定义设置 Mask 组件可实现网页内多个局部进行遮罩操作", - "MultipleMaskContainerDesc": "组件内自己设置 Mask 组件,调用 MaskService 实例方法 Show 时,通过第二个参数指定 Mask 实例即可", - "MaskCloseTitle": "代码关闭弹窗", - "MaskCloseIntro": "通过使用 DialogCloseButton 组件或者级联参数关闭弹窗" + "BootstrapBlazor.Server.Components.Components.Video": { + "H1": "B 站相关视频链接", + "L1": "[传送门]", + "L2": "暂无" }, - "BootstrapBlazor.Server.Components.Samples.Messages": { - "MessagesTitle": "Message 消息提示", - "MessagesDescription": "常用于主动操作后的反馈提示。与 Toast 的区别是后者更多用于系统级通知的被动提醒", - "MessagesIntro": "组件使用介绍:", - "MessagesTips1": "1. 注入服务 MessageService", - "MessagesTips2": "2. 调用其实例 api", - "MessagesTips3": "这是一条提示消息", - "MessagesNormalTitle": "基础用法", - "MessagesNormalIntro": "从顶部出现,4 秒后自动消失", - "MessagesMessagePrompt": "打开消息提示", - "MessagesAsyncTitle": "线程阻塞通知", - "MessagesAsyncIntro": "通过设置按钮 IsAsync 参数,使用同一个 MessageOption 更新弹窗信息提示不同步骤时的信息", - "MessagesAsyncDemoStep1Text": "正在打包文档,请稍等...", - "MessagesAsyncDemoStep2Text": "打包完成,正在下载...", - "MessagesAsyncDemoStep3Text": "下载完成,自动关窗", - "MessagesAsyncText": "线程阻塞通知示例", - "MessagesIconTitle": "带图标的消息框", - "MessagesIconIntro": "通过设置 MessageOptionIcon 属性,更改消息框左侧小图标", - "MessagesCloseButtonTitle": "带关闭按钮的消息框", - "MessagesCloseButtonIntro": "通过设置 MessageOptionShowDismiss 属性,更改消息框右侧出现关闭按钮", - "MessagesLeftBoardTitle": "左侧带边框的消息框", - "MessagesLeftBoardIntro": "通过设置 MessageOptionShowBar 属性,更改消息框左侧边框样式", - "MessagesDifferentColorTitle": "不同颜色的消息框", - "MessagesDifferentColorIntro": "通过设置 MessageOptionColor 属性,更改消息框颜色", - "MessagesDifferentColorPrimary": "Primary 消息", - "MessagesDifferentColorSuccess": "Success 消息", - "MessagesDifferentColorInfo": "Info 消息", - "MessagesDifferentColorDanger": "Danger 消息", - "MessagesDifferentColorWarning": "Warning 消息", - "MessagesDifferentColorSecondary": "Secondary 消息", - "MessagesPositionTitle": "消息框弹出位置", - "MessagesPositionIntro": "通过设置 MessageService 服务的组件参数,指定已经设置底部显示位置的 Message 组件", - "MessagesItem": "MessageOption 属性", - "MessagesTemplateTitle": "自定义模板", - "MessagesTemplateIntro": "通过设置 ChildContent 模板可以实现丰富的自定义样式与内容的提示信息", - "MessagesTemplatePrompt": "自定义消息", - "MessagesShowModeTitle": "显示模式", - "MessagesShowModeIntro": "通过设置 ShowMode 参数,指定显示模式", - "MessagesShowModePrompt": "只显示最后一条消息" + "BootstrapBlazor.Server.Components.Layout.BaseLayout": { + "CancelText": "取消", + "ChatTooltip": "Azure OpenAI", + "DarkMode": "暗黑模式", + "FlowText": "工作流", + "InstallAppText": "安装小程序", + "InstallText": "安装", + "LightMode": "明亮模式", + "SiteTitle": "Bootstrap Blazor - 组件库", + "Title": "点击查看更新日志" }, - "BootstrapBlazor.Server.Components.Samples.Lights": { - "LightsTitle": "Light 指示灯", - "LightsDescription": "提供各种状态的指示灯", - "LightsNormalTitle": "普通用法", - "LightsNormalIntro": "用于状态指示", - "LightsFlashingTitle": "闪烁", - "LightsFlashingIntro": "通过设置属性 IsFlash 使指示灯进行闪烁", - "LightsColorTitle": "变色", - "LightsColorIntro": "通过设置属性 Color 值使指示灯进行变色", - "LightsTooltipTextTitle": "提示文字", - "LightsTooltipTextIntro": "通过设置属性 TooltipText 值使鼠标悬浮指示灯上时提示 tooltip 文字", - "TooltipText": "我是提示文字信息", - "LightsFlatTitle": "扁平化", - "LightsFlatIntro": "通过设置属性 IsFlat 使指示灯扁平化" + "BootstrapBlazor.Server.Components.Layout.ComponentLayout": { + "Example": "示例", + "Group": "交流群", + "IconTheme": "图标主题", + "Title": "基于 Bootstrap 和 Blazor 的企业级组件库", + "Video": "相关视频", + "ViewC#Code": "查看 C# 代码", + "ViewExample": "查看示例", + "ViewRazorCode": "查看 Razor 代码" }, - "BootstrapBlazor.Server.Components.Samples.Charts.Index": { - "Chart": "Chart 图表", - "ChartIntro": "通过给定数据,绘画各种图表的组件", - "ChartIntro2": "组件数据在 OnInit 回调委托中进行设置即可" - }, - "BootstrapBlazor.Server.Components.Samples.Charts.Bubble": { - "BubbleNormalTitle": "Bubble 图", - "BubbleNormalIntro": "通过设置 ChartType 更改图表为 bubble 图", - "BubbleNormalRandomData": "随机数据", - "BubbleNormalAddDataSet": "添加数据集", - "BubbleNormalRemoveDataset": "移除数据集", - "BubbleNormalAddData": "添加数据", - "BubbleNormalRemoveData": "移除数据", - "BubbleNormalReload": "重载", - "BubbleBarAspectRatioTitle": "图表比例", - "BubbleBarAspectRatioIntro": "设置了高度和宽度,会自动禁用约束图表比例, 图表充满容器" - }, - "BootstrapBlazor.Server.Components.Samples.Charts.Doughnut": { - "DoughnutNormalTitle": "Doughnut 图", - "DoughnutNormalIntro": "通过设置 ChartType 更改图表为 doughnut 图", - "DoughnutNormalRandomData": "随机数据", - "DoughnutNormalAddDataset": "添加数据集", - "DoughnutNormalRemoveDataset": "移除数据集", - "DoughnutNormalAddingData": "添加数据", - "DoughnutNormalRemoveData": "移除数据", - "DoughnutNormalHalf": "半圆/全圆", - "DoughnutNormalReload": "重载", - "DoughnutAspectRatioTitle": "图表比例", - "DoughnutAspectRatioIntro": "设置了高度和宽度,会自动禁用约束图表比例, 图表充满容器" - }, - "BootstrapBlazor.Server.Components.Samples.Charts.Pie": { - "PieNormalTitle": "Pie 图", - "PieNormalIntro": "通过设置 ChartType 更改图表为 pie 图", - "PieNormalRandomData": "随机数据", - "PieNormalAddDataset": "添加数据集", - "PieNormalRemoveDataset": "移除数据集", - "PieNormalAddingData": "添加数据", - "PieNormalRemoveData": "移除数据", - "PieNormalReload": "重载", - "PieAspectRatioTitle": "图表比例", - "PieAspectRatioIntro": "设置了高度和宽度,会自动禁用约束图表比例, 图表充满容器", - "PieLegendPositionTitle": "图例位置", - "PieLegendPositionIntro": "通过 LegendPostion 设置图例位置" - }, - "BootstrapBlazor.Server.Components.Samples.Charts.Line": { - "LineOnInitTitle": "Line 图", - "LineOnInitIntro": "使用 OnInit 回调委托方法,对初始化数据进行赋值后,即可进行绘图操作,通过设置 BorderWidth 属性,可以设置折线图线宽,默认值3,通过设置 ChartOptions.LegendLabelsFontSize 属性,可以设置图例 Lables 字体大小", - "LineOnInitRandomData": "随机数据", - "LineOnInitAddDataset": "添加数据集", - "LineOnInitRemoveDataset": "移除数据集", - "LineOnInitAddingData": "添加数据", - "LineOnInitRemoveData": "移除数据", - "LineOnInitContinueData": "连续数据", - "LineAnimation": "动画", - "LineContinueTitle": "Plot", - "LineContinueIntro": "调用实例方法 Reload,重新调整数据使曲线图向左平移,设置 IsAnimation 关闭动画效果", - "LineTensionTitle": "Line 图", - "LineTensionIntro": "使用设置 ChartDataset 实例的 Tension 参数,调整折线的曲率,默认位 0.4f", - "LineNullableTitle": "Line 图", - "LineNullableIntro": "使用设置 ChartDataset 实例的 Data 参数中含 null,折线图使用虚线连接", - "LineOnInitReload": "重载", - "LineTwoYAxesTitle": "双Y轴", - "LineTwoYAxesIntro": "显示第二Y轴:对齐方式,标题和对应数据组", - "LineBarAspectRatioTitle": "图表比例", - "LineBarAspectRatioIntro": "设置了高度和宽度,会自动禁用约束图表比例, 图表充满容器", - "LineChartJSTitle": "通过JS生成Chart", - "LineChartJSIntro": "由于 BootstrapBlazor.Chart 底层引用了 Chart.JS 所以我们可以通过JS方式来调用并生成图表。", - "AppendDataTitle": "数据参数扩展", - "AppendDataIntro": "由于 ChartDataSource 没有完全封装 Chart.JS 中所有参数,当我们需要设置一些未提供的参数时,可以通过 AppendData 来完成", - "CustomTooltipTitle": "自定义 Tooltip", - "CustomTooltipIntro": "自定义 Tooltip 需要使用客户端脚本设置", - "CustomTooltipLi1": "Chart 组件设置 Id 参数", - "CustomTooltipLi2": "创建客户端 JavaScript 脚本,本例使用隔离脚本方式导出方法名为 customTooltip,参数依次为 组件 Id 回调引用实例 回调方法名称(TooltipLog)", - "CustomTooltipLi3": "本例中重载基类方法 InvokeInitAsync 通过 await InvokeVoidAsync(\"customTooltip\", CustomTooltipId, Interop, nameof(TooltipLog)) 语句调用客户端脚本" - }, - "BootstrapBlazor.Server.Components.Samples.Charts.Bar": { - "BarTypeTitle": "Bar 图", - "BarTypeIntro": "通过设置 ChartType 更改图表为 bar 图", - "BarTypeAnimationOn": "开启动画", - "BarTypeAnimationOff": "关闭动画", - "BarTypeRandomData": "随机数据", - "BarTypeAddDataSet": "添加数据集", - "BarTypeRemoveDataSet": "移除数据集", - "BarTypeAddData": "添加数据", - "BarTypeRemoveData": "移除数据", - "BarStackedTitle": "堆砌排列", - "BarStackedIntro": "通过设置 X/Y 轴 Stacked 属性,控制是否堆砌排列", - "BarTypeReload": "重载", - "BarTwoYAxesTitle": "双Y轴", - "BarTwoYAxesIntro": "显示第二Y轴:对齐方式,标题和对应数据组", - "BarAspectRatioTitle": "图表比例", - "BarAspectRatioIntro": "设置了高度和宽度,会自动禁用约束图表比例, 图表充满容器", - "BarShowDataLabelTitle": "显示图表数据值", - "BarShowDataLabelIntro": "通过设置ShowDataLabel 属性,控制是否显示数据值", - "BarColorSeparatelyTitle": "单独设置柱状图颜色", - "BarColorSeparatelyIntro": "通过设置BarColorSeparately属性,控制是否单独设置柱状图颜色,以及通过BackgroundColor 集合设置柱状图颜色" - }, - "BootstrapBlazor.Server.Components.Samples.Transitions": { - "TransitionsTitle": "Transition 过渡效果", - "TransitionsDescription": "BootstarpBlazor 应用在部分组件的过渡动画,你也可以直接使用。", - "TransitionsNormalTitle": "基础用法", - "TransitionsNormalIntro": "基础动画效果演示", - "TransitionsEndCallbackTitle": "动画执行完成回调", - "TransitionsEndCallbackIntro": "动画执行完成后执行回调函数", - "TransitionsDurationTitle": "设置动画时长", - "TransitionsDurationIntro": "通过设置 Duration 参数控制动画时长单位为毫秒" - }, - "BootstrapBlazor.Server.Components.Samples.EditDialogs": { - "Title": "EditDialog 编辑弹窗", - "Description": "通过绑定数据模型自动呈现编辑弹窗", - "SubDescription": "EditDialog 组件是 Dialog 组件的扩展,适用于数据弹出窗编辑。", - "Tip": "通过调用注入服务 DialogServiceShowEditDialog 方法直接弹出编辑对话框,大大减少代码量。EditDialogOption 配置类继承 DialogOption,更多参数设置请点击 [传送门]\"", - "NormalTitle": "基础用法", - "NormalIntro": "通过绑定 TModel 数据模型,自动生成模型各个字段的可编辑表单", - "NoRenderTitle": "设置绑定模型部分属性不显示", - "NoRenderIntro": "通过设置 IEditorItem 实例的 地址 数量 参数 Ignore=true, 实现编辑弹窗不显示", - "EditDialogOption": "EditDialogOption 属性", - "LeftAlignedButton": "编辑弹窗(左对齐)", - "RightAlignedButton": "编辑弹窗(右对齐)", - "PopupButton": "弹窗" - }, - "BootstrapBlazor.Server.Components.Samples.BaiduOcr": { - "Title": "IBaiduOcr 百度文字识别服务", - "SubTitle": "文字识别服务", - "VatInvoiceTitle": "增值税发票文字识别", - "VatInvoiceIntro": "通过上传增值税发票图片调用百度 Ocr 接口进行文字识别", - "BaiduOcrDesc": "本组件通过调用 Baidu AI 平台文字识别接口进行增值税发票文字识别。支持对增值税普票、专票、全电发票(新版全国统一电子发票,专票/普票)、卷票、区块链发票的所有字段进行结构化识别,包括发票基本信息、销售方及购买方信息、商品信息、价税信息等,其中五要素字段的识别准确率超过 99.9%; 同时,支持对增值税卷票的 21 个关键字段进行识别,包括发票类型、发票代码、发票号码、机打号码、机器编号、收款人、销售方名称、销售方纳税人识别号、开票日期、购买方名称、购买方纳税人识别号、项目、单价、数量、金额、税额、合计金额(小写)、合计金额(大写)、校验码、省、市,四要素字段的识别准确率可达95%。上传图片不能超过 4M", - "BaiduOcrIntro": "使用方法", - "BaiduOcrStep1": "1. 配置 BaiduOcrOption", - "BaiduOcrStep1Desc": "更新 appsettings.json 文件,配置如下:相关参数值请在 百度 AI 开放平台 注册后开通申请", - "BaiduOcrStep2": "2. 通过注入服务获得 IBaiduOcr 实例", - "BaiduOcrStep3": "3. 调用服务相对应的识别方法即可", - "VerifyVatInvoiceTitle": "增值税验真", - "VerifyVatInvoiceIntro": "通过调用 IBaiduOcr 服务实例的发票验真方法 VerifyInvoiceAsync 返回 InvoiceVerifyResult 其属性 Validtrue 时为真" - }, - "BootstrapBlazor.Server.Components.Samples.Topologies": { - "TopologiesTitle": "Topology 人机交互界面", - "TopologiesDescription": "通过 Topology 开源组件进行人机交互界面的渲染", - "TopologiesNormalTitle": "基础用法", - "TopologiesNormalIntro": "加载网站导出的 Json 文件即可,点击风扇下方数字框可进行控制操作" - }, - "BootstrapBlazor.Server.Components.Samples.TreeViews": { - "TreeViewsTitle": "Tree 树形控件", - "TreeViewsDescription": "用清晰的层级结构展示信息,可展开或折叠", - "TreeViewsTips1": "组件为泛型组件需要使用 TItem 指定绑定的数据模型,本例中模型为 TreeFoo 需要设置", - "TreeViewsTips2": "设置 TreeViewItemIsExpand 参数控制当前子节点是否展开", - "TreeViewsTips3": "点击子项展开小箭头时,通过 OnExpandNodeAsync 回调委托方法获取子项数据集合", - "TreeViewsTips4": "保持节点状态回落机制,ModelEqualityComparer CustomKeyAttribute IEqualityComparer<TItem> Equals 重载方法", - "TreeViewsTips5": "组件将会保持 展开 收缩 选中 状态", - "TreeViewsTips6": "通过 TreeViewItem<TItem>.IsExpand 设置节点是否 展开 状态", - "TreeViewsTips7": "通过 TreeViewItem<TItem>.IsActive 设置节点是否 选中 状态", - "TreeViewsTips8": "通过 TreeViewItem<TItem>.Checked 设置节点是否 复选/单选 状态", - "TreeViewsTipsOnBeforeTreeItemClick": "通过设置 OnBeforeTreeItemClick 回调方法可以阻止点击节点动作,返回 false 时取消点击动作", - "TreeViewsTips9": "第一步:设置 TItem 泛型模型", - "TreeViewsTips10": "第二步:设置 Items 获得组件数据源 注意 数据源类型为 IEnumerable<TreeViewItem<TItem>>", - "TreeViewsTips11": "第三步:设置 OnExpandNodeAsync 回调委托响应节点展开获取子项数据源集合", - "TreeViewsTips12": "第四步:设置 ModelEqualityComparer 提供组件识别模型比较委托方法,注意 本设置为可选项 通过上面讲解的回落机制进行降级搜索", - "TreeViewNormalTitle": "基础用法", - "TreeViewNormalIntro": "基础的树形结构展示", - "TreeViewNormalDescription": "通过设置 OnTreeItemClick 属性监控树形控件节点被点击时的事件,点击树形控件节点时下面日志显示选中节点的数据", - "TreeViewCheckboxTitle": "多选框", - "TreeViewCheckboxIntro": "适用于需要选择层级时使用", - "TreeViewCheckboxTips1": "通过设置 OnTreeItemChecked 属性监控树形控件节点被勾选时的事件,选中树形控件节点前复选框时下面日志显示选中节点的数据", - "TreeViewCheckboxTips2": "Tree 组件数据加载内部将会保持各个节点状态,刷新 按钮将更新数据源 Items,组件重新初始化,点击 追加节点 按钮时,仅更改数据源内部数据未重新赋值,所以各个节点状态保持不变", - "TreeViewNormalRadioListDisplayText": "是否重置", - "TreeViewCheckboxCheckBoxDisplayText1": "自动选中子节点", - "TreeViewCheckboxCheckBoxDisplayText2": "自动选中父节点", - "TreeViewCheckboxButtonText": "刷新", - "TreeViewCheckboxAddButtonText": "追加节点", - "TreeViewDraggableTitle": "可拖拽节点", - "TreeViewDraggableIntro": "使树中的节点可以进行跨层级拖拽操作", - "TreeViewDraggableDescription": "通过设置 AllowDrag 属性开启节点拖拽功能,使用 OnDragItemEndAsync 回调委托方法响应拖拽节点放置事件", - "TreeViewTreeDisableTitle": "禁用状态", - "TreeViewTreeDisableIntro": "可将 Tree 的某些节点设置为禁用状态", - "TreeViewTreeDisableDescription": "通过设置数据源 TreeViewItem 对象的 Disabled 属性,来控制此节点是否可以进行勾选动作,设置为 false 时不影响节点展开/收缩功能", - "TreeViewAccordionModelTitle": "手风琴模式", - "TreeViewAccordionModelIntro": "对于同一级的节点,每次只能展开一个", - "TreeViewAccordionModelDescription": "通过设置 Tree 组件的 IsAccordion 属性开启手风琴效果", - "TreeViewDefaultExpandTitle": "默认展开和默认选中", - "TreeViewDefaultExpandIntro": "可将 Tree 的某些节点设置为默认展开或默认选中", - "TreeViewDefaultExpandDescription": "通过设置 TreeViewItem 对象的 IsExpand 属性,来控制此节点是否默认为展开状态,本例中 导航二 默认为展开状态,其余节点默认为收缩状态", - "TreeViewTreeDisplayIconTitle": "显示图标", - "TreeViewTreeDisplayIconIntro": "通过设置 ShowIcon 来控制组件是否显示图标", - "TreeViewTreeDisplayIconDescription": "通过设置 TreeViewItem 对象的 ShowIcon 属性,来控制此节点是否显示图标", - "TreeViewTreeClickExpandTitle": "点击节点展开收缩功能", - "TreeViewTreeClickExpandIntro": "通过设置 ClickToggleNode 来控制点击节点时是否进行展开收缩操作", - "TreeViewTreeClickExpandDescription": "通过设置 TreeViewItem 对象的 ClickToggleNode 属性,来控制此节点是否通过点击来实现展开收缩操作", - "TreeViewTreeValidationFormTitle": "Tree 组件内置到验证表单中", - "TreeViewTreeValidationFormIntro": "Tree 组件内部可开启 Checkbox 内置到验证表单时会显示 DisplayName 此功能在树状组件内需要禁止", - "TreeViewTreeValidationFormDescription": "通过设置 ShowCheckbox 属性显示 Checkbox 内置到验证组件 ValidateForm 中不显示 DisplayName", - "TreeViewTreeLazyLoadingTitle": "懒加载", - "TreeViewTreeLazyLoadingIntro": "展开节点时动态添加子节点", - "TreeViewTreeLazyLoadingDescription": "通过设置节点 HasChildNode 控制是否显示节点小箭头图片 。通过Tree的 OnExpandNodeAsync 委托添加节点", - "TreeViewTreeCustomNodeTitle": "自定义节点", - "TreeViewTreeCustomNodeIntro": "通过设置 TreeViewItem Template 来实现自己的节点模板", - "TreeViewTreeNodeColorTitle": "节点颜色", - "TreeViewTreeNodeColorIntro": "通过设置 TreeViewItem CssClass 来实现自己的节点样式", - "TreeViewCheckedItemsTitle": "获取所有选中节点", - "TreeViewCheckedItemsIntro": "通过设置 OnTreeItemChecked 回调委托获取所有节点", - "TreeViewShowSkeletonTitle": "加载骨架屏", - "TreeViewShowSkeletonIntro": "当组件 Itemsnull 时,通过设置 ShowSkeleton=\"true\" 使异步加载数据时组件显示骨架屏,设置 ShowSkeleton=\"false\" 时显示默认正在加载动画", - "TreeViewShowSkeletonButtonText": "异步加载", - "TreeViewShowSearchTitle": "显示搜索栏", - "TreeViewShowSearchIntro": "通过设置 ShowSearch 显示搜索栏,通过 OnSearchAsync 回调方法设置数据源刷新页面即可", - "TreeViewSetActiveTitle": "设置激活节点", - "TreeViewSetActiveIntro": "通过调用 SetActiveItem 方法设置当前激活节点", - "TreeViewSetActiveDisplayText": "当前激活节点", - "TreeViewsAttribute": "TreeViewItem 属性", - "TreeViewsDisableWholeTreeView": "是否禁用整个 TreeView", - "TreeViewsWhetherToExpandWhenDisable": "禁用时候是否可以展开或折叠子节点", - "OnMaxSelectedCountExceedTitle": "可选最大数量提示", - "OnMaxSelectedCountExceedContent": "最多只能选择 {0} 项", - "TreeViewMaxSelectedCountTitle": "最大选择数量", - "TreeViewMaxSelectedCountIntro": "通过设置 MaxSelectedCount 属性控制最大可选数量,通过 OnMaxSelectedCountExceed 回调处理逻辑", - "TreeViewMaxSelectedCountDesc": "选中节点超过 2 个时,弹出 Toast 提示栏", - "TreeViewEnableKeyboardArrowUpDownTitle": "键盘支持", - "TreeViewEnableKeyboardArrowUpDownIntro": "通过设置 EnableKeyboardArrowUpDown=\"true\" 支持键盘上下箭头操作。左箭头 收起节点,右箭头 展开节点,上箭头 向上移动节点,下箭头 向下移动节点,空格 选中节点", - "TreeViewVirtualizeTitle": "虚拟滚动", - "TreeViewVirtualizeIntro": "通过设置 IsVirtualize=\"true\" 开启虚拟滚动,支持大数据", - "TreeViewVirtualizeDescription": "组件内部使用 Virtualize 来实现虚拟滚动逻辑,对浏览器压力会减少很多;但是如果树状结构数据比较多,比如 全选 等操作必须对所有数据进行标记,导致内存中确实有大数据存在,目前还没有解决这个问题,目前此组件由于大数据对 CPU 压力还是比较大的", - "TreeViewShowToolbarTitle": "显示工具栏", - "TreeViewShowToolbarIntro": "通过设置 ShowToolbar=\"true\" 显示工具栏", - "TreeViewShowToolbarDesc": "开启后鼠标悬浮节点时,右侧出现工具栏图标,可自定义工具栏功能;通过设置 OnUpdateCallbackAsync 回调方法进行数据的更新;通过设置 ToolbarTemplate 定义工具栏模板,如未设置时使用内部默认更改节点名称模板" - }, - "BootstrapBlazor.Server.Components.Samples.SwitchButtons": { - "SwitchButtonsTitle": "Switch Button 状态切换按钮", - "SwitchButtonsDescription": "点击按钮后切换状态", - "SwitchButtonsNormalTitle": "基础用法", - "SwitchButtonsNormalIntro": "点击组件自动切换状态", - "SwitchButtonsToggleStateTitle": "初始化状态", - "SwitchButtonsToggleStateIntro": "通过设置 ToggleState 初始化组件状态", - "SwitchButtonsToggleStateDescription": "可通过设置 ToggleStateChanged 回调方法获得当前组件状态", - "SwitchButtonsOnClickTitle": "点击回调方法", - "SwitchButtonsOnClickIntro": "通过设置 ToggleState 初始化组件状态", - "SwitchButtonsOnClickDescription": "OnClick 回调是 EventCallback 会自动刷新当前组件或者页面,若不需要刷新组件或者页面可使用 ToggleStateChanged" - }, - "BootstrapBlazor.Server.Components.Samples.Downloads": { - "DownloadsTitle": "Download 文件下载", - "DownloadsSubTitle": "用于直接下载物理文件", - "DownloadsTips1": "特别注意", - "DownloadsTips2": "Download 组件底层使用了 DotNetStreamReference 对象,这允许将文件数据流式传输到客户端,此方法会将整个文件加载到客户端内存中,若要下载相对较大的文件 (>= 250 MB),建议遵循 MVCUrl 下载", - "DownloadsExample": "示例", - "DownloadsExampleButtonText": "下载文件", - "DownloadsExampleRazorCodeTitle": "Razor 代码", - "DownloadsExampleRazorCodeContent": "", - "DownloadsExampleCodeTitle": "C# 代码", - "DownloadsExampleTestFile": "测试文件.txt", - "DownloadsExampleContent": "自行生成并写入的文本,这里可以换成图片或其他内容", - "DownloadNormalTitle": "普通下载", - "DownloadNormalIntro": "通过设置物理路径直接下载文件", - "DownloadNormalButtonText": "下载", - "DownloadFolderTitle": "文件夹下载", - "DownloadFolderIntro": "通过设置文件夹物理路径,将目录内文件打包压缩后下载", - "DownloadFolderButtonText": "下载", - "DownloadBigFileTitle": "大文件下载测试", - "DownloadBigFileIntro": "这里模拟生成了一个 100万行 的文本文件,大概 58M,可以自行测试", - "DownloadBigFileButtonText": "按钮设置 IsAsync 值为 true 进行异步下载操作", - "DownloadImageTitle": "获取图片并显示", - "DownloadImageIntro": "模拟直接由前端页面生成验证码或者上传图片不保存直接显示的情况。", - "DownloadImageButtonText": "由于测试使用了 wwwroot 下的文件,没有代码生成,wasm 无法访问 wwwroot 文件夹,故此测试只有ssr 模式可用。wasm 请自行测试。" - }, - "BootstrapBlazor.Server.Components.Samples.Dialogs": { - "Title": "Dialog 对话框组件", - "Description": "通过注入服务调用 Show 方法弹出窗口进行人机交互", - "Tip1": "组件使用介绍", - "Tip2": "注入服务 DialogService [传送门]", - "Tip3": "调用其 DialogOption 实例 OnCloseAsync 方法", - "Tip4": "级联参数关闭弹窗方法", - "Tip5": "关窗按钮", - "DialogTitle": "数据查询窗口", - "KeyboardTitle": "基本用法", - "KeyboardIntro": "通过设置 DialogOption 属性对模态框进行基本属性设置", - "ResizeTitle": "调整大小", - "ResizeIntro": "通过设置 ShowResize=\"true\" 可以通过鼠标拉动弹窗右下角进行窗口大小调整", - "CustomerHeaderTitle": "自定义标题栏", - "CustomerHeaderIntro": "通过设置 HeaderTemplate 属性对模态框标题栏进行自定义设置", - "ComponentTitle": "弹出复杂组件", - "ComponentIntro": "通过调用 Show<Counter>() 来弹出一个自定义组件", - "ComponentTip": "本例中弹出对话框中包含一个示例网站的自带 Counter 组件", - "BodyContextTitle": "弹窗传参", - "BodyContextIntro": "通过设置 BodyContext 属性值,可以把参数传递给弹窗中的组件内", - "BodyContextTip": "本例中点击按钮时设置 BodyContext 值为 我是传参,弹窗内容为自定义组件 DemoComponent,组件内通过级联参数获取到其值", - "ApplyTitle": "实战应用", - "ApplyIntro": "本例中通过传递一个主键,在弹窗内的组件通过此主键进行数据查询,并将结果显示在弹窗内", - "CloseDialogByCodeTitle": "代码关闭弹窗", - "CloseDialogByCodeIntro": "本例讲解如何通过代码打开与关闭弹窗", - "CloseDialogByCodeTip": "利用弹窗参数 DialogOption 实例方法 CloseDialogAsync 即可关闭弹窗", - "DisableHeaderCloseButtonTitle": "禁用 Header 中的关闭按钮", - "DisableHeaderCloseButtonIntro": "本例讲解如何通过代码打开与关闭弹窗", - "DisableHeaderCloseButtonTip": "设置参数 ShowHeaderCloseButton 禁止弹窗 Header 右侧显示 关闭 按钮", - "MultipleDialogTitle": "多级弹窗", - "MultipleDialogIntro": "点击弹窗内部按钮继续弹出对话窗", - "MultipleDialogTip1": "功能介绍", - "MultipleDialogTip2": "点击按钮弹出对话窗", - "MultipleDialogTip3": "切换弹窗内 Tab 组件的第三个标签页 角色管理", - "MultipleDialogTip4": "点击标签页中的弹窗继续弹出对话框", - "MultipleDialogTip5": "关闭当前对话框后之前打开的对话框 保持状态", - "MultipleDialogDesc": "目前多级弹窗已经实现,每个 ModalDialog 均可以独立设置 IsBackdrop IsKeyboard 参数,修复了上一个版本按下 ESC 弹窗全部消失问题", - "ModalDialogTitle": "模态对话框", - "ModalDialogIntro": "通过 ShowModal 方法弹出线程阻塞模式的对话框", - "ModalDialogTip1": "功能介绍", - "ModalDialogTip2": "点击按钮弹出模态弹窗", - "ModalDialogTip3": "更改模态弹窗内数值点击 确认 按钮时数值 更新", - "ModalDialogTip4": "更改模态弹窗内数值点击 取消 或者 关闭 按钮时数值 不更新", - "ModalDialogTip5": "再次点击弹出模态弹窗时,数值保持一致", - "EditDialogTitle": "编辑对话框", - "EditDialogIntro": "通过 ShowEditDialog 方法弹出保存对话框", - "EditDialogTip1": "功能介绍", - "EditDialogTip2": "点击按钮弹出编辑弹窗", - "EditDialogTip3": "通过 EditDialogOption 参数对弹窗进行设置", - "EditDialogTip4": "设计出发点通过给定 Model 或者 Items 自动生成带客户端验证的表单窗口", - "SearchDialogTitle": "搜索对话框", - "SearchDialogIntro": "通过 ShowSearchDialog 方法弹出保存对话框", - "SearchDialogTip1": "功能介绍", - "SearchDialogTip2": "点击按钮弹出搜索弹窗", - "SearchDialogTip3": "通过 SearchDialogOption 参数对弹窗进行设置", - "SearchDialogTip4": "设计出发点通过给定 Model 或者 Items 自动生成搜索窗口", - "SaveDialogTitle": "保存对话框", - "SaveDialogIntro": "通过 ShowSaveDialog 方法弹出保存对话框", - "SaveDialogTip1": "功能介绍", - "SaveDialogTip2": "点击按钮弹出保存弹窗", - "SaveDialogTip3": "设计出发点通过给定 TComponent 自动生成保存窗口,通过设置 saveCallback 在保存回调方法中进行数据处理,TComponent 泛型组件所需要参数可以通过 parameters 进行传递", - "SizeTitle": "对话框大小", - "SizeIntro": "通过设置 Size FullScreenSize 参数组合可以实现非常灵活的窗体大小控制", - "PrintDialogTitle": "打印按钮", - "PrintDialogIntro": "通过设置 ShowPrintButton 使 Header 上显示一个打印预览按钮", - "PrintDialogTip": "通过设置 PrintButtonText 更改 打印预览 按钮文字", - "ShowMaximizeButtonTitle": "全屏弹窗", - "ShowMaximizeButtonIntro": "通过设置 ShowMaximizeButton 使 Header 上显示一个窗口最大化按钮", - "ErrorLoggerTitle": "异常捕获", - "ErrorLoggerIntro": "通过 BootstrapBlazorRoot 内置 ErrorLogger 对弹窗内错误进行全局异常捕获", - "EmailTitle": "实战演练", - "EmailIntro": "模拟一个邮件应用,弹窗选择收件人后填入下方的收件人框。", - "EmailTip1": "功能介绍", - "EmailTip2": "点击按钮弹出模态弹窗", - "EmailTip3": "通过级联传参 BodyContext 传递 10 到弹窗中初始化数据", - "EmailTip4": "选中 Table 组件中的行数据,通过双向绑定对 SelectedRows 数据进行 更新", - "EmailTip5": "点击 选中 按钮通过双向绑定对 Emails 数据进行 更新", - "EmailTip6": "点击 取消 或者 关闭 按钮时 Emails不更新", - "EmailTip7": "再次点击弹出模态弹窗时,组件内行选中状态保持一致", - "EmailTip8": "弹窗中未选择用户时禁止关闭弹窗", - "EmailLabel": "收件人", - "Attribute": "DialogOption 属性", - "EmailDialogTitle": "选择收件人", - "EmailDialogButtonYes": "选择", - "EmailInput": "请输入 ...", - "HeaderToolbarTemplateTitle": "标题栏自定义按钮", - "HeaderToolbarTemplateIntro": "通过设置 HeaderToolbarTemplate 自定义 Header 中工具栏按钮", - "KeyboardTip": "通过设置 DialogOption IsKeyboard 参数,开启弹窗是否支持 ESC,请点击后面按钮设置后再点击 弹窗 按钮测试效果", - "KeyboardOpenDialogButton": "点击打开弹窗", - "CustomerHeaderOpenDialogButton": "弹窗", - "HeaderToolbarTemplateButtonText": "打印", - "HeaderToolbarTemplateDialogTitle": "自定义工具栏示例", - "HeaderToolbarTemplateToastContent": "打印按钮被点击,可以处理自己的业务逻辑", - "ComponentOpenDialogButton": "点击打开 Dialog", - "BodyContextOpenDialogButton": "Dialog 传参示例", - "ApplyDisplayText": "主键参数", - "ApplyOpenDialogButton": "弹窗", - "MultipleDialogButton": "弹窗", - "ModalDialogButton": "点击打开 Dialog", - "EditDialogButton": "编辑弹窗", - "SearchDialogButton": "搜索弹窗", - "SaveDialogButton": "保存弹窗", - "SizeButton": "全屏弹窗(< 1200px)", - "PrintDialogButton": "点击打开 Dialog", - "ShowMaximizeButton": "点击打开 Dialog", - "ErrorLoggerButton": "全局异常测试", - "ExportPdfDialogTitle": "带导出 Pdf 功能的弹窗", - "ExportPdfDialogIntro": "通过设置 ShowExportPdfButtonInHeader 使 Header 上显示一个导出 pdf 按钮", - "ExportPdfDialogTip": "可通过设置 ExportPdfButtonOptions 对更多参数进行设置", - "ExportPdfButton": "导出 Pdf 弹窗", - "ConfirmDialogButton": "弹出模态框", - "ConfirmDialogModalTitle": "文字确认模态框", - "ConfirmDialogModalContent": "

        这是一个文字确认模态框

        这是警告信息
        " - }, - "BootstrapBlazor.Server.Components.Samples.Dispatches": { - "Title": "Dispatch 消息分发", - "Description": "通过注入服务调用实例方法全站弹出窗口进行消息通知", - "Tips": "本组件使用注入服务的形式提供功能,通常用于全站消息推送等功能;使用本服务使需要在代码中进行 订阅取消订阅 操作", - "NormalTip": "本站通过此组件功能实现了代码仓库有提交时全站提示功能", - "NormalTips1": "1. 获得 注入服务 指定消息实体类", - "NormalTips2": "2. 订阅 消息通知", - "NormalTips3": "3. 页面或者组件销毁时 取消订阅", - "NormalTips4": "4. 通知实现方法 Notify", - "NormalTipsTitle": "通知标题", - "NormalTipsContent": "通知内容", - "NormalTips5": "本例中使用 Toast 组件进行通知,实战中可以使用其他任意内置消息组件或者自定义组件进行通知提示操作", - "DispatchTitle": "实战应用", - "DispatchIntro": "点击按钮进行消息分发,所有打开此页面的人均能收到此按钮分发的消息", - "DispatchTip": "由于本功能为全站推送通知,为防止恶意使用,下例中按钮通知后禁用 30 秒;消息注入代码在 MainLayout 模板中,注意订阅与分发的泛型对象要一致", - "DispatchNoticeButtonText": "通知", - "DispatchNoticeMessage": "测试通知消息" - }, - "BootstrapBlazor.Server.Components.Samples.Drawers": { - "Title": "Drawer 抽屉", - "Description": "有些时候, Dialog 组件并不满足我们的需求, 比如你的表单很长, 亦或是你需要临时展示一些文档, Drawer 拥有和 Dialog 几乎相同的 API, 在 UI 上带来不一样的体验", - "DrawerTips": "有时候我们的弹窗希望在某个容器内展开,可通过在特定容器内置 <Drawer/> 抽屉组件,然后设置参数 Position=\"absolute\" 相对定位来实现此需求;注意:父容器样式需要设置 position: relative;", - "NormalTitle": "基本用法", - "NormalIntro": "呼出一个临时的侧边栏, 可以从多个方向呼出", - "PlacementTitle": "点击遮罩关闭", - "PlacementIntro": "通过设置 IsBackdrop 属性为 true,点击遮罩部分时自动关闭抽屉", - "NoBackdropTitle": "无遮罩效果", - "NoBackdropIntro": "通过设置 ShowBackdrop=\"false\" 不显示遮罩,这种模式下可以与抽屉下面网页元素进行交互操作", - "DrawerServiceTitle": "调用服务打开抽屉", - "DrawerServiceIntro": "通过调用 DrawerService 服务打开抽屉弹窗", - "IsKeyboardTitle": "ESC 按键支持", - "IsKeyboardIntro": "组件默认使用 ESC 按键关闭抽屉弹窗,可通过 IsKeyboard=\"true\" 开启此功能", - "BodyScrollTitle": "页面滚动", - "BodyScrollIntro": "通过设置 BodyScroll 控制抽屉弹窗显示时是否允许滚动 Body 默认 false 不允许滚动", - "Open": "点我打开", - "Content": "抽屉内布局、组件等完全可以自定义", - "Close": "关闭抽屉", - "PlacementContent": "点击遮罩阴影部分自动关闭抽屉" - }, - "BootstrapBlazor.Server.Components.Samples.Consoles": { - "Title": "Console 控制台", - "Description": "控制台组件,一般用于后台任务的输出", - "NormalTitle": "基本用法", - "NormalIntro": "显示后台推送的消息", - "OnClearTitle": "可清空的控制台", - "OnClearIntro": "通过设置 OnClear 回调方法对数据集进行清空操作,由于本例与上例使用相同数据源,会导致上例中数据源更新延时", - "ColorTitle": "不同颜色的消息", - "ColorIntro": "通过设置 ConsoleMessageItemColor 参数进行对颜色的更改", - "IsAutoScrollTitle": "自动滚屏", - "IsAutoScrollIntro": "通过设置 ShowAutoScroll 属性值开启或者关闭自动滚屏功能", - "ShowAutoScrollDescription": "设置 ShowAutoScroll=\"true\" 显示自动滚屏选项", - "IsAutoScrollDescription": "通过设置 IsAutoScroll 设置开启自动滚屏", - "ConsoleMessageItem": "ConsoleMessageItem 属性", - "ShowAutoScrollTitle": "自动滚屏控制", - "ShowAutoScrollIntro": "通过设置 ShowAutoScroll 显示 Checkbox 控制是否自动滚动屏幕" - }, - "BootstrapBlazor.Server.Components.Samples.Speeches.Index": { - "SpeechTitle": "Speech 语音识别与合成", - "SpeechDescription": "通过麦克风语音采集转换为文字(STT),或者通过文字通过语音朗读出来(TTS)", - "SpeechDescription1": "本套组件内置 AzureBaidu 语音服务,本示例依赖于", - "SpeechDescription2": "使用本组件时需要引用其组件包", - "SpeechLiTitle": "实战体验", - "SpeechLi1": "点击 开始 按钮后,对着电脑说 请帮我把灯打开", - "SpeechLi2": "电脑接收到指令后,会询问 您确认要把灯打开吗?请您确认!", - "SpeechLi3": "您对着电脑说: 确认", - "SpeechLi4": "电脑执行指令,在下方文本框内输入 已经为您打开 文本", - "SpeechButtonText": "开始体验", - "SpeechGroupBoxTitle": "指令输出区", - "SpeechGroupBoxHeaderText": "指令面板", - "SpeechTips1": "1. 注册服务", - "SpeechTips1Text": "增加 Baidu 语音服务", - "SpeechTips2": "2. 使用服务", - "SpeechTips2Text1": "语音识别服务", - "SpeechTips2Text2": "语音合成服务" - }, - "BootstrapBlazor.Server.Components.Samples.Speeches.SpeechWaves": { - "SpeechWaveTitle": "SpeechWave 语音波形图", - "SpeechWavesDescription": "开始采集语音时显示的波形动态图", - "NormalTitle": "基础用法", - "NormalIntro": "显示波形图", - "ShowUsedTimeTitle": "显示时长", - "ShowUsedTimeIntro": "通过 ShowUsedTime", - "ValueTitle": "参数控制是否显示", - "ValueIntro": "通过 Show 值控制是否显示波形图", - "ValueButtonText1": "隐藏", - "ValueButtonText2": "显示", - "ShowAttr": "是否开始", - "ShowUsedTimeAttr": "是否显示时长", - "OnTimeoutAttr": "识别结束后超时回调方法", - "TotalTimeSecondAttr": "语音识别设置总时长超出过调用 OnTimeout 回调" - }, - "BootstrapBlazor.Server.Components.Samples.Speeches.Synthesizers": { - "SynthesizersTitle": "Synthesizer 语音合成", - "SynthesizersSubTitle": "将文本内容转化为语音", - "SynthesizerNormalTitle": "普通用法", - "SynthesizerNormalIntro": "点击开始合成后对文本内容进行语音合成" - }, - "BootstrapBlazor.Server.Components.Samples.Speeches.Recognizers": { - "RecognizersTitle": "Recognizer 语音识别", - "RecognizersSubTitle": "通过语音采集设备将语音转化为文本", - "RecognizerNormalTitle": "普通用法", - "RecognizerNormalIntro": "点击开始识别后对录入语音进行识别", - "RecognizerNormalDescription": "使用说明", - "RecognizerNormalTips": "点击 开始识别 后,脚本运行可能会提示要求录音权限,授权后开始讲话,5秒后(可配置)右侧文本框显示语音识别结果,请勿讲完话后直接点击

        结束识别

        " - }, - "BootstrapBlazor.Server.Components.Samples.DragDrops": { - "Title": "DragDrop 拖拽", - "Description": "用于拖拽使用", - "NormalTitle": "基本用法", - "NormalIntro": "简单拖拽", - "CopyItemTitle": "复制到新容器", - "CopyItemIntro": "使用CopyItem复制一份新的到新位置", - "AcceptsTitle": "限制拖入的内容", - "AcceptsIntro": "使用Accepts只允许左侧拖入10并且使用AllowsDrag限制2不能被拖动,使用MaxItems限制右侧最多拥有6个节点", - "EventTitle": "各种事件", - "EventIntro": "当拖入数量超限时OnItemDropRejectedByMaxItemLimit,当拖拽被禁止时OnItemDropRejected,返回底下的ItemOnReplacedItemDrop,返回放下的ItemOnItemDrop", - "A1": "最大数量,null为不限制", - "A2": "内容组件", - "M1": "是否运行拖放", - "M2": "节点是否允许被拖拽", - "M3": "复制一个新的 Item 到目标位置", - "M4": "针对 Item 添加特殊的 css class", - "M5": "Item 释放时的事件", - "M6": "Item 释放被拒绝时的事件", - "M7": "当 Item 在另一个 Item 上,不是空白处被释放时的事件", - "M8": "Item 因为 Dropzone 内最大数量超限被拒绝时的事件" - }, - "BootstrapBlazor.Server.Components.Samples.Labels": { - "LabelsTitle": "组件标签", - "LabelsDescription": "本套组件中有 ValidateForm EditorForm 以及多种继承 ValidateBase<TValue>表单组件,这些组件中有一套特殊的显示前置标签逻辑,现在我们统一的梳理一下:", - "LabelsDescriptionTips1": "ValidateForm 组件是 可验证的 表单组件,此组件内的表单组件会自动进行数据合规性检查,如果数据不合规将会阻止 提交(Submit) 动作,是数据提交中使用最最最频繁的组件", - "LabelsDescriptionTips2": "EditorForm 组件是普通的表单组件,此组件绑定 Model 后即可自动生成整个表单,大大减少重复性编码,外面套上 ValidateForm 即可开启 数据合规性检查 非常方便、简洁、高效", - "LabelsDescriptionTips3": "以 BootstrapInput 输入框组件为例,阐述一下是否显示 Label 逻辑", - "LabelsTips": "ShowLabel 的逻辑即就近原则,离自身越近的设置生效,如表单组件内置到 ValidateForm 组件中,即使 ValidateForm 设置 ShowLabel=true,表单组件自身设置 ShowLabel=false 时,标签最终结果为 不显示", - "LabelsNormalTitle": "单独使用", - "LabelsNormalIntro": "适用于数据录入", - "LabelsEditorFormTitle": "EditorForm 中使用", - "LabelsEditorFormIntro": "未套 ValidateForm 中使用", - "LabelsValidateForm1Title": "EditorForm 内置 ValidateForm 中使用", - "LabelsValidateForm1Intro": "内置 ValidateForm 中使用", - "LabelsValidateForm2Title": "ValidateForm 中使用", - "LabelsValidateForm2Intro": "默认自动开启显示标签", - "LabelsNormalDescription": "未使用双向绑定时", - "LabelsNormalTips1": "默认不会显示 Label", - "LabelsNormalTips2": "通过 ShowLabel 属性进行控制是否显示", - "LabelsNormalTips3": "设置 DisplayText 时显示内容", - "LabelsNormalTips4": "未设置时渲染一个无内容的 label 组件进行占位", - "LabelsNormalGroupBox1Title": "未双向绑定", - "LabelsNormalGroupBox1Tips1": "第一个文本框未进行任何设置,不显示标签", - "LabelsNormalGroupBox1Tips2": "第二个文本框设置 ShowLabel='true' DisplayText='' 显示无内容的占位标签", - "LabelsNormalGroupBox1Tips3": "第三个文本框设置 ShowLabel='true' DisplayText='Name' 显示设置的内容标签", - "LabelsNormalGroupBox1Tips4": "第四个文本框设置 ShowLabel='true' DisplayText='@@null' 显示无内容的占位标签", - "LabelsNormalDescription2": "使用双向绑定时", - "LabelsNormalGroupBox2Title": "双向绑定", - "LabelsNormalGroupBox2Tips1": "第一个文本框设置 @bind-Value='Dummy.Name',不显示标签", - "LabelsNormalGroupBox2Tips2": "第二个文本框设置 @bind-Value='Dummy.Name' ShowLabel='true' DisplayText='@Localizer[nameof(Foo.Address)]' 显示设置的内容", - "LabelsNormalGroupBox2Tips3": "第三个文本框设置 @bind-Value='Dummy.Name' ShowLabel='true' DisplayText='' 显示无内容占位标签", - "LabelsNormalGroupBox2Tips4": "第四个文本框设置 @bind-Value='Dummy.Name' ShowLabel='true' DisplayText='@null' 显示资源文件机制下的标签内容 Label", - "LabelsEditorFormDescription2": "显示标签
        未设置 EditorForm 组件的 ShowLabel 属性等同于设置为 true,所有组件 显示 标签
        ", - "LabelsEditorFormDescription1": "不显示标签
        设置 ShowLabel=\"false\",组件内的所有表单组件 不显示 标签
        ", - "EditorFormLabelAlignRight": "右对齐
        通过 LabelAlign=\"Alignment.Right\" 设置标签右对齐
        ", - "EditorFormLabelAlignCenter": "居中对齐
        通过 LabelAlign=\"Alignment.Center\" 设置标签居中对齐
        ", - "LabelsValidateForm1Description1": "显示标签
        未设置 EditorForm 组件的 ShowLabel 属性,未设置时等同于设置为 ShowLabel=\"true\",所有组件 显示 标签
        ", - "LabelsValidateForm1Description2": "不显示标签
        设置 ShowLabel=\"false\",组件内的所有表单组件 不显示 标签
        ", - "LabelsValidateForm2Description1": "显示标签
        未设置 EditorForm 组件的 ShowLabel 属性,未设置时等同于设置为 true,所有组件 显示 标签
        ", - "LabelsValidateForm2Description2": "不显示标签
        设置 ShowLabel=\"false\",组件内的所有表单组件 不显示 标签
        ", - "LabelsValidateForm2Description3": "显示标签
        设置样式 form-inline,组件内的所有表单组件标签前置
        ", - "ValidateFormAlignRight": "右对齐
        通过设置样式 form-inline-end 标签右对齐
        ", - "ValidateFormAlignCenter": "居中对齐
        通过设置样式 form-inline-center 标签居中对齐
        ", - "LabelsRowLabelWidthTitle": "样式设置标签宽度", - "LabelsRowLabelWidthIntro": "通过设置样式变量 --bb-row-label-width 控制标签宽度", - "LabelsWidthTitle": "参数设置标签宽度", - "LabelsWidthIntro": "通过设置变量 LabelWidth 控制标签宽度", - "LabelsWidthDescription": "组件 ValidateForm EditorForm BootstrapLabelSetting ValidateForm 均可以设置标签宽度值,组件采用 就近原则 来确定最终值", - "LabelsWidthCode1": "如上代码所示, 根据就近原则最终取值 180" - }, - "BootstrapBlazor.Server.Components.Pages.Install": { - "InstallTitle": "安装", - "InstallDesc": "开始使用 BootstrapBlazor 进行更快、更舒服的 .NET Web 开发", - "Template": "使用模板", - "TemplateDesc": "为了快速入门,您可以使用我们的 dotnet 模板。它们基于 Microsoft Web App 模板,但已修改为包含 BootstrapBlazor 组件,请查看 [传送门]", - "Manual": "手动安装", - "ManualDesc": "如果您已经有一个项目并希望从默认模板或工作应用程序向其中添加 BootstrapBlazor。", - "Step1": "1. 安装包", - "Step1Desc": "通过 NuGet 包管理器找到该包或使用以下命令安装它。", - "Step2": "2. 添加导入", - "Step2Desc": "_Imports.razor 文件并添加以下内容", - "Step3": "3. 添加引用", - "Step3Desc": "将以下内容添加到您的 HTML 头部部分,它是 App.razor _Layout.cshtml _Host.cshtml index.html,取决于您运行的是 Server 还是 WebAssembly", - "Step4": "4. 添加脚本", - "Step4Desc": "结尾位置添加如下内容它应与默认 blazor 脚本位于同一位置", - "Step5": "5. 删除原 Bootstrap 资源", - "Step5Desc": "删除 bootstrap 样式,请同时删除 wwwroot 文件夹下的 bootstrapopen-iconic 文件夹", - "Step6": "6. 注册服务", - "Step6Desc": "Program.cs 文件中注入 BootstrapBlazor 服务", - "Step7": "7. 添加 BootstrapBlazorRoot 组件", - "Step7Desc": "在母版页中添加 BootstrapBlazorRoot 组件", - "MotronicDesc": "// Motronic 主题可选建议添加", - "BootstrapStyle": "// 组件样式已集成 Bootstrap 最新版", - "FontAwesomeCss": "// FontAwesome 字体图标样式 注意需要引用 BootstrapBlazor.FontAwesome 包", - "OtherText": "其他" - }, - "BootstrapBlazor.Server.Components.Components.Video": { - "H1": "B 站相关视频链接", - "L1": "[传送门]", - "L2": "暂无" - }, - "BootstrapBlazor.Server.Components.Components.UpdateIntro": { - "H1": "组件库 更新到", - "B1": "首先感谢您对本套组件的关注,目前本套组件已经拥有将近 200 个组件,本组件是基于", - "B2": "企业级组件库,提供如布局、导航、表单、数据、通知、图标、语音等几大类通用组件,每一个组件都经过精心设计,具有模块化、响应式和优秀的性能。从更多实际场景出发,满足多种场景的需求,极大的减少开发者时间成本,大大缩短开发周期,大幅提高开发效率,并提供了一套", - "B3": "通用权限管理系统", - "B4": "示例工程", - "B5": "产品是由一支专业的全职技术团队进行维护,高效的响应速度,多元化的解决方案,长期提供支持,并提供企业级支持。目前已在多家知名国企内部使用,项目最高在线 1200 人稳定运行。右侧为国内人数最多的中文 Blazor QQ 社区二维码,欢迎扫描加群。", - "P1": "组件更新到", - "P2": "更新日志", - "P3": "传送门", - "P4": "如果组件给您带来了方便,请您帮忙给项目点亮" - }, - "BootstrapBlazor.Server.Components.Pages.Localization": { - "Title": "本地化", - "P1": "本地化是为给定语言和地区定制应用程序的过程.", - "P2": "组件允许您将其 UI 元素转换为所需的语言。这包括按钮、过滤器操作符属性等文本。组件内部默认使用当前请求", - "P3": "文化语言,本文将向您展示如何在应用程序中使用此功能", - "T1": "阅读以下知识点前请先查看", - "T2": "微软官方文档", - "T3": "由于", - "T4": "模式无法获取系统语言文化信息,默认文化信息为", - "N1": "本地化在组件中的工作原理", - "N2": "组件额外支持使用", - "N3": "类型的键值信息作为资源文件,将其解析为", - "N4": "中呈现的字符串", - "N5": "包自带以下资源文件", - "N6": "中文(zh)", - "N7": "英语(en)", - "N8": "德语(de)", - "N9": "葡萄牙语(pu)", - "N10": "组件内置本地化语言回退机制,如请求文化为", - "N11": "时,如未提供相对应的文化资源文件时,内置逻辑通过父级文化进行尝试本地化,以", - "N12": "为例回退机制如下", - "N13": "到", - "N14": "如果设置的本地化语言未提供资源文件回落后仍无法找到资源文件后,使用", - "N15": "参数设置的文化信息进行本地化,默认为", - "N16": "特别注意", - "N17": "由于某些系统如", - "N18": "等程序运行后线程无法获得文化信息,可以通过配置文件设置默认文化信息", - "N19": "开启本地化功能", - "N20": "配置文件", - "N21": "通过", - "N22": "设置回退文化信息,即未找到当前请求的文化信息时使用此配置文化,通过", - "N23": "设置支持的文化集合", - "N24": "启用 .NET 核心本地化服务", - "N25": "增加 Bootstrap Blazor 组件", - "N26": "增加多语言支持配置信息", - "N27": "启用本地化", - "N28": "增加 BootstrapBlazor 组件", - "N29": "增加本地化服务配置信息", - "N30": "启用本地化中间件并设置支持的文化信息", - "N31": "实现 UI 本地化信息存储(例如,cookie)", - "N32": "添加允许用户更改本地化的 UI", - "N33": "请选择语言", - "N34": "使用 api 方式 适用于 Server-Side 模式", - "N35": "附加", - "N36": "资源文件", - "N37": "组件库即支持微软默认的", - "N38": "格式资源,也支持嵌入式", - "N39": "格式资源,以及特定物理", - "N40": "文件", - "N41": "资源文件为合并关系,寻址规则优先级为", - "N42": "微软 resx 嵌入式资源文件", - "N43": "外置 json 物理文件", - "N44": "json 嵌入式资源文件", - "N45": "内置 json 资源文件", - "N46": "忽略文化信息丢失日志", - "N47": "设置 RESX 格式多语言资源文件 如 Program.{CultureName}.resx", - "N48": "设置 Json 格式嵌入式资源文件", - "N49": "设置 Json 物理路径文件", - "N50": "或者使用服务扩展方法", - "N51": "忽略本地化键值文化信息丢失", - "N52": "附加自己的 json 多语言文化资源文件 如 zh-TW.json", - "N53": "设置 Json 物理路径文件", - "N54": "启用 .NET 核心本地化服务", - "N55": "增加 BootstrapBlazor 组件", - "N56": "增加本地化", - "N57": "实现 UI 本地化信息存储(例如,localStorage)", - "N58": "与 Server-Side 一致", - "N59": "更改默认语言设置", - "N60": "设置默认文化为 zh-CN", - "N61": "配置是否显示缺失本地化资源信息", - "N62": "增加 BootstrapBlazor 服务", - "N63": "忽略本地化键值文化信息丢失", - "LocalizationFileDesc": "组件内置本地化资源文件为 en zh 由网友提供的其他本地化资源文件 de es pt zh-TW 放置在项目文件夹 localization 内,可自行下载通过注入服务引入到项目中", - "AdditionalJsonFile": "额外本地化语言 json 文件", - "ES": "西班牙语(es)", - "TW": "中國台灣(zh-TW)" - }, - "BootstrapBlazor.Server.Components.Pages.Template": { - "Title": "项目模板", - "SubTitle": "Bootstrap Blazor App 模板", - "P1": "为了方便大家利用这套组件快速搭建项目,作者制作了 项目模板(Project Templates,使用 dotnet new 命令行模式,使用步骤如下:", - "P2": "1. 安装项目模板", - "P3": "2. 创建工程", - "P4": "创建工程后在当前文件夹内会生成 BootstrapBlazorApp 解决方案,src 目录内包含 Server-Side Wasm 两种类型的工程,均可以直接 F5 运行", - "P5": "3. 更新项目模板", - "P6": "注:此命令为检查是否有可用于当前安装的模板包的更新并安装这些更新。", - "P7": "4. 卸载项目模板", - "TemplateList": "模板列表", - "TemplateDesc": "模板安装好后,新建项目时搜索 Bootstrap 会列出如下模板候选项" - }, - "BootstrapBlazor.Server.Components.Pages.Globalization": { - "Title": "全球化", - "SubTitle": "ASP.NET Core Blazor 全球化", - "P1": "阅读以下知识点前请先查看 微软官方文档" - }, - "BootstrapBlazor.Server.Components.Pages.Theme": { - "H1": "组件主题", - "H2": "测试", - "P1": "目前网站主题支持如下", - "P2": "Motronic (已集成)", - "P3": "LayUI (完善中)", - "P4": "Bluma (完善中)", - "P5": "Ant Design (完善中)", - "P6": "主题切换", - "P7": "如切换为", - "P8": "主题,则请在原有", - "P9": "内增加样式文件如下", - "P10": "增加此行" - }, - "BootstrapBlazor.Server.Components.Samples.Dividers": { - "Title": "Divider 分割线", - "Description": "区隔内容的分割线。", - "NormalTitle": "基础用法", - "NormalIntro": "对不同章节的文本段落进行分割。", - "AlignmentTitle": "设置文案", - "AlignmentIntro": "可以在分割线上自定义文案内容。", - "IconTitle": "设置图标", - "IconIntro": "可以在分割线上自定义文案内容。", - "VerticalTitle": "垂直分割", - "VerticalIntro": "进行垂直显示分割线", - "ChildContentTitle": "自定义内容", - "ChildContentIntro": "通过设置 ChildContent 内容可以自定义任意内容", - "Desc1": "设置分割线显示文字", - "Desc2": "设置分割线显示图标", - "Desc3": "设置分割线显示文字对齐方式", - "Desc4": "设置分割线是否为垂直分割", - "Desc5": "ChildContent 模板", - "NormalContent1": "青春是一个短暂的美梦, 当你醒来时, 它早已消失无踪", - "NormalContent2": "少量的邪恶足以抵消全部高贵的品质, 害得人声名狼藉", - "AlignmentDivider1": "少年包青天", - "AlignmentDivider2": "英雄联盟", - "AlignmentDivider3": "学习语录", - "AlignmentContent1": "头上一片晴天,心中一个想念", - "AlignmentContent2": "骑士归来之时,断剑重铸之日", - "AlignmentContent3": "一只萌萌哒图标", - "AlignmentContent4": "学习使我快乐", - "IconContent1": "头上一片晴天,心中一个想念", - "IconContent2": "骑士归来之时,断剑重铸之日", - "IconContent3": "一只萌萌哒图标", - "IconContent4": "学习使我快乐", - "IconBookmark": "书签", - "VerticalContent1": "雨纷纷", - "VerticalContent2": "旧故里", - "VerticalContent3": "草木深", - "VerticalDivider": "分割线", - "ChildContent1": "头上一片晴天,心中一个想念", - "ChildContent2": "骑士归来之时,断剑重铸之日", - "DividerChildContent": "我是自定义内容 div 元素" - }, - "BootstrapBlazor.Server.Components.Samples.Scrolls": { - "ScrollTitle": "Scroll 滚动条", - "ScrollDescription": "给高度或者宽度超标的组件增加滚动条", - "ScrollTips": "其元素必须拥有固定高度时才可呈现滚动条,可以通过外套元素设置其 height 属性", - "ScrollToBottom": "滚动到底部", - "ScrollNormalTitle": "普通用法", - "ScrollNormalIntro": "给组件增加滚动条,通过设置 Height 高度值为 200px 使内部子元素高度为 500px 时出现滚动条", - "Desc1": "子组件", - "Desc2": "组件高度", - "ScrollNormalDescription": "请滚动右侧滚动条", - "ScrollNormalBottom": "我是最底端" - }, - "BootstrapBlazor.Server.Components.Samples.LayoutPages": { - "H1": "整页面级别组件", - "P1": "通过内置组件", - "P2": "进行整页面布局,可通过", - "P3": "或者安装", - "P4": "项目插件选择", - "P5": "Bootstrap Blazor 项目模板", - "P6": "即可自动生成,详细文档请点击", - "P7": "传送门", - "P8": "特别注意", - "P9": "组件开启", - "P10": "多标签", - "P11": "模式后,如果有", - "P12": "Razor 组件", - "P13": "在额外的程序集中时,请正确设置", - "P14": "属性值,以便标签组件内路由正确解析,相关文档", - "P15": "传送门", - "P16": "布局调整", - "P17": "显示页脚", - "P18": "多标签", - "P19": "单页", - "P20": "固定调整", - "P21": "固定标签", - "P22": "固定页头", - "P23": "固定页脚", - "P24": "收缩调整", - "P25": "请点击", - "P26": "中的 按钮", - "P27": "高度调整", - "P28": "视图高度", - "P29": "Tab 测试", - "P30": "点击", - "P31": "测试", - "P32": "测试", - "P33": "按钮后,会增加一个新的标签页", - "P34": "以代码的形式导航到新标签页", - "P35": "导航" - }, - "BootstrapBlazor.Server.Components.Samples.Layouts": { - "LayoutsTitle": "Layout 布局", - "LayoutsDescription1": "用于布局的容器组件,方便快速搭建页面的基本结构:", - "LayoutsDescription1_Container": "外层容器。当子元素中包含 HeaderFooter 时,全部子元素会垂直上下排列,否则会水平左右排列。", - "LayoutsDescription1_Header": "顶栏容器", - "LayoutsDescription1_Side": "侧边栏容器", - "LayoutsDescription1_Main": "主要区域容器", - "LayoutsDescription1_Footer": "底栏容器", - "LayoutsDescription2": "组件概述", - "LayoutsDescription2_Layout": "布局容器,其下可嵌套 Header Sider Main FooterLayout 本身,可以放在任何父容器中", - "LayoutsDescription2_Header": "顶部布局,自带默认样式,其下可嵌套任何元素", - "LayoutsDescription2_Side": "侧边栏,自带默认样式及基本功能,其下可嵌套任何元素", - "LayoutsDescription2_Main": "内容部分,自带默认样式,其下可嵌套任何元素", - "LayoutsDescription2_Footer": "底部布局,自带默认样式,其下可嵌套任何元素", - "LayoutsTips1": " 以上组件采用了 flex 布局,使用前请确定目标浏览器是否兼容。此外,Layout 的子元素只能是后四者,后四者的父元素也只能是 Layout", - "LayoutsTips2": "注意事项", - "LayoutsTips3": "为了方便大家利用这套组件快速搭建项目,作者制作了 项目模板(Project Templates,使用 dotnet new 命令行,与 Bootstrap Blazor App Extension 扩展插件 通过 Visual Studio 新建项目创建,具体使用方法与步骤请点击 传送门", - "LayoutsDemosTitle": "常见页面布局", - "LayoutsUpAndDownTitle": "上中下布局", - "LayoutsUpAndDownIntro": "常见于互联网网站布局", - "LayoutsMiddleLeftRightTitle": "中部左右结构布局", - "LayoutsMiddleLeftRightIntro": "中部采用左右结构,多用于后台管理网站布局,当布局模板中增加 Side 组件时默认采用上中下,中部采用左右结构布局", - "LayoutsLeftRightTitle": "左右结构", - "LayoutsLeftRightIntro": "右侧采用上中下结构,多用于后台管理网站布局,通过设置 IsFullSide 属性值来控制布局为左右结构", - "LayoutsCustomPercentTitle": "自定义侧边栏宽度支持百分比", - "LayoutsCustomPercentIntro": "通过设置 SideWidth 属性控制侧边栏宽度,支持百分比写法,设置 0 时关闭设置宽度功能,采用内部子控件撑满宽度特性", - "LayoutsAppTitle": "实战应用", - "LayoutsAppIntro": "实际项目中的例子", - "LayoutsPageTitle": "整页面级别的组件", - "LayoutsPageIntro": "通过 IsPage 对整页面布局", - "LayoutsPageTips1": "通过设置 IsPage 属性设置 Layout 组件是否掌控整页面级别的布局方式,设置为 true 后,本组件采用整屏布局", - "LayoutsPageHrefTitle": "整页面组件生成器", - "Layouts_Header_Description": "页头组件模板", - "Layouts_Side_Description": "侧边栏组件模板", - "Layouts_SideWidth_Description": "侧边栏宽度,支持百分比,设置 0 时关闭宽度功能", - "Layouts_Main_Description": "内容组件模板", - "Layouts_Footer_Description": "页脚组件模板", - "Layouts_Menus_Description": "整页面布局时侧边栏菜单数据集合", - "Layouts_IsFullSide_Description": "侧边栏是否占满整个左边", - "Layouts_IsPage_Description": "是否为整页面布局", - "Layouts_IsFixedFooter_Description": "是否固定 Footer 组件", - "Layouts_IsFixedHeader_Description": "是否固定 Header 组件", - "Layouts_ShowCollapseBar_Description": "是否显示收缩展开 Bar", - "Layouts_ShowSplitBar_Description": "是否显示左右分割栏", - "Layouts_SidebarMinWidth_Description": "侧边栏最小宽度", - "Layouts_SidebarMaxWidth_Description": "侧边栏最大宽度", - "Layouts_ShowFooter_Description": "是否显示 Footer 模板", - "Layouts_ShowGotoTop_Description": "是否显示返回顶端按钮", - "Layouts_UseTabSet_Description": "是否开启多标签模式", - "Layouts_IsFixedTabHeader_Description": "是否固定多标签 Header", - "Layouts_AdditionalAssemblies_Description": "额外程序集合,传递给 Tab 组件使用", - "Layouts_OnCollapsed_Description": "收缩展开回调委托", - "Layouts_OnClickMenu_Description": "点击菜单项时回调委托", - "Layouts_TabDefaultUrl_Description": "设置 Tab 组件默认标签页", - "Layouts_IsAccordion_Description": "是否设置手风琴菜单", - "LayoutsAppTips1": "实际使用过程中,侧边栏一般有两种用法", - "LayoutsAppTips2": "侧边栏充满整个屏幕,当菜单总体高度超出屏幕后出现滚动条", - "LayoutsAppTips3": "侧边栏不做处理高度由内容自动撑开", - "LayoutsAppTips4": "由于存在多种运用方式,所以本组件未进行封装,由自己决定如何进行布局,下面是实际运用中的实战示例", - "LayoutsAppTips5": "为了方便大家学习与比较以下实战示例中尽量使用 style 内联样式", - "LayoutsAppTips6": "本例点击左侧菜单展开后出现滚动条", - "LayoutsAppTips7": "右侧面板中可用区域默认为全部,适用于带 Tab 组件的布局,本例中为了美观 Main 模板中内置了一个 div 并且设置样式为 style='padding: 1rem;'", - "LayoutsAppTips8": "本例点击左侧菜单展开后不出现滚动条会撑开父容器高度", - "LayoutsAppTips9": " Layout 组件与 Tab 组件配合使用实战示例请参阅 Tab 组件", - "ShowTabContextMenu": "是否显示右键菜单", - "BeforeTabContextMenuTemplate": "前面右键菜单模板", - "TabContextMenuTemplate": "右键菜单后续模板", - "TabContextMenuRefreshIcon": "右键菜单刷新按钮图标", - "TabContextMenuCloseIcon": "右键菜单关闭按钮图标", - "TabContextMenuCloseOtherIcon": "右键菜单关闭其他按钮图标", - "TabContextMenuCloseAllIcon": "右键菜单关闭全部按钮图标", - "OnBeforeShowContextMenu": "右键菜单弹出前回调方法" - }, - "BootstrapBlazor.Server.Components.Samples.Footers": { - "FootersTitle": "Footer 页脚组件", - "FootersDescription": "显示在网页的最下方,提供返回顶端按钮", - "FootersTips": "Footer 组件使用时注意样式表 position 属性的设置", - "FooterNormalTitle": "基础用法", - "FooterNormalIntro": "传递滚动条组件的 ID 给页脚组件", - "FootersContent1": "底部显示 Footer 组件,点击返回顶端时页面自动滚动回顶端", - "FootersContent2": "本示例传递的是组件客户端 ID", - "Desc1": "页脚组件显示的文字", - "Desc2": "页脚组件控制的滚动条组件 ID", - "ShowGotoDesc": "是否显示右侧导航小组件", - "ChildContentDesc": "子组件模板", - "FooterShowGotoTitle": "是否显示 Goto 导航", - "FooterShowGotoIntro": "通过设置 ShowGoto 参数,关闭 Footer 右侧导航小组件", - "FooterChildContentTitle": "自定义内容", - "FooterChildContentIntro": "通过设置 ChildContent 参数自定义组件内部显示内容" - }, - "BootstrapBlazor.Server.Components.Samples.Repeaters": { - "RepeaterTitle": "Repeat 组件", - "RepeaterDescription": "用户多个重复区域的组件", - "RepeaterNormalTitle": "基础用法", - "RepeaterNormalIntro": "通过设置 ItemTemplate 模板自定义重复区域内容", - "RepeaterLoadingTitle": "数据加载", - "RepeaterLoadingIntro": "未提供 Items 时通过设置 ShowLoading 控制是否显示正在加载提示信息,可通过 LoadingTemplate 自定义加载信息", - "RepeaterEmptyTitle": "空数据", - "RepeaterEmptyIntro": "数据集合 Items 为空时 ShowEmpty 控制是否显示无数据提示信息,可通过 EmptyTemplate 自定义空数据模板,可通过 EmptyText 自定义空数据文字信息", - "RepeaterContainerTitle": "容器模板", - "RepeaterContainerIntro": "通过设置 ContainerTemplate 容器模板,模板内重复部分仍然通过 ItemTemplate 渲染,本例中通过 ContainerTemplate 将组件渲染成 Table" - }, - "BootstrapBlazor.Server.Components.Samples.Rows": { - "RowsTitle": "Row布局组件", - "RowsDescription": "可简单设置一行显示的组件数量", - "RowCommonTitle": "放置普通控件", - "RowCommonIntro": "将自己的组件放到 Row 内部即可", - "RowCommonDescription": "行显示 3 个,采用 Row", - "RowFormInlineTitle": "放置表单控件(内联)", - "RowFormInlineIntro": "当放置表单控件时,可以指定 RowTypeInline,会将 Label 显示在左边,控件充满剩余空间", - "RowFormTitle": "放置表单控件", - "RowFormIntro": "当放置表单控件时,可以指定 RowTypeNormal,会将 Label 显示在上边,控件充满", - "RowFormInlineDescription": "本例中 Row 组件内置于 ValidateForm 组件内,自动增加前置 Label 标签", - "RowNestedTitle": "嵌套使用", - "RowNestedIntro": "Row 组件支持嵌套使用,比如下面最外层的 Row 设置一行显示两个控件,第一个是 TextBox,第二个还是 Row,第二个 Row 继续设置显示两个控件", - "RowSpanTitle": "跨列功能", - "RowSpanIntro": "Row 组件可以通过指定 ColSpan 值设置跨列数,组合这些功能可以实现复杂布局", - "RowSpanTips1": "行显示 4 个", - "RowSpanTips2": "行显示 2 个", - "RowSpanTips3": "行显示 4 个 Address 占 2 列", - "RowSpanTips4": "行显示 4 个,第二个组件 ColSpan 设置为 3", - "RowSpanTips5": "行显示 2 个,第一个组件 ColSpan 设置为 3", - "RowSpanTips6": "行显示一个组件", - "RowsItemsPerRow": "设置一行显示几个控件", - "RowsRowType": "设置排版格式,子Row如果不指定,会使用父Row的设置", - "RowsColSpan": "设置子Row跨父Row列数", - "RowsMaxCount": "设置行内最多显示的控件数", - "Normal": "正常", - "Inline": "行内" - }, - "BootstrapBlazor.Server.Components.Samples.Skeletons": { - "SkeletonsTitle": "Skeleton 骨架屏", - "SkeletonsDescription": "在需要等待加载内容的位置提供一个占位图形组合", - "SkeletonsTipsTitle": "何时使用", - "SkeletonsTips1": "网络较慢,需要长时间等待加载处理的情况下", - "SkeletonsTips2": "图文信息内容较多的列表/卡片中", - "SkeletonsTips3": "只在第一次加载数据的时候使用", - "SkeletonsTips4": "可以被 Spin 完全代替,但是在可用的场景下可以比 Spin 提供更好的视觉效果和用户体验", - "SkeletonsImgTitle": "图片骨架屏", - "SkeletonsImgIntro": "适用于头像、图片等类型加载时显示", - "SkeletonsImgDescription": "通过设置 Circle 属性可以设置为圆形显示", - "SkeletonsParagraphTitle": "段落骨架屏", - "SkeletonsParagraphIntro": "适用于大段文字等类型加载时显示", - "SkeletonsParagraphDescription": "默认段落骨架屏仅显示三行,如果需要多行占位,请放置多个 SkeletonParagraph 即可", - "SkeletonsFormTitle": "表单骨架屏", - "SkeletonsFormIntro": "适用于编辑表单加载时显示", - "SkeletonsTableTitle": "表格骨架屏", - "SkeletonsTableIntro": "适用于编辑表格加载时显示", - "SkeletonsTreeTitle": "树骨架屏", - "SkeletonsTreeIntro": "适用于树组件加载时显示" - }, - "BootstrapBlazor.Server.Components.Pages.Breakpoints": { - "Heading": "断点", - "Heading1": "断点是可自定义的宽度,它决定了响应式布局在 Bootstrap 中跨设备或视口大小的行为方式", - "Paragraph1": "可用断点", - "Paragraph2": "Bootstrap 包括六个默认断点,有时称为网格层,用于响应式构建", - "TableHeading1": "断点名称", - "TableHeading2": "类后缀", - "TableHeading3": "阈值", - "Name1": "超小", - "Name2": "小号", - "Name3": "中号", - "Name4": "大号", - "Name5": "超大", - "Name6": "特大", - "Amount": "像素", - "Footer1": "组件内默认已经适配特大屏,很多默认都是", - "Footer2": "如", - "Footer3": "默认弹窗大小为\"," - }, - "BootstrapBlazor.Server.Components.Pages.Layout": { - "Heading": "组件分层", - "Para1": "由于弹窗组件比较多,再某些场景下会使用多种弹窗进行组合,本章节讲述如何对组件进行分层管理。下面是", - "Para2": "提供的内置", - "Para3": "值", - "Para4": "本套组件额外增加了", - "Para5": "各组件分层如下", - "Para6": "测试环节", - "Button": "测试" - }, - "BootstrapBlazor.Server.Components.Samples.GlobalException": { - "Title": "全局异常", - "Introduce": "

        增加组件 ErrorLogger 通过本组件可以对全局的日志、异常进行统一输出;目前由于 Blazor 框架并未提供一个类似 MVC全局异常 整体解决方案;通过使用 ErrorLogger 组件 无需任何额外代码 即可进行全局异常捕获与处理

        ", - "H1": "使用方法", - "Step1": "1. Startup 文件中增加 AddLogging 开启 net core 系统日志功能,支持其他第三方 Logger 组件", - "Step1Introduce": "使用 AddFileLogger 需要引用 Longbow.Logging 组件包 [传送门]", - "Step2": "2. 使用 BootstrapBlazorRoot 已经内置默认开启,可通过设置 EnableErrorLoggerfalse 关闭", - "Step3": "3. 代码中输入错误信息", - "Step4": "4. 控制台输出可见日志信息", - "Step5": "5. 控制是否显示错误明细信息", - "Step5Intro": "通过配置文件 appsettings.json,开发环境下为 appsettings.Development.json,未设置时默认为 false 不显示,默认行为仅做弹窗提示防止敏感信息暴露", - "Block1Title": "测试", - "Block1Intro": "本功能是通过代码产生异常信息,由全局捕获组件统一处理", - "ExceptionTestIntroduce": "本例代码中写了一个除以零的错误代码,并且未使用 try/catch 对异常进行捕获,系统并不会崩溃导致不可用,
        • Debug 模式下会显示错误的 描述信息堆栈信息
        • Release 模式下默认使用 Toast 进行弹窗提示
        ", - "ButtonText": "测试", - "Block2Title": "自定义错误处理", - "Block2Intro": "通过设置 OnErrorHandleAsync 回调方法,设置自定义异常处理逻辑", - "DialogTitle": "弹窗中异常捕获", - "DialogIntro": "点击按钮弹出弹窗,弹窗内按钮触发异常,错误显示在弹窗内", - "DialogText": "弹窗", - "PageErrorTitle": "页面异常捕获", - "PageErrorIntro": "点击按钮导航到页面生命周期内出错的页面,错误显示在当前页面,不影响菜单以及整体页面布局" - }, - "BootstrapBlazor.Server.Components.Pages.GlobalOption": { - "Title": "全局配置", - "SubTitle": "组件库提供一种对当前应用程序中所有组件进行配置的方法,通过 BootstrapBlazorOptions 全局配置类实现此功能" - }, - "BootstrapBlazor.Server.Components.Samples.Splits": { - "SplitsTitle": "Split 面板分割", - "SplitsNormalTitle": "基础用法", - "SplitsNormalIntro": "左右分割", - "SplitsPanel1": "我是左侧面板", - "SplitsPanel2": "我是右侧面板", - "SplitsPercentTitle": "设置初始化百分比", - "SplitsPercentIntro": "通过设置 Basis 属性来设置初始化位置占比", - "SplitsVerticalTitle": "垂直分割", - "SplitsVerticalIntro": "通过设置 IsVertical 属性控制垂直分割面板", - "SplitsPanel3": "我是上部面板", - "SplitsPanel4": "我是底部面板", - "SplitsNestedTitle": "嵌套使用", - "SplitsNestedIntro": "通过嵌套 Split 组件进行组合布局", - "SplitsMinimumTitle": "最小值", - "SplitsMinimumIntro": "通过设置 FirstPaneMinimumSize SecondPaneMinimumSize 值限制面板最小尺寸,支持所有单位。本例中设置左右面板最小值均为 10%", - "SplitsPanel5": "上边面板", - "SplitsPanel6": "下边面板", - "SplitsPanel7": "右边面板", - "SplitsCollapsibleTitle": "折叠/展开", - "SplitsCollapsibleIntro": "通过设置 IsCollapsible 属性来设置是否可以折叠面板", - "SplitsPanel8": "上边面板", - "SplitsPanel9": "下边面板", - "SplitsPanel10": "右边面板", - "SplitsIsVertical": "垂直分割", - "SplitsBasis": "第一个窗格位置占比", - "SplitsFirstPaneTemplate": "第一个窗格模板", - "SplitsSecondPaneTemplate": "第二个窗格模板", - "SplitsIsCollapsible": "是否可以展开收起面板", - "SplitsIsKeepOriginalSize": "折叠后恢复时是否保持原始大小", - "SplitsShowBarHandle": "是否显示拖动条", - "SplitsBarHandleShow": "显示拖动栏", - "SplitsBarHandleHide": "隐藏拖动栏", - "SplitsOnResizedAsync": "面板尺寸改变时回调方法", - "SplitsCollapsibleTrue": "显示调整按钮", - "SplitsCollapsibleFalse": "隐藏调整按钮", - "SplitsFirstPaneMinimumSize": "第一个窗格最小尺寸支持任意单位如 10px 20% 5em 1rem 未提供单位时默认为 px", - "SplitsSecondPaneMinimumSize": "第二个窗格最小尺寸支持任意单位如 10px 20% 5em 1rem 未提供单位时默认为 px", - "SplitSetLeftTitle": "代码设置面板宽度", - "SplitSetLeftIntro": "通过组件实例方法 SetLeftWidth 设置左侧/上侧面板宽度,右侧/下侧面板宽度自适应" - }, - "BootstrapBlazor.Server.Components.Samples.Dropdowns": { - "Title": "Dropdown 下拉菜单", - "Description": "将动作或菜单折叠到下拉菜单中", - "NormalTitle": "基础用法", - "NormalIntro": "使用 TagName='a' 开启带有 button 标签的下拉表", - "NullTitle": "Dropdown 空下拉菜单", - "NullIntro": "允许空 Items 存在的下拉菜单", - "ColorTitle": "带有颜色的下拉框", - "ColorIntro": "提供各种颜色的警告信息框 引用 Color='Color.Primary' 等颜色及样式类来定义下拉菜单的外在表现", - "SplitTitle": "分裂式按钮下拉菜单", - "SplitIntro": "可用与单个按钮下拉菜单近似的标记创建分裂式下拉菜单,添加 ShowSplit='true' 插入此符号为下拉选项作适当的间隔(距)处理。", - "IsAsyncTitle": "异步按钮", - "IsAsyncIntro": "通过设置 IsAsync 属性按钮是否为 异步请求按钮,默认为 false注意 需要设置 ShowSplit=\"true\" 时才生效", - "SizeTitle": "尺寸大小定义", - "SizeIntro": "下拉菜单有各种大小规格可以选用 Size 属性,包括预设及分裂式按钮下拉菜单。", - "DirectionTitle": "展开方向", - "DirectionIntro": "增加 Direction='Direction.Dropup' 样式,使下拉菜单向上展开。", - "AlignmentTitle": "菜单对齐", - "AlignmentIntro": "默认情况下,通过设置 MenuAlignment=Alignment.Right 使下拉菜单右侧对齐", - "ItemsTitle": "绑定数据源", - "ItemsIntro": "点击右侧按钮时,下拉框内菜单项会增加", - "RadioTitle": "绑定数据源", - "RadioIntro": "改变选项时,下拉框内菜单项会增加", - "CascadeTitle": "级联绑定", - "CascadeIntro": "通过选择第一个下拉框不同选项,第二个下拉框动态填充内容。", - "IsFixedButtonTextTitle": "固定按钮文本", - "IsFixedButtonTextIntro": "通过设置 IsFixedButtonText 使更改下拉选项时按钮文本不变", - "FixedButtonTextTitle": "设置固定按钮文字", - "FixedButtonTextIntro": "通过设置 FixedButtonText 来设置固定按钮的初始文字", - "ButtonTemplateTitle": "按钮模板", - "ButtonTemplateIntro": "通过设置 ButtonTemlate 可以自定义显示内容", - "AttributeValue": "当前选中的值", - "AttributeClass": "样式", - "AttributeColor": "颜色", - "AttributeDirection": "下拉框弹出方向", - "AttributeItems": "下拉框值", - "AttributeMenuAlignment": "菜单对齐方式", - "AttributeMenuItem": "菜单项渲染标签", - "AttributeResponsive": "菜单对齐", - "AttributeShowSplit": "分裂式按钮下拉菜单", - "AttributeIsAsync": "是否为异步按钮", - "AttributeSize": "尺寸", - "AttributeTagName": "标签", - "AttributeButtonTemplate": "按钮模板", - "AttributeItemTemplate": "菜单项模板", - "AttributeItemsTemplate": "下拉菜单模板", - "EventDesc1": "点击按钮时触发此事件", - "EventDesc2": "点击按钮时触发此事件并且不刷新当前组件,用于提高性能时使用", - "EventOnSelectedItemChanged": "下拉框值发生改变时触发", - "FixedButtonText": "固定按钮显示文字", - "Item1": "北京", - "Item2": "上海", - "Item3": "广州", - "AddItem": "添加", - "RemoveItem": "删除", - "City": "城市", - "DropdownCascadeItem1": "请选择 ...", - "DropdownCascadeItem2": "北京", - "DropdownCascadeItem3": "上海", - "DropdownCascadeItem4": "杭州", - "DropdownCascadeItem5": "朝阳区", - "DropdownCascadeItem6": "海淀区", - "DropdownCascadeItem7": "静安区", - "DropdownCascadeItem8": "黄浦区", - "DropdownItemTemplateTitle": "下拉项模板", - "DropdownItemTemplateIntro": "通过设置 ItemTemplate 可以自定义下拉项显示内容,本例中通过自定义模板使用 Tooltip 组件增加鼠标悬浮是显示提示功能", - "DropdownItemsTemplateTitle": "下拉框模板", - "DropdownItemsTemplateIntro": "通过设置 ItemsTemplate 可以自定义下拉框所有内容,本例中通过使用 DropdownItem 组件与 DropdownDivider 对下拉框组件进行自定义" - }, - "BootstrapBlazor.Server.Components.Samples.GoTops": { - "Title": "GoTop 返回顶端组件", - "Description": "点击后返回指定容器的顶端", - "NormalTitle": "基础用法", - "NormalIntro": "点击后返回顶端", - "Desc1": "页脚组件控制的滚动条组件 ID", - "Description1": "底部显示 Footer 组件,点击返回顶端时页面自动滚动回顶端", - "Description2": "本示例传递的是组件客户端 ID" - }, - "BootstrapBlazor.Server.Components.Samples.Menus": { - "MenusTitle": "Menu 导航菜单", - "MenusDescription": "为页面和功能提供导航的菜单列表。", - "MenusTips1": "Menu 组件一般用法为菜单导航,即点击菜单后地址栏进行重定向导航,但是在实战中有时候不需要导航,通过设置 OnClick 回调委托,自定义处理逻辑,此时通过设置属性 DisableNavigation 即可,本例中由于都是模拟菜单点击并未真正的进行地址栏跳转导航所以所有 Menu 均设置为 true 禁止导航", - "MenusTopBarTitle": "顶栏", - "MenusTopBarIntro": "适用广泛的基础用法。", - "MenusBottomBarTitle": "底栏", - "MenusBottomBarIntro": "设置参数 IsBottom 值为 true 菜单栏在容器底部,适用移动端", - "MenusBottomBarTips": "由于 底栏菜单 是相对与父容器定位的,需设置父级节点样式 position-relative,或者自定义样式 position-fixed", - "MenusIconTopTitle": "带图标的顶栏菜单", - "MenusIconTopIntro": "适用简单的网站应用,通过设置菜单项 MenuItemIcon 属性设置菜单图标", - "MenusLeftRightLayoutTitle": "侧栏", - "MenusLeftRightLayoutIntro": "适用于左右结构布局的网站,通过设置 IsVertical 更改导航菜单为侧栏", - "MenusIconLeftTitle": "带图标的侧栏菜单", - "MenusIconLeftIntro": "通过设置菜单项 MenuItemIcon 属性设置菜单图标", - "MenusAccordionTitle": "手风琴效果的侧栏", - "MenusAccordionIntro": "通过设置 IsAccordion 属性设置手风琴特效侧栏菜单", - "MenusClickShrinkTitle": "带收缩的侧栏效果", - "MenusClickShrinkIntro": "通过设置 IsCollapsed 属性设置侧栏菜单为收起状态", - "MenusClickShrinkAlertText": "请注意 IsCollapsed 属性仅当 IsVertical 为真时才生效即仅侧边栏菜单时可用", - "MenusClickShrinkDescription": "本例中使用布局组件 Layout 来进行网页构建", - "Block7aTitle": "点击展开收缩左侧菜单", - "MenusClickShrinkSpanSpan": "我是网站标题", - "MenusClickShrinkMenuTitle": "后台管理", - "MenusWidgetTitle": "带挂件的菜单", - "MenusWidgetIntro": "通过设置 MenuItemComponent 属性设置自定义组件到菜单中", - "MenusCustomNodeTitle": "自定义节点收缩", - "MenusCustomNodeIntro": "通过设置 MenuItemIsCollapsed 属性设置节点是否收起", - "MenusCustomNodeDescription": "本例中 权限设置 节点为展开状态,其余节点为收起状态", - "MenusDynamicTitle": "动态更改菜单", - "MenusDynamicIntro": "通过代码动态设置 Items 属性值更改菜单项", - "MenusDynamicButton1Text": "更新菜单", - "MenusDynamicButton2Text": "重置菜单", - "MenusPartDisableTitle": "部分菜单禁用功能", - "MenusPartDisableIntro": "通过设置 MenuItemIsDisabled 属性设置节点是否禁用", - "MenusPartDisableDescription1": "本例中 导航二 节点为禁用状态,菜单与其子菜单均不可点击", - "MenusPartDisableDescription2": "侧栏的禁用示例", - "MenusAttr_Items": "菜单组件数据集合", - "MenusAttr_IsVertical": "是否为侧栏", - "MenusAttr_IsBottom": "是否为底栏", - "MenusAttr_IsAccordion": "是否手风琴效果", - "MenusAttr_IsScrollIntoView": "是否自动滚动到可视区域", - "MenusAttr_DisableNavigation": "是否禁止地址栏导航", - "MenusAttr_OnClick": "菜单项被点击时回调此方法", - "System": "系统设置", - "Website": "网站设置", - "Task": "任务设置", - "Authorize": "权限设置", - "User": "用户设置", - "Menu": "菜单设置", - "Role": "角色设置", - "Log": "日志设置", - "Access": "访问日志", - "Login": "登录日志", - "Operation": "操作日志", - "Menu1": "菜单一", - "Menu2": "菜单二", - "Menu3": "菜单三", - "SubMenu1": "子菜单 1", - "SubMenu2": "子菜单 2", - "SubMenu3": "子菜单 3", - "SubMenu11": "孙菜单 11", - "SubMenu12": "孙菜单 12", - "SubMenu21": "孙菜单 21", - "SubMenu22": "孙菜单 22", - "SubMenu31": "曾孙菜单 31", - "SubMenu32": "曾孙菜单 32", - "SubMenu41": "曾曾孙菜单 41", - "SubMenu42": "曾曾孙菜单 42" - }, - "BootstrapBlazor.Server.Components.Samples.Navigation": { - "NavsTitle": "Nav 导航组件", - "NavsDescription": "为网站提供导航功能的菜单。", - "NavsNormalTitle": "基本导航样式", - "NavsNormalIntro": "本例中通过设置 Items 属性,通过程序 api 对导航组件进行赋值,并且在导航组件的 ChildContext 中直接写入 NavLink 组件", - "NavsAlignTitle": "对齐", - "NavsAlignIntro": "通过设置 Alignment 属性来控制组件对齐方式", - "NavsDivider": "分割线", - "NavsVerticalTitle": "垂直", - "NavsVerticalIntro": "本例中通过设置 IsVertical 属性控制导航是否为垂直分布", - "NavsPillsTitle": "胶囊式", - "NavsPillsIntro": "通过设置 IsPills 属性控制导航菜单背景色", - "NavsFillAndAlignTitle": "填充和对齐", - "NavsFillAndAlignIntro": "通过设置 IsFill 属性控制导航菜单均匀分布填满整个导航栏", - "NavsWideTitle": "等宽", - "NavsWideIntro": "通过设置 IsJustified 属性使每个导航项目将具有相同的宽度。", - "NavsChildContent": "内容", - "NavsAlignment": "组件对齐方式", - "NavsIsVertical": "垂直分布", - "NavsIsPills": "胶囊", - "NavsIsFill": "填充", - "NavsIsJustified": "等宽" - }, - "BootstrapBlazor.Server.Components.Samples.Paginations": { - "PaginationsTitle": "Pagination 分页", - "PaginationsDescription": "当数据量过多时,使用分页分解数据。", - "PaginationsNormalTitle": "基础用法", - "PaginationsNormalIntro": "可以通过下拉框选取每页显示数据数量", - "PaginationsDisplayTextTitle": "仅显示文本提示", - "PaginationsDisplayTextIntro": "只有一页时不显示切换页码组件,仅显示文本提示", - "PaginationsMaxPageLinkCountTitle": "仅显示分页组件", - "PaginationsMaxPageLinkCountIntro": "通过 ShowPaginationInfo='false' 设置不显示文本提示", - "PaginationsAlignmentTitle": "对齐方式", - "PaginationsAlignmentIntro": "设置 Alignment 控制页码对齐方式", - "PaginationsGotoTitle": "跳转导航", - "PaginationsGotoIntro": "通过设置 ShowGotoNavigator 参数控制是否显示跳转导航,可以通过 GotoTemplate 自定义跳转组件", - "PaginationsPageInfoTextTitle": "分页信息", - "PaginationsPageInfoTextIntro": "通过设置 ShowInfo 参数控制是否显示分页信息", - "PaginationsInfoTotal": "共 20 页", - "PaginationsInfoTemplateTitle": "分页模板", - "PaginationsInfoTemplateIntro": "通过 PageInfoTemplate 自定义分页信息", - "PaginationsPageIndexAttr": "当前页码", - "PaginationsPageCountAttr": "页码总数", - "PaginationsMaxPageLinkCountAttr": "翻页页码数量", - "PaginationsOnPageLinkClickAttr": "点击页码回调方法", - "PaginationsAlignmentAttr": "对齐方式", - "PaginationsShowPageInfoAttr": "是否显示分页信息", - "PaginationsPageInfoTextAttr": "分页信息文字", - "PaginationsPageInfoTemplateAttr": "分页信息模板", - "PaginationsShowGotoNavigatorAttr": "是否显示跳转", - "PaginationsGotoNavigatorLabelTextAttr": "跳转文字", - "PaginationsGotoTemplateAttr": "跳转模板", - "PaginationsPrevPageIconAttr": "上一页图标", - "PaginationsPrevEllipsisPageIconAttr": "向前翻页图标", - "PaginationsNextPageIconAttr": "下一页图标", - "PaginationsNextEllipsisPageIconAttr": "向后翻页图标" - }, - "BootstrapBlazor.Server.Components.Samples.Steps": { - "StepsTitle": "Step 步骤条", - "StepsDescription": "引导用户按照流程完成任务的导航条", - "StepsTipsTitle": "引导用户按照流程完成任务的分步导航条,可根据实际应用场景设定步骤,步骤不得少于 2 步", - "StepsTips": "Steps 组件支持通过设置 Items 属性或者直接内嵌 Step 组件两种方式进行 UI 呈现", - "StepsNormalTitle": "基础用法", - "StepsNormalIntro": "简单的步骤条,通过直接绑定数据源 Items 即可", - "StepsNormalPrevButtonText": "上一步", - "StepsNormalNextButtonText": "下一步", - "StepsNormalResetButtonText": "重 置", - "StepsNormalFinishedTemplateDesc": "通过设置 FinishedTemplate 可以实现步骤全部完成后的后续处理逻辑,比如显示已完成,如需要延时一定时间再跳转到一个新页面,需要自定义组件,再其 OnAfterRenderAsync 生命周期中处理", - "StepsStepTitle": "基础用法", - "StepsStepIntro": "简单的步骤条,组件内部直接使用 Step 组件设置步骤", - "Step1Text": "第一步", - "Step2Text": "第二步", - "Step3Text": "完成", - "Step1Title": "步骤一", - "Step2Title": "步骤二", - "Step3Title": "步骤三", - "StepDesc": "这是一段描述性文字", - "StepsDescTitle": "有描述的步骤条", - "StepsDescIntro": "每个步骤有其对应的步骤状态描述", - "StepsTitleTemplateTitle": "Title 模板", - "StepsTitleTemplateIntro": "通过设置 TitleTemplate 自定义 Title 文字", - "StepsHeaderTemplateTitle": "Header 模板", - "StepsHeaderTemplateIntro": "通过设置 HeaderTemplate 自定义 Header", - "StepsVerticalTitle": "竖式步骤条", - "StepsVerticalIntro": "通过设置 IsVertical=\"true\" 使步骤条竖式", - "AttributeTitle": "StepItem 属性", - "StepsItems": "设置步骤数据集合", - "StepsIsVertical": "显示方向", - "StepsAttrStepIndex": "步骤顺序号", - "StepsAttrText": "步骤显示文字", - "StepsAttrTitle": "步骤显示标题", - "StepsAttrIcon": "步骤显示图标", - "StepsAttrFinishedIcon": "步骤完成显示图标", - "StepsAttrDescription": "描述信息", - "StepsAttrHeaderTemplate": "设置当前步骤的标题模板", - "StepsAttrTitleTemplate": "设置当前步骤的描述模板", - "StepsAttrChildContent": "设置当前步骤的内容模板" - }, - "BootstrapBlazor.Server.Components.Samples.Tabs": { - "TabsTitle": "Tabs 标签页", - "TabsSubTitle": "分隔内容上有关联但属于不同类别的数据集合。", - "TabsDescription": "Tab 组件从设计上采用模板的设计形式,使用本组件时通过将 TabItem 子组件添加到 TabItems 模板中即可", - "TabsTipsTitle": "Tab 组件一般有两种用法:", - "TabsTips1": "作为数据分割", - "TabsTips2": "页面导航", - "TabsTips3": "本组件默认行为为数据分割,点击 TabItem 标题时并不会进行导航行为,如果需要进行地址栏导航时请设置 ClickTabToNavigation 属性为 true,此时点击 TabItem 标题时地址栏将会重定向导航,多用于后台管理系统与 Menu 组件进行联动使用,实战可参考 后台模板模拟器 中的 多标签 模式,如果有 Razor 组件 在额外的程序集中时,请正确设置 AdditionalAssemblies 属性值,以便标签组件内路由正确解析,相关文档 [传送门]", - "TabsTips4": "本组件会根据宽度高度等进行自适应适配,适当的时候可以出现左右或者上下的滚动箭头", - "TabsInfoTitle": "标签页导航时设置附加信息", - "TabsItemMenuTitle": "配置 Tab 与 Menu 联动字典,该方法无需再单独设置 TabItemOption 即可自动获取标签页属性。", - "TabsInfoItem2": "使用内置扩展方法 Navigator.NavigateTo(\"provider\", \"url\", \"text\", \"icon\", \"closable\") 导航时即可设置标签页属性", - "TabsInfoItem4": "通过设置 razor 页面标签 @attribute [TabItemOption(Text = \"LayoutPage\", Icon = \"fa-solid fa-font-awesome\")]", - "TabsQATitle": "常见问题", - "TabsQA1": "通过级联参数获得当前 TabSet", - "TabsQA2": "通过级联参数获得当前 TabItem", - "TabsQA3": "网页中点击链接如何跳转到新标签页 TabItem", - "TabsQA4": "代码中如何导航到新标签页 TabItem", - "TabItem1Text": "用户管理", - "TabItem1Content": "我是用户管理", - "TabItem2Text": "菜单管理", - "TabItem2Content": "我是菜单管理", - "TabItem3Text": "角色管理", - "TabItem3Content": "我是角色管理", - "TabItem4Text": "部门管理", - "TabItem4Content": "我是部门管理", - "TabItem5Text": "系统日志", - "TabItem5Content": "我是系统日志", - "TabItem6Text": "登录日志", - "TabItem6Content": "我是部门管理", - "TabItem7Text": "定时任务管理", - "TabItem7Content": "我是定时任务管理", - "TabItem8Text": "计数组件", - "TabItem9Text": "天气预报", - "TabsNormalTitle": "基础用法", - "TabsNormalIntro": "基础的、简洁的标签页。", - "TabsCardTitle": "选项卡样式", - "TabsCardIntro": "通过 IsCard='true' 设置选项卡样式的标签页。", - "TabsBorderTitle": "卡片化", - "TabsBorderIntro": "通过 IsBorderCard='true' 设置卡片化的标签页。", - "TabsIconTitle": "图标", - "TabsIconIntro": "通过设置 TabItem 组件的 Icon 属性对标签页设置图标", - "TabsClosableTitle": "关闭", - "TabsClosableIntro": "通过设置 ShowClose 属性对标签页显示关闭按钮", - "TabsClosableTips": "

        Tab 组件开启 ShowClose 后,TabItem 属性 Closable 可对标签页单独设置是否可关闭,默认为 true;本例中 用户管理 标签页不提供关闭功能

        ", - "TabsPlacementTitle": "位置", - "TabsPlacementIntro": "通过设置 Placement 属性更改标签位置,更改为左右时会出现上下滚动小箭头进行 TabItem 切换", - "DividerText": "Tab 分割线", - "TabsAddTabItemTitle": "自定义增加标签页触发器", - "TabsAddTabItemIntro": "通过调用组件 api 动态添加/删除 TabItem", - "AddButtonText": "添加", - "RemoveButtonText": "移除", - "ActiveButtonText": "激活第一个", - "TabsComponentTitle": "内置其他组件", - "TabsComponentIntro": "TabItem 中内置其他组件", - "TabsComponentDescription": "Tab 组件各个面板内的内容默认是保持状态的,本例中面板切换时保持原有数据", - "TabsDynamicTabItemTitle": "程序动态添加 TabItem 面板", - "TabsDynamicTabItemIntro": "通过此功能可以实现侧边栏中点击菜单链接,右侧数据区上部呈现多标签", - "TabsDynamicTabItemDescription": "本例中右侧 Tab 面板内状态一直保持,关闭后重新打开时组件重新加载", - "Block9Div": "网站 Header", - "TabsAppTitle": "实战 Tab 组件", - "TabsAppIntro": "通过设置 ShowExtendButtons 属性为 true,开启组件左右移动按钮与关闭下拉菜单,实战中非常实用", - "TabsAppDescription": "通过 添加 删除 按钮动态调整 TabItem 数量,使其超出容器数量查看,左右移动效果;用户管理 设置为不可关闭;功能按钮无法关闭这个标签页。组件默认是循环切换标签页的,可以通过 IsLoopSwitchTabItem=\"false\" 关闭这个功能", - "TabsIsOnlyRenderActiveTitle": "仅渲染当前标签", - "TabsIsOnlyRenderActiveIntro": "通过设置 IsOnlyRenderActiveTab 参数使组件仅渲染当前活动标签", - "BlockSetTextTitle": "设置标签文本", - "BlockSetTextIntro": "调用实例方法 SetText 更新标签属性", - "BlockSetTextDesc": "点击 设置 按钮,通过调用 TabItem 实例方法的 SetText 方法设置本标签的显示文本", - "BlockSetTextButtonText": "设置", - "TabsLazyLoadTitle": "懒加载标签页功能", - "TabsLazyLoadIntro": "通过设置 IsLazyLoadTabItem=\"true\" 开启标签页懒加载,标签组件首次加载时仅加载 IsActive 的标签页,其余不加载,点击后才加载", - "TabsHeaderTemplateTitle": "Header 模板", - "TabsHeaderTemplateIntro": "通过设置 HeaderTemplateHeader 进行自定义设置", - "BlockHeaderTemplateHeaderText": "待办事宜", - "BlockHeaderTemplateDesc": "在 HeaderTemplate 中使用 Badge 设置挂件", - "TabsSetHeaderTemplateTitle": "代码设置 Header 标题", - "TabsSetHeaderTemplateIntro": "通过设置 TabItem 参数 Text 进行自定义标题设置", - "TabsSetTabItemHeaderTextTitle": "代码设置标题图标", - "TabsSetTabItemHeaderTextIntro": "通过设置 TabItem 实例方法 SetHeader 进行自定义标题设置", - "TabsDragTitle": "拖拽标签页", - "TabsDragIntro": "通过设置 AllowDrag 开启标签页拖拽功能,放下标签页后回调 OnDragItemEndAsync 方法", - "TabsAtt1IsBorderCard": "是否为带边框卡片样式", - "TabAtt2IsCard": "是否为卡片样式", - "TabAtt3IsOnlyRenderActiveTab": "是否仅渲染 Active 标签", - "TabAtt4ShowClose": "是否显示关闭按钮", - "TabAtt5ShowExtendButtons": "是否显示扩展按钮", - "TabAttShowNavigatorButtons": "是否显示前后导航按钮", - "TabAttShowActiveBar": "是否显示活动标签", - "TabAttIsLazyLoadTabItem": "是否延时加载标签内容", - "TabAttIsLoopSwitchTabItem": "是否循环切换标签", - "TabAtt6ClickTabToNavigation": "点击标题时是否导航", - "TabAtt7Placement": "设置标签位置", - "TabAtt8Height": "设置标签高度", - "TabAtt9Items": "TabItem 集合", - "TabAtt10ChildContent": "ChildContent 模板", - "TabAttHeaderTemplate": "Header 模板", - "TabAtt11AdditionalAssemblies": "额外程序集合,用于初始化路由", - "TabAtt12OnClickTab": "点击 TabItem 标题时回调委托方法", - "TabAttAllowDrag": "是否允许拖拽标签页", - "TabAttOnDragItemEndAsync": "拖拽标签页回调方法", - "Att13": "设置标签页显示标题集合,未设置时内部尝试使用菜单项数据", - "TabMethod1AddTab": "添加 TabItem 到 Tab 中,可指定新增Tab的位置", - "TabMethod2RemoveTab": "移除 TabItem", - "TabMethod3ActiveTab": "设置指定 TabItem 为激活状态", - "TabMethod4ClickPrevTab": "切换到上一个标签方法", - "TabMethod5ClickNextTab": "切换到下一个标签方法", - "TabMethod6CloseCurrentTab": "关闭当前标签页方法", - "TabMethod7CloseOtherTabs": "关闭其他标签页方法", - "TabMethod8CloseAllTabs": "关闭所有标签页方法", - "TabMethod9GetActiveTab": "获得当前标签页方法", - "BackAddTabText": "我是新建的 Tab, 名称是 {0}", - "BackText1": "计数器", - "BackText2": "天气预报", - "AttTitle": "Attributes 属性", - "MethodTitle": "Method 方法", - "TabDefaultUrl": "默认标签页关闭所有标签页时默认显现此页面", - "AttributeOnCloseTabItemAsync": "关闭标签页回调方法", - "AttributeOnClickTabItemAsync": "点击 TabItem 时回调方法", - "AttributeNotAuthorized": "NotAuthorized 模板", - "AttributeNotFound": "NotFound 模板", - "AttributeExcludeUrls": "排除地址支持通配符", - "AttributeButtonTemplate": "按钮模板", - "TabsDisabledTitle": "禁用", - "TabsDisabledIntro": "通过设置 IsDisabled=\"true\" 禁用当前 TabItem 禁止点击、拖动、关闭等操作", - "TabsChromeStyleTitle": "Chrome 样式", - "TabsChromeStyleIntro": "通过设置 TabStyle=\"TabStyle.Chrome\" 设置 Chrome 浏览器标签页样式,目前仅支持 Placement=\"Placement.Top\" 模式", - "TabAtt2TabStyle": "设置标签页样式", - "TabsCapsuleStyleTitle": "胶囊样式", - "TabsCapsuleStyleIntro": "通过设置 TabStyle=\"TabStyle.Capsule\" 设置标签页为胶囊样式,目前仅支持 Placement=\"Placement.Top\" Placement=\"Placement.Bottom\" 模式", - "AttributeToolbarTemplate": "Toolbar 模板", - "TabsToolbarTitle": "工具栏", - "TabsToolbarIntro": "通过设置 ShowToolbar 显示标签页工具栏,默认显示 刷新 全屏 按钮,可以通过 ShowRefreshToolbarButton ShowFullscreenToolbarButton 控制是否显示,点击 刷新 按钮后触发 OnToolbarRefreshCallback 回调方法,可以通过 ToolbarTemplate 自定义工具栏按钮", - "AttributeShowToolbar": "是否显示工具栏", - "AttributeShowRefreshToolbarButton": "是否显示工具栏刷新按钮", - "AttributeShowFullscreenToolbarButton": "是否显示工具栏全屏按钮", - "AttributeRefreshToolbarTooltipText": "工具栏刷新按钮提示框文字", - "AttributeFullscreenToolbarTooltipText": "工具栏全屏按钮提示框文字", - "AttributeRefreshToolbarButtonIcon": "工具栏刷新按钮图标", - "AttributeFullscreenToolbarButtonIcon": "工具栏全屏按钮图标", - "TabsToolbarDesc": "点击按钮计数器数值增加后,点击工具栏的 刷新 按钮计数器清零", - "AttributeOnToolbarRefreshCallback": "点击工具栏刷新按钮回调方法", - "ContextRefresh": "刷新", - "ContextClose": "关闭", - "ContextCloseOther": "关闭其他", - "ContextCloseAll": "关闭全部", - "TabsContextMenuTitle": "右键菜单", - "TabsContextMenuIntro": "通过内置 ContextMenuZone 组件,点击标签页右键时弹窗自定义右键菜单", - "TabsContextMenuDesc": "被禁用的标签页可以通过设置 OnBeforeShowContextMenu 回调方法根据返回值控制右键菜单是否显示,未设置时禁用标签页也显示右键菜单", - "AttributeShowContextMenu": "是否显示右键菜单", - "AttributeContextMenuRefreshIcon": "右键菜单刷新按钮图标", - "AttributeContextMenuCloseIcon": "右键菜单关闭按钮图标", - "AttributeContextMenuCloseOtherIcon": "右键菜单关闭其他按钮图标", - "AttributeContextMenuCloseAllIcon": "右键菜单关闭全部按钮图标", - "AttributeContextMenuFullScreenIcon": "右键菜单全屏按钮图标", - "AttributeOnBeforeShowContextMenu": "右键菜单弹出前回调方法", - "ShowTabInHeaderDesc": "Layout 组件中开启多标签功能后,可以通过设置 ShowTabInHeader=\"true\"Tab 标签头渲染到 Layout Header 模板中,效果可以通过 项目模板 新建工程查看", - "TabsOnTabHeaderTextLocalizerTitle": "TabItemOption 本地化问题", - "TabsOnTabHeaderTextLocalizerIntro": "通过设置 OnTabHeaderTextLocalizer 回调委托方法实现 TabItemOption 本地化,入参为 TabItemOption 参数 Text 值,返回值为本地化后值" - }, - "BootstrapBlazor.Server.Components.Components.DemoTabItem": { - "Info": "点击下方按钮,本 TabItem 标题更改为当前分钟与秒", - "ButtonText": "更改标题" - }, - "BootstrapBlazor.Server.Components.Samples.AutoFills": { - "Title": "AutoFill 自动填充组件", - "Description": "通过智能感应提示选项,选中后自动填充表单", - "NormalTitle": "基本用法", - "NormalIntro": "填充表单", - "NormalDesc": "录入 Name 姓名智能提示,选择提示项后自动填充下方表单 目前支持键盘 Enter Esc ", - "CustomFilterTitle": "自定义过滤条件", - "CustomFilterIntro": "通过设置自定义过滤条件回调委托 OnCustomFilter 过滤数据", - "CustomFilterDesc": "录入 Name 姓名智能提示,通过设置自定义过滤条件回调委托 OnCustomFilter 过滤数据,当前过滤条件为 Name 包含输入字符串 Count 并且 值大于 50", - "ShowDropdownListOnFocusTitle": "关闭自动展开下拉框", - "ShowDropdownListOnFocusIntro": "通过设置 ShowDropdownListOnFocus="false"", - "ShowDropdownListOnFocusDesc": "参数 ShowDropdownListOnFocus 默认值为 true 组件获得焦点后会自动展开候选项下拉框,设置为 false 后关闭这个特性", - "Att1": "匹配数据时显示的数量", - "Att2": "无匹配数据时显示提示信息", - "Def2": "无匹配数据", - "Att3": "匹配时是否忽略大小写", - "Att4": "是否开启模糊查询", - "Att5": "组件数据集合", - "Att6": "防抖时间", - "Att7": "自定义集合过滤规则", - "Att8": "通过模型获得显示文本方法", - "Att9": "选项改变回调方法", - "Att10": "获得焦点时是否展开下拉候选菜单", - "Att11": "候选项模板", - "Att12": "是否跳过 Enter 按键处理", - "Att13": "是否跳过 Esc 按键处理", - "IsVirtualizeTitle": "虚拟滚动", - "IsVirtualizeIntro": "通过设置 IsVirtualize 参数开启组件虚拟功能特性", - "IsVirtualizeDescription": "组件虚拟滚动支持两种形式通过 Items 或者 OnQueryAsync 回调方法提供数据", - "AttrIsVirtualize": "是否开启虚拟滚动", - "AttIsAutoClearWhenInvalid": "焦点移除组件时是否自动清空无效值" - }, - "BootstrapBlazor.Server.Components.Samples.AutoCompletes": { - "Title": "AutoComplete 自动完成", - "Description": "输入框自动完成功能", - "Block1Title": "基础用法", - "Block1Intro": "通过设置 Items 数据集合当用户键入信息时自动显示提示信息", - "Block2Title": "模糊查询并忽略大小写", - "Block2Intro": "通过设置 IsLikeMatch 值设置是否开启集合的模糊匹配,通过设置 IgnoreCase 来控制是否忽略大小写", - "Block3Title": "自定义提示消息", - "Block3Intro": "通过设置 NoDataTip 值设置自动完成数据未找到时显示的自定义提示消息", - "Block4Title": "自定义候选项", - "Block4Intro": "通过设置 ValueChanged 回调方法根据用户输入的数据进行重组数据集合再进行提示信息", - "Block5Title": "显示标签", - "Block5Intro": "组件双向绑定时会根据条件自动判断是否显示标签文字", - "DebounceTitle": "设置防抖", - "DebounceIntro": "通过设置 Debounce 时长,来开启 js 防抖", - "BlockGroupTitle": "组合使用", - "BlockGroupIntro": "内置 BootstrapInputGroup 中使用,与 BootstrapInputGroupLabel 组合使用", - "ItemTemplateTitle": "候选项模板", - "ItemTemplateIntro": "通过设置 ItemTemplate 对下拉框候选项进行自定义设置", - "Att1": "是否显示前置标签", - "Att2": "内容", - "Att3": "内容", - "Att4": "自动完成数据无匹配项时提示信息", - "Att4DefaultValue": "无匹配数据", - "Att5": "匹配数据时显示的数量", - "Att6": "文本框值变化时回调委托方法", - "Att7": "是否开启模糊匹配", - "Att8": "匹配时是否忽略大小写", - "Att9": "自定义集合过滤规则", - "AttItemTemplate": "候选项模板", - "Debounce": "js 防抖时间,毫秒", - "SkipEnter": "是否跳过 Enter 按键处理", - "SkipEsc": "是否跳过 Esc 按键处理", - "OnSelectedItemChanged": "下拉菜单选择回调方法", - "OnSelectedItemChangedTitle": "下拉菜单选选中回调", - "OnSelectedItemChangedIntro": "点击下拉菜单或者 Enter 回车时触发此回调方法", - "OnValueChanged": "Value 改变时回调方法", - "NormalDescription": "本例中请键入 123 字符串显示查看效果,自动完成组件初始化时给了自动提示数据集并且数据集无变化,通过设置 IsClearable 开启清空小按钮", - "LikeMatchDescription": "本例中请键入 123 字符串显示查看效果,自动完成组件初始化时给了自动提示数据集并且数据集无变化", - "NoDataTipDescription": "本例中请键入 567 字符串由于自动完成信息中心无数据显示自定义提示信息 - 没有找到你想要的数据", - "NoDataTip": "没有找到你想要的数据", - "ValueChangedDescription": "本例中请键入任意字符串显示查看效果,自动完成组件根据键入的字符串从新获取提示信息数据集动态变化", - "ShowLabelDescription": "前置标签显式规则与 BootstrapInput 组件一致 [传送门]", - "Divider1Text": "双向绑定显示标签", - "Divider2Text": "双向绑定不显示标签", - "Divider3Text": "自定义 DisplayText", - "AutoText": "自定义城市", - "DebounceDescription": "本例中请键入任意字符串显示查看效果,自动完成组件在防抖时间内,只在最后一次录入后将结果发送到后端,这将大大提高性能", - "BlockGroupPrevLabel": "前置标签", - "BlockGroupSuffixLabel": "后置标签", - "PopoverTitle": "悬浮弹窗", - "PopoverIntro": "通过设置 IsPopover 参数,组件使用 popover 渲染 UI 防止由于父容器设置 overflow: hidden; 使弹窗无法显示问题" - }, - "BootstrapBlazor.Server.Components.Samples.FullScreens": { - "FullScreensTitle": "FullScreen 全屏", - "FullScreensDescription": "通过注入服务调用 Show 方法弹出窗口进行人机交互", - "FullScreenNormalTitle": "基础用法", - "FullScreenNormalIntro": "通过调用FullScreenService 服务实例的 Show 方法将整个网页进行全屏化", - "FullScreenNormalButtonText1": "全屏", - "FullScreenOptionDesc": "通过设置 FullScreenOption 对全屏化的窗口进行设置,可通过 ElementReference Id Selector 指定页面元素" - }, - "BootstrapBlazor.Server.Components.Samples.FullScreenButtons": { - "FullScreenButtonTitle": "FullScreenButton 全屏按钮", - "FullScreenButtonIntro": "通过 FullScreenButton 组件将整个网页或者指定元素进行全屏化", - "FullScreenButtonNormalTitle": "基础用法", - "FullScreenButtonNormalIntro": "可通过 Icon 设置按钮默认图标,通过 FullScreenExitIcon 属性设置退出全屏时图标", - "FullScreenTitleLi1": "通过 TargetId 参数设置全屏元素 Id", - "FullScreenTitleLi2": "通过 Text 属性设置当前页标题文字" - }, - "BootstrapBlazor.Server.Components.Samples.Buttons": { - "Title": "Button 按钮", - "Description": "常用的操作按钮。", - "Block1Title": "基础用法", - "Block1Intro": "基础的按钮用法。", - "Block2Title": "不同风格", - "Block2Intro": "通过设置 ButtonStyle 来显示不同的按钮风格", - "Block3Title": "Outline 按钮", - "Block3Intro": "通过设置 IsOutline='true' 设置按钮边框颜色样式。", - "Block4Title": "不同尺寸", - "Block4Intro": "Button 组件提供除了默认值以外的多种尺寸,通过设置 Size 属性可以在不同场景下选择合适的按钮尺寸。", - "Block5Title": "禁用状态", - "Block5Intro": "按钮不可用状态。通过设置 IsDisabled 属性", - "Block6Title": "按钮组", - "Block6Intro": "由多个按钮组成一个组合按钮", - "Block7Title": "带图标的按钮", - "Block7Intro": "通过设置 Icon 属性对按钮图标进行设置,图标为字体字符串如使用 font-awesome 图标时 fa-solid fa-font-awesome", - "Block8Title": "二次封装按钮", - "Block8Intro": "通过设置 WinButton 组件的 Text 属性对按钮显示文字进行设置,点击按钮是右侧显示被点击按钮的文字", - "Block9Title": "异步请求按钮", - "Block9Intro": "通过设置 IsAsync 属性按钮是否为 异步请求按钮,默认为 false", - "ButtonAsyncDescription": "当按钮为异步请求按钮时,点击按钮后自身状态会改变为禁用状态,同时显示 Loading 小图标,异步请求结束后恢复正常,本例中点击 异步请求 按钮后,显示请求加载动画,5 秒后恢复正常。有些特定场景异步后需要按钮继续保持禁用状态,请通过 IsKeepDisabled 参数控制", - "EventDesc1": "点击按钮时触发此事件", - "EventDesc2": "点击按钮时触发此事件并且不刷新当前组件,用于提高性能时使用", - "Att1": "颜色", - "Att2": "图标", - "Att3": "异步加载时的动画图标", - "Att4": "显示文字", - "Att5": "尺寸", - "Att6": "样式", - "Att7": "填充按钮", - "Att8": "是否禁用", - "Att9": "是否有边框", - "Att10": "是否为异步按钮", - "Att11": "内容", - "Att12": "按钮风格", - "Att13": "按钮类型", - "MethodDesc1": "设置按钮是否可用", - "NoneButtonColor": "None 按钮", - "PrimaryButton": "主要按钮", - "SecondaryButton": "次要按钮", - "SuccessButton": "成功按钮", - "DangerButton": "危险按钮", - "WarningButton": "警告按钮", - "InformationButton": "信息按钮", - "DarkButton": "黑暗按钮", - "HighlightButton": "高亮按钮", - "LinkButton": "链接按钮", - "ExtraSmallButton": "超小按钮", - "SmallButton": "小按钮", - "NormalButton": "按钮", - "MediumButton": "中等按钮", - "LargeButton": "大按钮", - "ExtraLargeButton": "超大按钮", - "ButtonExtraExtraLargeText": "超超大按钮", - "BlockButton": "Block 按钮", - "Description1": "通过 OnClick 回调方法中设置自身 IsDisabled 属性,或者调用组件实例方法 SetDisable 均可实现按钮禁用效果", - "Description2": "由于使用 IsDisabled 属性时,需要显式手动调用 StateHasChanged 方法,会导致按钮所在组件整体刷新,建议使用实例方法 SetDisable 仅对按钮进行刷新", - "SubTitle": "性能比较:", - "IsDisabledTip": "使用 IsDisabled 属性设置时本页面传输量为 4.8K", - "SetDisableTip": "使用 SetDisable 方法设置时本页面传输量为 280B", - "ButtonDisabled": "点击被禁用", - "ButtonAvailable": "点击后使第一个按钮可用", - "ButtonOne": "按钮一", - "ButtonTwo": "按钮二", - "ButtonStatus": "状态按钮", - "ButtonProgress": "进度按钮", - "ButtonAsync": "异步请求", - "TooltipText": "按钮", - "TooltipTitle": "按钮提示栏", - "TooltipIntro": "通过设置 TooltipText TooltipPlacement TooltipTrigger 快捷设置按钮提示栏信息、位置、触发方式,更多功能请使用 Tooltip 组件实现,本例中第二个按钮是 禁用 状态,提示栏仍然可用", - "TooltipDisabledText": "禁用按钮", - "ToggleButton": "状态切换按钮", - "ToggleIntroduction": "通过设置 IsActiveChanged 或者 OnToggleAsync 回调方法获得当前按钮 Toggle 状态" - }, - "BootstrapBlazor.Server.Components.Samples.PulseButtons": { - "Block1Title": "基础用法", - "Block1Intro": "基础的按钮用法。", - "PulseButtonHeader": "PulseButton 心跳按钮", - "PulseButtonPara": "适用于突出显示功能吸引使用者关注,按钮默认为圆形", - "PulseButtonPara2": "心跳按钮组件继承于按钮,所以在按钮原有功能基础上增加了一个心跳环,可参见网站右下角切换样式按钮" - }, - "BootstrapBlazor.Server.Components.Samples.Cascaders": { - "Title": "Cascader 级联选择", - "Block1Title": "Cascader 级联选择", - "Block1Intro": "提供各种颜色的下拉选择框", - "Block2Title": "Cascader 禁用级联选择", - "Block2Intro": "级联选择不可用状态", - "Block3Title": "Cascader 双向绑定", - "Block3Intro": "通过 Select 组件绑定 Value 属性,改变级联选择选项时,文本框内的数值随之改变。", - "Block3Desc": "通过设置 Clearable=\"true\" 参数,使组件获得焦点或者鼠标悬浮时显示一个 清除 小按钮", - "Block4Title": "Cascader 客户端验证", - "Block4Intro": "级联选择未选择时,点击提交按钮时拦截。", - "Block5Title": "绑定泛型为 Guid 结构", - "Block5Intro": "组件绑定值为 Guid 结构体示例", - "Block6Title": "显示标签", - "Block6Intro": "组件双向绑定时会根据条件自动判断是否显示标签文字", - "BlockParentSelectableTitle": "不允许选中父节点", - "BlockParentSelectableIntro": "组件只允许选中最后一级节点,点击父节点后不会触发事件", - "BlockShowFullLevelsTitle": "显示全路径", - "BlockShowFullLevelsIntro": "通过设置 ShowFullLevels 值控制是否显示全路径", - "Description": "前置标签显式规则与 BootstrapInput 组件一致 [传送门]", - "Att1": "是否显示前置标签", - "Att2": "前置标签显示文本", - "Att3": "未选择时的占位显示文字", - "Att3Default": "点击进行选择 ...", - "Att4": "样式", - "Att5": "颜色", - "Att6": "是否禁用", - "Att7": "数据集合", - "Event1": "级联选择选项改变时触发此事件", - "SubmitButtonText": "提交", - "ValidateButtonText": "验证", - "item1": "北京", - "item1_child1": "Brunswick", - "item1_child1_child": "so-and-so street", - "item1_child2": "Fitzroy", - "item1_child3": "Carlton", - "item1_child4": "Thornbury", - "item2": "上海", - "item2_child1": "Millsons Point", - "item2_child2": "Potts Point", - "item2_child3": "North Sydney", - "item3": "广州", - "item3_child1": "Brisbane", - "item3_child2": "Gold Cost", - "Divider1": "双向绑定显示标签", - "Divider2": "双向绑定不显示标签", - "Divider3": "自定义 DisplayText", - "CascaderText": "自定义城市" - }, - "BootstrapBlazor.Server.Components.Samples.CherryMarkdowns": { - "Header": "CherryMarkdown", - "Tip": "基于 CherryMarkdown 的富文本框组件", - "MarkdownsNote": "如果编辑内容过多,可能会触发 signalR 通讯中断问题,请自行调整 HubOptions 配置即可。", - "NormalTitle": "基础用法", - "NormalIntro": "使用双向绑定获取对应的 htmlmarkdown 内容", - "FileUploadTitle": "自行处理文件上传事件", - "FileUploadIntro": "使用OnFileUpload事件处理文件上传事件,支持直接粘贴图片到浏览器", - "CustomTitle": "自定义内容", - "CustomIntro": "通过ToolbarSettings自定义工具栏,通过EditorSettings自定义编辑器样式", - "ViewTitle": "浏览模式", - "ViewIntro": "纯浏览模式,没有编辑器", - "ApiTitle": "外部控制组件", - "ApiIntro": "使用CherryMarkdown的Api在外部控制内容", - "InsertCheckListButtonText": "插入一个CheckList", - "InsertPictureButtonText": "插入一张图片" - }, - "BootstrapBlazor.Server.Components.Samples.Checkboxs": { - "Title": "Checkbox 多选框", - "Description": "一组备选项中进行多选", - "NormalTitle": "基础用法", - "NormalIntro": "单独使用可以表示两种状态之间的切换,列头或者表头使用时可以表示三种状态之间的切换。组件支持泛型数据绑定,通过 TValue 设置绑定数据类型,通过 State 设置组件状态", - "DisabledTitle": "禁用复选框", - "DisabledIntro": "复选框不可用状态,通过 IsDisabled 设置组件是否可用", - "ShowLabelTitle": "颜色", - "ShowLabelIntro": "通过设置 Color 属性改变组件背景色", - "DisplayTextTitle": "大小", - "DisplayTextIntro": "通过设置 Size 属性改变组件大小", - "ShowAfterLabelTitle": "Label 文字", - "ShowAfterLabelIntro": "复选框显示文字,通过 DisplayText 设置组件显示文本,点击显示文字时组件状态也会进行翻转", - "ShowAfterLabelDescription": "设置 DisplayText 属性,或者通过双向绑定均可以显示文本信息", - "OnStateChangedTitle": "双向绑定 boolean 数据", - "OnStateChangedIntro": "绑定组件内变量,数据自动同步,绑定数据类型为 boolean 类型时自动翻转值", - "BindStringTitle": "双向绑定 string 数据", - "BindStringIntro": "绑定组件内变量,数据自动同步", - "ValidateFormTitle": "表单中使用", - "ValidateFormIntro": "在表单中使用 Checkbox 时,显示标签文字会放置到组件前面", - "ValidateFormDescription": "前置标签显式规则与 BootstrapInput 组件一致 [传送门]", - "ItemTemplateTitle": "项目模板", - "ItemTemplateIntro": "通过设置 ItemTemplate 自定义显示 UI", - "OnBeforeStateChangedTitle": "选中前回调方法", - "OnBeforeStateChangedIntro": "通过设置 OnBeforeStateChanged 回调方法,可取消选中逻辑", - "OnBeforeStateChangedText": "弹窗确认", - "OnBeforeStateChangedSwalTitle": "弹窗确认", - "OnBeforeStateChangedSwalContent": "是否更改选中状态", - "Att1": "是否显示前置标签", - "Att2": "是否显示后置标签", - "Att3": "前置标签显示文本", - "Att4": "是否禁用", - "Att5": "控件类型", - "OnBeforeStateChanged": "选择框状态改变前回调此方法", - "OnStateChanged": "选择框状态改变时回调此方法", - "StateChanged": "State 状态改变回调方法", - "StatusText1": "选中", - "StatusText2": "未选", - "StatusText3": "不确定", - "Checkbox2Text": "双向绑定", - "Checkbox3Text": "手写标签" - }, - "BootstrapBlazor.Server.Components.Samples.CheckboxLists": { - "Title": "CheckboxList 多选框组", - "CheckboxListsTip": "控件用于创建多选的复选框组", - "NormalTitle": "基础用法", - "NormalIntro": "通过数据绑定展现复选框组", - "NormalTips1": "通过 bind-Value 设置双向绑定数据值", - "NormalTips2": "通过 Items 设置候选数据源", - "NormalTips3": "通过 OnSelectedChanged 回调方法获取改变项实例", - "NormalTips4": "通过 ShowLabelTooltip=\"true\" 开启标签提示功能", - "ValidateFormTitle": "客户端验证", - "ValidateFormIntro": "内置于 ValidateForm 中使用", - "ValidateFormTips1": "可以通过改变窗口大小,体验自适应布局", - "ValidateFormTips2": "本例中绑定模型 BindItemName 字段,通过勾选项自动更改模型数据", - "ValidateFormTips3": "由于内置于 ValidateForm 表单内,本例中增加了 RequiredAttribute 必选要求验证,当取消所有选项后提示验证结果", - "ShowLabelTitle": "双向绑定集合", - "ShowLabelIntro": "绑定值为集合", - "ShowLabelTip": "TValue 设置为 IEnumerable<int> 泛型集合,绑定集合的 ValueField 指定字段必须与泛型类型一致", - "ItemTemplateTitle": "项目模板", - "ItemTemplateIntro": "通过设置 ItemTemplate 自定义显示 UI", - "EnumTitle": "双向绑定枚举", - "EnumIntro": "绑定值为枚举", - "EnumTip": "当 CheckboxList 绑定一个枚举集合时,Items 不需要指定,Items 会被自动设置成枚举里面所有的值,如果需要绑定部分值时,请自行提供枚举集合 Items", - "NoBorderTitle": "无边框", - "NoBorderIntro": "通过设置 ShowBorder=\"false\" 不显示边框", - "NoBorderTip": "当验证失败时显示红色边框", - "VerticalTitle": "竖向排列", - "VerticalIntro": "通过设置 IsVertical=\"true\" 使checkbox竖向排列", - "DisabledTitle": "禁用", - "DisabledIntro": "通过设置 IsDisabled=\"true\" 禁用", - "IsButtonTitle": "按钮复选框", - "IsButtonIntro": "设置 IsButton=\"true\",将复选框样式改为按钮样式", - "Att1": "数据源", - "Att2": "是否禁用", - "Att3": "组件值用于双向绑定", - "Att4": "是否竖向排列", - "Event1": "复选框状态改变时回调此方法", - "Header": "共", - "Counter": "项被选中 组件绑定值 value", - "item1": "张三", - "item2": "李四", - "item3": "王五", - "item4": "赵六", - "Foo": "张三,李四", - "Description": "TValue 设置为 IEnumerable<string> 泛型集合", - "AttributeMaxSelectedCount": "选项最大数", - "AttributeOnMaxSelectedCountExceed": "选项到达最大值后回调方法", - "MaxSelectedCountTitle": "最大选择数量", - "MaxSelectedCountIntro": "通过设置 MaxSelectedCount 属性控制最大可选数量,通过 OnMaxSelectedCountExceed 回调处理逻辑", - "MaxSelectedCountDesc": "选中节点超过 2 个时,弹出 Toast 提示栏", - "OnMaxSelectedCountExceedTitle": "可选最大数量提示", - "OnMaxSelectedCountExceedContent": "最多只能选择 {0} 项", - "CheckboxListGenericTitle": "泛型支持", - "CheckboxListGenericIntro": "通过 CheckboxListGeneric 组件和 SelectedItem<TValue> 开启泛型支持" - }, - "BootstrapBlazor.Server.Components.Samples.ColorPickers": { - "Title": "ColorPicker 颜色拾取器", - "Description": "选择颜色使用", - "NormalTitle": "基础用法", - "NormalIntro": "通过设置 Value 属性设定颜色值", - "ValueTitle": "设置初始值", - "ValueIntro": "通过设置 Value 属性设定颜色值", - "TemplateTitle": "显示模板", - "TemplateIntro": "通过设置 Template 自定义显示模板", - "ValueDescription": "设置 Value='@Value' 初始化默认值", - "BindValueTitle": "双向绑定", - "BindValueIntro": "通过设置 Value 属性设定颜色值", - "DisabledTitle": "禁用", - "DisabledIntro": "通过设置 IsDisabled 属性禁用此组件", - "FormatterTitle": "格式化", - "FormatterIntro": "通过设置 Formatter 回调方法设置显示值", - "ValidateFormTitle": "验证表单中使用", - "ValidateFormIntro": "内置于 ValidateForm 中使用", - "IsSupportOpacityTitle": "支持透明度", - "IsSupportOpacityIntro": "通过设置 IsSupportOpacity=\"true\" 开启透明度支持", - "EventOnValueChanged": "颜色改变回调委托方法", - "AttributeTemplate": "显示模板", - "AttributeFormatter": "显示颜色值格式化回调方法", - "AttributeIsSupportOpacity": "是否支持透明度", - "AttributeSwatches": "预设候选颜色", - "SupportOpacity": "支持透明", - "Disabled": "禁用" - }, - "BootstrapBlazor.Server.Components.Samples.DateTimePickers": { - "Title": "DatePicker 日期选择器", - "Description": "用于选择或输入日期", - "NormalTitle": "选择日", - "NormalIntro": "以「日」为基本单位,基础的日期选择控件", - "ShowIconTitle": "是否显示组件图标", - "ShowIconIntro": "通过设置 ShowIcon=\"false\" 不显示组件图标节约空间", - "ValidateFormTitle": "客户端验证", - "ValidateFormIntro": "根据自定义验证规则进行数据有效性检查并自动提示", - "IsEditableTitle": "手工录入", - "IsEditableIntro": "通过设置 IsEditable=\"true\" 开启手工录入日期功能", - "DateTimeOffsetTitle": "点击弹出日期框", - "DateTimeOffsetIntro": "以「日」为基本单位,基础的日期选择控件,此示例绑定 DateTimeOffset 数据类型", - "BindValueTitle": "数据双向绑定", - "BindValueIntro": "日期组件时间改变时文本框内的数值也跟着改变,通过设置 IsEditable=\"true\" 开启手工录入功能", - "ViewModeTitle": "带时间的选择器", - "ViewModeIntro": "在同一个选择器里选择日期和时间,点击确认按钮后关闭弹窗", - "ViewModeTip": "设置 ViewMode 属性值为 DatePickerViewMode.DateTime", - "NullValueTitle": "允许空时间", - "NullValueIntro": "多用于条件选择", - "NullValueTip": "绑定值为可为空类型 DateTime? 时自动出现 清空 按钮", - "ShowLabelTitle": "显示标签", - "ShowLabelIntro": "作为表单组件时,显示组件前方标签", - "ShowLabelTip": "设置 DisplayText 属性值为 选择时间, 前置标签显式规则与 BootstrapInput 组件一致 [传送门]", - "DisabledTitle": "禁用", - "DisabledIntro": "设置 IsDisabled 属性值为 true 时,组件禁止输入", - "ShowSidebarTitle": "带快捷键侧边栏", - "ShowSidebarIntro": "设置 ShowSidebar 属性值为 true 时,组件显示快捷方式侧边栏", - "MinValueTitle": "设置值范围", - "MinValueIntro": "设置 MinValue 属性值与 MaxValue 限制可选值范围,本例中设置范围为 45 天", - "BlockAutoCloseTitle": "自动关闭", - "BlockAutoCloseIntro": "设置 AutoClose 属性值,设置选中日期后自动关闭弹出框", - "BlockAutoCloseDesc": "AutoClose 默认值为 true 点选日期时自动关闭弹窗,设置值为 false 时,需要点击 确认 按钮时关闭弹窗", - "BlockGroupTitle": "组合使用", - "BlockGroupIntro": "内置 BootstrapInputGroup 中使用,与 BootstrapInputGroupLabel 组合使用", - "Att1": "是否显示前置标签", - "Att2": "是否显示快捷侧边栏", - "Att3": "前置标签显示文本", - "Att4": "日期格式字符串 默认为 yyyy-MM-dd", - "Att6": "是否禁用 默认为 false", - "Att8": "组件值与 ValueChanged 作为双向绑定的值", - "Att9": "获得/设置 组件显示模式 默认为显示年月日模式", - "AttrAutoClose": "选中日期后是否自动关闭弹窗", - "AttrIsEditable": "是否允许手动录入日期", - "Event1": "确认按钮回调委托", - "Event2": "组件值改变时回调委托供双向绑定使用", - "BlockGroupLabel": "前置标签", - "BlockGroupSuffixLabel": "后置标签", - "DisplayText": "选择时间", - "SubmitText": "保存", - "Value": "属性", - "Value.Required": "{0}为必填项", - "ValidateFormValue": "时间", - "DateTimePickerTitle": "时间选择", - "DateTimePickerIntro": "通过时钟表盘选择时分秒,获取当前的日期和时间。", - "DayTemplateTitle": "自定义日期显示", - "DayTemplateIntro": "通过设置 DayTemplate 自定义显示模板,禁用的日期模板为 DayDisabledTemplate", - "AttrShowLunar": "是否显示农历", - "AttrShowSolarTerm": "是否显示 24 节气", - "AttrShowFestivals": "是否显示节日", - "AttrShowHolidays": "是否显示法定假日", - "Feature": "功能体验区", - "FeatureShowLunar": "显示农历", - "FeatureShowSolarTerm": "24 节气", - "FeatureShowFestivals": "节日", - "FeatureShowHolidays": "法定假日", - "FeatureIntro": "假日功能依赖组件包 BootstrapBlazor.Holiday [传送门]", - "FeatureFestivalIntro": "节日功能由组件库内置服务 ICalendarFestivals 提供,内置默认实现提供了 12 个公历节日与 7 个农历节日,可以通过自定义节日服务进行扩展,详细功能介绍请参阅 节日服务 文档 [传送门]", - "DisableOptions": "组合禁用条件", - "DisableWeekend": "禁用周末", - "DisableToday": "禁用今天", - "DisableDayCallbackTitle": "自定义禁用日期", - "DisableDayCallbackIntro": "通过设置 OnGetDisabledDaysCallback 自定义哪些日期需要被禁用", - "DisableDayCallbackTip": "

        请注意

        • 组件赋值为禁用日期时,组件默认仍然显示其值,如果需要将禁用日期显示为 空字符串 请设置 DisplayDisabledDayAsEmpty=\"true\"
        • 本例为稍微复杂逻辑判断禁用日期,禁用日期为组合条件,所以当条件更改时需要调用组件实例方法 ClearDisabledDays 清除内部缓存

        本例中第一个组件由于设置了 DisplayDisabledDayAsEmpty=\"true\" 所以组件值为 DateTime.Today 显示值为 空字符串

        本例中第二个组件数据类型为 不可为空类型 由于参数 AutoToday 默认值为 true 所以即使初始化值为 DateTime.MinValue 其显示值为 DateTime.Today 即使当禁用今天时,仍然显示,如果需要显示 空字符串 请设置 DisplayDisabledDayAsEmpty=\"true\"
        ", - "DisableDayCallbackAllowNullDisplayText": "可为空类型", - "DisableDayCallbackNotAllowNullDisplayText": "不可为空类型", - "FeatureShowLunarIntro": "ShowLunar 是否显示农历", - "FeatureShowSolarTermIntro": "ShowSolarTerm 是否显示 24 节气", - "FeatureShowFestivalsIntro": "ShowFestivals 是否显示节日", - "FeatureShowHolidaysIntro": "ShowHolidays 是否显示假日", - "OnGetDisabledDaysCallbackEvent": "获得自定义禁用日期回调方法", - "AttrEnableDisabledDaysCache": "是否启用获得自定义禁用日期缓存", - "AttrDisplayDisabledDayAsEmpty": "显示禁用日期为空字符串", - "AttrFirstDayOfWeek": "设置每周第一天" - }, - "BootstrapBlazor.Server.Components.Samples.TimePickers": { - "Title": "TimePicker 时间选择器", - "Description": "用于选择或输入时刻", - "OnConfirmTitle": "选择任意时间点", - "OnConfirmIntro": "可以选择任意时间", - "HasSecondsTitle": "隐藏秒数", - "HasSecondsIntro": "控制是否显示秒数控件", - "TimeTitle": "数据双向绑定", - "TimeIntro": "点击确认按钮时间选择框值与文本框值一致" - }, - "BootstrapBlazor.Server.Components.Samples.ClockPickers": { - "Title": "ClockPicker 时间选择器", - "Description": "通过拖动表针选择时间", - "BindValueTitle": "数据双向绑定", - "BindValueIntro": "通过设置 IsAutoSwitch=\"false\" 禁止小时、分钟、秒表盘自动切换功能", - "AutoSwitchText": "是否自动切换表盘", - "HasSecondsTitle": "不设置秒数", - "HasSecondsIntro": "通过设置 ShowSecond=\"false\" 不显示秒针表盘", - "ShowMinuteTitle": "不设置分钟", - "ShowMinuteIntro": "通过设置 ShowMinute=\"false\" 不显示分针表盘", - "ShowClockScaleTitle": "显示表盘刻度", - "ShowClockScaleIntro": "通过设置 ShowClockScale=\"true\" 显示表盘刻度", - "IsAutoSwitchAttr": "是否自动切换 小时、分钟、秒 自动切换", - "ShowClockScaleAttr": "是否显示表盘刻度", - "ShowMinuteAttr": "是否显示分钟", - "ShowSecondAttr": "是否显示秒" - }, - "BootstrapBlazor.Server.Components.Samples.Editors": { - "EditorsTitle": "Editor 富文本框", - "EditorsDescription": "将输入的文字转化为 html 代码片段", - "EditorsTips": "Editor 组件是对 Summernote 组件 的二次封装,如需使用本地化功能请自行官网下载相对应语言包,自行引用即可,zh-CN en-US 已内置;组件所需 css JavaScript 均按需动态加载,使用者无需设置。由于 summernote 组件依赖 jQuery,所以需要自行引用 jQuery 脚本包。如果编辑内容过多,可能会触发 signalR 通讯中断问题,请自行调整 HubOptions 配置即可。", - "EditorsUploadDesc": "文件上传回调", - "EditorsUploadDesc2": "组件设置回调后,在组件中选择文件上传时,会以 EditorUploadFile 实例形式返回给调用者,通过其属性 Stream 可以实现保存到服务器或者直接存储到 云对象存储(OSS)中。回调返回值为文件存储后用于预览的 Url", - "EditorNormalTitle": "基础用法", - "EditorNormalIntro": "默认呈现为 div 点击后变为富文本编辑框", - "EditorNormalDescription": "通过设置 IsEditor 属性值来控制组件默认是 div 还是 editor", - "EditorNormalDiv": "我是一个普通的 div 点击无法编辑", - "EditorPlaceholderTitle": "自定义提示信息", - "EditorPlaceholderIntro": "通过设置 Placeholder 属性来设置空值时的提示消息", - "EditorPlaceholderDescription": "默认提示是 点击后进行编辑", - "EditorIsEditorTitle": "默认显示为富文本编辑框", - "EditorIsEditorIntro": "通过设置 IsEditor 属性来设置组件直接显示为富文本编辑框,上传图片时可以通过 OnFileUpload 回调方法获得图片信息", - "EditorHeightTitle": "自定义高度", - "EditorHeightIntro": "通过设置 Height 属性来设置组件高度", - "EditorOnValueChangedTitle": "双向绑定", - "EditorOnValueChangedIntro": "实战中通过双向绑定到 Value 后台自动获取到客户端富文本框编辑内容", - "EditorOnValueChangedDescription": "通过 bind-ValueEditorValue 后台属性进行双向绑定,编辑框内进行编辑后点击 完成 按钮,下方文本框内即可显示编辑后结果", - "EditorCustomerToolbarButtonsTitle": "自定义扩展编辑框按钮", - "EditorCustomerToolbarButtonsIntro": "通过设置 CustomerPluginItems 属性对编辑框工具栏进行自定义扩展, 通过设置 OnClickPluginItem 回调委托做功能", - "EditorCustomerToolbarButtonsDescription": "本例中通过扩展 CustomerPluginItems 属性在工具栏中增加了两个按钮,点击按钮弹出 SweetAlert 模态框,点击模态框确认按钮后文本框中插入一段内容", - "EditorToolbarItemsTitle": "自定义工具栏的富文本编辑框", - "EditorToolbarItemsIntro": "通过设置 ToolbarItems 属性自定义工具栏内容,目前支持的工具栏值请参见 Summernote 官网", - "EditorToolbarItemsDescription": "本例中通过设置 ToolbarItems 属性,更改默认可用的工具栏按钮", - "EditorSubmitTitle": "提交按钮", - "EditorSubmitIntro": "通过设置 ShowSubmit 控制是否显示工具栏最后的 提交 按钮", - "EditorSubmitDescription": "ShowSubmit 默认值为 true 显示提交按钮,设计上点击提交按钮后,才触发 OnValueChanged 回调方法此设计大大提高性能节约服务器算力,设置值为 false 后将使用 summernodeonChange 触发,适用需要实时获取编辑内容场景", - "Att1": "空值时的提示信息", - "Att1DefaultValue": "点击后进行编辑", - "Att2": "是否直接显示为富文本编辑框", - "AttrShowSubmit": "是否显示提交按钮", - "Att3": "组件高度", - "Att4": "富文本框工具栏工具", - "Att5": "自定义按钮", - "DoMethodAsyncTitle": "实例方法", - "DoMethodAsyncIntro": "使用实例方法从外部操作 Editor,具体的参数参照 summernote api", - "DoMethodAsyncDescription": "本例中通过设置 ToolbarItems 属性,更改默认可用的工具栏按钮", - "EditorEmptyPlaceholder": "自定义空值的提示信息", - "EditorOnValueChangedLabel": "显示编辑内容:", - "EditorOnValueChangedUpdateValue": "更改后的值", - "EditorOnValueChangedInitValue": "初始值 Test", - "ToolTip1": "这是 plugin1 的提示", - "ToolTip2": "这是 plugin2 提示", - "Swal1Title": "点击plugin1按钮后弹窗", - "Swal1Content": "点击插件按钮后弹窗并确认后才进行下一步处理", - "Ret1": "
        从plugin1返回的数据
        ", - "Swal2Title": "点击 plugin2 按钮后弹窗", - "Swal2Content": "点击插件按钮后弹窗并确认后才进行下一步处理", - "Ret2": "从plugin2返回的数据", - "DoMethodAsyncButton1": "插入一段 Html", - "DoMethodAsyncButton2": "将段落修改为 H2", - "DoMethodAsyncButton3": "添加一张图片", - "DoMethodAsyncButton4": "获得组件内容", - "DoMethodAsyncPasteHTML": "这里是外部按钮插入的内容", - "OnFileUploadAttribute": "文件上传回调方法" - }, - "BootstrapBlazor.Server.Components.Samples.EditorForms": { - "Title": "EditorForm 表单组件", - "Description": "通过绑定数据模型自动呈现编辑表单", - "SubDescription": "EditorForm 组件是一个非常实用的组件,当进行数据编辑时,仅需要将 Model 属性赋值即可。", - "EditorFormTips1": "绑定模型默认自动生成全部属性,可以通过设置 AutoGenerateAllItem 更改为不自动生成", - "EditorFormTips2": "如不需要编辑列,设置 Editable 即可,默认值为 true 生成编辑组件", - "EditorFormTips3": "复杂编辑列,设置 EditTemplate 模板,进行自定义组件进行编辑", - "EditorFormTips4": "表单内按钮可以设置多个,设置 Buttons 模板即可", - "NormalTitle": "基础用法", - "NormalIntro": "通过绑定 TModel 数据模型,自动生成模型各个字段的可编辑表单", - "NormalDescription": "直接绑定模型 Model,设置 Education Complete 字段不显示", - "ValidateFormTitle": "开启数据验证", - "ValidateFormIntro": "通过嵌套 ValidateForm 组件实现数据合规检查功能", - "ValidateFormTips1": "组件内置到 ValidateForm 内开启数据合规检查功能,爱好 字段使用 EditTemplate 模板自定义组件呈现数据", - "ValidateFormTips2": "通过设置 Readonly 属性,使 生日 字段为只读", - "AutoGenerateTitle": "默认不自动生成", - "AutoGenerateIntro": "通过设置属性 AutoGenerateAllItem 值为 false,禁止自动生成属性,通过设置 FieldItems 内部集合来控制显示属性", - "SkipValidateTitle": "表单组件内的组件绑定与模型无关的字段", - "SkipValidateIntro": "通过设置属性 AutoGenerateAllItem 值为 false,禁止自动生成属性,通过设置 FieldItems 内部集合来控制显示属性", - "ItemsPerRowTitle": "设置每行显示控件数量", - "ItemsPerRowIntro": "通过设置 ItemsPerRow 属性值来控制布局", - "ItemsPerRowDescription": "本示例设置 ItemsPerRow=3 每行显示 3 个组件", - "AlignmentTitle": "自定义渲染组件类型", - "AlignmentIntro": "通过设置 CompnentType 属性值来控制渲染组件类型", - "AlignmentTips1": "Inline 布局模式下通过设置 LabelAlign=\"Alignment.Right\" 使表单内标签右对齐", - "AlignmentTips2": "Inline 布局模式下通过设置 LabelWidth 值调整标签宽度,默认未设置使用全局样式变量 --bb-row-label-width 值,默认值为 120px", - "AlignmentTips3": "Buttons 模板内可嵌套 div 并设置样式 text-end 使按钮右侧对齐", - "EditorFormAttributeTitle": "EditorItem 属性", - "Att1": "当前绑定数据模型", - "Att2": "绑定列模板", - "Att3": "按钮模板", - "Att4": "是否显示 Label", - "Att5": "是否生成所有属性", - "Att6": "每行显示组件数量", - "Att7": "设置组件布局方式", - "Att8": "Inline 布局模式下标签对齐方式", - "Att9": "当前绑定数据值", - "Att10": "绑定列数据类型", - "Att11": "是否允许编辑", - "Att12": "是否只读", - "Att13": "编辑列前置标签名", - "Att14": "列编辑模板", - "LabelWidthAttr": "标签宽度", - "IsDisplay": "是否显示为 Display 组件", - "ShowLabelTooltip": "鼠标悬停标签时显示完整信息", - "GroupBoxTitle": "表单示例", - "SubButtonText": "提交", - "TestName": "张三", - "TestAddress": "测试地址", - "AutoGenerateDescription": "本例中通过设置 AutoGenerateAllItem 值为 false,关闭自动生成功能,通过手动增加两个 EditorItem 编辑项来呈现表单编辑", - "SkipValidateDescription": "在某些情况下表单中有些列的值可能是二级分类等等,需要知道一级分类的信息,这个时候一级分类需要额外的组件来呈现,如果 Select,而这个组件是与当前上下文绑定模型 Model 无关的,这种需求中通过设置 SkipValidate 值为 true,关闭此组件的模型验证功能即可", - "IsDisplayTitle": "只读表单", - "IsDisplayIntro": "通过设置 IsDisplay=\"true\" 使整个表单不可编辑" - }, - "BootstrapBlazor.Server.Components.Samples.FloatingLabels": { - "FloatingLabelsTitle": "FloatingLabel 输入框", - "FloatingLabelsSubtitle": "通过鼠标或键盘输入字符", - "FloatingLabelNormalTitle": "基础用法", - "FloatingLabelNormalIntro": "提供基本的文本录入组件", - "FloatingLabelDisplayTextTitle": "单向绑定数据", - "FloatingLabelDisplayTextIntro": "显示组件内变量值", - "FloatingLabelBindValueTitle": "客户端验证", - "FloatingLabelBindValueIntro": "根据自定义验证规则进行数据有效性检查并自动提示", - "FloatingLabelBindValueDisplayText": "客户端验证", - "FloatingLabelPasswordTitle": "密码框", - "FloatingLabelPasswordIntro": "通过设置属性 type 值为 password 使输入文字后以 * 进行屏蔽的密码输入框", - "FloatingLabelPasswordDescription": "为了支持更多的文本框属性本组件可以直接写入 type='email' type='number' type='phone'html5 新标准支持的全部属性值,组件未设置 type 值时使用默认的 type='text'", - "FloatingLabelPasswordDisplayText": "密码框", - "FloatingLabelFormatStringTitle": "泛型绑定", - "FloatingLabelFormatStringIntro": "BootstrapInput 组件双向绑定值是泛型的,本例中双向绑定一个 int 类型数值", - "FloatingLabelFormatStringDisplayText": "泛型绑定", - "FloatingLabelFormatStringDiv1": "绑定数值: {0}", - "FloatingLabelDisabledTitle": "禁用", - "FloatingLabelDisabledIntro": "设置 IsDisabled 属性值为 true 时,组件禁止输入", - "FloatingLabelDisabledDisplayText": "禁用", - "FloatingLabelFormatterTitle": "自定义格式", - "FloatingLabelFormatterIntro": "设置 FormatString 属性值为 yyyy-MM-dd 时,组件显示的时间格式为年月日", - "FloatingLabelFormatterDiv2": "设置", - "FloatingLabelFormatterDescription": "BootstrapInput 组件绑定 byte[] 数组,格式化成 base64 编码字符串示例", - "FloatingLabelFormatterDisplayText": "字节数组", - "FloatingLabelsTestName": "张三", - "FloatingLabelsChildContent": "验证控件", - "FloatingLabelsShowLabel": "是否显示前置标签", - "FloatingLabelsGroupBox": "是否显示为 GroupBox 样式", - "FloatingLabelsDisplayText": "前置标签显示文本", - "FloatingLabelsFormatString": "数值格式化字符串", - "FloatingLabelsFormatter": "TableHeader 实例", - "FloatingLabelsType": "控件类型", - "FloatingLabelsIsDisabled": "是否禁用 默认为 fasle", - "FloatingLabelGroupBoxTitle": "GroupBox 样式", - "FloatingLabelGroupBoxIntro": "设置 IsGroupBox 属性,组件显示为 GroupBox 样式" - }, - "BootstrapBlazor.Server.Components.Samples.Inputs": { - "InputsBaseUsage": "基础用法", - "InputsTitle": "Input 输入框", - "InputsDescription": "通过鼠标或键盘输入字符", - "InputsNormalIntro": "提供基本的文本录入组件", - "InputsNormalDescription": "可通过设置 IsAutoFocus 是否自动获取焦点,多个文本框设置自动获取焦点时最后执行的组件将会获得焦点", - "InputsColorTitle": "颜色", - "InputsColorIntro": "通过设置 Color 更改文本框边框颜色", - "InputsKeyboardTitle": "键盘响应", - "InputsKeyboardIntro": "使用 OnEnterAsync OnEscAsync 回调委托对 Enter ESC 按键进行回调响应", - "InputsPlaceholderTitle": "单向绑定数据", - "InputsPlaceholderIntro": "显示组件内变量值", - "InputsLabelsTitle": "双向绑定数据", - "InputsLabelsIntro": "绑定组件内变量,数据自动同步", - "InputsLabelsDescription": "BootstrapInput 组件开启双向绑定时,会根据绑定的 Model 属性值去自动获取 Display/DisplayName 标签值并且显示为前置 Label,通过 DisplayText 属性可以自定义显示前置标签,或者通过 ShowLabel 属性关闭前置标签是否显示", - "InputsValidateFormTitle": "客户端验证", - "InputsValidateFormIntro": "根据自定义验证规则进行数据有效性检查并自动提示", - "InputsValidateFormTips1": "使用双向绑定时会自动寻找资源文件中 Key 值为 {FieldName}.PlaceHolder 对应值作为 placeholder 显示,本例中 placeholder 值为资源文件中 Name.PlaceHolder 键对应值 required/不可为空", - "InputsPasswordTitle": "密码框", - "InputsPasswordIntro": "通过设置属性 type 值为 password 使输入文字后以 * 进行屏蔽的密码输入框", - "InputsPasswordDescription": "为了支持更多的文本框属性本组件可以直接写入 type='email' type=number' type='phone'html5 新标准支持的全部属性值,组件未设置 type 值时使用默认的 type='text'", - "InputsGenericTitle": "泛型绑定", - "InputsGenericIntro": "BootstrapInput 组件双向绑定值是泛型的,本例中双向绑定一个 int 类型数值", - "InputsGenericBindValue": "绑定值", - "InputsDisabledTitle": "禁用", - "InputsDisabledIntro": "设置 IsDisabled 属性值为 true 时,组件禁止输入", - "InputsFormatStringTitle": "自定义格式", - "InputsFormatStringIntro": "设置 FormatString 属性值为 yyyy-MM-dd 时,组件显示的时间格式为年月日", - "InputsPassword2Title": "密码框", - "InputsPassword2Intro": "使用 BootstrapPassword 组件", - "InputsTrimTitle": "修剪空白", - "InputsTrimIntro": "使用 IsTrim=\"true\" 可在输入内容的时候自动修剪空白", - "TrimDescription": "设置参数 IsTrim 值为 true 后,组件内的前后空格将会被裁减", - "InputsOnInputTitle": "文本框的值更改时触发", - "InputsOnInputIntro": "使用 UseInputEvent=\"true\" 文本框的值更改时触发,用于逐键响应场合", - "OnInputDescription": "设置参数 UseInputEvent 值为 true 后,每次按下键盘都会触发 ValueChange 事件", - "InputsAtt1": "验证控件", - "InputsAtt2": "是否显示前置标签", - "InputsAtt3": "前置标签显示文本", - "InputsAtt4": "颜色", - "InputsAtt5": "数值格式化字符串", - "InputsAtt6": "TableHeader 实例", - "InputsAtt7": "控件类型", - "InputsAtt8": "用户按下 Enter 键回调委托", - "InputsAtt9": "用户按下 Esc 键回调委托", - "InputsAtt10": "是否禁用", - "InputsAtt11": "是否自动获取焦点", - "IsSelectAllTextOnFocus": "获得焦点后自动选择输入框内所有字符串", - "IsSelectAllTextOnEnter": "Enter 键自动选择输入框内所有字符串", - "SelectAllTextAsync": "选择输入框内所有字符串方法", - "ValidateRules": "自定义验证集合", - "NormalPlaceHolder": "请输入 ...", - "IsSelectAllTextOnFocusLabel": "获得焦点时全选", - "IsSelectAllTextOnEnterLabel": "回车时全选", - "InputsKeyboardTips1": "请按键盘 Enter 或者 Esc 进行测试", - "InputsKeyboardTips2": "执行 @ref.SelectAllTextAsync() 选择输入框内所有字符串", - "PlaceHolder": "请输入 ...", - "InputsKeyboardLog": "按键触发 当前文本框值", - "InputsPlaceholderSpan": "单向绑定", - "InputsLabelsDivider1": "自定义标签", - "InputsLabelsTips1": "设置 DisplayText 值为 自定义标签", - "InputLabelsText": "自定义标签", - "InputsLabelsDivider2": "占位", - "InputsLabelsTps2": "无论是否设置 DisplayText 值,当 ShowLabeltrue 时均显示", - "InputsLabelsDivider3": "不占位", - "InputsLabelsTips3": "无论是否设置 DisplayText 值,当 ShowLabelfalse 时均不显示", - "TestName": "张三", - "InputsFormatStringSetting": "设置", - "InputsFormatStringTips": "BootstrapInput 组件绑定 byte[] 数组,格式化成 base64 编码字符串示例", - "UseInputEvent": "是否在文本框输入值时触发", - "IsTrim": "是否自动去除空格", - "ClearableTitle": "清除", - "ClearableIntro": "通过设置 Clearable=\"true\" 参数,使组件获得焦点或者鼠标悬浮时显示一个 清除 小按钮" - }, - "BootstrapBlazor.Server.Components.Samples.InputNumbers": { - "InputNumbersTitle": "InputNumber 组件", - "InputNumbersDescription": "仅允许输入标准的数字值,支持自定义范围及其他高级功能", - "InputNumbersNormalTitle": "基础用法", - "InputNumbersNormalIntro": "Number 数值类型显示文本框,移动端自动弹出数字键盘", - "InputNumbersRangeTitle": "区间限制用法", - "InputNumbersRangeIntro": "设置 Max Min 来控制数值区间范围 1-10", - "InputNumbersNullableTitle": "可为空数据类型", - "InputNumbersNullableIntro": "绑定可为空数据类型时,组件允许空字符串,输入非法数据如 1+2+3e 时组件 UI 值为空字符串", - "InputNumbersShowButtonTitle": "控制按钮", - "InputNumbersShowButtonIntro": "设置 ShowButton 参数来控制是否显示增加或减少的按钮", - "InputNumbersShowButtonDescription": "本例设置了最大值 10 最小值 0", - "InputNumbersStepTitle": "自定义步长", - "InputNumbersStepIntro": "设置 Step 参数来控制增加或减少的步长", - "InputNumbersColorTitle": "颜色", - "InputNumbersColorIntro": "设置 Color 参数来自定义按钮颜色", - "InputNumbersDateTypeTitle": "数据类型", - "InputNumbersDateTypeIntro": "本组件采用泛型支持 int short long float double decimal 基础数据类型", - "InputNumbersDisabledTitle": "禁用", - "InputNumbersDisabledIntro": "设置 IsDisabled 属性值为 true 时,组件禁止输入", - "InputNumbersValidateFormTitle": "显示标签", - "InputNumbersValidateFormIntro": "组件双向绑定时会根据条件自动判断是否显示标签文字", - "InputNumbersValidateFormDescription": "前置标签显式规则与 BootstrapInput 组件一致 [传送门]", - "InputNumbersAtt1": "当前值", - "InputNumbersAtt2": "可允许最大值", - "InputNumbersAtt3": "可允许最小值", - "InputNumbersAtt4": "步长", - "InputNumbersAtt5": "是否禁用 默认为 fasle", - "InputNumbersAtt6": "是否显示前置标签", - "InputNumbersAtt7": "前置标签显示文本", - "InputNumbersStep1": "步长默认为 1", - "InputNumbersStep10": "步长设置为 10", - "InputNumbersStep0.1": "步长设置为 0.1", - "InputNumbersColorDescription1": "显示按钮", - "InputNumbersColorDescription2": "无按钮", - "InputNumbersValidateFormDivider1": "双向绑定显示标签", - "InputNumbersValidateFormDivider2": "双向绑定不显示标签", - "InputNumbersValidateFormDivider3": "自定义 DisplayText", - "InputNumbersValidateFormInputText": "自定义", - "InputNumbersUseInputEventTitle": "OnInput 事件", - "InputNumbersUseInputEventIntro": "组件使用 OnInput 事件进行数值更新" - }, - "BootstrapBlazor.Server.Components.Samples.InputGroups": { - "InputGroupsTitle": "InputGroup 组件", - "InputGroupsDescription": "Input 的前后可以增加与一些标签和按钮,拼成一组。其排版格式紧凑,非常适合单行多列的场景,比如搜索等。", - "InputGroupsNormalTitle": "基础用法", - "InputGroupsNormalIntro": "在 Input 前增加标签,或者在 Input 后增加 Button", - "InputGroupsWidthTitle": "自定义宽度", - "InputGroupsWidthIntro": "通过设置 Width 参数,自定义标签宽度", - "InputGroupsMultipleTitle": "增加多个组件", - "InputGroupsMultipleIntro": "InputGroup 里面可以增加很多组件", - "InputGroupsSelectTitle": "下拉框组合", - "InputGroupsSelectIntro": "往 InputGroup 里面增加 Select", - "InputGroupsValidateFormTitle": "验证表单中", - "InputGroupsValidateFormIntro": "内置到 ValidateForm 中使用", - "InputGroupsNormalUserName": "用户名", - "InputGroupsMultipleDistance": "距离", - "InputGroupsCheckboxTitle": "复选框组合", - "InputGroupsCheckboxIntro": "往 InputGroup 里面增加 Checkbox 或者 CheckboxList", - "InputGroupsRadioTitle": "单选框组合", - "InputGroupsRadioIntro": "往 InputGroup 里面增加 RadioList", - "InputGroupsSlideButtonTitle": "SlideButton 组合", - "InputGroupsSlideButtonIntro": "往 InputGroup 里面增加 SlideButton", - "InputGroupsDateTimePickerTitle": "DateTimePicker/Range 组合", - "InputGroupsDateTimePickerIntro": "往 InputGroup 里面增加 DateTimePicker 或者 DateTimeRange", - "InputGroupsDropdownTitle": "Dropdown 组合", - "InputGroupsDropdownIntro": "往 InputGroup 里面增加 Dropdown", - "InputGroupsStatusText1": "复选项目", - "InputGroupsSwitchTitle": "Switch 组合", - "InputGroupsSwitchIntro": "往 InputGroup 里面增加 Switch" - }, - "BootstrapBlazor.Server.Components.Samples.Markdowns": { - "MarkdownsTitle": "Markdown 编辑器", - "MarkdownsDescription": "提供 Markdown 语法支持的文本编辑器", - "MarkdownsNote": "如果编辑内容过多,可能会触发 signalR 通讯中断问题,请自行调整 HubOptions 配置即可。", - "MarkdownsCss": "CSS 文件", - "MarkdownsCssText": "无需设置组件自动动态加载", - "MarkdownsJs": "JS 文件", - "MarkdownsJsText": "无需设置组件自动动态加载", - "MarkdownsLocalizationTipsTitle": "本地化", - "MarkdownsLocalizationTips": "组件内置中文,切换当前文化信息即可获得中文", - "MarkdownsNormalTitle": "普通用法", - "MarkdownsNormalIntro": "默认设置", - "MarkdownsNormalDescription": "输入 Markdown 相关代码后,点击下方相关区域显示数据", - "MarkdownsAsyncTitle": "异步加载数据", - "MarkdownsAsyncIntro": "通过 Webapi 获得 Markdown 显示内容", - "MarkdownsAsyncButtonText": "加载", - "MarkdownsCommonPropertyTitle": "常用属性", - "MarkdownsCommonPropertyIntro": "更改默认参数", - "MarkdownsCommonPropertyDescription": "设置 Markdown 编辑器最小高度 300px,默认高度 500px,提示信息这是 MarkdownTab 方式显示,默认显示所见即所得页面", - "MarkdownsCommonPropertyPlaceHolder": "这是 Markdown", - "MarkdownsIsViewerTitle": "浏览器模式", - "MarkdownsIsViewerIntro": "单纯浏览模式,不可编辑", - "MarkdownsIsDarkTitle": "暗黑模式", - "MarkdownsIsDarkIntro": "启用暗黑模式", - "MarkdownsEnableHighlightTitle": "启用代码高亮插件", - "MarkdownsEnableHighlightIntro": "使用 EnableHighlight=true 启用插件,使用```后加代码格式的方式使用高亮,如```js 则使用 js 高亮语法", - "MarkdownsBrowserTitle": "外部操作 Markdown", - "MarkdownsBrowserIntro": "使用 Api 从外部操作 Editor,具体的Api参照 tui.editor api", - "MarkdownsBrowserButtonText1": "插入一行文字", - "MarkdownsBrowserButtonText2": "插入一张图片", - "MarkdownsBrowserButtonText3": "光标移动到最后", - "MarkdownsBrowserText": "椰子树", - "MarkdownsValidateTitle": "客户端验证", - "MarkdownsValidateIntro": "根据自定义验证规则进行数据有效性检查并自动提示", - "MarkdownsValidateSubmitText": "提交", - "MarkdownString": "测试", - "MarkdownsIsViewerDescription": "设置 Markdown 编辑器为纯浏览模式,IsViewer='true'", - "Att1": "控件高度", - "Att2": "控件最小高度", - "Att3": "初始化时显示的界面", - "Att4": "预览模式", - "Att5": "UI 语言", - "Att6": "提示信息", - "Att7": "是否为纯浏览模式", - "Att8": "是否为暗黑模式", - "Att9": "是否启用代码高亮" - }, - "BootstrapBlazor.Server.Components.Samples.MultiSelects": { - "MultiSelectsTitle": "MultiSelect 多项选择器", - "MultiSelectsDescription": "当进行多项选项时,使用下拉菜单展示并提供搜索多项选择内容", - "MultiSelectColorTitle": "颜色", - "MultiSelectColorIntro": "提供各种颜色的多选下拉框", - "MultiSelectIsSingleLineTitle": "单行显示", - "MultiSelectIsSingleLineIntro": "通过设置 IsSingleLine=\"true\" 使组件始终渲染成一行", - "MultiSelectIsSingleLineDescription": "候选项过多时,组件横向布局,鼠标悬浮组件上时显示横向滚动条进行数据滚动", - "MultiSelectBindingStringTitle": "双向绑定值字符串", - "MultiSelectBindingStringIntro": "绑定一个逗号字符串分割的字符串", - "MultiSelectBindingStringDescription": "
        MultiSelect 组件数据源 Items选中值 SelectedItemsValue 均支持双向绑定;本例中通过双向绑定 SelectedItemsValue 变量,通过下拉框选择更改其值
        ", - "MultiSelectBindingCollectionTitle": "双向绑定值集合", - "MultiSelectBindingCollectionIntro": "绑定一个泛型 IEnumerable 集合", - "MultiSelectBindingCollectionDescription": "本例中通过双向绑定 SelectedArrayValues 集合变量,通过下拉框选择更改其值", - "MultiSelectBindingNumberTitle": "双向绑定值数组", - "MultiSelectBindingNumberIntro": "绑定一个数组 int[]", - "MultiSelectBindingNumberDescription": "本例中通过双向绑定 SelectedIntArrayValues 数组变量,通过下拉框选择更改其值", - "MultiSelectBindingEnumCollectionTitle": "双向绑定枚举集合", - "MultiSelectBindingEnumCollectionIntro": "绑定一个泛型 IEnumerable 集合", - "MultiSelectBindingEnumCollectionDescription": "本例中通过双向绑定 SelectedEnumValues 集合变量,通过下拉框选择更改其值,枚举 类型时无需设置 Items 参数,额外功能是组件内部会尝试查找资源文件或者 DisplayAttributeDescriptionAttribute 标签尝试进行本地化翻译工作,如本例切换到 中文 时枚举值为 小学中学", - "MultiSelectSearchTitle": "搜索功能", - "MultiSelectSearchIntro": "通过设置 ShowSearch 值开启搜索功能", - "MultiSelectSearchDescription": "本例中设置搜索回调委托方法 OnSearchTextChanged 进行自定义搜索结果,如果未设置时内部使用显示文本进行模糊匹配", - "MultiSelectFlagsEnumTitle": "Flags 枚举", - "MultiSelectFlagsEnumIntro": "绑定值为 Enum 数据类型时,如果枚举有 Flags 标签时,自动支持多选模式", - "MultiSelectGroupTitle": "分组", - "MultiSelectGroupIntro": "通过设置 GroupName 将下拉框中的备选项进行分组显示", - "MultiSelectDisableTitle": "禁用功能", - "MultiSelectDisableIntro": "通过设置 IsDisabled 值设置组件禁用状态", - "MultiSelectDisableDescription": "禁用状态时组件无任何响应", - "MultiSelectOptionChangeTitle": "选项改变时事件", - "MultiSelectOptionChangeIntro": "通过设置 OnSelectedItemsChanged 回调方法获取当前选中数据集合改变事件", - "MultiSelectClientValidationTitle": "客户端验证", - "MultiSelectClientValidationIntro": "下拉框未选择时,点击提交按钮时拦截。", - "MultiSelectClientValidationDescription": "内置到 ValidateForm 组件时,自动开启客户端验证功能,绑定模型拥有 Required 标签", - "MultiSelectDisplayLabelTitle": "显示标签", - "MultiSelectDisplayLabelIntro": "组件双向绑定时会根据条件自动判断是否显示标签文字", - "MultiSelectDisplayLabelDescription": "前置标签显式规则与 BootstrapInput 组件一致 [传送门]", - "MultiSelectVeryLongTextTitle": "选项超长文字", - "MultiSelectVeryLongTextIntro": "候选项文字特别长", - "MultiSelectButtonTitle": "全选与反选按钮", - "MultiSelectButtonIntro": "通过参数 ShowToolbar 控制是否显示工具栏,通过参数 ShowDefaultButtons 控制是否显示内置的三个按钮,通过参数 ShowSearch 控制是否显示搜索栏", - "MultiSelectMaxMinTitle": "设置选项最大数与最小数", - "MultiSelectMaxMinIntro": "通过设置 Max Min 值设置组件可选项数量限制", - "MultiSelectExpandButtonTitle": "扩展工具栏按钮", - "MultiSelectExpandButtonIntro": "通过设置 ButtonTemplate 自定义工具栏按钮实现自定义功能", - "MultiSelectCascadingTitle": "级联绑定", - "MultiSelectCascadingIntro": "通过选择第一个下拉框不同选项,第二个下拉框动态填充内容。", - "MultiSelectCascadingDescription": "本例中点击第一个下拉框,可以通过异步方法获取第二个多选框的数据源,进行赋值后,调用 StateHasChanged 进行对 多选框 重新渲染", - "MultiSelectItemTemplateTitle": "选项模板", - "MultiSelectItemTemplateIntro": "通过设置 ItemTemplate 设置下拉框中选项模板,可以自定义样式", - "MultiSelectDisplayTemplateTitle": "显示模板", - "MultiSelectDisplayTemplateIntro": "通过设置 DisplayTemplate 模板自定义显示样式", - "MultiSelectPopoverTitle": "悬浮弹窗", - "MultiSelectPopoverIntro": "通过设置 IsPopover 参数,组件使用 popover 渲染 UI 防止由于父容器设置 overflow: hidden; 使弹窗无法显示问题", - "MultiSelectsAttribute_ShowLabel": "是否显示前置标签", - "MultiSelectsAttribute_ShowCloseButton": "是否显示前置标签关闭按钮", - "MultiSelectsAttribute_ShowToolbar": "是否显示功能按钮", - "MultiSelectsAttribute_ShowDefaultButtons": "是否显示默认功能按钮", - "MultiSelectsAttribute_DisplayText": "前置标签显示文本", - "MultiSelectsAttribute_PlaceHolder": "未选择时的占位显示文字", - "MultiSelectsAttribute_PlaceHolder_DefaultValue": "点击进行多选 ...", - "MultiSelectsAttribute_Class": "样式", - "MultiSelectsAttribute_Color": "颜色", - "MultiSelectsAttribute_IsDisabled": "是否禁用", - "MultiSelectsAttribute_IsSingleLine": "是否单行显示", - "MultiSelectsAttribute_Items": "数据集合", - "MultiSelectsAttribute_ButtonTemplate": "扩展按钮模板", - "MultiSelectsAttribute_ItemTemplate": "选项模板", - "MultiSelectsAttribute_IsFixedHeight": "固定组件高度", - "MultiSelectsEvent_OnSelectedItemsChanged": "下拉框选项改变时触发此事件", - "MultiSelectsEvent_OnSearchTextChanged": "搜索文本发生变化时回调此方法", - "MultiSelectAdd": "添加", - "MultiSelectDecrease": "减少", - "MultiSelectClean": "清空", - "MultiSelectClientValidationSubmit": "提交", - "MultiSelectDisplayLabelShowLabel": "双向绑定显示标签", - "MultiSelectDisplayLabelHideLabel": "双向绑定不显示标签", - "MultiSelectDisplayLabelCustomDisplayText": "自定义 DisplayText", - "MultiSelectDisplayLabelCustomText": "自定义姓名", - "MultiSelectExpandButtonText": "测试", - "MultiSelectMaxMinMax": "最多可选择两个选项", - "MultiSelectMaxMinMin": "最少选择两个选项", - "MultiSelectSearchLog": "搜索文字", - "MultiSelectVeryLongTextDisplayText": "超长文字", - "MultiSelectOptionChangeLog": "选中项集合", - "MultiSelectIsEditableTitle": "可编辑", - "MultiSelectIsEditableIntro": "通过设置 IsEditable 参数,使组件可编辑", - "MultiSelectIsEditableDescription": "通过设置 EditSubmitKey 参数可以指定通过 Enter 还是 Space 进行提交", - "MultiSelectVirtualizeTitle": "虚拟滚动", - "MultiSelectVirtualizeIntro": "通过设置 IsVirtualize 参数开启组件虚拟功能特性", - "MultiSelectVirtualizeDescription": "组件虚拟滚动支持两种形式通过 Items 或者 OnQueryAsync 回调方法提供数据", - "MultiSelectsAttribute_ShowSearch": "是否显示搜索框", - "MultiSelectsAttribute_IsVirtualize": "是否开启虚拟滚动", - "MultiSelectsAttribute_DefaultVirtualizeItemText": "开启虚拟滚动时首次加载 Value 对应的文本字符串用逗号分割", - "MultiSelectGenericTitle": "泛型支持", - "MultiSelectGenericIntro": "数据源 Items 使用 SelectedItem<TValue> 时即可支持泛型" - }, - "BootstrapBlazor.Server.Components.Samples.Radios": { - "RadiosTitle": "Radio 单选框", - "RadiosDescription": "在一组备选项中进行单选", - "RadiosNormalTitle": "基础用法", - "RadiosNormalIntro": "由于选项默认可见,不宜过多,若选项过多,建议使用 Select 选择器", - "RadiosDisableTitle": "禁用单选框", - "RadiosDisableIntro": "通过 IsDisabled='true' 单选框不可用状态", - "RadiosLabelTitle": "Label 文字", - "RadiosLabelIntro": "单选框显示文字", - "RadiosLabelText": "按钮组", - "RadiosBindingTitle": "双向绑定数据", - "RadiosBindingIntro": "绑定组件内变量,数据自动同步,绑定数据类型为 SelectedItem 类型数组", - "RadiosVerticalTitle": "竖向排列", - "RadiosVerticalIntro": "通过设置 IsVertical 使组件内部竖向排列", - "RadiosEnumTitle": "绑定枚举类型", - "RadiosEnumIntro": "通过双向绑定 Value 无需设置 Items", - "RadiosEnumDescription": "通过设置 IsAutoAddNullItem 自动添加 空值 选项,通过设置 NullItemText 自定义 空值 选项", - "RadiosEnumText": "空值", - "RadiosColorTitle": "颜色", - "RadiosColorIntro": "通过设置 Color 属性改变组件背景色", - "RadiosIsButtonTitle": "按钮样式", - "RadiosIsButtonIntro": "通过设定 IsButton 值为 True 将候选项更改为按钮样式", - "RadiosItemTemplateTitle": "项目模板", - "RadiosItemTemplateIntro": "通过设置 ItemTemplate 自定义显示 UI", - "RadiosDisplayText": "显示文字", - "RadiosNullItemText": "空值显示文字", - "RadiosIsDisabled": "是否禁用", - "RadiosIsVertical": "是否垂直分布", - "RadiosIsAutoAddNullItem": "绑定可为空枚举类型时是否自动添加空值", - "RadiosItems": "绑定数据源", - "RadiosIsButton": "是否渲染为按钮", - "RadiosGroupName": "分组名称", - "RadiosOnSelectedChangedEvent": "复选框状态改变时回调此方法", - "RadiosLog1": "组件选中值:", - "RadiosLog2": "显示值:", - "RadiosLog3": "组件 Value 值:", - "RadiosItem1": "选项一", - "RadiosItem2": "选项二", - "RadiosAdd1": "北京", - "RadiosAdd2": "上海", - "RadioListGenericTitle": "泛型支持", - "RadioListGenericIntro": "通过使用 RadioListGeneric 组件配合 SelectedItem<TValue> 开启泛型支持", - "RadiosAutoSelectFirstWhenValueIsNullTitle": "自动选择第一候选项", - "RadiosAutoSelectFirstWhenValueIsNullIntro": "通过设置 AutoSelectFirstWhenValueIsNull 参数控制 RadioList 候选项选中情况,参数默认值为 true,即如果组件当前值与候选项中值无一致值时,自动选中第一个候选项,设置为 false 后,候选项将全部为未选中状态。", - "RadiosAutoSelectFirstWhenValueIsNull": "值未 null 时是否默认选中第一个候选项" - }, - "BootstrapBlazor.Server.Components.Samples.Rates": { - "RatesTitle": "Rate 评分", - "RatesDescription": "评分组件", - "RatesNormalTitle": "基础用法", - "RatesNormalIntro": "Rate 组件通过 1 - 5 颗星表示数值等级,后台可以通过 bind-Value 对数值进行双向绑定通过 Rate 组件更改其值,鼠标滑动更改值,点击星星时确认其值", - "RatesDisableTitle": "禁用", - "RatesDisableIntro": "通过设置 IsDisable 属性值禁用组件", - "RatesReadOnlyTitle": "只读", - "RatesReadOnlyIntro": "通过设置 IsReadonly 属性值使组件只读,有颜色不响应点击事件", - "RatesIconTitle": "模板", - "RatesIconIntro": "通过设置 ItemTemplate 模板,配合自定义样式 custom-rate实现复杂功能", - "RatesSwitchOn": "禁用", - "RatesSwitchOff": "启用", - "RatesValue": "组件值", - "RatesIsDisabled": "是否禁用 默认为 fasle", - "RatesIsReadonly": "是否只读 默认为 fasle", - "RatesEvent1": "值改变时回调委托", - "RatesMax": "最大值", - "RatesItemTemplate": "Item模板", - "RatesLog": "评星:", - "RatesCry": "大哭", - "RatesTear": "哭", - "RatesSmile": "笑", - "RatesSurprise": "惊讶", - "RatesGrin": "惊喜", - "RatesShowValueTitle": "显示评分", - "RatesShowValueIntro": "通过设置 ShowValue=\"true\" 使组件显示当前值", - "RatesIsWrapTitle": "自动折行", - "RatesIsWrapIntro": "通过设置 IsWrap=\"true\" 使组件自动折行,默认不折行", - "RatesIsWrap": "是否折行", - "RatesShowValue": "是否显示值" - }, - "BootstrapBlazor.Server.Components.Samples.Selects": { - "SelectsTitle": "Select 选择器", - "SelectsDescription": "当选项过多时,使用下拉菜单展示并选择内容", - "SelectsNormalTitle": "Select 下拉选择框", - "SelectsNormalIntro": "提供各种颜色的下拉选择框", - "SelectsNormalDescription": "本例中,第一个下拉框没有进行 Value 双向绑定,所以选择不同选项时仅自己变化,其余下拉框共用同一数据源 Items 并且双向绑定 Value 值,选择不同选项时一同变化", - "SelectsDisableTitle": "Select 禁用下拉框", - "SelectsDisableIntro": "选择器不可用状态", - "SelectsDisableOption": "下拉框内选项 禁用 示例", - "SelectsBindingTitle": "Select 双向绑定", - "SelectsBindingIntro": "通过 Select 组件绑定 Model.Name 属性,改变下拉框选项时,文本框内的数值随之改变。", - "SelectsClearableTitle": "可清空单选", - "SelectsClearableIntro": "包含清空按钮,可将选择器清空为初始状态", - "SelectsClearableDesc": "不可为空整形设置 IsClearable 无效,其默认值为 0", - "SelectsBindingSelectedItemTitle": "Select 双向绑定 SelectItem", - "SelectsBindingSelectedItemIntro": "通过 Select 组件绑定 SelectItem 属性,改变下拉框选项时,文本框内的数值随之改变。", - "SelectsCascadingTitle": "Select 级联绑定", - "SelectsCascadingIntro": "通过选择第一个下拉框不同选项,第二个下拉框动态填充内容。", - "SelectsCascadingButtonText1": "弹窗中级联示例", - "SelectsClientValidationTitle": "Select 客户端验证", - "SelectsClientValidationIntro": "下拉框未选择时,点击提交按钮时拦截。", - "SelectsOption1": "请选择 ...", - "SelectsOption2": "北京", - "SelectsOption3": "上海", - "SelectsOption4": "广州", - "SelectsClientValidationButtonText2": "提交", - "SelectsGroupTitle": "分组", - "SelectsGroupIntro": "备选项进行分组展示", - "SelectsGuidTitle": "绑定泛型为 Guid 结构", - "SelectsGuidIntro": "组件绑定值为 Guid 结构体示例", - "SelectsDisplayLabelTitle": "显示标签", - "SelectsDisplayLabelIntro": "组件双向绑定时会根据条件自动判断是否显示标签文字", - "SelectsDisplayLabelDescription": "前置标签显式规则与 BootstrapInput 组件一致 [传送门]", - "SelectsDisplayLabelDivider1": "双向绑定显示标签", - "SelectsDisplayLabelDivider2": "双向绑定不显示标签", - "SelectsDisplayLabelDivider3": "自定义 DisplayText", - "SelectsDisplayLabelSelectText": "自定义城市", - "SelectsStaticTitle": "静态数据", - "SelectsStaticIntro": "直接在 Select 组件内部进行硬编码书写,适用于静态数据下拉框", - "SelectsEnumTitle": "枚举数据", - "SelectsEnumIntro": "Select 组件绑定枚举类型示例", - "SelectsEnumDescription1": "当绑定值为可为空枚举类型时,组件内部自动通过 PlaceHolder 值添加首选项,未设置 PlaceHolder 值时,使用资源文件中的 请选择 ... 作为首选项,本示例绑定 EnumEducation 枚举类型", - "SelectsEnumDescription2": "绑定值为枚举类型时,设置 PlaceHolder 无效", - "SelectsEnumSelectText1": "可为空", - "SelectsEnumSelectText2": "不为空", - "SelectsEnumSelectText3": "使用枚举整形值作为集合", - "SelectsNullableTitle": "绑定可为空类型", - "SelectsNullableIntro": "Select 组件绑定 int? 类型示例", - "SelectsNullableDescription": "选中第一个选项时,绑定值 SelectedIntItemnull", - "SelectsNullableBooleanTitle": "绑定可为空布尔类型", - "SelectsNullableBooleanIntro": "Select 组件绑定 bool? 类型示例", - "SelectsNullableBooleanDescription1": "可为空布尔类型多用于条件搜索框中", - "SelectsNullableBooleanDescription2": "选中第一个选项时,绑定值 SelectedIntItemnull", - "SelectsCustomTemplateTitle": "自定义选项模板", - "SelectsCustomTemplateIntro": "通过设置 ItemTemplate 可以自定义选项渲染样式", - "SelectsShowSearchTitle": "带搜索框的下拉框", - "SelectsShowSearchIntro": "通过设置 ShowSearch 属性控制是否显示搜索框,默认为 false 不显示搜索框,可以通过设置 IsAutoClearSearchTextWhenCollapsed 参数控制下拉框收起后是否自动清空搜索框内文字,默认值为 false 不清空", - "SelectsConfirmSelectTitle": "带确认的下拉框", - "SelectsConfirmSelectIntro": "通过设置 OnBeforeSelectedItemChange 委托或者设置 ShowSwal 参数值为 true,阻止当前值的改变。", - "SelectConfirmSelectDesc1": "设置 OnBeforeSelectedItemChange 回调方法,在回调方法内自己弹窗确认是否更改值,返回 true 时更改,否则不更改", - "SelectConfirmSelectDesc2": "设置 ShowSwal=\"true\" 然后通过设置 SwalTitle SwalContent 参数值使用内置弹窗进行确认即可,在回调方法内自己弹窗确认是否更改值", - "SelectsTimeZoneTitle": "时区下拉框", - "SelectsTimeZoneIntro": "下拉框展现时区数据", - "SwalTitle": "下拉框值变更", - "SwalContent": "您确认要改变选项值吗?", - "SwalFooter": "点击确认改变选项值,选择取消后值不变", - "SelectsShowLabel": "是否显示前置标签", - "SelectsShowSearch": "是否显示搜索框", - "SelectsIsAutoClearSearchTextWhenCollapsed": "下拉框收起时是否自动清空搜索栏", - "SelectsDisplayText": "前置标签显示文本", - "SelectsClass": "样式", - "SelectsColor": "颜色", - "SelectsIsDisabled": "是否禁用", - "SelectsItems": "数据集合", - "SelectItems": "静态数据模板", - "SelectsItemTemplate": "数据选项模板", - "SelectsChildContent": "数据模板", - "SelectsCategory": "对话框图标", - "SelectsContent": "对话框内容", - "SelectsContentDefaultValue": "确定改变当前值吗?", - "SelectsDisableItemChangedWhenFirstRender": "禁止首次加载时触发 OnSelectedItemChanged 回调方法", - "SelectsOnSelectedItemChanged": "下拉框选项改变时触发此事件", - "SelectsOnBeforeSelectedItemChange": "下拉框选项改变前触发此事件", - "SelectsPlaceHolder": "未选择", - "SelectsDisplayTemplateTitle": "显示模板", - "SelectsDisplayTemplateIntro": "自定义选项显示 UI", - "SelectsPopoverTitle": "悬浮弹窗", - "SelectsPopoverIntro": "通过设置 IsPopover 参数,组件使用 popover 渲染 UI 防止由于父容器设置 overflow: hidden; 使弹窗无法显示问题", - "SelectsIsEditableTitle": "可编辑", - "SelectsIsEditableIntro": "通过设置 IsEditable=\"true\" 使组件可录入", - "SelectsIsEditableDesc": "开启可编辑功能后,输入值如果候选项中没有时,可以通过 TextConvertToValueCallback 回调方法返回新值,可以通过 OnInputChangedCallback 回调对 Items 数据源进行更新,防止页面刷新后输入值丢失", - "SelectsVirtualizeTitle": "虚拟滚动", - "SelectsVirtualizeIntro": "通过设置 IsVirtualize 参数开启组件虚拟功能特性", - "SelectsVirtualizeDescription": "组件虚拟滚动支持两种形式通过 Items 或者 OnQueryAsync 回调方法提供数据。如果数据源使用 OnQueryAsync 回调获得时只有当下拉框展开时才会触发,,如果数据源使用 Items 时,由于性能问题(有些开发会把几百万条数据给 Items)内部并没有进行查找选中项,所以需要设置 DefaultVirtualizeItemText 值应对首次加载时不知道如何显示问题", - "SelectsGenericTitle": "泛型支持", - "SelectsGenericIntro": "数据源 Items 使用 SelectedItem<TValue> 时即可支持泛型", - "SelectsGenericDesc": "

        请参考 设计思路 理解此功能。本例中通过选择下拉框选项,得到的值为 Foo 实例,右侧文本框内显示值为 Foo 属性 Address

        本例中设置 IsEditable=\"true\" 以及 TextConvertToValueCallback 参数,录入原数据源中不存在的 Foo 时,在 回调方法中添加新 Foo 实例到数据源中

        ", - "SelectsOnInputChangedCallback": "编辑模式下输入文本转换为对应 Value 回调方法", - "TextConvertToValueCallback": "编辑模式下输入文本变化时回调方法", - "SelectsIsEditable": "是否可编辑", - "SelectsIsVirtualize": "是否开启虚拟滚动", - "SelectsDefaultVirtualizeItemText": "开启虚拟滚动时首次加载 Value 对应的文本字符串用逗号分割", - "SelectsShowSwal": "是否显示 Swal 确认弹窗" - }, - "BootstrapBlazor.Server.Components.Samples.Sliders": { - "SlidersTitle": "Slider 滑块", - "SlidersDescription": "通过拖动滑块在一个固定区间内进行选择", - "SlidersNormalTitle": "基础用法", - "SlidersNormalIntro": "在拖动滑块时,改变当前值", - "SlidersRangeTitle": "Range 标签", - "SlidersIsDisabledTitle": "禁用", - "SlidersIsDisabledIntro": "通过设置 IsDisabled=\"true\" 禁用组件", - "SlidersRangeIntro": "通过设置绑定值标签 RangeAttribute 自动生成 min max", - "SlidersIsDisabled": "是否禁用", - "SlidersValue": "组件当前值", - "SlidersValueChanged": "ValueChanged 回调方法" - }, - "BootstrapBlazor.Server.Components.Samples.Switches": { - "SwitchesTitle": "Switch 开关", - "SwitchesDescription": "提供最普通的开关应用", - "SwitchesNormalTitle": "基础用法", - "SwitchesNormalIntro": "点击按钮切换状态", - "SwitchesNormalDescription": "点击第一个开关有值输出日志", - "SwitchesOnText": "开启", - "SwitchesOffText": "关闭", - "SwitchesDisableTitle": "禁用状态", - "SwitchesDisableIntro": "通过设置 IsDisabled 属性控制组件不可用状态", - "SwitchesColorTitle": "开关颜色", - "SwitchesColorIntro": "通过设置 OnColor OffColor 属性值,设置开关状态颜色", - "SwitchesBindingTitle": "双向绑定", - "SwitchesBindingIntro": "绑定组件内变量,数据自动同步", - "SwitchesBindingDescription1": "Switch 组件开启双向绑定时,会根据绑定的 Model 属性值去自动获取 DisplayName 标签值并且显示为前置 Label,通过 DisplayText 属性可以自定义显示前置标签,或者通过 ShowLabel 属性关闭前置标签是否显示", - "SwitchesBindingDescription2": "前置标签显式规则与 BootstrapInput 组件一致 [传送门]", - "SwitchesBindingDisplayText1": "双向绑定示例", - "SwitchesBindingDivText1": "绑定数值", - "SwitchesBindingDividerText1": "自定义标签", - "SwitchesBindingTips1": "设置 DisplayText 值为 自定义标签", - "SwitchesBindingDisplayText2": "自定义标签", - "SwitchesBindingDividerText2": "占位", - "SwitchesBindingTips2": "无论是否设置 DisplayText 值,当 ShowLabeltrue 时均显示", - "SwitchesBindingDividerText3": "不占位", - "SwitchesBindingTips3": "无论是否设置 DisplayText 值,当 ShowLabelfalse 时均不显示", - "SwitchesBindingDisplayText3": "不显示", - "SwitchesInnerTextTitle": "显示内置文字", - "SwitchesInnerTextIntro": "通过设置 ShowInnerText 属性控制组件显示内置文字", - "SwitchesInnerTextDescription": "通过设置 OnInnerText OffInnerText 属性更改内置文字,默认情况下建议使用一个汉字,可自定义组件宽度来增加内置文字数量", - "SwitchesInnerTextLabelText1": "默认文字:", - "SwitchesInnerTextLabelText2": "自定义文字:", - "SwitchesInnerTextOnInnerText": "是", - "SwitchesInnerTextOffInnerText": "否", - "SwitchesNullableTitle": "可为空类型的开关", - "SwitchesNullableIntro": "通过设置 DefaultValueWhenNull 属性控制 Null 值的默认值,未设置时为 false", - "SwitchesAttributeClass": "样式", - "SwitchesAttributeHeight": "控件高度", - "SwitchesAttributeIsDisabled": "是否禁用", - "SwitchesAttributeOffColor": "关颜色设置", - "SwitchesAttributeOnColor": "开颜色设置", - "SwitchesAttributeOnTextAttr": "组件 On 时显示文本", - "SwitchesAttributeOffTextAttr": "组件 Off 时显示文本", - "SwitchesAttributeOnInnerTextAttr": "组件 On 时内置显示文本", - "SwitchesAttributeOffInnerTextAttr": "组件 Off 时内置显示文本", - "SwitchesAttributeOnInnerTextDefaultValue": "开", - "SwitchesAttributeOffInnerTextDefaultValue": "关", - "SwitchesAttributeShowInnerText": "是否显示内置显示文本", - "SwitchesAttributeWidth": "组件宽度", - "SwitchesAttributeValue": "获取值", - "SwitchesAttributeShowLabel": "是否显示前置标签", - "SwitchesAttributeDisplayText": "前置标签显示文本", - "SwitchesAttributeOnValueChanged": "值发生改变时回调委托方法", - "SwitchesEventValueChanged": "获取选择改变的值" - }, - "BootstrapBlazor.Server.Components.Samples.TextAreas": { - "TextAreaPlaceHolder": "请输入 ...", - "TextAreaTitle": "Textarea 多行文本框", - "TextAreaSubTitle": "用于录入大量文字", - "TextAreaNormalTitle": "基础用法", - "TextAreaNormalIntro": "可接受大量文字", - "TextAreaLabel": "基础用法", - "TextAreaDisableTitle": "禁用", - "TextAreaDisableIntro": "设置 IsDisabled 属性值为 true 时,组件禁止输入", - "TextAreaBindWayBindValue": "绑定值", - "TextAreaReadOnlyTitle": "只读", - "TextAreaReadOnlyIntro": "设置 readonly 属性时,组件禁止输入", - "TextAreaHeightTitle": "高度", - "TextAreaHeightIntro": "设置 rows 属性时,组件初始化显示固定行数高度", - "TextAreaBindWayTitle": "双向绑定", - "TextAreaBindWayIntro": "绑定组件内变量,数据自动同步", - "TextAreaShowLabel": "是否显示前置标签", - "TextAreaDisplayText": "前置标签显示文本", - "TextAreaIsDisabled": "是否禁用 默认为 fasle", - "TextAreaScrollTitle": "内容滚动", - "TextAreaScrollIntro": "滚动到底部/顶部/指定位置", - "TextAreaMockChat": "模拟聊天 ", - "TextAreaMockChatRun": "开始模拟聊天", - "TextAreaMockChatStop": "停止模拟聊天", - "TextAreaScrollToBottom": "滚动到底部", - "TextAreaScrollToTop": "滚动到顶部", - "TextAreaScrollTo": "滚动+20", - "TextAreaAutoScroll": "自动滚屏", - "TextAreaUseShiftEnterTitle": "Shift Enter", - "TextAreaUseShiftEnterIntro": "通过设置 UseShiftEnter=\"true\" 开始使用 Shift + Enter 进行换行操作,适用于对话框类应用", - "TextAreaUseShiftEnterPlaceHolder": "请输入一些文字,Enter 发送 Shift + Enter 换行", - "TextAreaUseShiftEnter": "是否使用 Shift + Enter 代替原回车按键行为", - "TextAreaKeyEventTitle": "Enter/Esc 按键事件", - "TextAreaKeyEventIntro": "通过设置 OnEnterAsync OnEscAsync 开始 Enter Esc 按键回调事件", - "TextAreaKeyEventPlaceHolder": "按下 Enter/Esc 键触发事件" - }, - "BootstrapBlazor.Server.Components.Samples.Toggles": { - "TogglesOnText": "开启", - "TogglesOffText": "关闭", - "TogglesTitle": "Toggle 开关", - "TogglesSubTitle": "提供最普通的开关应用,值为 true false", - "TogglesNormalTitle": "基础用法", - "TogglesNormalIntro": "点击按钮切换状态", - "BasicUsageP": "点击第一个开关有值输出日志", - "TogglesDisableTitle": "禁用状态", - "TogglesDisableIntro": "开关不可用状态。", - "TogglesBindToWayTitle": "双向绑定数据", - "TogglesBindToWayIntro": "绑定组件内变量,数据自动同步", - "BindToWayP1": "Switch 组件开启双向绑定时,会根据绑定的 Model 属性值去自动获取 DisplayName 标签值并且显示为前置 Label,通过 DisplayText 属性可以自定义显示前置标签,或者通过 ShowLabel 属性关闭前置标签是否显示", - "BindToWayDisplayText1": "双向绑定示例", - "BindToWayDiv": "绑定数值:", - "CustomLabelText": "自定义标签", - "BindToWayP2": "设置 DisplayText 值为 自定义标签", - "BindToWayP3": "无论是否设置 DisplayText 值,当 ShowLabeltrue 时均显示", - "OccupantsText": "占位", - "NotOccupantsText": "不占位", - "BindToWayP4": "无论是否设置 DisplayText 值,当 ShowLabelfalse 时均不显示", - "NotDisplayText": "不显示", - "Color": "颜色", - "IsDisabled": "是否禁用", - "OffTextAttr": "组件 Off 时显示文本", - "OffTextDefaultValue": "收缩", - "OnTextAttr": "组件 On 时显示文本", - "OnTextDefaultValue": "展开", - "Width": "组件宽度", - "Value": "获取值", - "ShowLabel": "是否显示前置标签", - "DisplayText": "前置标签显示文本", - "OnValueChanged": "值发生改变时回调委托方法", - "ValueChanged": "获取选择改变的值", - "DisplayName": "绑定标签" - }, - "BootstrapBlazor.Server.Components.Samples.Transfers": { - "LeftPanelText": "左侧列表", - "LeftButtonText": "到左边", - "RightPanelText": "右侧列表", - "RightButtonText": "到右边", - "PlaceHolder": "请输入", - "TransfersTitle": "Transfer 穿梭框", - "TransferNormalTitle": "基础用法", - "TransferNormalIntro": "左边勾选候选项点击移动按钮将候选项移动到右侧", - "TransferCustomerTitle": "可自定义", - "TransferCustomerIntro": "可以对列表标题文案、按钮文案、数据项的渲染函数、列表底部的勾选状态文案、列表底部的内容区等进行自定义。", - "TransferSearchTitle": "可搜索", - "TransferSearchIntro": "在数据很多的情况下,可以对数据进行搜索和过滤。", - "TransferBindTitle": "双向绑定", - "TransferBindIntro": "组件数据发生变化时,双向绑定 bind-Value 值同步变化", - "TransferBindDescription": "Transfer 组件为泛型组件,支持三种绑定类型 string IEnumerable<string> IEnumerable<SelectedItem> 本例中双向绑定 SelectedValue 类型为 IEnumerable<SelectedItem>", - "BindToWayButtonText1": "增加", - "TransferValidateTitle": "客户端验证", - "TransferValidateIntro": "组件数据发生变化时,双向绑定 bind-Value 值同步变化", - "ClientValidationP1": "Transfer 组件内置于 ValidateForm 组件即开启客户端验证,本例中组件双向绑定 Model.Hobby 类型为 IEnumerable<string>", - "ClientValidationButtonText": "提交", - "TransferDisableTitle": "禁用", - "TransferDisableIntro": "设置 IsDisabled 属性值为 true 时,组件禁止输入", - "TransferItemClassTitle": "设置 Item 样式", - "TransferItemClassIntro": "通过设置 OnSetItemClass 回调方法根据 SelectedItem 值设置选项样式", - "Items": "组件绑定数据项集合", - "TransferMinMaxTitle": "最大最小值约束", - "TransferMinMaxIntro": "通过设置 Min Max 参数来限制选项个数", - "LeftButtonTextAttr": "左侧按钮显示文本", - "LeftPanelTextAttr": "左侧面板 Header 显示文本", - "LeftPanelDefaultValue": "列表 1", - "RightButtonTextAttr": "右侧按钮显示文本", - "RightPanelTextAttr": "右侧面板 Header 显示文本", - "RightPanelTextDefaultValue": "列表 2", - "ShowSearch": "是否显示搜索框", - "LeftPanelSearchPlaceHolderString": "左侧面板中的搜索框 placeholder 字符串", - "RightPanelSearchPlaceHolderString": "右侧面板中的搜索框 placeholder 字符串", - "IsDisabled": "是否禁用", - "OnSelectedItemsChanged": "组件绑定数据项集合选项变化时回调方法", - "OnSetItemClass": "设置 Item 样式回调方法", - "Data": "数据", - "Backup": "备选", - "LeftHeaderTemplate": "左侧数据 Header 模板", - "LeftItemTemplate": "左侧数据项模板", - "RightHeaderTemplate": "右侧数据 Header 模板", - "RightItemTemplate": "右侧数据项模板" - }, - "BootstrapBlazor.Server.Components.Samples.UploadAvatars": { - "UploadsTitle": "AvatarUpload 头像上传组件", - "UploadsSubTitle": "通过点击上传文件,通常用作上传预览一个或者一组类似头像的图片", - "UploadsNote": "如果上传文件过大,可能会触发 signalR 通讯中断问题,请自行调整 HubOptions 配置即可。", - "AvatarUploadTitle": "基本用法", - "AvatarUploadIntro": "通过设置 IsMultiple 控制是否允许多文件上传,通过设置 IsCircle 控制是否为圆角,通过设置 BorderRadius 控制圆角曲率。组件通过设置 OnChange 回调函数处理用户上传头像,如果未提供此回调时,将使用内置方法尝试读取上传文件生成 base64 格式预览数据", - "AvatarUploadTips3": "设置 IsSingle 时,仅可以上传一张图片或者文件", - "AvatarUploadTips5": "相关文档:[Accept 属性详解] [Media Types 详细列表]", - "AvatarUploadTips6": "通过 DefaultFileList 属性设置预览地址 PrevUrl 即可", - "AvatarUploadTips7": "验证表单内使用头像框示例", - "AvatarUploadButtonText": "提交", - "AvatarUploadValidateTitle": "ValidateForm", - "AvatarUploadValidateIntro": "放置到 ValidateForm 内集成自动数据验证功能,详情可以参考 ValidateForm 组件,本例中上传文件扩展名仅限制为 .png, .jpg, .jpeg,上传其他格式时会有错误提示,文件大小限制为 5M 超过时也会有错误提示显示", - "AvatarUploadAcceptTitle": "Accept", - "AvatarUploadAcceptIntro": "组件提供了 Accept 属性用于设置上传文件过滤功能,本例中圆形头像框接受 GIF 和 JPEG 两种图像,设置 Accept='image/gif, image/jpeg',如果不限制图像的格式,可以写为:Accept='image/*',该属性并不安全还是应该是使用 服务器端验证 进行文件格式验证", - "UploadsWidth": "预览框宽度", - "UploadsHeight": "预览框高度", - "UploadsIsCircle": "是否为圆形头像模式", - "UploadsBorderRadius": "预览框圆角曲率", - "UploadsValidateFormTitle": "表单应用", - "UploadsValidateFormValidContent": "数据合规,保存成功", - "UploadsValidateFormInValidContent": "数据不合规,请更正后再提交表单", - "UploadsFormatError": "文件格式不正确", - "UploadsAvatarMsg": "头像上传" - }, - "BootstrapBlazor.Server.Components.Samples.UploadInputs": { - "UploadsTitle": "InputUpload 上传组件", - "UploadsSubTitle": "通过点击浏览按钮弹出选择文件框选择一个或者多个文件进行上传", - "UploadsNote": "如果上传文件过大,可能会触发 signalR 通讯中断问题,请自行调整 HubOptions 配置即可。", - "UploadNormalTitle": "基础用法", - "UploadNormalIntro": "可以通过设置 ShowDeleteButton=\"true\" 显示 删除 按钮", - "UploadNormalLabelPhoto": "选择一个或者多个文件", - "UploadFormSettingsTitle": "表单应用", - "UploadFormSettingsIntro": "放置到 ValidateForm 内集成自动数据验证功能,详情可以参考 ValidateForm 组件", - "UploadFormSettingsLi1": "使用 ValidateForm 表单组件,通过设置模型属性的 FileValidation 标签设置自定义验证,支持文件 扩展名 大小 验证,本例中设置扩展名为 .png .jpg .jpeg,文件大小限制为 5M", - "UploadFormSettingsLi2": "选择文件后并未开始上传文件,点击 提交 按钮数据验证合法后,再 OnSubmit 回调委托中进行上传文件操作,注意 Picture 属性类型为 IBrowserFile", - "UploadFormSettingsButtonText": "提交", - "UploadsIsDirectory": "是否上传整个目录", - "UploadsIsMultiple": "是否允许多文件上传", - "UploadsShowProgress": "是否显示上传进度", - "UploadsDefaultFileList": "已上传文件集合", - "UploadsShowDeleteButton": "是否显示删除按钮", - "UploadsIsDisabled": "是否禁用", - "UploadsPlaceHolder": "占位字符串", - "UploadsBrowserButtonClass": "上传按钮样式", - "UploadsBrowserButtonIcon": "浏览按钮图标", - "UploadsBrowserButtonText": "浏览按钮显示文字", - "UploadsDeleteButtonClass": "删除按钮样式", - "UploadsDeleteButtonIcon": "删除按钮图标", - "UploadsDeleteButtonText": "删除按钮文字", - "UploadsDeleteButtonTextDefaultValue": "删除", - "UploadsAccept": "上传接收的文件格式", - "UploadsOnDelete": "点击删除按钮时回调此方法", - "UploadsOnChange": "点击浏览按钮时回调此方法" - }, - "BootstrapBlazor.Server.Components.Samples.UploadButtons": { - "UploadsTitle": "ButtonUpload 按钮上传组件", - "UploadsSubTitle": "通过点击按钮弹出选择文件框选择一个或者多个文件,通常用作上传文件附件", - "UploadsNote": "如果上传文件过大,可能会触发 signalR 通讯中断问题,请自行调整 HubOptions 配置即可。", - "ButtonUploadTitle": "基础用法", - "ButtonUploadIntro": "通过设置 ShowUploadFileList=\"true\" 可以显示上传文件列表,设置 ShowDeleteButton=\"true\" 显示 删除 按钮" - }, - "BootstrapBlazor.Server.Components.Samples.UploadCards": { - "UploadsTitle": "CardUpload 卡片上传组件", - "UploadsSubTitle": "通过点击按钮弹出选择文件框选择一个或者多个文件,呈现为卡片式带预览模式", - "UploadsNote": "如果上传文件过大,可能会触发 signalR 通讯中断问题,请自行调整 HubOptions 配置即可。", - "ButtonUploadTitle": "基础用法", - "ButtonUploadIntro": "使用 DefaultFileList 设置已上传的内容", - "UploadPreCardStyleTitle": "预览卡片式", - "UploadPreCardStyleIntro": "CardUpload 组件,呈现为卡片式带预览模式", - "UploadFileIconTitle": "文件图标", - "UploadFileIconIntro": "不同文件格式显示的图标不同", - "UploadFileIconTemplateTitle": "自定义文件图标", - "UploadFileIconTemplateIntro": "通过设置 IconTemplate 参数,使用 FileIcon 组件可以对文件图标进行进一步自定义 [FileIcon 示例]", - "UploadBase64Title": "Base64 格式文件", - "UploadBase64Intro": "通过设置 UploadFile 实例的 PrevUrl 参数值使用 data:image/xxx;base64,XXXXX 格式图片内容字符串作为预览文件路径", - "UploadsFileTitle": "文件上传", - "UploadsFileError": "文件大于 5M 请重新选择文件上传", - "UploadsSuccess": "文件保存成功", - "UploadsSaveFileError": "文件保存失败", - "UploadsWasmError": "wasm 模式请调用 api 进行保存", - "UploadActionButtonTemplateTitle": "自定义操作按钮", - "UploadActionButtonTemplateIntro": "通过设置 ActionButtonTemplate 参数,来自定义卡片上的操作按钮(在默认按钮后面追加),通过设置 BeforeActionButtonTemplate 参数,来自定义卡片上的操作按钮(在默认按钮前面追加)" - }, - "BootstrapBlazor.Server.Components.Samples.UploadDrops": { - "UploadsTitle": "DropUpload 拖拽上传组件", - "UploadsSubTitle": "通过点击组件或者拖拽或者粘贴上传一个或者多个文件", - "UploadsNote": "如果上传文件过大,可能会触发 signalR 通讯中断问题,请自行调整 HubOptions 配置即可。", - "DropUploadTitle": "基础用法", - "DropUploadIntro": "通过 OnChange 回调处理所有上传文件", - "DropUploadFooterText": "文件大小不超过 5Mb", - "UploadsBodyTemplate": "Body 模板", - "UploadsIconTemplate": "图标模板", - "UploadsTextTemplate": "文字模板", - "UploadsUploadIcon": "图标", - "UploadsUploadText": "上传文字", - "UploadsShowFooter": "是否显示 Footer", - "UploadsFooterTemplate": "Footer 字符串模板", - "UploadsFooterText": "Footer 字符串信息" - }, - "BootstrapBlazor.Server.Components.Samples.ValidateForms": { - "ChangeButtonText": "更改组件", - "ResetButtonText": "重置组件", - "ValidateFormsSubmitButtonText": "提交表单", - "ValidateFormsTitle": "ValidateForm 表单组件", - "ValidateFormsSubTitle": "可供数据合规检查的表单组件", - "ValidateFormNormalTitle": "基础用法", - "ValidateFormNormalIntro": "放置到 ValidateForm 中的组件提交时自动进行数据合规检查", - "ValidateFormNormalBasicUsageDescription": "组件说明:", - "ValidateFormNormalLi1": "ValidateForm 组件支持异步设置 Model 值", - "ValidateFormNormalLi2": "表单事件为 OnValidSubmit OnInvalidSubmit", - "ValidateFormNormalLi3": "Model 参数为必填项不允许为空", - "ValidateFormNormalLi4": "表单内可以放置多个按钮,通过设置 ButtonType='ButtonType.Submit' 参数是否提交表单", - "ValidateFormNormalLi5": "客户端验证机制支持模型的 Required 标签,通过设置 ErrorMessage 参数设置提示信息,未设置时使用默认的英文提示信息", - "ValidateFormNormalLi6": "表单默认检查表单内绑定字段值是否合法,如需要检查模型所有字段时可设置 ValidateAllProperties 属性值为 true", - "ValidateFormNormalLi7": "通过设置提交按钮 Button 属性 IsAsync 值,设置异步提交表单", - "ValidateFormNormalLi8": "表单内组件通常用法都是使用双向绑定技术对 Model 的属性值进行双向绑定,当其值改变时会导致所在组件 StateHasChanged 方法被调用,即其所在组件或者页面进行刷新重新渲染", - "ValidateFormNormalLi9": "表单内组件控件的值修改后 OnFieldChanged 方法被调用", - "ValidateFormNormalFormLabelWidth": "组件前置标签默认宽度为 120px 六个汉字,如需要更多汉字请在项目样式文件中更改样式变量 --bb-row-label-width 即可,或者设置表单显示标签在组件上方", - "ValidateFormNormalBasicUsageDescription2": "注意事项:", - "ValidateFormInnerComponentTitle": "内置组件", - "ValidateFormInnerComponentIntro": "放置支持表单组件到 ValidateForm 中", - "ValidateFormInnerComponentInnerComponentLabel": "支持表单验证的组件示例", - "ValidateFormInnerComponentInnerComponentDescription1": "示例说明", - "ValidateFormInnerComponentInnerComponentLi1": "姓名为字符串类型", - "ValidateFormInnerComponentInnerComponentLi2": "年龄为整数类型", - "ValidateFormInnerComponentInnerComponentLi3": "生日为时间类型", - "ValidateFormInnerComponentInnerComponentLi4": "教育为枚举类型", - "ValidateFormInnerComponentInnerComponentLi5": "爱好为集合类型", - "ValidateFormInnerComponentInnerComponentDescription2": "本例中通过设置 提交按钮 属性 IsAsync 来异步提交表单,点击提交后禁用自身,异步操作完毕后恢复", - "ValidateFormCustomDisplayErrorTitle": "自定义显示错误信息", - "ValidateFormCustomDisplayErrorIntro": "通过调用 SetError 方法设置自定义错误信息", - "ValidateFormCustomDisplayErrorDescription": "应用场景

        客户端验证通过后进行数据库保存操作,如果出现其他问题,后仍然可以进行表单自定义错误提示,本例中数据验证合法后,点击 提交表单 按钮后,姓名字段会显示,数据库中已存在 这样的自定义提示信息

        ", - "ValidateFormValidatorAllFieldTitle": "验证所有字段值", - "ValidateFormValidatorAllFieldIntro": "此组件默认检查表单内模型绑定字段值,如需要检查模型所有字段值时设置 ValidateAllProperties 值", - "ValidateFormValidatorAllFieldDescription": " 本例中未放置 Address,由于设置 ValidateAllProperties 参数值为 true,所以 Address 字段仍然被检查,即使表单内所有数据均合法后,提交数据时仍然触发 OnInvalidSubmit 回调委托", - "ValidateFormComplexValidationTitle": "复杂类型支持", - "ValidateFormComplexValidationIntro": "支持任意复杂类型的绑定与验证", - "ValidateFormComplexValidationDescription": "本示例中第二个绑定的是一个超级复杂类型 ComplexModel.Dummy.Dummy2.Name 清空值后,点击 提交表单 会对数据进行验证。第二个文本框验证合规后,通过调用 SetError 再次显示错误提示", - "ValidateFormComplexValidationPre": "ComplexForm.SetError('Dummy.Dummy2.Name','数据库中已存在');", - "ValidateFormDynamicFormTitle": "动态调整表单内组件", - "ValidateFormDynamicFormIntro": "通过代码更改表单内组件,验证表单仍然可以正确的进行验证", - "ValidateFormDynamicFormDescription": "点击 更改组件 按钮后 地址 组件变更为 数量 组件,重置组件 按钮恢复,姓名 地址组件为必填项,数量 组件有默认值 0 所以可以通过数据检查", - "ValidateFormInnerFormLabelTitle": "表单内设置组件标签右对齐", - "ValidateFormInnerFormLabelIntro": "通过样式统一设置全站或者特定表单内标签对齐方式", - "ValidateFormInnerFormLabelDescription": "地址文本框增加了 邮件地址 验证规则", - "ValidateFormCustomValidationFormTitle": "自定义验证表单", - "ValidateFormCustomValidationFormIntro": "通过设置 Rules 添加自定义验证规则", - "CustomValidationFormP1": "地址文本框增加了 邮件地址 验证规则,点击提交时验证", - "CustomValidationFormComment1": "增加邮箱验证规则", - "CustomValidationFormComment2": "Razor 文件中使用", - "ValidateFormValidateTitle": "代码调用验证方法", - "ValidateFormValidateIntro": "通过代码中调用 ValidateForm 实例方法 Validate 触发表单认证", - "ValidateButtonText": "保存", - "ValidateFormValidateDescription": "按钮类型为普通按钮不会触发表单 submit 行为,为了提高性能,示例中使用 OnClickWithoutRender 方法减少一次 UI 渲染", - "Model": "表单组件绑定的数据模型,必填属性", - "ValidateAllProperties": "是否检查所有字段", - "ShowRequiredMark": "表单内必填项是否显示 * 标记", - "ChildContent": "子组件模板实例", - "OnValidSubmit": "表单提交时数据合规检查通过时的回调委托", - "OnInvalidSubmit": "表单提交时数据合规检查未通过时的回调委托", - "SetError": "设置验证失败方法", - "Validate": "表单认证方法", - "OnInvalidSubmitLog": "OnInvalidSubmit 回调委托: 验证未通过", - "OnValidSubmitLog": "OnValidSubmit 回调委托: 验证通过", - "OnValidSubmitStartingLog": "OnValidSubmit 回调委托: Starting ...", - "OnValidSubmitDoneLog": "OnValidSubmit 回调委托: Done!", - "OnInvalidSubmitCallBackLog": "OnInvalidSubmit 回调委托", - "OnValidSubmitCallBackLog": "OnValidSubmit 回调委托", - "DatabaseExistLog": "数据库中已存在", - "LongDisplayText": "我是特别长的显示标签", - "LongDisplayDescription": "本例中通过设置 form-inline 样式内的 BootstrapInput 组件 ShowLabelTooltiptrue 使鼠标悬停在被裁剪的 label 时显示完整信息", - "ShowLabelTooltip": "鼠标悬停标签时显示完整信息", - "DisableAutoSubmitFormByEnter": "是否禁用表单自动提交功能", - "ValidateFormDisableAutoSubmitFormByEnterTitle": "禁用自动提交功能", - "ValidateFormDisableAutoSubmitFormByEnterIntro": "当焦点在表单内输入框时,按 Enter 默认是自动提交表单的,通过设置 DisableAutoSubmitFormByEnter=\"false\" 禁止自动提交", - "DisableAutoSubmitFormByEnterDesc": "form 表单是 web 一个重要的元素,如果表单内有 input 元素当此元素获得焦点时,按下 Enter 会自动提交表单,这是表单元素的特性,并不是我们组件代码逻辑,如果不需要这个功能时通过设置 DisableAutoSubmitFormByEnter=\"true\" 禁用此功能,此例中文本框内按回车不会 自动提交 并且进行数据合规性检查,需要点击 提交表单 按钮提交表单", - "ValidateFormIValidatableObjectTitle": "IValidatableObject 接口类型", - "ValidateFormIValidatableObjectIntro": "IValidatableObject 接口提供了更加灵活的自定义校验,非常适合进行非常复杂的数据校验,例如多属性组合起来进行校验等场景。", - "ValidateFormIValidatableObjectDescription": "本示例使用 IValidatableObject 实现校验 联系电话1联系电话2 不能相同,以及 名称 不能为空,本例中并未设置 名称 为必填项,但是由于模型对 IValidatableObject 接口的实现中进行了校验,所以在提交数据时仍然触发 OnInvalidSubmit 回调委托", - "ValidateFormIValidateCollectionTitle": "IValidateCollection 接口类型", - "ValidateFormIValidateCollectionIntro": "IValidateCollection 接口提供了更加灵活的自定义 联动 校验,非常适合进行非常复杂的数据校验,例如多属性组合起来进行校验等场景。", - "ValidateFormIValidateCollectionDescription": "本示例使用 IValidateCollection 实现校验 联系电话1联系电话2 不能相同校验,更改任意单元格使电话号码相同时两个文本框均进行提示", - "ValidateMetadataTypeTitle": "MetadataType IValidateCollection", - "ValidateMetadataTypeIntro": "模型通过 [MetadataType(typeof(MockModelMetadataType))] 指定元数据类型 MockModelMetadataType 进行模型验证,如果指定模型继承 IValidateCollection 接口时,调用其 Validate 方法进行数据合规性检查", - "LabelWidth": "标签宽度" - }, - "BootstrapBlazor.Server.Components.Samples.Ajaxs": { - "AjaxTitle": "Ajax调用", - "AjaxDescribe": "用于直接在浏览器使用 fetch 方法与服务器交互,目前只支持输入输出皆为 json,返回值为 json 字符串,可以自行转换处理。", - "NormalTitle": "基础用法", - "NormalIntro": "模拟登录", - "NormalB": "特别注意:", - "NormalDiv": "这里只是进行了登录模拟,并没有真正的调用 HttpContext.SignInAsync,真实使用时需要在登录完成后对页面进行刷新,否则无法真正的登录成功。", - "GoToTitle": "页面跳转", - "GoToIntro": "用 Js 实现页面跳转,解决了 Blazor 页面作为 SPA 跳转时不会真正刷新页面的问题", - "InvokeAsync": "执行 fetch 方法", - "GoTo": "执行 goto 方法", - "NormalButtonText1": "登录成功", - "NormalButtonText2": "登录失败", - "GoToButtonText1": "跳转到文档首页", - "GoToButtonText2": "跳转到自己(刷新页面)" - }, - "BootstrapBlazor.Server.Components.Samples.Avatars": { - "Title": "Avatar 头像", - "SubTitle": "用图标、图片或者字符的形式展示用户或事物信息。", - "BasicUsageTitle": "基础用法", - "BasicUsageIntro": "通过 IsCircleSize 设置头像的形状和大小。", - "IconTitle": "展示类型", - "IconIntro": "支持三种类型:图标、图片和字符", - "BorderTitle": "边框", - "BorderIntro": "通过设置 IsBorder 是否显示头像框边框,此模式下图片加载失败时边框为 border-danger 样式,加载成功时边框为 border-success;其余模式下边框为border-info", - "CircletTitle": "异步加载", - "CircleIntro": "适用于图片地址由 webapi 等接口异步获取的场景", - "Size": "头像框大小", - "IsBorder": "是否显示边框", - "IsCircle": "是否为圆形", - "IsIcon": "是否为图标", - "IsText": "是否为显示为文字", - "Icon": "头像框显示图标", - "Text": "头像框显示文字", - "Url": "Image 头像路径地址", - "GetUrlAsync": "获取 Image 头像路径地址异步回调委托", - "BasicUsageDivider": "分割线", - "BorderDiv1": "第一幅圆角正方形头像框加载正确,所以边框为 蓝色", - "BorderDiv2": "第二幅圆形头像加载图片路径错误,所以边框为 红色,图片显示为默认图标" - }, - "BootstrapBlazor.Server.Components.Samples.Badges": { - "Title": "Badge 徽章组件", - "SubTitle": "出现在按钮、图标旁的数字或状态标记", - "BasicusageTitle": "基础用法", - "BasicusageIntro": "提供各种颜色的徽章小挂件组件", - "PillTitle": "胶囊徽章", - "PillIntro": "通过属性 IsPill='true' 设置圆角的徽章挂件", - "ButtonTitle": "按钮内徽章", - "ButtonIntro": "按钮内部徽章", - "ChildContent": "内容", - "Class": "样式", - "Color": "颜色", - "IsPill": "胶囊样式", - "ButtonSpan": "主要按钮" - }, - "BootstrapBlazor.Server.Components.Samples.ShieldBadges": { - "Title": "ShieldBadge 徽章组件", - "SubTitle": "带图标标签文本的徽章组件高仿 Shields Badge", - "ShieldBadgeNormalTitle": "基础用法", - "ShieldBadgeNormalIntro": "通过 Icon 设置图标,通过 Label 设置左侧文本,通过 Text 设置右侧文本" - }, - "BootstrapBlazor.Server.Components.Samples.BarcodeReaders": { - "Title": "BarcodeReader 条码扫描", - "SubTitle": "本组件通过调用摄像头对条码进行扫描,获取到条码内容条码/QR码", - "Attention": "特别注意:", - "Li1": "站点要启用 https,这是浏览器厂商要求的", - "Li2": "移动端 iOS 系统必须使用 Safari 浏览器,切换前/后摄像头要点一下关闭功能按钮", - "Li3": "安卓手机大概率需要原生系统浏览器,Chrome 是必定可以的,某些浏览器可能不兼容摄像头", - "Li4": "条码识别率与手机像素,条码大小,手机执行效率有关", - "BasicUsageTitle": "基础用法", - "BasicUsageIntro": "通过摄像头进行扫码识别", - "Step": "操作步骤:", - "BasicUsageLi1": "点击开始打开摄像头", - "BasicUsageLi2": "对准条码进行扫描", - "BasicUsageLi3": "点击关闭按钮关闭摄像头", - "ImageTitle": "基础用法", - "ImageIntro": "通过静态图片进行扫码识别", - "ImageLi1": "点击扫码弹出选择文件框", - "ImageLi2": "选取包含条码图片", - "ImageLi3": "开始识别条码", - "ButtonScanText": "扫描按钮文字", - "ButtonScanTextDefaultValue": "扫描", - "ButtonStopText": "关闭按钮文字", - "ButtonStopTextDefaultValue": "关闭", - "AutoStopText": "自动关闭按钮文字", - "AutoStopTextDefaultValue": "自动关闭", - "DeviceLabel": "设备列表前置标签文字", - "DeviceLabelDefaultValue": "摄像头", - "InitDevicesString": "初始化设备列表文字", - "InitDevicesStringDefaultValue": "正在识别摄像头", - "NotFoundDevicesString": "未找到视频相关设备文字", - "NotFoundDevicesStringDefaultValue": "未找到视频相关设备", - "AutoStart": "组件初始化时是否自动开启摄像头", - "AutoStop": "扫描到条码后是否自动停止", - "ScanType": "扫描方式摄像头或者图片", - "OnInit": "初始化摄像头回调方法", - "OnResult": "扫描到条码回调方法", - "OnStart": "打开摄像头回调方法", - "OnClose": "关闭摄像头回调方法", - "OnError": "发生错误回调方法", - "OnDeviceChanged": "设备切换时回调方法", - "InitLog": "初始化摄像头完成", - "ScanCodeLog": "扫描到条码", - "ErrorLog": "发生错误", - "OpenCameraLog": "打开摄像头", - "CloseCameraLog": "关闭摄像头" - }, - "BootstrapBlazor.Server.Components.Samples.Blocks": { - "Title": "Block 条件块", - "SubTitle": "根据参数条件决定是否显示块内容,通常与权限授权配合使用", - "BasicUsageTitle": "普通用法", - "BasicUsageIntro": "通过设置 OnQueryCondition 回调方法返回值判断是否显示组件内容", - "TemplateTitle": "模板", - "TemplateIntro": "通过设置 Authorized NotAuthorized 可以分别设置符合条件与不符合条件时显示的内容", - "AuthorizateTitle": "通过权限判断", - "AuthorizateIntro": "本例模拟用户登录来控制 Block 内容是否显示,使用比 AuthorizeView 简单", - "UsersTitle": "预设置用户", - "UsersIntro": "通过设置 Users 控制显示内容,当前登录用户属于预设用户时显示", - "RolesTitle": "预设置角色", - "RolesIntro": "通过设置 Roles 控制显示内容,当前登录用户属于预设角色时显示", - "Tips": "通过设置不同的 Name 当作资源,结合授权系统对此资源授权可以实现对网页中任意元素进行权限控制", - "OnQueryCondition": "是否显示此 Block", - "ChildContent": "Block 块内显示内容", - "Authorized": "Block 块内符合条件显示内容", - "NotAuthorized": "Block 块内不符合条件显示内容", - "IsShow": "显示", - "IsHide": "隐藏", - "Content": "我是组件内容", - "Login": "登入", - "Logout": "登出", - "AuthorizateDiv1": "我是 CondtionBlock 组件内容,当前登录用户:{0}", - "AuthorizateDiv2": "我是 AuthorizeView 组件内容,当前登录用户:{0}", - "AuthorizateDiv3": "我是 AuthorizeView 组件内容,当前未登录", - "TemplateDiv1": "我是 符合 条件显示的组件内容", - "TemplateDiv2": "我是 不符合 条件显示的组件内容", - "UsersDiv1": "当前用户 {0} 允许看到此内容", - "RolesDiv1": "当前角色 User 允许看到此内容" - }, - "BootstrapBlazor.Server.Components.Samples.Cards": { - "Title": "Card 卡片", - "SubTitle": "将信息聚合在卡片容器中展示", - "BasicUsageTitle": "Card 卡片组件", - "BasicUsageIntro": "Card简单示例", - "FooterTitle": "Header 和 Footer", - "FooterIntro": "通过添加 HeaderTemplate 与 FooterTemplate 元素即可展示相关内容", - "IsCenterTitle": "内容居中", - "IsCenterIntro": "通过设置,IsCenter=true 使内容居中", - "ColorTitle": "带有边框颜色的卡片", - "ColorIntro": "通过设置,Color 使border和Body具有相应的颜色", - "CollapsibleIntro": "通过设置 IsCollapsible 使 Body 可以伸缩", - "CollapsibleIntroDesc": "通过设置 Collapsed 使 Body 默认收缩 参数默认值 false 展开", - "CollapsibleHeaderTemplateTitle": "Header 模板", - "CollapsibleHeaderTemplateIntro": "通过设置 HeaderTemplate 自定义 CardHeader 内容", - "ShadowTitle": "带有阴影的卡片", - "ShadowIntro": "通过设置 IsShadow 开启阴影特效", - "BodyTemplate": "Body 模板", - "FooterTemplate": "Footer 模板", - "HeaderTemplate": "Header 模板", - "Class": "样式", - "Color": "设置卡片边框颜色", - "IsCenter": "是否居中", - "IsCollapsible": "是否可以收缩", - "Collapsed": "默认是否收缩", - "IsShadow": "是否开启阴影特效", - "Compare": "对比设置", - "CollapsibleTitle": "可以收缩展开的卡片", - "CollapsibleBody": "点击 Header 收缩/展开", - "CollapsibleHeaderTemplate": "这里是模板", - "ShadowBody": "阴影特效示例", - "HeaderPaddingY": "Header 上下内边距" - }, - "BootstrapBlazor.Server.Components.Samples.Calendars": { - "Title": "Calendar 日历框", - "SubTitle": "按照日历形式展示数据的容器。当数据是日期或按照日期划分时,例如日程、课表、价格日历等,农历等。目前支持年/月切换。", - "BasicUsageTitle": "基础用法", - "BasicUsageIntro": "基础的日历显示。", - "BindTitle": "数据双向绑定", - "BindIntro": "日历框选择时间时数据自动更新文本框", - "ViewModeTitle": "按周展示", - "ViewModeIntro": "通过设置属性 CalendarViewMode.Week", - "CellTemplateTitle": "单元格模板", - "CellTemplateIntro": "通过设置属性 CellTemplate 自定义单元格模板", - "HeaderTemplateTitle": "头部模板", - "HeaderTemplateIntro": "通过设置属性 HeaderTemplate 自定义头部模板", - "HeaderTemplateDesc": "通过设置 BodyTemplate 配合 HeaderTemplate 来自定义呈现 UI,本例中月视图中前后均增加了附加列,星期视图中增加了时间线", - "AppTitle": "实战应用", - "AppIntro": "课堂表", - "AppText": "目前按周内组件暂时为统一使用 ChildContext 来进行渲染,所有单元格内的数据相关操作组件均未进行封装,稍后完善", - "Siesta": "午休", - "Value": "组件值", - "ChildContent": "子组件", - "ValueChanged": "值改变时回调委托", - "CellTemplate": "单元格模板", - "CellTemplateDemoTitle": "实战工时系统示例", - "CellTemplateDemoIntro": "点击单元格弹窗编辑工时,关闭弹窗后重新汇总统计数据", - "CellTemplateDemoSummary": "当月工时统计", - "None": "无", - "Chinese": "语文", - "Math": "数学", - "English": "英语", - "Study": "自习", - "FirstDayOfWeek": "设置每周第一天" - }, - "BootstrapBlazor.Server.Components.Samples.Cameras": { - "Title": "Camera 摄像头拍照组件", - "SubTitle": "本组件通过调用摄像头进行拍照操作", - "Attention": "特别注意:", - "Li1": "站点要启用 https,这是浏览器厂商要求的", - "BasicUsageTitle": "基础用法", - "BasicUsageIntro": "通过摄像头进行拍照", - "BasicUsageStep": "操作步骤:", - "BasicUsageLi1": "点击开始打开摄像头", - "BasicUsageLi2": "点击拍照按钮", - "BasicUsageLi3": "点击关闭按钮关闭摄像头", - "ShowPreview": "是否显示 照片预览", - "AutoStart": "是否直接开启摄像头", - "OnInit": "初始化摄像头回调方法", - "OnStart": "开始拍照回调方法", - "OnClose": "关闭拍照回调方法", - "OnCapture": "拍照成功回调方法", - "VideoWidth": "视频窗口宽度", - "VideoHeight": "视频窗口高度", - "CaptureJpeg": "拍照格式为 Jpeg", - "Quality": "拍照图像质量", - "DeviceLabel": "摄像头", - "InitDevicesString": "正在识别摄像头", - "PlayText": "开启", - "StopText": "关闭", - "PreviewText": "预览", - "SaveText": "保存", - "NotFoundDevicesString": "未找到视频相关设备" - }, - "BootstrapBlazor.Server.Components.Samples.Captchas": { - "Title": "Captchas 滑块验证码", - "SubTitle": "通过拖动滑块进行人机识别", - "BasicUsageTitle": "基础功能", - "BasicUsageIntro": "进行简单的人机识别", - "ImageTitle": "指定图床路径与名称", - "ImageIntro": "通过 ImagesPath 设置图床路径,通过 ImagesName 设置图片名称,后台通过计算拼接随机图片全路径名称", - "ImageCallbackTitle": "指定图床委托方法", - "ImageCallbackIntro": "通过 GetImageName 设置自定义方法拼接随机图片全路径名称", - "ImagesPath": "图床路径", - "ImagesName": "滑块背景图文件名称", - "HeaderText": "组件 Header 显示文字", - "HeaderTextDefaultValue": "请完成安全验证", - "BarText": "拖动滑块显示文字", - "BarTextDefaultValue": "向右滑动填充拼图", - "FailedText": "背景图加载失败显示文字", - "FailedTextDefaultValue": "加载失败", - "LoadText": "背景图加载时显示文字", - "LoadTextDefaultValue": "正在加载 ...", - "TryText": "拼图失败滑块显示文字", - "TryTextDefaultValue": "再试一次", - "Offset": "拼图对齐偏移量", - "Width": "拼图宽度", - "Height": "拼图高度", - "OnValid": "滑块验证码进行验证结果判断后回调此方法", - "GetImageName": "自定义获取背景图文件名称方法" - }, - "BootstrapBlazor.Server.Components.Samples.Carousels": { - "Title": "Carousel 走马灯", - "SubTitle": "在有限空间内,循环播放同一类型的图片、文字等内容", - "BasicUsageTitle": "基础用法", - "BasicUsageIntro": "适用广泛的基础用法,通过设置 Items 属性值对组件进行图片的绑定,值为图片路径数组", - "ShowControlsTitle": "控制按钮", - "ShowControlsIntro": "通过设置 ShowControls 属性,设置是否显示控制按钮 默认是 true", - "ShowIndicatorsTitle": "指示器", - "ShowIndicatorsIntro": "通过设置 ShowIndicators 属性,设置是否显示指示标识 默认是 true", - "FadeTitle": "淡入淡出", - "FadeIntro": "通过设置 IsFade 属性,图片切换时采用淡入淡出效果", - "CaptionTitle": "标题", - "CaptionIntro": "通过设置 CarouselItemCaption 属性,开启标题功能", - "IntervalTitle": "切换间隔", - "IntervalIntro": "通过设置 CarouselItemInterval 属性,可以单独设置幻灯片单独切换时间间隔,间隔默认值 5000 毫秒", - "TouchSwipingTitle": "禁用手势滑动", - "TouchSwipingIntro": "通过设置 DisableTouchSwiping 属性,禁用移动端手势滑动功能", - "CaptionTemplateTitle": "标题模板", - "CaptionTemplateIntro": "通过设置 CarouselItemCaptionTemplate 属性,自定义标题内容", - "CaptionClassTitle": "标题样式", - "CaptionClassIntro": "通过设置 CarouselItemCaptionClass 属性,自定义标题部分样式", - "CaptionClassP1": "本例设置 d-none d-md-block 使小屏幕下不显示 Caption", - "OnClickTitle": "点击图片回调事件", - "OnClickIntro": "通过设置 OnClick 属性后,点击 Image 后触发 OnClick 回调委托", - "ChildContentTitle": "子组件", - "ChildContentIntro": "使用 ChildContent 渲染自定义组件", - "Images": "Images 集合", - "IsFade": "是否淡入淡出", - "Width": "设置图片宽度", - "OnClick": "点击图片回调委托", - "HoverPause": "鼠标悬停时是否暂停播放", - "PlayMode": "自动播放模式" - }, - "BootstrapBlazor.Server.Components.Samples.Client": { - "Title": "获取客户端连接信息", - "SubTitle": "多用于系统日志跟踪", - "BasicUsageTitle": "普通用法", - "BasicUsageIntro": "注入服务显示客户端信息", - "BasicUsageP1": "用法介绍", - "BasicUsageP2": "1. Startup.cs 文件中使用 UseBootstrapBlazor 中间件进行客户端信息收集", - "BasicUsageTips": "app.UseBootstrapBlazor 中间件位于程序集 BootstrapBlazor.Middleware,请自行引用此包才能正常使用", - "BasicUsageP3": "2. 组件中使用注入服务 WebClientService 调用 GetClientInfo 方法", - "BasicUsageP4": "3. 开启 IP 地理位置定位功能", - "LocatorsProviderOptions": "全局配置定位器选项 WebClientOptions 默认 false 没有启用 IP 地址定位功能,请在配置文件中或者代码中更改为 true", - "LocatorsProviderDesc1": "更新 appsetting.json 项目配置文件", - "LocatorsProviderDesc2": "或者使用代码开启", - "LocatorsProviderDesc3": "或者通过配置开启本功能", - "GroupBoxTitle": "您的连接信息", - "IpLocatorFactoryDesc": "本服务已内置 IP 地理位置定位功能,详细配置与文档请参考", - "Id": "连接 ID", - "RequestUrl": "请求地址", - "Ip": "IP 地址", - "City": "城市", - "OS": "操作系统", - "Browser": "浏览器", - "Engine": "浏览器引擎", - "Device": "设备", - "Language": "语言" - }, - "BootstrapBlazor.Server.Components.Samples.Circles": { - "Title": "Circle 进度环", - "SubTitle": "图表类组件。一般有两种用途:", - "CircleTips1": "显示某项任务进度的百分比", - "CircleTips2": "统计某些指标的占比。", - "BasicUsageTitle": "基础用法", - "BasicUsageIntro": "通过设置 Value 属性设定圆形进度", - "ColorTitle": "颜色", - "ColorIntro": "通过设置 Color 属性设定圆形进度条颜色", - "StrokeWidthTitle": "进度条宽度", - "StrokeWidthIntro": "通过设置 StrokeWidth 属性设定圆形进度条宽度", - "ChildContentTitle": "自定义显示内容", - "ChildContentIntro": "通过自定义子组件自定义显示内容", - "Width": "组件宽度", - "StrokeWidth": "进度条宽度", - "Value": "当前进度", - "Color": "进度条颜色", - "ShowProgress": "是否显示进度条信息", - "ChildContent": "子组件", - "IncreaseSpan": "增加", - "DecreaseSpan": "减少", - "ChildContentP1": "消费人群规模", - "ChildContentSpan": "总占人数" - }, - "BootstrapBlazor.Server.Components.Samples.Collapses": { - "Title": "Collapse 折叠面板", - "SubTitle": "通过折叠面板收纳内容区域", - "BasicUsageTitle": "基础用法", - "BasicUsageIntro": "可同时展开多个面板,面板之间不影响", - "AccordionTitle": "手风琴效果", - "AccordionIntro": "每次只能展开一个面板", - "IconTitle": "图标效果", - "IconIntro": "面板标题前置图标", - "ColorTitle": "子项标题颜色", - "ColorIntro": "每个面板设置不同颜色", - "ItemsTitle": "动态更新", - "ItemsIntro": "通过条件逻辑设置 CollapseItems 模板", - "CollapseItems": "内容", - "IsAccordion": "是否手风琴效果", - "OnCollapseChanged": "项目收起展开状态改变回调方法", - "Consistency": "一致性 Consistency", - "ConsistencyItem1": "与现实生活一致:与现实生活的流程、逻辑保持一致,遵循用户习惯的语言和概念;", - "ConsistencyItem2": "在界面中一致:所有的元素和结构需保持一致,比如:设计样式、图标和文本、元素的位置等。", - "Feedback": "反馈 Feedback", - "FeedbackItem1": "控制反馈:通过界面样式和交互动效让用户可以清晰的感知自己的操作;", - "FeedbackItem2": "页面反馈:操作后,通过页面元素的变化清晰地展现当前状态。", - "Efficiency": "效率 Efficiency", - "EfficiencyItem1": "简化流程:设计简洁直观的操作流程;", - "EfficiencyItem2": "清晰明确:语言表达清晰且表意明确,让用户快速理解进而作出决策;", - "EfficiencyItem3": "帮助用户识别:界面简单直白,让用户快速识别而非回忆,减少用户记忆负担。", - "Controllability": "可控 Controllability", - "ControllabilityItem1": "用户决策:根据场景可给予用户操作建议或安全提示,但不能代替用户进行决策;", - "ControllabilityItem2": "结果可控:用户可以自由的进行操作,包括撤销、回退和终止当前操作等。", - "ButtonText": "切换", - "HeaderTemplateTitle": "Header 模板", - "HeaderTemplateIntro": "通过设置 HeaderTemplate 自定义 Header 显示内容", - "CollapseItemAttributeText": "文本文字", - "CollapseItemAttributeIcon": "图标字符串", - "CollapseItemAttributeTitleColor": "标题颜色", - "CollapseItemAttributeClass": "样式名称", - "CollapseItemAttributeHeaderClass": "Header CSS 样式名称", - "CollapseItemAttributeHeaderTemplate": "Header 模板", - "CollapseItemAttributeIsCollapsed": "当前状态是否收缩" - }, - "BootstrapBlazor.Server.Components.Samples.DateTimeRanges": { - "Title": "DateTimeRange 日期时间段选择器", - "Description": "在同一个选择器里选择一段日期", - "NormalTitle": "基本功能", - "NormalIntro": "以「日」为基本单位,选择一段时间", - "BindValueTitle": "数据双向绑定", - "BindValueIntro": "点击确认按钮时间选择框值与文本框值一致,通过设置 AutoClose=\"true\" 实现自动关闭功能,通过设置 ShowSelectedValue=\"true\" 直接显示选中值", - "MaxMinValueTitle": "最大值和最小值", - "MaxMinValueIntro": "设置时间的取值范围", - "DisabledTitle": "禁用", - "DisabledIntro": "设置 IsDisabled 属性值为 true 时,组件禁止输入", - "SidebarTitle": "带快捷键侧边栏", - "SidebarIntro": "设置 ShowSidebar 属性值为 true 时,组件显示快捷方式侧边栏", - "SidebarTip": "通过设置 ShowSidebar 参数开启显示侧边栏快捷选项功能,通过设置 SidebarItems 参数集合替换组件内置的默认快捷项", - "TodayTitle": "显示今天按钮", - "TodayIntro": "设置 ShowToday 属性值为 true 时,组件下方显示今天快捷按钮", - "TodayTip": "点击 Today 今天按钮时,时间范围为 yyyy-MM-dd 00:00:00 到 yyyy-MM-dd 23:59:59", - "SingleViewTitle": "单选模式", - "SingleViewTip": "通过设置 RenderMode=\"Single\" 允许独立选择开始时间与结束时间", - "ValidateFormTitle": "表单中使用", - "ValidateFormIntro": "将组件内置到 ValidateForm 中使用", - "AutoCloseTitle": "自动关闭", - "AutoCloseIntro": "点击侧边栏快捷方式自动关闭弹窗", - "Submit": "提交", - "Limit": "时间范围", - "ViewModeTitle": "显示模式", - "ViewModeIntro": "通过设置 ViewMode=\"DatePickerViewMode.Year\" 使组件视图为年视图,设置 ViewMode=\"DatePickerViewMode.Month\" 使组件视图为年视图", - "Feature": "功能体验区", - "FeatureShowLunar": "显示农历", - "FeatureShowSolarTerm": "24 节气", - "FeatureShowFestivals": "节日", - "FeatureShowHolidays": "法定假日" - }, - "BootstrapBlazor.Server.Components.Samples.Ips": { - "IpTitle": "IpAddress 地址组件", - "IpSubTitle": "IP 地址组件是一个用于输入和验证 IP 地址的可重用组件", - "IpNormalTitle": "基础用法", - "IpNormalIntro": "分段录入并显示 ip 地址,例如:192.168.1.1", - "IsDisabledTitle": "禁用", - "IsDisabledIntro": "通过设置 IsDisabled 使组件处于不可用状态" - }, - "BootstrapBlazor.Server.Components.Samples.Displays": { - "Title": "Display 显示组件", - "SubTitle": "显示静态文本数据", - "BasicUsageTitle": "基础用法", - "BasicUsageIntro": "仅显示", - "BindWayTitle": "双向绑定数据", - "BindWayIntro": "通过双向绑定可以自动获取资源文件中的显示标签", - "BindWayP1": "Display 组件开启双向绑定时,会根据绑定的 Model 属性值去自动获取 Display/DisplayName 标签值并且显示为前置 Label,通过 DisplayText 属性可以自定义显示前置标签,或者通过 ShowLabel 属性关闭前置标签是否显示", - "DataTypeTitle": "泛型绑定", - "DataTypeIntro": "Display 组件内置对 枚举 集合 数组 进行处理,如不符合条件时,请自定义格式化或者回调委托方法", - "EditorFormTitle": "表单内使用", - "EditorFormIntro": "Display 组件在表单组件 EditorForm 中使用,多用于明细页,不可编辑模式", - "FormatStringTitle": "自定义格式", - "FormatStringIntro": "设置 FormatString 属性值为 yyyy-MM-dd 时,组件显示的时间格式为年月日", - "LookupTitle": "Lookup", - "LookupIntro": "设置 Lookup 值为 IEnumerable<SelectedItem> 集合或者通过设置 LookupServiceKey,组件将通过此数据集,进行通过 Value 显示 Text 翻译工作", - "LookupP1": "本例中组件 Value='@IntValue' 设置 Lookup='@IntValueSource' 组件将 Value 值对应的 Text 显示出来", - "ShowLabel": "是否显示前置标签", - "DisplayText": "前置标签显示文本", - "FormatString": "数值格式化字符串", - "Formatter": "TableHeader 实例", - "TypeResolver": "类型解析回调方法 TValue 为 Array 实例时内部使用", - "BasicUsage": "基础用法", - "BindWayCustomLabel": "自定义标签", - "BindWayP2": "设置 DisplayText 值为 自定义标签", - "BindWayOccupants": "占位", - "BindWayP3": "无论是否设置 DisplayText 值,当 ShowLabeltrue 时均显示", - "BindWayNotOccupants": "不占位", - "BindWayP4": "无论是否设置 DisplayText 值,当 ShowLabelfalse 时均不显示", - "Integer": "整型", - "Enum": "枚举", - "Collection": "集合", - "Arr": "数组", - "FormatStringSettingText": "设置", - "FormatStringP": "Display 组件绑定 byte[] 数组,格式化成 base64 编码字符串示例", - "ShowTooltipTitle": "显示 Tooltip", - "ShowTooltipIntro": "组件包裹 Tooltip 或者 ShowTooltip=\"true\" 后内置 BootstrapInputGroup 组件使用" - }, - "BootstrapBlazor.Server.Components.Samples.DropdownWidgets": { - "Title": "DropdownWidget 下拉挂件", - "SubTitle": "多用于头部信息汇总展示", - "BasicUsageTitle": "基础用法", - "BasicUsageIntro": "直接在页面上通过 ChildContent 编写挂件内容", - "AttributeTitle": "DropdownWidgetItem 组件", - "Icon": "挂件图标", - "BadgeColor": "徽章颜色", - "HeaderColor": "Header 颜色", - "BadgeNumber": "徽章显示数量", - "ShowArrow": "是否显示小箭头", - "MenuAlignment": "菜单对齐方式", - "HeaderTemplate": "Header 模板", - "BodyTemplate": "Body 模板", - "FooterTemplate": "Footer 模板", - "BasicUsageMessage": "您有 4 个未读消息", - "BasicUsageViewMessage": "查看所有消息", - "BasicUsageNotify": "您有 10 个未读通知", - "BasicUsageViewNotify": "查看所有通知", - "BasicUsageTasks": "您有 3 个任务", - "BasicUsageViewTasks": "查看所有任务", - "OnItemCloseAsync": "关闭菜单项回调方法" - }, - "BootstrapBlazor.Server.Components.Samples.Empties": { - "Title": "Empty 空状态", - "SubTitle": "空状态时的展示占位图", - "NormalTitle": "基础用法", - "NormalIntro": "添加 Empty 标签即可", - "ImageTitle": "设置空状态图片路径", - "ImageIntro": "设置 Image 属性即可", - "TemplateTitle": "自定义空状态模板", - "TemplateIntro": "内套 Template 标签渲染自定义组件", - "Image": "自定义图片路径", - "Text": "自定义描述信息", - "TextDefaultValue": "暂无描述", - "Width": "自定义图片宽度", - "Height": "自定义图片高度", - "Template": "自定义模板", - "ChildContent": "子组件", - "ImageText": "暂无数据", - "TemplateText": "自定义空状态模板", - "TemplateIButtonText": "返回上一页" - }, - "BootstrapBlazor.Server.Components.Samples.GroupBoxes": { - "Title": "GroupBox 集合组件", - "SubTitle": "模拟 WinForm 的 GroupBox 组件", - "BasicUsageTitle": "基础用法", - "BasicUsageIntro": "将自己的组件放到 GroupBox 内部即可", - "AttTitle": "设置组件标题", - "GroupTitle": "表单示例", - "GroupP1": "我是 GroupBox 示例", - "GroupP2": "更多示例请参考 EditorForms 表单示例 [传送门]" - }, - "BootstrapBlazor.Server.Components.Samples.LinkButtons": { - "LinkButtonsComTitle": "LinkButton 链接按钮", - "LinkButtonsSubTitle": "提供 A 标签按钮", - "LinkButtonTextTitle": "链接按钮", - "LinkButtonTextIntro": "通过 Text 值设置按钮显示文本", - "LinkButtonText": "链接按钮", - "LinkButtonUrlTitle": "导航地址", - "LinkButtonUrlIntro": "通过 Url 值设置导航地址", - "LinkButtonTitleTitle": "提示信息", - "LinkButtonTitleIntro": "通过 Title 值设置链接按钮 Tooltip", - "LinkButtonTitleDetail": "鼠标悬停到按钮上时显示 Tooltip", - "LinkButtonImageTitle": "图片", - "LinkButtonImageIntro": "通过 ImageUrl 值设置图片地址", - "LinkButtonChildTitle": "模板", - "LinkButtonChildIntro": "通过 ChildContent 模板自定义显示内容", - "LinkButtonIconTitle": "图标按钮", - "LinkButtonIconIntro": "通过设置 Icon 显示图标", - "LinkButtonOnClickTitle": "点击事件", - "LinkButtonOnClickIntro": "通过 OnClick 回调方法响应点击事件", - "LinkButtonColorTitle": "颜色", - "LinkButtonColorIntro": "通过设置 Color 值,更改按钮文字颜色", - "LinkButtonIsDisabledTitle": "禁用", - "LinkButtonIsDisabledIntro": "通过设置 IsDisabled 值使按钮失效", - "LinkButtonVerticalTitle": "垂直布局", - "LinkButtonVerticalIntro": "通过设置 IsVertical 值使按钮图标与文字垂直布局", - "Text": "显示文本", - "Url": "Url", - "Title": "Tooltip 显示文字", - "ImageUrl": "显示图片地址", - "TooltipPlacement": "Tooltip 显示位置", - "ChildContent": "子组件", - "OnClick": "点击事件回调方法", - "Icon": "按钮 Icon", - "LinkButtonTitleTooltip": "我是提示信息条", - "LinkButtonIsDisabledText": "禁用", - "LinkButtonColorText": "颜色按钮", - "LinkButtonVerticalText": "测试按钮" - }, - "BootstrapBlazor.Server.Components.Samples.ListViews": { - "ListViewsTitle": "ListView 列表视图", - "ListViewsSubTitle": "提供规则排列控件", - "ProductListText": "产品列表", - "BasicUsageTitle": "普通用法", - "BasicUsageIntro": "适用于大量重复的数据实现规则排列", - "BasicUsageP1": "点击图片时触发 OnListViewItemClick 事件", - "PaginationTitle": "分页显示", - "PaginationIntro": "设置 Pageable 显示分页组件", - "GroupTitle": "分组显示", - "GroupIntro": "设置 GroupName 数据进行分组显示,通过设置 GroupOrderCallback 参数细化分组排序规则", - "CollapseTitle": "分组折叠", - "CollapseIntro": "设置 Collapsible=\"true\" 使分组信息可折叠", - "Collapsible": "是否可折叠", - "IsAccordionTitle": "分组手风琴", - "IsAccordionIntro": "设置 IsAccordion=\"true\" 使分组信息折叠手风琴效果", - "Items": "组件数据源", - "Pageable": "是否分页", - "HeaderTemplate": "ListView Header 模板", - "BodyTemplate": "ListView Body 模板", - "FooterTemplate": "ListView Footer 模板", - "Collapse": "分组数据折叠", - "IsAccordion": "分组数据手风琴效果", - "OnQueryAsync": "异步查询回调方法", - "OnListViewItemClick": "ListView元素点击时回调委托", - "QueryAsync": "手工查询数据方法", - "CollapsedGroupCallback": "组件分组项是否收缩回调委托方法", - "GroupOrderCallback": "组件分组项排序回调委托方法", - "GroupItemOrderCallback": "组件分组项内项目集合排序回调方法", - "GroupHeaderTextCallback": "分组标题显示文本回调方法" - }, - "BootstrapBlazor.Server.Components.Samples.Locators": { - "LocatorsTitle": "获取 IP 地理位置", - "LocatorsSubTitle": "多用于系统日志跟踪与分析", - "LocatorsNormalTitle": "普通用法", - "LocatorsNormalIntro": "注入服务显示客户端地理位置信息", - "LocatorsNormalDescription": "用法介绍", - "LocatorsNormalInjectIPLocator": "组件中使用注入服务 IpLocatorFactory 调用 Create 方法创建定位服务 IIpLocatorProvider 实例", - "LocatorsNormalTipsTitle": "某些地理位置查询接口返回字符集可能是其他字符集如 gbk,程序会报错;", - "LocatorsNormalTips1": "解决办法:", - "LocatorsNormalTips2": "Startup 文件中 ConfigureServices 方法内增加下面这句话即可解决", - "LocatorsNormalExtendDescription": "扩展自定义地理位置查询接口", - "LocatorsNormalExtend1": "1. 实现自定义定位器", - "LocatorsNormalExtend2": "2. 配置自定义定位器", - "LocatorsNormalExtend3": "3. 通过定位器定位", - "LocatorsNormalCustomerLocator": "通过 AddSingleton 方法将自定义定位器 CustomerLocatorProvider 添加到服务容器中", - "LocatorsNormalIpTitle": "IP 测试数据", - "LocatorsNormalTips3": "山东省 中国联通", - "LocatorsNormalTips4": "安徽省合肥市蜀山区 中国电信", - "LocatorsNormalInputText": "Ip 地址", - "LocatorsNormalDisplayText": "地理位置", - "LocatorsNormalButtonText": "定位", - "LocatorsProviderDesc": "

        组件库内置两个免费在线地理位置定位器分别为 BaiduIpLocatorProvider BaiduIpLocatorProviderV2

        组件库内置一个收费在线地理位置定位器 BootstrapBlazor.JuHeIpLocatorProvider Nuget 包 官网地址

        组件库内置一个免费离线地理位置定位器 BootstrapBlazor.IP2Region Nuget 包

        " - }, - "BootstrapBlazor.Server.Components.Samples.Print": { - "PrintsTitle": "Print 打印按钮", - "PrintsSubTitle": "用于打印文档或者局部视图", - "PrintsTips1": "设置 PreviewUrl 时,单开一个新网页进行打印预览,点击此页面的打印按钮进行网页打印", - "PrintsTips2": "不设置 PreviewUrl 时,如果是 Dialog 组件中的打印按钮,则打印弹窗内容", - "PrintsButtonText": "打印", - "PrintButtonTitle": "普通用法", - "PrintButtonIntro": "通过点击打印按钮将页面进行打印", - "PrintsButtonDescription": "点击下方打印按钮后,弹出新页面进行打印预览,确认无误后点击打印预览页面中的打印按钮进行打印机选择进行打印操作", - "PrintDialogTitle": "打印弹窗", - "PrintDialogIntro": "通过设置弹窗组件 ShowPrint 开启打印功能", - "PrintDialogP": "本例中弹窗内容为自定义组件 {0} 弹窗自身按钮所在 Footer 被隐藏,所以弹窗内置的 Print 按钮无法显示,设置 @nameof(DialogOption.ShowPrintButtonInHeader) 使 打印 按钮显示在标题栏中", - "PrintServiceTitle": "打印服务", - "PrintServiceIntro": "通过设置要打印的内容组件,直接调用 打印服务 进行打印作业,打印服务 PrintService 服务文档 [传送门]", - "PrintsDialogTitle": "数据查询窗口" - }, - "BootstrapBlazor.Server.Components.Samples.Tags": { - "TagsTitle": "Tag 标签", - "TagsSubTitle": "用于标记和选择。", - "Tag1": "标签一", - "Tag2": "标签二", - "Tag3": "标签三", - "Tag4": "标签四", - "Tag5": "标签五", - "Tag6": "标签六", - "Tag7": "标签七", - "TagsNormalTitle": "基础用法", - "TagsNormalIntro": "页面中的非浮层元素,不会自动消失。", - "TagsCloseButtonTitle": "关闭按钮", - "TagsCloseButtonIntro": "提供关闭按钮的标签", - "TagsIconTitle": "带 Icon", - "TagsIconIntro": "表示某种状态时提升可读性。", - "TagsChildContent": "内容", - "TagsClass": "样式", - "TagsColor": "颜色", - "TagsIcon": "图标", - "TagsShowDismiss": "关闭按钮", - "TagsOnDismiss": "关闭标签回调方法" - }, - "BootstrapBlazor.Server.Components.Samples.Timelines": { - "TimelinesTitle": "Timeline 时间线", - "TimelinesSubTitle": "可视化地呈现时间流信息", - "TimelinesNormalTitle": "基础用法", - "TimelinesNormalIntro": "Timeline
        可拆分成多个按照时间戳正序或倒序排列的 activity
        ,时间戳是其区分于其他控件的重要特征,使⽤时注意与 Steps 步骤条等区分。", - "TimelinesNormalDescription": "排序:", - "TimelinesCustomNodeStyleTitle": "⾃定义节点样式", - "TimelinesCustomNodeStyleIntro": "可根据实际场景⾃定义节点颜⾊,或直接使⽤图标。", - "TimelinesLeftTitle": "左侧展现", - "TimelinesLeftIntro": "内容在时间轴左侧轮流出现", - "TimelinesLeftDescription": "通过设置 IsLeft 属性来控制内容出现在时间线左侧", - "TimelinesAlternateTitle": "交替展现", - "TimelinesAlternateIntro": "内容在时间轴两侧轮流出现", - "TimelinesAlternateDescription": "通过设置 IsAlternate 属性来控制时间线左右交替展现", - "TimelinesDisplayCustomComponentTitle": "展现自定义组件", - "TimelinesDisplayCustomComponentIntro": "时间轴上展现自定义组件", - "TimelinesDisplayCustomComponentDescription": "通过设置 TimelineItemCustomerComponent 来控制时间线展现的自定义组件", - "TimelinesSelectedItem1": "正序", - "TimelinesSelectedItem2": "倒序", - "TimelineItemContent1": "创建时间", - "TimelineItemContent2": "通过审核", - "TimelineItemContent3": "活动按期开始", - "TimelineItemContent4": "默认样式的节点", - "TimelineItemContent5": "支持自定义颜色", - "TimelineItemContent6": "支持使用图标", - "TimelinesDescription1": "实时输出", - "TimelinesDescription2": "计数器", - "TimelinesDescription3": "天气预报信息", - "TimelinesItems": "数据集合", - "TimelinesIsReverse": "是否倒序显示", - "TimelinesIsLeft": "是否左侧展现内容", - "TimelinesIsAlternate": "是否交替展现内容", - "TimelinesColor": "节点颜色", - "TimelinesContent": "内容正文", - "TimelinesIcon": "节点图标", - "TimelinesDescription": "节点描述文字", - "TimelinesComponent": "节点自定义组件", - "TimelinesAttributeTitle": "TimelineItem 属性" - }, - "BootstrapBlazor.Server.Components.Samples.Searches": { - "SearchesTitle": "Search 搜索框", - "SearchesSubTitle": "用于数据搜索", - "SearchesPlaceHolder": "搜索示例", - "SearchesNormalTitle": "基础用法", - "SearchesNormalIntro": "输入部分数据进行搜索", - "SearchesNormalDescription": "请输入 1234 获取智能提示,通过设置 IsAutoFocus='true' 开启自动获得焦点功能", - "SearchesDisplayButtonTitle": "显示清空按钮", - "SearchesDisplayButtonIntro": "通过设置 ShowClearButton 参数控制是否显示清空按钮", - "SearchesKeyboardsTitle": "键盘输入即时搜索", - "SearchesKeyboardsIntro": "通过设置 IsTriggerSearchByInput 参数控制是否实时进行搜索操作,组件默认输入时即进行搜索,可通过 IsTriggerSearchByInput=\"false\" 关闭", - "SearchesValidateFormTitle": "验证表单内使用", - "SearchesValidateFormIntro": "内置于 ValidateForm 使用,输入中文时不会多次触发搜索功能", - "SearchesNoDataTip": "自动完成数据无匹配项时提示信息", - "SearchesNoDataTipDefaultValue": "无匹配数据", - "SearchesButtonLoadingIcon": "正在搜索按钮图标", - "SearchesClearButtonIcon": "清空按钮颜色", - "SearchesClearButtonText": "清空按钮文本", - "SearchesClearButtonColor": "清空按钮颜色", - "SearchesButtonColor": "搜索按钮颜色", - "SearchesIsAutoFocus": "是否自动获得焦点", - "SearchesIsAutoClearAfterSearch": "点击搜索后是否自动清空搜索框", - "SearchesIsTriggerSearchByInput": "搜索模式是否为输入即触发,默认点击搜索按钮触发", - "SearchesShowClearButton": "是否显示清除按钮", - "SearchesOnSearch": "点击搜索时回调此委托", - "SearchesOnClear": "点击清空时回调此委托", - "SearchesItemTemplateTitle": "模板", - "SearchesItemTemplateIntro": "通过设置 ItemTemplate 配合泛型数据可以做出自己想要的任何效果,本例中通过搜索任意关键字,后台调用任意第三方搜索结果并且进行展示,选中搜索项后通过 OnSelectedItemChanged 回调方法可以自行处理", - "SearchesShowPrefixIconTitle": "显示前缀图标", - "SearchesShowPrefixIconIntro": "通过设置 ShowPrefixIcon 参数控制是否显示前缀图标", - "SearchesShowPrefixIconDescription": "可以通过 PrefixIconTemplate 自定义前缀,本例中通过前缀模板使用 Svg 图标", - "SearchesButtonTemplateTitle": "按钮模板", - "SearchesButtonTemplateIntro": "通过设置 ButtonTemplate 自定义组件显示的按钮", - "SearchesButtonTemplateDesc": "通过设置 PrefixButtonTemplate 自定义组件前置显示的按钮", - "SearchesButtonTemplateDesc2": "在自定义模板中可以通过关联参数调用 Search 组件内部的 OnClear OnSearch 方法", - "SearchesIsClearableTitle": "IsClearable", - "SearchesIsClearableIntro": "通过设置 IsClearable=\"true\" 显示清空小图标", - "SearchesIsClearable": "是否显示清空小按钮", - "SearchesClearIcon": "清空图标", - "SearchesPrefixButtonTemplate": "前置按钮模板", - "SearchesButtonTemplate": "按钮模板", - "SearchesIconTemplateTitle": "图标模板", - "SearchesIconTemplateIntro": "通过设置 IconTemplate 自定义组件显示的图标", - "SearchesIconTemplateDesc": "搜索组件上下文 SearchContext<string> 提供了组件内部的 OnClear OnSearch 方法" - }, - "BootstrapBlazor.Server.Components.Samples.Titles": { - "Title": "Title 网站标题", - "SubTitle": "用于设置网页页面标题", - "Tips": "

        NET6.0 可使用微软 PageTitle 组件,用于设置网页标题,本组建额外提供了以服务的形式设置当前网页标题

        ", - "BasicUsageTitle": "基础用法", - "BasicUsageIntro": "网页中添加 Title 组件并设置 Text 属性即可", - "BasicUsageTips": "Title 组件设置 Text 后为普通组件使用,未设置 Text 属性时供服务调用", - "BasicUsageP": "设置 Text 属性", - "BasicUsageTitleText": "我是标题", - "BasicUsageP1": "测试网页", - "AdvanceTitle": "高级用法", - "AdvanceIntro": "网页中无需添加 Title 组件,调用注入服务 TitleService", - "AdvanceB": "特别注意:", - "AdvanceP": "使用此种方法时请在 App 或者 MainLayout 或者 Page 中添加 未设置 Text 属性Title 组件", - "FuncationParmeter": "我是标题", - "StaticTitle": "静态方法", - "StaticIntro": "直接调用 TitleService 静态方法", - "StaticB": "特别注意:", - "StaticDiv": "使用此种方法时请在 App 或者 MainLayout 或者 Page 中添加 未设置 Text 属性Title 组件" - }, - "BootstrapBlazor.Server.Components.Components.DemoBlock": { - "Title": "未设置", - "TooltipText": "已拷贝到剪贴板" - }, - "BootstrapBlazor.Server.Components.Components.Tips": { - "Title": "小提示" - }, - "BootstrapBlazor.Server.Components.Components.AttributeTable": { - "Title": "Attributes 属性" - }, - "BootstrapBlazor.Server.Components.Components.MethodTable": { - "Title": "Methods 方法" - }, - "BootstrapBlazor.Server.Components.Common.AttributeItem": { - "Name": "参数", - "Description": "说明", - "Type": "类型", - "ValueList": "可选值", - "DefaultValue": "默认值" - }, - "BootstrapBlazor.Server.Components.Common.EventItem": { - "Name": "参数", - "Description": "说明", - "Type": "类型" - }, - "BootstrapBlazor.Server.Components.Common.MethodItem": { - "Title": "Methods 方法", - "Name": "参数", - "Description": "说明", - "Type": "类型", - "Parameters": "参数", - "ReturnValue": "返回值" - }, - "BootstrapBlazor.Server.Components.Layout.ComponentLayout": { - "Title": "基于 Bootstrap 和 Blazor 的企业级组件库", - "Example": "示例", - "Video": "相关视频", - "ViewRazorCode": "查看 Razor 代码", - "ViewC#Code": "查看 C# 代码", - "ViewExample": "查看示例", - "IconTheme": "图标主题", - "Group": "交流群" - }, - "BootstrapBlazor.Server.Components.Samples.Alerts": { - "Title": "Alert 警告", - "SubTitle": "用于页面中展示重要的提示信息。", - "BaseUsageText": "基础用法", - "IntroText1": "页面中的非浮层元素,不会自动消失。", - "CloseButtonUsageText": "关闭按钮", - "IntroText2": "提供关闭按钮的警告框", - "WithIconUsageText": "带 Icon", - "IntroText3": "表示某种状态时提升可读性。", - "ShowBarUsageText": "显示左侧 Bar", - "IntroText4": "作为 Tip 使用", - "ShowBorderTitle": "边框效果", - "ShowBorderIntro": "设置 ShowBorder=\"true\" 开启边框效果", - "ShowShadowTitle": "阴影效果", - "ShowShadowIntro": "设置 ShowShadow=\"true\" 开启阴影效果", - "AlertPrimaryText": "主要的警告框", - "AlertSecondaryText": "次要的警告框", - "AlertSuccessText": "成功的警告框", - "AlertDangerText": "危险的警告框", - "AlertWarningText": "警告的警告框", - "AlertInfoText": "信息的警告框", - "AlertDarkText": "黑暗的警告框" - }, - "BootstrapBlazor.Server.Components.Samples.RibbonTabs": { - "RibbonTabsTitle": "RibbonTab 选项卡", - "RibbonTabsDescription": "Office 菜单选项卡", - "RibbonTabsNormalTitle": "基本用法", - "RibbonTabsNormalIntro": "通过设置 Items 初始化选项卡", - "RibbonTabsFloatTitle": "可悬浮", - "RibbonTabsFloatIntro": "通过设置 ShowFloatButton 使选项卡右侧显示收缩按钮,不占用主窗体空间", - "RibbonTabsFloatContent": "我是正文内容,收起菜单后我会向上移动", - "RibbonTabsRightButtonsTemplateTitle": "右上角按钮模板", - "RibbonTabsRightButtonsTemplateIntro": "通过设置 RightButtonsTemplate 可以在选项卡右上角增加一些快捷按钮", - "RibbonTabsRightButtonsTemplateContent": "文档", - "RibbonTabsShowFloatButtonAttr": "是否显示悬浮小箭头", - "RibbonTabsOnFloatChanged": "组件是否悬浮状态改变时回调方法", - "RibbonTabsRibbonArrowUpIcon": "选项卡向上箭头图标", - "RibbonTabsRibbonArrowDownIcon": "选项卡向下箭头图标", - "RibbonTabsRibbonArrowPinIcon": "选项卡可固定图标", - "RibbonTabsShowFloatButton": "是否显示悬浮小箭头", - "RibbonTabsItems": "数据源", - "RibbonTabsOnItemClickAsync": "点击命令按钮回调方法", - "OnMenuClickAsyncAttr": "点击一级菜单回调方法", - "RibbonTabsRightButtonsTemplate": "右侧按钮模板", - "RibbonTabsItemsText1": "文件", - "RibbonTabsItems1": "常规操作", - "RibbonTabsItems2": "常规操作", - "RibbonTabsItems3": "常规操作", - "RibbonTabsItems4": "打开", - "RibbonTabsItems5": "保存", - "RibbonTabsItems6": "另存为", - "RibbonTabsItemsText2": "编辑", - "RibbonTabsItems7": "打开", - "RibbonTabsItems8": "保存", - "RibbonTabsItems9": "另存为", - "RibbonTabsItems10": "常规操作", - "RibbonTabsItems11": "常规操作", - "RibbonTabsItems12": "常规操作", - "ItemsGroupName1": "操作组一", - "ItemsGroupName2": "操作组三", - "RibbonTabsHeaderClickTitle": "Header 点击回调", - "RibbonTabsHeaderClickIntro": "通过设置 OnHeaderClickAsync 回调方法处理点击 Header 部分逻辑", - "RibbonTabsAnchorTitle": "锚点支持", - "RibbonTabsAnchorIntro": "通过设置 IsSupportAnchor 开启是否支持锚点功能", - "RibbonTabsAnchorDesc": "通过设置 EncodeAnchorCallback 自定义哈希编码规则,通过设置 DecodeAnchorCallback 自定义哈希解码规则,通过这两个方法支持自定义多级哈希,本例中特意使用组合 Hash 使页面滚动到下方" - }, - "BootstrapBlazor.Server.Components.Samples.Logouts": { - "LogoutsTitle": "Logout 登出组件", - "LogoutsDescription": "用于网站登出操作", - "LogoutsNormalTitle": "普通用法", - "LogoutsNormalIntro": "直接使用内置模板使用", - "LogoutsShowUserNameTitle": "仅显示头像", - "LogoutsShowUserNameIntro": "设置 ShowUserName 值为 false", - "LogoutsChildContentTitle": "自定义显示模板", - "LogoutsChildContentIntro": "设置 ChildContent 或者在组件内部直接写其他组件即可", - "LogoutsChildContentCustomDisplay": "自定义显示内容", - "LogoutsHeaderTemplateTitle": "自定义登录信息模板", - "LogoutsHeaderTemplateIntro": "设置 HeaderTemplate", - "LogoutsHeaderTemplateUser1": "总经理", - "LogoutsHeaderTemplateUser2": "Admin", - "LogoutsLinkTemplateTitle": "自定义链接模板", - "LogoutsLinkTemplateIntro": "设置 LinkTemplate", - "LogoutsLinkTemplatePersonalCenter": "个人中心", - "LogoutsLinkTemplateSetup": "设置" - }, - "BootstrapBlazor.Server.Components.Samples.AutoRedirects": { - "Title": "AutoRedirect 自动跳转组件", - "Description": "通过设置的地址,当页面无鼠标或者键盘动作时自动跳转到指定页面", - "NormalTitle": "普通用法", - "NormalIntro": "通过设置 Interval 间隔,当无鼠标或者键盘动作时自动跳转到 RedirectUrl 设置的地址" - }, - "BootstrapBlazor.Server.Components.Samples.AnchorLinks": { - "AnchorLinkTitle": "AnchorLink 锚点链接", - "AnchorLinkDescribe1": "应用于标题带", - "AnchorLinkDescribe2": "的锚点链接,点击拷贝方便分享", - "AnchorLinkDemoTitle": "普通用法", - "AnchorLinkDemoIntroduction": "放置标签后点击拷贝锚点链接到粘贴板", - "AnchorLinkTips1": "锚点链接组件属性", - "AnchorLinkTips2": "为必填项,不填写时不提供拷贝锚点链接功能", - "AnchorLinkTips3": "组件锚点图标可通过", - "AnchorLinkTips4": "参数进行自定义默认为", - "AnchorLinkTips5": "参数 TooltipText 用于设置拷贝地址后提示信息 默认 null 不弹出提示信息", - "AttrId": "Id", - "AttrIcon": "图标", - "AttrText": "文本", - "AttrTooltipText": "提示栏文本", - "AnchorLinkText": "我是一个可以点击的锚点链接" - }, - "BootstrapBlazor.Server.Components.Samples.QRCodes": { - "QRCodesTitle": "QRCode 二维码", - "QRCodesSubTitle": "用于二维码生成", - "QRCodesNormalTitle": "基础用法", - "QRCodesNormalIntro": "点击生成按钮,生成特定的 QRCode", - "QRCodesContentTitle": "直接生成", - "QRCodesContentIntro": "通过 Content 参数指定二维码内容", - "QRCodesWidthTitle": "大小", - "QRCodesWidthIntro": "通过 Width 参数指定二维码宽度,高度与宽度一致", - "QRCodesColorTitle": "颜色", - "QRCodesColorIntro": "通过 DarkColor 参数指定二维码黑色部分颜色,LightColor 参数指定二维码白色部分颜色", - "SuccessText": "二维码生成成功", - "ClearText": "二维码清除成功", - "OnGenerated": "二维码生成后回调委托", - "OnCleared": "二维码清除后回调委托", - "Width": "大小", - "ClearButtonText": "清除按钮文字", - "ClearButtonIcon": "清除按钮图标", - "GenerateButtonText": "生成按钮文字", - "GenerateButtonIcon": "生成按钮图标", - "ShowButtons": "是否显示按钮", - "DarkColor": "黑色部分替代颜色", - "LightColor": "白色部分替代颜色", - "QRCodesPlaceHolderValue": "请输入内容", - "QRCodesClearButtonTextValue": "清除", - "QRCodesGenerateButtonTextValue": "生成" - }, - "BootstrapBlazor.Server.Components.Samples.Anchors": { - "Title": "Anchor 锚点", - "SubTitle": "用于跳转到页面指定位置", - "BaseUsageText": "基础用法", - "IntroText1": "需要展现当前页面上可供跳转的锚点链接,以及快速在锚点之间跳转", - "IntroText2": "点击下面 Anchor 项目,页面滚动到相对应的章节", - "ContentText1": "

        与现实生活一致:与现实生活的流程、逻辑保持一致,遵循用户习惯的语言和概念;在界面中一致:所有的元素和结构需保持一致,比如:设计样式、图标和文本、元素的位置等。

        控制反馈:通过界面样式和交互动效让用户可以清晰的感知自己的操作;

        页面反馈:操作后,通过页面元素的变化清晰地展现当前状态。

        简化流程:设计简洁直观的操作流程;

        清晰明确:语言表达清晰且表意明确,让用户快速理解进而作出决策;

        帮助用户识别:界面简单直白,让用户快速识别而非回忆,减少用户记忆负担。

        ", - "DescTarget": "锚点目标 Id", - "DescIsAnimation": "是否开启动画效果", - "DescContainer": "滚动条所在元素 Id", - "DescOffset": "偏移量用于调整间隙使用", - "DescChildContent": "内容" - }, - "BootstrapBlazor.Server.Components.Samples.Breadcrumbs": { - "Title": "Breadcrumb 面包屑", - "Describe": "显示当前页面的路径,快速返回之前的任意页面。", - "Block1Title": "基础用法", - "Block1Intro": "适用广泛的基础用法。" - }, - "BootstrapBlazor.Server.Data.Foo": { - "Name": "姓名", - "DateTime": "日期", - "Address": "地址", - "Address.PlaceHolder": "不可为空", - "Count": "数量", - "Count.PlaceHolder": "不可为空", - "Complete": "是/否", - "Education": "学历", - "Hobby": "爱好", - "ReadonlyColumn": "只读列", - "Name.Required": "{0}是必填项", - "Address.Required": "{0}是必填项", - "Education.Required": "{0}是必选项", - "Hobby.Required": "请选择一种{0}", - "Name.PlaceHolder": "不可为空", - "Hobbies": "游泳,登山,打球,下棋", - "Foo.Name": "张三 {0}", - "Foo.Address": "上海市普陀区金沙江路 {0} 弄", - "Foo.Address2": "地球、中国、上海市普陀区金沙江路 {0} 弄 这里是超长单元格示例", - "Foo.BindValue": "绑定值", - "True": "通过", - "False": "未通过", - "NullItemText": "未设置" - }, - "BootstrapBlazor.Server.Components.Samples.ValidateForms.ComplexFoo": { - "Name": "姓名", - "Name.Required": "{0} 值是必填项" - }, - "BootstrapBlazor.Server.Components.Samples.ValidateForms.Dummy2": { - "Name": "姓名", - "Name.Required": "Dummy2 {0} 值是必填项" - }, - "BootstrapBlazor.Server.Data.EnumEducation": { - "PlaceHolder": "请选择 ...", - "Primary": "小学", - "Middle": "中学" - }, - "BootstrapBlazor.Server.Components.Components.ThemeChooser": { - "Title": "点击切换主题", - "HeaderText": "请选择主题" - }, - "BootstrapBlazor.Server.Components.Samples.Uploads.Person": { - "Name": "姓名", - "Name.Required": "{0}不能为空", - "Picture": "上传文件", - "Picture.Required": "上传文件不能为空" - }, - "BootstrapBlazor.Server.Components.Components.CultureChooser": { - "Label": "语言:" - }, - "BootstrapBlazor.Server.Components.Components.GlobalSearch": { - "SearchPlaceHolder": "搜索", - "SearchingText": "正在搜索 ...", - "SearchResultText": "匹配到 {0} 条记录,耗时 {1} 毫秒", - "LogoText": "Powered by BootstrapBlazor", - "SearchResultPlaceHolder": "键入要搜索的内容", - "EmptySearchResultPlaceHolder": "无匹配搜索", - "EnterKeyText": "选择", - "ArrowKeyText": "导航", - "EscKeyText": "关闭" - }, - "BootstrapBlazor.Server.Components.Components.Header": { - "DownloadText": "Download", - "HomeText": "首页", - "IntroductionText": "文档", - "TutorialsText": "实战", - "FullScreenTooltipText": "点击切换全屏模式" - }, - "BootstrapBlazor.Server.Components.Layout.BaseLayout": { - "SiteTitle": "Bootstrap Blazor - 组件库", - "FlowText": "工作流", - "InstallAppText": "安装小程序", - "InstallText": "安装", - "CancelText": "取消", - "Title": "点击查看更新日志", - "ChatTooltip": "Azure OpenAI", - "LightMode": "明亮模式", - "DarkMode": "暗黑模式" + "BootstrapBlazor.Server.Components.Layout.HomeLayout": { + "Community": "社区", + "CommunityLi1": "贡献指南", + "CommunityLi2": "加入我们", + "CommunityLi3": "联系方式", + "Footer": "码云托管平台", + "FooterH1": "相关作品", + "FooterLi1": "滑块验证码", + "FriendLink": "友情链接" }, "BootstrapBlazor.Server.Components.Layout.NavMenu": { - "GetStarted": "快速上手", - "Introduction": "简介", - "Install": "安装", - "ProjectTemplate": "项目模板", - "HostMode": "托管模型", - "Globalization": "全球化", - "Localization": "本地化", - "WebAppBlazor": "WebApp 模式", - "ServerBlazor": "服务器端模式", - "ClientBlazor": "客户端模式", - "MauiBlazor": "MAUI Blazor 模式", - "ZIndex": "组件层次", - "Breakpoints": "断点阈值", - "Theme": "组件主题", - "Labels": "表单标签", - "GlobalException": "全局异常", - "GlobalOption": "全局配置", - "LayoutPage": "后台模拟器", - "FAIcon": "FontAwesome Icons", - "Components": "组件总览", - "LayoutComponents": "布局组件", - "Client": "客户信息服务 Client", - "Divider": "分割线 Divider", - "DragDrop": "拖拽组件 DragDrop", - "Layout": "布局组件 Layout", - "FullScreen": "全屏组件 FullScreen", - "Footer": "页脚组件 Footer", - "Row": "行组件 Row", - "Scroll": "滚动条 Scroll", - "Skeleton": "骨架屏 Skeleton", - "Split": "分割面板 Split", - "Responsive": "断点通知 Responsive", - "NavigationComponents": "导航组件", + "Affix": "固钉组件 Affix", + "Ajax": "数据传输 Ajax", + "Alert": "警告框 Alert", "Anchor": "锚点 Anchor", "AnchorLink": "锚点链接 AnchorLink", - "AutoRedirect": "自动跳转 AutoRedirect", - "Breadcrumb": "面包屑 Breadcrumb", - "Dropdown": "下拉菜单 Dropdown", - "GoTop": "跳转组件 GoTop", - "Logout": "登出组件 Logout", - "Menu": "菜单 Menu", - "Navigation": "导航栏 Nav", - "Pagination": "分页 Pagination", - "Steps": "步骤条 Step", - "Tab": "标签页 Tab", - "NotificationComponents": "通知组件", - "Alert": "警告框 Alert", - "Console": "控制台 Console", - "Dialog": "对话框 Dialog", - "Dispatch": "消息分发 Dispatch", - "Drawer": "抽屉 Drawer", - "EditDialog": "编辑弹窗 EditDialog", - "FloatingLabel": "悬浮标签 FloatingLabel", - "Message": "消息框 Message", - "Modal": "模态框 Modal", - "Light": "指示灯 Light", - "PopConfirm": "确认框 PopConfirmButton", - "Progress": "进度条 Progress", - "SearchDialog": "搜索弹窗 SearchDialog", - "SwitchButton": "状态切换按钮 SwitchButton", - "Spinner": "旋转图标 Spinner", - "SweetAlert": "模态弹框 SweetAlert", - "Timer": "计时器 Timer", - "Toast": "轻量弹窗 Toast", - "FormsComponents": "表单组件", + "AntDesignIcon": "蚂蚁图标 AntDesignIcon", + "AudioDevice": "音频设备服务 IAudioDevice", "AutoComplete": "自动完成 AutoComplete", "AutoFill": "自动填充 AutoFill", - "Button": "按钮 Button", + "AutoRedirect": "自动跳转 AutoRedirect", + "Avatar": "头像框 Avatar", + "AvatarUpload": "头像上传组件 AvatarUpload", + "AzureOpenAI": "AI 聊天服务 AzureOpenAI", + "AzureTranslator": "翻译服务 AzureTranslator", + "Badge": "徽章 Badge", + "BaiduOcr": "文字识别服务 IBaiduOcr", + "BarcodeGenerator": "条码生成器 BarcodeGenerator", + "BarcodeReader": "条码扫描 BarcodeReader", "Block": "条件块 Block", + "Bluetooth": "蓝牙服务 IBluetoothService", + "BootstrapIcon": "Bootstrap Icons", + "Breadcrumb": "面包屑 Breadcrumb", + "Breakpoints": "断点阈值", + "BrowserFinger": "浏览器指纹 BrowserFingerService", + "Button": "按钮 Button", + "ButtonUpload": "按钮上传组件 ButtonUpload", + "Calendar": "日历框 Calendar", + "Camera": "摄像头 Camera", + "Captcha": "验证码 Captcha", + "Card": "卡片 Card", + "CardUpload": "卡片上传组件 CardUpload", + "Carousel": "走马灯 Carousel", "Cascader": "级联选择 Cascader", + "ChartBar": "柱状图 Bar", + "ChartBubble": "气泡图 Bubble", + "ChartDoughnut": "圆环图 Doughnut", + "ChartLine": "折线图 Line", + "ChartPie": "饼图 Pie", + "Charts": "图表 Chart", + "ChartSummary": "简介", "Checkbox": "多选框 Checkbox", "CheckboxList": "多选框组 CheckboxList", + "CherryMarkdown": "腾讯文本框 Markdown", + "Circle": "进度环 Circle", + "Client": "客户信息服务 Client", + "ClientBlazor": "客户端模式", + "Clipboard": "剪切板服务 Clipboard", + "ClockPicker": "时间选择器 ClockPicker", + "CodeEditor": "代码编辑器 CodeEditor", + "Collapse": "折叠 Collapse", "ColorPicker": "颜色拾取器 ColorPicker", + "Components": "组件总览", + "ConnectionService": "在线连接服务 ConnectionService", + "Console": "控制台 Console", + "ContextMenu": "右键菜单 ContextMenu", + "CountButton": "倒计时按钮 CountButton", + "CountUp": "计数器 CountUp", + "DataComponents": "数据组件", + "DataPackageAdapter": "数据适配器", "DateTimePicker": "时间框 DateTimePicker", "DateTimeRange": "时间范围框 DateTimeRange", + "DialButton": "拨号菜单 DialButton", + "Dialog": "对话框 Dialog", + "DialogService": "弹窗服务 DialogService", + "Dispatch": "消息分发 Dispatch", + "Display": "数据显示 Display", + "Divider": "分割线 Divider", + "DockViewColumn": "DockView 列布局", + "DockViewComplex": "DockView 组合布局", + "DockViewComponents": "可停靠布局 DockView", + "DockViewComponents2": "可停靠布局 DockViewV2", + "DockViewIndex": "DockView 简介", + "DockViewLayout": "DockView 布局自定义", + "DockViewLock": "DockView 布局锁定", + "DockViewNest": "DockView 嵌套布局", + "DockViewRow": "DockView 行布局", + "DockViewStack": "DockView 堆栈布局", + "DockViewTitle": "DockView 设置标题", + "DockViewV2Column": "DockViewV2 列布局", + "DockViewV2Complex": "DockViewV2 组合布局", + "DockViewV2Group": "DockViewV2 组布局", + "DockViewV2Index": "DockViewV2 简介", + "DockViewV2Layout": "DockViewV2 布局自定义", + "DockViewV2Lock": "DockViewV2 布局锁定", + "DockViewV2Nest": "DockViewV2 嵌套布局", + "DockViewV2Row": "DockViewV2 行布局", + "DockViewV2Title": "DockViewV2 设置标题", + "DockViewV2Visible": "DockViewV2 可见性切换", + "DockViewVisible": "DockView 可见性切换", + "Dom2ImageService": "节点转图片服务 Dom2HtmlService", + "Download": "文件下载 Download", + "DragDrop": "拖拽组件 DragDrop", + "Drawer": "抽屉 Drawer", + "DrawerService": "抽屉服务 DrawerService", + "DriverJs": "高亮向导组件 DriverJs", + "Dropdown": "下拉菜单 Dropdown", + "DropdownWidget": "挂件 DropdownWidget", + "DropUpload": "拖动上传组件 DropUpload", + "EditDialog": "编辑弹窗 EditDialog", "Editor": "富文本框 Editor", "EditorForm": "表单编辑框 EditorForm", + "ElementIcon": "饿了么图标 ElementIcon", + "EmbedPdf": "PDF阅读器 Embed PDF", + "Empty": "空状态 Empty", + "ExportPdfButton": "导出 Pdf 按钮 ExportPdfButton", "EyeDropper": "取色服务 EyeDropperService", + "FAIcon": "FontAwesome Icons", + "Festival": "节日服务 ICalendarFestival", + "FileIcon": "文件图标 FileIcon", + "FileViewer": "文件预览器 FileViewer", + "FlipClock": "卡片翻转时钟 FlipClock", + "FloatingLabel": "悬浮标签 FloatingLabel", + "FluentSystemIcon": "Fluent Icons", + "Footer": "页脚组件 Footer", + "FormsComponents": "表单组件", + "FullScreen": "全屏组件 FullScreen", + "FullScreenButton": "全屏按钮 FullScreenButton", + "Gantt": "甘特图 Gantt", + "Geolocation": "地理定位组件 GeoLocationService", + "GetStarted": "快速上手", + "GlobalException": "全局异常", + "Globalization": "全球化", + "GlobalOption": "全局配置", + "GoTop": "跳转组件 GoTop", + "GroupBox": "集合 GroupBox", + "Handwritten": "手写组件 HandWritten", + "HikVision": "海康摄像头 HikVisionWebPlugin", + "Holiday": "假日服务 ICalendarHoliday", + "HostMode": "托管模型", + "Html2Image": "Html 转 Image IHtml2Image", + "Html2Pdf": "Html 转 Pdf IHtml2Pdf", + "HtmlRenderer": "Html 转换器 HtmlRenderer", + "Icon": "图标 Icon", + "IconPark": "字节跳动图标 IconPark", + "Icons": "内置图标", + "IFrame": "内嵌框架 IFrame", + "ImageCropper": "图像裁剪 ImageCropper", + "ImageViewer": "图片 ImageViewer", "Input": "输入框 Input", - "InputNumber": "数字框 InputNumber", "InputGroup": "输入组 InputGroup", + "InputNumber": "数字框 InputNumber", + "InputUpload": "上传组件 InputUpload", + "Install": "安装", + "IntersectionObserver": "交叉观察者 IntersectionObserver", + "Introduction": "简介", "Ip": "IP 地址 IpAddress", + "JSExtension": "JSRuntime 扩展", + "Labels": "表单标签", + "Layout": "布局组件 Layout", + "LayoutComponents": "布局组件", + "LayoutPage": "后台模拟器", + "Light": "指示灯 Light", + "LinkButton": "链接按钮 LinkButton", + "ListGroup": "列表框 ListGroup", + "ListView": "列表组件 ListView", + "Live2DDisplayIntro": "Live2D 插件", + "Localization": "本地化", + "Locator": "位置定位 IpLocatorFactory", + "Logout": "登出组件 Logout", + "Lookup": "外键数据源服务 ILookupService", "Markdown": "富文本框 Markdown", - "CherryMarkdown": "腾讯文本框 Markdown", + "Marquee": "文字滚动 Marquee", + "Mask": "遮罩服务 MaskService", + "MaterialIcon": "Material Icons", + "MauiBlazor": "MAUI Blazor 模式", + "Meet": "视频会议组件 Meet", + "Menu": "菜单 Menu", + "MenuAccordion": "手风琴效果", + "MenuExpandAll": "全部展开", + "Mermaid": "图表工具 Mermaid", + "Message": "消息框 Message", + "MindMap": "思维导图 MindMap", + "Modal": "模态框 Modal", + "ModbusComponents": "串行通信协议 Modbus", + "ModbusFactory": "通信服务 IModbusFactory", + "MouseFollowerIntro": "鼠标跟随", "MultiSelect": "多项选择器 MultiSelect", + "Navbar": "导航栏 Navbar", + "Navigation": "导航栏 Nav", + "NavigationComponents": "导航组件", + "NetworkMonitor": "网络状态 NetworkMonitor", + "Notification": "浏览器通知 NotificationService", + "NotificationComponents": "通知组件", + "OctIcon": "Oct Icons", + "OfficeViewer": "Office 文档预览组件", + "OnlineText": "在线统计 Online", + "OnScreenKeyboard": "屏幕键盘 OnScreenKeyboard", + "OpcDaService": "OpcDaServer 服务", + "OtherComponents": "其他组件", + "OtpInput": "验证码输入框 OtpInput", + "Pagination": "分页 Pagination", + "PdfReader": "PDF阅读器 PDF Reader", + "PdfViewer": "PDF阅读器 PDF Viewer", + "Player": "播放器 Player", + "PopConfirm": "确认框 PopConfirmButton", + "Popover": "弹出窗 Popover", + "Print": "打印按钮 Print", + "PrintService": "打印服务 PrintService", + "Progress": "进度条 Progress", + "ProjectTemplate": "项目模板", + "PulseButton": "心跳按钮 PulseButton", + "QRCode": "二维码 QRCode", + "QueryBuilder": "条件生成器 QueryBuilder", "Radio": "单选框 Radio", "Rate": "评分 Rate", + "RDKit": "分子式组件 RDKit", + "Recognizer": "语音识别 Recognizer", + "Reconnector": "重连组件 Reconnector", + "Repeater": "重复组件 Repeater", + "Responsive": "断点通知 Responsive", + "RibbonTab": "选项卡菜单 RibbonTab", + "Row": "行组件 Row", + "Scroll": "滚动条 Scroll", + "Search": "搜索框 Search", + "SearchDialog": "搜索弹窗 SearchDialog", + "Segmented": "分段控制器 Segmented", "Select": "选择器 Select", + "SelectCity": "城市选择器 SelectCity", "SelectObject": "任意选择器 SelectObject", + "SelectProvince": "省选择器 SelectProvince", + "SelectRegion": "行政区域选择器 SelectRegion", "SelectTable": "表格选择器 SelectTable", "SelectTree": "树状选择器 SelectTree", + "SerialPortComponents": "串行通信协议 SerialPort", + "SerialPortFactory": "通信服务 ISerialPortFactory", + "ServerBlazor": "服务器端模式", + "Services": "内置服务", + "ShieldBadge": "徽章组件 ShieldBadge", + "SignaturePad": "手写签名 SignaturePad", + "Skeleton": "骨架屏 Skeleton", + "SlideButton": "快捷菜单 SlideButton", "Slider": "滑块 Slider", + "SmilesDrawer": "分子式组件 SmilesDrawer", + "SocketAutoConnect": "自动重连", + "SocketAutoReceive": "自动接收数据", + "SocketComponents": "套接字服务 Socket", + "SocketDataEntity": "通信数据转实体类", + "SocketManualReceive": "手动接收数据", + "SortableList": "拖拽组件 SortableList", + "Speech": "语音识别 Speech", + "SpeechComponents": "语音组件", + "SpeechIntro": "简介", + "SpeechWave": "语音波形图 SpeechWave", + "Spinner": "旋转图标 Spinner", + "Split": "分割面板 Split", + "Splitting": "动画组件 Splitting", + "Stack": "堆叠布局 Stack", + "Steps": "步骤条 Step", + "SvgEditor": "Svg编辑器 SvgEditor", + "SweetAlert": "模态弹框 SweetAlert", "Switch": "开关 Switch", - "Textarea": "多行文本框 Textarea", - "Toggle": "开关 Toggle", - "Transfer": "穿梭框 Transfer", - "Upload": "上传组件 Upload", - "ValidateForm": "验证表单 ValidateForm", - "DataComponents": "数据组件", - "Ajax": "数据传输 Ajax", - "Avatar": "头像框 Avatar", - "Badge": "徽章 Badge", - "BarcodeReader": "条码扫描 BarcodeReader", - "Card": "卡片 Card", - "Calendar": "日历框 Calendar", - "Camera": "摄像头 Camera", - "Captcha": "验证码 Captcha", - "Carousel": "走马灯 Carousel", - "Circle": "进度环 Circle", - "Collapse": "折叠 Collapse", - "Display": "数据显示 Display", - "CountUp": "计数器 CountUp", - "DropdownWidget": "挂件 DropdownWidget", - "GroupBox": "集合 GroupBox", - "Handwritten": "手写组件 HandWritten", - "LinkButton": "链接按钮 LinkButton", - "ListView": "列表组件 ListView", - "ListGroup": "列表框 ListGroup", - "Locator": "位置定位 IpLocatorFactory", - "Icon": "图标 Icon", - "IFrame": "内嵌框架 IFrame", - "ImageViewer": "图片 ImageViewer", - "FileIcon": "文件图标 FileIcon", - "Popover": "弹出窗 Popover", - "Print": "打印按钮 Print", - "QRCode": "二维码 QRCode", - "Repeater": "重复组件 Repeater", - "Search": "搜索框 Search", - "Tag": "标签 Tag", - "Timeline": "时间线 Timeline", - "Title": "网站标题 TitleService", - "Download": "文件下载 Download", - "Tooltip": "工具条 Tooltip", - "Reconnector": "重连组件 Reconnector", - "Tree": "树形组件 Tree", - "TreeView": "树形组件 TreeView", - "TableComponents": "表格组件", + "SwitchButton": "状态切换按钮 SwitchButton", + "Synthesizer": "语音合成 Synthesizer", + "Tab": "标签页 Tab", "Table": "表格组件", + "TableAttribute": "特性标签", + "TableAutoRefresh": "自动刷新", "TableBase": "基本功能", - "TableRow": "行设置", + "TableCell": "单元格", "TableColumn": "列设置", - "TableColumnDrag": "列拖动", - "TableColumnResizing": "列宽设置", - "TableColumnList": "列显示/隐藏", "TableColumnAlign": "列对齐", "TableColumnCopy": "列复制", + "TableColumnDrag": "列拖动", + "TableColumnList": "列显示/隐藏", + "TableColumnResizing": "列宽设置", "TableColumnTemplate": "列模板", - "TableCell": "单元格", + "TableComponents": "表格组件", "TableDetail": "明细行", + "TableDialog": "弹窗联动", "TableDynamic": "动态表格", + "TableDynamicExcel": "Excel-DataTable", "TableDynamicObject": "动态对象", - "TableSearch": "搜索功能", + "TableEdit": "表单维护", + "TableExcel": "Excel-Items", + "TableExport": "导出功能", "TableFilter": "筛选和排序", + "TableFixColumn": "列固定", "TableFixHeader": "表头固定", + "TableFooter": "统计合并", "TableHeaderGroup": "表头分组", - "TableFixColumn": "列固定", + "TableLoading": "数据加载", + "TableLookup": "外键数据源", "TablePage": "分页功能", + "TableRow": "行设置", + "TableSearch": "搜索功能", + "TableSelection": "行选中", "TableToolbar": "工具栏", - "TableEdit": "表单维护", "TableTracking": "跟踪模式", - "TableDynamicExcel": "Excel-DataTable", - "TableExcel": "Excel-Items", - "TableExport": "导出功能", - "TableSelection": "行选中", - "TableAutoRefresh": "自动刷新", - "TableFooter": "统计合并", - "TableDialog": "弹窗联动", - "TableWrap": "折行演示", "TableTree": "树形数据", - "TableLoading": "数据加载", - "TableLookup": "外键数据源", "TableVirtualization": "虚拟滚动", - "TableAttribute": "特性标签", - "Topology": "人机交互图 HMI", - "MenuAccordion": "手风琴效果", - "MenuExpandAll": "全部展开", - "Empty": "空状态 Empty", - "Charts": "图表 Chart", - "ChartSummary": "简介", - "ChartLine": "折线图 Line", - "ChartBar": "柱状图 Bar", - "ChartPie": "饼图 Pie", - "ChartDoughnut": "圆环图 Doughnut", - "ChartBubble": "气泡图 Bubble", - "Transition": "过渡效果 Transition", - "Geolocation": "地理定位组件 GeoLocationService", - "Notification": "浏览器通知 NotificationService", - "SignaturePad": "手写签名 SignaturePad", - "Speech": "语音识别 Speech", - "SpeechComponents": "语音组件", - "SpeechIntro": "简介", - "Recognizer": "语音识别 Recognizer", - "Synthesizer": "语音合成 Synthesizer", - "SpeechWave": "语音波形图 SpeechWave", - "WebSpeech": "Web Speech Api", - "OnScreenKeyboard": "屏幕键盘 OnScreenKeyboard", - "RibbonTab": "选项卡菜单 RibbonTab", - "PulseButton": "心跳按钮 PulseButton", - "Bluetooth": "蓝牙服务 IBluetoothService", - "EmbedPdf": "PDF阅读器 Embed PDF", - "PdfReader": "PDF阅读器 PDF Reader", - "PdfViewer": "PDF阅读器 PDF Viewer", - "VideoPlayer": "视频播放器 VideoPlayer", - "FileViewer": "文件预览器 FileViewer", - "FlipClock": "卡片翻转时钟 FlipClock", - "DriverJs": "高亮向导组件 DriverJs", - "BaiduOcr": "文字识别服务 IBaiduOcr", - "AzureOpenAI": "AI 聊天服务 AzureOpenAI", - "HtmlRenderer": "Html 转换器 HtmlRenderer", - "Html2Image": "Html 转 Image IHtml2Image", - "Html2Pdf": "Html 转 Pdf IHtml2Pdf", - "Mask": "遮罩服务 MaskService", - "ContextMenu": "右键菜单 ContextMenu", - "ClockPicker": "时间选择器 ClockPicker", - "TimePicker": "时间选择器 TimePicker", - "DockViewComponents": "可停靠布局 DockView", - "DockViewComponents2": "可停靠布局 DockViewV2", - "DockViewIndex": "DockView 简介", - "DockViewColumn": "DockView 列布局", - "DockViewRow": "DockView 行布局", - "DockViewStack": "DockView 堆栈布局", - "DockViewNest": "DockView 嵌套布局", - "DockViewComplex": "DockView 组合布局", - "DockViewVisible": "DockView 可见性切换", - "DockViewLock": "DockView 布局锁定", - "DockViewLayout": "DockView 布局自定义", - "DockViewTitle": "DockView 设置标题", - "DockViewV2Index": "DockViewV2 简介", - "DockViewV2Column": "DockViewV2 列布局", - "DockViewV2Row": "DockViewV2 行布局", - "DockViewV2Group": "DockViewV2 组布局", - "DockViewV2Nest": "DockViewV2 嵌套布局", - "DockViewV2Complex": "DockViewV2 组合布局", - "DockViewV2Visible": "DockViewV2 可见性切换", - "DockViewV2Lock": "DockViewV2 布局锁定", - "DockViewV2Layout": "DockViewV2 布局自定义", - "DockViewV2Title": "DockViewV2 设置标题", - "OtherComponents": "其他组件", - "MouseFollowerIntro": "鼠标跟随", - "Live2DDisplayIntro": "Live2D 插件", - "SlideButton": "快捷菜单 SlideButton", - "DialButton": "拨号菜单 DialButton", - "CountButton": "倒计时按钮 CountButton", - "Splitting": "动画组件 Splitting", - "QueryBuilder": "条件生成器 QueryBuilder", - "WebSerial": "串口服务 ISerialService", - "MindMap": "思维导图 MindMap", - "Mermaid": "图表工具 Mermaid", - "Marquee": "文字滚动 Marquee", - "Stack": "堆叠布局 Stack", - "Segmented": "分段控制器 Segmented", - "Utility": "实用工具", - "JSExtension": "JSRuntime 扩展", - "Clipboard": "剪切板服务 Clipboard", - "CodeEditor": "代码编辑器 CodeEditor", - "Gantt": "甘特图 Gantt", - "ImageCropper": "图像裁剪 ImageCropper", - "Services": "内置服务", - "AzureTranslator": "翻译服务 AzureTranslator", - "BarcodeGenerator": "条码生成器 BarcodeGenerator", - "ZipArchive": "压缩归档服务 IZipArchiveService", - "BrowserFinger": "浏览器指纹 BrowserFingerService", - "SvgEditor": "Svg编辑器 SvgEditor", - "Waterfall": "瀑布流 Waterfall", - "Holiday": "假日服务 ICalendarHoliday", - "Festival": "节日服务 ICalendarFestival", - "Lookup": "外键数据源服务 ILookupService", - "DialogService": "弹窗服务 DialogService", - "OnlineText": "在线统计 Online", - "PrintService": "打印服务 PrintService", - "ConnectionService": "在线连接服务 ConnectionService", - "ExportPdfButton": "导出 Pdf 按钮 ExportPdfButton", + "TableWrap": "折行演示", + "Tag": "标签 Tag", + "TaskDashBoard": "任务管理器 TaskDashBoard", + "TcpSocketFactory": "套接字服务 ITcpSocketFactory", + "Textarea": "多行文本框 Textarea", + "Theme": "组件主题", "ThemeProvider": "主题服务 IThemeProvider", - "IconPark": "字节跳动图标 IconPark", - "IntersectionObserver": "交叉观察者 IntersectionObserver", - "AntDesignIcon": "蚂蚁图标 AntDesignIcon", - "Icons": "内置图标", - "BootstrapIcon": "Bootstrap Icons", - "MaterialIcon": "Material Icons", - "FluentSystemIcon": "Fluent Icons", - "ElementIcon": "饿了么图标 ElementIcon", - "DrawerService": "抽屉服务 DrawerService", - "SortableList": "拖拽组件 SortableList", - "WinBox": "窗口 WinBox", - "Player": "播放器 Player", - "RDKit": "分子式组件 RDKit", - "SmilesDrawer": "分子式组件 SmilesDrawer", - "Affix": "固钉组件 Affix", - "Watermark": "水印组件 Watermark", - "OctIcon": "Oct Icons", - "UniverIcon": "Univer Icons", + "Timeline": "时间线 Timeline", + "TimePicker": "时间选择器 TimePicker", + "Timer": "计时器 Timer", + "Title": "网站标题 TitleService", + "Toast": "轻量弹窗 Toast", + "Toggle": "开关 Toggle", + "Toolbar": "工具栏 Toolbar", + "Tooltip": "工具条 Tooltip", + "Topology": "人机交互图 HMI", + "TotpService": "时间密码验证服务 ITotpService", + "Transfer": "穿梭框 Transfer", + "Transition": "过渡效果 Transition", + "Tree": "树形组件 Tree", + "TreeView": "树形组件 TreeView", "Typed": "打字机效果 Typed", + "UniverIcon": "Univer Icons", "UniverSheet": "表格组件 UniverSheet", - "ShieldBadge": "徽章组件 ShieldBadge", - "OtpInput": "验证码输入框 OtpInput", - "TotpService": "时间密码验证服务 ITotpService", - "VideoDevice": "视频设备服务 IVideoDevice", - "AudioDevice": "音频设备服务 IAudioDevice", - "FullScreenButton": "全屏按钮 FullScreenButton", - "Meet": "视频会议组件 Meet", - "InputUpload": "上传组件 InputUpload", - "ButtonUpload": "按钮上传组件 ButtonUpload", - "AvatarUpload": "头像上传组件 AvatarUpload", - "CardUpload": "卡片上传组件 CardUpload", - "DropUpload": "拖动上传组件 DropUpload", + "Upload": "上传组件 Upload", + "Utility": "实用工具", + "ValidateForm": "验证表单 ValidateForm", "Vditor": "富文本框 Vditor Markdown", - "TcpSocketFactory": "套接字服务 ITcpSocketFactory", - "OfficeViewer": "Office 文档预览组件", - "SocketComponents": "套接字服务 Socket", - "SocketAutoReceive": "自动接收数据", - "SocketManualReceive": "手动接收数据", - "DataPackageAdapter": "数据适配器", - "SocketAutoConnect": "自动重连", - "SocketDataEntity": "通信数据转实体类", - "ModbusComponents": "串行通信协议 Modbus", - "SerialPortComponents": "串行通信协议 SerialPort", - "ModbusFactory": "通信服务 IModbusFactory", - "SerialPortFactory": "通信服务 ISerialPortFactory", - "NetworkMonitor": "网络状态 NetworkMonitor", - "Toolbar": "工具栏 Toolbar", - "OpcDaService": "OpcDaServer 服务", - "Navbar": "导航栏 Navbar", - "TaskDashBoard": "任务管理器 TaskDashBoard", - "Dom2ImageService": "节点转图片服务 Dom2HtmlService", - "SelectRegion": "行政区域选择器 SelectRegion", - "SelectProvince": "省选择器 SelectProvince", - "SelectCity": "城市选择器 SelectCity", - "HikVision": "海康摄像头 HikVisionWebPlugin" + "VideoDevice": "视频设备服务 IVideoDevice", + "VideoPlayer": "视频播放器 VideoPlayer", + "Waterfall": "瀑布流 Waterfall", + "Watermark": "水印组件 Watermark", + "WebAppBlazor": "WebApp 模式", + "WebSerial": "串口服务 ISerialService", + "WebSpeech": "Web Speech Api", + "WinBox": "窗口 WinBox", + "ZIndex": "组件层次", + "ZipArchive": "压缩归档服务 IZipArchiveService" + }, + "BootstrapBlazor.Server.Components.Pages.Breakpoints": { + "Amount": "像素", + "Footer1": "组件内默认已经适配特大屏,很多默认都是", + "Footer2": "如", + "Footer3": "默认弹窗大小为\",", + "Heading": "断点", + "Heading1": "断点是可自定义的宽度,它决定了响应式布局在 Bootstrap 中跨设备或视口大小的行为方式", + "Name1": "超小", + "Name2": "小号", + "Name3": "中号", + "Name4": "大号", + "Name5": "超大", + "Name6": "特大", + "Paragraph1": "可用断点", + "Paragraph2": "Bootstrap 包括六个默认断点,有时称为网格层,用于响应式构建", + "TableHeading1": "断点名称", + "TableHeading2": "类后缀", + "TableHeading3": "阈值" + }, + "BootstrapBlazor.Server.Components.Pages.CacheList": { + "CacheListAction": "操作", + "CacheListCount": "共 {0} 个键值", + "CacheListDelete": "删除", + "CacheListDeleteAll": "清除全部", + "CacheListExpiration": "到期时间", + "CacheListIntro": "通过 ICacheManager 接口方法管理组件库内部缓存", + "CacheListKey": "键", + "CacheListRefresh": "刷新", + "CacheListTitle": "缓存管理", + "CacheListValue": "值" + }, + "BootstrapBlazor.Server.Components.Pages.Chats": { + "ChatInfo": "由于 GPT 无免费接口,体验次数为 {1} 次,当前次数为 {0}", + "ChatNormalIntro": "通过调用 IAzureOpenAIService 服务方法 GetChatCompletionsAsync 进行聊天对话", + "ChatNormalTitle": "Azure OpenAI 服务", + "ChatsDescription": "Azure OpenAI 服务是一个基于 Azure 云服务的聊天机器人,可以通过对话的方式与用户进行交互", + "ChatsTitle": "Azure OpenAI 服务", + "ChatUserMessageTitle": "你好 {0}", + "ChatUserTitle": "聊天场景" + }, + "BootstrapBlazor.Server.Components.Pages.Globalization": { + "P1": "阅读以下知识点前请先查看 微软官方文档", + "SubTitle": "ASP.NET Core Blazor 全球化", + "Title": "全球化" + }, + "BootstrapBlazor.Server.Components.Pages.GlobalOption": { + "SubTitle": "组件库提供一种对当前应用程序中所有组件进行配置的方法,通过 BootstrapBlazorOptions 全局配置类实现此功能", + "Title": "全局配置" + }, + "BootstrapBlazor.Server.Components.Pages.Index": { + "Docs": "阅读文档", + "DonateH1": "捐助", + "DonateH2": "扫码捐助请作者喝一杯咖啡", + "SubTitle": "BootstrapBlazor 是一套基于 Bootstrap 和 Blazor 的企业级组件库,无缝整合了 Bootstrap 框架与 Blazor 技术。它提供了一整套强大的工具,使开发者能够轻松创建响应式和交互式的 Web 应用程序。", + "Support": "支持", + "Title": "Bootstrap Blazor UI" + }, + "BootstrapBlazor.Server.Components.Pages.Install": { + "BootstrapStyle": "// 组件样式已集成 Bootstrap 最新版", + "FontAwesomeCss": "// FontAwesome 字体图标样式 注意需要引用 BootstrapBlazor.FontAwesome 包", + "InstallDesc": "开始使用 BootstrapBlazor 进行更快、更舒服的 .NET Web 开发", + "InstallTitle": "安装", + "Manual": "手动安装", + "ManualDesc": "如果您已经有一个项目并希望从默认模板或工作应用程序向其中添加 BootstrapBlazor。", + "MotronicDesc": "// Motronic 主题可选建议添加", + "OtherText": "其他", + "Step1": "1. 安装包", + "Step1Desc": "通过 NuGet 包管理器找到该包或使用以下命令安装它。", + "Step2": "2. 添加导入", + "Step2Desc": "_Imports.razor 文件并添加以下内容", + "Step3": "3. 添加引用", + "Step3Desc": "将以下内容添加到您的 HTML 头部部分,它是 App.razor _Layout.cshtml _Host.cshtml index.html,取决于您运行的是 Server 还是 WebAssembly", + "Step4": "4. 添加脚本", + "Step4Desc": "结尾位置添加如下内容它应与默认 blazor 脚本位于同一位置", + "Step5": "5. 删除原 Bootstrap 资源", + "Step5Desc": "删除 bootstrap 样式,请同时删除 wwwroot 文件夹下的 bootstrapopen-iconic 文件夹", + "Step6": "6. 注册服务", + "Step6Desc": "Program.cs 文件中注入 BootstrapBlazor 服务", + "Step7": "7. 添加 BootstrapBlazorRoot 组件", + "Step7Desc": "在母版页中添加 BootstrapBlazorRoot 组件", + "Template": "使用模板", + "TemplateDesc": "为了快速入门,您可以使用我们的 dotnet 模板。它们基于 Microsoft Web App 模板,但已修改为包含 BootstrapBlazor 组件,请查看 [传送门]" + }, + "BootstrapBlazor.Server.Components.Pages.Introduction": { + "Advantage": "优势", + "AdvantageLi1": "使用组件无需编写 JavaScript", + "AdvantageLi2": "组件支持所有 html 特性", + "AdvantageLi3": "组件支持数据双向绑定", + "AdvantageLi4": "组件支持自动客户端验证", + "AdvantageLi5": "组件支持组合", + "Community": "交流群", + "Features": "组件特色", + "GetStarted": "快速上手", + "LearnLi1": "Blazor 官方文档", + "LearnLi2": "使用 Blazor WebAssembly 和 Visual Studio Code 生成 Web 应用", + "LearnLi3": "什么是 Blazor", + "LearnLi4": "练习 - 配置开发环境", + "LearnLi5": "Blazor 组件", + "LearnLi6": "练习 - 添加组件", + "LearnLi7": "数据绑定和事件", + "LearnLi8": "练习 - 数据绑定和事件", + "LearnTitle": "学习资料", + "P5": "国内最大代码托管协作开发平台 码云 C# 板块最高星 star 作品 通用后台管理系统 BootstrapAdmin 准备使用本组件实现全部功能", + "P6": "Bootstrap Blazor UI 组件库提供了从基本的 Button 组件到高级的网页级 Online 组件", + "ProjectsShow": "作品展示", + "QuickStart": "快速入门", + "ShowWebSiteTitle2": "实战网站(纯 Blazor 版本)", + "SubTitle": "BootstrapBlazor 是一套基于 Bootstrap 和 Blazor 的企业级组件库,可以认为是 Bootstrap 项目的 Blazor 版实现。", + "Summarize": "总结", + "Title": "简介", + "UpdateLog": "为了修复组件 bug 每天可能有小版本发布更新日志", + "UpdateLogLink": "[传送门]", + "UpdateTitle": "更新日志" + }, + "BootstrapBlazor.Server.Components.Pages.Layout": { + "Button": "测试", + "Heading": "组件分层", + "Para1": "由于弹窗组件比较多,再某些场景下会使用多种弹窗进行组合,本章节讲述如何对组件进行分层管理。下面是", + "Para2": "提供的内置", + "Para3": "值", + "Para4": "本套组件额外增加了", + "Para5": "各组件分层如下", + "Para6": "测试环节" + }, + "BootstrapBlazor.Server.Components.Pages.Localization": { + "AdditionalJsonFile": "额外本地化语言 json 文件", + "ES": "西班牙语(es)", + "LocalizationFileDesc": "组件内置本地化资源文件为 en zh 由网友提供的其他本地化资源文件 de es pt zh-TW 放置在项目文件夹 localization 内,可自行下载通过注入服务引入到项目中", + "N1": "本地化在组件中的工作原理", + "N10": "组件内置本地化语言回退机制,如请求文化为", + "N11": "时,如未提供相对应的文化资源文件时,内置逻辑通过父级文化进行尝试本地化,以", + "N12": "为例回退机制如下", + "N13": "到", + "N14": "如果设置的本地化语言未提供资源文件回落后仍无法找到资源文件后,使用", + "N15": "参数设置的文化信息进行本地化,默认为", + "N16": "特别注意", + "N17": "由于某些系统如", + "N18": "等程序运行后线程无法获得文化信息,可以通过配置文件设置默认文化信息", + "N19": "开启本地化功能", + "N2": "组件额外支持使用", + "N20": "配置文件", + "N21": "通过", + "N22": "设置回退文化信息,即未找到当前请求的文化信息时使用此配置文化,通过", + "N23": "设置支持的文化集合", + "N24": "启用 .NET 核心本地化服务", + "N25": "增加 Bootstrap Blazor 组件", + "N26": "增加多语言支持配置信息", + "N27": "启用本地化", + "N28": "增加 BootstrapBlazor 组件", + "N29": "增加本地化服务配置信息", + "N3": "类型的键值信息作为资源文件,将其解析为", + "N30": "启用本地化中间件并设置支持的文化信息", + "N31": "实现 UI 本地化信息存储(例如,cookie)", + "N32": "添加允许用户更改本地化的 UI", + "N33": "请选择语言", + "N34": "使用 api 方式 适用于 Server-Side 模式", + "N35": "附加", + "N36": "资源文件", + "N37": "组件库即支持微软默认的", + "N38": "格式资源,也支持嵌入式", + "N39": "格式资源,以及特定物理", + "N4": "中呈现的字符串", + "N40": "文件", + "N41": "资源文件为合并关系,寻址规则优先级为", + "N42": "微软 resx 嵌入式资源文件", + "N43": "外置 json 物理文件", + "N44": "json 嵌入式资源文件", + "N45": "内置 json 资源文件", + "N46": "忽略文化信息丢失日志", + "N47": "设置 RESX 格式多语言资源文件 如 Program.{CultureName}.resx", + "N48": "设置 Json 格式嵌入式资源文件", + "N49": "设置 Json 物理路径文件", + "N5": "包自带以下资源文件", + "N50": "或者使用服务扩展方法", + "N51": "忽略本地化键值文化信息丢失", + "N52": "附加自己的 json 多语言文化资源文件 如 zh-TW.json", + "N53": "设置 Json 物理路径文件", + "N54": "启用 .NET 核心本地化服务", + "N55": "增加 BootstrapBlazor 组件", + "N56": "增加本地化", + "N57": "实现 UI 本地化信息存储(例如,localStorage)", + "N58": "与 Server-Side 一致", + "N59": "更改默认语言设置", + "N6": "中文(zh)", + "N60": "设置默认文化为 zh-CN", + "N61": "配置是否显示缺失本地化资源信息", + "N62": "增加 BootstrapBlazor 服务", + "N63": "忽略本地化键值文化信息丢失", + "N7": "英语(en)", + "N8": "德语(de)", + "N9": "葡萄牙语(pu)", + "P1": "本地化是为给定语言和地区定制应用程序的过程.", + "P2": "组件允许您将其 UI 元素转换为所需的语言。这包括按钮、过滤器操作符属性等文本。组件内部默认使用当前请求", + "P3": "文化语言,本文将向您展示如何在应用程序中使用此功能", + "T1": "阅读以下知识点前请先查看", + "T2": "微软官方文档", + "T3": "由于", + "T4": "模式无法获取系统语言文化信息,默认文化信息为", + "Title": "本地化", + "TW": "中國台灣(zh-TW)" + }, + "BootstrapBlazor.Server.Components.Pages.Online": { + "Browser": "浏览器", + "City": "城市", + "ConnectionTime": "连接时间", + "Device": "设备", + "Dur": "持续时间", + "Engine": "引擎", + "Ip": "IP地址", + "Language": "语言", + "LastBeatTime": "最后心跳时间", + "LocalHost": "本地连接", + "OS": "操作系统", + "RequestUrl": "请求URL", + "SubTitle": "在线人数统计" + }, + "BootstrapBlazor.Server.Components.Pages.Template": { + "P1": "为了方便大家利用这套组件快速搭建项目,作者制作了 项目模板(Project Templates,使用 dotnet new 命令行模式,使用步骤如下:", + "P2": "1. 安装项目模板", + "P3": "2. 创建工程", + "P4": "创建工程后在当前文件夹内会生成 BootstrapBlazorApp 解决方案,src 目录内包含 Server-Side Wasm 两种类型的工程,均可以直接 F5 运行", + "P5": "3. 更新项目模板", + "P6": "注:此命令为检查是否有可用于当前安装的模板包的更新并安装这些更新。", + "P7": "4. 卸载项目模板", + "SubTitle": "Bootstrap Blazor App 模板", + "TemplateDesc": "模板安装好后,新建项目时搜索 Bootstrap 会列出如下模板候选项", + "TemplateList": "模板列表", + "Title": "项目模板" + }, + "BootstrapBlazor.Server.Components.Pages.Theme": { + "H1": "组件主题", + "H2": "测试", + "P1": "目前网站主题支持如下", + "P10": "增加此行", + "P2": "Motronic (已集成)", + "P3": "LayUI (完善中)", + "P4": "Bluma (完善中)", + "P5": "Ant Design (完善中)", + "P6": "主题切换", + "P7": "如切换为", + "P8": "主题,则请在原有", + "P9": "内增加样式文件如下" + }, + "BootstrapBlazor.Server.Components.Pages.Tutorials": { + "AdminSummary": "中台 Admin", + "CategoryTitle": "BootstrapBlazor 实战案例", + "DashboardSummary": "仪表盘 Dashboard", + "DrawingSummary": "画图 Drawing", + "LoginSummary": "登陆注册 Login&Register", + "MemorialMode": "追悼模式", + "MFA": "多因子认证 MFA", + "OnlineSheet": "在线表格 UniverSheet", + "TranslateSummary": "翻译工具 Translate", + "WaterfallSummary": "瀑布流图片 Waterfall" + }, + "BootstrapBlazor.Server.Components.Samples.Affixs": { + "AffixIntro": "将页面元素钉在可视范围", + "AffixNormalIntro": "固钉默认固定在页面顶部", + "AffixNormalTitle": "基础用法", + "AffixPositionIntro": "通过参数 Position 控制固定顶端还是底端,通过 Offset 值设置到顶端或者底端距离偏移量", + "AffixPositionTitle": "位置与距离", + "AffixTitle": "Affix 固钉组件" + }, + "BootstrapBlazor.Server.Components.Samples.Ajaxs": { + "AjaxDescribe": "用于直接在浏览器使用 fetch 方法与服务器交互,目前只支持输入输出皆为 json,返回值为 json 字符串,可以自行转换处理。", + "AjaxTitle": "Ajax调用", + "GoTo": "执行 goto 方法", + "GoToButtonText1": "跳转到文档首页", + "GoToButtonText2": "跳转到自己(刷新页面)", + "GoToIntro": "用 Js 实现页面跳转,解决了 Blazor 页面作为 SPA 跳转时不会真正刷新页面的问题", + "GoToTitle": "页面跳转", + "InvokeAsync": "执行 fetch 方法", + "NormalB": "特别注意:", + "NormalButtonText1": "登录成功", + "NormalButtonText2": "登录失败", + "NormalDiv": "这里只是进行了登录模拟,并没有真正的调用 HttpContext.SignInAsync,真实使用时需要在登录完成后对页面进行刷新,否则无法真正的登录成功。", + "NormalIntro": "模拟登录", + "NormalTitle": "基础用法" + }, + "BootstrapBlazor.Server.Components.Samples.Alerts": { + "AlertDangerText": "危险的警告框", + "AlertDarkText": "黑暗的警告框", + "AlertInfoText": "信息的警告框", + "AlertPrimaryText": "主要的警告框", + "AlertSecondaryText": "次要的警告框", + "AlertSuccessText": "成功的警告框", + "AlertWarningText": "警告的警告框", + "BaseUsageText": "基础用法", + "CloseButtonUsageText": "关闭按钮", + "IntroText1": "页面中的非浮层元素,不会自动消失。", + "IntroText2": "提供关闭按钮的警告框", + "IntroText3": "表示某种状态时提升可读性。", + "IntroText4": "作为 Tip 使用", + "ShowBarUsageText": "显示左侧 Bar", + "ShowBorderIntro": "设置 ShowBorder=\"true\" 开启边框效果", + "ShowBorderTitle": "边框效果", + "ShowShadowIntro": "设置 ShowShadow=\"true\" 开启阴影效果", + "ShowShadowTitle": "阴影效果", + "SubTitle": "用于页面中展示重要的提示信息。", + "Title": "Alert 警告", + "WithIconUsageText": "带 Icon" + }, + "BootstrapBlazor.Server.Components.Samples.AnchorLinks": { + "AnchorLinkDemoIntroduction": "放置标签后点击拷贝锚点链接到粘贴板", + "AnchorLinkDemoTitle": "普通用法", + "AnchorLinkDescribe1": "应用于标题带", + "AnchorLinkDescribe2": "的锚点链接,点击拷贝方便分享", + "AnchorLinkText": "我是一个可以点击的锚点链接", + "AnchorLinkTips1": "锚点链接组件属性", + "AnchorLinkTips2": "为必填项,不填写时不提供拷贝锚点链接功能", + "AnchorLinkTips3": "组件锚点图标可通过", + "AnchorLinkTips4": "参数进行自定义默认为", + "AnchorLinkTips5": "参数 TooltipText 用于设置拷贝地址后提示信息 默认 null 不弹出提示信息", + "AnchorLinkTitle": "AnchorLink 锚点链接" + }, + "BootstrapBlazor.Server.Components.Samples.Anchors": { + "BaseUsageText": "基础用法", + "ContentText1": "

        与现实生活一致:与现实生活的流程、逻辑保持一致,遵循用户习惯的语言和概念;在界面中一致:所有的元素和结构需保持一致,比如:设计样式、图标和文本、元素的位置等。

        控制反馈:通过界面样式和交互动效让用户可以清晰的感知自己的操作;

        页面反馈:操作后,通过页面元素的变化清晰地展现当前状态。

        简化流程:设计简洁直观的操作流程;

        清晰明确:语言表达清晰且表意明确,让用户快速理解进而作出决策;

        帮助用户识别:界面简单直白,让用户快速识别而非回忆,减少用户记忆负担。

        ", + "IntroText1": "需要展现当前页面上可供跳转的锚点链接,以及快速在锚点之间跳转", + "IntroText2": "点击下面 Anchor 项目,页面滚动到相对应的章节", + "SubTitle": "用于跳转到页面指定位置", + "Title": "Anchor 锚点" + }, + "BootstrapBlazor.Server.Components.Samples.AudioDevices": { + "AudioDeviceCloseText": "停止", + "AudioDeviceDownloadText": "下载", + "AudioDeviceIntro": "通过此服务获得音频设备操作能力", + "AudioDeviceOpenText": "录音", + "AudioDeviceRequestText": "枚举设备", + "AudioDeviceTitle": "IAudioDevice 音频设备服务", + "BaseUsageIntro": "通过调用不同的 api 方法进行不同操作", + "BaseUsageTitle": "基本用法" + }, + "BootstrapBlazor.Server.Components.Samples.AutoCompletes": { + "AutoText": "自定义城市", + "Block1Intro": "通过设置 Items 数据集合当用户键入信息时自动显示提示信息", + "Block1Title": "基础用法", + "Block2Intro": "通过设置 IsLikeMatch 值设置是否开启集合的模糊匹配,通过设置 IgnoreCase 来控制是否忽略大小写", + "Block2Title": "模糊查询并忽略大小写", + "Block3Intro": "通过设置 NoDataTip 值设置自动完成数据未找到时显示的自定义提示消息", + "Block3Title": "自定义提示消息", + "Block4Intro": "通过设置 ValueChanged 回调方法根据用户输入的数据进行重组数据集合再进行提示信息", + "Block4Title": "自定义候选项", + "Block5Intro": "组件双向绑定时会根据条件自动判断是否显示标签文字", + "Block5Title": "显示标签", + "BlockGroupIntro": "内置 BootstrapInputGroup 中使用,与 BootstrapInputGroupLabel 组合使用", + "BlockGroupPrevLabel": "前置标签", + "BlockGroupSuffixLabel": "后置标签", + "BlockGroupTitle": "组合使用", + "DebounceDescription": "本例中请键入任意字符串显示查看效果,自动完成组件在防抖时间内,只在最后一次录入后将结果发送到后端,这将大大提高性能", + "DebounceIntro": "通过设置 Debounce 时长,来开启 js 防抖", + "DebounceTitle": "设置防抖", + "Description": "输入框自动完成功能", + "Divider1Text": "双向绑定显示标签", + "Divider2Text": "双向绑定不显示标签", + "Divider3Text": "自定义 DisplayText", + "ItemTemplateIntro": "通过设置 ItemTemplate 对下拉框候选项进行自定义设置", + "ItemTemplateTitle": "候选项模板", + "LikeMatchDescription": "本例中请键入 123 字符串显示查看效果,自动完成组件初始化时给了自动提示数据集并且数据集无变化", + "NoDataTip": "没有找到你想要的数据", + "NoDataTipDescription": "本例中请键入 567 字符串由于自动完成信息中心无数据显示自定义提示信息 - 没有找到你想要的数据", + "NormalDescription": "本例中请键入 123 字符串显示查看效果,自动完成组件初始化时给了自动提示数据集并且数据集无变化,通过设置 IsClearable 开启清空小按钮", + "OnSelectedItemChangedIntro": "点击下拉菜单或者 Enter 回车时触发此回调方法", + "OnSelectedItemChangedTitle": "下拉菜单选选中回调", + "PopoverIntro": "通过设置 IsPopover 参数,组件使用 popover 渲染 UI 防止由于父容器设置 overflow: hidden; 使弹窗无法显示问题", + "PopoverTitle": "悬浮弹窗", + "ShowLabelDescription": "前置标签显式规则与 BootstrapInput 组件一致 [传送门]", + "Title": "AutoComplete 自动完成", + "ValueChangedDescription": "本例中请键入任意字符串显示查看效果,自动完成组件根据键入的字符串从新获取提示信息数据集动态变化" + }, + "BootstrapBlazor.Server.Components.Samples.AutoFills": { + "CustomFilterDesc": "录入 Name 姓名智能提示,通过设置自定义过滤条件回调委托 OnCustomFilter 过滤数据,当前过滤条件为 Name 包含输入字符串 Count 并且 值大于 50", + "CustomFilterIntro": "通过设置自定义过滤条件回调委托 OnCustomFilter 过滤数据", + "CustomFilterTitle": "自定义过滤条件", + "Description": "通过智能感应提示选项,选中后自动填充表单", + "IsVirtualizeDescription": "组件虚拟滚动支持两种形式通过 Items 或者 OnQueryAsync 回调方法提供数据", + "IsVirtualizeIntro": "通过设置 IsVirtualize 参数开启组件虚拟功能特性", + "IsVirtualizeTitle": "虚拟滚动", + "NormalDesc": "录入 Name 姓名智能提示,选择提示项后自动填充下方表单 目前支持键盘 Enter Esc ", + "NormalIntro": "填充表单", + "NormalTitle": "基本用法", + "ShowDropdownListOnFocusDesc": "参数 ShowDropdownListOnFocus 默认值为 true 组件获得焦点后会自动展开候选项下拉框,设置为 false 后关闭这个特性", + "ShowDropdownListOnFocusIntro": "通过设置 ShowDropdownListOnFocus="false"", + "ShowDropdownListOnFocusTitle": "关闭自动展开下拉框", + "Title": "AutoFill 自动填充组件" + }, + "BootstrapBlazor.Server.Components.Samples.AutoRedirects": { + "Description": "通过设置的地址,当页面无鼠标或者键盘动作时自动跳转到指定页面", + "NormalIntro": "通过设置 Interval 间隔,当无鼠标或者键盘动作时自动跳转到 RedirectUrl 设置的地址", + "NormalTitle": "普通用法", + "Title": "AutoRedirect 自动跳转组件" + }, + "BootstrapBlazor.Server.Components.Samples.Avatars": { + "BasicUsageDivider": "分割线", + "BasicUsageIntro": "通过 IsCircleSize 设置头像的形状和大小。", + "BasicUsageTitle": "基础用法", + "BorderDiv1": "第一幅圆角正方形头像框加载正确,所以边框为 蓝色", + "BorderDiv2": "第二幅圆形头像加载图片路径错误,所以边框为 红色,图片显示为默认图标", + "BorderIntro": "通过设置 IsBorder 是否显示头像框边框,此模式下图片加载失败时边框为 border-danger 样式,加载成功时边框为 border-success;其余模式下边框为border-info", + "BorderTitle": "边框", + "CircleIntro": "适用于图片地址由 webapi 等接口异步获取的场景", + "CircletTitle": "异步加载", + "IconIntro": "支持三种类型:图标、图片和字符", + "IconTitle": "展示类型", + "SubTitle": "用图标、图片或者字符的形式展示用户或事物信息。", + "Title": "Avatar 头像" + }, + "BootstrapBlazor.Server.Components.Samples.Badges": { + "BasicusageIntro": "提供各种颜色的徽章小挂件组件", + "BasicusageTitle": "基础用法", + "ButtonIntro": "按钮内部徽章", + "ButtonSpan": "主要按钮", + "ButtonTitle": "按钮内徽章", + "PillIntro": "通过属性 IsPill='true' 设置圆角的徽章挂件", + "PillTitle": "胶囊徽章", + "SubTitle": "出现在按钮、图标旁的数字或状态标记", + "Title": "Badge 徽章组件" + }, + "BootstrapBlazor.Server.Components.Samples.BaiduOcr": { + "BaiduOcrDesc": "本组件通过调用 Baidu AI 平台文字识别接口进行增值税发票文字识别。支持对增值税普票、专票、全电发票(新版全国统一电子发票,专票/普票)、卷票、区块链发票的所有字段进行结构化识别,包括发票基本信息、销售方及购买方信息、商品信息、价税信息等,其中五要素字段的识别准确率超过 99.9%; 同时,支持对增值税卷票的 21 个关键字段进行识别,包括发票类型、发票代码、发票号码、机打号码、机器编号、收款人、销售方名称、销售方纳税人识别号、开票日期、购买方名称、购买方纳税人识别号、项目、单价、数量、金额、税额、合计金额(小写)、合计金额(大写)、校验码、省、市,四要素字段的识别准确率可达95%。上传图片不能超过 4M", + "BaiduOcrIntro": "使用方法", + "BaiduOcrStep1": "1. 配置 BaiduOcrOption", + "BaiduOcrStep1Desc": "更新 appsettings.json 文件,配置如下:相关参数值请在 百度 AI 开放平台 注册后开通申请", + "BaiduOcrStep2": "2. 通过注入服务获得 IBaiduOcr 实例", + "BaiduOcrStep3": "3. 调用服务相对应的识别方法即可", + "SubTitle": "文字识别服务", + "Title": "IBaiduOcr 百度文字识别服务", + "VatInvoiceIntro": "通过上传增值税发票图片调用百度 Ocr 接口进行文字识别", + "VatInvoiceTitle": "增值税发票文字识别", + "VerifyVatInvoiceIntro": "通过调用 IBaiduOcr 服务实例的发票验真方法 VerifyInvoiceAsync 返回 InvoiceVerifyResult 其属性 Validtrue 时为真", + "VerifyVatInvoiceTitle": "增值税验真" + }, + "BootstrapBlazor.Server.Components.Samples.BarcodeGenerators": { + "BarcodeGeneratorNormalIntro": "通过给定 Value 值渲染成相对应格式的一维条码", + "BarcodeGeneratorNormalText": "条码生成器", + "Title": "BarcodeGenerator 条码生成器" + }, + "BootstrapBlazor.Server.Components.Samples.BarcodeReaders": { + "Attention": "特别注意:", + "BasicUsageIntro": "通过摄像头进行扫码识别", + "BasicUsageLi1": "点击开始打开摄像头", + "BasicUsageLi2": "对准条码进行扫描", + "BasicUsageLi3": "点击关闭按钮关闭摄像头", + "BasicUsageTitle": "基础用法", + "CloseCameraLog": "关闭摄像头", + "ErrorLog": "发生错误", + "ImageIntro": "通过静态图片进行扫码识别", + "ImageLi1": "点击扫码弹出选择文件框", + "ImageLi2": "选取包含条码图片", + "ImageLi3": "开始识别条码", + "ImageTitle": "基础用法", + "InitLog": "初始化摄像头完成", + "Li1": "站点要启用 https,这是浏览器厂商要求的", + "Li4": "条码识别率与手机像素,条码大小,手机执行效率有关", + "OpenCameraLog": "打开摄像头", + "ScanCodeLog": "扫描到条码", + "Step": "操作步骤:", + "SubTitle": "本组件通过调用摄像头对条码进行扫描,获取到条码内容条码/QR码" + }, + "BootstrapBlazor.Server.Components.Samples.Blocks": { + "AuthorizateDiv3": "我是 AuthorizeView 组件内容,当前未登录", + "AuthorizateIntro": "本例模拟用户登录来控制 Block 内容是否显示,使用比 AuthorizeView 简单", + "AuthorizateTitle": "通过权限判断", + "BasicUsageIntro": "通过设置 OnQueryCondition 回调方法返回值判断是否显示组件内容", + "BasicUsageTitle": "普通用法", + "Content": "我是组件内容", + "IsHide": "隐藏", + "IsShow": "显示", + "Login": "登入", + "Logout": "登出", + "RolesDiv1": "当前角色 User 允许看到此内容", + "RolesIntro": "通过设置 Roles 控制显示内容,当前登录用户属于预设角色时显示", + "RolesTitle": "预设置角色", + "SubTitle": "根据参数条件决定是否显示块内容,通常与权限授权配合使用", + "TemplateDiv1": "我是 符合 条件显示的组件内容", + "TemplateDiv2": "我是 不符合 条件显示的组件内容", + "TemplateIntro": "通过设置 Authorized NotAuthorized 可以分别设置符合条件与不符合条件时显示的内容", + "TemplateTitle": "模板", + "Tips": "通过设置不同的 Name 当作资源,结合授权系统对此资源授权可以实现对网页中任意元素进行权限控制", + "Title": "Block 条件块", + "UsersIntro": "通过设置 Users 控制显示内容,当前登录用户属于预设用户时显示", + "UsersTitle": "预设置用户" + }, + "BootstrapBlazor.Server.Components.Samples.Bluetooth": { + "BaseUsageIntro": "通过 IBluetooth 服务,请求与蓝牙设备通讯", + "BaseUsageTitle": "基础用法", + "BluetoothConnectText": "连接", + "BluetoothDescription": "允许网站与连接到用户计算机的蓝牙设备进行通信。例如可以连接蓝牙打印机进行打印操作", + "BluetoothDeviceInfoText": "读取硬件信息", + "BluetoothDisconnectText": "断开", + "BluetoothGetBatteryText": "读取电量", + "BluetoothGetCharacteristicsText": "读取特征列表", + "BluetoothGetCurrentTimeText": "读取时间", + "BluetoothGetServicesText": "读取服务列表", + "BluetoothIntro": "提供了查询蓝牙可用性和请求访问设备的方法", + "BluetoothReadValueText": "读取特征值", + "BluetoothRequestText": "扫描", + "BluetoothTipsLi1": "该功能仅在部分或所有支持浏览器的安全上下文(HTTPS)中可用", + "BluetoothTipsLi2": "这是一项实验性技术,在生产中使用之前请仔细,检查 浏览器兼容性表", + "BluetoothTipsTitle": "注意:IBluetoothDevice 接口实例继承 IAsyncDisposable 路由切换时需要对其进行资源释放,调用其 DisposeAsync 即可", + "BluetoothTitle": "IBluetooth 蓝牙服务", + "NotSupportBluetoothContent": "当前浏览器不支持串口操作,请更换 Edge 或者 Chrome 浏览器", + "NotSupportBluetoothTitle": "扫描设备", + "UsageDesc": "点击扫描按钮,在弹窗中选中手机进行测试" + }, + "BootstrapBlazor.Server.Components.Samples.BootstrapBlazorIcons": { + "FAIntro": "通过设置 Name 指定图标样式即可", + "FATitle": "字体图标", + "IconsDescription": "同时支持字体图标、矢量 Svg 图标、以及 Image 图片", + "IconsTitle": "Icon 图标", + "ImageIntro": "通过 ChildContent 模板自定义显示内容", + "ImageTitle": "图片", + "SvgIntro": "通过设置 IsSvgSprites=\"true\" Url 加载 Svg 雪碧图,通过 Name 指定其 Id 值", + "SvgTitle": "矢量图标" + }, + "BootstrapBlazor.Server.Components.Samples.Breadcrumbs": { + "Block1Intro": "适用广泛的基础用法。", + "Block1Title": "基础用法", + "Describe": "显示当前页面的路径,快速返回之前的任意页面。", + "Title": "Breadcrumb 面包屑" + }, + "BootstrapBlazor.Server.Components.Samples.BrowserFingers": { + "BrowserFingerIntro": "通过调用 IBrowserFingerService 服务实例方法 GetFingerCodeAsync 获得客户端浏览器指纹,隐私模式下指纹是一致的", + "BrowserFingerTitle": "浏览器指纹", + "GetClientHubIdAsync": "获得客户端连接 Id 方法", + "GetFingerCodeAsync": "获得指纹方法" + }, + "BootstrapBlazor.Server.Components.Samples.Buttons": { + "Block1Intro": "基础的按钮用法。", + "Block1Title": "基础用法", + "Block2Intro": "通过设置 ButtonStyle 来显示不同的按钮风格", + "Block2Title": "不同风格", + "Block3Intro": "通过设置 IsOutline='true' 设置按钮边框颜色样式。", + "Block3Title": "Outline 按钮", + "Block4Intro": "Button 组件提供除了默认值以外的多种尺寸,通过设置 Size 属性可以在不同场景下选择合适的按钮尺寸。", + "Block4Title": "不同尺寸", + "Block5Intro": "按钮不可用状态。通过设置 IsDisabled 属性", + "Block5Title": "禁用状态", + "Block6Intro": "由多个按钮组成一个组合按钮", + "Block6Title": "按钮组", + "Block7Intro": "通过设置 Icon 属性对按钮图标进行设置,图标为字体字符串如使用 font-awesome 图标时 fa-solid fa-font-awesome", + "Block7Title": "带图标的按钮", + "Block8Intro": "通过设置 WinButton 组件的 Text 属性对按钮显示文字进行设置,点击按钮是右侧显示被点击按钮的文字", + "Block8Title": "二次封装按钮", + "Block9Intro": "通过设置 IsAsync 属性按钮是否为 异步请求按钮,默认为 false", + "Block9Title": "异步请求按钮", + "BlockButton": "Block 按钮", + "ButtonAsync": "异步请求", + "ButtonAsyncDescription": "当按钮为异步请求按钮时,点击按钮后自身状态会改变为禁用状态,同时显示 Loading 小图标,异步请求结束后恢复正常,本例中点击 异步请求 按钮后,显示请求加载动画,5 秒后恢复正常。有些特定场景异步后需要按钮继续保持禁用状态,请通过 IsKeepDisabled 参数控制", + "ButtonAvailable": "点击后使第一个按钮可用", + "ButtonDisabled": "点击被禁用", + "ButtonExtraExtraLargeText": "超超大按钮", + "ButtonOne": "按钮一", + "ButtonProgress": "进度按钮", + "ButtonStatus": "状态按钮", + "ButtonTwo": "按钮二", + "DangerButton": "危险按钮", + "DarkButton": "黑暗按钮", + "Description": "常用的操作按钮。", + "Description1": "通过 OnClick 回调方法中设置自身 IsDisabled 属性,或者调用组件实例方法 SetDisable 均可实现按钮禁用效果", + "Description2": "由于使用 IsDisabled 属性时,需要显式手动调用 StateHasChanged 方法,会导致按钮所在组件整体刷新,建议使用实例方法 SetDisable 仅对按钮进行刷新", + "EventDesc1": "点击按钮时触发此事件", + "EventDesc2": "点击按钮时触发此事件并且不刷新当前组件,用于提高性能时使用", + "ExtraLargeButton": "超大按钮", + "ExtraSmallButton": "超小按钮", + "HighlightButton": "高亮按钮", + "InformationButton": "信息按钮", + "IsDisabledTip": "使用 IsDisabled 属性设置时本页面传输量为 4.8K", + "LargeButton": "大按钮", + "LinkButton": "链接按钮", + "MediumButton": "中等按钮", + "MethodDesc1": "设置按钮是否可用", + "NoneButtonColor": "None 按钮", + "NormalButton": "按钮", + "PrimaryButton": "主要按钮", + "SecondaryButton": "次要按钮", + "SetDisableTip": "使用 SetDisable 方法设置时本页面传输量为 280B", + "SmallButton": "小按钮", + "SubTitle": "性能比较:", + "SuccessButton": "成功按钮", + "Title": "Button 按钮", + "ToggleButton": "状态切换按钮", + "ToggleIntroduction": "通过设置 IsActiveChanged 或者 OnToggleAsync 回调方法获得当前按钮 Toggle 状态", + "TooltipDisabledText": "禁用按钮", + "TooltipIntro": "通过设置 TooltipText TooltipPlacement TooltipTrigger 快捷设置按钮提示栏信息、位置、触发方式,更多功能请使用 Tooltip 组件实现,本例中第二个按钮是 禁用 状态,提示栏仍然可用", + "TooltipText": "按钮", + "TooltipTitle": "按钮提示栏", + "WarningButton": "警告按钮" + }, + "BootstrapBlazor.Server.Components.Samples.Calendars": { + "AppIntro": "课堂表", + "AppText": "目前按周内组件暂时为统一使用 ChildContext 来进行渲染,所有单元格内的数据相关操作组件均未进行封装,稍后完善", + "AppTitle": "实战应用", + "BasicUsageIntro": "基础的日历显示。", + "BasicUsageTitle": "基础用法", + "BindIntro": "日历框选择时间时数据自动更新文本框", + "BindTitle": "数据双向绑定", + "CellTemplateDemoIntro": "点击单元格弹窗编辑工时,关闭弹窗后重新汇总统计数据", + "CellTemplateDemoSummary": "当月工时统计", + "CellTemplateDemoTitle": "实战工时系统示例", + "CellTemplateIntro": "通过设置属性 CellTemplate 自定义单元格模板", + "CellTemplateTitle": "单元格模板", + "Chinese": "语文", + "English": "英语", + "HeaderTemplateDesc": "通过设置 BodyTemplate 配合 HeaderTemplate 来自定义呈现 UI,本例中月视图中前后均增加了附加列,星期视图中增加了时间线", + "HeaderTemplateIntro": "通过设置属性 HeaderTemplate 自定义头部模板", + "HeaderTemplateTitle": "头部模板", + "Math": "数学", + "None": "无", + "Study": "自习", + "SubTitle": "按照日历形式展示数据的容器。当数据是日期或按照日期划分时,例如日程、课表、价格日历等,农历等。目前支持年/月切换。", + "Title": "Calendar 日历框", + "ValueChanged": "值改变时回调委托", + "ViewModeIntro": "通过设置属性 CalendarViewMode.Week", + "ViewModeTitle": "按周展示" + }, + "BootstrapBlazor.Server.Components.Samples.Cameras": { + "Attention": "特别注意:", + "BasicUsageIntro": "通过摄像头进行拍照", + "BasicUsageLi1": "点击开始打开摄像头", + "BasicUsageLi2": "点击拍照按钮", + "BasicUsageLi3": "点击关闭按钮关闭摄像头", + "BasicUsageStep": "操作步骤:", + "BasicUsageTitle": "基础用法", + "DeviceLabel": "摄像头", + "InitDevicesString": "正在识别摄像头", + "Li1": "站点要启用 https,这是浏览器厂商要求的", + "NotFoundDevicesString": "未找到视频相关设备", + "PlayText": "开启", + "PreviewText": "预览", + "SaveText": "保存", + "StopText": "关闭", + "SubTitle": "本组件通过调用摄像头进行拍照操作", + "Title": "Camera 摄像头拍照组件" + }, + "BootstrapBlazor.Server.Components.Samples.Captchas": { + "BasicUsageIntro": "进行简单的人机识别", + "BasicUsageTitle": "基础功能", + "GetImageName": "自定义获取背景图文件名称方法", + "ImageCallbackIntro": "通过 GetImageName 设置自定义方法拼接随机图片全路径名称", + "ImageCallbackTitle": "指定图床委托方法", + "ImageTitle": "指定图床路径与名称", + "OnValid": "滑块验证码进行验证结果判断后回调此方法", + "SubTitle": "通过拖动滑块进行人机识别", + "Title": "Captchas 滑块验证码" + }, + "BootstrapBlazor.Server.Components.Samples.Cards": { + "BasicUsageIntro": "Card简单示例", + "BasicUsageTitle": "Card 卡片组件", + "CollapsibleBody": "点击 Header 收缩/展开", + "CollapsibleHeaderTemplate": "这里是模板", + "CollapsibleHeaderTemplateIntro": "通过设置 HeaderTemplate 自定义 CardHeader 内容", + "CollapsibleHeaderTemplateTitle": "Header 模板", + "CollapsibleIntro": "通过设置 IsCollapsible 使 Body 可以伸缩", + "CollapsibleIntroDesc": "通过设置 Collapsed 使 Body 默认收缩 参数默认值 false 展开", + "CollapsibleTitle": "可以收缩展开的卡片", + "ColorIntro": "通过设置,Color 使border和Body具有相应的颜色", + "ColorTitle": "带有边框颜色的卡片", + "Compare": "对比设置", + "FooterIntro": "通过添加 HeaderTemplate 与 FooterTemplate 元素即可展示相关内容", + "FooterTitle": "Header 和 Footer", + "IsCenterIntro": "通过设置,IsCenter=true 使内容居中", + "IsCenterTitle": "内容居中", + "ShadowBody": "阴影特效示例", + "ShadowIntro": "通过设置 IsShadow 开启阴影特效", + "ShadowTitle": "带有阴影的卡片", + "SubTitle": "将信息聚合在卡片容器中展示", + "Title": "Card 卡片" + }, + "BootstrapBlazor.Server.Components.Samples.Carousels": { + "BasicUsageIntro": "适用广泛的基础用法,通过设置 Items 属性值对组件进行图片的绑定,值为图片路径数组", + "BasicUsageTitle": "基础用法", + "CaptionClassIntro": "通过设置 CarouselItemCaptionClass 属性,自定义标题部分样式", + "CaptionClassP1": "本例设置 d-none d-md-block 使小屏幕下不显示 Caption", + "CaptionClassTitle": "标题样式", + "CaptionIntro": "通过设置 CarouselItemCaption 属性,开启标题功能", + "CaptionTemplateIntro": "通过设置 CarouselItemCaptionTemplate 属性,自定义标题内容", + "CaptionTemplateTitle": "标题模板", + "CaptionTitle": "标题", + "ChildContentIntro": "使用 ChildContent 渲染自定义组件", + "ChildContentTitle": "子组件", + "FadeIntro": "通过设置 IsFade 属性,图片切换时采用淡入淡出效果", + "FadeTitle": "淡入淡出", + "IntervalIntro": "通过设置 CarouselItemInterval 属性,可以单独设置幻灯片单独切换时间间隔,间隔默认值 5000 毫秒", + "IntervalTitle": "切换间隔", + "OnClickIntro": "通过设置 OnClick 属性后,点击 Image 后触发 OnClick 回调委托", + "OnClickTitle": "点击图片回调事件", + "ShowControlsIntro": "通过设置 ShowControls 属性,设置是否显示控制按钮 默认是 true", + "ShowControlsTitle": "控制按钮", + "ShowIndicatorsIntro": "通过设置 ShowIndicators 属性,设置是否显示指示标识 默认是 true", + "ShowIndicatorsTitle": "指示器", + "SubTitle": "在有限空间内,循环播放同一类型的图片、文字等内容", + "Title": "Carousel 走马灯", + "TouchSwipingIntro": "通过设置 DisableTouchSwiping 属性,禁用移动端手势滑动功能", + "TouchSwipingTitle": "禁用手势滑动" + }, + "BootstrapBlazor.Server.Components.Samples.Cascaders": { + "Block1Intro": "提供各种颜色的下拉选择框", + "Block1Title": "Cascader 级联选择", + "Block2Intro": "级联选择不可用状态", + "Block2Title": "Cascader 禁用级联选择", + "Block3Desc": "通过设置 Clearable=\"true\" 参数,使组件获得焦点或者鼠标悬浮时显示一个 清除 小按钮", + "Block3Intro": "通过 Select 组件绑定 Value 属性,改变级联选择选项时,文本框内的数值随之改变。", + "Block3Title": "Cascader 双向绑定", + "Block4Intro": "级联选择未选择时,点击提交按钮时拦截。", + "Block4Title": "Cascader 客户端验证", + "Block5Intro": "组件绑定值为 Guid 结构体示例", + "Block5Title": "绑定泛型为 Guid 结构", + "Block6Intro": "组件双向绑定时会根据条件自动判断是否显示标签文字", + "Block6Title": "显示标签", + "BlockParentSelectableIntro": "组件只允许选中最后一级节点,点击父节点后不会触发事件", + "BlockParentSelectableTitle": "不允许选中父节点", + "BlockShowFullLevelsIntro": "通过设置 ShowFullLevels 值控制是否显示全路径", + "BlockShowFullLevelsTitle": "显示全路径", + "CascaderText": "自定义城市", + "Description": "前置标签显式规则与 BootstrapInput 组件一致 [传送门]", + "Divider1": "双向绑定显示标签", + "Divider2": "双向绑定不显示标签", + "Divider3": "自定义 DisplayText", + "Event1": "级联选择选项改变时触发此事件", + "item1": "北京", + "item1_child1": "Brunswick", + "item1_child1_child": "so-and-so street", + "item1_child2": "Fitzroy", + "item1_child3": "Carlton", + "item1_child4": "Thornbury", + "item2": "上海", + "item2_child1": "Millsons Point", + "item2_child2": "Potts Point", + "item2_child3": "North Sydney", + "item3": "广州", + "item3_child1": "Brisbane", + "item3_child2": "Gold Cost", + "SubmitButtonText": "提交", + "Title": "Cascader 级联选择", + "ValidateButtonText": "验证" + }, + "BootstrapBlazor.Server.Components.Samples.Charts.Bar": { + "BarAspectRatioIntro": "设置了高度和宽度,会自动禁用约束图表比例, 图表充满容器", + "BarAspectRatioTitle": "图表比例", + "BarColorSeparatelyIntro": "通过设置BarColorSeparately属性,控制是否单独设置柱状图颜色,以及通过BackgroundColor 集合设置柱状图颜色", + "BarColorSeparatelyTitle": "单独设置柱状图颜色", + "BarShowDataLabelIntro": "通过设置ShowDataLabel 属性,控制是否显示数据值", + "BarShowDataLabelTitle": "显示图表数据值", + "BarStackedIntro": "通过设置 X/Y 轴 Stacked 属性,控制是否堆砌排列", + "BarStackedTitle": "堆砌排列", + "BarTwoYAxesIntro": "显示第二Y轴:对齐方式,标题和对应数据组", + "BarTwoYAxesTitle": "双Y轴", + "BarTypeAddData": "添加数据", + "BarTypeAddDataSet": "添加数据集", + "BarTypeAnimationOff": "关闭动画", + "BarTypeAnimationOn": "开启动画", + "BarTypeIntro": "通过设置 ChartType 更改图表为 bar 图", + "BarTypeRandomData": "随机数据", + "BarTypeReload": "重载", + "BarTypeRemoveData": "移除数据", + "BarTypeRemoveDataSet": "移除数据集", + "BarTypeTitle": "Bar 图" + }, + "BootstrapBlazor.Server.Components.Samples.Charts.Bubble": { + "BubbleBarAspectRatioIntro": "设置了高度和宽度,会自动禁用约束图表比例, 图表充满容器", + "BubbleBarAspectRatioTitle": "图表比例", + "BubbleNormalAddData": "添加数据", + "BubbleNormalAddDataSet": "添加数据集", + "BubbleNormalIntro": "通过设置 ChartType 更改图表为 bubble 图", + "BubbleNormalRandomData": "随机数据", + "BubbleNormalReload": "重载", + "BubbleNormalRemoveData": "移除数据", + "BubbleNormalRemoveDataset": "移除数据集", + "BubbleNormalTitle": "Bubble 图" + }, + "BootstrapBlazor.Server.Components.Samples.Charts.Doughnut": { + "DoughnutAspectRatioIntro": "设置了高度和宽度,会自动禁用约束图表比例, 图表充满容器", + "DoughnutAspectRatioTitle": "图表比例", + "DoughnutNormalAddDataset": "添加数据集", + "DoughnutNormalAddingData": "添加数据", + "DoughnutNormalHalf": "半圆/全圆", + "DoughnutNormalIntro": "通过设置 ChartType 更改图表为 doughnut 图", + "DoughnutNormalRandomData": "随机数据", + "DoughnutNormalReload": "重载", + "DoughnutNormalRemoveData": "移除数据", + "DoughnutNormalRemoveDataset": "移除数据集", + "DoughnutNormalTitle": "Doughnut 图" + }, + "BootstrapBlazor.Server.Components.Samples.Charts.Index": { + "Chart": "Chart 图表", + "ChartIntro": "通过给定数据,绘画各种图表的组件", + "ChartIntro2": "组件数据在 OnInit 回调委托中进行设置即可" + }, + "BootstrapBlazor.Server.Components.Samples.Charts.Line": { + "AppendDataIntro": "由于 ChartDataSource 没有完全封装 Chart.JS 中所有参数,当我们需要设置一些未提供的参数时,可以通过 AppendData 来完成", + "AppendDataTitle": "数据参数扩展", + "CustomTooltipIntro": "自定义 Tooltip 需要使用客户端脚本设置", + "CustomTooltipLi1": "Chart 组件设置 Id 参数", + "CustomTooltipLi2": "创建客户端 JavaScript 脚本,本例使用隔离脚本方式导出方法名为 customTooltip,参数依次为 组件 Id 回调引用实例 回调方法名称(TooltipLog)", + "CustomTooltipLi3": "本例中重载基类方法 InvokeInitAsync 通过 await InvokeVoidAsync(\"customTooltip\", CustomTooltipId, Interop, nameof(TooltipLog)) 语句调用客户端脚本", + "CustomTooltipTitle": "自定义 Tooltip", + "LineBarAspectRatioIntro": "设置了高度和宽度,会自动禁用约束图表比例, 图表充满容器", + "LineBarAspectRatioTitle": "图表比例", + "LineChartJSIntro": "由于 BootstrapBlazor.Chart 底层引用了 Chart.JS 所以我们可以通过JS方式来调用并生成图表。", + "LineChartJSTitle": "通过JS生成Chart", + "LineContinueIntro": "调用实例方法 Reload,重新调整数据使曲线图向左平移,设置 IsAnimation 关闭动画效果", + "LineContinueTitle": "Plot", + "LineNullableIntro": "使用设置 ChartDataset 实例的 Data 参数中含 null,折线图使用虚线连接", + "LineNullableTitle": "Line 图", + "LineOnInitAddDataset": "添加数据集", + "LineOnInitAddingData": "添加数据", + "LineOnInitIntro": "使用 OnInit 回调委托方法,对初始化数据进行赋值后,即可进行绘图操作,通过设置 BorderWidth 属性,可以设置折线图线宽,默认值3,通过设置 ChartOptions.LegendLabelsFontSize 属性,可以设置图例 Lables 字体大小", + "LineOnInitRandomData": "随机数据", + "LineOnInitReload": "重载", + "LineOnInitRemoveData": "移除数据", + "LineOnInitRemoveDataset": "移除数据集", + "LineOnInitTitle": "Line 图", + "LineTensionIntro": "使用设置 ChartDataset 实例的 Tension 参数,调整折线的曲率,默认位 0.4f", + "LineTensionTitle": "Line 图", + "LineTwoYAxesIntro": "显示第二Y轴:对齐方式,标题和对应数据组", + "LineTwoYAxesTitle": "双Y轴" + }, + "BootstrapBlazor.Server.Components.Samples.Charts.Pie": { + "PieAspectRatioIntro": "设置了高度和宽度,会自动禁用约束图表比例, 图表充满容器", + "PieAspectRatioTitle": "图表比例", + "PieLegendPositionIntro": "通过 LegendPostion 设置图例位置", + "PieLegendPositionTitle": "图例位置", + "PieNormalAddDataset": "添加数据集", + "PieNormalAddingData": "添加数据", + "PieNormalIntro": "通过设置 ChartType 更改图表为 pie 图", + "PieNormalRandomData": "随机数据", + "PieNormalReload": "重载", + "PieNormalRemoveData": "移除数据", + "PieNormalRemoveDataset": "移除数据集", + "PieNormalTitle": "Pie 图" + }, + "BootstrapBlazor.Server.Components.Samples.CheckboxLists": { + "AttributeOnMaxSelectedCountExceed": "选项到达最大值后回调方法", + "CheckboxListGenericIntro": "通过 CheckboxListGeneric 组件和 SelectedItem<TValue> 开启泛型支持", + "CheckboxListGenericTitle": "泛型支持", + "CheckboxListsTip": "控件用于创建多选的复选框组", + "Counter": "项被选中 组件绑定值 value", + "Description": "TValue 设置为 IEnumerable<string> 泛型集合", + "DisabledIntro": "通过设置 IsDisabled=\"true\" 禁用", + "DisabledTitle": "禁用", + "EnumIntro": "绑定值为枚举", + "EnumTip": "当 CheckboxList 绑定一个枚举集合时,Items 不需要指定,Items 会被自动设置成枚举里面所有的值,如果需要绑定部分值时,请自行提供枚举集合 Items", + "EnumTitle": "双向绑定枚举", + "Event1": "复选框状态改变时回调此方法", + "Foo": "张三,李四", + "Header": "共", + "IsButtonIntro": "设置 IsButton=\"true\",将复选框样式改为按钮样式", + "IsButtonTitle": "按钮复选框", + "item1": "张三", + "item2": "李四", + "item3": "王五", + "item4": "赵六", + "ItemTemplateIntro": "通过设置 ItemTemplate 自定义显示 UI", + "ItemTemplateTitle": "项目模板", + "MaxSelectedCountDesc": "选中节点超过 2 个时,弹出 Toast 提示栏", + "MaxSelectedCountIntro": "通过设置 MaxSelectedCount 属性控制最大可选数量,通过 OnMaxSelectedCountExceed 回调处理逻辑", + "MaxSelectedCountTitle": "最大选择数量", + "NoBorderIntro": "通过设置 ShowBorder=\"false\" 不显示边框", + "NoBorderTip": "当验证失败时显示红色边框", + "NoBorderTitle": "无边框", + "NormalIntro": "通过数据绑定展现复选框组", + "NormalTips1": "通过 bind-Value 设置双向绑定数据值", + "NormalTips2": "通过 Items 设置候选数据源", + "NormalTips3": "通过 OnSelectedChanged 回调方法获取改变项实例", + "NormalTips4": "通过 ShowLabelTooltip=\"true\" 开启标签提示功能", + "NormalTitle": "基础用法", + "OnMaxSelectedCountExceedTitle": "可选最大数量提示", + "ShowLabelIntro": "绑定值为集合", + "ShowLabelTip": "TValue 设置为 IEnumerable<int> 泛型集合,绑定集合的 ValueField 指定字段必须与泛型类型一致", + "ShowLabelTitle": "双向绑定集合", + "Title": "CheckboxList 多选框组", + "ValidateFormIntro": "内置于 ValidateForm 中使用", + "ValidateFormTips1": "可以通过改变窗口大小,体验自适应布局", + "ValidateFormTips2": "本例中绑定模型 BindItemName 字段,通过勾选项自动更改模型数据", + "ValidateFormTips3": "由于内置于 ValidateForm 表单内,本例中增加了 RequiredAttribute 必选要求验证,当取消所有选项后提示验证结果", + "ValidateFormTitle": "客户端验证", + "VerticalIntro": "通过设置 IsVertical=\"true\" 使checkbox竖向排列", + "VerticalTitle": "竖向排列" + }, + "BootstrapBlazor.Server.Components.Samples.Checkboxs": { + "BindStringIntro": "绑定组件内变量,数据自动同步", + "BindStringTitle": "双向绑定 string 数据", + "Checkbox2Text": "双向绑定", + "Checkbox3Text": "手写标签", + "Description": "一组备选项中进行多选", + "DisabledIntro": "复选框不可用状态,通过 IsDisabled 设置组件是否可用", + "DisabledTitle": "禁用复选框", + "DisplayTextIntro": "通过设置 Size 属性改变组件大小", + "DisplayTextTitle": "大小", + "ItemTemplateIntro": "通过设置 ItemTemplate 自定义显示 UI", + "ItemTemplateTitle": "项目模板", + "NormalIntro": "单独使用可以表示两种状态之间的切换,列头或者表头使用时可以表示三种状态之间的切换。组件支持泛型数据绑定,通过 TValue 设置绑定数据类型,通过 State 设置组件状态", + "NormalTitle": "基础用法", + "OnBeforeStateChanged": "选择框状态改变前回调此方法", + "OnBeforeStateChangedIntro": "通过设置 OnBeforeStateChanged 回调方法,可取消选中逻辑", + "OnBeforeStateChangedSwalContent": "是否更改选中状态", + "OnBeforeStateChangedSwalTitle": "弹窗确认", + "OnBeforeStateChangedText": "弹窗确认", + "OnBeforeStateChangedTitle": "选中前回调方法", + "OnStateChanged": "选择框状态改变时回调此方法", + "OnStateChangedIntro": "绑定组件内变量,数据自动同步,绑定数据类型为 boolean 类型时自动翻转值", + "OnStateChangedTitle": "双向绑定 boolean 数据", + "ShowAfterLabelDescription": "设置 DisplayText 属性,或者通过双向绑定均可以显示文本信息", + "ShowAfterLabelIntro": "复选框显示文字,通过 DisplayText 设置组件显示文本,点击显示文字时组件状态也会进行翻转", + "ShowAfterLabelTitle": "Label 文字", + "ShowLabelIntro": "通过设置 Color 属性改变组件背景色", + "ShowLabelTitle": "颜色", + "StateChanged": "State 状态改变回调方法", + "StatusText1": "选中", + "StatusText2": "未选", + "StatusText3": "不确定", + "Title": "Checkbox 多选框", + "ValidateFormDescription": "前置标签显式规则与 BootstrapInput 组件一致 [传送门]", + "ValidateFormIntro": "在表单中使用 Checkbox 时,显示标签文字会放置到组件前面", + "ValidateFormTitle": "表单中使用" + }, + "BootstrapBlazor.Server.Components.Samples.CherryMarkdowns": { + "ApiIntro": "使用CherryMarkdown的Api在外部控制内容", + "ApiTitle": "外部控制组件", + "CustomIntro": "通过ToolbarSettings自定义工具栏,通过EditorSettings自定义编辑器样式", + "CustomTitle": "自定义内容", + "FileUploadIntro": "使用OnFileUpload事件处理文件上传事件,支持直接粘贴图片到浏览器", + "FileUploadTitle": "自行处理文件上传事件", + "Header": "CherryMarkdown", + "InsertCheckListButtonText": "插入一个CheckList", + "InsertPictureButtonText": "插入一张图片", + "MarkdownsNote": "如果编辑内容过多,可能会触发 signalR 通讯中断问题,请自行调整 HubOptions 配置即可。", + "NormalIntro": "使用双向绑定获取对应的 htmlmarkdown 内容", + "NormalTitle": "基础用法", + "Tip": "基于 CherryMarkdown 的富文本框组件", + "ViewIntro": "纯浏览模式,没有编辑器", + "ViewTitle": "浏览模式" + }, + "BootstrapBlazor.Server.Components.Samples.Circles": { + "BasicUsageIntro": "通过设置 Value 属性设定圆形进度", + "BasicUsageTitle": "基础用法", + "ChildContentIntro": "通过自定义子组件自定义显示内容", + "ChildContentP1": "消费人群规模", + "ChildContentSpan": "总占人数", + "ChildContentTitle": "自定义显示内容", + "CircleTips1": "显示某项任务进度的百分比", + "CircleTips2": "统计某些指标的占比。", + "ColorIntro": "通过设置 Color 属性设定圆形进度条颜色", + "ColorTitle": "颜色", + "DecreaseSpan": "减少", + "IncreaseSpan": "增加", + "StrokeWidthIntro": "通过设置 StrokeWidth 属性设定圆形进度条宽度", + "StrokeWidthTitle": "进度条宽度", + "SubTitle": "图表类组件。一般有两种用途:", + "Title": "Circle 进度环" + }, + "BootstrapBlazor.Server.Components.Samples.Client": { + "BasicUsageIntro": "注入服务显示客户端信息", + "BasicUsageP1": "用法介绍", + "BasicUsageP2": "1. Startup.cs 文件中使用 UseBootstrapBlazor 中间件进行客户端信息收集", + "BasicUsageP3": "2. 组件中使用注入服务 WebClientService 调用 GetClientInfo 方法", + "BasicUsageP4": "3. 开启 IP 地理位置定位功能", + "BasicUsageTips": "app.UseBootstrapBlazor 中间件位于程序集 BootstrapBlazor.Middleware,请自行引用此包才能正常使用", + "BasicUsageTitle": "普通用法", + "Browser": "浏览器", + "City": "城市", + "Device": "设备", + "Engine": "浏览器引擎", + "GroupBoxTitle": "您的连接信息", + "Id": "连接 ID", + "Ip": "IP 地址", + "IpLocatorFactoryDesc": "本服务已内置 IP 地理位置定位功能,详细配置与文档请参考", + "Language": "语言", + "LocatorsProviderDesc1": "更新 appsetting.json 项目配置文件", + "LocatorsProviderDesc2": "或者使用代码开启", + "LocatorsProviderDesc3": "或者通过配置开启本功能", + "LocatorsProviderOptions": "全局配置定位器选项 WebClientOptions 默认 false 没有启用 IP 地址定位功能,请在配置文件中或者代码中更改为 true", + "OS": "操作系统", + "RequestUrl": "请求地址", + "SubTitle": "多用于系统日志跟踪", + "Title": "获取客户端连接信息" + }, + "BootstrapBlazor.Server.Components.Samples.Clipboards": { + "ClipboardCopyMethod": "拷贝文本到剪切板方法", + "ClipboardGetMethod": "读取剪切板内容方法", + "ClipboardGetTextMethod": "读取剪切板文本内容方法", + "ClipboardIntro": "剪切板服务!请注意,只能在 HTTPS 安全连接下运行,或者在本地 localhost 开发环境中使用", + "ClipboardTitle": "ClipboardService" + }, + "BootstrapBlazor.Server.Components.Samples.ClockPickers": { + "AutoSwitchText": "是否自动切换表盘", + "BindValueIntro": "通过设置 IsAutoSwitch=\"false\" 禁止小时、分钟、秒表盘自动切换功能", + "BindValueTitle": "数据双向绑定", + "Description": "通过拖动表针选择时间", + "HasSecondsIntro": "通过设置 ShowSecond=\"false\" 不显示秒针表盘", + "HasSecondsTitle": "不设置秒数", + "ShowClockScaleIntro": "通过设置 ShowClockScale=\"true\" 显示表盘刻度", + "ShowClockScaleTitle": "显示表盘刻度", + "ShowMinuteIntro": "通过设置 ShowMinute=\"false\" 不显示分针表盘", + "ShowMinuteTitle": "不设置分钟", + "Title": "ClockPicker 时间选择器" + }, + "BootstrapBlazor.Server.Components.Samples.CodeEditors": { + "BasicIntro": "基础用法", + "BasicTitle": "基础用法", + "Language": "编辑器使用的语言:csharp,JavaScript,...", + "Theme": "编辑器的主题", + "Title": "代码编辑器", + "Value": "获得或设置 Value", + "ValueChanged": "获取或设置更新绑定值的回调" + }, + "BootstrapBlazor.Server.Components.Samples.Collapses": { + "AccordionIntro": "每次只能展开一个面板", + "AccordionTitle": "手风琴效果", + "BasicUsageIntro": "可同时展开多个面板,面板之间不影响", + "BasicUsageTitle": "基础用法", + "ButtonText": "切换", + "CollapseItemAttributeClass": "样式名称", + "CollapseItemAttributeHeaderClass": "Header CSS 样式名称", + "CollapseItemAttributeHeaderTemplate": "Header 模板", + "CollapseItemAttributeIcon": "图标字符串", + "CollapseItemAttributeIsCollapsed": "当前状态是否收缩", + "CollapseItemAttributeText": "文本文字", + "CollapseItemAttributeTitleColor": "标题颜色", + "ColorIntro": "每个面板设置不同颜色", + "ColorTitle": "子项标题颜色", + "Consistency": "一致性 Consistency", + "ConsistencyItem1": "与现实生活一致:与现实生活的流程、逻辑保持一致,遵循用户习惯的语言和概念;", + "ConsistencyItem2": "在界面中一致:所有的元素和结构需保持一致,比如:设计样式、图标和文本、元素的位置等。", + "Controllability": "可控 Controllability", + "ControllabilityItem1": "用户决策:根据场景可给予用户操作建议或安全提示,但不能代替用户进行决策;", + "ControllabilityItem2": "结果可控:用户可以自由的进行操作,包括撤销、回退和终止当前操作等。", + "Efficiency": "效率 Efficiency", + "EfficiencyItem1": "简化流程:设计简洁直观的操作流程;", + "EfficiencyItem2": "清晰明确:语言表达清晰且表意明确,让用户快速理解进而作出决策;", + "EfficiencyItem3": "帮助用户识别:界面简单直白,让用户快速识别而非回忆,减少用户记忆负担。", + "Feedback": "反馈 Feedback", + "FeedbackItem1": "控制反馈:通过界面样式和交互动效让用户可以清晰的感知自己的操作;", + "FeedbackItem2": "页面反馈:操作后,通过页面元素的变化清晰地展现当前状态。", + "HeaderTemplateIntro": "通过设置 HeaderTemplate 自定义 Header 显示内容", + "HeaderTemplateTitle": "Header 模板", + "IconIntro": "面板标题前置图标", + "IconTitle": "图标效果", + "ItemsIntro": "通过条件逻辑设置 CollapseItems 模板", + "ItemsTitle": "动态更新", + "SubTitle": "通过折叠面板收纳内容区域", + "Title": "Collapse 折叠面板" + }, + "BootstrapBlazor.Server.Components.Samples.ColorPickers": { + "BindValueIntro": "通过设置 Value 属性设定颜色值", + "BindValueTitle": "双向绑定", + "Description": "选择颜色使用", + "Disabled": "禁用", + "DisabledIntro": "通过设置 IsDisabled 属性禁用此组件", + "DisabledTitle": "禁用", + "FormatterIntro": "通过设置 Formatter 回调方法设置显示值", + "FormatterTitle": "格式化", + "IsSupportOpacityIntro": "通过设置 IsSupportOpacity=\"true\" 开启透明度支持", + "IsSupportOpacityTitle": "支持透明度", + "NormalIntro": "通过设置 Value 属性设定颜色值", + "NormalTitle": "基础用法", + "SupportOpacity": "支持透明", + "TemplateIntro": "通过设置 Template 自定义显示模板", + "TemplateTitle": "显示模板", + "Title": "ColorPicker 颜色拾取器", + "ValidateFormIntro": "内置于 ValidateForm 中使用", + "ValidateFormTitle": "验证表单中使用", + "ValueDescription": "设置 Value='@Value' 初始化默认值", + "ValueIntro": "通过设置 Value 属性设定颜色值", + "ValueTitle": "设置初始值" + }, + "BootstrapBlazor.Server.Components.Samples.Consoles": { + "ColorIntro": "通过设置 ConsoleMessageItemColor 参数进行对颜色的更改", + "ColorTitle": "不同颜色的消息", + "ConsoleMessageItem": "ConsoleMessageItem 属性", + "Description": "控制台组件,一般用于后台任务的输出", + "IsAutoScrollDescription": "通过设置 IsAutoScroll 设置开启自动滚屏", + "IsAutoScrollIntro": "通过设置 ShowAutoScroll 属性值开启或者关闭自动滚屏功能", + "IsAutoScrollTitle": "自动滚屏", + "NormalIntro": "显示后台推送的消息", + "NormalTitle": "基本用法", + "OnClearIntro": "通过设置 OnClear 回调方法对数据集进行清空操作,由于本例与上例使用相同数据源,会导致上例中数据源更新延时", + "OnClearTitle": "可清空的控制台", + "ShowAutoScrollDescription": "设置 ShowAutoScroll=\"true\" 显示自动滚屏选项", + "ShowAutoScrollIntro": "通过设置 ShowAutoScroll 显示 Checkbox 控制是否自动滚动屏幕", + "ShowAutoScrollTitle": "自动滚屏控制", + "Title": "Console 控制台" + }, + "BootstrapBlazor.Server.Components.Samples.ContextMenus": { + "ContextMenuCallbackIntro": "通过设置 ContextMenu 组件参数 OnBeforeShowCallback 获得右键菜单弹出前回调事件,可用于数据准备工作,也可按需渲染菜单", + "ContextMenuCallbackTitle": "ContextMenu 回调", + "ContextMenuCustomUIIntro": "点击 Li 弹出上下文关联菜单", + "ContextMenuCustomUITitle": "自定义组件", + "ContextMenuDescription": "用户点击鼠标右键时弹出的上下文关联菜单", + "ContextMenuDisabledIntro": "通过设置 ContextMenuItem 组件参数 OnDisabledCallback 回调方法可用于设置当前右键选项是否禁用逻辑", + "ContextMenuDisabledTitle": "禁止回调方法", + "ContextMenuItemCopy": "拷贝", + "ContextMenuItemPast": "粘贴", + "ContextMenuNormalIntro": "点击 ContextMenuZone 内区域右键,弹出上下文关联菜单", + "ContextMenuNormalTitle": "基础用法", + "ContextMenuTableIntro": "点击 Table 组件行数据右键,弹出上下文关联菜单", + "ContextMenuTableTitle": "Table 组件", + "ContextMenuTitle": "ContextMenu 右键菜单", + "ContextMenuTreeIntro": "点击 Tree 组件行数据右键,弹出上下文关联菜单", + "ContextMenuTreeTitle": "Tree 组件" + }, + "BootstrapBlazor.Server.Components.Samples.CountButtons": { + "BaseUsageIntro": "通过 Count 参数值设置倒计时时间,默认 5 秒", + "BaseUsageText": "基本用法", + "Description": "多用于强制一段执行时间逻辑,如发送验证码后 60 秒等待输入", + "Text": "发送验证码", + "TextIntro": "通过 CountText 参数值设置倒计时文本", + "TextTitle": "计时文本", + "Title": "CountButton 倒计时按钮" + }, + "BootstrapBlazor.Server.Components.Samples.CountUps": { + "CountUpsNormalIntro": "通过设置 Value 参数赋值", + "CountUpsNormalTitle": "基础用法", + "Description": "多用于报表数据动态展示,数字以跳动的形式展现", + "Title": "计数器 CountUp" + }, + "BootstrapBlazor.Server.Components.Samples.DateTimePickers": { + "BindValueIntro": "日期组件时间改变时文本框内的数值也跟着改变,通过设置 IsEditable=\"true\" 开启手工录入功能", + "BindValueTitle": "数据双向绑定", + "BlockAutoCloseDesc": "AutoClose 默认值为 true 点选日期时自动关闭弹窗,设置值为 false 时,需要点击 确认 按钮时关闭弹窗", + "BlockAutoCloseIntro": "设置 AutoClose 属性值,设置选中日期后自动关闭弹出框", + "BlockAutoCloseTitle": "自动关闭", + "BlockGroupIntro": "内置 BootstrapInputGroup 中使用,与 BootstrapInputGroupLabel 组合使用", + "BlockGroupLabel": "前置标签", + "BlockGroupSuffixLabel": "后置标签", + "BlockGroupTitle": "组合使用", + "DateTimeOffsetIntro": "以「日」为基本单位,基础的日期选择控件,此示例绑定 DateTimeOffset 数据类型", + "DateTimeOffsetTitle": "点击弹出日期框", + "DateTimePickerIntro": "通过时钟表盘选择时分秒,获取当前的日期和时间。", + "DateTimePickerTitle": "时间选择", + "DayTemplateIntro": "通过设置 DayTemplate 自定义显示模板,禁用的日期模板为 DayDisabledTemplate", + "DayTemplateTitle": "自定义日期显示", + "Description": "用于选择或输入日期", + "DisableDayCallbackAllowNullDisplayText": "可为空类型", + "DisableDayCallbackIntro": "通过设置 OnGetDisabledDaysCallback 自定义哪些日期需要被禁用", + "DisableDayCallbackNotAllowNullDisplayText": "不可为空类型", + "DisableDayCallbackTip": "

        请注意

        • 组件赋值为禁用日期时,组件默认仍然显示其值,如果需要将禁用日期显示为 空字符串 请设置 DisplayDisabledDayAsEmpty=\"true\"
        • 本例为稍微复杂逻辑判断禁用日期,禁用日期为组合条件,所以当条件更改时需要调用组件实例方法 ClearDisabledDays 清除内部缓存

        本例中第一个组件由于设置了 DisplayDisabledDayAsEmpty=\"true\" 所以组件值为 DateTime.Today 显示值为 空字符串

        本例中第二个组件数据类型为 不可为空类型 由于参数 AutoToday 默认值为 true 所以即使初始化值为 DateTime.MinValue 其显示值为 DateTime.Today 即使当禁用今天时,仍然显示,如果需要显示 空字符串 请设置 DisplayDisabledDayAsEmpty=\"true\"
        ", + "DisableDayCallbackTitle": "自定义禁用日期", + "DisabledIntro": "设置 IsDisabled 属性值为 true 时,组件禁止输入", + "DisabledTitle": "禁用", + "DisableOptions": "组合禁用条件", + "DisableToday": "禁用今天", + "DisableWeekend": "禁用周末", + "DisplayText": "选择时间", + "Event1": "确认按钮回调委托", + "Event2": "组件值改变时回调委托供双向绑定使用", + "Feature": "功能体验区", + "FeatureFestivalIntro": "节日功能由组件库内置服务 ICalendarFestivals 提供,内置默认实现提供了 12 个公历节日与 7 个农历节日,可以通过自定义节日服务进行扩展,详细功能介绍请参阅 节日服务 文档 [传送门]", + "FeatureIntro": "假日功能依赖组件包 BootstrapBlazor.Holiday [传送门]", + "FeatureShowFestivals": "节日", + "FeatureShowFestivalsIntro": "ShowFestivals 是否显示节日", + "FeatureShowHolidays": "法定假日", + "FeatureShowHolidaysIntro": "ShowHolidays 是否显示假日", + "FeatureShowLunar": "显示农历", + "FeatureShowLunarIntro": "ShowLunar 是否显示农历", + "FeatureShowSolarTerm": "24 节气", + "FeatureShowSolarTermIntro": "ShowSolarTerm 是否显示 24 节气", + "IsEditableIntro": "通过设置 IsEditable=\"true\" 开启手工录入日期功能", + "IsEditableTitle": "手工录入", + "MinValueIntro": "设置 MinValue 属性值与 MaxValue 限制可选值范围,本例中设置范围为 45 天", + "MinValueTitle": "设置值范围", + "NormalIntro": "以「日」为基本单位,基础的日期选择控件", + "NormalTitle": "选择日", + "NullValueIntro": "多用于条件选择", + "NullValueTip": "绑定值为可为空类型 DateTime? 时自动出现 清空 按钮", + "NullValueTitle": "允许空时间", + "OnGetDisabledDaysCallbackEvent": "获得自定义禁用日期回调方法", + "ShowIconIntro": "通过设置 ShowIcon=\"false\" 不显示组件图标节约空间", + "ShowIconTitle": "是否显示组件图标", + "ShowLabelIntro": "作为表单组件时,显示组件前方标签", + "ShowLabelTip": "设置 DisplayText 属性值为 选择时间, 前置标签显式规则与 BootstrapInput 组件一致 [传送门]", + "ShowLabelTitle": "显示标签", + "ShowSidebarIntro": "设置 ShowSidebar 属性值为 true 时,组件显示快捷方式侧边栏", + "ShowSidebarTitle": "带快捷键侧边栏", + "SubmitText": "保存", + "Title": "DatePicker 日期选择器", + "ValidateFormIntro": "根据自定义验证规则进行数据有效性检查并自动提示", + "ValidateFormTitle": "客户端验证", + "ViewModeIntro": "在同一个选择器里选择日期和时间,点击确认按钮后关闭弹窗", + "ViewModeTip": "设置 ViewMode 属性值为 DatePickerViewMode.DateTime", + "ViewModeTitle": "带时间的选择器" + }, + "BootstrapBlazor.Server.Components.Samples.DateTimeRanges": { + "AutoCloseIntro": "点击侧边栏快捷方式自动关闭弹窗", + "AutoCloseTitle": "自动关闭", + "BindValueIntro": "点击确认按钮时间选择框值与文本框值一致,通过设置 AutoClose=\"true\" 实现自动关闭功能,通过设置 ShowSelectedValue=\"true\" 直接显示选中值", + "BindValueTitle": "数据双向绑定", + "Description": "在同一个选择器里选择一段日期", + "DisabledIntro": "设置 IsDisabled 属性值为 true 时,组件禁止输入", + "DisabledTitle": "禁用", + "Feature": "功能体验区", + "FeatureShowFestivals": "节日", + "FeatureShowHolidays": "法定假日", + "FeatureShowLunar": "显示农历", + "FeatureShowSolarTerm": "24 节气", + "Limit": "时间范围", + "MaxMinValueIntro": "设置时间的取值范围", + "MaxMinValueTitle": "最大值和最小值", + "NormalIntro": "以「日」为基本单位,选择一段时间", + "NormalTitle": "基本功能", + "SidebarIntro": "设置 ShowSidebar 属性值为 true 时,组件显示快捷方式侧边栏", + "SidebarTip": "通过设置 ShowSidebar 参数开启显示侧边栏快捷选项功能,通过设置 SidebarItems 参数集合替换组件内置的默认快捷项", + "SidebarTitle": "带快捷键侧边栏", + "SingleViewTitle": "单选模式", + "Submit": "提交", + "Title": "DateTimeRange 日期时间段选择器", + "TodayIntro": "设置 ShowToday 属性值为 true 时,组件下方显示今天快捷按钮", + "TodayTip": "点击 Today 今天按钮时,时间范围为 yyyy-MM-dd 00:00:00 到 yyyy-MM-dd 23:59:59", + "TodayTitle": "显示今天按钮", + "ValidateFormIntro": "将组件内置到 ValidateForm 中使用", + "ValidateFormTitle": "表单中使用", + "ViewModeIntro": "通过设置 ViewMode=\"DatePickerViewMode.Year\" 使组件视图为年视图,设置 ViewMode=\"DatePickerViewMode.Month\" 使组件视图为年视图", + "ViewModeTitle": "显示模式" + }, + "BootstrapBlazor.Server.Components.Samples.DialButtons": { + "BaseUsageIntro": "通过设置 Placement 枚举值设置弹窗与按钮位置关系", + "BaseUsageText": "基本用法", + "DialButtonIntro": "点击按钮后弹出功能菜单等信息,多用于二级功能展示", + "DialButtonTitle": "DialButton 拨号按钮" + }, + "BootstrapBlazor.Server.Components.Samples.Dialogs": { + "ApplyDisplayText": "主键参数", + "ApplyIntro": "本例中通过传递一个主键,在弹窗内的组件通过此主键进行数据查询,并将结果显示在弹窗内", + "ApplyOpenDialogButton": "弹窗", + "ApplyTitle": "实战应用", + "Attribute": "DialogOption 属性", + "BodyContextIntro": "通过设置 BodyContext 属性值,可以把参数传递给弹窗中的组件内", + "BodyContextOpenDialogButton": "Dialog 传参示例", + "BodyContextTip": "本例中点击按钮时设置 BodyContext 值为 我是传参,弹窗内容为自定义组件 DemoComponent,组件内通过级联参数获取到其值", + "BodyContextTitle": "弹窗传参", + "CloseDialogByCodeIntro": "本例讲解如何通过代码打开与关闭弹窗", + "CloseDialogByCodeTip": "利用弹窗参数 DialogOption 实例方法 CloseDialogAsync 即可关闭弹窗", + "CloseDialogByCodeTitle": "代码关闭弹窗", + "ComponentIntro": "通过调用 Show<Counter>() 来弹出一个自定义组件", + "ComponentOpenDialogButton": "点击打开 Dialog", + "ComponentTip": "本例中弹出对话框中包含一个示例网站的自带 Counter 组件", + "ComponentTitle": "弹出复杂组件", + "ConfirmDialogButton": "弹出模态框", + "ConfirmDialogModalContent": "

        这是一个文字确认模态框

        这是警告信息
        ", + "ConfirmDialogModalTitle": "文字确认模态框", + "CustomerHeaderIntro": "通过设置 HeaderTemplate 属性对模态框标题栏进行自定义设置", + "CustomerHeaderOpenDialogButton": "弹窗", + "CustomerHeaderTitle": "自定义标题栏", + "Description": "通过注入服务调用 Show 方法弹出窗口进行人机交互", + "DialogTitle": "数据查询窗口", + "DisableHeaderCloseButtonIntro": "本例讲解如何通过代码打开与关闭弹窗", + "DisableHeaderCloseButtonTip": "设置参数 ShowHeaderCloseButton 禁止弹窗 Header 右侧显示 关闭 按钮", + "DisableHeaderCloseButtonTitle": "禁用 Header 中的关闭按钮", + "EditDialogButton": "编辑弹窗", + "EditDialogIntro": "通过 ShowEditDialog 方法弹出保存对话框", + "EditDialogTip1": "功能介绍", + "EditDialogTip2": "点击按钮弹出编辑弹窗", + "EditDialogTip3": "通过 EditDialogOption 参数对弹窗进行设置", + "EditDialogTip4": "设计出发点通过给定 Model 或者 Items 自动生成带客户端验证的表单窗口", + "EditDialogTitle": "编辑对话框", + "EmailDialogButtonYes": "选择", + "EmailDialogTitle": "选择收件人", + "EmailInput": "请输入 ...", + "EmailIntro": "模拟一个邮件应用,弹窗选择收件人后填入下方的收件人框。", + "EmailLabel": "收件人", + "EmailTip1": "功能介绍", + "EmailTip2": "点击按钮弹出模态弹窗", + "EmailTip3": "通过级联传参 BodyContext 传递 10 到弹窗中初始化数据", + "EmailTip4": "选中 Table 组件中的行数据,通过双向绑定对 SelectedRows 数据进行 更新", + "EmailTip5": "点击 选中 按钮通过双向绑定对 Emails 数据进行 更新", + "EmailTip6": "点击 取消 或者 关闭 按钮时 Emails不更新", + "EmailTip7": "再次点击弹出模态弹窗时,组件内行选中状态保持一致", + "EmailTip8": "弹窗中未选择用户时禁止关闭弹窗", + "EmailTitle": "实战演练", + "ErrorLoggerButton": "全局异常测试", + "ErrorLoggerIntro": "通过 BootstrapBlazorRoot 内置 ErrorLogger 对弹窗内错误进行全局异常捕获", + "ErrorLoggerTitle": "异常捕获", + "ExportPdfButton": "导出 Pdf 弹窗", + "ExportPdfDialogIntro": "通过设置 ShowExportPdfButtonInHeader 使 Header 上显示一个导出 pdf 按钮", + "ExportPdfDialogTip": "可通过设置 ExportPdfButtonOptions 对更多参数进行设置", + "ExportPdfDialogTitle": "带导出 Pdf 功能的弹窗", + "HeaderToolbarTemplateButtonText": "打印", + "HeaderToolbarTemplateDialogTitle": "自定义工具栏示例", + "HeaderToolbarTemplateIntro": "通过设置 HeaderToolbarTemplate 自定义 Header 中工具栏按钮", + "HeaderToolbarTemplateTitle": "标题栏自定义按钮", + "HeaderToolbarTemplateToastContent": "打印按钮被点击,可以处理自己的业务逻辑", + "KeyboardIntro": "通过设置 DialogOption 属性对模态框进行基本属性设置", + "KeyboardOpenDialogButton": "点击打开弹窗", + "KeyboardTip": "通过设置 DialogOption IsKeyboard 参数,开启弹窗是否支持 ESC,请点击后面按钮设置后再点击 弹窗 按钮测试效果", + "KeyboardTitle": "基本用法", + "ModalDialogButton": "点击打开 Dialog", + "ModalDialogIntro": "通过 ShowModal 方法弹出线程阻塞模式的对话框", + "ModalDialogTip1": "功能介绍", + "ModalDialogTip2": "点击按钮弹出模态弹窗", + "ModalDialogTip3": "更改模态弹窗内数值点击 确认 按钮时数值 更新", + "ModalDialogTip4": "更改模态弹窗内数值点击 取消 或者 关闭 按钮时数值 不更新", + "ModalDialogTip5": "再次点击弹出模态弹窗时,数值保持一致", + "ModalDialogTitle": "模态对话框", + "MultipleDialogButton": "弹窗", + "MultipleDialogDesc": "目前多级弹窗已经实现,每个 ModalDialog 均可以独立设置 IsBackdrop IsKeyboard 参数,修复了上一个版本按下 ESC 弹窗全部消失问题", + "MultipleDialogIntro": "点击弹窗内部按钮继续弹出对话窗", + "MultipleDialogTip1": "功能介绍", + "MultipleDialogTip2": "点击按钮弹出对话窗", + "MultipleDialogTip3": "切换弹窗内 Tab 组件的第三个标签页 角色管理", + "MultipleDialogTip4": "点击标签页中的弹窗继续弹出对话框", + "MultipleDialogTip5": "关闭当前对话框后之前打开的对话框 保持状态", + "MultipleDialogTitle": "多级弹窗", + "PrintDialogButton": "点击打开 Dialog", + "PrintDialogIntro": "通过设置 ShowPrintButton 使 Header 上显示一个打印预览按钮", + "PrintDialogTip": "通过设置 PrintButtonText 更改 打印预览 按钮文字", + "PrintDialogTitle": "打印按钮", + "ResizeIntro": "通过设置 ShowResize=\"true\" 可以通过鼠标拉动弹窗右下角进行窗口大小调整", + "ResizeTitle": "调整大小", + "SaveDialogButton": "保存弹窗", + "SaveDialogIntro": "通过 ShowSaveDialog 方法弹出保存对话框", + "SaveDialogTip1": "功能介绍", + "SaveDialogTip2": "点击按钮弹出保存弹窗", + "SaveDialogTip3": "设计出发点通过给定 TComponent 自动生成保存窗口,通过设置 saveCallback 在保存回调方法中进行数据处理,TComponent 泛型组件所需要参数可以通过 parameters 进行传递", + "SaveDialogTitle": "保存对话框", + "SearchDialogButton": "搜索弹窗", + "SearchDialogIntro": "通过 ShowSearchDialog 方法弹出保存对话框", + "SearchDialogTip1": "功能介绍", + "SearchDialogTip2": "点击按钮弹出搜索弹窗", + "SearchDialogTip3": "通过 SearchDialogOption 参数对弹窗进行设置", + "SearchDialogTip4": "设计出发点通过给定 Model 或者 Items 自动生成搜索窗口", + "SearchDialogTitle": "搜索对话框", + "ShowMaximizeButton": "点击打开 Dialog", + "ShowMaximizeButtonIntro": "通过设置 ShowMaximizeButton 使 Header 上显示一个窗口最大化按钮", + "ShowMaximizeButtonTitle": "全屏弹窗", + "SizeButton": "全屏弹窗(< 1200px)", + "SizeIntro": "通过设置 Size FullScreenSize 参数组合可以实现非常灵活的窗体大小控制", + "SizeTitle": "对话框大小", + "Tip1": "组件使用介绍", + "Tip2": "注入服务 DialogService [传送门]", + "Tip3": "调用其 DialogOption 实例 OnCloseAsync 方法", + "Tip4": "级联参数关闭弹窗方法", + "Tip5": "关窗按钮", + "Title": "Dialog 对话框组件" + }, + "BootstrapBlazor.Server.Components.Samples.Dispatches": { + "Description": "通过注入服务调用实例方法全站弹出窗口进行消息通知", + "DispatchIntro": "点击按钮进行消息分发,所有打开此页面的人均能收到此按钮分发的消息", + "DispatchNoticeButtonText": "通知", + "DispatchNoticeMessage": "测试通知消息", + "DispatchTip": "由于本功能为全站推送通知,为防止恶意使用,下例中按钮通知后禁用 30 秒;消息注入代码在 MainLayout 模板中,注意订阅与分发的泛型对象要一致", + "DispatchTitle": "实战应用", + "NormalTip": "本站通过此组件功能实现了代码仓库有提交时全站提示功能", + "NormalTips1": "1. 获得 注入服务 指定消息实体类", + "NormalTips2": "2. 订阅 消息通知", + "NormalTips3": "3. 页面或者组件销毁时 取消订阅", + "NormalTips4": "4. 通知实现方法 Notify", + "NormalTips5": "本例中使用 Toast 组件进行通知,实战中可以使用其他任意内置消息组件或者自定义组件进行通知提示操作", + "NormalTipsContent": "通知内容", + "NormalTipsTitle": "通知标题", + "Tips": "本组件使用注入服务的形式提供功能,通常用于全站消息推送等功能;使用本服务使需要在代码中进行 订阅取消订阅 操作", + "Title": "Dispatch 消息分发" + }, + "BootstrapBlazor.Server.Components.Samples.Displays": { + "Arr": "数组", + "BasicUsage": "基础用法", + "BasicUsageIntro": "仅显示", + "BasicUsageTitle": "基础用法", + "BindWayCustomLabel": "自定义标签", + "BindWayIntro": "通过双向绑定可以自动获取资源文件中的显示标签", + "BindWayNotOccupants": "不占位", + "BindWayOccupants": "占位", + "BindWayP1": "Display 组件开启双向绑定时,会根据绑定的 Model 属性值去自动获取 Display/DisplayName 标签值并且显示为前置 Label,通过 DisplayText 属性可以自定义显示前置标签,或者通过 ShowLabel 属性关闭前置标签是否显示", + "BindWayP2": "设置 DisplayText 值为 自定义标签", + "BindWayP3": "无论是否设置 DisplayText 值,当 ShowLabeltrue 时均显示", + "BindWayP4": "无论是否设置 DisplayText 值,当 ShowLabelfalse 时均不显示", + "BindWayTitle": "双向绑定数据", + "Collection": "集合", + "DataTypeIntro": "Display 组件内置对 枚举 集合 数组 进行处理,如不符合条件时,请自定义格式化或者回调委托方法", + "DataTypeTitle": "泛型绑定", + "EditorFormIntro": "Display 组件在表单组件 EditorForm 中使用,多用于明细页,不可编辑模式", + "EditorFormTitle": "表单内使用", + "Enum": "枚举", + "FormatStringIntro": "设置 FormatString 属性值为 yyyy-MM-dd 时,组件显示的时间格式为年月日", + "FormatStringP": "Display 组件绑定 byte[] 数组,格式化成 base64 编码字符串示例", + "FormatStringSettingText": "设置", + "FormatStringTitle": "自定义格式", + "Integer": "整型", + "LookupIntro": "设置 Lookup 值为 IEnumerable<SelectedItem> 集合或者通过设置 LookupServiceKey,组件将通过此数据集,进行通过 Value 显示 Text 翻译工作", + "LookupP1": "本例中组件 Value='@IntValue' 设置 Lookup='@IntValueSource' 组件将 Value 值对应的 Text 显示出来", + "LookupTitle": "Lookup", + "ShowTooltipIntro": "组件包裹 Tooltip 或者 ShowTooltip=\"true\" 后内置 BootstrapInputGroup 组件使用", + "ShowTooltipTitle": "显示 Tooltip", + "SubTitle": "显示静态文本数据", + "Title": "Display 显示组件" + }, + "BootstrapBlazor.Server.Components.Samples.Dividers": { + "AlignmentContent1": "头上一片晴天,心中一个想念", + "AlignmentContent2": "骑士归来之时,断剑重铸之日", + "AlignmentContent3": "一只萌萌哒图标", + "AlignmentContent4": "学习使我快乐", + "AlignmentDivider1": "少年包青天", + "AlignmentDivider2": "英雄联盟", + "AlignmentDivider3": "学习语录", + "AlignmentIntro": "可以在分割线上自定义文案内容。", + "AlignmentTitle": "设置文案", + "ChildContent1": "头上一片晴天,心中一个想念", + "ChildContent2": "骑士归来之时,断剑重铸之日", + "ChildContentIntro": "通过设置 ChildContent 内容可以自定义任意内容", + "ChildContentTitle": "自定义内容", + "Description": "区隔内容的分割线。", + "DividerChildContent": "我是自定义内容 div 元素", + "IconBookmark": "书签", + "IconContent1": "头上一片晴天,心中一个想念", + "IconContent2": "骑士归来之时,断剑重铸之日", + "IconContent3": "一只萌萌哒图标", + "IconContent4": "学习使我快乐", + "IconIntro": "可以在分割线上自定义文案内容。", + "IconTitle": "设置图标", + "NormalContent1": "青春是一个短暂的美梦, 当你醒来时, 它早已消失无踪", + "NormalContent2": "少量的邪恶足以抵消全部高贵的品质, 害得人声名狼藉", + "NormalIntro": "对不同章节的文本段落进行分割。", + "NormalTitle": "基础用法", + "Title": "Divider 分割线", + "VerticalContent1": "雨纷纷", + "VerticalContent2": "旧故里", + "VerticalContent3": "草木深", + "VerticalDivider": "分割线", + "VerticalIntro": "进行垂直显示分割线", + "VerticalTitle": "垂直分割" + }, + "BootstrapBlazor.Server.Components.Samples.DockViews.DockViewCol": { + "DockViewColIntro": "通过设置 Type=\"DockContentType.Column\" 使 DockView 垂直布局", + "DockViewColTitle": "DockView 列布局" + }, + "BootstrapBlazor.Server.Components.Samples.DockViews.DockViewComplex": { + "DockViewComplexIntro": "通过组合、嵌套设置 DockContentType 值可以得到复杂布局", + "DockViewComplexTitle": "DockView 复杂布局" + }, + "BootstrapBlazor.Server.Components.Samples.DockViews.DockViewLayout": { + "DockViewLayoutIntro": "通过设置 DockView 的属性 LayoutConfig 初始化控制面板的显示布局, 方法 GetLayoutConfig 获取面板的显示布局", + "DockViewLayoutTitle": "DockView 自定义布局" + }, + "BootstrapBlazor.Server.Components.Samples.DockViews.DockViewLock": { + "DockViewLockIntro": "通过设置 Dock 的属性 IsLock,控制所有面板是否能拖动", + "DockViewLockTitle": "DockView 锁定面板" + }, + "BootstrapBlazor.Server.Components.Samples.DockViews.DockViewNest": { + "DockViewNestIntro": "组件 DockComponent 内可嵌套放置 DockView 通过设置 ShowHeader=\"false\" 可使其标签不可见", + "DockViewNestTitle": "DockView 嵌套布局" + }, + "BootstrapBlazor.Server.Components.Samples.DockViews.DockViewRow": { + "DockViewRowIntro": "通过设置 Type=\"DockContentType.Row\" 使 DockView 水平布局", + "DockViewRowTitle": "DockView 行布局" + }, + "BootstrapBlazor.Server.Components.Samples.DockViews.DockViewStack": { + "DockViewStackIntro": "通过设置 Type=\"DockContentType.Stack\" 使 DockView 堆栈布局", + "DockViewStackTitle": "DockView 堆栈布局" + }, + "BootstrapBlazor.Server.Components.Samples.DockViews.DockViewVisible": { + "DockViewVisibleIntro": "通过设置 Visible 控制是否显示组件,使用 OnVisibleStateChangedAsync 设置面板关闭回调委托方法", + "DockViewVisibleTitle": "DockView 可见性设置" + }, + "BootstrapBlazor.Server.Components.Samples.DockViews.Index": { + "DockViewDescription": "多标签停靠布局管理器", + "DockViewIntro": "

        DockView 组件是封装的 Golden Layout 库,它是一个 JavaScript 布局管理器,它使您能够在网页中布局组件并通过拖放重新排列它们。其特点包括:

        • 原生弹出窗口
        • 触摸支持
        • 支持 AngularVue 等应用框架
        • 虚拟组件
        • 全面的API
        • 加载和保存布局
        • 焦点组件
        • 完全主题化
        • 适用于现代浏览器(FirefoxChrome
        • 响应式设计
        ", + "DockViewTitle": "DockView 可停靠视图" + }, + "BootstrapBlazor.Server.Components.Samples.DockViews2.DockViewCol": { + "DockViewColIntro": "通过设置 Type=\"DockViewContentType.Column\" 使 DockViewV2 垂直布局,通过设置 Height=\"240\" 初始化其面板高度", + "DockViewColTitle": "DockViewV2 列布局" + }, + "BootstrapBlazor.Server.Components.Samples.DockViews2.DockViewComplex": { + "DockViewComplexIntro": "通过组合、嵌套设置 DockViewContentType 值可以得到复杂布局", + "DockViewComplexTitle": "DockViewV2 复杂布局" + }, + "BootstrapBlazor.Server.Components.Samples.DockViews2.DockViewGroup": { + "DockViewGroupIntro": "通过设置 Type=\"DockViewContentType.Group\" 使 DockViewV2 组布局", + "DockViewGroupTitle": "DockViewV2 组布局" + }, + "BootstrapBlazor.Server.Components.Samples.DockViews2.DockViewLayout": { + "DockViewLayoutIntro": "通过设置 DockViewV2 的属性 LayoutConfig 初始化控制面板的显示布局, 方法 GetLayoutConfig 获取面板的显示布局", + "DockViewLayoutTitle": "DockViewV2 自定义布局" + }, + "BootstrapBlazor.Server.Components.Samples.DockViews2.DockViewLock": { + "DockViewLockIntro": "通过设置 DockViewV2 的属性 IsLock,控制所有面板是否能拖动,通过设置 ShowLock 控制是否显示锁定按钮", + "DockViewLockTitle": "DockViewV2 锁定面板" + }, + "BootstrapBlazor.Server.Components.Samples.DockViews2.DockViewNest": { + "DockViewNestIntro": "组件 DockViewComponent 内可嵌套放置 DockViewV2 通过设置 ShowHeader=\"false\" 可使其标签不可见", + "DockViewNestTitle": "DockViewV2 嵌套布局" + }, + "BootstrapBlazor.Server.Components.Samples.DockViews2.DockViewRow": { + "DockViewRowIntro": "通过设置 Type=\"DockViewContentType.Row\" 使 DockViewV2 水平布局,通过设置 Width=\"240\" 初始化其面板宽度", + "DockViewRowTitle": "DockViewV2 行布局" + }, + "BootstrapBlazor.Server.Components.Samples.DockViews2.DockViewTitle": { + "DockViewTitleIntro": "通过设置 ShowTitleBar 控制是否显示标题前功能按钮,使用 OnClickTitleBarCallback 设置回调委托方法,复杂功能使用 TitleTemplate 自定义", + "DockViewTitleTitle": "DockViewV2 设置标题" + }, + "BootstrapBlazor.Server.Components.Samples.DockViews2.DockViewVisible": { + "DockViewVisibleIntro": "通过设置 Visible 控制是否显示组件,使用 OnVisibleStateChangedAsync 设置面板关闭回调委托方法", + "DockViewVisibleTitle": "DockViewV2 可见性设置" + }, + "BootstrapBlazor.Server.Components.Samples.DockViews2.Index": { + "DockView2Description": "多标签停靠布局管理器", + "DockView2Intro": "

        DockView 组件是封装的 DockView 库,它是一个 JavaScript 布局管理器,它使您能够在网页中布局组件并通过拖放重新排列它们。其特点包括:

        • 原生弹出窗口
        • 触摸支持
        • 支持 AngularVue 等应用框架
        • 虚拟组件
        • 全面的API
        • 加载和保存布局
        • 焦点组件
        • 完全主题化
        • 适用于现代浏览器(FirefoxChrome
        • 响应式设计
        ", + "DockView2Title": "DockViewV2 可停靠视图" + }, + "BootstrapBlazor.Server.Components.Samples.Dom2Images": { + "Dom2ImageButtonText": "转换", + "Dom2ImageDesc": "由于底层使用的是 SnapDOM 实际使用过程中遇到问题请参考项目 Issue", + "Dom2ImageDownloadText": "下载", + "Dom2ImageFullText": "长截图", + "Dom2ImageIntro": "将 Html 片段导出为图片", + "Dom2ImageNormalIntro": "通过指定 Selector 将此节点转成图片", + "Dom2ImageNormalTitle": "基本用法", + "Dom2ImageTitle": "Dom2Image 元素转图片" + }, + "BootstrapBlazor.Server.Components.Samples.Downloads": { + "DownloadBigFileButtonText": "按钮设置 IsAsync 值为 true 进行异步下载操作", + "DownloadBigFileIntro": "这里模拟生成了一个 100万行 的文本文件,大概 58M,可以自行测试", + "DownloadBigFileTitle": "大文件下载测试", + "DownloadFolderButtonText": "下载", + "DownloadFolderIntro": "通过设置文件夹物理路径,将目录内文件打包压缩后下载", + "DownloadFolderTitle": "文件夹下载", + "DownloadImageButtonText": "由于测试使用了 wwwroot 下的文件,没有代码生成,wasm 无法访问 wwwroot 文件夹,故此测试只有ssr 模式可用。wasm 请自行测试。", + "DownloadImageIntro": "模拟直接由前端页面生成验证码或者上传图片不保存直接显示的情况。", + "DownloadImageTitle": "获取图片并显示", + "DownloadNormalButtonText": "下载", + "DownloadNormalIntro": "通过设置物理路径直接下载文件", + "DownloadNormalTitle": "普通下载", + "DownloadsExample": "示例", + "DownloadsExampleButtonText": "下载文件", + "DownloadsExampleCodeTitle": "C# 代码", + "DownloadsExampleContent": "自行生成并写入的文本,这里可以换成图片或其他内容", + "DownloadsExampleRazorCodeContent": "", + "DownloadsExampleRazorCodeTitle": "Razor 代码", + "DownloadsExampleTestFile": "测试文件.txt", + "DownloadsSubTitle": "用于直接下载物理文件", + "DownloadsTips1": "特别注意", + "DownloadsTips2": "Download 组件底层使用了 DotNetStreamReference 对象,这允许将文件数据流式传输到客户端,此方法会将整个文件加载到客户端内存中,若要下载相对较大的文件 (>= 250 MB),建议遵循 MVCUrl 下载", + "DownloadsTitle": "Download 文件下载" + }, + "BootstrapBlazor.Server.Components.Samples.DragDrops": { + "AcceptsIntro": "使用Accepts只允许左侧拖入10并且使用AllowsDrag限制2不能被拖动,使用MaxItems限制右侧最多拥有6个节点", + "AcceptsTitle": "限制拖入的内容", + "CopyItemIntro": "使用CopyItem复制一份新的到新位置", + "CopyItemTitle": "复制到新容器", + "Description": "用于拖拽使用", + "EventIntro": "当拖入数量超限时OnItemDropRejectedByMaxItemLimit,当拖拽被禁止时OnItemDropRejected,返回底下的ItemOnReplacedItemDrop,返回放下的ItemOnItemDrop", + "EventTitle": "各种事件", + "M1": "是否运行拖放", + "M2": "节点是否允许被拖拽", + "M3": "复制一个新的 Item 到目标位置", + "M4": "针对 Item 添加特殊的 css class", + "M5": "Item 释放时的事件", + "M6": "Item 释放被拒绝时的事件", + "M7": "当 Item 在另一个 Item 上,不是空白处被释放时的事件", + "M8": "Item 因为 Dropzone 内最大数量超限被拒绝时的事件", + "NormalIntro": "简单拖拽", + "NormalTitle": "基本用法", + "Title": "DragDrop 拖拽" + }, + "BootstrapBlazor.Server.Components.Samples.Drawers": { + "BodyScrollIntro": "通过设置 BodyScroll 控制抽屉弹窗显示时是否允许滚动 Body 默认 false 不允许滚动", + "BodyScrollTitle": "页面滚动", + "Close": "关闭抽屉", + "Content": "抽屉内布局、组件等完全可以自定义", + "Description": "有些时候, Dialog 组件并不满足我们的需求, 比如你的表单很长, 亦或是你需要临时展示一些文档, Drawer 拥有和 Dialog 几乎相同的 API, 在 UI 上带来不一样的体验", + "DrawerServiceIntro": "通过调用 DrawerService 服务打开抽屉弹窗", + "DrawerServiceTitle": "调用服务打开抽屉", + "DrawerTips": "有时候我们的弹窗希望在某个容器内展开,可通过在特定容器内置 <Drawer/> 抽屉组件,然后设置参数 Position=\"absolute\" 相对定位来实现此需求;注意:父容器样式需要设置 position: relative;", + "IsKeyboardIntro": "组件默认使用 ESC 按键关闭抽屉弹窗,可通过 IsKeyboard=\"true\" 开启此功能", + "IsKeyboardTitle": "ESC 按键支持", + "NoBackdropIntro": "通过设置 ShowBackdrop=\"false\" 不显示遮罩,这种模式下可以与抽屉下面网页元素进行交互操作", + "NoBackdropTitle": "无遮罩效果", + "NormalIntro": "呼出一个临时的侧边栏, 可以从多个方向呼出", + "NormalTitle": "基本用法", + "Open": "点我打开", + "PlacementContent": "点击遮罩阴影部分自动关闭抽屉", + "PlacementIntro": "通过设置 IsBackdrop 属性为 true,点击遮罩部分时自动关闭抽屉", + "PlacementTitle": "点击遮罩关闭", + "Title": "Drawer 抽屉" + }, + "BootstrapBlazor.Server.Components.Samples.DriverDotnetJs": { + "DriverJsDestroyDesc": "当用户尝试退出游览时,可以使用 OnBeforeDestroyAsync 回调添加销毁前逻辑,返回 非空字符串 时客户端弹窗二次确认是否阻止销毁;可通过设置 AllowClose 阻止用户退出向导", + "DriverJsDestroyIntro": "销毁前回调方法 OnBeforeDestroyAsync 或者销毁回调方法 OnDestroyedAsync", + "DriverJsDestroyTitle": "销毁回调方法", + "DriverJsHighlightIntro": "通过调用 DriverJs 组件实例方法 Highlight 使指定元素高亮聚焦显示", + "DriverJsHighlightTitle": "高亮显示", + "DriverJsNormalDesc": "通过设置 DriverJsConfig 参数 Animate=\"false\" 关闭动画效果", + "DriverJsNormalIntro": "通过简单配置点击按钮开始用户步骤指导", + "DriverJsNormalTitle": "基础用法", + "DriverJsPopoverContentText2": "这里是组件介绍,通过点击下方单选框可切换图标主题", + "DriverJsPopoverContentText3": "这里是示例区域,此区域内展示具体例子", + "DriverJsPopoverContentText4": "这里是示例区域", + "DriverJsPopoverContentText5": "点击这里开始", + "DriverJsPopoverDesc": "详细参数信息请查看 [传送门]", + "DriverJsPopoverIntro": "通过设置 DriverJsPopover 组件配置 Popover 相关配置信息", + "DriverJsPopoverStyleIntro": "通过设置 PopoverClass=\"driverjs-theme\" 通过自定义样式 driverjs-theme 设置弹窗 UI", + "DriverJsPopoverStyleTitle": "弹窗样式", + "DriverJsPopoverTitle": "弹窗配置", + "DriverJsPopoverTitleText": "高亮向导组件演示", + "DriverJsSubtitle": "引导用户的注意力穿过整个页面", + "DriverJsTitle": "DriverJs 高亮向导组件" + }, + "BootstrapBlazor.Server.Components.Samples.Dropdowns": { + "AddItem": "添加", + "AlignmentIntro": "默认情况下,通过设置 MenuAlignment=Alignment.Right 使下拉菜单右侧对齐", + "AlignmentTitle": "菜单对齐", + "ButtonTemplateIntro": "通过设置 ButtonTemlate 可以自定义显示内容", + "ButtonTemplateTitle": "按钮模板", + "CascadeIntro": "通过选择第一个下拉框不同选项,第二个下拉框动态填充内容。", + "CascadeTitle": "级联绑定", + "City": "城市", + "ColorIntro": "提供各种颜色的警告信息框 引用 Color='Color.Primary' 等颜色及样式类来定义下拉菜单的外在表现", + "ColorTitle": "带有颜色的下拉框", + "Description": "将动作或菜单折叠到下拉菜单中", + "DirectionIntro": "增加 Direction='Direction.Dropup' 样式,使下拉菜单向上展开。", + "DirectionTitle": "展开方向", + "DropdownCascadeItem1": "请选择 ...", + "DropdownCascadeItem2": "北京", + "DropdownCascadeItem3": "上海", + "DropdownCascadeItem4": "杭州", + "DropdownCascadeItem5": "朝阳区", + "DropdownCascadeItem6": "海淀区", + "DropdownCascadeItem7": "静安区", + "DropdownCascadeItem8": "黄浦区", + "DropdownItemsTemplateIntro": "通过设置 ItemsTemplate 可以自定义下拉框所有内容,本例中通过使用 DropdownItem 组件与 DropdownDivider 对下拉框组件进行自定义", + "DropdownItemsTemplateTitle": "下拉框模板", + "DropdownItemTemplateIntro": "通过设置 ItemTemplate 可以自定义下拉项显示内容,本例中通过自定义模板使用 Tooltip 组件增加鼠标悬浮是显示提示功能", + "DropdownItemTemplateTitle": "下拉项模板", + "EventDesc1": "点击按钮时触发此事件", + "EventDesc2": "点击按钮时触发此事件并且不刷新当前组件,用于提高性能时使用", + "EventOnSelectedItemChanged": "下拉框值发生改变时触发", + "FixedButtonTextIntro": "通过设置 FixedButtonText 来设置固定按钮的初始文字", + "FixedButtonTextTitle": "设置固定按钮文字", + "IsAsyncIntro": "通过设置 IsAsync 属性按钮是否为 异步请求按钮,默认为 false注意 需要设置 ShowSplit=\"true\" 时才生效", + "IsAsyncTitle": "异步按钮", + "IsFixedButtonTextIntro": "通过设置 IsFixedButtonText 使更改下拉选项时按钮文本不变", + "IsFixedButtonTextTitle": "固定按钮文本", + "Item1": "北京", + "Item2": "上海", + "Item3": "广州", + "ItemsIntro": "点击右侧按钮时,下拉框内菜单项会增加", + "ItemsTitle": "绑定数据源", + "NormalIntro": "使用 TagName='a' 开启带有 button 标签的下拉表", + "NormalTitle": "基础用法", + "NullIntro": "允许空 Items 存在的下拉菜单", + "NullTitle": "Dropdown 空下拉菜单", + "RadioIntro": "改变选项时,下拉框内菜单项会增加", + "RadioTitle": "绑定数据源", + "RemoveItem": "删除", + "SizeIntro": "下拉菜单有各种大小规格可以选用 Size 属性,包括预设及分裂式按钮下拉菜单。", + "SizeTitle": "尺寸大小定义", + "SplitIntro": "可用与单个按钮下拉菜单近似的标记创建分裂式下拉菜单,添加 ShowSplit='true' 插入此符号为下拉选项作适当的间隔(距)处理。", + "SplitTitle": "分裂式按钮下拉菜单", + "Title": "Dropdown 下拉菜单" + }, + "BootstrapBlazor.Server.Components.Samples.DropdownWidgets": { + "AttributeTitle": "DropdownWidgetItem 组件", + "BasicUsageIntro": "直接在页面上通过 ChildContent 编写挂件内容", + "BasicUsageMessage": "您有 4 个未读消息", + "BasicUsageNotify": "您有 10 个未读通知", + "BasicUsageTasks": "您有 3 个任务", + "BasicUsageTitle": "基础用法", + "BasicUsageViewMessage": "查看所有消息", + "BasicUsageViewNotify": "查看所有通知", + "BasicUsageViewTasks": "查看所有任务", + "SubTitle": "多用于头部信息汇总展示", + "Title": "DropdownWidget 下拉挂件" + }, + "BootstrapBlazor.Server.Components.Samples.EditDialogs": { + "Description": "通过绑定数据模型自动呈现编辑弹窗", + "EditDialogOption": "EditDialogOption 属性", + "LeftAlignedButton": "编辑弹窗(左对齐)", + "NoRenderIntro": "通过设置 IEditorItem 实例的 地址 数量 参数 Ignore=true, 实现编辑弹窗不显示", + "NoRenderTitle": "设置绑定模型部分属性不显示", + "NormalIntro": "通过绑定 TModel 数据模型,自动生成模型各个字段的可编辑表单", + "NormalTitle": "基础用法", + "PopupButton": "弹窗", + "RightAlignedButton": "编辑弹窗(右对齐)", + "SubDescription": "EditDialog 组件是 Dialog 组件的扩展,适用于数据弹出窗编辑。", + "Tip": "通过调用注入服务 DialogServiceShowEditDialog 方法直接弹出编辑对话框,大大减少代码量。EditDialogOption 配置类继承 DialogOption,更多参数设置请点击 [传送门]\"", + "Title": "EditDialog 编辑弹窗" + }, + "BootstrapBlazor.Server.Components.Samples.EditorForms": { + "AlignmentIntro": "通过设置 CompnentType 属性值来控制渲染组件类型", + "AlignmentTips1": "Inline 布局模式下通过设置 LabelAlign=\"Alignment.Right\" 使表单内标签右对齐", + "AlignmentTips2": "Inline 布局模式下通过设置 LabelWidth 值调整标签宽度,默认未设置使用全局样式变量 --bb-row-label-width 值,默认值为 120px", + "AlignmentTips3": "Buttons 模板内可嵌套 div 并设置样式 text-end 使按钮右侧对齐", + "AlignmentTitle": "自定义渲染组件类型", + "Att10": "绑定列数据类型", + "Att11": "是否允许编辑", + "Att12": "是否只读", + "Att13": "编辑列前置标签名", + "Att14": "列编辑模板", + "Att9": "当前绑定数据值", + "AutoGenerateDescription": "本例中通过设置 AutoGenerateAllItem 值为 false,关闭自动生成功能,通过手动增加两个 EditorItem 编辑项来呈现表单编辑", + "AutoGenerateIntro": "通过设置属性 AutoGenerateAllItem 值为 false,禁止自动生成属性,通过设置 FieldItems 内部集合来控制显示属性", + "AutoGenerateTitle": "默认不自动生成", + "Description": "通过绑定数据模型自动呈现编辑表单", + "EditorFormAttributeTitle": "EditorItem 属性", + "EditorFormTips1": "绑定模型默认自动生成全部属性,可以通过设置 AutoGenerateAllItem 更改为不自动生成", + "EditorFormTips2": "如不需要编辑列,设置 Editable 即可,默认值为 true 生成编辑组件", + "EditorFormTips3": "复杂编辑列,设置 EditTemplate 模板,进行自定义组件进行编辑", + "EditorFormTips4": "表单内按钮可以设置多个,设置 Buttons 模板即可", + "GroupBoxTitle": "表单示例", + "IsDisplayIntro": "通过设置 IsDisplay=\"true\" 使整个表单不可编辑", + "IsDisplayTitle": "只读表单", + "ItemsPerRowDescription": "本示例设置 ItemsPerRow=3 每行显示 3 个组件", + "ItemsPerRowIntro": "通过设置 ItemsPerRow 属性值来控制布局", + "ItemsPerRowTitle": "设置每行显示控件数量", + "NormalDescription": "直接绑定模型 Model,设置 Education Complete 字段不显示", + "NormalIntro": "通过绑定 TModel 数据模型,自动生成模型各个字段的可编辑表单", + "NormalTitle": "基础用法", + "SkipValidateDescription": "在某些情况下表单中有些列的值可能是二级分类等等,需要知道一级分类的信息,这个时候一级分类需要额外的组件来呈现,如果 Select,而这个组件是与当前上下文绑定模型 Model 无关的,这种需求中通过设置 SkipValidate 值为 true,关闭此组件的模型验证功能即可", + "SkipValidateIntro": "通过设置属性 AutoGenerateAllItem 值为 false,禁止自动生成属性,通过设置 FieldItems 内部集合来控制显示属性", + "SkipValidateTitle": "表单组件内的组件绑定与模型无关的字段", + "SubButtonText": "提交", + "SubDescription": "EditorForm 组件是一个非常实用的组件,当进行数据编辑时,仅需要将 Model 属性赋值即可。", + "TestAddress": "测试地址", + "TestName": "张三", + "Title": "EditorForm 表单组件", + "ValidateFormIntro": "通过嵌套 ValidateForm 组件实现数据合规检查功能", + "ValidateFormTips1": "组件内置到 ValidateForm 内开启数据合规检查功能,爱好 字段使用 EditTemplate 模板自定义组件呈现数据", + "ValidateFormTips2": "通过设置 Readonly 属性,使 生日 字段为只读", + "ValidateFormTitle": "开启数据验证" + }, + "BootstrapBlazor.Server.Components.Samples.Editors": { + "DoMethodAsyncButton1": "插入一段 Html", + "DoMethodAsyncButton2": "将段落修改为 H2", + "DoMethodAsyncButton3": "添加一张图片", + "DoMethodAsyncButton4": "获得组件内容", + "DoMethodAsyncDescription": "本例中通过设置 ToolbarItems 属性,更改默认可用的工具栏按钮", + "DoMethodAsyncIntro": "使用实例方法从外部操作 Editor,具体的参数参照 summernote api", + "DoMethodAsyncPasteHTML": "这里是外部按钮插入的内容", + "DoMethodAsyncTitle": "实例方法", + "EditorCustomerToolbarButtonsDescription": "本例中通过扩展 CustomerPluginItems 属性在工具栏中增加了两个按钮,点击按钮弹出 SweetAlert 模态框,点击模态框确认按钮后文本框中插入一段内容", + "EditorCustomerToolbarButtonsIntro": "通过设置 CustomerPluginItems 属性对编辑框工具栏进行自定义扩展, 通过设置 OnClickPluginItem 回调委托做功能", + "EditorCustomerToolbarButtonsTitle": "自定义扩展编辑框按钮", + "EditorEmptyPlaceholder": "自定义空值的提示信息", + "EditorHeightIntro": "通过设置 Height 属性来设置组件高度", + "EditorHeightTitle": "自定义高度", + "EditorIsEditorIntro": "通过设置 IsEditor 属性来设置组件直接显示为富文本编辑框,上传图片时可以通过 OnFileUpload 回调方法获得图片信息", + "EditorIsEditorTitle": "默认显示为富文本编辑框", + "EditorNormalDescription": "通过设置 IsEditor 属性值来控制组件默认是 div 还是 editor", + "EditorNormalDiv": "我是一个普通的 div 点击无法编辑", + "EditorNormalIntro": "默认呈现为 div 点击后变为富文本编辑框", + "EditorNormalTitle": "基础用法", + "EditorOnValueChangedDescription": "通过 bind-ValueEditorValue 后台属性进行双向绑定,编辑框内进行编辑后点击 完成 按钮,下方文本框内即可显示编辑后结果", + "EditorOnValueChangedInitValue": "初始值 Test", + "EditorOnValueChangedIntro": "实战中通过双向绑定到 Value 后台自动获取到客户端富文本框编辑内容", + "EditorOnValueChangedLabel": "显示编辑内容:", + "EditorOnValueChangedTitle": "双向绑定", + "EditorOnValueChangedUpdateValue": "更改后的值", + "EditorPlaceholderDescription": "默认提示是 点击后进行编辑", + "EditorPlaceholderIntro": "通过设置 Placeholder 属性来设置空值时的提示消息", + "EditorPlaceholderTitle": "自定义提示信息", + "EditorsDescription": "将输入的文字转化为 html 代码片段", + "EditorsTips": "Editor 组件是对 Summernote 组件 的二次封装,如需使用本地化功能请自行官网下载相对应语言包,自行引用即可,zh-CN en-US 已内置;组件所需 css JavaScript 均按需动态加载,使用者无需设置。由于 summernote 组件依赖 jQuery,所以需要自行引用 jQuery 脚本包。如果编辑内容过多,可能会触发 signalR 通讯中断问题,请自行调整 HubOptions 配置即可。", + "EditorsTitle": "Editor 富文本框", + "EditorSubmitDescription": "ShowSubmit 默认值为 true 显示提交按钮,设计上点击提交按钮后,才触发 OnValueChanged 回调方法此设计大大提高性能节约服务器算力,设置值为 false 后将使用 summernodeonChange 触发,适用需要实时获取编辑内容场景", + "EditorSubmitIntro": "通过设置 ShowSubmit 控制是否显示工具栏最后的 提交 按钮", + "EditorSubmitTitle": "提交按钮", + "EditorsUploadDesc": "文件上传回调", + "EditorsUploadDesc2": "组件设置回调后,在组件中选择文件上传时,会以 EditorUploadFile 实例形式返回给调用者,通过其属性 Stream 可以实现保存到服务器或者直接存储到 云对象存储(OSS)中。回调返回值为文件存储后用于预览的 Url", + "EditorToolbarItemsDescription": "本例中通过设置 ToolbarItems 属性,更改默认可用的工具栏按钮", + "EditorToolbarItemsIntro": "通过设置 ToolbarItems 属性自定义工具栏内容,目前支持的工具栏值请参见 Summernote 官网", + "EditorToolbarItemsTitle": "自定义工具栏的富文本编辑框", + "Ret1": "
        从plugin1返回的数据
        ", + "Ret2": "从plugin2返回的数据", + "Swal1Content": "点击插件按钮后弹窗并确认后才进行下一步处理", + "Swal1Title": "点击plugin1按钮后弹窗", + "Swal2Content": "点击插件按钮后弹窗并确认后才进行下一步处理", + "Swal2Title": "点击 plugin2 按钮后弹窗", + "ToolTip1": "这是 plugin1 的提示", + "ToolTip2": "这是 plugin2 提示" + }, + "BootstrapBlazor.Server.Components.Samples.EmbedPdfs": { + "PdfDescription": "EmbedPDF 是一个开源的 JavaScript PDF 阅读器,基于 PDFium,在浏览器端直接渲染,无需后端支持", + "PdfReaderNormalIntro": "通过 Url 参数设置 pdf 文件地址", + "PdfReaderNormalText": "基础用法", + "PdfTitle": "EmbedPDF PDF 文档阅读器" + }, + "BootstrapBlazor.Server.Components.Samples.Empties": { + "ImageIntro": "设置 Image 属性即可", + "ImageText": "暂无数据", + "ImageTitle": "设置空状态图片路径", + "NormalIntro": "添加 Empty 标签即可", + "NormalTitle": "基础用法", + "SubTitle": "空状态时的展示占位图", + "TemplateIButtonText": "返回上一页", + "TemplateIntro": "内套 Template 标签渲染自定义组件", + "TemplateText": "自定义空状态模板", + "TemplateTitle": "自定义空状态模板", + "Title": "Empty 空状态" + }, + "BootstrapBlazor.Server.Components.Samples.ExportPdfButtons": { + "ExportPdfButtonsDescription": "将 Html 片段或者网页元素导出为 Pdf", + "ExportPdfButtonsTitle": "将指定网页内容转成 Pdf", + "ExportPdfButtonTips": "IHtml2Pdf 服务接口请参阅 [传送门]", + "GroupBoxTitle": "编辑表单", + "NormalIntro": "导出指定元素 Id", + "NormalTitle": "ElementId", + "SelectorIntro": "通过指定元素 Selector 导出 Pdf", + "SelectorTitle": "Selector", + "ToastContent": "正在导出 Pdf 文件", + "ToastDownloadTitle": "下载 Pdf", + "ToastTitle": "导出 Pdf" + }, + "BootstrapBlazor.Server.Components.Samples.EyeDroppers": { + "EyeDropperDescription": "用户可以从屏幕上采样颜色,包括在浏览器窗口之外", + "EyeDropperNormalButtonText": "取色", + "EyeDropperNormalIntro": "使用 EyeDropperService,可以启动吸管模式。启动后,光标会发生变化以向用户指示该模式处于活动状态。然后用户可以从屏幕上的任何位置选择一种颜色,通过按 Escape 关闭吸管模式", + "EyeDropperNormalTitle": "基础用法", + "EyeDropperTips1": "这是一项实验性技术,在生产中使用之前请仔细检查 浏览器兼容性表", + "EyeDropperTips2": "为防止恶意网站在用户不知情的情况下从用户屏幕获取像素数据,必须由用户操作(如单击按钮)时调用", + "EyeDropperTips3": "为了帮助用户更容易注意到吸管模式,浏览器将其设置为显而易见。短暂延迟后,正常的鼠标光标消失,取而代之的是一个放大镜。在滴管模式启动和用户可以选择像素以确保用户有时间查看放大镜之间也存在延迟", + "EyeDropperTips4": "用户也可以随时取消吸管模式(按键 Escape)", + "EyeDropperTitle": "屏幕取色 EyeDropperService" + }, + "BootstrapBlazor.Server.Components.Samples.FileIcons": { + "BackgroundTemplateIntro": "通过设置 BackgroundTemplate 通过模板自定义背景模板", + "BackgroundTemplateTitle": "自定义背景图", + "BaseUsageIntro": "通过设置 Type 设置图标扩展名", + "BaseUsageTitle": "基本用法", + "ColorIntro": "通过设置 IconColor 设置图标颜色", + "ColorTitle": "颜色", + "CustomCssIntro": "通过设置 class 自定义样式调整图标大小", + "CustomCssTitle": "自定义样式", + "Intro": "通过文件扩展名自定义显示图标", + "SizeIntro": "通过设置 Size 设置图标大小", + "SizeTitle": "大小", + "Title": "File Icon 文件图标" + }, + "BootstrapBlazor.Server.Components.Samples.FileViewers": { + "BaseUsageIntro": "Excel/Word 文件路径或者URL", + "BaseUsageIntro2": "使用 Reload 方法重新载入文件", + "BaseUsageText": "基础用法", + "BaseUsageText2": "重新载入文件", + "Tips": "目前仅支持 Excel(.xlsx) 和 Word(.docx) 格式.
        特别说明:
        如果 Linux 下提示 The type initializer for 'Gdip' threw an exception. 错误, 则使用需要安装 libgdiplus 并开启 System.Drawing 支持.
        为非 Windows 平台启用 System.Drawing 支持,在你的项目文件中 (*.csproj), 添加:", + "Title": "FileViewer 文件预览器" + }, + "BootstrapBlazor.Server.Components.Samples.FlipClocks": { + "CardGroupMargin": "卡片组边距", + "CardHeight": "卡片高度", + "CardMargin": "卡片边距", + "CardWidth": "卡片宽度", + "CountIntro": "通过设置 ViewMode=\"FlipClockViewMode.Count\" 开启计时功能,开始时间使用 StartValue 设置", + "CountText": "计时器", + "Custom": "参数设置", + "CustomIntro": "通过设置参数自定义显示内容", + "CustomText": "自定义参数", + "FlipClocksDescription": "用于网站计时,或者倒计时使用", + "FlipClocksTitle": "FlipClock 卡片翻转时钟", + "FontSize": "字体大小", + "Height": "高度", + "IsCountDownIntro": "通过设置 ViewMode=\"FlipClockViewMode.CountDown\" 用于倒计时功能,开始时间使用 StartValue 设置,倒计时结束时触发 OnCompletedAsync 回调方法", + "IsCountDownText": "倒计时" + }, + "BootstrapBlazor.Server.Components.Samples.FloatingLabels": { + "FloatingLabelBindValueDisplayText": "客户端验证", + "FloatingLabelBindValueIntro": "根据自定义验证规则进行数据有效性检查并自动提示", + "FloatingLabelBindValueTitle": "客户端验证", + "FloatingLabelDisabledDisplayText": "禁用", + "FloatingLabelDisabledIntro": "设置 IsDisabled 属性值为 true 时,组件禁止输入", + "FloatingLabelDisabledTitle": "禁用", + "FloatingLabelDisplayTextIntro": "显示组件内变量值", + "FloatingLabelDisplayTextTitle": "单向绑定数据", + "FloatingLabelFormatStringDisplayText": "泛型绑定", + "FloatingLabelFormatStringIntro": "BootstrapInput 组件双向绑定值是泛型的,本例中双向绑定一个 int 类型数值", + "FloatingLabelFormatStringTitle": "泛型绑定", + "FloatingLabelFormatterDescription": "BootstrapInput 组件绑定 byte[] 数组,格式化成 base64 编码字符串示例", + "FloatingLabelFormatterDisplayText": "字节数组", + "FloatingLabelFormatterDiv2": "设置", + "FloatingLabelFormatterTitle": "自定义格式", + "FloatingLabelGroupBoxTitle": "GroupBox 样式", + "FloatingLabelNormalIntro": "提供基本的文本录入组件", + "FloatingLabelNormalTitle": "基础用法", + "FloatingLabelPasswordDescription": "为了支持更多的文本框属性本组件可以直接写入 type='email' type='number' type='phone'html5 新标准支持的全部属性值,组件未设置 type 值时使用默认的 type='text'", + "FloatingLabelPasswordDisplayText": "密码框", + "FloatingLabelPasswordIntro": "通过设置属性 type 值为 password 使输入文字后以 * 进行屏蔽的密码输入框", + "FloatingLabelPasswordTitle": "密码框", + "FloatingLabelsSubtitle": "通过鼠标或键盘输入字符", + "FloatingLabelsTestName": "张三", + "FloatingLabelsTitle": "FloatingLabel 输入框" + }, + "BootstrapBlazor.Server.Components.Samples.Footers": { + "FooterChildContentIntro": "通过设置 ChildContent 参数自定义组件内部显示内容", + "FooterChildContentTitle": "自定义内容", + "FooterNormalIntro": "传递滚动条组件的 ID 给页脚组件", + "FooterNormalTitle": "基础用法", + "FootersContent1": "底部显示 Footer 组件,点击返回顶端时页面自动滚动回顶端", + "FootersContent2": "本示例传递的是组件客户端 ID", + "FootersDescription": "显示在网页的最下方,提供返回顶端按钮", + "FooterShowGotoIntro": "通过设置 ShowGoto 参数,关闭 Footer 右侧导航小组件", + "FooterShowGotoTitle": "是否显示 Goto 导航", + "FootersTips": "Footer 组件使用时注意样式表 position 属性的设置", + "FootersTitle": "Footer 页脚组件" + }, + "BootstrapBlazor.Server.Components.Samples.FullScreenButtons": { + "FullScreenButtonIntro": "通过 FullScreenButton 组件将整个网页或者指定元素进行全屏化", + "FullScreenButtonNormalIntro": "可通过 Icon 设置按钮默认图标,通过 FullScreenExitIcon 属性设置退出全屏时图标", + "FullScreenButtonNormalTitle": "基础用法", + "FullScreenButtonTitle": "FullScreenButton 全屏按钮", + "FullScreenTitleLi1": "通过 TargetId 参数设置全屏元素 Id", + "FullScreenTitleLi2": "通过 Text 属性设置当前页标题文字" + }, + "BootstrapBlazor.Server.Components.Samples.FullScreens": { + "FullScreenNormalButtonText1": "全屏", + "FullScreenNormalIntro": "通过调用FullScreenService 服务实例的 Show 方法将整个网页进行全屏化", + "FullScreenNormalTitle": "基础用法", + "FullScreenOptionDesc": "通过设置 FullScreenOption 对全屏化的窗口进行设置,可通过 ElementReference Id Selector 指定页面元素", + "FullScreensDescription": "通过注入服务调用 Show 方法弹出窗口进行人机交互", + "FullScreensTitle": "FullScreen 全屏" + }, + "BootstrapBlazor.Server.Components.Samples.Gantts": { + "AttrItems": "数据源", + "AttrMethod": "改变甘特图视图", + "AttrOnClick": "点击任务时触发的回调", + "AttrOnDataChanged": "拖动任务时触发的回调", + "AttrOnProgressChanged": "拖动任务进度时触发的回调", + "AttrOption": "配置项", + "BasicTitle": "基础用法", + "ViewModeDesc": "切换视图模式调用 change_view_mode", + "ViewModeTitle": "改变视图" + }, + "BootstrapBlazor.Server.Components.Samples.Geolocations": { + "Accuracy": "位置精度", + "Altitude": "海拔", + "AltitudeAccuracy": "海拔精度", + "ClearWatchPositionButtonText": "停止追踪", + "ClearWatchPositionResultFailed": "停止追踪失败", + "ClearWatchPositionResultSuccess": "停止追踪成功", + "CurrentDistance": "移动距离", + "GeolocationNormalIntro": "通过浏览器 API 获取定位信息。", + "GeolocationNormalIntro2": "单击按钮以获取地理位置坐标。", + "GeolocationNormalIntro3": "注意: 出于安全考虑,当网页请求获取用户位置信息时,用户会被提示进行授权。注意不同浏览器在请求权限时有不同的策略和方式。Windows10 在未开启定位的情况下无法获取位置。", + "GeolocationNormalText": "基础用法", + "GeolocationsTitle": "地理定位/移动距离追踪", + "GetLocationButtonText": "获取位置", + "Heading": "方向", + "LastUpdateTime": "时间戳", + "Latitude": "纬度", + "Longitude": "经度", + "Speed": "速度", + "TotalDistance": "总移动距离", + "WatchPositionButtonText": "移动距离追踪", + "WatchPositionResultFailed": "调用 WatchPosition 失败", + "WatchPositionResultSuccess": "调用 WatchPosition 成功" + }, + "BootstrapBlazor.Server.Components.Samples.GlobalException": { + "Block1Intro": "本功能是通过代码产生异常信息,由全局捕获组件统一处理", + "Block1Title": "测试", + "Block2Intro": "通过设置 OnErrorHandleAsync 回调方法,设置自定义异常处理逻辑", + "Block2Title": "自定义错误处理", + "ButtonText": "测试", + "DialogIntro": "点击按钮弹出弹窗,弹窗内按钮触发异常,错误显示在弹窗内", + "DialogText": "弹窗", + "DialogTitle": "弹窗中异常捕获", + "ExceptionTestIntroduce": "本例代码中写了一个除以零的错误代码,并且未使用 try/catch 对异常进行捕获,系统并不会崩溃导致不可用,
        • Debug 模式下会显示错误的 描述信息堆栈信息
        • Release 模式下默认使用 Toast 进行弹窗提示
        ", + "H1": "使用方法", + "Introduce": "

        增加组件 ErrorLogger 通过本组件可以对全局的日志、异常进行统一输出;目前由于 Blazor 框架并未提供一个类似 MVC全局异常 整体解决方案;通过使用 ErrorLogger 组件 无需任何额外代码 即可进行全局异常捕获与处理

        ", + "PageErrorIntro": "点击按钮导航到页面生命周期内出错的页面,错误显示在当前页面,不影响菜单以及整体页面布局", + "PageErrorTitle": "页面异常捕获", + "Step1": "1. Startup 文件中增加 AddLogging 开启 net core 系统日志功能,支持其他第三方 Logger 组件", + "Step1Introduce": "使用 AddFileLogger 需要引用 Longbow.Logging 组件包 [传送门]", + "Step2": "2. 使用 BootstrapBlazorRoot 已经内置默认开启,可通过设置 EnableErrorLoggerfalse 关闭", + "Step3": "3. 代码中输入错误信息", + "Step4": "4. 控制台输出可见日志信息", + "Step5": "5. 控制是否显示错误明细信息", + "Step5Intro": "通过配置文件 appsettings.json,开发环境下为 appsettings.Development.json,未设置时默认为 false 不显示,默认行为仅做弹窗提示防止敏感信息暴露", + "Title": "全局异常" + }, + "BootstrapBlazor.Server.Components.Samples.GoTops": { + "Description": "点击后返回指定容器的顶端", + "Description1": "底部显示 Footer 组件,点击返回顶端时页面自动滚动回顶端", + "Description2": "本示例传递的是组件客户端 ID", + "NormalIntro": "点击后返回顶端", + "NormalTitle": "基础用法", + "Title": "GoTop 返回顶端组件" + }, + "BootstrapBlazor.Server.Components.Samples.GroupBoxes": { + "BasicUsageIntro": "将自己的组件放到 GroupBox 内部即可", + "BasicUsageTitle": "基础用法", + "GroupP1": "我是 GroupBox 示例", + "GroupP2": "更多示例请参考 EditorForms 表单示例 [传送门]", + "GroupTitle": "表单示例", + "SubTitle": "模拟 WinForm 的 GroupBox 组件", + "Title": "GroupBox 集合组件" + }, + "BootstrapBlazor.Server.Components.Samples.Handwrittens": { + "SubTitle": "用于移动终端签名保存为 Base64 编码字符串", + "Tips": "已弃用,请使用 BootstrapBlazor.SignaturePad 组件,已知问题在弹窗中无法签名", + "Title": "Handwritten 手写签名" + }, + "BootstrapBlazor.Server.Components.Samples.HikVisions": { + "BasicUsageIntro": "通过调用 HikVision 组件实例方法进行操作", + "BasicUsageTitle": "基本用法", + "Title": "HikVision 海康摄像头" + }, + "BootstrapBlazor.Server.Components.Samples.Html2Images": { + "Html2ImageButtonText": "Image", + "Html2ImageDesc": "由于底层使用的是 html-to-image 实际使用过程中遇到问题请参考项目 Issue", + "Html2ImageElementIntro": "通过调用 GetDataAsync 方法获得 base64-encoded 图片", + "Html2ImageElementTitle": "ToPng", + "Html2ImageIntro": "将网页中任意区域内容转化成图片服务", + "Html2ImageTitle": "Html2Image 网页元素转成图片服务" + }, + "BootstrapBlazor.Server.Components.Samples.Html2Pdfs": { + "ExportButtonText": "导出 Pdf", + "ExportPdfButtonIntro": "通过设置 ExportPdfButton 组件参数 ElementId 将指定 Id 元素内容导出为 Pdf", + "ExportPdfButtonTitle": "使用 ExportPdfButton 导出按钮", + "Html2PdfDescription": "将 Html 片段或者网页元素导出为 Pdf", + "Html2PdfElementDesc": "调用 IHtml2Pdf 服务实例方法 PdfStreamFromHtmlAsync 将网页 Html 导出为 Pdf", + "Html2PdfElementIntro": "将 Html 元素内容导出为 Pdf 流", + "Html2PdfElementTitle": "导出指定网页元素", + "Html2PdfIntro1": "1. 通过 getHtml 脚本获取网页元素 Html 代码", + "Html2PdfIntro2": "2. 将 Html 代码,通过模板生成网页代码,注意 需要提供网页需要的样式表 _content/BootstrapBlazor/css/bootstrap.blazor.bundle.min.css", + "Html2PdfIntro3": "3. 通过 IHtml2Pdf 服务实例方法 PdfStreamFromHtmlAsync 将网页 转化为 Pdf", + "Html2PdfIntro4": "4. IHtml2Pdf 实现服务使用 PuppeteerSharp 将网页 转化为 Pdf,首次使用时会下载 Chromium 运行时,网络不好的情况下可能会很慢", + "Html2PdfNote": "如果导出内容过多,可能会触发 signalR 通讯中断问题,请自行调整 HubOptions 配置即可。", + "Html2PdfTitle": "Html 导出为 Pdf", + "PackageIntro": "组件默认未实现 IHtml2Pdf,请通过引用包 BootstrapBlazor.Html2Pdf 实现", + "Tips1": "实现原理", + "Tips2": "服务", + "ToastContent": "通过表格 Id 导出 Pdf 文件成功", + "ToastTitle": "Pdf 导出" + }, + "BootstrapBlazor.Server.Components.Samples.HtmlRenderers": { + "BaseUsageText": "基础用法", + "IntroText": "有些应用场景需要我们获得 Component 最终输出的 Html 代码片段,调用 IComponentHtmlRenderer 服务的 RenderAsync 实例方法即可", + "SubTitle": "把组件渲染成 Html 字符串", + "Title": "Html 转化器" + }, + "BootstrapBlazor.Server.Components.Samples.Icons.AntDesign.AntDesignIcons": { + "AntDesignIconDescription": "语义化的矢量图形", + "AntDesignIconTitle": "蚂蚁图标库", + "CopiedTooltipText": "拷贝成功", + "Icons": "图标列表请通过 [传送门] 查看", + "P1": "1. 引用扩展组件包后添加包内置样式文件开启图标", + "P2": "2. 开启样式隔离,编译后自动引用组件样式", + "P3": "请拷贝下方样式即可" + }, + "BootstrapBlazor.Server.Components.Samples.Icons.BootstrapIcons": { + "BaseUsageText": "Bootstrap 免费开源图标库", + "Icons": "图标列表请通过 [传送门] 查看", + "P1": "通过引用扩展组件包", + "P2": "后添加样式表文件链接开启图标", + "Title": "Bootstrap Icons" + }, + "BootstrapBlazor.Server.Components.Samples.Icons.ElementIcon.ElementIcons": { + "CopiedTooltipText": "拷贝成功", + "ElementIconDescription": "饿了么免费开源图标库", + "ElementIconTitle": "饿了么图标库", + "Icons": "图标列表请通过 [传送门] 查看", + "P1": "1. 引用扩展组件包后添加包内置样式文件开启图标", + "P2": "2. 开启样式隔离,编译后自动引用组件样式", + "P3": "请拷贝下方样式即可" + }, + "BootstrapBlazor.Server.Components.Samples.Icons.FAIcons": { + "BaseUsageText": "目前 BootstrapBlazor 使用 Font Awesome 最新版本作为内置图标库,所有图标如下", + "CopiedTooltipText": "拷贝成功", + "Icons": "图标列表请通过 [传送门] 查看", + "P1": "通过引用扩展组件包", + "P2": "后添加样式表文件链接开启图标", + "SwitchButtonTextOff": "点击拷贝", + "SwitchButtonTextOn": "显示高级拷贝", + "Title": "Font Awesome Icons" + }, + "BootstrapBlazor.Server.Components.Samples.Icons.FluentSystemIcons": { + "BaseUsageText": "Microsoft 免费开源图标库", + "Icons": "图标列表请通过 [传送门] 查看", + "P1": "通过引用扩展组件包", + "P2": "后添加样式表文件链接开启图标", + "Title": "Fluent System Icons" + }, + "BootstrapBlazor.Server.Components.Samples.Icons.IconPark.IconParks": { + "CopiedTooltipText": "拷贝成功", + "IconParkDescription": "已覆盖字节跳动商业化产品系所有平台,并被12个平台作为底层代码引入使用,保证了图标样式与认知的统一性", + "IconParkTitle": "字节跳动图标库", + "Icons": "图标列表请通过 [传送门] 查看", + "P1": "1. 引用扩展组件包后添加包内置样式文件开启图标", + "P2": "2. 开启样式隔离,编译后自动引用组件样式", + "P3": "请拷贝下方样式即可" + }, + "BootstrapBlazor.Server.Components.Samples.Icons.MaterialDesignIcons": { + "BaseUsageText": "Material Design 图标简单、现代、友好", + "Icons": "图标列表请通过 [传送门] 查看", + "P1": "通过引用扩展组件包", + "P2": "后添加样式表文件链接开启图标", + "Title": "MaterialDesign Icons" + }, + "BootstrapBlazor.Server.Components.Samples.Icons.OctIcon.OctIcons": { + "CopiedTooltipText": "拷贝成功", + "Icons": "图标列表请通过 [传送门] 查看", + "OctIconDescription": "Primer is a set of guidelines, principles, and patterns for designing and building UI at GitHub.", + "OctIconTitle": "Github 图标库", + "P1": "1. 引用扩展组件包后添加包内置样式文件开启图标", + "P2": "2. 开启样式隔离,编译后自动引用组件样式", + "P3": "请拷贝下方样式即可" + }, + "BootstrapBlazor.Server.Components.Samples.Icons.UniverIcon.UniverIcons": { + "CopiedTooltipText": "拷贝成功", + "Icons": "图标列表请通过 [传送门] 查看", + "P1": "1. 引用扩展组件包后添加包内置样式文件开启图标", + "P2": "2. 开启样式隔离,编译后自动引用组件样式", + "P3": "请拷贝下方样式即可", + "UniverIconDescription": "Icons used by Univer", + "UniverIconTitle": "Univer Icon 图标库" + }, + "BootstrapBlazor.Server.Components.Samples.IFrames": { + "IFrameDescription": "允许在页面中嵌入文档、视频和交互式媒体。 通过这样做可以在主页上显示一个辅助页面。 iFrame 元素允许包含来自其他源的内容,它可以在页面的任何地方集成内容。", + "IFrameNormalIntro": "通过 Src参数设置其他网站页面地址,内联其内容到本页面中", + "IFrameNormalTitle": "基础用法", + "IFrameTitle": "IFrame 内联框架" + }, + "BootstrapBlazor.Server.Components.Samples.ImageCroppers": { + "ImageCropperClearText": "清除", + "ImageCropperDisabledText": "禁用", + "ImageCropperEnableText": "启用", + "ImageCropperNormalIntro": "通过设置 Url 参数设置图片地址,可通过设置 ImageCropperOption.AspectRatio=16/9f 设置裁剪框比例,1 时为正方形", + "ImageCropperNormalText": "基础用法", + "ImageCropperReplaceText": "替换", + "ImageCropperResetText": "复位", + "ImageCropperRotateText": "旋转", + "ImageCropperRoundIntro": "通过设置 IsRound 参数设置裁剪方式为圆形", + "ImageCropperRoundText": "圆角", + "Title": "ImageCropper 图像裁剪" + }, + "BootstrapBlazor.Server.Components.Samples.ImageViewers": { + "ImagePreviewerButton": "显示 Previewer", + "ImagePreviewerIntro": "配合 Button 等其他组件,直接弹出 ImagePreviewer", + "ImagePreviewerTitle": "单独使用 ImagePreviewer", + "ImageViewerDescription": "图片容器,在保留原生 img 的特性下,支持懒加载,自定义占位、加载失败等", + "ImageViewerErrorTemplateCustom": "自定义", + "ImageViewerErrorTemplateIntro": "可通过设置 ErrorTemplate 开启错误模板功能,参数 Url 无法加载图片时显示此模板内容", + "ImageViewerErrorTemplateLoadFailed": "加载失败", + "ImageViewerErrorTemplateTitle": "加载失败", + "ImageViewerErrorTemplateUrlError": "Url 路径错误", + "ImageViewerNormalIntro": "加载并显示图片文件", + "ImageViewerNormalTips1": "object-fit: fill 填充 默认值 使图片拉伸填满整个容器, 不保证保持原有的比例", + "ImageViewerNormalTips2": "object-fit: contain 包含 保持原有尺寸比例缩放 保证整个图片都可以出现在容器中,因此此参数可能会在容器内留下空白", + "ImageViewerNormalTips3": "object-fit: cover 覆盖 保持原有尺寸比例缩放,宽度和高度至少有一个和容器一致(尺寸小的一致)因此此参数可能会让图片部分区域不可见", + "ImageViewerNormalTips4": "object-fit: none 无 保持原有尺寸比例,同时保持图片原始尺寸大小,多出的部分隐藏", + "ImageViewerNormalTips5": "object-fit: scale-down 降低 就好像依次设置了 nonecontain 最终呈现的是尺寸比较小的那个", + "ImageViewerNormalTitle": "基本用法", + "ImageViewerPlaceHolderCustom": "自定义", + "ImageViewerPlaceHolderDefault": "默认", + "ImageViewerPlaceHolderIntro": "可通过设置 ShowPlaceHolder 开启占位符功能,通过设置 PlaceHolderTemplate 自定义占位内容", + "ImageViewerPlaceHolderLoading": "加载中 ...", + "ImageViewerPlaceHolderTemplateIntro": "可通过设置 PlaceHolderTemplate 开启占位模板功能,未设置 Url 或者正在加载时显示此模板内容", + "ImageViewerPlaceHolderTemplateLoadingShow": "加载时显示", + "ImageViewerPlaceHolderTemplatePlaceholder": "占位模板", + "ImageViewerPlaceHolderTemplateTips1": "图片加载后浏览器默认会缓存,建议 F12 关闭缓存体验此功能", + "ImageViewerPlaceHolderTemplateTitle": "占位模板", + "ImageViewerPlaceHolderTemplateUrl": "未设置 Url", + "ImageViewerPlaceHolderTips1": "图片加载后浏览器默认会缓存,建议 F12 关闭缓存体验此功能", + "ImageViewerPlaceHolderTitle": "占位内容", + "ImageViewerPreviewListIntro": "可通过设置 PreviewList 开启预览大图的功能,设置 ZoomSpeed 控制滚动缩放时的速度", + "ImageViewerPreviewListTitle": "大图预览", + "ImageViewerTitle": "ImageViewer 图片", + "IntersectionObserverIntro": "通过设置 IsIntersectionObserver=\"true\" 开启懒加载特性,当图片在不可见区域时不加载图片,当图片即将可见时才开始加载图片", + "IntersectionObserverTitle": "懒加载" + }, + "BootstrapBlazor.Server.Components.Samples.InputGroups": { + "InputGroupsCheckboxIntro": "往 InputGroup 里面增加 Checkbox 或者 CheckboxList", + "InputGroupsCheckboxTitle": "复选框组合", + "InputGroupsDateTimePickerIntro": "往 InputGroup 里面增加 DateTimePicker 或者 DateTimeRange", + "InputGroupsDateTimePickerTitle": "DateTimePicker/Range 组合", + "InputGroupsDescription": "Input 的前后可以增加与一些标签和按钮,拼成一组。其排版格式紧凑,非常适合单行多列的场景,比如搜索等。", + "InputGroupsDropdownIntro": "往 InputGroup 里面增加 Dropdown", + "InputGroupsDropdownTitle": "Dropdown 组合", + "InputGroupsMultipleDistance": "距离", + "InputGroupsMultipleIntro": "InputGroup 里面可以增加很多组件", + "InputGroupsMultipleTitle": "增加多个组件", + "InputGroupsNormalIntro": "在 Input 前增加标签,或者在 Input 后增加 Button", + "InputGroupsNormalTitle": "基础用法", + "InputGroupsNormalUserName": "用户名", + "InputGroupsRadioIntro": "往 InputGroup 里面增加 RadioList", + "InputGroupsRadioTitle": "单选框组合", + "InputGroupsSelectIntro": "往 InputGroup 里面增加 Select", + "InputGroupsSelectTitle": "下拉框组合", + "InputGroupsSlideButtonIntro": "往 InputGroup 里面增加 SlideButton", + "InputGroupsSlideButtonTitle": "SlideButton 组合", + "InputGroupsStatusText1": "复选项目", + "InputGroupsSwitchIntro": "往 InputGroup 里面增加 Switch", + "InputGroupsSwitchTitle": "Switch 组合", + "InputGroupsTitle": "InputGroup 组件", + "InputGroupsValidateFormIntro": "内置到 ValidateForm 中使用", + "InputGroupsValidateFormTitle": "验证表单中", + "InputGroupsWidthIntro": "通过设置 Width 参数,自定义标签宽度", + "InputGroupsWidthTitle": "自定义宽度" + }, + "BootstrapBlazor.Server.Components.Samples.InputNumbers": { + "InputNumbersColorDescription1": "显示按钮", + "InputNumbersColorDescription2": "无按钮", + "InputNumbersColorIntro": "设置 Color 参数来自定义按钮颜色", + "InputNumbersColorTitle": "颜色", + "InputNumbersDateTypeIntro": "本组件采用泛型支持 int short long float double decimal 基础数据类型", + "InputNumbersDateTypeTitle": "数据类型", + "InputNumbersDescription": "仅允许输入标准的数字值,支持自定义范围及其他高级功能", + "InputNumbersDisabledIntro": "设置 IsDisabled 属性值为 true 时,组件禁止输入", + "InputNumbersDisabledTitle": "禁用", + "InputNumbersNormalIntro": "Number 数值类型显示文本框,移动端自动弹出数字键盘", + "InputNumbersNormalTitle": "基础用法", + "InputNumbersNullableIntro": "绑定可为空数据类型时,组件允许空字符串,输入非法数据如 1+2+3e 时组件 UI 值为空字符串", + "InputNumbersNullableTitle": "可为空数据类型", + "InputNumbersRangeIntro": "设置 Max Min 来控制数值区间范围 1-10", + "InputNumbersRangeTitle": "区间限制用法", + "InputNumbersShowButtonDescription": "本例设置了最大值 10 最小值 0", + "InputNumbersShowButtonIntro": "设置 ShowButton 参数来控制是否显示增加或减少的按钮", + "InputNumbersShowButtonTitle": "控制按钮", + "InputNumbersStep0.1": "步长设置为 0.1", + "InputNumbersStep1": "步长默认为 1", + "InputNumbersStep10": "步长设置为 10", + "InputNumbersStepIntro": "设置 Step 参数来控制增加或减少的步长", + "InputNumbersStepTitle": "自定义步长", + "InputNumbersTitle": "InputNumber 组件", + "InputNumbersUseInputEventIntro": "组件使用 OnInput 事件进行数值更新", + "InputNumbersUseInputEventTitle": "OnInput 事件", + "InputNumbersValidateFormDescription": "前置标签显式规则与 BootstrapInput 组件一致 [传送门]", + "InputNumbersValidateFormDivider1": "双向绑定显示标签", + "InputNumbersValidateFormDivider2": "双向绑定不显示标签", + "InputNumbersValidateFormDivider3": "自定义 DisplayText", + "InputNumbersValidateFormInputText": "自定义", + "InputNumbersValidateFormIntro": "组件双向绑定时会根据条件自动判断是否显示标签文字", + "InputNumbersValidateFormTitle": "显示标签" }, - "BootstrapBlazor.Server.Components.Samples.Table.TablesHeader": { - "TablesHeaderTitle": "表头分组功能", - "TablesHeaderDescription": "数据结构比较复杂的时候,可使用多级表头来展现数据的层次关系", - "TablesHeaderNormalTitle": "基础用法", - "TablesHeaderNormalIntro": "设置 MultiHeaderTemplate 模板即可", - "TablesHeaderNormalTips1": "通过设置 ShowMultiFilterHeader 值,来控制是否显示过滤行头", - "TablesHeaderNormalTips2": "注意细节,首列单元格合并后导致最后一行表头第一列无单元格,所以需要自行设置样式 border-bottom 与其他单元格一致", - "TablesHeaderNormal_Time": "时间", - "TablesHeaderNormal_Info": "个人信息", - "TablesHeaderNormal_Name": "个人姓名", - "TablesHeaderNormal_Address": "个人地址" + "BootstrapBlazor.Server.Components.Samples.Inputs": { + "ClearableIntro": "通过设置 Clearable=\"true\" 参数,使组件获得焦点或者鼠标悬浮时显示一个 清除 小按钮", + "ClearableTitle": "清除", + "InputLabelsText": "自定义标签", + "InputsBaseUsage": "基础用法", + "InputsColorIntro": "通过设置 Color 更改文本框边框颜色", + "InputsColorTitle": "颜色", + "InputsDescription": "通过鼠标或键盘输入字符", + "InputsDisabledIntro": "设置 IsDisabled 属性值为 true 时,组件禁止输入", + "InputsDisabledTitle": "禁用", + "InputsFormatStringIntro": "设置 FormatString 属性值为 yyyy-MM-dd 时,组件显示的时间格式为年月日", + "InputsFormatStringSetting": "设置", + "InputsFormatStringTips": "BootstrapInput 组件绑定 byte[] 数组,格式化成 base64 编码字符串示例", + "InputsFormatStringTitle": "自定义格式", + "InputsGenericBindValue": "绑定值", + "InputsGenericIntro": "BootstrapInput 组件双向绑定值是泛型的,本例中双向绑定一个 int 类型数值", + "InputsGenericTitle": "泛型绑定", + "InputsKeyboardIntro": "使用 OnEnterAsync OnEscAsync 回调委托对 Enter ESC 按键进行回调响应", + "InputsKeyboardLog": "按键触发 当前文本框值", + "InputsKeyboardTips1": "请按键盘 Enter 或者 Esc 进行测试", + "InputsKeyboardTips2": "执行 @ref.SelectAllTextAsync() 选择输入框内所有字符串", + "InputsKeyboardTitle": "键盘响应", + "InputsLabelsDescription": "BootstrapInput 组件开启双向绑定时,会根据绑定的 Model 属性值去自动获取 Display/DisplayName 标签值并且显示为前置 Label,通过 DisplayText 属性可以自定义显示前置标签,或者通过 ShowLabel 属性关闭前置标签是否显示", + "InputsLabelsDivider1": "自定义标签", + "InputsLabelsDivider2": "占位", + "InputsLabelsDivider3": "不占位", + "InputsLabelsIntro": "绑定组件内变量,数据自动同步", + "InputsLabelsTips1": "设置 DisplayText 值为 自定义标签", + "InputsLabelsTips3": "无论是否设置 DisplayText 值,当 ShowLabelfalse 时均不显示", + "InputsLabelsTitle": "双向绑定数据", + "InputsLabelsTps2": "无论是否设置 DisplayText 值,当 ShowLabeltrue 时均显示", + "InputsNormalDescription": "可通过设置 IsAutoFocus 是否自动获取焦点,多个文本框设置自动获取焦点时最后执行的组件将会获得焦点", + "InputsNormalIntro": "提供基本的文本录入组件", + "InputsOnInputIntro": "使用 UseInputEvent=\"true\" 文本框的值更改时触发,用于逐键响应场合", + "InputsOnInputTitle": "文本框的值更改时触发", + "InputsPassword2Intro": "使用 BootstrapPassword 组件", + "InputsPassword2Title": "密码框", + "InputsPasswordDescription": "为了支持更多的文本框属性本组件可以直接写入 type='email' type=number' type='phone'html5 新标准支持的全部属性值,组件未设置 type 值时使用默认的 type='text'", + "InputsPasswordIntro": "通过设置属性 type 值为 password 使输入文字后以 * 进行屏蔽的密码输入框", + "InputsPasswordTitle": "密码框", + "InputsPlaceholderIntro": "显示组件内变量值", + "InputsPlaceholderSpan": "单向绑定", + "InputsPlaceholderTitle": "单向绑定数据", + "InputsTitle": "Input 输入框", + "InputsTrimIntro": "使用 IsTrim=\"true\" 可在输入内容的时候自动修剪空白", + "InputsTrimTitle": "修剪空白", + "InputsValidateFormIntro": "根据自定义验证规则进行数据有效性检查并自动提示", + "InputsValidateFormTips1": "使用双向绑定时会自动寻找资源文件中 Key 值为 {FieldName}.PlaceHolder 对应值作为 placeholder 显示,本例中 placeholder 值为资源文件中 Name.PlaceHolder 键对应值 required/不可为空", + "InputsValidateFormTitle": "客户端验证", + "IsSelectAllTextOnEnterLabel": "回车时全选", + "IsSelectAllTextOnFocusLabel": "获得焦点时全选", + "NormalPlaceHolder": "请输入 ...", + "OnInputDescription": "设置参数 UseInputEvent 值为 true 后,每次按下键盘都会触发 ValueChange 事件", + "PlaceHolder": "请输入 ...", + "TestName": "张三", + "TrimDescription": "设置参数 IsTrim 值为 true 后,组件内的前后空格将会被裁减" }, - "BootstrapBlazor.Server.Components.Samples.SelectTrees": { - "SelectTreesTitle": "树状选择器 SelectTree", - "SelectTreesDescription": "下拉框内呈现树状数据结构,供选择", - "SelectTreesNormalTitle": "普通用法", - "SelectTreesNormalIntro": "选中节点", - "SelectTreesDisableTitle": "禁用", - "SelectTreesDisableIntro": "设置 IsDisabled 使组件禁用", - "SelectTreesBindingTitle": "双向绑定", - "SelectTreesBindingIntro": "绑定组件内变量,数据自动同步", - "SelectTreesClientValidationTitle": "客户端验证", - "SelectTreesClientValidationIntro": "组件内置 ValidateForm 可设置验证规则", - "SelectTreesEditTitle": "可输入", - "SelectTreesEditIntro": "通过设置 IsEditable=\"true\" 可设置下拉框选择后文本框可输入", - "SelectTreesEditDesc": "设置 IsEditable=\"true\" 后,文本框显示的内容为 TreeView 选中节点的 Value 值,输入值可以不在 Items 集合中", - "SelectTreesIsPopoverTitle": "悬浮弹窗", - "SelectTreesIsPopoverIntro": "通过设置 IsPopover 参数,组件使用 popover 渲染 UI 防止由于父容器设置 overflow: hidden; 使弹窗无法显示问题", - "SelectTreesClientValidationButtonText": "提交" + "BootstrapBlazor.Server.Components.Samples.IntersectionObservers": { + "IntersectionObserverBaseUsage": "基础用法", + "IntersectionObserverDescription": "通过滚动使元素可见使触发组件回调,多用于数据懒加载功能", + "IntersectionObserverLoadDesc1": "通过设置 Threshold=\"1.0\" 约束正在加载指示符完全可见时,执行加载更多操作", + "IntersectionObserverLoadDesc2": "通过设置 AutoUnobserve=\"false\" 保证始终检测正在加载指示符可见性,防止可见后自动移除检测", + "IntersectionObserverLoadDesc3": "通过设置 OnLoadMoreAsync 方法模拟网络延时 1s", + "IntersectionObserverLoadIntro": "滚动到底后,出现加载更多指示,通知后台加载数据", + "IntersectionObserverLoadTitle": "触底加载", + "IntersectionObserverNormalDescription": "本例加载 100 张图片,不可见图片加载默认图片(缓存图片性能高),当滚动到可见区域时,加载真实图片", + "IntersectionObserverNormalIntro": "通过设置 Root RootMargin Threshold 参数值,监听元素与根元素交叉变化", + "IntersectionObserverThresholdDesc": "拖动下方 div 滚动条,可观察数据变化", + "IntersectionObserverThresholdIntro": "通过设置 Threshold 后通过回调参数 IntersectionObserveEntry 属性 IntersectionRatio 获得观察元素与根元素交叉率", + "IntersectionObserverThresholdTitle": "阈值变化观察", + "IntersectionObserverTitle": "IntersectionObserver 交叉观察器", + "IntersectionObserverVisibleDesc": "本例中设置 Threshold=\"1\" 即触发条件为视频完全可见时播放,否则自动暂停", + "IntersectionObserverVisibleIntro": "通过设置 Threshold 调整触发条件", + "IntersectionObserverVisiblePauseLabel": "视频已暂停", + "IntersectionObserverVisiblePlayLabel": "视频已开始播放", + "IntersectionObserverVisibleTitle": "触发阈值", + "LoadMoreDesc": "

        本例中通过设置 CanLoadingtrue 显示加载指示符,加载完成后设置为 false 显示 没有更多数据 提示文本

        • 通过 LoadingTemplate 自定义加载更多的 UI
        • 通过 NoMoreTemplate 自定义没有更多数据时显示的 UI
        • 通过 NoMoreText 参数设置没有更多加载项时显示的指示文本
        • ", + "LoadMoreIntro": "通过设置 LoadMore 组件参数 CanLoading 控制加载状态,OnLoadMoreAsync 回调方法加载更多数据", + "LoadMoreTitle": "LoadMore 组件" }, - "BootstrapBlazor.Server.Components.Samples.Table.TablesDetailRow": { - "TablesDetailRowTitle": "显示明细行功能", - "TablesDetailRowDesc": "用于展示父子关系表数据", - "DetailRowTemplateTitle": "简单应用", - "DetailRowTemplateIntro": "通过设置 DetailRowTemplate 模板设置明细行内容", - "DetailRowTemplateP": "明细行内显示绑定行的另外一个字段 学历 以普通文字形式呈现。支持双击展开明细行的功能,双击回调仅 PC 端支持,请在PC 端测试。", - "DetailRowTemplateP1": "通过 IsDetails 参数可以实现动态切换是否显示明细行功能", - "DetailRowTemplate2Title": "嵌套 Table 组件应用", - "DetailRowTemplate2Intro": "通过设置 DetailRowTemplate 模板设置明细行为子表数据", - "DetailRowTemplate2P": "明细行内嵌套另外一个 Table 组件,由于每行都要关联子表数据,出于性能的考虑,此功能采用 懒加载 模式,即点击展开按钮后,再对嵌套 Table 进行数据填充,通过 ShowDetailRow 回调委托可以控制每一行是否显示明细行,本例中通过 Complete 属性来控制是否显示明细行,可通过翻页来测试本功能", - "HeightTitle": "固定表头开启明细行功能", - "HeightIntro": "通过设置 Height 固定表头后模板设置明细行内容", - "HeightP": "本例中固定表头后,再开启明细行功能", - "DetailRowTemplate3Title": "明细行中使用 Tab 组件", - "DetailRowTemplate3Intro": "通过设置 DetailRowTemplate 模板设置明细行内容", - "DetailRowTemplate3P": "本例中明细行内使用 Tab 组件再次将数据分割成两个 TabItem 内容,进行再次数据拆分演示", - "DynamicTitle": "动态数据明细行", - "DynamicIntro": "数据源为 DataTable", - "EducationText": "学历:", - "DetailTextTrue": "关闭明细行", - "DetailTextFalse": "开启明细行", - "TabItemText": "关联数据", - "DetailRowTemplateIsAccordion": "手风琴效果" + "BootstrapBlazor.Server.Components.Samples.Ips": { + "IpNormalIntro": "分段录入并显示 ip 地址,例如:192.168.1.1", + "IpNormalTitle": "基础用法", + "IpSubTitle": "IP 地址组件是一个用于输入和验证 IP 地址的可重用组件", + "IpTitle": "IpAddress 地址组件", + "IsDisabledIntro": "通过设置 IsDisabled 使组件处于不可用状态", + "IsDisabledTitle": "禁用" }, - "BootstrapBlazor.Server.Components.Samples.Table.Tables": { - "ButtonAddColumnText": "增加列", - "ButtonRemoveColumnText": "移除列", - "TableBaseTitle": "Table 表格", - "TableBaseDescription": "用于展示多条结构类似的数据,可对数据进行排序、筛选、对比或其他自定义操作。", - "TableBaseExplain1": "Table 组件已经支持移动端适配,当屏幕小于 RenderModeResponsiveWidth 设定值时,组件渲染成卡片式方便查看数据,其默认值为 768", - "TableBaseExplain2": "Table 组件有一个 RenderMode 属性,其默认值为 Auto 其他值定义如下", - "TableBaseTips1": "Auto: 当屏幕小于 768px 时使用 CardView 模式,否则使用 Table 模式", - "TableBaseTips2": "Table: 表格渲染模式,使用 table 元素进行数据渲染,适合宽屏幕下查看数据", - "TableBaseTips3": "CardView:卡片式渲染模式,使用 div 元素进行数据渲染,适合窄屏幕下查看数据", - "TableBaseTips4": "TableColumn 必须使用 @bind-Field 绑定了模型属性,模型属性为复杂类型时,必须初始化此属性;想要绑定只读属性时,先绑定其他可写属性后利用模板显示只读属性", - "TableBaseNormalTitle": "基础表格", - "TableBaseNormalIntro": "基础的表格展示用法。", - "TableBaseNormalDescription": "点击按钮时更新数据源 Items 组件 Table 显示数据自动更新", - "TableBaseStripedTitle": "带斑马纹表格", - "TableBaseStripedIntro": "使用带斑马纹的表格,可以更容易区分出不同行的数据。设置 IsStriped=true 即可", - "TableBaseBorderedTitle": "带边框表格", - "TableBaseBorderedIntro": "通过设置 IsBordered 属性,增加表格表框效果", - "TableBaseSizeTitle": "紧凑型表格", - "TableBaseSizeIntro": "通过设置 TableSize 属性,设定表格内间隙变小适合大数据展示", - "TableBaseSizeDescription": "TableSize 为表格大小枚举类型,默认值为 Normal,紧奏型值为 Compact", - "TableBaseHeaderStyleTitle": "表头样式", - "TableBaseHeaderStyleIntro": "通过设置 HeaderStyle 属性", - "TableBaseHeaderStyleDescription": "HeaderStyle 为表格表头样式,默认值为 None", - "AttributeTitle": "Table 属性", - "TableBaseNormalRefreshText": "刷新", - "TableBaseHeaderStyleMode": "表头模式" + "BootstrapBlazor.Server.Components.Samples.JSRuntimeExtensions": { + "EvalAttr": "调用 Eval 方法", + "EvalIntro": "通过 Eval 函数,在当前作用域内动态运行 JavaScript 代码。", + "EvalTitle": "Eval", + "FunctionAttr": "调用 Function 方法", + "FunctionIntro": "通过 Function 函数,在全局作用域内动态运行 JavaScript 代码。", + "FunctionTitle": "Function", + "IsMobileAttr": "判断当前设备是否为移动设备", + "IsMobileIntro": "通过正则表达式判断 userAgent,表示当前设备是否为移动设备", + "IsMobileTitle": "IsMobile", + "JSTips": "使用前,先按照以下代码导入模块。", + "OpenUrlAttr": "在特定窗口打开连接", + "OpenUrlIntro": "在特定窗口打开连接", + "OpenUrlTips": "默认为:", + "OpenUrlTitle": "OpenUrl" }, - "BootstrapBlazor.Server.Components.Samples.Table.TablesColumn": { - "TablesColumnTitle": "Table 表格", - "TablesColumnDescription": "用于展示多条结构类似的数据,可对数据进行排序、筛选、对比或其他自定义操作。", - "ColumnTextTitle": "自定义列名", - "ColumnTextIntro": "通过设置 Text 增加列头显示名称", - "ColumnTextDesc": "表格组件 TableColumns 模板中的字段采用的是根据绑定模型的 DisplayName 标签值来自动显示的,如果要自定义显示名称请设置 Text 属性", - "SelectTitle": "带选择列表格", - "SelectIntro": "通过设置 IsMultipleSelect=\"true\" 增加表格第一列为选择列,设置 ShowRowCheckboxCallback 属性确定行是否显示选择框,本例中通过 Complete 属性来控制是否显示行的选择框", - "ShowCheckboxTitle": "带显示文字的选择列表格", - "ShowCheckboxIntro": "通过设置 ShowCheckboxText=true 表格第一列显示文字为 选择", - "DisabledTitle": "选择框列", - "DisabledIntro": "RowTemplate 内部组件 TableCell 设置 Checkbox 并设置相关数据绑定即可,本示例中通过数据绑定将选择框组件与值进行绑定", - "FormatterTitle": "自定义列数据格式", - "FormatterIntro": "列绑定时通过指定 FormatString 或者 Formatter 回调委托来实现单元格数值格式化", - "FormatterP1": "本例中列 DateTime 值根据 FormatString 将值格式化为 yyyy-MM-dd 年月日格式", - "FormatterP2": "本例中列 Count 值根据 Formatter 将值格式化为 0.00 保留两位小数格式", - "AlignTitle": "列数据对齐方式", - "AlignIntro": "列绑定时通过指定 Align 属性设置对齐方式", - "AlignP1": "本例中列 DateTime 列设置为居中对齐 Alignment.Center", - "AlignP2": "本例中列 Count 列设置为右侧对齐 Alignment.Right", - "ShowCopyColumnTitle": "允许拷贝列数据", - "ShowCopyColumnIntro": "通过设置 ShowCopyColumn 设置表格列允许拷贝整列数据", - "ShowCopyColumnDesc": "可以通过设置 ShowCopyColumnTooltip CopyColumnTooltipText CopyColumnCopiedTooltipText 等设置微调拷贝列数据图标的 Tooltip 相关参数", - "ShowColumnToolboxTitle": "列工具栏", - "ShowColumnToolboxIntro": "通过设置列 ToolboxTemplate 参数,开启列工具栏按钮", - "BindComplexObjectTitle": "绑定复杂类型和表达式", - "BindComplexObjectIntro": "当绑定复杂类型时,无论绑定的对象集合是否为空,都要求 TItem 提供无参构造函数,否则要求通过 CreateItemCallback 提供构造回调;当绑定复杂表达式时,要求绑定时该表达式不得引发 NullReferenceException 异常,如果业务逻辑无法避免此问题,建议使用 Template 进行处理", - "BindComplexObjectP1": "本例中,复杂类型 ComplexFoo 不具备无参构造函数,需通过 CreateItemCallback 提供 ComplexFoo 的构造回调", - "BindComplexObjectP2": "本例中,我们希望将复杂表达式 context.Company.Name 绑定到列 CompanyName 上,但是业务逻辑无法确保绑定时属性 Company 的值不为 null 。因此可以先绑定简单表达式,再通过列模板 Template 进行处理", - "BindComplexObjectButtonText": "设置公司", - "ComplexFooDateTime": "日期", - "ComplexFooName": "姓名", - "ComplexFooAddress": "地址", - "ComplexFooAge": "年龄", - "ComplexFooCompany": "公司", - "OnColumnCreatingTitle": "设置当前列属性", - "OnColumnCreatingIntro": "通过指定 OnColumnCreating回调,对列集合进行数据二次更改", - "OnColumnCreatingP1": "通过 OnColumnCreating 回调方法中的参数既可以对现有列进行扩展:", - "OnColumnCreatingP2": "也可以根据自己的业务逻辑实现一些特殊功能;本例中通过回调函数对 Name 列进行了 只读 设置", - "OnColumnCreatingLi1": "根据业务逻辑移除一些列的显示", - "OnColumnCreatingLi2": "根据业务逻辑对特定列进行组件渲染,对 ComponentType ComponentParameters 进行赋值操作", - "AdvanceTitle": "实战示例", - "AdvanceIntro": "通过显示模板 Template 对各列进行自定义渲染", - "CustomColText1": "自定义列名1", - "CustomColText2": "自定义列名2", - "CustomColText3": "自定义列名3", - "ColumnIgnoreTitle": "列忽略", - "ColumnIgnoreIntro": "通过设置 Ignore 参数控制列是否渲染,此参数与 Visible 不同,设置 Visible=\"false\" 后不显示列可通过 ShowColumnList=\"true\" 在列表中勾选并显示", - "ColumnIgnoreButtonText": "忽略/不忽略", - "ColumnOrderTitle": "列顺序", - "ColumnOrderIntro": "通过设置 TableColumnOrder 参数进行设置顺序", - "ShowMoreButtonTitle": "更多按钮", - "ShowMoreButtonIntro": "通过设置 ShowMoreButton 参数使行扩展按钮出现 更多 按钮,通过设置 MoreButtonDropdownTemplate 模板自定义下拉菜单选项,通过这样的设计大大减少行空间占用", - "ShowMoreButtonDesc": "MoreButtonDropdownTemplate 上下文 context 为当前行实例", - "MoreButtonTextDesc": "通过 MoreButtonText 设置按钮显示文本", - "MoreButtonColorDesc": "通过 MoreButtonColor 设置按钮颜色" + "BootstrapBlazor.Server.Components.Samples.Labels": { + "EditorFormLabelAlignCenter": "居中对齐
          通过 LabelAlign=\"Alignment.Center\" 设置标签居中对齐
          ", + "EditorFormLabelAlignRight": "右对齐
          通过 LabelAlign=\"Alignment.Right\" 设置标签右对齐
          ", + "LabelsDescription": "本套组件中有 ValidateForm EditorForm 以及多种继承 ValidateBase<TValue>表单组件,这些组件中有一套特殊的显示前置标签逻辑,现在我们统一的梳理一下:", + "LabelsDescriptionTips1": "ValidateForm 组件是 可验证的 表单组件,此组件内的表单组件会自动进行数据合规性检查,如果数据不合规将会阻止 提交(Submit) 动作,是数据提交中使用最最最频繁的组件", + "LabelsDescriptionTips2": "EditorForm 组件是普通的表单组件,此组件绑定 Model 后即可自动生成整个表单,大大减少重复性编码,外面套上 ValidateForm 即可开启 数据合规性检查 非常方便、简洁、高效", + "LabelsDescriptionTips3": "以 BootstrapInput 输入框组件为例,阐述一下是否显示 Label 逻辑", + "LabelsEditorFormDescription1": "不显示标签
          设置 ShowLabel=\"false\",组件内的所有表单组件 不显示 标签
          ", + "LabelsEditorFormDescription2": "显示标签
          未设置 EditorForm 组件的 ShowLabel 属性等同于设置为 true,所有组件 显示 标签
          ", + "LabelsEditorFormIntro": "未套 ValidateForm 中使用", + "LabelsEditorFormTitle": "EditorForm 中使用", + "LabelsNormalDescription": "未使用双向绑定时", + "LabelsNormalDescription2": "使用双向绑定时", + "LabelsNormalGroupBox1Tips1": "第一个文本框未进行任何设置,不显示标签", + "LabelsNormalGroupBox1Tips2": "第二个文本框设置 ShowLabel='true' DisplayText='' 显示无内容的占位标签", + "LabelsNormalGroupBox1Tips3": "第三个文本框设置 ShowLabel='true' DisplayText='Name' 显示设置的内容标签", + "LabelsNormalGroupBox1Tips4": "第四个文本框设置 ShowLabel='true' DisplayText='@@null' 显示无内容的占位标签", + "LabelsNormalGroupBox1Title": "未双向绑定", + "LabelsNormalGroupBox2Tips1": "第一个文本框设置 @bind-Value='Dummy.Name',不显示标签", + "LabelsNormalGroupBox2Tips2": "第二个文本框设置 @bind-Value='Dummy.Name' ShowLabel='true' DisplayText='@Localizer[nameof(Foo.Address)]' 显示设置的内容", + "LabelsNormalGroupBox2Tips3": "第三个文本框设置 @bind-Value='Dummy.Name' ShowLabel='true' DisplayText='' 显示无内容占位标签", + "LabelsNormalGroupBox2Tips4": "第四个文本框设置 @bind-Value='Dummy.Name' ShowLabel='true' DisplayText='@null' 显示资源文件机制下的标签内容 Label", + "LabelsNormalGroupBox2Title": "双向绑定", + "LabelsNormalIntro": "适用于数据录入", + "LabelsNormalTips1": "默认不会显示 Label", + "LabelsNormalTips2": "通过 ShowLabel 属性进行控制是否显示", + "LabelsNormalTips3": "设置 DisplayText 时显示内容", + "LabelsNormalTips4": "未设置时渲染一个无内容的 label 组件进行占位", + "LabelsNormalTitle": "单独使用", + "LabelsRowLabelWidthIntro": "通过设置样式变量 --bb-row-label-width 控制标签宽度", + "LabelsRowLabelWidthTitle": "样式设置标签宽度", + "LabelsTips": "ShowLabel 的逻辑即就近原则,离自身越近的设置生效,如表单组件内置到 ValidateForm 组件中,即使 ValidateForm 设置 ShowLabel=true,表单组件自身设置 ShowLabel=false 时,标签最终结果为 不显示", + "LabelsTitle": "组件标签", + "LabelsValidateForm1Description1": "显示标签
          未设置 EditorForm 组件的 ShowLabel 属性,未设置时等同于设置为 ShowLabel=\"true\",所有组件 显示 标签
          ", + "LabelsValidateForm1Description2": "不显示标签
          设置 ShowLabel=\"false\",组件内的所有表单组件 不显示 标签
          ", + "LabelsValidateForm1Intro": "内置 ValidateForm 中使用", + "LabelsValidateForm1Title": "EditorForm 内置 ValidateForm 中使用", + "LabelsValidateForm2Description1": "显示标签
          未设置 EditorForm 组件的 ShowLabel 属性,未设置时等同于设置为 true,所有组件 显示 标签
          ", + "LabelsValidateForm2Description2": "不显示标签
          设置 ShowLabel=\"false\",组件内的所有表单组件 不显示 标签
          ", + "LabelsValidateForm2Description3": "显示标签
          设置样式 form-inline,组件内的所有表单组件标签前置
          ", + "LabelsValidateForm2Intro": "默认自动开启显示标签", + "LabelsValidateForm2Title": "ValidateForm 中使用", + "LabelsWidthCode1": "如上代码所示, 根据就近原则最终取值 180", + "LabelsWidthDescription": "组件 ValidateForm EditorForm BootstrapLabelSetting ValidateForm 均可以设置标签宽度值,组件采用 就近原则 来确定最终值", + "LabelsWidthIntro": "通过设置变量 LabelWidth 控制标签宽度", + "LabelsWidthTitle": "参数设置标签宽度", + "ValidateFormAlignCenter": "居中对齐
          通过设置样式 form-inline-center 标签居中对齐
          ", + "ValidateFormAlignRight": "右对齐
          通过设置样式 form-inline-end 标签右对齐
          " }, - "BootstrapBlazor.Server.Components.Samples.Table.TablesColumnDrag": { - "TablesColumnTitle": "Table 表格", - "TablesColumnDescription": "用于展示多条结构类似的数据,可对数据进行排序、筛选、对比或其他自定义操作。", - "AllowDragOrderTitle": "允许拖动列标题调整表格列顺序", - "AllowDragOrderIntro": "通过指定 AllowDragColumn 设置表格列允许拖动列标题调整表格列顺序", - "AllowDragOrderDesc": "

          在列标题上按下鼠标拖动到其他列标题位置可将该列调整至目标列之前,但 Table 组件内置的列如明细行列、行号列、选择列、操作列等不可被调整

          本示例通过设置 ClientTableName 参数开启了本地化存储,拖动调整顺序后,可刷新页面,列顺序是保持上次状态的

          通过设置 ColumnOrderCallback 回调方法可以实现服务器端列顺序持久化

          " + "BootstrapBlazor.Server.Components.Samples.LayoutPages": { + "H1": "整页面级别组件", + "P1": "通过内置组件", + "P10": "多标签", + "P11": "模式后,如果有", + "P12": "Razor 组件", + "P13": "在额外的程序集中时,请正确设置", + "P14": "属性值,以便标签组件内路由正确解析,相关文档", + "P15": "传送门", + "P16": "布局调整", + "P17": "显示页脚", + "P18": "多标签", + "P19": "单页", + "P2": "进行整页面布局,可通过", + "P20": "固定调整", + "P21": "固定标签", + "P22": "固定页头", + "P23": "固定页脚", + "P24": "收缩调整", + "P25": "请点击", + "P26": "中的 按钮", + "P27": "高度调整", + "P28": "视图高度", + "P29": "Tab 测试", + "P3": "或者安装", + "P30": "点击", + "P31": "测试", + "P32": "测试", + "P33": "按钮后,会增加一个新的标签页", + "P34": "以代码的形式导航到新标签页", + "P35": "导航", + "P4": "项目插件选择", + "P5": "Bootstrap Blazor 项目模板", + "P6": "即可自动生成,详细文档请点击", + "P7": "传送门", + "P8": "特别注意", + "P9": "组件开启" }, - "BootstrapBlazor.Server.Components.Samples.Table.TablesColumnResizing": { - "TablesColumnTitle": "Table 表格", - "TablesColumnDescription": "用于展示多条结构类似的数据,可对数据进行排序、筛选、对比或其他自定义操作。", - "WidthTitle": "自定义各列宽度", - "WidthIntro": "通过设置 TableColumn Width 属性,来控制列宽度,行内按钮操作列宽度由 ExtendButtonColumnWidth 属性控制", - "WidthP1": "本例中继续上一个例子,实现了自定义四个功能按钮,并且扩展到行内,点击各个按钮时均有相对应的回调委托方法,TableToolbarButton 采用的是 Delegate 方式完成数据交换,点击工具栏按钮时设置 OnClick 委托方法即可获取表内选中的行数据集合", - "WidthP2": "RowButtonTemplate 按钮模板默认将自定义按钮放置到内置按钮后面,如需要自定义按钮放置到内置按钮前请使用 BeforeRowButtonTemplate 模板", - "WidthP3": "通过设置按钮 IsShow 参数来控制是否显示按钮", - "AllowResizingTitle": "允许列调整", - "AllowResizingIntro": "通过指定 AllowResizing 设置表格列允许调整宽度", - "AllowResizingDesc": "注意: Table 父容器有有效宽度值时 Table 才会出现滚动条,可通过设置 ClientTableName 参数开启本地化存储列宽功能,即通过拖拽后列宽下次打开时会保持,通过设置 ShowColumnWidthTooltip 参数控制是否显示列宽提示栏,默认 false", - "WidthButtonText1": "明细", - "WidthButtonText2": "编辑", - "WidthButtonText3": "权限", - "WidthButtonText4": "审批", - "WidthConfirmButtonText": "确认", - "CustomerButtonTitle": "自定义按钮处理方法", - "CustomerButtonContent": "通过不同的函数区分按钮处理逻辑,参数 Items 为 Table 组件中选中的行数据集合,当前选择数据 {0} 条", - "OnRowButtonClickContent": "通过不同的函数区分按钮处理逻辑,参数 Item 为当前行数据" + "BootstrapBlazor.Server.Components.Samples.Layouts": { + "LayoutsAppIntro": "实际项目中的例子", + "LayoutsAppTips1": "实际使用过程中,侧边栏一般有两种用法", + "LayoutsAppTips2": "侧边栏充满整个屏幕,当菜单总体高度超出屏幕后出现滚动条", + "LayoutsAppTips3": "侧边栏不做处理高度由内容自动撑开", + "LayoutsAppTips4": "由于存在多种运用方式,所以本组件未进行封装,由自己决定如何进行布局,下面是实际运用中的实战示例", + "LayoutsAppTips5": "为了方便大家学习与比较以下实战示例中尽量使用 style 内联样式", + "LayoutsAppTips6": "本例点击左侧菜单展开后出现滚动条", + "LayoutsAppTips7": "右侧面板中可用区域默认为全部,适用于带 Tab 组件的布局,本例中为了美观 Main 模板中内置了一个 div 并且设置样式为 style='padding: 1rem;'", + "LayoutsAppTips8": "本例点击左侧菜单展开后不出现滚动条会撑开父容器高度", + "LayoutsAppTips9": " Layout 组件与 Tab 组件配合使用实战示例请参阅 Tab 组件", + "LayoutsAppTitle": "实战应用", + "LayoutsCustomPercentIntro": "通过设置 SideWidth 属性控制侧边栏宽度,支持百分比写法,设置 0 时关闭设置宽度功能,采用内部子控件撑满宽度特性", + "LayoutsCustomPercentTitle": "自定义侧边栏宽度支持百分比", + "LayoutsDemosTitle": "常见页面布局", + "LayoutsDescription1": "用于布局的容器组件,方便快速搭建页面的基本结构:", + "LayoutsDescription1_Container": "外层容器。当子元素中包含 HeaderFooter 时,全部子元素会垂直上下排列,否则会水平左右排列。", + "LayoutsDescription1_Footer": "底栏容器", + "LayoutsDescription1_Header": "顶栏容器", + "LayoutsDescription1_Main": "主要区域容器", + "LayoutsDescription1_Side": "侧边栏容器", + "LayoutsDescription2": "组件概述", + "LayoutsDescription2_Footer": "底部布局,自带默认样式,其下可嵌套任何元素", + "LayoutsDescription2_Header": "顶部布局,自带默认样式,其下可嵌套任何元素", + "LayoutsDescription2_Layout": "布局容器,其下可嵌套 Header Sider Main FooterLayout 本身,可以放在任何父容器中", + "LayoutsDescription2_Main": "内容部分,自带默认样式,其下可嵌套任何元素", + "LayoutsDescription2_Side": "侧边栏,自带默认样式及基本功能,其下可嵌套任何元素", + "LayoutsLeftRightIntro": "右侧采用上中下结构,多用于后台管理网站布局,通过设置 IsFullSide 属性值来控制布局为左右结构", + "LayoutsLeftRightTitle": "左右结构", + "LayoutsMiddleLeftRightIntro": "中部采用左右结构,多用于后台管理网站布局,当布局模板中增加 Side 组件时默认采用上中下,中部采用左右结构布局", + "LayoutsMiddleLeftRightTitle": "中部左右结构布局", + "LayoutsPageHrefTitle": "整页面组件生成器", + "LayoutsPageIntro": "通过 IsPage 对整页面布局", + "LayoutsPageTips1": "通过设置 IsPage 属性设置 Layout 组件是否掌控整页面级别的布局方式,设置为 true 后,本组件采用整屏布局", + "LayoutsPageTitle": "整页面级别的组件", + "LayoutsTips1": " 以上组件采用了 flex 布局,使用前请确定目标浏览器是否兼容。此外,Layout 的子元素只能是后四者,后四者的父元素也只能是 Layout", + "LayoutsTips2": "注意事项", + "LayoutsTips3": "为了方便大家利用这套组件快速搭建项目,作者制作了 项目模板(Project Templates,使用 dotnet new 命令行,与 Bootstrap Blazor App Extension 扩展插件 通过 Visual Studio 新建项目创建,具体使用方法与步骤请点击 传送门", + "LayoutsTitle": "Layout 布局", + "LayoutsUpAndDownIntro": "常见于互联网网站布局", + "LayoutsUpAndDownTitle": "上中下布局" }, - "BootstrapBlazor.Server.Components.Samples.Table.TablesColumnList": { - "TablesColumnTitle": "Table 表格", - "TablesColumnDescription": "用于展示多条结构类似的数据,可对数据进行排序、筛选、对比或其他自定义操作。", - "ShownWithBreakPointTitle": "根据屏幕宽度自动显示/隐藏列", - "ShownWithBreakPointIntro": "通过指定 ShownWithBreakPoint 属性设置在不同宽度下是否显示", - "ShownWithBreakPointP1": "ShownWithBreakPoint 枚举值为:", - "ShownWithBreakPointLi1": "None 未设置均显示", - "ShownWithBreakPointLi2": "Small 屏幕大于等于 576px 时显示", - "ShownWithBreakPointLi3": "Medium 屏幕大于等于 768px 时显示", - "ShownWithBreakPointLi4": "Large 屏幕大于等于 992px 时显示", - "ShownWithBreakPointLi5": "ExtraLarge 屏幕大于等于 1200px 时显示", - "ShownWithBreakPointP2": "本例中列 Count 列设置为 BreakPoint.Large 即屏幕在大于 992px 时才显示", - "ShownWithBreakPointP3": "注意:", - "ShownWithBreakPointP4": "由于 Table 组件默认是支持移动端适配,所以小屏幕时采用的是卡片式模式,本例中显式设置使用 RenderMode=\"TableRenderMode.Table\" 模式", - "VisibleTitle": "自定义显示/隐藏列", - "VisibleIntro": "通过指定 ShowColumnList 属性设置列是否显示", - "VisibleP1": "ShowColumnList 默认值为 false,显式指定为 true 后工具栏出现相应列调整按钮", - "VisibleP2": "TableColumn 增加 Visiable 属性,其默认值为 true,显示设置为 false 时不显示此列", - "VisibleP3": "此例中 数量 列通过设置 Visible 未显示,可以通过列控制按钮进行显示设置", - "VisibleP4": "更改 状态后触发 OnColumnVisibleChanged 回调委托", - "ResetVisibleColumnsButtonText": "设置列隐藏信息", - "ResetVisibleColumnsDesc": "通过调用 Table 实例方法 ResetVisibleColumns 可设置任意列显示隐藏属性", - "ShowColumnListControlsDesc": "通过设置 ShowColumnListControls 控制列下拉框是否显示控制按钮,内置控制按钮有 全选反选 两个按钮" + "BootstrapBlazor.Server.Components.Samples.Lights": { + "LightsColorIntro": "通过设置属性 Color 值使指示灯进行变色", + "LightsColorTitle": "变色", + "LightsDescription": "提供各种状态的指示灯", + "LightsFlashingIntro": "通过设置属性 IsFlash 使指示灯进行闪烁", + "LightsFlashingTitle": "闪烁", + "LightsFlatIntro": "通过设置属性 IsFlat 使指示灯扁平化", + "LightsFlatTitle": "扁平化", + "LightsNormalIntro": "用于状态指示", + "LightsNormalTitle": "普通用法", + "LightsTitle": "Light 指示灯", + "LightsTooltipTextIntro": "通过设置属性 TooltipText 值使鼠标悬浮指示灯上时提示 tooltip 文字", + "LightsTooltipTextTitle": "提示文字", + "TooltipText": "我是提示文字信息" }, - "BootstrapBlazor.Server.Components.Samples.Table.TablesColumnTemplate": { - "TablesColumnTitle": "Table 表格", - "TablesColumnDescription": "用于展示多条结构类似的数据,可对数据进行排序、筛选、对比或其他自定义操作。", - "TableColumnTitle": "自定义列数据模板", - "TableColumnIntro": "自定义 TableColumn 列的 Template 模板来实现任意显示 UI,EditTemplate 可实现编辑模式下 UI", - "TableColumnP1": " 本例中列 DateTime 值根据 Complete 值是否为 true 显示不同颜色", - "TableColumnP2": "本例中列 Complete 根据 Complete 值自定义显示为 Checkbox 组件", - "TableColumnP3": "Template 模板自带 Context 相关联上下文,其值为 TableColumnContext 类型", - "TableColumnLi1": "Value 为当前绑定列的数据值", - "TableColumnLi2": "Row 为当前绑定列所在行的数据值", - "TemplateTitle": "自定义列模板", - "TemplateIntro": "通过指定 Template 设置最后一列内显示为自定义按钮", - "AutoGenerateColumnsTitle": "自动生成列", - "AutoGenerateColumnsIntro": "通过指定 AutoGenerateColumns 属性值为 true,开启根据绑定模型自动生成列信息功能", - "AutoGenerateColumnsP1": "本例中通过设置 AutoGenerateColumns 值为 true 开启自动生成列功能,默认绑定模型实体类所有属性全部生成,实体类可以通过 AutoGenerateColumnAttribute 标签类进行功能设置,如:", - "AutoGenerateColumnsLi1": "Ignore 表示忽略此属性,即不生成", - "AutoGenerateColumnsLi2": "Readonly 表示只读", - "AutoGenerateColumnsLi3": "更多属性详见 源码", - "AutoGenerateColumnsP2": " 本例中通过 [AutoGenerateColumn(Order = 1, FormatString = \"yyyy-MM-dd\")] 标签格式化 日期 列;通过代码中设置模板列对 Complete 列进行自定义使用 Switch 组件进行渲染;通过 [AutoGenerateColumn(Order = 10)] 标签中的 Order 对显示顺序进行设定", - "TableTemplateTips": "特别注意:在使用 列模板 时,实际的应用场景经常遇到几列或者多列需要联动的情况,此时直接将联动的组件放置到 EditTemplate 内时是无法完成联动的,正确的做法是将需要联动小组件独立成一个组件,在此组件内部完成联动" + "BootstrapBlazor.Server.Components.Samples.LinkButtons": { + "LinkButtonChildIntro": "通过 ChildContent 模板自定义显示内容", + "LinkButtonChildTitle": "模板", + "LinkButtonColorIntro": "通过设置 Color 值,更改按钮文字颜色", + "LinkButtonColorText": "颜色按钮", + "LinkButtonColorTitle": "颜色", + "LinkButtonIconIntro": "通过设置 Icon 显示图标", + "LinkButtonIconTitle": "图标按钮", + "LinkButtonImageIntro": "通过 ImageUrl 值设置图片地址", + "LinkButtonImageTitle": "图片", + "LinkButtonIsDisabledIntro": "通过设置 IsDisabled 值使按钮失效", + "LinkButtonIsDisabledText": "禁用", + "LinkButtonIsDisabledTitle": "禁用", + "LinkButtonOnClickIntro": "通过 OnClick 回调方法响应点击事件", + "LinkButtonOnClickTitle": "点击事件", + "LinkButtonsComTitle": "LinkButton 链接按钮", + "LinkButtonsSubTitle": "提供 A 标签按钮", + "LinkButtonText": "链接按钮", + "LinkButtonTextIntro": "通过 Text 值设置按钮显示文本", + "LinkButtonTextTitle": "链接按钮", + "LinkButtonTitleDetail": "鼠标悬停到按钮上时显示 Tooltip", + "LinkButtonTitleIntro": "通过 Title 值设置链接按钮 Tooltip", + "LinkButtonTitleTitle": "提示信息", + "LinkButtonTitleTooltip": "我是提示信息条", + "LinkButtonUrlIntro": "通过 Url 值设置导航地址", + "LinkButtonUrlTitle": "导航地址", + "LinkButtonVerticalIntro": "通过设置 IsVertical 值使按钮图标与文字垂直布局", + "LinkButtonVerticalText": "测试按钮", + "LinkButtonVerticalTitle": "垂直布局" }, - "BootstrapBlazor.Server.Components.Samples.Table.TablesEdit": { - "TablesEditTitle": "Table 表格", - "TablesEditDescription": "常用于单表维护,通过属性配置实现简单的增、删、改、查、排序、过滤、搜索等常用功能,通过 Template 的高级用法能实现非常复杂的业务需求功能", - "TablesEditItemsTitle": "使用集合作为数据源实现编辑功能", - "TablesEditItemsIntro": "设置 Items 作为数据源,无需设置 OnSaveAsync OnDeleteAsync 回调委托使用内置处理逻辑进行更新与删除功能", - "TablesEditItemsDescription": "设置 Items 作为数据源,必须使用双向绑定 @bind-Items, 同时 TItem 泛型约束的类实例,如本例中的 Foo ,需要正确配置 [Key] 标签,否则内置编辑功能无法正常工作;通过设置 IsGroupExtendButtons 参数控制行内功能按钮是否组合显示 默认 true", - "TablesEditTemplateTitle": "具有单表维护功能的表格", - "TablesEditTemplateIntro": "通过设置 EditTemplate 自定义编辑弹窗,10.0.1 版本后支持联动功能", - "TablesEditTemplateDescription": "本例中设置 Count 右侧对齐,Complete 列设置为居中对齐,布尔类型列自动渲染成 Switch 组件,点击 学历 下拉框时右侧只读组件描述信息联动更新", - "TablesEditTemplateDisplayLabel": "详细信息", - "TablesEditTemplateDisplayDetail1": "小学六年", - "TablesEditTemplateDisplayDetail2": "初中三年", - "TablesEditOnAddAsyncTitle": "自动生成单表维护功能的表格", - "TablesEditOnAddAsyncIntro": "当设置了 OnAddAsync 或者 OnSaveAsync 回调委托方法时,如果未设置 EditTemplate 编辑模板时,组件会尝试自动生成表单维护 UI", - "TablesEditOnAddAsyncDescription": "通过设置 TItem 泛型约束的类实例 Foo 属性的 [Required] 等验证标签即可实现客户端验证", - "TablesEditOnAddAsyncTips1": "数据绑定类型为可为空类型时自动允许为空,如日期绑定列为 DateTime? 类型", - "TablesEditOnAddAsyncTips2": "数据绑定类型为数值类型时如,如数量绑定列为 int 类型,自动进行数值验证", - "TablesEditOnAddAsyncTips3": "表格呈现的有些数据列是计算得到的结果,此种类型的列是无法参与编辑的,通过设置 Ignore=true 自动生成编辑 UI 时就不会生成此列编辑组件,如本示例中 Count 列在编辑弹窗中是不出现的", - "TablesEditOnAddAsyncTips4": "通过设置 Readonly=true 自动生成编辑 UI 会将此字段进行只读处理,新建时请对 Model 进行默认值赋值", - "TablesEditOnAddAsyncTips5": "通过设置 IsExtendButtonsInRowHeader=true 使扩展按钮在行前面显示", - "TablesEditOnAddAsyncTips6": "通过设置 EditDialogDraggable='true' 使编辑弹出框可拖拽", - "TablesColumnEditTemplateTitle": "自定义列编辑模板", - "TablesColumnEditTemplateIntro": "当设置列的 EditTemplate 时,组件自动生成表单维护 UI 时使用此模板作为呈现 UI", - "TablesColumnEditTemplateDescription1": "通过设置姓名列的 EditTemplate 自定义编辑时使用下拉框来选择姓名", - "TablesColumnEditTemplateTips": "本例中 Name 列为自定义组件 TableNameDrop,新建时默认为 请选择 ...Hobby 列为自定义组件 DemoHobbyTemplate 使用多选框组件进行渲染", - "TablesEditModeTitle": "设置编辑模式", - "TablesEditModeIntro": "通过设置表格的 EditMode 属性,设置组件是弹窗编辑行数据还是行内编辑数据", - "TablesEditModeDescription": "EditMode 为枚举类型其值分别为:Popup EditForm InCell 其默认值为 Popup 弹窗编辑行数据", - "TablesEditModeTips1": "本例中设置数据源 Items 为双向绑定,特别适用与父子表录入,保存时直接使用数据源即可", - "TablesEditModeTips2": "EditForm 模式示例", - "TablesEditInjectDataServiceTitle": "使用注入数据服务", - "TablesEditInjectDataServiceIntro": "未提供数据操作回调方法时组件自动寻找注册的数据服务进行对数据的增删改查", - "TablesEditDataServiceTitle": "使用自定义数据服务", - "TablesEditDataServiceIntro": "通过设置表格的 DataService 属性,使用独立的数据服务进行对数据的增删改查", - "TablesEditDataServiceDescription": "自定义数据服务", - "TablesEditDataServiceTips1": "开启使用注入数据服务后,可通过设置 DataServices 参数对组件进行单独设置,如未设置内部使用注入服务提供的实例", - "TablesEditDataServiceTips2": "本例中通过设置 EditDialogShowMaximizeButton 参数,使编辑弹窗中显示 最大化 按钮", - "TablesEditFooterTemplateTitle": "自定义编辑弹窗按钮", - "TablesEditFooterTemplateIntro": "通过设置 EditFooterTemplate 自定义编辑弹窗 Footer", - "TablesEditFooterTemplateDescription": "点击表格内编辑按钮,弹出编辑弹窗,弹窗内 Footer 内按钮均为自定义按钮。为方便二开的同时保留原有 关闭保存 两个按钮功能,额外内置提供了两个与之相对应的组件 DialogCloseButton DialogSaveButton 这两个按钮无需编写点击相关处理方法", - "TablesEditModeAddModalTitle": "增加测试数据窗口", - "TablesEditModeEditModalTitle": "编辑测试数据窗口", - "TablesEditModeInCell": "InCell 模式示例", - "TablesEditModeDrawer": "Drawer 模式示例", - "TablesEditInjectDataServiceDescription": "通过注册数据服务进行增、删、改、查的数据库操作,而无需对以下回调委托进行赋值,优先级别为有回调方法优先调用回调方法,如无则调用注入服务进行数据操作", - "TablesEditInjectDataServiceTips1": "Startup 文件注入数据服务", - "TablesEditInjectDataServiceTips2": "实现原理与用法介绍", - "TablesEditInjectDataServiceTips3": "自定义数据服务", - "TablesEditInjectDataServiceTips4": "开启使用注入数据服务后,可通过设置 DataServices 参数对组件进行单独设置,如未设置内部使用注入服务提供的实例", - "TablesEditShowSearchPlaceHolderString": "不可为空,50字以内", - "TablesVisibleTitle": "Table 编辑时显示/隐藏", - "TablesVisibleIntro": "
          Visible 默认值为 true 如果有列设置了 IsVisibleWhenAdd 或者 IsVisibleWhenEdit 属性为 false 时, 新建或者更新时隐藏此列。本例中 新建 弹窗不显示 数量 编辑 弹窗不显示 是否 编辑项。
          可以通过在数据模型中使用 [AutoGenerateClass(Visible = false)] 全部禁止显示,再通过 IsVisibleWhenAdd 或者 IsVisibleWhenEdit 单独设置编辑状态下的可见性,本例中,地址 列默认不可见,新建、编辑 弹窗内均可以编辑
          ", - "TablesReadonlyColumnTitle": "只读列", - "TablesReadonlyColumnIntro": "通过设置 FieldFieldName 即可", - "TablesReadonlyColumnDescription": "对应数据库计算列,或者模型只读属性", - "TablesReadonlyColumnTips1": "不要写 @bind-Field 只读列在 新建 或者 编辑 时均无法录入", - "TablesReadonlyColumnTips2": "老版本需要写完整代码如下", - "TablesTemplateColumnTitle": "模板列", - "TablesTemplateColumnIntro": "通过使用 TableTemplateColumn 代替 TableColumn 组件,即可不绑定模型属性", - "TablesTemplateColumnDescription": "通过设置 Text 属性设置标题显示文字,通过 Template 设置单元格显示内容,模板上下文为 TableColumnContext 实例,可通过 @v.Row 获得当前行模型实例,模板列不参与数据编辑功能如 新建 编辑", - "TableTemplateColumnText": "模板列" + "BootstrapBlazor.Server.Components.Samples.ListGroups": { + "BasicUsageIntro": "通过 Items 参数值设置数据集合", + "BasicUsageTitle": "基本用法", + "HeaderTemplateIntro": "通过 HeaderTemplate 自定义标题模板", + "HeaderTemplateTitle": "标题模板", + "HeaderText": "列表框标题文字", + "HeaderTextIntro": "通过 HeaderText 参数值设置标题文字", + "HeaderTextTitle": "标题", + "ListGroupsSubTitle": "多用于数据浏览与选择", + "ListGroupsTips": "
        • 通过 Items 设置列表框显示数据集合
        • 通过 GetItemDisplayText 设置列表框数据项显示文本
        • 由于组件内部高度设置为 100% 使用时自动充满父容器,当父容器设置高度时,列表项自动出现滚动条,本例中设置外部容器元素 list-group-demo 高度为 280px
        • ", + "ListGroupsTitle": "ListGroup 列表框" + }, + "BootstrapBlazor.Server.Components.Samples.ListViews": { + "BasicUsageIntro": "适用于大量重复的数据实现规则排列", + "BasicUsageP1": "点击图片时触发 OnListViewItemClick 事件", + "BasicUsageTitle": "普通用法", + "CollapseIntro": "设置 Collapsible=\"true\" 使分组信息可折叠", + "CollapseTitle": "分组折叠", + "GroupIntro": "设置 GroupName 数据进行分组显示,通过设置 GroupOrderCallback 参数细化分组排序规则", + "GroupTitle": "分组显示", + "IsAccordionIntro": "设置 IsAccordion=\"true\" 使分组信息折叠手风琴效果", + "IsAccordionTitle": "分组手风琴", + "ListViewsSubTitle": "提供规则排列控件", + "ListViewsTitle": "ListView 列表视图", + "PaginationIntro": "设置 Pageable 显示分页组件", + "PaginationTitle": "分页显示", + "ProductListText": "产品列表", + "QueryAsync": "手工查询数据方法" }, - "BootstrapBlazor.Server.Components.Samples.Table.TablesVirtualization": { - "TablesVirtualizationTitle": "Table 虚拟滚动行", - "TablesVirtualizationDescription": "Table 组件显示大数据时通常采用分页加载数据,还有一种虚拟行的技术类似手机滚动到底部时后台自动加载数据", - "VirtualizationNormalTitle": "基础用法", - "VirtualizationNormalIntro": "设置 Items 参数组件自动实现虚拟滚动", - "VirtualizationNormalDescription": "

          需要设置 ScrollMode Height RowHeight PageItems 参数对虚拟滚动进行设置

          通过 ShowFooter 控制是否显示 Footer,通过 IsFixedFooter 控制 Footer 是否固定在未端

          ", - "TablesFooterFixedLabel": "是否固定 Footer", - "TablesFooterInfo": "合计:", - "TablesFooterFixedText": "固定", - "TablesFooterNotFixedText": "跟随", - "VirtualizationDynamicTitle": "动态获取数据", - "VirtualizationDynamicIntro": "设置 OnQueryAsync 回调通过参数 StartIndex PageItems 获取数据", - "VirtualizationDynamicDescription": "快速滚动时显示行占位,提升用户体验" + "BootstrapBlazor.Server.Components.Samples.Live2DDisplays": { + "Live2DDisplayDescription": "基于 pixi-live2d-display 的 Live2D 插件,支持所有版本的 Live2D 模型。", + "Live2DDisplayNormalIntro": "通过调节默认的参数选项,实现模型的动态变化。", + "Live2DDisplayNormalTips": "添加以下代码到Program.cs中。", + "Live2DDisplayNormalTitle": "基本用法", + "Live2DDisplayTitle": "Live2D 插件" }, - "BootstrapBlazor.Server.Components.Samples.Table.TablesLoading": { - "TablesLoadingTitle": "显示数据加载功能", - "TablesLoadingDescription": "调用远端数据接口时,由于网络原因可能出现延时情况,可使用显示加载功能进行屏蔽", - "TablesLoadingShowLoadingTitle": "基础用法", - "TablesLoadingShowLoadingIntro": "设置 ShowLoading 即可", - "TablesLoadingShowSkeletonTitle": "骨架屏", - "TablesLoadingShowSkeletonIntro": "设置 ShowSkeleton 即可", - "TablesLoadingShowLoadingInFirstRenderTitle": "关闭加载动画", - "TablesLoadingShowLoadingInFirstRenderIntro": "设置 ShowLoadingInFirstRender 即可" + "BootstrapBlazor.Server.Components.Samples.Locators": { + "LocatorsNormalButtonText": "定位", + "LocatorsNormalCustomerLocator": "通过 AddSingleton 方法将自定义定位器 CustomerLocatorProvider 添加到服务容器中", + "LocatorsNormalDescription": "用法介绍", + "LocatorsNormalDisplayText": "地理位置", + "LocatorsNormalExtend1": "1. 实现自定义定位器", + "LocatorsNormalExtend2": "2. 配置自定义定位器", + "LocatorsNormalExtend3": "3. 通过定位器定位", + "LocatorsNormalExtendDescription": "扩展自定义地理位置查询接口", + "LocatorsNormalInjectIPLocator": "组件中使用注入服务 IpLocatorFactory 调用 Create 方法创建定位服务 IIpLocatorProvider 实例", + "LocatorsNormalInputText": "Ip 地址", + "LocatorsNormalIntro": "注入服务显示客户端地理位置信息", + "LocatorsNormalIpTitle": "IP 测试数据", + "LocatorsNormalTips1": "解决办法:", + "LocatorsNormalTips2": "Startup 文件中 ConfigureServices 方法内增加下面这句话即可解决", + "LocatorsNormalTips3": "山东省 中国联通", + "LocatorsNormalTips4": "安徽省合肥市蜀山区 中国电信", + "LocatorsNormalTipsTitle": "某些地理位置查询接口返回字符集可能是其他字符集如 gbk,程序会报错;", + "LocatorsNormalTitle": "普通用法", + "LocatorsProviderDesc": "

          组件库内置两个免费在线地理位置定位器分别为 BaiduIpLocatorProvider BaiduIpLocatorProviderV2

          组件库内置一个收费在线地理位置定位器 BootstrapBlazor.JuHeIpLocatorProvider Nuget 包 官网地址

          组件库内置一个免费离线地理位置定位器 BootstrapBlazor.IP2Region Nuget 包

          ", + "LocatorsSubTitle": "多用于系统日志跟踪与分析", + "LocatorsTitle": "获取 IP 地理位置" }, - "BootstrapBlazor.Server.Components.Samples.Table.TablesTree": { - "TablesTreeTitle": "Table 树形数据展示", - "TablesTreeDescription": "表格支持树形数据的展示", - "TablesTreeTip_title": "通过 IsTree 参数控制是否为树形数据", - "TablesTreeTip_note1": "通过 TreeNodeConverter 对数据集进行树状结构转换", - "TablesTreeTip_note2": "设置 TableTreeNodeIsExpand 参数控制当前子节点是否展开", - "TablesTreeTip_note3": "点击子项展开小箭头时,通过 OnTreeExpand 回调委托方法获取子项数据", - "TablesTreeTip_note4": "保持行状态回落机制,ModelEqualityComparer CustomKeyAttribute IEqualityComparer<TItem> Equals 重载方法", - "TablesTreeStep1": "第一步:设置 IsTreetrue", - "TablesTreeStep2": "第二步:设置 Items 或者 OnQueryAsync 获得组件数据集合", - "TablesTreeStep3": "第三步:设置 TreeNodeConverter 将组件数据集合转化为树状结构", - "TablesTreeStep4": "第四步:设置 OnTreeExpand 回调委托响应行展开获取子项数据集合", - "TablesTreeDataTitle": "树形数据展示", - "TablesTreeDataIntro": "通过设置 IsTree 开启树形表格", - "TablesTreeLevelTitle": "层次缩进", - "TablesTreeLevelIntro": "通过设置 IndentSize 以控制每一层的缩进宽度。", - "TablesTreeLevelTips1": "默认层次缩进宽度为 16px 通过设置 Indent 更改缩进宽度", - "TablesTreeLevelTips2": "本例中更改缩进宽度为 8px", - "TablesTreeEditTitle": "具有单表维护功能的树形数据", - "TablesTreeEditIntro": "实现简单的增、删、改、查功能。", - "TablesTreeIconTitle": "图标", - "TablesTreeIconIntro": "通过设置 TreeIcon 更改指示小箭头图标", - "TablesTreeIconTips1": "默认层次缩进宽度为 16px 通过设置 Indent 更改缩进宽度", - "TablesTreeIconTips2": "本例中更改缩进宽度为 8px" + "BootstrapBlazor.Server.Components.Samples.Logouts": { + "LogoutsChildContentCustomDisplay": "自定义显示内容", + "LogoutsChildContentIntro": "设置 ChildContent 或者在组件内部直接写其他组件即可", + "LogoutsChildContentTitle": "自定义显示模板", + "LogoutsDescription": "用于网站登出操作", + "LogoutsHeaderTemplateIntro": "设置 HeaderTemplate", + "LogoutsHeaderTemplateTitle": "自定义登录信息模板", + "LogoutsHeaderTemplateUser1": "总经理", + "LogoutsHeaderTemplateUser2": "Admin", + "LogoutsLinkTemplateIntro": "设置 LinkTemplate", + "LogoutsLinkTemplatePersonalCenter": "个人中心", + "LogoutsLinkTemplateSetup": "设置", + "LogoutsLinkTemplateTitle": "自定义链接模板", + "LogoutsNormalIntro": "直接使用内置模板使用", + "LogoutsNormalTitle": "普通用法", + "LogoutsShowUserNameIntro": "设置 ShowUserName 值为 false", + "LogoutsShowUserNameTitle": "仅显示头像", + "LogoutsTitle": "Logout 登出组件" }, - "BootstrapBlazor.Server.Components.Samples.Table.TablesWrap": { - "TablesWrapTitle": "Table 换行示例", - "TablesWrapDescription": "当表头或者行内单元格内容超长时,通过样式更改实现省略、换行等效果", - "TablesWrapTip": "注意:由于 Table 组件已实现适配移动端功能,此演示需在电脑端查看", - "TablesWrapNormalTitle": "表头超长示例", - "TablesWrapNormalIntro": "在某种特殊情况下可能表头比较长,需要将表头控制在一个固定宽度内,通过设置 ShowHeaderTooltip 鼠标移动到表头上时显示 Tooltip 来显示完整表头信息", - "TablesWrapNormalDescription": "可以拖动窗口大小,窗口过小时自动出现横向滚动条,通过设置 Width 固定宽度,通过设置 HeaderTextEllipsis 表头溢出截断", - "TablesWrapHeaderTextWrapTitle": "表头超长折行", - "TablesWrapHeaderTextWrapIntro": "通过设置 HeaderTextWrap 使超长表头折行", - "TablesWrapHeaderTextWrapDescription": "可以拖动窗口大小,窗口过小时自动出现横向滚动条后,表头会自动折行", - "TablesWrapLongDataTitle": "单元格数据超长折行示例", - "TablesWrapLongDataIntro": "在某种特殊情况下可能单元格内容比较长,需要进行折行处理", - "TablesWrapLongDataTips1": "可以拖动窗口大小,窗口过小时 地址 列自动进行折行处理", - "TablesWrapLongDataTips2": "通过设置 TextWrap 来开启自动换行功能", - "TablesWrapLongDataTips3": "注意:推荐使用 Width 对列宽度进行设置", - "TablesWrapDataResizingTitle": "单元格数据超长省略示例", - "TablesWrapDataResizingIntro": "在某种特殊情况下可能单元格内容比较长,需要进行省略处理", - "TablesWrapDataResizingTips1": "可以拖动窗口大小,窗口过小时 地址 列自动进行省略处理", - "TablesWrapDataResizingTips2": "通过设置 TextEllipsis 来开启文本超长省略功能", - "TablesWrapDataResizingTips3": "注意:推荐使用 Width 对列宽度进行设置,如未设置列宽内部自动使用 200px 宽度", - "TablesWrapDataResizingTips4": "单元格内文本被省略后,可以通过 ShowTips 属性来控制鼠标悬停是否显示全部文本,默认为 false,通过设置 GetTooltipTextCallback 回调方法可以自定义 Tooltip 显示内容", - "TablesWrapDataResizingTips5": "拖动地址列,单元格显示内容自动增加与减少", - "TablesWrapCustomCellTitle": "自定义单元格内排版", - "TablesWrapCustomCellIntro": "使用模板对单元格内数据进行特殊布局", - "TablesWrapNormalColumHeaderText_DateTime": "我是超级长的时间表头", - "TablesWrapNormalColumHeaderText_Name": "我是超级长的姓名表头", - "TablesWrapNormalColumHeaderText_Address": "我是超级长的地址表头", - "TablesWrapHeaderTextWrapColumHeaderText_DateTime": "我是超级长的时间表头", - "TablesWrapHeaderTextWrapColumHeaderText_Name": "我是超级长的姓名表头", - "TablesWrapHeaderTextWrapColumHeaderText_Address": "我是超级长的地址表头", - "TablesWrapLongDataColumHeaderText_DateTime": "时间", - "TablesWrapLongDataColumHeaderText_Name": "姓名", - "TablesWrapLongDataColumHeaderText_Address": "地址", - "TablesWrapDataResizingColumHeaderText_DateTime": "时间", - "TablesWrapDataResizingColumHeaderText_Name": "姓名", - "TablesWrapDataResizingColumHeaderText_Address": "地址", - "TablesWrapCustomCellColumHeaderText_DateTime": "时间", - "TablesWrapCustomCellColumHeaderText_Name": "姓名", - "TablesWrapCustomCellColumHeaderText_Address": "地址", - "TablesWrapCustomCellTemplate_State": "状态", - "TablesWrapCustomCellTemplate_Time": "时间" + "BootstrapBlazor.Server.Components.Samples.Markdowns": { + "MarkdownsAsyncButtonText": "加载", + "MarkdownsAsyncIntro": "通过 Webapi 获得 Markdown 显示内容", + "MarkdownsAsyncTitle": "异步加载数据", + "MarkdownsBrowserButtonText1": "插入一行文字", + "MarkdownsBrowserButtonText2": "插入一张图片", + "MarkdownsBrowserButtonText3": "光标移动到最后", + "MarkdownsBrowserIntro": "使用 Api 从外部操作 Editor,具体的Api参照 tui.editor api", + "MarkdownsBrowserText": "椰子树", + "MarkdownsBrowserTitle": "外部操作 Markdown", + "MarkdownsCommonPropertyDescription": "设置 Markdown 编辑器最小高度 300px,默认高度 500px,提示信息这是 MarkdownTab 方式显示,默认显示所见即所得页面", + "MarkdownsCommonPropertyIntro": "更改默认参数", + "MarkdownsCommonPropertyPlaceHolder": "这是 Markdown", + "MarkdownsCommonPropertyTitle": "常用属性", + "MarkdownsCss": "CSS 文件", + "MarkdownsCssText": "无需设置组件自动动态加载", + "MarkdownsDescription": "提供 Markdown 语法支持的文本编辑器", + "MarkdownsEnableHighlightIntro": "使用 EnableHighlight=true 启用插件,使用```后加代码格式的方式使用高亮,如```js 则使用 js 高亮语法", + "MarkdownsEnableHighlightTitle": "启用代码高亮插件", + "MarkdownsIsDarkTitle": "暗黑模式", + "MarkdownsIsViewerDescription": "设置 Markdown 编辑器为纯浏览模式,IsViewer='true'", + "MarkdownsIsViewerIntro": "单纯浏览模式,不可编辑", + "MarkdownsIsViewerTitle": "浏览器模式", + "MarkdownsJs": "JS 文件", + "MarkdownsJsText": "无需设置组件自动动态加载", + "MarkdownsLocalizationTips": "组件内置中文,切换当前文化信息即可获得中文", + "MarkdownsLocalizationTipsTitle": "本地化", + "MarkdownsNormalDescription": "输入 Markdown 相关代码后,点击下方相关区域显示数据", + "MarkdownsNormalIntro": "默认设置", + "MarkdownsNormalTitle": "普通用法", + "MarkdownsNote": "如果编辑内容过多,可能会触发 signalR 通讯中断问题,请自行调整 HubOptions 配置即可。", + "MarkdownsTitle": "Markdown 编辑器", + "MarkdownString": "测试", + "MarkdownsValidateIntro": "根据自定义验证规则进行数据有效性检查并自动提示", + "MarkdownsValidateSubmitText": "提交", + "MarkdownsValidateTitle": "客户端验证" }, - "BootstrapBlazor.Server.Components.Samples.Table.TablesTracking": { - "TablesTrackingTitle": "Table 表格", - "TablesTrackingDescription": "适用于父子表一起提交的应用场景", - "TablesTrackingNormalTitle": "跟踪模式", - "TablesTrackingNormalIntro": "设置 IsTracking 配合 Items 可以不需要设置 OnSaveAsync 等回调方法", - "TablesTrackingNormalTips1": "可通过设置 ShowToastAfterSaveOrDeleteModel='false' 关闭 保存 删除 按钮的提示信息", - "TablesTrackingNormalTips2": "此模式下所有数据编辑均编辑原始数据,通过 bind-Items 更新数据源,所以不提供 取消 按钮" + "BootstrapBlazor.Server.Components.Samples.Marquees": { + "MarqueeBase": "基本用法", + "MarqueeBaseIntro": "通过参数调节文字滚动效果", + "MarqueeDescription": "组件多用于创建滚动文本,通常用于新闻滚动、广告滚动等效果", + "MarqueeTitle": "循环滚动组件" + }, + "BootstrapBlazor.Server.Components.Samples.Masks": { + "MaskCloseIntro": "通过使用 DialogCloseButton 组件或者级联参数关闭弹窗", + "MaskCloseTitle": "代码关闭弹窗", + "MaskContainerIntro": "通过设置 MaskOption 参数 ContainerId 指定遮罩出现位置", + "MaskContainerTitle": "指定容器", + "MaskDescription": "通过调用服务显示,隐藏方法,显示一个遮罩层对数据进行遮罩操作", + "MaskNormalDesc": "可以通过 MaskOption 调整 ZIndex Opacity BackgroundColor 参数", + "MaskNormalIntro": "调用 MaskService 遮罩服务示例方法 Show 方法显示一个遮罩,3 秒后调用实例方法 Close 关闭遮罩", + "MaskNormalTitle": "基本用法", + "MaskTitle": "遮罩组件", + "MultipleMaskContainerDesc": "组件内自己设置 Mask 组件,调用 MaskService 实例方法 Show 时,通过第二个参数指定 Mask 实例即可", + "MultipleMaskContainerIntro": "通过自定义设置 Mask 组件可实现网页内多个局部进行遮罩操作", + "MultipleMaskContainerTitle": "多遮罩", + "ShowMaskButtonText": "打开" + }, + "BootstrapBlazor.Server.Components.Samples.Menus": { + "MenusAccordionIntro": "通过设置 IsAccordion 属性设置手风琴特效侧栏菜单", + "MenusAccordionTitle": "手风琴效果的侧栏", + "MenusBottomBarIntro": "设置参数 IsBottom 值为 true 菜单栏在容器底部,适用移动端", + "MenusBottomBarTips": "由于 底栏菜单 是相对与父容器定位的,需设置父级节点样式 position-relative,或者自定义样式 position-fixed", + "MenusBottomBarTitle": "底栏", + "MenusClickShrinkAlertText": "请注意 IsCollapsed 属性仅当 IsVertical 为真时才生效即仅侧边栏菜单时可用", + "MenusClickShrinkDescription": "本例中使用布局组件 Layout 来进行网页构建", + "MenusClickShrinkIntro": "通过设置 IsCollapsed 属性设置侧栏菜单为收起状态", + "MenusClickShrinkMenuTitle": "后台管理", + "MenusClickShrinkSpanSpan": "我是网站标题", + "MenusClickShrinkTitle": "带收缩的侧栏效果", + "MenusCustomNodeDescription": "本例中 权限设置 节点为展开状态,其余节点为收起状态", + "MenusCustomNodeIntro": "通过设置 MenuItemIsCollapsed 属性设置节点是否收起", + "MenusCustomNodeTitle": "自定义节点收缩", + "MenusDescription": "为页面和功能提供导航的菜单列表。", + "MenusDynamicButton1Text": "更新菜单", + "MenusDynamicButton2Text": "重置菜单", + "MenusDynamicIntro": "通过代码动态设置 Items 属性值更改菜单项", + "MenusDynamicTitle": "动态更改菜单", + "MenusIconLeftIntro": "通过设置菜单项 MenuItemIcon 属性设置菜单图标", + "MenusIconLeftTitle": "带图标的侧栏菜单", + "MenusIconTopIntro": "适用简单的网站应用,通过设置菜单项 MenuItemIcon 属性设置菜单图标", + "MenusIconTopTitle": "带图标的顶栏菜单", + "MenusLeftRightLayoutIntro": "适用于左右结构布局的网站,通过设置 IsVertical 更改导航菜单为侧栏", + "MenusLeftRightLayoutTitle": "侧栏", + "MenusPartDisableDescription1": "本例中 导航二 节点为禁用状态,菜单与其子菜单均不可点击", + "MenusPartDisableDescription2": "侧栏的禁用示例", + "MenusPartDisableIntro": "通过设置 MenuItemIsDisabled 属性设置节点是否禁用", + "MenusPartDisableTitle": "部分菜单禁用功能", + "MenusTips1": "Menu 组件一般用法为菜单导航,即点击菜单后地址栏进行重定向导航,但是在实战中有时候不需要导航,通过设置 OnClick 回调委托,自定义处理逻辑,此时通过设置属性 DisableNavigation 即可,本例中由于都是模拟菜单点击并未真正的进行地址栏跳转导航所以所有 Menu 均设置为 true 禁止导航", + "MenusTitle": "Menu 导航菜单", + "MenusTopBarIntro": "适用广泛的基础用法。", + "MenusTopBarTitle": "顶栏", + "MenusWidgetIntro": "通过设置 MenuItemComponent 属性设置自定义组件到菜单中", + "MenusWidgetTitle": "带挂件的菜单" + }, + "BootstrapBlazor.Server.Components.Samples.Mermaids": { + "DownloadPdfButtonText": "下载 Pdf", + "MermaidDescription": "本组件可渲染 Markdown 启发的文本定义以动态创建和修改图表。", + "MermaidNormalIntro": "Mermaid 基本样式", + "MermaidNormalTitle": "基本用法", + "MermaidStyleTitle": "增加自定义样式", + "MermaidTitle": "Mermaid 构图工具", + "MermaidType": "图表类型" + }, + "BootstrapBlazor.Server.Components.Samples.Messages": { + "MessagesAsyncDemoStep1Text": "正在打包文档,请稍等...", + "MessagesAsyncDemoStep2Text": "打包完成,正在下载...", + "MessagesAsyncDemoStep3Text": "下载完成,自动关窗", + "MessagesAsyncIntro": "通过设置按钮 IsAsync 参数,使用同一个 MessageOption 更新弹窗信息提示不同步骤时的信息", + "MessagesAsyncText": "线程阻塞通知示例", + "MessagesAsyncTitle": "线程阻塞通知", + "MessagesCloseButtonIntro": "通过设置 MessageOptionShowDismiss 属性,更改消息框右侧出现关闭按钮", + "MessagesCloseButtonTitle": "带关闭按钮的消息框", + "MessagesDescription": "常用于主动操作后的反馈提示。与 Toast 的区别是后者更多用于系统级通知的被动提醒", + "MessagesDifferentColorDanger": "Danger 消息", + "MessagesDifferentColorInfo": "Info 消息", + "MessagesDifferentColorIntro": "通过设置 MessageOptionColor 属性,更改消息框颜色", + "MessagesDifferentColorPrimary": "Primary 消息", + "MessagesDifferentColorSecondary": "Secondary 消息", + "MessagesDifferentColorSuccess": "Success 消息", + "MessagesDifferentColorTitle": "不同颜色的消息框", + "MessagesDifferentColorWarning": "Warning 消息", + "MessagesIconIntro": "通过设置 MessageOptionIcon 属性,更改消息框左侧小图标", + "MessagesIconTitle": "带图标的消息框", + "MessagesIntro": "组件使用介绍:", + "MessagesItem": "MessageOption 属性", + "MessagesLeftBoardIntro": "通过设置 MessageOptionShowBar 属性,更改消息框左侧边框样式", + "MessagesLeftBoardTitle": "左侧带边框的消息框", + "MessagesMessagePrompt": "打开消息提示", + "MessagesNormalIntro": "从顶部出现,4 秒后自动消失", + "MessagesNormalTitle": "基础用法", + "MessagesPositionIntro": "通过设置 MessageService 服务的组件参数,指定已经设置底部显示位置的 Message 组件", + "MessagesPositionTitle": "消息框弹出位置", + "MessagesShowModeIntro": "通过设置 ShowMode 参数,指定显示模式", + "MessagesShowModePrompt": "只显示最后一条消息", + "MessagesShowModeTitle": "显示模式", + "MessagesTemplateIntro": "通过设置 ChildContent 模板可以实现丰富的自定义样式与内容的提示信息", + "MessagesTemplatePrompt": "自定义消息", + "MessagesTemplateTitle": "自定义模板", + "MessagesTips1": "1. 注入服务 MessageService", + "MessagesTips2": "2. 调用其实例 api", + "MessagesTips3": "这是一条提示消息", + "MessagesTitle": "Message 消息提示" }, - "BootstrapBlazor.Server.Components.Samples.Table.TablesFooter": { - "TablesFooterTitle": "Table 统计功能", - "TablesFooterDescription": "用于数据统计", - "TablesFooterStatisticsTitle": "数据统计示例", - "TablesFooterStatisticsIntro": "设置 ShowFooter=true 显示 Footer 自定义合计功能,通过设置 IsFixedFooter 控制是否固定 Footer", - "TablesFooterStatisticsTips1": "Table 组件有 TableFooter 模板,其数据上下文为 Table 组件的数据集合 IEnumerable<TItem>", - "TablesFooterStatisticsTips2": "TableFooter 模板中关联的上下文 context 值为当页数据集合", - "TablesFooterStatisticsTips3": "TableFooter 模板内可以自定义单元格 td 内容,也可以使用内置的 TableFooterCell 组件进行数据显示", - "TablesFooterTemplateTitle": "Footer 模板", - "TablesFooterTemplateIntro": "设置 FooterTemplate 自定义表格底部显示内容", - "TablesFooterTemplateDescription": "无数据时默认显示 Footer 可通过设置 @nameof(Table.IsHideFooterWhenNoData) 参数隐藏 Footer", - "TablesFooterStatisticsTotal": "合计:", - "TablesFooterTemplateSentences": "这里可以写一些描述性的语句", - "TablesFooterTemplateTotal": "合计:" + "BootstrapBlazor.Server.Components.Samples.MindMaps": { + "CustomButtonText": "自定义", + "ExportButtonText": "导出 PNG", + "ExportJsonButtonText": "导出 Json", + "FitButtonText": "自适应", + "GetDataButtonText": "GetData", + "GetFullDataButtonText": "GetFullData", + "MindMapDescription": "用于将特定 Json 格式数据展示成 Web 思维导图", + "MindMapExtensionDesc": "

          由于 MindMap 封装的 api 方法比较多,组件库无法完全封装,所以提供了扩展方法。例如使用组件需要一个组合按钮,可以通过自己的代码调用自己的 Javascript 来控制 MindMap

          • 自定义按钮调用组件实例方法 MindMap.Execute(\"clickCustom\", \"args1\"),假设参数为 args1
          • 自己实现 Javascript 负责处理 clickCustom 事件
          • clickCustom 方法内 this 即为 MindMap 当前实例,可以调用其任意方法进行自己业务开发

          完整示例如下:

          ", + "MindMapLayout": "布局", + "MindMapNormalTitle": "基本用法", + "MindMapTheme": "主题", + "MindMapTitle": "Mind Map 思维导图", + "ResetButtonText": "复位", + "Sample1ButtonText": "普通示例", + "Sample2ButtonText": "周安排示例", + "Scale1ButtonText": "缩小", + "Scale2ButtonText": "放大", + "SetDataButtonText": "SetData" }, - "BootstrapBlazor.Server.Components.Samples.Table.TablesAutoRefresh": { - "TablesAutoRefreshTitle": "自动刷新表格功能", - "TablesAutoRefreshDescription": "在某种应用场景中,数据源的变化需要重新刷新表格组件", - "TablesAutoRefreshNormalTitle": "自动刷新", - "TablesAutoRefreshNormalIntro": "本示例演示在后台线程中对数据源进行监控,当数据源变化时通知表格组件进行数据刷新", - "TablesAutoRefreshNormalTips1": "通过设置 IsAutoRefresh 属性值来开启自动刷新功能,AutoRefreshInterval 属性值默认为 2000 毫秒,此值为自动刷新时间间隔,周期性调用组件的 QueryAsync 方法使表格具有自动刷新功能", - "TablesAutoRefreshNormalTips2": "本例中每间隔 2 秒钟数据增加一条新数据并保持最多 10 条数据", - "TablesAutoRefreshControlTitle": "通过设置变量控制是否自动更新", - "TablesAutoRefreshControlIntro": "本示例通过设置变量控制是否自动更新", - "TablesAutoRefreshControlDescription": "通过点击按钮开始/关闭是否自动更新功能", - "TablesAutoRefreshControlToggleAuto": "更改 Auto", - "TablesAutoRefreshControlIsAutoRefresh": "当前值" + "BootstrapBlazor.Server.Components.Samples.Modals": { + "ModalsBigPopup": "大弹窗", + "ModalsCenterVerticallyIntro": "通过 IsCentered 设置弹框组件的垂直居中", + "ModalsCenterVerticallyTitle": "垂直居中", + "ModalsDescription": "在保留当前页面状态的情况下,告知用户并承载相关操作", + "ModalsDialogResizeIntro": "通过设置 ShowResize=\"true\" 可以通过鼠标拉动弹窗右下角进行窗口大小调整", + "ModalsDialogResizeTitle": "调整大小弹窗", + "ModalsDialogSizeIntro": "通过 Size 设置弹框组件的大小", + "ModalsDialogSizeTitle": "弹框大小", + "ModalsFullScreenPopup": "全屏弹窗", + "ModalsFullScreenPopup1200": "全屏弹窗(<1200px)", + "ModalsFullScreenPopup1400": "全屏弹窗(<1400px)", + "ModalsFullScreenPopup992": "全屏弹窗(<992px)", + "ModalsFullScreenSizeIntro": "设置属性 FullScreenSize 即可", + "ModalsFullScreenSizeTitle": "全屏弹窗", + "ModalsIsBackdropIntro": "点击弹窗以外区域默认关闭弹窗效果", + "ModalsIsBackdropTitle": "IsBackdrop 背景关闭模式", + "ModalsIsBackdropToClose": "点击背景可关闭弹窗", + "ModalsIsDraggableIntro": "点击弹窗标题栏对弹窗进行拖拽", + "ModalsIsDraggableTitle": "可拖拽弹窗", + "ModalsLargeFullScreenPopup": "大全屏弹窗", + "ModalsLargeFullScreenPopupWindow": "超大全屏弹窗", + "ModalsLongContentIntro": "通过 IsScrolling 针对超出内容设置弹框组件滚轮滑动功能", + "ModalsLongContentTitle": "超长内容", + "ModalsMaximizeIntro": "通过设置 ShowMaximinzeButton 弹窗显示最大化按钮", + "ModalsMaximizePopup": "可最大化弹窗", + "ModalsMaximizeTitle": "最大化按钮", + "ModalsNormalDefaultPopup": "默认弹窗", + "ModalsNormalDefaultPopupText": "我是弹窗内正文", + "ModalsNormalIntro": "弹出一个对话框,适合需要定制性更大的场景", + "ModalsNormalIsKeyboard": "通过设置 Modal 组件的 IsKeyboard:true 参数,开启弹窗是否支持 ESC", + "ModalsNormalPopups": "弹窗", + "ModalsNormalPopupText": "弹窗正文", + "ModalsNormalPopupTitle": "弹窗标题", + "ModalsNormalTitle": "基本用法", + "ModalsOverSizedPopup": "超大弹窗", + "ModalsResize": "弹框大小", + "ModalsScrollBarPopup": "内置滚动条弹窗", + "ModalsShownCallbackAsyncIntro": "通过设置 ShownCallbackAsync 回调委托,弹窗显示后回调此方法", + "ModalsShownCallbackAsyncTitle": "弹窗已显示回调方法", + "ModalsSmallPopup": "小弹窗", + "ModalsSuperLargeFullScreenPopupWindow": "超超大全屏弹窗", + "ModalsSuperLargePopup": "超超大弹窗", + "ModalsTitle": "Modal 模态框", + "ModalsTitlePopupWindowText": "我是弹窗内正文", + "ModalsVerticallyCenteredPopup": "垂直居中的弹窗", + "ModalsVeryLongContent": "内容超长的弹窗" }, - "BootstrapBlazor.Server.Components.Samples.Table.TablesSelection": { - "TablesSelectionTitle": "Table 表格", - "TablesSelectionDescription": "通过设置 SelectedRows 设置表格行状态,通过选中样式可以设置高亮", - "TablesSelectionNormalTitle": "设置选中行功能", - "TablesSelectionNormalIntro": "通过设置 SelectedRows 属性集合初始化表格时默认为选中状态", - "TablesSelectionNormalTips": "保持行状态回落机制,ModelEqualityComparer CustomKeyAttribute IEqualityComparer<TItem> Equals 重载方法", - "TablesSelectionNormalSelectRow": "选中的行记录", - "TablesSelectionNormalButtonText": "清除选择", - "TablesSelectionKeepInfo": "保持选中行状态:", - "TablesSelectionKeepOnText": "保持", - "TablesSelectionKeepOffText": "不保持", - "TablesSelectionCountText": "选中的行数:{0}", - "TablesSelectionScrollTitle": "渲染结束后回调方法", - "TablesSelectionScrollIntro": "通过设置 OnAfterRenderCallback 回调方法,执行一些特殊操作", - "TablesSelectionScrollDescription": "点击按钮后选中最后一行,并且将选中行自动滚动到视窗可见区域内,本代码为示例,本功能可通过设置 AutoScrollLastSelectedRowToView=\"true\" 开启,通过 AutoScrollVerticalAlign 参数设置对齐方式", - "TablesSelectionScrollButtonText": "选中最后一行" + "BootstrapBlazor.Server.Components.Samples.MouseFollowers": { + "MouseFollowerIconIntro": "在光标中显示SVG图", + "MouseFollowerIconTitle": "图标模式", + "MouseFollowerImageIntro": "在光标中显示图片", + "MouseFollowerImageTitle": "图片模式", + "MouseFollowerNormalIntro": "显示一个跟随元素", + "MouseFollowerNormalTitle": "普通模式", + "MouseFollowersDescription": "可以为网站上的鼠标光标创建惊人而流畅的效果。", + "MouseFollowersTitle": "鼠标跟随器", + "MouseFollowerTextIntro": "在光标中显示文本", + "MouseFollowerTextTitle": "文本模式", + "MouseFollowerVideoIntro": "在光标中播放视频", + "MouseFollowerVideoTitle": "视频模式" }, - "BootstrapBlazor.Server.Components.Samples.Table.TablesExcel": { - "TablesExcelTitle": "Table 表格", - "TablesExcelDescription": "常用于大数据单表维护", - "TablesExcelOnQueryTitle": "绑定集合", - "TablesExcelOnQueryIntro": "通过 OnQueryAsync 回调获得数据集合", - "TablesExcelTips": "使用 List<TItem> 泛型集合作为数据源时,需要按照下面的步骤进行设置", - "TablesExcelSetDataSourceTitle": "1. 设置数据源", - "TablesExcelSetDataSourceDescription": "设置 Table 组件的 Items 属性或者 OnQueryAsync 回调委托方法", - "TablesExcelNewLogicTitle": "2. 处理新建逻辑", - "TablesExcelNewLogicDescription": "设置 OnAddAsync 回调委托函数处理 新建 逻辑", - "TablesExcelNewLogicNote1": "此处代码为示例代码", - "TablesExcelNewLogicNote1Address": "自定义地址", - "TablesExcelNewLogicNote2": "输出日志信息", - "TablesExcelNewLogicNote2Log1": "集合值变化通知 列", - "TablesExcelNewLogicNote2Log2": "类型", - "TablesExcelDeleteLogicTitle": "3. 处理删除逻辑", - "TablesExcelDeleteLogicDescription": "设置 OnDeleteAsync 回调委托函数处理 删除 逻辑", - "TablesExcelDeleteLogicNote1": "此处代码为示例代码", - "TablesExcelDeleteLogicNote2": "输出日志信息", - "TablesExcelDeleteLogicNote2Log1": "集合值变化通知 列", - "TablesExcelDeleteLogicNote2Log2": "类型", - "TablesExcelUpdateLogicTitle": "4. 处理更新逻辑", - "TablesExcelUpdateLogicDescription1": "设置 OnSaveAsync 回调委托函数处理单元格 更新 逻辑", - "TablesExcelUpdateLogicDescription2": "组件内部所有单元格编辑更新后会自动触发 OnSaveAsync 回调委托,参数是当前更新模型 TItem", - "TablesExcelUpdateLogicNote": "此处代码为示例代码", - "TablesExcelUpdateLogicLog1": "单元格变化通知 类: Foo ", - "TablesExcelUpdateLogicLog2": "值: 单元格", - "TablesExcelCellRenderTitle": "通过编辑模板单独控制单元格渲染方式", - "TablesExcelCellRenderIntro": "高级用法", - "TablesExcelCellRenderTips1": "IsFixedHeader 固定表头 高度设定为 Height='500px'", - "TablesExcelCellRenderTips2": "Name 不可编辑显示头像" + "BootstrapBlazor.Server.Components.Samples.MultiSelects": { + "MultiSelectAdd": "添加", + "MultiSelectBindingCollectionDescription": "本例中通过双向绑定 SelectedArrayValues 集合变量,通过下拉框选择更改其值", + "MultiSelectBindingCollectionIntro": "绑定一个泛型 IEnumerable 集合", + "MultiSelectBindingCollectionTitle": "双向绑定值集合", + "MultiSelectBindingEnumCollectionDescription": "本例中通过双向绑定 SelectedEnumValues 集合变量,通过下拉框选择更改其值,枚举 类型时无需设置 Items 参数,额外功能是组件内部会尝试查找资源文件或者 DisplayAttributeDescriptionAttribute 标签尝试进行本地化翻译工作,如本例切换到 中文 时枚举值为 小学中学", + "MultiSelectBindingEnumCollectionIntro": "绑定一个泛型 IEnumerable 集合", + "MultiSelectBindingEnumCollectionTitle": "双向绑定枚举集合", + "MultiSelectBindingNumberDescription": "本例中通过双向绑定 SelectedIntArrayValues 数组变量,通过下拉框选择更改其值", + "MultiSelectBindingNumberIntro": "绑定一个数组 int[]", + "MultiSelectBindingNumberTitle": "双向绑定值数组", + "MultiSelectBindingStringDescription": "
          MultiSelect 组件数据源 Items选中值 SelectedItemsValue 均支持双向绑定;本例中通过双向绑定 SelectedItemsValue 变量,通过下拉框选择更改其值
          ", + "MultiSelectBindingStringIntro": "绑定一个逗号字符串分割的字符串", + "MultiSelectBindingStringTitle": "双向绑定值字符串", + "MultiSelectButtonIntro": "通过参数 ShowToolbar 控制是否显示工具栏,通过参数 ShowDefaultButtons 控制是否显示内置的三个按钮,通过参数 ShowSearch 控制是否显示搜索栏", + "MultiSelectButtonTitle": "全选与反选按钮", + "MultiSelectCascadingDescription": "本例中点击第一个下拉框,可以通过异步方法获取第二个多选框的数据源,进行赋值后,调用 StateHasChanged 进行对 多选框 重新渲染", + "MultiSelectCascadingIntro": "通过选择第一个下拉框不同选项,第二个下拉框动态填充内容。", + "MultiSelectCascadingTitle": "级联绑定", + "MultiSelectClean": "清空", + "MultiSelectClientValidationDescription": "内置到 ValidateForm 组件时,自动开启客户端验证功能,绑定模型拥有 Required 标签", + "MultiSelectClientValidationIntro": "下拉框未选择时,点击提交按钮时拦截。", + "MultiSelectClientValidationSubmit": "提交", + "MultiSelectClientValidationTitle": "客户端验证", + "MultiSelectColorIntro": "提供各种颜色的多选下拉框", + "MultiSelectColorTitle": "颜色", + "MultiSelectDecrease": "减少", + "MultiSelectDisableDescription": "禁用状态时组件无任何响应", + "MultiSelectDisableIntro": "通过设置 IsDisabled 值设置组件禁用状态", + "MultiSelectDisableTitle": "禁用功能", + "MultiSelectDisplayLabelCustomDisplayText": "自定义 DisplayText", + "MultiSelectDisplayLabelCustomText": "自定义姓名", + "MultiSelectDisplayLabelDescription": "前置标签显式规则与 BootstrapInput 组件一致 [传送门]", + "MultiSelectDisplayLabelHideLabel": "双向绑定不显示标签", + "MultiSelectDisplayLabelIntro": "组件双向绑定时会根据条件自动判断是否显示标签文字", + "MultiSelectDisplayLabelShowLabel": "双向绑定显示标签", + "MultiSelectDisplayLabelTitle": "显示标签", + "MultiSelectDisplayTemplateIntro": "通过设置 DisplayTemplate 模板自定义显示样式", + "MultiSelectDisplayTemplateTitle": "显示模板", + "MultiSelectExpandButtonIntro": "通过设置 ButtonTemplate 自定义工具栏按钮实现自定义功能", + "MultiSelectExpandButtonText": "测试", + "MultiSelectExpandButtonTitle": "扩展工具栏按钮", + "MultiSelectFlagsEnumIntro": "绑定值为 Enum 数据类型时,如果枚举有 Flags 标签时,自动支持多选模式", + "MultiSelectFlagsEnumTitle": "Flags 枚举", + "MultiSelectGenericIntro": "数据源 Items 使用 SelectedItem<TValue> 时即可支持泛型", + "MultiSelectGenericTitle": "泛型支持", + "MultiSelectGroupIntro": "通过设置 GroupName 将下拉框中的备选项进行分组显示", + "MultiSelectGroupTitle": "分组", + "MultiSelectIsEditableDescription": "通过设置 EditSubmitKey 参数可以指定通过 Enter 还是 Space 进行提交", + "MultiSelectIsEditableIntro": "通过设置 IsEditable 参数,使组件可编辑", + "MultiSelectIsEditableTitle": "可编辑", + "MultiSelectIsSingleLineDescription": "候选项过多时,组件横向布局,鼠标悬浮组件上时显示横向滚动条进行数据滚动", + "MultiSelectIsSingleLineIntro": "通过设置 IsSingleLine=\"true\" 使组件始终渲染成一行", + "MultiSelectIsSingleLineTitle": "单行显示", + "MultiSelectItemTemplateIntro": "通过设置 ItemTemplate 设置下拉框中选项模板,可以自定义样式", + "MultiSelectItemTemplateTitle": "选项模板", + "MultiSelectMaxMinIntro": "通过设置 Max Min 值设置组件可选项数量限制", + "MultiSelectMaxMinMax": "最多可选择两个选项", + "MultiSelectMaxMinMin": "最少选择两个选项", + "MultiSelectMaxMinTitle": "设置选项最大数与最小数", + "MultiSelectOptionChangeIntro": "通过设置 OnSelectedItemsChanged 回调方法获取当前选中数据集合改变事件", + "MultiSelectOptionChangeLog": "选中项集合", + "MultiSelectOptionChangeTitle": "选项改变时事件", + "MultiSelectPopoverIntro": "通过设置 IsPopover 参数,组件使用 popover 渲染 UI 防止由于父容器设置 overflow: hidden; 使弹窗无法显示问题", + "MultiSelectPopoverTitle": "悬浮弹窗", + "MultiSelectsDescription": "当进行多项选项时,使用下拉菜单展示并提供搜索多项选择内容", + "MultiSelectSearchDescription": "本例中设置搜索回调委托方法 OnSearchTextChanged 进行自定义搜索结果,如果未设置时内部使用显示文本进行模糊匹配", + "MultiSelectSearchIntro": "通过设置 ShowSearch 值开启搜索功能", + "MultiSelectSearchLog": "搜索文字", + "MultiSelectSearchTitle": "搜索功能", + "MultiSelectsEvent_OnSearchTextChanged": "搜索文本发生变化时回调此方法", + "MultiSelectsEvent_OnSelectedItemsChanged": "下拉框选项改变时触发此事件", + "MultiSelectsTitle": "MultiSelect 多项选择器", + "MultiSelectVeryLongTextDisplayText": "超长文字", + "MultiSelectVeryLongTextIntro": "候选项文字特别长", + "MultiSelectVeryLongTextTitle": "选项超长文字", + "MultiSelectVirtualizeDescription": "组件虚拟滚动支持两种形式通过 Items 或者 OnQueryAsync 回调方法提供数据", + "MultiSelectVirtualizeIntro": "通过设置 IsVirtualize 参数开启组件虚拟功能特性", + "MultiSelectVirtualizeTitle": "虚拟滚动" }, - "BootstrapBlazor.Server.Components.Samples.Table.TablesDynamicExcel": { - "TablesDynamicExcelTitle": "Table 表格", - "TablesDynamicExcelDescription": "常用于大数据单表维护", - "TablesDynamicExcelNormalTitle": "Excel 模式", - "TablesDynamicExcelNormalIntro": "通过设置表格的 IsExcel 属性,使组件呈现为类似 Excel", - "TablesDynamicExcelNormalDescription": "Excel 模式下绑定是 动态类型 时,无法使用 TableColumn 对列属性进行设置,本例中使用 DynamicContext 实例对象 DataTableDynamicContext 构造函数进行设置", - "TablesDynamicExcelEnumTitle": "枚举类型", - "TablesDynamicExcelEnumIntro": "设置列 Items 值,将枚举类型渲染成 Select 组件", - "TablesDynamicExcelEnumNotSet": "未设置", - "TablesDynamicExcelEnumTip": "通过上面代码将 Education 列使用 Select 组件渲染", - "TablesDynamicExcelKeyboardTitle": "键盘支持", - "TablesDynamicExcelKeyboardIntro": "本示例用于测试 Excel 模式下键盘支持", - "TablesDynamicExcelKeyboardDescription": "目前支持", - "TablesDynamicExcelKeyboardTips_IsExcel": "开启 IsExcel 模式后,部分参数将不再生效,斑马线 IsStriped 树形表格 IsTree 明细行 IsDetails 多选栏 IsMultipleSelect", - "TablesDynamicExcelKeyboardTips_DatTable": "使用 DatTable 为数据源时,需要按照下面的步骤进行设置", - "TablesDynamicExcelKeyboardTips1_Title": "1. 设置数据源上下文", - "TablesDynamicExcelKeyboardTips1_note1": "设置 Table 组件的 TItem 属性值为 DynamicObject", - "TablesDynamicExcelKeyboardTips1_note2": "设置 Table 组件的 DynamicContext 属性值为 DataTableDynamicContext 实例", - "TablesDynamicExcelKeyboardTips1_note3": "设置 Enum 类型渲染成 Select", - "TablesDynamicExcelKeyboardTips1_note4": "将枚举转化为 List", - "TablesDynamicExcelKeyboardTips2_Title": "2. 处理 DataRow 变化逻辑", - "TablesDynamicExcelKeyboardTips2_note1": "设置 OnChanged 回调委托函数处理 新建/删除 逻辑", - "TablesDynamicExcelKeyboardTips2_note2": "输出日志信息", - "TablesDynamicExcelKeyboardTips3_Title": "3. 处理 DataCell 变化逻辑", - "TablesDynamicExcelKeyboardTips3_note1": "设置 OnValueChanged 回调委托函数处理单元格 更新 逻辑", - "TablesDynamicExcelKeyboardTips3_note2": "获得内置 OnValueChanged 回调", - "TablesDynamicExcelKeyboardTips3_note3": "调用内部提供的方法", - "TablesDynamicExcelKeyboardTips3_note4": "内部方法会更新原始数据源 DataTable", - "TablesDynamicExcelKeyboardTips3_note5": "输出日志信息" + "BootstrapBlazor.Server.Components.Samples.Navbars": { + "NavbarDescription": "是网站开发中用于定义顶部导航区域或主页快速启动区域的结构化组件", + "NavbarTitle": "Navbar 导航栏", + "NormalIntro": "通过设置 NavbarBrand NavbarToggleButton NavbarCollapse NavbarGroup NavbarItem 对其内部元素布局", + "NormalTitle": "基本用法" + }, + "BootstrapBlazor.Server.Components.Samples.Navigation": { + "NavsAlignIntro": "通过设置 Alignment 属性来控制组件对齐方式", + "NavsAlignTitle": "对齐", + "NavsDescription": "为网站提供导航功能的菜单。", + "NavsDivider": "分割线", + "NavsFillAndAlignIntro": "通过设置 IsFill 属性控制导航菜单均匀分布填满整个导航栏", + "NavsFillAndAlignTitle": "填充和对齐", + "NavsNormalIntro": "本例中通过设置 Items 属性,通过程序 api 对导航组件进行赋值,并且在导航组件的 ChildContext 中直接写入 NavLink 组件", + "NavsNormalTitle": "基本导航样式", + "NavsPillsIntro": "通过设置 IsPills 属性控制导航菜单背景色", + "NavsPillsTitle": "胶囊式", + "NavsTitle": "Nav 导航组件", + "NavsVerticalIntro": "本例中通过设置 IsVertical 属性控制导航是否为垂直分布", + "NavsVerticalTitle": "垂直", + "NavsWideIntro": "通过设置 IsJustified 属性使每个导航项目将具有相同的宽度。", + "NavsWideTitle": "等宽" }, - "BootstrapBlazor.Server.Components.Samples.Table.TablesExport": { - "TablesExportTitle": "Table 表格", - "TablesExportDescription1": "通过设置 ShowExportButton 参数显示导出按钮,组件内置导出 Excel/Csv/Pdf 功能", - "TablesExportDescription2": "导出功能提供了导出回调方法 OnExportAsync 使用时可以通过提供自定义的导出方法进行数据导出,如果未提供数据导出方法,组件会根据注入的导出服务进行数据导出", - "TablesExportTips": "注入服务", - "TablesExportNote1": "增加 BootstrapBlazor 组件", - "TablesExportNote2": "增加 Table Excel 导出服务", - "TablesExportShowExportButtonTitle": "表格导出功能", - "TablesExportShowExportButtonIntro": "通过设置 ShowExportButton=\"true\" 属性是否显示导出按钮,默认为false", - "TablesExportShowExportCsvButtonTitle": "导出 Csv/Pdf", - "TablesExportShowExportCsvButtonIntro": "通过设置 ShowExportCsvButton=\"true\" ShowExportPdfButton=\"true\" 控制 Csv/Pdf 导出按钮", - "TablesExportOnExportAsyncTitle": "自定义导出方法", - "TablesExportOnExportAsyncIntro": "通过设置 OnExportAsync 回调委托方法可自定义导出方法,不设置将使用组件内置导出函数,可通过设置列属性 IgnoreWhenExport=\"true\" 导出时忽略此列", - "TablesExportButtonDropdownTemplateTitle": "自定义导出下拉框按钮", - "TablesExportButtonDropdownTemplateIntro": "通过设置 ExportButtonDropdownTemplate 模板自定义导出按钮下拉框内容", - "TablesExportButtonExcelText": "导出当前页数据 Excel", - "TablesExportButtonExcelAllText": "导出全部数据 Excel", - "TablesExportButtonCliBoardText": "导出当前页到剪切板", - "TablesExportButtonCliBoardAllText": "导出全部页到剪切板", - "TablesExportToastTitle": "数据导出", - "TablesExportToastSuccessContent": "导出数据成功,4 秒后自动关闭", - "TablesExportToastFailedContent": "导出数据失败,4 秒后自动关闭", - "TablesExportPdfDesc": "导出 Pdf 功能依赖额外组件包", - "TablesExportPdfNote1": "注入 Html2Pdf 服务", - "TablesExportPdfNote2": "增加 Html2Pdf 导出服务" + "BootstrapBlazor.Server.Components.Samples.NetworkMonitors": { + "IndicatorLi1": "绿色:网络非常好 (4G)", + "IndicatorLi2": "黄色:网络一般 (3G)", + "IndicatorLi3": "红色:网络差 (2G)", + "IndicatorLi4": "灰色:离线状态", + "NetworkMonitorDescription": "使用浏览器原生 api navigator.connection 实时显示当前网络状态", + "NetworkMonitorTitle": "NetworkMonitor 网络状态", + "NormalIntro": "使用组件 NetworkMonitorIndicator 当网络状态变化时,显示不同颜色的指示灯,鼠标移动到上面时显示网络状态明细", + "NormalTitle": "基本用法" }, - "BootstrapBlazor.Server.Components.Samples.Table.TablesToolbar": { - "TablesToolbarTitle": "Table 表格", - "TablesToolbarDescription": "用于展示多条结构类似的数据,可对数据进行排序、筛选、对比或其他自定义操作。", - "TablesToolbarNormalTitle": "带 Toolbar 的表格", - "TablesToolbarNormalIntro": "设置 ShowToolbar 显示工具条组件", - "TablesToolbarQueryTableTitle": "带查询的表格", - "TablesToolbarQueryTableIntro": "设置 ShowSearch 显示查询组件", - "TablesToolbarQueryTableDescription": "本例中通过设置 ShowCardView 显示 视图 按钮,用于切换 Table 组件渲染方式", - "TablesToolbarCustomButtonTitle": "自定义扩展按钮", - "TablesToolbarCustomButtonIntro": "设置 TableToolbarTemplate 模板添加自定义扩展按钮", - "TablesToolbarCustomButtonDescription": "本例中实现经典的应用场景", - "TablesToolbarCustomButtonTips1_title": "点击下载按钮,后台开启下载线程进行数据处理,禁用 下载按钮", - "TablesToolbarCustomButtonTips1_note1": "前台显示进度条提示,正在打包导出,此期间可以处理其他事务", - "TablesToolbarCustomButtonTips1_note2": "数据处理完成后,关闭前台提示弹窗,恢复 下载按钮", - "TablesToolbarCustomButtonTips2_title": "本例中通过设置 TableToolbarButton 按钮的 IsAsync 属性开启 异步操作模式,请注意 OnClickCallback 回调委托内需要使用真正的 异步操作 否则无效果", - "TablesToolbarCustomDisplayButtonTitle": "自定义显示功能按钮", - "TablesToolbarCustomDisplayButtonIntro": "通过设置 ShowAddButton ShowEditButton ShowDeleteButton 属性值来控制单独功能按钮是否显示,当 ShowDefaultButtons 设置为 false 时,所有按钮均不显示", - "TablesToolbarCustomButton1": "下载1", - "TablesToolbarCustomButton2": "下载2", - "TableToolbarPopConfirmButton1": "确认下载", - "TablesToolbarCustomComponentTitle": "自定义组件", - "TablesToolbarCustomComponentIntro": "使用 TableToolbarComponent 组件实现将自己需要的组件放到工具栏上", - "TablesToolbarCustomComponentDescription": "自定义组件在收缩成一个小图标时目前不渲染,稍后有更好的方案时再解决,如果想将组件放到内置按钮后面时,请使用 TableToolbarTemplate 模板", - "TablesToolbarShowRefreshTitle": "不显示刷新按钮", - "TablesToolbarShowRefreshIntro": "设置 ShowToolbar=\"true\" ShowRefresh=\"false\" 组合条件显示工具栏并且不显示刷新按钮", - "TablesToolbarShowRefreshDesc": "点击 刷新 按钮组件内部调用组件实例方法 QueryAsync 如果是 虚拟滚动 模式根据数据源不同触发不同请求数据模式;如果是使用 OnQueryAsync 回调方法作为数据源时,会自动调用" + "BootstrapBlazor.Server.Components.Samples.Notifications": { + "NotificationsIconText": "图标", + "NotificationsNormalButtonText": "显示通知", + "NotificationsNormalCheckPermissionText": "检查权限", + "NotificationsNormalDescription": "单击按钮以发送通知", + "NotificationsNormalGetPermissionCallbackText": "检查通知权限结果回调", + "NotificationsNormalIntro": "通过浏览器API发送通知信息", + "NotificationsNormalMessageSampleText": "您的包裹已到达亮马河南路,距离分发只剩3站.", + "NotificationsNormalMessageText": "信息", + "NotificationsNormalOnClickText": "通知点击后的回调方法名称", + "NotificationsNormalPermissionText": "允许通知", + "NotificationsNormalSilentText": "静默", + "NotificationsNormalTips1": "注意: 出于安全考虑,当网页请求发送通知时,用户会被提示进行授权", + "NotificationsNormalTips2": "使用 BrowserNotification 静态方法直接调用 Dispatch 方法", + "NotificationsNormalTitle": "基础用法", + "NotificationsNormalTitleSampleText": "你有新的物流通知", + "NotificationsNormalTitleText": "标题", + "NotificationsSoundText": "通知触发时要播放的音频文件的 URL", + "NotificationsTitle": "通知" }, - "BootstrapBlazor.Server.Components.Samples.Table.TablesCell": { - "TablesCellTitle": "Table 表格", - "TablesCellDescription": "单元格相关操作示例", - "TableCellMergeCellTitle": "合并单元格", - "TableCellMergeCellIntro": "基础的表格展示用法", - "TableCellMergeCellTip": "本例中通过设置 OnCellRenderHandler 回调委托,通过判断条件对 NameAddress 两列进行单元格合并操作,并且通过设置 TableCellArgs 属性 Class 值为 cell-demo 样式表名称对合并后单元格进行背景色设置", - "TableCellOnDoubleClickCellTitle": "双击单元格", - "TableCellOnDoubleClickCellIntro": "通过设置 OnDoubleClickColumn 回调,设置当前单元格的双击事件", - "TableCellOnDoubleClickCellTip": "设置双击单元格回调后,鼠标悬停单元格后单元格出现下标横线,以作提示可通过 .table-cell .is-dbcell 样式覆盖", - "RowAttr": "当前单元格行数据 请自行转化为绑定模型", - "ColumnNameAttr": "当前单元格绑定列名称", - "ColspanAttr": "合并单元格数量", - "ClassAttr": "当前单元格样式", - "ValueAttr": "当前单元格显示内容", - "TableCellOnDoubleClickCellToastTitle": "双击单元格回调", - "TableCellOnDoubleClickCellCurrentCellName": "当前单元格名称:", - "TableCellOnDoubleClickCellCurrentValue": "当前值:" + "BootstrapBlazor.Server.Components.Samples.OfficeViewers": { + "OfficeViewerDescription": "本组件通过使用微软在线文档预览功能预览 Office 文档内容", + "OfficeViewerNormalIntro": "通过设置 Url 值设置预览文档地址", + "OfficeViewerNormalTitle": "基本用法", + "OfficeViewerTitle": "Office 文档预览器", + "OfficeViewerToastSuccessfulContent": "Office 文档加载成功" }, - "BootstrapBlazor.Server.Components.Samples.Table.TablesLookup": { - "TablesLookupTitle": "Table 表格", - "TablesLookupDescription": "用于自动将外键列转换成 Text 显示文字", - "TableLookupNormalTitle": "Lookup 外置数据源", - "TableLookupNormalIntro": "通过设置 Lookup 自动翻译显示文字", - "TableLookupNormalTips2": "组件自动将 Complete 转换为 DataSource 集合中的预设值", - "TableLookupNormalTips3": "本例中使用 ILookupService 服务进行统一处理,通过设置 LookupServiceKey=\"Foo.Complete\",从服务中获取 Complete 相关数据集合,将值 true 自动转化为 通过 false 转化为 未通过", - "TableLookupNormalTips1": "关于详细 ILookupService 文档请参阅 [传送门]" + "BootstrapBlazor.Server.Components.Samples.OnScreenKeyboards": { + "OnScreenKeyboardsAppDescription": "双绑", + "OnScreenKeyboardsAppTitle": "BootstrapBlazor 组件", + "OnScreenKeyboardsBasicTitle": "基础用法", + "OnScreenKeyboardsCss": " .kioskboard-body-padding { padding-top: unset !important;} ", + "OnScreenKeyboardsNormalIntro": "全键盘", + "OnScreenKeyboardsNormalText": "基础用法", + "OnScreenKeyboardsSpecialcharactersCustomerTitle": "特殊符号自定义", + "OnScreenKeyboardsSpecialcharactersTitle": "特殊符号-欧洲", + "OnScreenKeyboardsThemeDarkTitle": "暗黑主题", + "OnScreenKeyboardsTips": "如果表现不正常,可以加上这句 css 调试看看", + "OnScreenKeyboardsTitle": "On-Screen keyboard 屏幕键盘", + "OnScreenKeyboardsTypekeyboardTitle": "字母键盘", + "OnScreenKeyboardsTypeNumpadTitle": "数字键盘" }, - "BootstrapBlazor.Server.Components.Samples.Table.TablesRow": { - "TablesRowTitle": "Table 表格", - "TablesRowDesc": "用于展示多条结构类似的数据,可对数据进行排序、筛选、对比或其他自定义操作。", - "RowNumberTitle": "显示行号", - "RowNumberIntro": "通过设置 ShowLineNo 属性为 true 时表格显示行号了,默认值为 false", - "RowNumberP": "设置 LineNoText 属性值来设置行号列头显示文本,默认为 行号", - "ClickToSelectTitle": "点击单元格选中整行效果", - "ClickToSelectIntro": "通过设置 ClickToSelect 属性值可以实现点击任意单元格选中整行效果,选中行样式被设置为 active", - "ClickToSelectP": "可以设置 OnClickRowCallback 回调委托方法对点击行做相应处理,点击表格中任意一行后在下方显示选中行绑定数据的 Name 值", - "ClickToSelectP2": "注意:此回调委托内部不进行 UI 渲染,需要 UI 数据更新操作时,请手动显式调用 StateHasChanged 方法", - "DoubleClickToEditTitle": "双击单元格编辑本行效果", - "DoubleClickToEditIntro": "通过设置 DoubleClickToEdit 属性值可以实现双击任意单元格编辑本行效果,此功能前提是 Edit 功能可用", - "DoubleClickToEditP": "移动端(CardView)模式暂时不支持双击编辑当前行功能", - "DoubleClickToEditP1": "多选模式下同样支持双击编辑功能,如果设置 ClickToSelect 点击选择效果后,双击编辑功能会导致行选中状态交替选中,请自行设置 ClickToSelect=false 关闭此功能", - "DoubleClickRowCallbackTitle": "自定义行双击事件", - "DoubleClickRowCallbackIntro": "本功能仅限 Table 组件单选模式下生效,通过设置 DoubleClickRowCallback 属性值可以实现双击任意单元格自定义回调委托方法,实现自己的需求功能", - "DoubleClickRowCallbackP": "移动端(CardView)模式暂时不支持双击编辑当前行功能", - "SetRowClassFormatterTitle": "自定义行高亮", - "SetRowClassFormatterIntro": "通过设置 SetRowClassFormatter 属性值可以实现通过行数据逻辑对行样式进行设置,实现自己高亮需求功能", - "SetRowClassFormatterP": "本例中 SetRowClassFormatter 方法通过判断绑定数据的 Count > 60 时行高亮显示", - "RowNumberText": "序号", - "ClickToSelectP3": "当前选中行:", - "ClickToSelectNoneText": "无", - "PlaceHolder": "不可为空,50字以内", - "RowContentTemplateTitle": "行内容模板", - "RowContentTemplateIntro": "通过设置 RowContentTemplate 模板,可通过分装组件的方式实现自定义行内单元格联动逻辑,达到性能最优化,避免单元格数据刷新导致联动后需要刷新整个表格组件的问题,可用于销售类软件,调整单价时总价列变化需求", - "RowContentTemplateDesc": "本例中通过自定义组件,实现选择日期后,联动数量列,随机生成一个随机数字,并且保存到原始数据中,从而不需要刷新整个 Table 组件", - "RowTemplateTitle": "行模板", - "RowTemplateIntro": "通过设置 RowTemplate 模板,可以根据自己的业务逻辑实现行合并功能" + "BootstrapBlazor.Server.Components.Samples.OpcDa": { + "OpcDaDescription": "连接 OpcDa Server 获得 PLC 实时数据", + "OpcDaNormalIntro": "通过注入服务 IOpcDaServer 获得实例,调用 Read 方法获得 PLC 位号值", + "OpcDaNormalTitle": "基本用法", + "OpcDaTitle": "OpcDa Server 服务" }, - "BootstrapBlazor.Server.Components.Samples.Table.TablesDynamic": { - "TablesDynamicTitle": "Table 表格", - "TablesDynamicDescription": "支持动态添加列", - "TablesDynamicDataTableTitle": "普通用法", - "TablesDynamicDataTableIntro": "仅展示 DataTable 数据", - "TablesDynamicEditTitle": "编辑功能", - "TablesDynamicEditIntro": "增加编辑维护功能", - "TablesDynamicEditDescription": "通过设置 DataTableDynamicContext 实例的 OnChanged 回调方法,新建行时自动设置值", - "TablesDynamicDynamicColTitle": "动态列", - "TablesDynamicDynamicColIntro": "通过代码动态调整 DataTable 表格组件自动更新", - "TablesDynamicPageTitle": "分页", - "TablesDynamicPageIntro": "通过与 Pagination 组件配合实现分页功能", - "TablesDynamicDynamicColButtonAddColumnText": "增加列", - "TablesDynamicDynamicColButtonRemoveColumnText": "移除列" + "BootstrapBlazor.Server.Components.Samples.OtpInputs": { + "OtpInputsDescription": "基于 OTP(One-Time Password‌) 仅限单次使用且具备时效性的安全验证密码框", + "OtpInputsNormalIntro": "通过设置 Type 等参数控制密码类型或者长度", + "OtpInputsNormalTitle": "基础用法", + "OtpInputsTips": "OTP(One Time Password,简称OTP):这是一种安全措施,用于在每次登录或交易时生成一个唯一的密码,本组件配合 ITotpService IHotpService 使用大大提高安全性", + "OtpInputsTitle": "OtpInput 密码框", + "OtpInputsValidateFormIntro": "密码未提供值时,点击提交按钮,密码框显示为红色,并且提示不可为空", + "OtpInputsValidateFormTitle": "表单内使用" }, - "BootstrapBlazor.Server.Components.Samples.Table.TablesSearch": { - "TablesSearchTitle": "Table 表格", - "TablesSearchDesc": "常用于单表维护,通过属性配置实现简单的增、删、改、查、排序、过滤、搜索等常用功能,通过 Template 的高级用法能实现非常复杂的业务需求功能", - "SearchTableTips": "Table 组件的搜索功能提供两种模式,可通过 SearchMode 进行设置,默认为 Popup 即弹窗模式,Top 模式下搜索栏会内置到表格上方,此模式下 刷新 按钮与 搜索 按钮二合一,可以通过设置 ShowSearchButton=false 关闭搜索按钮", - "SearchTableTitle": "具有搜索功能的表格", - "SearchTableIntro": "设置 ShowSearch 显示查询组件,通过设置 SearchTemplate 模板自定义搜索 UI", - "SearchTableLi1": "通过设置 ShowEmpty=\"true\" 开启无数据显示功能", - "SearchTableLi2": "EmptyText 参数用于设置无数据时显示文字,默认取资源文件中的内置文字", - "SearchTableLi3": "EmptyTemplate 参数用于自定义无数据显示模板", - "AutoGenerateSearchTitle": "自动生成搜索功能的表格", - "AutoGenerateSearchIntro": "当设置了 ShowSearch 时,如果未设置 SearchTemplate 编辑模板时,组件会尝试自动生成搜索条件 UI", - "AutoGenerateSearchP": "列信息绑定时通过设置 Searchable 属性,设置搜索条件自动构建 UI,可通过设置 SearchDialogShowMaximizeButton 使搜索弹窗显示 最大化 按钮", - "AutoGenerateSearchTips": "

          自动构建搜索弹窗时,由于各列设置 Searchable 此时组件会通过 SearchText 与设置 Searchable 值为 true 的各列自动构建搜索拉姆达表达式,通过 QueryPageOptions 的属性 Searches 获得

          ", - "AutoGenerateSearchComment": "逻辑关系使用", - "CustomColSearchTitle": "自定义列搜索模板", - "CustomColSearchIntro": "当设置了 SearchTemplate 时,组件自动生成搜索 UI 时使用此模板作为呈现 UI", - "CustomColSearchP": "通过设置姓名列的 SearchTemplate 自定义编辑时使用下拉框来选择姓名", - "CustomColSearchP1": "姓名列搜索模板使用下拉框进行数据过滤,并且增加了 请选择... 项", - "CustomColSearchP2": "生成列搜索模板是查找顺序为 SearchTemplate -> AutoGenerate 优先查找是否设置了搜索模板,然后根据绑定字段类型自动生成", - "CustomColSearchP3": "通过设置 ShowSearch 控制是否显示整个搜索栏", - "CustomColSearchP4": "通过设置 ShowSearchText 控制是否显示模糊搜索栏", - "CustomColSearchP5": "通过设置 ShowResetButton 控制是否显示重置搜索按钮", - "CustomColSearchP6": "通过设置 ShowAdvancedSearch 控制是否显示高级搜索按钮", - "CustomColSearchP7": "通过设置 SearchDialogDraggable=\"true\" 使搜索弹出框可拖拽", - "CustomerSearchModelTitle": "自定义搜索模型", - "CustomerSearchModelIntro": "设置了 CustomerSearchModelCustomerSearchTemplate,完全自主控制搜索条件 UI", - "CustomerSearchModelP": "由于某种应用场景我们的表格实体类 TItem 来充当搜索模型时并不理想,比如我们有一个属性是 int 或者 enum 时,我们作为搜索条件时需要有一个 全部 或者 请选择 ... 的空白条件项。此时使用默认模型时非常难用,就可以使用自定义搜索模型 CustomerSearchModelCustomerSearchTemplate 来自定义控制搜索界面", - "AddModelTitle": "增加测试数据窗口", - "EditModelTitle": "编辑测试数据窗口", - "SelectedItemText": "请选择 ...", - "SelectedItemText1": "姓名1", - "SelectedItemText2": "姓名2", - "SelectedItemValue1": "姓名1", - "SelectedItemValue2": "姓名2", - "AutoGenerateSearchGroupBoxTitle": "搜索功能体验区", - "DisplayText1": "搜索模式", - "DisplayText2": "模糊搜索", - "DisplayText3": "显示清空", - "DisplayText4": "显示搜索", - "SearchTableGroupBoxText": "搜索条件", - "NamePlaceholder": "请输入姓名,50字以内", - "AddressPlaceholder": "请输入地址,500字以内", - "AutoHeightIntro": "

          高度自适应

          本例中设置父容器高度为 600px 展开/收起搜索栏时,表格自动充满父容器

          " + "BootstrapBlazor.Server.Components.Samples.OtpServices": { + "BaseUsageIntro": "通过调用 ITotpService 服务实例方法 Compute 得到当前时间窗口内密码, 通过调用 Instance.GetRemainingSeconds 方法可以显示当前密码剩余有效时间,本例中通过进度条进行动态显示", + "BaseUsageTitle": "基本用法", + "SubTitle": "实现 TOTP RFC 6238 和 HOTP RFC 4226 认证器服务", + "Title": "ITotpService 时间密码验证服务" }, - "BootstrapBlazor.Server.Components.Samples.Table.TablesFilter": { - "MultiFilterTitle": "多选列表筛选", - "MultiFilterIntro": "通过 FilterTemplate 使用内置 MultiFilter 组件提供多选筛选功能", - "MultiFilterTips": "组件提供 Items OnGetItemsAsync 两种设置数据源方式", - "MultiFilterTipsLi1": "Items 适合数据量小且静态事先准备好的数据集合", - "MultiFilterTipsLi2": "OnGetItemsAsync 适合数据量大且动态的数据集合,出于性能考虑组件内部采用局域懒记载方式填装数据,即点开过滤窗口时才回调获得数据", - "TablesFilterTitle": "筛选和排序功能", - "TablesFilterDesc": "筛选可快速查找到自己想看的数据;排序可快速查找或对比数据。", - "TablesFilterDescLi1": "对某一列数据进行筛选,通过指定列的 Filterable 属性来指定需要筛选的列", - "TablesFilterDescLi2": "对某一列数据进行排序,通过指定列的 Sortable 属性来指定需要排序的列,通过多次点击更改排序规则", - "FilterableTitle": "可筛选数据的表格", - "FilterableIntro": "设置 TableColumn 列的 Filterable 属性,控制列头是否开启数据筛选功能", - "FilterableP": "Filterable 目前支持两种应用方式:", - "FilterableLi1": "查询方法参数中的 Filters 是筛选条件,数据库查询数据时可以通过此属性自行进行数据筛选", - "FilterableLi2": "无感使用,正常查询数据,对筛选不进行任何处理,组件内部将根据 Filter 进行内部处理", - "FilterableLi3": "外部已经进行了筛选时请设置 QueryData<TItem> 参数的 IsFiltered 属性值为 true", - "FilterableLi4": "各列可分别设置筛选条件,各列之间筛选条件为 And 并且的关系", - "FilterableDiv": "本示例分别为 DateTime、string、bool、enum、int 类型,弹出筛选框也分别不同", - "FilterableAlert": "开启筛选功能仅需要设置 TableColumnFilterable 值为 true,无需额外任何代码", - "FilterTemplateTitle": "自定义筛选模板", - "FilterTemplateIntro": "设置 FilterTemplate 模板值,自定义列筛选模板,非常适用于复杂类型的筛选弹窗", - "ShowFilterHeaderTitle": "显示过滤表头", - "ShowFilterHeaderIntro": "设置 ShowFilterHeader 属性值为 true 时显示过滤表头", - "DefaultSortTitle": "默认排序功能", - "DefaultSortIntro": "设置 DefaultSort 属性值为 true 时作为默认排序列", - "DefaultSortLi1": "设置 DefaultSort=true 开启默认排序功能,当多列设置此属性时,第一列起作用", - "DefaultSortLi2": "设置 DefaultSortOrder 值,设置默认排序规则", - "DefaultSortP": "本例中默认排序为最后一列倒序排序", - "SortListTitle": "多列排序", - "SortListIntro": "设置 SortList 属性,表格加载时使用此参数进行多列排序", - "SortListP": "本例中默认排序规则为:DeteTime desc Address,无需自己处理排序逻辑,组件内部已经内置", - "OnSortTitle": "动态多列排序", - "OnSortIntro": "设置 OnSort 参数", - "OnSortP": "点击列头进行排序时,组件内部调用 OnSort 回调,可以在此处根据业务逻辑设置其返回值即可实现动态多列排序功能,本例中点击 时间 列头进行正序排序时,内部使用 DateTime, Count 倒序时使用 DateTime desc, Count desc", - "OnAdvancedSortTitle": "自定义排序", - "OnAdvancedSortIntro": "通过设置 ShowAdvancedSort=\"true\" 显示 高级排序 按钮,通过自定义条件进行多列排序操作", - "SetFilterInCodeTitle": "通过代码设置过滤条件", - "SetFilterInCodeIntro": "示例展示如何通过代码设置过滤条件", - "SetFilterInCodeButtonText1": "名称包含01", - "SetFilterInCodeButtonText2": "重置条件", - "TablesFilterTemplateDescription": "

          FilterTemplate 类型为 RenderFragment 其值为自定义组件,组件必须继承 FilterBase 本例中最后一列 数量列 通过筛选模板使用自定义组件 CustomerFilter [传送门] CustomerFilter 组件源码

          注意事项:

          • 自定义过滤组件使用 FilterProvider 包裹,FilterProvider必须在 FilterTemplate 节点下
          • 通过 FilterProvider 组件的参数可微调过滤器;例如通过设置 ShowMoreButton 控制是否显示 + - 符号
          • v9.6.2 版本前,使用 OnFilterValueChanged 触发过滤回调,重构后使用 OnFilterAsync 触发过滤回调方法
          • ", - "CustomerFilterItem1": "全部", - "CustomerFilterItem2": "大于 10", - "CustomerFilterItem3": "大于 50", - "CustomerFilterItem4": "大于 80" + "BootstrapBlazor.Server.Components.Samples.Paginations": { + "PaginationsAlignmentIntro": "设置 Alignment 控制页码对齐方式", + "PaginationsAlignmentTitle": "对齐方式", + "PaginationsDescription": "当数据量过多时,使用分页分解数据。", + "PaginationsDisplayTextIntro": "只有一页时不显示切换页码组件,仅显示文本提示", + "PaginationsDisplayTextTitle": "仅显示文本提示", + "PaginationsGotoIntro": "通过设置 ShowGotoNavigator 参数控制是否显示跳转导航,可以通过 GotoTemplate 自定义跳转组件", + "PaginationsGotoTitle": "跳转导航", + "PaginationsInfoTemplateIntro": "通过 PageInfoTemplate 自定义分页信息", + "PaginationsInfoTemplateTitle": "分页模板", + "PaginationsInfoTotal": "共 20 页", + "PaginationsMaxPageLinkCountIntro": "通过 ShowPaginationInfo='false' 设置不显示文本提示", + "PaginationsMaxPageLinkCountTitle": "仅显示分页组件", + "PaginationsNormalIntro": "可以通过下拉框选取每页显示数据数量", + "PaginationsNormalTitle": "基础用法", + "PaginationsPageInfoTextIntro": "通过设置 ShowInfo 参数控制是否显示分页信息", + "PaginationsPageInfoTextTitle": "分页信息", + "PaginationsTitle": "Pagination 分页" }, - "BootstrapBlazor.Server.Components.Samples.Table.TablesFixedHeader": { - "TablesFixedHeaderTitle": "固定表头功能", - "TablesFixedHeaderDesc": "滚动数据时表头固定方便查看各列表头信息", - "TablesFixedHeaderDescP": " 本组件固定表头做法采用的是 双表头 做法,常见问题时出现列不对齐的问题,根据自己实际情况请自行添加部分样式,
            固定表头用法请尽可能的设置每列宽度,以避免列宽不对齐的问题", - "FixedHeaderTitle": "宽度自适应", - "FixedHeaderIntro": "设置 Height=200IsFixedHeader=\"true\" 固定表头", - "FixedHeaderP": "数据比较多加载后即出现纵向滚动条示例", - "FixedHeaderP1": "请设置个列宽度,允许一列宽度不设置,进行自动填充", - "FixedWidthTitle": "宽度固定", - "FixedWidthIntro": "设置 Height=200IsFixedHeader=\"true\" 固定表头,当每页显示数据为 10 行时高度超出设置值 200 后,Table 组件出现纵向滚动条", - "FixedWidthP": "所有列均设置宽度,当屏幕过小时会自动出现横向滚动条", - "AllowResizingTitle": "宽度可调整", - "AllowResizingIntro": "固定表头的同时设置 AllowResizing 属性,使列宽可以调整", - "AllowResizingP": "通过设置 Height 参数固定表头,通过设置 AllowResizing 参数允许调整列宽", - "AutoHeightTitle": "自适应高度", - "AutoHeightIntro": "不设置 Height 值通过父容器自适应高度", - "AutoHeightP": "本例中 Table 表格父容器高度改变时,组件会自适应高度与宽度", - "DialogIntro": "Table 组件在弹窗 Dialog 内使用", - "DialogDesc": "

            在弹窗中使用固定表头的 Table 注意事项:

            弹窗要给 DialogOptionClass 参数赋值,本例中设置为 dialog-table,这个操作是为了让我们自定义样式能够定位到弹窗中 Table 组件的父容器 modal-body 并设置其高度,这里可以使用自适应高度的写法 height: calc(100vh - 400px);;当 Table 组件的父级容器有高度后,组件自己就会通过计算进行自适应高度适配了
            ", - "DialogTitle": "弹窗内使用", - "DialogButtonText": "弹窗" + "BootstrapBlazor.Server.Components.Samples.PdfReaders": { + "PdfDescription": "在网页中直接嵌入和显示 PDF 文档,无需依赖用户本地安装的 PDF 阅读器", + "PdfReaderDownloadFileNameDesc": "可以通过设置参数 DownloadFileName 值,用于设置下载文件名", + "PdfReaderFAIconDesc": "PdfReader 组件图标依赖 BootstrapBlazor.FontAwesome 包,需要引用如下样式,否则工具栏图标无法显示", + "PdfReaderNormalIntro": "通过 Url 参数设置 pdf 文件地址,或者使用 OnGetStreamAsync 参数指定用于渲染的文件流", + "PdfReaderNormalText": "基础用法", + "PdfReaderSetPdfStreamDesc": "可以通过调用实例方法 SetPdfStreamAsync 或者 SetPdfBase64DataAsync 推流进行渲染", + "PdfTitle": "PDF Reader PDF 文档阅读器" }, - "BootstrapBlazor.Server.Components.Samples.Table.TablesAttribute": { - "TableAttributeTitle": "特性标签 AutoGenerateClassAttribute/AutoGenerateColumnAttribute", - "TableAttributeDescription": "通过使用特性标签可以大大节约代码", - "AutoGenerateClassAttribute": "类标签 AutoGenerateClassAttribute", - "AutoGenerateColumnAttribute": "列标签 AutoGenerateColumnAttribute", - "AutoGenerateClassP1": "1. 使用用法", - "AutoGenerateClassP1Content": "本例中通过设置 Filterable=true 使表格所有列均开启可搜索功能", - "AutoGenerateCode": "等效代码如下:", - "AutoGenerateClassP2": "1. 使用用法", - "AutoGenerateClassP2Content": "本例中通过设置 Filterable=true 使表格 Name 列开启可搜索功能", - "TableAttributeIntro": "权重说明", - "TableAttributeIntroLI1": "只写了 AutoGenerateClassAttribute 以其参数值为准", - "TableAttributeIntroLI2": "只写了 AutoGenerateColumnAttribute 以其参数值为准", - "TableAttributeIntroLI3": "写了 AutoGenerateClassAttribute 并且写了 AutoGenerateColumnAttribute 合并两者参数值取 AutoGenerateColumnAttribute 值", - "TableAttributeIntroLI4": "写了 TableColumn 参数值时以 TableColumn 参数值为最终值", - "TableAttributeQA1": "写了 AutoGenerateClassAttribute 并且写了 AutoGenerateColumnAttribute 合并两者参数值取值举例说明", - "TableAttributeQAP1": "由于 AutoGenerateClassAttribute 设置 Filterable 值为 true,而 AutoGenerateColumn 保持 Filterable 默认值 false 最终 UI 使用 true", - "TableAttributeQAP2": "由于 AutoGenerateClassAttribute 未设置 Sortable 保持默认值 false,而 AutoGenerateColumn 设置 Sortable 值为 true 最终 UI 使用 true", - "TableAttributeQAP3": "最新版本 TableColumnFilterable 等一些参数值均更改为 可为空数据类型,其默认值由原来的 false 更改为 null,可由此判断,只要 TableColumn 的参数 Filterable 值不为空,即以 TableColumn 值为最终 UI 值", - "TableAttributeColumn": "TableColumn 显示设置值" + "BootstrapBlazor.Server.Components.Samples.PdfViewers": { + "PdfViewerDescription": "在组件中打开 Pdf 文件阅读其内容", + "PdfViewerNormalIntro": "通过设置 Url 参数加载 Pdf 文件,设置 UseGoogleDocs 使用 docs.google.com 预览", + "PdfViewerNormalTitle": "基础用法", + "PdfViewerTitle": "PDFViewer PDF 阅读器", + "PdfViewerToastNotSupportContent": "当前浏览器不支持 Pdf 文档预览功能", + "PdfViewerToastSuccessfulContent": "PDF 文档加载成功" }, - "BootstrapBlazor.Server.Components.Pages.Introduction": { - "Title": "简介", - "SubTitle": "BootstrapBlazor 是一套基于 Bootstrap 和 Blazor 的企业级组件库,可以认为是 Bootstrap 项目的 Blazor 版实现。", - "UpdateTitle": "更新日志", - "UpdateLog": "为了修复组件 bug 每天可能有小版本发布更新日志", - "UpdateLogLink": "[传送门]", - "LearnTitle": "学习资料", - "LearnLi1": "Blazor 官方文档", - "LearnLi2": "使用 Blazor WebAssembly 和 Visual Studio Code 生成 Web 应用", - "LearnLi3": "什么是 Blazor", - "LearnLi4": "练习 - 配置开发环境", - "LearnLi5": "Blazor 组件", - "LearnLi6": "练习 - 添加组件", - "LearnLi7": "数据绑定和事件", - "LearnLi8": "练习 - 数据绑定和事件", - "Summarize": "总结", - "ProjectsShow": "作品展示", - "P5": "国内最大代码托管协作开发平台 码云 C# 板块最高星 star 作品 通用后台管理系统 BootstrapAdmin 准备使用本组件实现全部功能", - "ShowWebSiteTitle2": "实战网站(纯 Blazor 版本)", - "GetStarted": "快速上手", - "QuickStart": "快速入门", - "Features": "组件特色", - "P6": "Bootstrap Blazor UI 组件库提供了从基本的 Button 组件到高级的网页级 Online 组件", - "Advantage": "优势", - "AdvantageLi1": "使用组件无需编写 JavaScript", - "AdvantageLi2": "组件支持所有 html 特性", - "AdvantageLi3": "组件支持数据双向绑定", - "AdvantageLi4": "组件支持自动客户端验证", - "AdvantageLi5": "组件支持组合", - "Community": "交流群" + "BootstrapBlazor.Server.Components.Samples.Players": { + "PlayersAudioIntro": "通过设置 Mode=\"PlayerMode.Audio\" 播放音频文件", + "PlayersAudioTitle": "音频播放器", + "PlayersDescription": "一个简单、可访问和可定制的媒体播放器", + "PlayersHlsIntro": "通过设置 IsHls=\"true\" 开启 Hls 支持", + "PlayersHlsTitle": "HLS 支持", + "PlayersNormalIntro": "通过回调方法 OnInitAsync 设置组件所需要的配置实例 PlayerOption。通过 PlayerOption 属性值对播放器进行设置", + "PlayersNormalTitle": "基础用法", + "PlayersTips": "Player 组件支持 视频,音频,YoutubeVimeo", + "PlayersTitle": "Player 音视频播放器", + "PlayersVimeoIntro": "通过设置 Mode=\"PlayerSources\" 参数 Provider=\"vimeo\" 播放 Vimei 视频", + "PlayersVimeoTitle": "Vimeo 支持", + "PlayersYouTubeIntro": "通过设置 Mode=\"PlayerSources\" 参数 Provider=\"youtube\" 播放 YouTube 视频", + "PlayersYouTubeTitle": "YouTube 支持" }, - "BootstrapBlazor.Server.Components.Components.QQGroup": { - "Group": "QQ群", - "Status": "满", - "Welcome": "欢迎加群讨论" + "BootstrapBlazor.Server.Components.Samples.PopoverConfirms": { + "PopoverConfirmsBodyTemplateButtonText": "自定义内容", + "PopoverConfirmsBodyTemplateIntro": "通过设置 BodyTemplate 属性,自定义内容", + "PopoverConfirmsBodyTemplateTitle": "自定义 PopConfirmButton 内容", + "PopoverConfirmsContentDelete": "删除确认按钮", + "PopoverConfirmsContentDeleteContent": "确定删除数据吗?", + "PopoverConfirmsContentIntro": "通过设置 Content 属性更改确认弹窗显示文字", + "PopoverConfirmsContentTitle": "Content 更改确认弹窗显示文字", + "PopoverConfirmsCustomClassCustomButtonContent": "确定删除数据吗?", + "PopoverConfirmsCustomClassCustomButtonText": "自定义样式按钮", + "PopoverConfirmsCustomClassIntro": "设置 CssClass 自定义组件样式", + "PopoverConfirmsCustomClassTitle": "自定义样式", + "PopoverConfirmsDescription": "点击元素,弹出气泡确认框。", + "PopoverConfirmsFormIntro": "通过设置 ButtonType 属性值为 ButtonType.Submit 使确认确认按钮点击后进行异步表单数据提交", + "PopoverConfirmsFormSubmitFormContent": "确定提交数据吗?", + "PopoverConfirmsFormSubmitFormText": "提交表单", + "PopoverConfirmsFormTitle": "表单提交", + "PopoverConfirmsIsAsyncConfirmationContent": "确定删除数据吗?", + "PopoverConfirmsIsAsyncConfirmationText": "异步确认", + "PopoverConfirmsIsAsyncIntro": "通过设置 IsAsync 属性点击确认按钮时异步进行数据提交。有些特定场景异步后需要按钮继续保持禁用状态,请通过 IsKeepDisabled 参数控制", + "PopoverConfirmsIsAsyncTitle": "异步确认", + "PopoverConfirmsIsLinkHyperLinkContent": "确定删除数据吗?", + "PopoverConfirmsIsLinkHyperLinkText": "我是超链接", + "PopoverConfirmsIsLinkIntro": "通过设置 IsLink 属性组件使用 A 标签进行渲染", + "PopoverConfirmsIsLinkTitle": "超链接按钮", + "PopoverConfirmsNormalIntro": "PopConfirm 的属性与 Popover 很类似,因此对于重复属性,请参考 Popover 的文档,在此文档中不做详尽解释。", + "PopoverConfirmsNormalLeftPopup": "左侧弹窗", + "PopoverConfirmsNormalLeftPopupContent": "这是一段内容确定删除吗?", + "PopoverConfirmsNormalPopupAbove": "上面弹窗", + "PopoverConfirmsNormalPopupAboveContent": "是一段内容确定删除吗?", + "PopoverConfirmsNormalPopupBoxContent": "这是一段内容确定删除吗?", + "PopoverConfirmsNormalPopupBoxText": "下面弹框", + "PopoverConfirmsNormalRightPopup": "右侧弹窗", + "PopoverConfirmsNormalRightPopupContent": "这是一段内容确定删除吗?", + "PopoverConfirmsNormalTitle": "基础用法", + "PopoverConfirmsShowButtonsButtonText": "自定义组件", + "PopoverConfirmsShowButtonsDesc": "自定义组件内可通过级联参数调用组件内部的 Close 或者 Confirm 方法", + "PopoverConfirmsShowButtonsIntro": "通过设置 ShowCloseButton=\"false\" ShowConfirmButton=\"false\" 不显示内置功能按钮,在自定义组件中自定义一个 审批 按钮", + "PopoverConfirmsShowButtonsTitle": "自定义组件", + "PopoverConfirmsTitle": "PopConfirm 气泡确认框", + "PopoverConfirmsTriggerIntro": "通过设置 Trigger 参数来设置组件弹出确认框的方式,默认值为 click 还可以设置 hover focus 可组合使用", + "PopoverConfirmsTriggerTitle": "触发方式" }, - "BootstrapBlazor.Server.Components.Components.EventTable": { - "Title": "事件 Event" + "BootstrapBlazor.Server.Components.Samples.Popovers": { + "PopoversButtonButtonText": "Click 激活/关闭", + "PopoversButtonIntro": "点击按钮后弹出 Popover 弹出框", + "PopoversButtonTitle": "按钮激活弹出框", + "PopoversCssClassButtonText": "Click 激活/关闭", + "PopoversCssClassDescription": "设置 Popover 参数 CssClass=\"custom-popover\" 进行自定义样式", + "PopoversCssClassIntro": "通过设置 Popover 参数 CssClass 对弹窗进行自定义样式", + "PopoversCssClassTitle": "自定义样式", + "PopoversDescription": "点击/鼠标移入元素,弹出气泡式的卡片浮层", + "PopoversManualDescLI1": "子组件使用级联参数得到 Popover 实例,然后调用其相应方法 Show Hide Toggle", + "PopoversManualDescLI2": "通过 @ref 获得 Popover 实例调用其对应方法", + "PopoversManualIntro": "通过设置 Trigger=\"manual\" 使用代码控制提示栏状态", + "PopoversManualTitle": "手动控制状态", + "PopoversNormalIntro": "点击文本输入框弹出 Popover 弹出框,Placement 设置弹出框的位置 二次点击时关闭弹出框", + "PopoversNormalTitle": "基础用法", + "PopoversTemplateButtonText": "自定义模板", + "PopoversTemplateIntro": "通过设置 Template 模板,自定义弹窗内容", + "PopoversTemplateTitle": "自定义模板", + "PopoversTemplateTitleText": "自定义模板", + "PopoversTitle": "Popover 弹出窗组件" }, - "BootstrapBlazor.Server.Components.Samples.Handwrittens": { - "Title": "Handwritten 手写签名", - "SubTitle": "用于移动终端签名保存为 Base64 编码字符串", - "Tips": "已弃用,请使用 BootstrapBlazor.SignaturePad 组件,已知问题在弹窗中无法签名", - "BaseUsageText": "基础用法", - "IntroText1": "触摸设备直接手写签名保存为 Base64", - "IntroText2": "桌面浏览器测试请用F12模拟为触摸设备", - "HandwrittenButtonText": "签名", - "SaveButtonText": "保存按钮文本", - "SaveButtonTextDefaultValue": "保存", - "ClearButtonText": "清除按钮文本", - "ClearButtonTextDefaultValue": "清除", - "Result": "手写签名imgBase64字符串", - "HandwrittenBase64": "手写结果回调方法" + "BootstrapBlazor.Server.Components.Samples.Print": { + "PrintButtonIntro": "通过点击打印按钮将页面进行打印", + "PrintButtonTitle": "普通用法", + "PrintDialogIntro": "通过设置弹窗组件 ShowPrint 开启打印功能", + "PrintDialogTitle": "打印弹窗", + "PrintsButtonDescription": "点击下方打印按钮后,弹出新页面进行打印预览,确认无误后点击打印预览页面中的打印按钮进行打印机选择进行打印操作", + "PrintsButtonText": "打印", + "PrintsDialogTitle": "数据查询窗口", + "PrintServiceIntro": "通过设置要打印的内容组件,直接调用 打印服务 进行打印作业,打印服务 PrintService 服务文档 [传送门]", + "PrintServiceTitle": "打印服务", + "PrintsSubTitle": "用于打印文档或者局部视图", + "PrintsTips1": "设置 PreviewUrl 时,单开一个新网页进行打印预览,点击此页面的打印按钮进行网页打印", + "PrintsTips2": "不设置 PreviewUrl 时,如果是 Dialog 组件中的打印按钮,则打印弹窗内容", + "PrintsTitle": "Print 打印按钮" }, - "BootstrapBlazor.Server.Components.Samples.ImageViewers": { - "ImageViewerTitle": "ImageViewer 图片", - "ImageViewerDescription": "图片容器,在保留原生 img 的特性下,支持懒加载,自定义占位、加载失败等", - "ImageViewerNormalTitle": "基本用法", - "ImageViewerNormalIntro": "加载并显示图片文件", - "ImageViewerPlaceHolderTitle": "占位内容", - "ImageViewerPlaceHolderIntro": "可通过设置 ShowPlaceHolder 开启占位符功能,通过设置 PlaceHolderTemplate 自定义占位内容", - "ImageViewerPlaceHolderTemplateTitle": "占位模板", - "ImageViewerPlaceHolderTemplateIntro": "可通过设置 PlaceHolderTemplate 开启占位模板功能,未设置 Url 或者正在加载时显示此模板内容", - "ImageViewerErrorTemplateTitle": "加载失败", - "ImageViewerErrorTemplateIntro": "可通过设置 ErrorTemplate 开启错误模板功能,参数 Url 无法加载图片时显示此模板内容", - "ImageViewerPreviewListTitle": "大图预览", - "ImageViewerPreviewListIntro": "可通过设置 PreviewList 开启预览大图的功能,设置 ZoomSpeed 控制滚动缩放时的速度", - "ImageViewersAttrUrl": "图片 Url", - "ImageViewersAttrAlt": "原生 alt 属性", - "ImageViewersAttrShowPlaceHolder": "是否显示占位符 适用于大图片加载", - "ImageViewersAttrHandleError": "加载失败时是否显示错误占位符", - "ImageViewersAttrPlaceHolderTemplate": "占位模板 未设置 Url 或者正在加载大图时生效", - "ImageViewersAttrErrorTemplate": "错误模板 图片路径错误时生效", - "ImageViewersAttrFitMode": "原生 object-fit 属性", - "ImageViewersAttrZIndex": "原生 z-index 属性", - "ImageViewersAttrPreviewList": "预览大图链接集合", - "ImageViewersAttrOnLoadAsync": "图片加载成功时回调方法", - "ImageViewersAttrOnErrorAsync": "图片加载失败时回调方法", - "ImageViewersAttrIsIntersectionObserver": "图片懒加载", - "ImageViewerNormalTips1": "object-fit: fill 填充 默认值 使图片拉伸填满整个容器, 不保证保持原有的比例", - "ImageViewerNormalTips2": "object-fit: contain 包含 保持原有尺寸比例缩放 保证整个图片都可以出现在容器中,因此此参数可能会在容器内留下空白", - "ImageViewerNormalTips3": "object-fit: cover 覆盖 保持原有尺寸比例缩放,宽度和高度至少有一个和容器一致(尺寸小的一致)因此此参数可能会让图片部分区域不可见", - "ImageViewerNormalTips4": "object-fit: none 无 保持原有尺寸比例,同时保持图片原始尺寸大小,多出的部分隐藏", - "ImageViewerNormalTips5": "object-fit: scale-down 降低 就好像依次设置了 nonecontain 最终呈现的是尺寸比较小的那个", - "ImageViewerPlaceHolderTips1": "图片加载后浏览器默认会缓存,建议 F12 关闭缓存体验此功能", - "ImageViewerPlaceHolderDefault": "默认", - "ImageViewerPlaceHolderCustom": "自定义", - "ImageViewerPlaceHolderLoading": "加载中 ...", - "ImageViewerPlaceHolderTemplateTips1": "图片加载后浏览器默认会缓存,建议 F12 关闭缓存体验此功能", - "ImageViewerPlaceHolderTemplateUrl": "未设置 Url", - "ImageViewerPlaceHolderTemplatePlaceholder": "占位模板", - "ImageViewerPlaceHolderTemplateLoadingShow": "加载时显示", - "ImageViewerErrorTemplateUrlError": "Url 路径错误", - "ImageViewerErrorTemplateCustom": "自定义", - "ImageViewerErrorTemplateLoadFailed": "加载失败", - "ImagePreviewerTitle": "单独使用 ImagePreviewer", - "ImagePreviewerIntro": "配合 Button 等其他组件,直接弹出 ImagePreviewer", - "ImagePreviewerButton": "显示 Previewer", - "IntersectionObserverTitle": "懒加载", - "IntersectionObserverIntro": "通过设置 IsIntersectionObserver=\"true\" 开启懒加载特性,当图片在不可见区域时不加载图片,当图片即将可见时才开始加载图片" + "BootstrapBlazor.Server.Components.Samples.Progress": { + "ProgressBindingIntro": "绑定数据", + "ProgressBindingTitle": "双向绑定数据", + "ProgressColorIntro": "设置进度条颜色", + "ProgressColorTitle": "带颜色进度条", + "ProgressDecimalsIntro": "通过设置 Round 参数调整保留小数点位数,默认为 0,通过设置 MidpointRounding 参数调整四舍五入模式,默认为 MidpointRounding.AwayFromZero 四舍五入", + "ProgressDecimalsTitle": "小数", + "ProgressDescription": "用于展示操作进度,告知用户当前状态和预期", + "ProgressDisplayValueIntro": "通过 IsShowValue 设置进度条值显示", + "ProgressDisplayValueTitle": "显示值", + "ProgressDynamicIntro": "通过 IsAnimated 设置进度条的动态显示", + "ProgressDynamicTitle": "是否动态显示", + "ProgressHeightIntro": "通过 Height 进度条高度设置", + "ProgressHeightTitle": "设置进度条高度", + "ProgressNormalIntro": "常用的进度条", + "ProgressNormalTitle": "进度条组件", + "ProgressStripeIntro": "通过 IsStriped 设置进度条的条纹设置", + "ProgressStripeTitle": "是否显示条纹", + "ProgressTitle": "Progress 进度条" }, - "BootstrapBlazor.Server.Components.Samples.Geolocations": { - "GeolocationsTitle": "地理定位/移动距离追踪", - "GeolocationNormalText": "基础用法", - "GeolocationNormalIntro": "通过浏览器 API 获取定位信息。", - "GeolocationNormalIntro2": "单击按钮以获取地理位置坐标。", - "GeolocationNormalIntro3": "注意: 出于安全考虑,当网页请求获取用户位置信息时,用户会被提示进行授权。注意不同浏览器在请求权限时有不同的策略和方式。Windows10 在未开启定位的情况下无法获取位置。", - "GetLocationButtonText": "获取位置", - "WatchPositionButtonText": "移动距离追踪", - "ClearWatchPositionButtonText": "停止追踪", - "GetLocationResultSuccess": "调用 GetLocaltion 成功", - "GetLocationResultFailed": "调用 GetLocaltion 失败", - "WatchPositionResultSuccess": "调用 WatchPosition 成功", - "WatchPositionResultFailed": "调用 WatchPosition 失败", - "ClearWatchPositionResultSuccess": "停止追踪成功", - "ClearWatchPositionResultFailed": "停止追踪失败", - "Longitude": "经度", - "Latitude": "纬度", - "Accuracy": "位置精度", - "Altitude": "海拔", - "AltitudeAccuracy": "海拔精度", - "Heading": "方向", - "Speed": "速度", - "LastUpdateTime": "时间戳", - "CurrentDistance": "移动距离", - "TotalDistance": "总移动距离" + "BootstrapBlazor.Server.Components.Samples.PulseButtons": { + "Block1Intro": "基础的按钮用法。", + "Block1Title": "基础用法", + "PulseButtonHeader": "PulseButton 心跳按钮", + "PulseButtonPara": "适用于突出显示功能吸引使用者关注,按钮默认为圆形", + "PulseButtonPara2": "心跳按钮组件继承于按钮,所以在按钮原有功能基础上增加了一个心跳环,可参见网站右下角切换样式按钮" + }, + "BootstrapBlazor.Server.Components.Samples.QRCodes": { + "ClearText": "二维码清除成功", + "QRCodesColorIntro": "通过 DarkColor 参数指定二维码黑色部分颜色,LightColor 参数指定二维码白色部分颜色", + "QRCodesColorTitle": "颜色", + "QRCodesContentIntro": "通过 Content 参数指定二维码内容", + "QRCodesContentTitle": "直接生成", + "QRCodesNormalIntro": "点击生成按钮,生成特定的 QRCode", + "QRCodesNormalTitle": "基础用法", + "QRCodesSubTitle": "用于二维码生成", + "QRCodesTitle": "QRCode 二维码", + "QRCodesWidthIntro": "通过 Width 参数指定二维码宽度,高度与宽度一致", + "QRCodesWidthTitle": "大小", + "SuccessText": "二维码生成成功" }, - "BootstrapBlazor.Server.Components.Samples.Notifications": { - "NotificationsTitle": "通知", - "NotificationsNormalTitle": "基础用法", - "NotificationsNormalIntro": "通过浏览器API发送通知信息", - "NotificationsNormalDescription": "单击按钮以发送通知", - "NotificationsNormalTips1": "注意: 出于安全考虑,当网页请求发送通知时,用户会被提示进行授权", - "NotificationsNormalButtonText": "显示通知", - "NotificationSilentButtonText": "显示静默通知", - "NotificationsNormalCheckPermissionText": "检查权限", - "NotificationsNormalPermissionText": "允许通知", - "NotificationsNormalSilentText": "静默", - "NotificationsNormalTitleText": "标题", - "NotificationsNormalMessageText": "信息", - "NotificationsIconText": "图标", - "NotificationsSoundText": "通知触发时要播放的音频文件的 URL", - "CheckPermissionResultSuccess": "获取权限成功", - "NotificationResultSuccess": "调用通知成功", - "NotificationsNormalTips2": "使用 BrowserNotification 静态方法直接调用 Dispatch 方法", - "NotificationsNormalShowNotificationCallbackText": "发送结果回调", - "NotificationsNormalGetPermissionCallbackText": "检查通知权限结果回调", - "NotificationsNormalOnClickText": "通知点击后的回调方法名称", - "NotificationsNormalTitleSampleText": "你有新的物流通知", - "NotificationsNormalMessageSampleText": "您的包裹已到达亮马河南路,距离分发只剩3站." + "BootstrapBlazor.Server.Components.Samples.QueryBuilders": { + "QueryBuilderHeaderIntro": "通过设置 ShowHeader=\"false\" 关闭控制按钮", + "QueryBuilderHeaderTitle": "显示控制按钮", + "QueryBuilderNormalIntro": "在 Razor 文件中直接通过 QueryGroup QueryColumn 构建过滤条件", + "QueryBuilderNormalTitle": "基本用法", + "QueryBuilderSubTitle": "可用于表单、表格过滤条件生成", + "QueryBuilderTitle": "条件生成器 QueryBuilder" }, - "BootstrapBlazor.Server.Components.Samples.SignaturePads": { - "BaseUsageText": "基础用法", - "BaseUsageIntro": "鼠标滑动进行签名", - "ButtonCssStyleText": "按钮CSS式样", - "ButtonCssStyleIntro": "设置按钮样式", - "CustomButtonText": "自定义按钮文本", - "CustomButtonIntro": "自定义按钮文本", - "Tips": "复杂签名会导致传输数据量大 ssr 会出现断流显示 reload 错误,配置更改单个传入集线器消息的最大大小(默认 32KB)解决这个问题。builder.Services.AddServerSideBlazor().AddHubOptions(o => o.MaximumReceiveMessageSize = null);", - "Title": "SignaturePad 手写签名", - "SignText": "请签名", - "CleanText": "清除", - "ResponsiveInterfaceText": "响应式签名界面", - "ResultBase64Text": "签名 Base64", - "ResultText": "您的签名", - "SignatureText": "签名", - "BackText": "返回前页", - "TipsResponsive": "设备宽度小于 640px (例如手机) 自动置顶无边框, 宽度小于 500px 按钮自动旋转. 可选透明背景。" + "BootstrapBlazor.Server.Components.Samples.Radios": { + "RadioListGenericIntro": "通过使用 RadioListGeneric 组件配合 SelectedItem<TValue> 开启泛型支持", + "RadioListGenericTitle": "泛型支持", + "RadiosAdd1": "北京", + "RadiosAdd2": "上海", + "RadiosAutoSelectFirstWhenValueIsNullIntro": "通过设置 AutoSelectFirstWhenValueIsNull 参数控制 RadioList 候选项选中情况,参数默认值为 true,即如果组件当前值与候选项中值无一致值时,自动选中第一个候选项,设置为 false 后,候选项将全部为未选中状态。", + "RadiosAutoSelectFirstWhenValueIsNullTitle": "自动选择第一候选项", + "RadiosBindingIntro": "绑定组件内变量,数据自动同步,绑定数据类型为 SelectedItem 类型数组", + "RadiosBindingTitle": "双向绑定数据", + "RadiosColorIntro": "通过设置 Color 属性改变组件背景色", + "RadiosColorTitle": "颜色", + "RadiosDescription": "在一组备选项中进行单选", + "RadiosDisableIntro": "通过 IsDisabled='true' 单选框不可用状态", + "RadiosDisableTitle": "禁用单选框", + "RadiosEnumDescription": "通过设置 IsAutoAddNullItem 自动添加 空值 选项,通过设置 NullItemText 自定义 空值 选项", + "RadiosEnumIntro": "通过双向绑定 Value 无需设置 Items", + "RadiosEnumText": "空值", + "RadiosEnumTitle": "绑定枚举类型", + "RadiosIsButtonIntro": "通过设定 IsButton 值为 True 将候选项更改为按钮样式", + "RadiosIsButtonTitle": "按钮样式", + "RadiosItem1": "选项一", + "RadiosItem2": "选项二", + "RadiosItemTemplateIntro": "通过设置 ItemTemplate 自定义显示 UI", + "RadiosItemTemplateTitle": "项目模板", + "RadiosLabelIntro": "单选框显示文字", + "RadiosLabelText": "按钮组", + "RadiosLabelTitle": "Label 文字", + "RadiosLog1": "组件选中值:", + "RadiosLog2": "显示值:", + "RadiosLog3": "组件 Value 值:", + "RadiosNormalIntro": "由于选项默认可见,不宜过多,若选项过多,建议使用 Select 选择器", + "RadiosNormalTitle": "基础用法", + "RadiosOnSelectedChangedEvent": "复选框状态改变时回调此方法", + "RadiosTitle": "Radio 单选框", + "RadiosVerticalIntro": "通过设置 IsVertical 使组件内部竖向排列", + "RadiosVerticalTitle": "竖向排列" }, - "BootstrapBlazor.Server.Components.Samples.SignaturePadPageResponsive": { - "ResponsiveInterfaceText": "响应式签名界面", - "ResultBase64Text": "签名 Base64", - "ResultText": "您的签名", - "SignatureText": "签名", - "BackText": "返回前页", - "TipsResponsive": "设备宽度小于 640px (例如手机) 自动置顶无边框, 宽度小于 500px 按钮自动旋转. 可选透明背景。" + "BootstrapBlazor.Server.Components.Samples.Rates": { + "RatesCry": "大哭", + "RatesDescription": "评分组件", + "RatesDisableIntro": "通过设置 IsDisable 属性值禁用组件", + "RatesDisableTitle": "禁用", + "RatesEvent1": "值改变时回调委托", + "RatesGrin": "惊喜", + "RatesIconIntro": "通过设置 ItemTemplate 模板,配合自定义样式 custom-rate实现复杂功能", + "RatesIconTitle": "模板", + "RatesIsWrapIntro": "通过设置 IsWrap=\"true\" 使组件自动折行,默认不折行", + "RatesIsWrapTitle": "自动折行", + "RatesLog": "评星:", + "RatesNormalIntro": "Rate 组件通过 1 - 5 颗星表示数值等级,后台可以通过 bind-Value 对数值进行双向绑定通过 Rate 组件更改其值,鼠标滑动更改值,点击星星时确认其值", + "RatesNormalTitle": "基础用法", + "RatesReadOnlyIntro": "通过设置 IsReadonly 属性值使组件只读,有颜色不响应点击事件", + "RatesReadOnlyTitle": "只读", + "RatesShowValueIntro": "通过设置 ShowValue=\"true\" 使组件显示当前值", + "RatesShowValueTitle": "显示评分", + "RatesSmile": "笑", + "RatesSurprise": "惊讶", + "RatesSwitchOff": "启用", + "RatesSwitchOn": "禁用", + "RatesTear": "哭", + "RatesTitle": "Rate 评分" + }, + "BootstrapBlazor.Server.Components.Samples.RDKits": { + "RDKitDescription": "RDKit 是一个开源的化学信息学工具包,用于分子建模和化学信息学", + "RDKitNormalIntro": "通过 Smiles 设置分子式,组件画图", + "RDKitNormalTitle": "基础用法", + "RDKitSizeIntro": "通过设置 Width Height 值设置分子式宽高", + "RDKitSizeTitle": "尺寸", + "RDKitSmartsIntro": "通过设置 Smarts 值,高亮显示部分分子式", + "RDKitSmartsLabel": "显示 Smarts", + "RDKitSmartsTitle": "Smarts", + "RDKitTitle": "RDKit.js 分子图组件" }, "BootstrapBlazor.Server.Components.Samples.Reconnectors": { - "Title": "Reconnector 重连组件", - "SubTitle": "用于自定义连接失败时各种状态信息", - "ReconnectingTemplateAttr": "正在尝试重试连接对话框的模板", - "ReconnectFailedTemplateAttr": "连接失败对话框的模板", - "ReconnectRejectedTemplateAttr": "连接被拒绝对话框的模板", - "ReconnectingTemplateText": "正在连接模板", - "ReconnectFailedTemplateText": "连接失败模板", - "ReconnectRejectedTemplateText": "连接拒绝模板", + "Application": "实战应用", "Intro": "组件内置了默认样式如果不满意可根据自己需求进行样式覆盖,组件应用于 components-reconnect-modal 元素的 CSS 类", "IntroTitle": "可单独设置不同状态模板", - "Usage": "使用方法", + "ReconnectFailedTemplateText": "连接失败模板", + "ReconnectingTemplateText": "正在连接模板", + "ReconnectRejectedTemplateText": "连接拒绝模板", "Step1": "1. _Layout.cshtml 文件中增加如下代码", "Step2": "2. App.razor 文件中增加如下代码", + "SubTitle": "用于自定义连接失败时各种状态信息", "TableHeader1": "CSS 类", "TableHeader2": "说明", "TableRow1": "连接已丢失。 客户端正在尝试重新连接。显示模式。", @@ -5742,1290 +3710,2270 @@ "TableRow3": "重新连接失败,可能是由于网络故障引起的。 若要尝试重新连接,请在 JavaScript 中调用 window.Blazor.reconnect()", "TableRow4": "已拒绝重新连接。 已达到服务器,但拒绝连接,服务器上的用户状态丢失。 若要重新加载应用,请在 JavaScript 中调用 location.reload()。当出现以下情况时,可能会导致此连接状态:", "TableRow5": "
          • 服务器端线路发生故障。
          • 客户端断开连接的时间足以使服务器删除用户的状态。用户组件的实例已被处置。
          • 服务器已重启,或者应用的工作进程被回收。
          • ", - "Application": "实战应用" + "Title": "Reconnector 重连组件", + "Usage": "使用方法" }, - "BootstrapBlazor.Server.Components.Samples.OnScreenKeyboards": { - "OnScreenKeyboardsTitle": "On-Screen keyboard 屏幕键盘", - "OnScreenKeyboardsNormalText": "基础用法", - "OnScreenKeyboardsNormalIntro": "全键盘", - "OnScreenKeyboardsTypekeyboardTitle": "字母键盘", - "OnScreenKeyboardsTypeNumpadTitle": "数字键盘", - "OnScreenKeyboardsThemeDarkTitle": "暗黑主题", - "OnScreenKeyboardsSpecialcharactersTitle": "特殊符号-欧洲", - "OnScreenKeyboardsSpecialcharactersCustomerTitle": "特殊符号自定义", - "OnScreenKeyboardsAppTitle": "BootstrapBlazor 组件", - "OnScreenKeyboardsAppDescription": "双绑", - "OnScreenKeyboardsTips": "如果表现不正常,可以加上这句 css 调试看看", - "OnScreenKeyboardsCss": " .kioskboard-body-padding { padding-top: unset !important;} ", - "OnScreenKeyboardsBasicTitle": "基础用法" + "BootstrapBlazor.Server.Components.Samples.Repeaters": { + "RepeaterContainerIntro": "通过设置 ContainerTemplate 容器模板,模板内重复部分仍然通过 ItemTemplate 渲染,本例中通过 ContainerTemplate 将组件渲染成 Table", + "RepeaterContainerTitle": "容器模板", + "RepeaterDescription": "用户多个重复区域的组件", + "RepeaterEmptyIntro": "数据集合 Items 为空时 ShowEmpty 控制是否显示无数据提示信息,可通过 EmptyTemplate 自定义空数据模板,可通过 EmptyText 自定义空数据文字信息", + "RepeaterEmptyTitle": "空数据", + "RepeaterLoadingIntro": "未提供 Items 时通过设置 ShowLoading 控制是否显示正在加载提示信息,可通过 LoadingTemplate 自定义加载信息", + "RepeaterLoadingTitle": "数据加载", + "RepeaterNormalIntro": "通过设置 ItemTemplate 模板自定义重复区域内容", + "RepeaterNormalTitle": "基础用法", + "RepeaterTitle": "Repeat 组件" }, - "BootstrapBlazor.Server.Components.Samples.Bluetooth": { - "BluetoothTitle": "IBluetooth 蓝牙服务", - "BluetoothIntro": "提供了查询蓝牙可用性和请求访问设备的方法", - "BluetoothDescription": "允许网站与连接到用户计算机的蓝牙设备进行通信。例如可以连接蓝牙打印机进行打印操作", - "BluetoothTipsLi1": "该功能仅在部分或所有支持浏览器的安全上下文(HTTPS)中可用", - "BluetoothTipsLi2": "这是一项实验性技术,在生产中使用之前请仔细,检查 浏览器兼容性表", - "BluetoothTipsTitle": "注意:IBluetoothDevice 接口实例继承 IAsyncDisposable 路由切换时需要对其进行资源释放,调用其 DisposeAsync 即可", - "NotSupportBluetoothTitle": "扫描设备", - "NotSupportBluetoothContent": "当前浏览器不支持串口操作,请更换 Edge 或者 Chrome 浏览器", - "BluetoothRequestText": "扫描", - "BluetoothConnectText": "连接", - "BluetoothDisconnectText": "断开", - "BluetoothGetBatteryText": "读取电量", - "BluetoothGetHeartRateText": "读取心率", - "BaseUsageTitle": "基础用法", - "BaseUsageIntro": "通过 IBluetooth 服务,请求与蓝牙设备通讯", - "BluetoothGetCurrentTimeText": "读取时间", - "BluetoothDeviceInfoText": "读取硬件信息", - "UsageDesc": "点击扫描按钮,在弹窗中选中手机进行测试", - "BluetoothGetServicesText": "读取服务列表", - "BluetoothGetCharacteristicsText": "读取特征列表", - "BluetoothReadValueText": "读取特征值" + "BootstrapBlazor.Server.Components.Samples.Responsives": { + "ResponsiveDescription": "根据参数条件,确定是否重新渲染响应布局的内容,通常用于响应布局", + "ResponsiveNormalIntro": "调整浏览器窗口大小,观察 Breakpoint 的变化", + "ResponsiveNormalIntroCurrentText": "当前", + "ResponsiveNormalTitle": "基础用法", + "ResponsiveTitle": "Responsive 断点监听" + }, + "BootstrapBlazor.Server.Components.Samples.RibbonTabs": { + "ItemsGroupName1": "操作组一", + "ItemsGroupName2": "操作组三", + "RibbonTabsAnchorDesc": "通过设置 EncodeAnchorCallback 自定义哈希编码规则,通过设置 DecodeAnchorCallback 自定义哈希解码规则,通过这两个方法支持自定义多级哈希,本例中特意使用组合 Hash 使页面滚动到下方", + "RibbonTabsAnchorIntro": "通过设置 IsSupportAnchor 开启是否支持锚点功能", + "RibbonTabsAnchorTitle": "锚点支持", + "RibbonTabsDescription": "Office 菜单选项卡", + "RibbonTabsFloatContent": "我是正文内容,收起菜单后我会向上移动", + "RibbonTabsFloatIntro": "通过设置 ShowFloatButton 使选项卡右侧显示收缩按钮,不占用主窗体空间", + "RibbonTabsFloatTitle": "可悬浮", + "RibbonTabsHeaderClickIntro": "通过设置 OnHeaderClickAsync 回调方法处理点击 Header 部分逻辑", + "RibbonTabsHeaderClickTitle": "Header 点击回调", + "RibbonTabsItems1": "常规操作", + "RibbonTabsItems10": "常规操作", + "RibbonTabsItems11": "常规操作", + "RibbonTabsItems12": "常规操作", + "RibbonTabsItems2": "常规操作", + "RibbonTabsItems3": "常规操作", + "RibbonTabsItems4": "打开", + "RibbonTabsItems5": "保存", + "RibbonTabsItems6": "另存为", + "RibbonTabsItems7": "打开", + "RibbonTabsItems8": "保存", + "RibbonTabsItems9": "另存为", + "RibbonTabsItemsText1": "文件", + "RibbonTabsItemsText2": "编辑", + "RibbonTabsNormalIntro": "通过设置 Items 初始化选项卡", + "RibbonTabsNormalTitle": "基本用法", + "RibbonTabsRightButtonsTemplateContent": "文档", + "RibbonTabsRightButtonsTemplateIntro": "通过设置 RightButtonsTemplate 可以在选项卡右上角增加一些快捷按钮", + "RibbonTabsRightButtonsTemplateTitle": "右上角按钮模板", + "RibbonTabsTitle": "RibbonTab 选项卡" + }, + "BootstrapBlazor.Server.Components.Samples.Rows": { + "RowCommonDescription": "行显示 3 个,采用 Row", + "RowCommonIntro": "将自己的组件放到 Row 内部即可", + "RowCommonTitle": "放置普通控件", + "RowFormInlineDescription": "本例中 Row 组件内置于 ValidateForm 组件内,自动增加前置 Label 标签", + "RowFormInlineIntro": "当放置表单控件时,可以指定 RowTypeInline,会将 Label 显示在左边,控件充满剩余空间", + "RowFormInlineTitle": "放置表单控件(内联)", + "RowFormIntro": "当放置表单控件时,可以指定 RowTypeNormal,会将 Label 显示在上边,控件充满", + "RowFormTitle": "放置表单控件", + "RowNestedIntro": "Row 组件支持嵌套使用,比如下面最外层的 Row 设置一行显示两个控件,第一个是 TextBox,第二个还是 Row,第二个 Row 继续设置显示两个控件", + "RowNestedTitle": "嵌套使用", + "RowsDescription": "可简单设置一行显示的组件数量", + "RowSpanIntro": "Row 组件可以通过指定 ColSpan 值设置跨列数,组合这些功能可以实现复杂布局", + "RowSpanTips1": "行显示 4 个", + "RowSpanTips2": "行显示 2 个", + "RowSpanTips3": "行显示 4 个 Address 占 2 列", + "RowSpanTips4": "行显示 4 个,第二个组件 ColSpan 设置为 3", + "RowSpanTips5": "行显示 2 个,第一个组件 ColSpan 设置为 3", + "RowSpanTips6": "行显示一个组件", + "RowSpanTitle": "跨列功能", + "RowsTitle": "Row布局组件" + }, + "BootstrapBlazor.Server.Components.Samples.Scrolls": { + "ScrollDescription": "给高度或者宽度超标的组件增加滚动条", + "ScrollNormalBottom": "我是最底端", + "ScrollNormalDescription": "请滚动右侧滚动条", + "ScrollNormalIntro": "给组件增加滚动条,通过设置 Height 高度值为 200px 使内部子元素高度为 500px 时出现滚动条", + "ScrollNormalTitle": "普通用法", + "ScrollTips": "其元素必须拥有固定高度时才可呈现滚动条,可以通过外套元素设置其 height 属性", + "ScrollTitle": "Scroll 滚动条", + "ScrollToBottom": "滚动到底部" + }, + "BootstrapBlazor.Server.Components.Samples.SearchDialogs": { + "SearchDialogOptionAttr": "SearchDialogOption 属性", + "SearchDialogsDescription": "SearchDialog 组件是 Dialog 组件的扩展,适用于数据弹出窗设置搜索条件。", + "SearchDialogsFieldButtonText": "点击弹出搜索弹窗", + "SearchDialogsFieldIntro": "通过设定 Columns 参数显式设置显示的搜索字段", + "SearchDialogsFieldTitle": "自定义搜索弹窗内显示的条件字段", + "SearchDialogsLayoutButtonText1": "搜索弹窗(左对齐)", + "SearchDialogsLayoutButtonText2": "搜索弹窗(右对齐)", + "SearchDialogsLayoutIntro": "通过设定 RowType 参数显式设置弹窗内组件布局方式,默认为上下布局,可设置值 inline 水平布局", + "SearchDialogsLayoutTitle": "设置搜索弹窗内布局方式", + "SearchDialogsNormalButtonText": "点击弹出搜索弹窗", + "SearchDialogsNormalIntro": "通过绑定 TModel 数据模型,自动生成模型各个字段的搜索表单", + "SearchDialogsNormalTitle": "基础用法", + "SearchDialogsSubTitle": "通过绑定数据模型自动呈现搜索弹窗", + "SearchDialogsTips": "通过调用注入服务 DialogServiceShowSearchDialog 方法直接弹出搜索条件弹窗,大大减少代码量。SearchDialogOption 配置类继承 DialogOption ,更多参数设置请点击 [传送门]", + "SearchDialogsTitle": "SearchDialog 搜索弹窗" + }, + "BootstrapBlazor.Server.Components.Samples.Searches": { + "SearchesButtonTemplateDesc": "通过设置 PrefixButtonTemplate 自定义组件前置显示的按钮", + "SearchesButtonTemplateDesc2": "在自定义模板中可以通过关联参数调用 Search 组件内部的 OnClear OnSearch 方法", + "SearchesButtonTemplateIntro": "通过设置 ButtonTemplate 自定义组件显示的按钮", + "SearchesButtonTemplateTitle": "按钮模板", + "SearchesDisplayButtonIntro": "通过设置 ShowClearButton 参数控制是否显示清空按钮", + "SearchesDisplayButtonTitle": "显示清空按钮", + "SearchesIconTemplateDesc": "搜索组件上下文 SearchContext<string> 提供了组件内部的 OnClear OnSearch 方法", + "SearchesIconTemplateIntro": "通过设置 IconTemplate 自定义组件显示的图标", + "SearchesIconTemplateTitle": "图标模板", + "SearchesIsClearableIntro": "通过设置 IsClearable=\"true\" 显示清空小图标", + "SearchesIsClearableTitle": "IsClearable", + "SearchesItemTemplateIntro": "通过设置 ItemTemplate 配合泛型数据可以做出自己想要的任何效果,本例中通过搜索任意关键字,后台调用任意第三方搜索结果并且进行展示,选中搜索项后通过 OnSelectedItemChanged 回调方法可以自行处理", + "SearchesItemTemplateTitle": "模板", + "SearchesKeyboardsIntro": "通过设置 IsTriggerSearchByInput 参数控制是否实时进行搜索操作,组件默认输入时即进行搜索,可通过 IsTriggerSearchByInput=\"false\" 关闭", + "SearchesKeyboardsTitle": "键盘输入即时搜索", + "SearchesNormalDescription": "请输入 1234 获取智能提示,通过设置 IsAutoFocus='true' 开启自动获得焦点功能", + "SearchesNormalIntro": "输入部分数据进行搜索", + "SearchesNormalTitle": "基础用法", + "SearchesPlaceHolder": "搜索示例", + "SearchesShowPrefixIconDescription": "可以通过 PrefixIconTemplate 自定义前缀,本例中通过前缀模板使用 Svg 图标", + "SearchesShowPrefixIconIntro": "通过设置 ShowPrefixIcon 参数控制是否显示前缀图标", + "SearchesShowPrefixIconTitle": "显示前缀图标", + "SearchesSubTitle": "用于数据搜索", + "SearchesTitle": "Search 搜索框", + "SearchesValidateFormIntro": "内置于 ValidateForm 使用,输入中文时不会多次触发搜索功能", + "SearchesValidateFormTitle": "验证表单内使用" }, - "BootstrapBlazor.Server.Components.Samples.FileIcons": { - "Title": "File Icon 文件图标", - "Intro": "通过文件扩展名自定义显示图标", - "BaseUsageTitle": "基本用法", - "BaseUsageIntro": "通过设置 Type 设置图标扩展名", - "ColorTitle": "颜色", - "ColorIntro": "通过设置 IconColor 设置图标颜色", - "BackgroundTemplateTitle": "自定义背景图", - "BackgroundTemplateIntro": "通过设置 BackgroundTemplate 通过模板自定义背景模板", - "CustomCssTitle": "自定义样式", - "CustomCssIntro": "通过设置 class 自定义样式调整图标大小", - "ExtensionAttr": "文件扩展名", - "IconColorAttr": "扩展名标签背景色", - "BackgroundTemplateAttr": "自定义背景图模板", + "BootstrapBlazor.Server.Components.Samples.Segmenteds": { + "BasicIntro": "通过参数 Items 设置组件数据源", + "BasicTitle": "基本", + "BlockIntro": "通过参数 IsBlock 可将组件充满父容器", + "BlockTitle": "Block 充满父容器", + "IconIntro": "设置 Icon 参数值改变其现实图标", + "IconTitle": "图标", + "IsDisabledIntro": "使其中的一项禁止使用", + "IsDisabledTitle": "不可用", + "ItemTemplateIntro": "使用 ItemTemplate 自定义渲染", + "ItemTemplateTitle": "自定义渲染", + "SegmentItemIntro": "可在 Razor 页面中直接书写 SegmentItem 添加数据源", + "SegmentItemTitle": "SegmentItem 组件", + "SizeIntro": "组件定义了三种尺寸(大、默认、小),高度分别为 40px32px24px。", "SizeTitle": "大小", - "SizeIntro": "通过设置 Size 设置图标大小" + "SubTitle": "展示多个选项并允许用户选择其中单个选项", + "Title": "Segmented 分段控制器" }, - "BootstrapBlazor.Server.Components.Samples.PdfReaders": { - "PdfTitle": "PDF Reader PDF 文档阅读器", - "PdfDescription": "在网页中直接嵌入和显示 PDF 文档,无需依赖用户本地安装的 PDF 阅读器", - "PdfReaderNormalText": "基础用法", - "PdfReaderNormalIntro": "通过 Url 参数设置 pdf 文件地址,或者使用 OnGetStreamAsync 参数指定用于渲染的文件流", - "PdfReaderFAIconDesc": "PdfReader 组件图标依赖 BootstrapBlazor.FontAwesome 包,需要引用如下样式,否则工具栏图标无法显示", - "PdfReaderSetPdfStreamDesc": "可以通过调用实例方法 SetPdfStreamAsync 或者 SetPdfBase64DataAsync 推流进行渲染", - "PdfReaderDownloadFileNameDesc": "可以通过设置参数 DownloadFileName 值,用于设置下载文件名", - "PdfReaderStreamModeText": "流模式", - "PdfReaderStreamModeIntro": "可跨域读取文件", - "PdfReaderCompatibilityModeText": "兼容模式", - "PdfReaderCompatibilityModeIntro": "兼容旧版浏览器", - "PdfReaderAdvancedText": "高级参数", - "PdfReaderAdvancedIntro": "可以使用高级参数", - "PdfReaderIssue": "破坏性更新参考链接: 移除pdfobject", - "AttributesPdfReaderFilename": "PDF文件路径(Url或相对路径)", - "AttributesPdfReaderStreamMode": "使用流化模式,可跨域读取文件", - "AttributesPdfReaderWidth": "宽 单位(px/%)", - "AttributesPdfReaderHeight": "高 单位(px/%)", - "AttributesPdfReaderStyleString": "组件外观 Css Style", - "AttributesPdfReaderPage": "页码", - "AttributesPdfReaderPageMode": "页面模式", - "AttributesPdfReaderZoom": "缩放模式", - "AttributesPdfReaderSearch": "查询字符串", - "AttributesPdfReaderRefresh": "刷新组件", - "AttributesPdfReaderNavigateToPage": "跳转到指定页码", - "AttributesPdfReaderRefreshPage": "刷新并跳转页码", - "AttributesPdfReaderRefreshComponent": "刷新组件(查询关键字,页码,页面模式,缩放模式)", - "AttributesPdfReaderStream": "用于渲染的文件流,为空则用URL参数读取文件", - "AttributesPdfReaderViewerBase": "浏览器页面路径", - "AttributesPdfReaderViewerBaseDefaultValue": "内置", - "AttributesPdfReaderNavPanels": "显示导航窗格", - "AttributesPdfReaderToolbar": "显示工具栏", - "AttributesPdfReaderStatusBar": "显示状态栏", - "AttributesPdfReaderDebug": "显示调试信息", - "PdfReaderAdvancedViewMode": "视图模式", - "PdfReaderAdvancedPageMode": "页面模式", - "PdfReaderAdvancedPagePrevious": "页码-", - "PdfReaderAdvancedPageNext": "页码+", - "PdfReaderAdvancedGoToPage": "跳转", - "PdfReaderAdvancedRefreshPage": "刷新", - "PdfReaderAdvancedStreamModeLabel": "流模式", - "PdfReaderAdvancedFilenameLabel": "文件相对路径或者URL", - "PdfReaderAdvancedSearchLabel": "搜索", - "PdfReaderAdvancedReadOnlyLabel": "禁用复制/打印/下载", - "PdfReaderAdvancedWatermarkLabel": "水印内容", - "PdfReaderCompatibilityModeTips": "- Chrome < 97 自动使用 2.4.456 版本
            - Chrome < 109 自动使用 2.6.347 版本
            - 注:ReadOnly 和 Watermark 在这两种兼容模式下不能使用", - "LocalFileName": "PDF本地文件路径" + "BootstrapBlazor.Server.Components.Samples.SelectCities": { + "CityDescription": "提供以省分类的城市选择器", + "CityNormalIntro": "通过下拉框的形式选择城市", + "CityNormalTitle": "基本用法", + "CityTitle": "SelectCity 城市选择器" }, - "BootstrapBlazor.Server.Components.Samples.PdfViewers": { - "PdfViewerTitle": "PDFViewer PDF 阅读器", - "PdfViewerDescription": "在组件中打开 Pdf 文件阅读其内容", - "PdfViewerNormalTitle": "基础用法", - "PdfViewerNormalIntro": "通过设置 Url 参数加载 Pdf 文件,设置 UseGoogleDocs 使用 docs.google.com 预览", - "PdfViewerToastSuccessfulContent": "PDF 文档加载成功", - "PdfViewerToastNotSupportContent": "当前浏览器不支持 Pdf 文档预览功能" + "BootstrapBlazor.Server.Components.Samples.SelectObjects": { + "CustomComponentIntro": "任意组件均可放入下拉框内,需要有一个回调进行赋值或者关窗即可", + "CustomComponentTitle": "自定义组件", + "HeightIntro": "通过设置 Height 值,来改变下拉框高度", + "HeightTitle": "设置高度", + "Intro": "下拉框为任意组件用于展示复杂类型的选择需求", + "MinWidthIntro": "通过设置 DropdownMinWidth 值,来改变下拉框最小宽度", + "MinWidthTitle": "设置最小宽度", + "NormalDesc": "可通过 IsClearable 控制是否显示清除小按钮,默认值 false", + "NormalIntro": "内置 ListView 组件选择图片", + "NormalTitle": "基本功能", + "Title": "TableObject 任意选择器" }, - "BootstrapBlazor.Server.Components.Samples.EmbedPdfs": { - "PdfTitle": "EmbedPDF PDF 文档阅读器", - "PdfDescription": "EmbedPDF 是一个开源的 JavaScript PDF 阅读器,基于 PDFium,在浏览器端直接渲染,无需后端支持", - "PdfReaderNormalText": "基础用法", - "PdfReaderNormalIntro": "通过 Url 参数设置 pdf 文件地址" + "BootstrapBlazor.Server.Components.Samples.SelectProvinces": { + "ProvinceDescription": "提供下拉框选择省/直辖市/特别行政区", + "ProvinceMultipleIntro": "通过设置 IsMultiple 开启多选模式", + "ProvinceMultipleTitle": "多选", + "ProvinceNormalIntro": "通过下拉框的形式选择省/直辖市/特别行政区", + "ProvinceNormalTitle": "基本用法", + "ProvinceTitle": "SelectProvince 省选择器" }, - "BootstrapBlazor.Server.Components.Samples.VideoPlayers": { - "VideoPlayersTitle": "VideoPlayer 视频播放器", - "VideoPlayersNormalTitle": "基础用法", - "VideoPlayersNormalIntro": "", - "VideoPlayersChangeURLTitle": "切换播放资源", - "VideoPlayersChangeURLIntro": "使用 Reload 方法切换播放资源", - "VideoPlayersTips": "默认启用静音模式,只有这样自动播放功能才符合现代浏览器标准.", - "MineType": "MineType 类型", - "ResourceUrl": "资源地址", - "MineTypeDesc": "资源类型,video/mp4, application/x-mpegURL, video/ogg .. ", - "ValueList": "(见页脚)", - "Width": "宽度", - "Height": "高度", - "ShowControls": "显示控制条", - "AutoPaly": "自动播放", - "Poster": "设置封面资源,相对或者绝对路径", - "SwitchResource": "切换播放资源", - "SetPoster": "设置封面", - "ShowBar": "是否显示 bar", - "OnError": "错误回调" + "BootstrapBlazor.Server.Components.Samples.SelectRegions": { + "RegionDescription": "提供 4 级行政区划选择器", + "RegionNormalIntro": "使用分组切换显示行政区域的选择模式", + "RegionNormalTitle": "基本用法", + "RegionTitle": "SelectRegion 行政区域选择器" }, - "BootstrapBlazor.Server.Components.Components.PackageTips": { - "Tips": "

            注意事项 :

            本组件依赖于 {0},使用本组件时需要引用其组件包

            Nuget 包安装

            使用 nuget.org 进行 {0} 组件的安装

            " + "BootstrapBlazor.Server.Components.Samples.Selects": { + "SelectConfirmSelectDesc1": "设置 OnBeforeSelectedItemChange 回调方法,在回调方法内自己弹窗确认是否更改值,返回 true 时更改,否则不更改", + "SelectConfirmSelectDesc2": "设置 ShowSwal=\"true\" 然后通过设置 SwalTitle SwalContent 参数值使用内置弹窗进行确认即可,在回调方法内自己弹窗确认是否更改值", + "SelectsBindingIntro": "通过 Select 组件绑定 Model.Name 属性,改变下拉框选项时,文本框内的数值随之改变。", + "SelectsBindingSelectedItemIntro": "通过 Select 组件绑定 SelectItem 属性,改变下拉框选项时,文本框内的数值随之改变。", + "SelectsBindingSelectedItemTitle": "Select 双向绑定 SelectItem", + "SelectsBindingTitle": "Select 双向绑定", + "SelectsCascadingButtonText1": "弹窗中级联示例", + "SelectsCascadingIntro": "通过选择第一个下拉框不同选项,第二个下拉框动态填充内容。", + "SelectsCascadingTitle": "Select 级联绑定", + "SelectsClearableDesc": "不可为空整形设置 IsClearable 无效,其默认值为 0", + "SelectsClearableIntro": "包含清空按钮,可将选择器清空为初始状态", + "SelectsClearableTitle": "可清空单选", + "SelectsClientValidationButtonText2": "提交", + "SelectsClientValidationIntro": "下拉框未选择时,点击提交按钮时拦截。", + "SelectsClientValidationTitle": "Select 客户端验证", + "SelectsConfirmSelectIntro": "通过设置 OnBeforeSelectedItemChange 委托或者设置 ShowSwal 参数值为 true,阻止当前值的改变。", + "SelectsConfirmSelectTitle": "带确认的下拉框", + "SelectsCustomTemplateIntro": "通过设置 ItemTemplate 可以自定义选项渲染样式", + "SelectsCustomTemplateTitle": "自定义选项模板", + "SelectsDescription": "当选项过多时,使用下拉菜单展示并选择内容", + "SelectsDisableIntro": "选择器不可用状态", + "SelectsDisableOption": "下拉框内选项 禁用 示例", + "SelectsDisableTitle": "Select 禁用下拉框", + "SelectsDisplayLabelDescription": "前置标签显式规则与 BootstrapInput 组件一致 [传送门]", + "SelectsDisplayLabelDivider1": "双向绑定显示标签", + "SelectsDisplayLabelDivider2": "双向绑定不显示标签", + "SelectsDisplayLabelDivider3": "自定义 DisplayText", + "SelectsDisplayLabelIntro": "组件双向绑定时会根据条件自动判断是否显示标签文字", + "SelectsDisplayLabelSelectText": "自定义城市", + "SelectsDisplayLabelTitle": "显示标签", + "SelectsDisplayTemplateIntro": "自定义选项显示 UI", + "SelectsDisplayTemplateTitle": "显示模板", + "SelectsEnumDescription1": "当绑定值为可为空枚举类型时,组件内部自动通过 PlaceHolder 值添加首选项,未设置 PlaceHolder 值时,使用资源文件中的 请选择 ... 作为首选项,本示例绑定 EnumEducation 枚举类型", + "SelectsEnumDescription2": "绑定值为枚举类型时,设置 PlaceHolder 无效", + "SelectsEnumIntro": "Select 组件绑定枚举类型示例", + "SelectsEnumSelectText1": "可为空", + "SelectsEnumSelectText2": "不为空", + "SelectsEnumSelectText3": "使用枚举整形值作为集合", + "SelectsEnumTitle": "枚举数据", + "SelectsGroupIntro": "备选项进行分组展示", + "SelectsGroupTitle": "分组", + "SelectsGuidIntro": "组件绑定值为 Guid 结构体示例", + "SelectsGuidTitle": "绑定泛型为 Guid 结构", + "SelectsIsEditableDesc": "开启可编辑功能后,输入值如果候选项中没有时,可以通过 TextConvertToValueCallback 回调方法返回新值,可以通过 OnInputChangedCallback 回调对 Items 数据源进行更新,防止页面刷新后输入值丢失", + "SelectsIsEditableIntro": "通过设置 IsEditable=\"true\" 使组件可录入", + "SelectsIsEditableTitle": "可编辑", + "SelectsNormalDescription": "本例中,第一个下拉框没有进行 Value 双向绑定,所以选择不同选项时仅自己变化,其余下拉框共用同一数据源 Items 并且双向绑定 Value 值,选择不同选项时一同变化", + "SelectsNormalIntro": "提供各种颜色的下拉选择框", + "SelectsNormalTitle": "Select 下拉选择框", + "SelectsNullableBooleanDescription1": "可为空布尔类型多用于条件搜索框中", + "SelectsNullableBooleanDescription2": "选中第一个选项时,绑定值 SelectedIntItemnull", + "SelectsNullableBooleanIntro": "Select 组件绑定 bool? 类型示例", + "SelectsNullableBooleanTitle": "绑定可为空布尔类型", + "SelectsNullableDescription": "选中第一个选项时,绑定值 SelectedIntItemnull", + "SelectsNullableIntro": "Select 组件绑定 int? 类型示例", + "SelectsNullableTitle": "绑定可为空类型", + "SelectsOnBeforeSelectedItemChange": "下拉框选项改变前触发此事件", + "SelectsOnInputChangedCallback": "编辑模式下输入文本转换为对应 Value 回调方法", + "SelectsOnSelectedItemChanged": "下拉框选项改变时触发此事件", + "SelectsOption1": "请选择 ...", + "SelectsOption2": "北京", + "SelectsOption3": "上海", + "SelectsOption4": "广州", + "SelectsPlaceHolder": "未选择", + "SelectsPopoverIntro": "通过设置 IsPopover 参数,组件使用 popover 渲染 UI 防止由于父容器设置 overflow: hidden; 使弹窗无法显示问题", + "SelectsPopoverTitle": "悬浮弹窗", + "SelectsShowSearchIntro": "通过设置 ShowSearch 属性控制是否显示搜索框,默认为 false 不显示搜索框,可以通过设置 IsAutoClearSearchTextWhenCollapsed 参数控制下拉框收起后是否自动清空搜索框内文字,默认值为 false 不清空", + "SelectsShowSearchTitle": "带搜索框的下拉框", + "SelectsStaticIntro": "直接在 Select 组件内部进行硬编码书写,适用于静态数据下拉框", + "SelectsStaticTitle": "静态数据", + "SelectsTimeZoneIntro": "下拉框展现时区数据", + "SelectsTimeZoneTitle": "时区下拉框", + "SelectsTitle": "Select 选择器", + "SelectsVirtualizeDescription": "组件虚拟滚动支持两种形式通过 Items 或者 OnQueryAsync 回调方法提供数据。如果数据源使用 OnQueryAsync 回调获得时只有当下拉框展开时才会触发,,如果数据源使用 Items 时,由于性能问题(有些开发会把几百万条数据给 Items)内部并没有进行查找选中项,所以需要设置 DefaultVirtualizeItemText 值应对首次加载时不知道如何显示问题", + "SelectsVirtualizeIntro": "通过设置 IsVirtualize 参数开启组件虚拟功能特性", + "SelectsVirtualizeTitle": "虚拟滚动", + "SwalContent": "您确认要改变选项值吗?", + "SwalFooter": "点击确认改变选项值,选择取消后值不变", + "SwalTitle": "下拉框值变更" }, - "BootstrapBlazor.Server.Components.Samples.FileViewers": { - "Title": "FileViewer 文件预览器", - "BaseUsageText": "基础用法", - "BaseUsageIntro": "Excel/Word 文件路径或者URL", - "BaseUsageText2": "重新载入文件", - "BaseUsageIntro2": "使用 Reload 方法重新载入文件", - "Tips": "目前仅支持 Excel(.xlsx) 和 Word(.docx) 格式.
            特别说明:
            如果 Linux 下提示 The type initializer for 'Gdip' threw an exception. 错误, 则使用需要安装 libgdiplus 并开启 System.Drawing 支持.
            为非 Windows 平台启用 System.Drawing 支持,在你的项目文件中 (*.csproj), 添加:" + "BootstrapBlazor.Server.Components.Samples.SelectTables": { + "ColorIntro": "通过设置 Color 改变组件边框颜色", + "ColorTitle": "颜色", + "Intro": "下拉框为表格用于展示复杂类型的选择需求", + "IsDisabledIntro": "设置 IsDisabled 属性值为 true 时,组件禁止选择", + "IsDisabledTitle": "禁用", + "NormalDesc": "可通过 IsClearable 控制是否显示清除小按钮,默认值 false", + "NormalIntro": "适用于候选项信息量比较大,用 Table 呈现信息量", + "NormalTitle": "基本功能", + "SearchIntro": "通过设置 TableColumnSearchable 开启列可搜索功能,与组件 Table 一样,通过设置 IsPagination ShowSearch 开启分页与表格搜索功能", + "SearchTitle": "搜索分页", + "SortableIntro": "通过设置 TableColumnSortable Filterable 开启排序与过滤功能,与组件 Table 一样", + "SortableTitle": "排序过滤", + "TemplateIntro": "通过自定义 Template 模板,呈现定制化显示内容", + "TemplateTitle": "显示模板", + "Title": "TableSelect 表格选择器", + "ValidateFormIntro": "下拉框未选择时,点击提交按钮时拦截。", + "ValidateFormTitle": "客户端验证" }, - "BootstrapBlazor.Server.Components.Samples.CountUps": { - "Title": "计数器 CountUp", - "Description": "多用于报表数据动态展示,数字以跳动的形式展现", - "CountUpsNormalTitle": "基础用法", - "CountUpsNormalIntro": "通过设置 Value 参数赋值", - "Value": "计数结束值", - "CountOption": "CountOption 实例值", - "OnCompleted": "获得/设置 计数结束回调方法", - "StartValue": "开始计数值", - "Duration": "动画时长", - "UseEasing": "是否使用过渡动画", - "DecimalPlaces": "小数位数", - "Decimal": "小数点符号", - "UseGrouping": "是否分组", - "UseIndianSeparators": "是否使用分隔符", - "Separator": "分隔符", - "Prefix": "前缀文本", - "Suffix": "后缀文本", - "SmartEasingThreshold": "动画阈值", - "SmartEasingAmount": "动画总量", - "EnableScrollSpy": "是否启用滚动监听", - "ScrollSpyDelay": "滚动延时", - "ScrollSpyOnce": "滚动监听一次", - "Numerals": "数字符号集合" + "BootstrapBlazor.Server.Components.Samples.SelectTables+SelectTableMode": { + "Foo.Required": "{0} 是必填项" }, - "BootstrapBlazor.Server.Components.Samples.EyeDroppers": { - "EyeDropperTitle": "屏幕取色 EyeDropperService", - "EyeDropperDescription": "用户可以从屏幕上采样颜色,包括在浏览器窗口之外", - "EyeDropperNormalTitle": "基础用法", - "EyeDropperNormalIntro": "使用 EyeDropperService,可以启动吸管模式。启动后,光标会发生变化以向用户指示该模式处于活动状态。然后用户可以从屏幕上的任何位置选择一种颜色,通过按 Escape 关闭吸管模式", - "EyeDropperNormalButtonText": "取色", - "EyeDropperTips1": "这是一项实验性技术,在生产中使用之前请仔细检查 浏览器兼容性表", - "EyeDropperTips2": "为防止恶意网站在用户不知情的情况下从用户屏幕获取像素数据,必须由用户操作(如单击按钮)时调用", - "EyeDropperTips3": "为了帮助用户更容易注意到吸管模式,浏览器将其设置为显而易见。短暂延迟后,正常的鼠标光标消失,取而代之的是一个放大镜。在滴管模式启动和用户可以选择像素以确保用户有时间查看放大镜之间也存在延迟", - "EyeDropperTips4": "用户也可以随时取消吸管模式(按键 Escape)" + "BootstrapBlazor.Server.Components.Samples.SelectTrees": { + "SelectTreesBindingIntro": "绑定组件内变量,数据自动同步", + "SelectTreesBindingTitle": "双向绑定", + "SelectTreesClientValidationButtonText": "提交", + "SelectTreesClientValidationIntro": "组件内置 ValidateForm 可设置验证规则", + "SelectTreesClientValidationTitle": "客户端验证", + "SelectTreesDescription": "下拉框内呈现树状数据结构,供选择", + "SelectTreesDisableIntro": "设置 IsDisabled 使组件禁用", + "SelectTreesDisableTitle": "禁用", + "SelectTreesEditDesc": "设置 IsEditable=\"true\" 后,文本框显示的内容为 TreeView 选中节点的 Value 值,输入值可以不在 Items 集合中", + "SelectTreesEditIntro": "通过设置 IsEditable=\"true\" 可设置下拉框选择后文本框可输入", + "SelectTreesEditTitle": "可输入", + "SelectTreesIsPopoverIntro": "通过设置 IsPopover 参数,组件使用 popover 渲染 UI 防止由于父容器设置 overflow: hidden; 使弹窗无法显示问题", + "SelectTreesIsPopoverTitle": "悬浮弹窗", + "SelectTreesNormalIntro": "选中节点", + "SelectTreesNormalTitle": "普通用法", + "SelectTreesTitle": "树状选择器 SelectTree" }, - "BootstrapBlazor.Server.Components.Pages.Chats": { - "ChatsTitle": "Azure OpenAI 服务", - "ChatsDescription": "Azure OpenAI 服务是一个基于 Azure 云服务的聊天机器人,可以通过对话的方式与用户进行交互", - "ChatNormalTitle": "Azure OpenAI 服务", - "ChatNormalIntro": "通过调用 IAzureOpenAIService 服务方法 GetChatCompletionsAsync 进行聊天对话", - "ChatUserTitle": "聊天场景", - "ChatUserMessageTitle": "你好 {0}", - "ChatInfo": "由于 GPT 无免费接口,体验次数为 {1} 次,当前次数为 {0}" + "BootstrapBlazor.Server.Components.Samples.ShieldBadges": { + "ShieldBadgeNormalIntro": "通过 Icon 设置图标,通过 Label 设置左侧文本,通过 Text 设置右侧文本", + "ShieldBadgeNormalTitle": "基础用法", + "SubTitle": "带图标标签文本的徽章组件高仿 Shields Badge", + "Title": "ShieldBadge 徽章组件" }, - "BootstrapBlazor.Server.Components.Samples.HtmlRenderers": { - "Title": "Html 转化器", - "SubTitle": "把组件渲染成 Html 字符串", + "BootstrapBlazor.Server.Components.Samples.SignaturePadPageResponsive": { + "BackText": "返回前页", + "ResponsiveInterfaceText": "响应式签名界面", + "ResultText": "您的签名", + "SignatureText": "签名", + "TipsResponsive": "设备宽度小于 640px (例如手机) 自动置顶无边框, 宽度小于 500px 按钮自动旋转. 可选透明背景。" + }, + "BootstrapBlazor.Server.Components.Samples.SignaturePads": { + "BaseUsageIntro": "鼠标滑动进行签名", "BaseUsageText": "基础用法", - "IntroText": "有些应用场景需要我们获得 Component 最终输出的 Html 代码片段,调用 IComponentHtmlRenderer 服务的 RenderAsync 实例方法即可" + "ButtonCssStyleIntro": "设置按钮样式", + "ButtonCssStyleText": "按钮CSS式样", + "CustomButtonIntro": "自定义按钮文本", + "CustomButtonText": "自定义按钮文本", + "ResponsiveInterfaceText": "响应式签名界面", + "ResultBase64Text": "签名 Base64", + "ResultText": "您的签名", + "SignText": "请签名", + "Tips": "复杂签名会导致传输数据量大 ssr 会出现断流显示 reload 错误,配置更改单个传入集线器消息的最大大小(默认 32KB)解决这个问题。builder.Services.AddServerSideBlazor().AddHubOptions(o => o.MaximumReceiveMessageSize = null);", + "TipsResponsive": "设备宽度小于 640px (例如手机) 自动置顶无边框, 宽度小于 500px 按钮自动旋转. 可选透明背景。", + "Title": "SignaturePad 手写签名" + }, + "BootstrapBlazor.Server.Components.Samples.Skeletons": { + "SkeletonsDescription": "在需要等待加载内容的位置提供一个占位图形组合", + "SkeletonsFormIntro": "适用于编辑表单加载时显示", + "SkeletonsFormTitle": "表单骨架屏", + "SkeletonsImgDescription": "通过设置 Circle 属性可以设置为圆形显示", + "SkeletonsImgIntro": "适用于头像、图片等类型加载时显示", + "SkeletonsImgTitle": "图片骨架屏", + "SkeletonsParagraphDescription": "默认段落骨架屏仅显示三行,如果需要多行占位,请放置多个 SkeletonParagraph 即可", + "SkeletonsParagraphIntro": "适用于大段文字等类型加载时显示", + "SkeletonsParagraphTitle": "段落骨架屏", + "SkeletonsTableIntro": "适用于编辑表格加载时显示", + "SkeletonsTableTitle": "表格骨架屏", + "SkeletonsTips1": "网络较慢,需要长时间等待加载处理的情况下", + "SkeletonsTips2": "图文信息内容较多的列表/卡片中", + "SkeletonsTips3": "只在第一次加载数据的时候使用", + "SkeletonsTips4": "可以被 Spin 完全代替,但是在可用的场景下可以比 Spin 提供更好的视觉效果和用户体验", + "SkeletonsTipsTitle": "何时使用", + "SkeletonsTitle": "Skeleton 骨架屏", + "SkeletonsTreeIntro": "适用于树组件加载时显示", + "SkeletonsTreeTitle": "树骨架屏" }, - "BootstrapBlazor.Server.Components.Samples.ContextMenus": { - "ContextMenuItemCopy": "拷贝", - "ContextMenuItemPast": "粘贴", - "ContextMenuTitle": "ContextMenu 右键菜单", - "ContextMenuDescription": "用户点击鼠标右键时弹出的上下文关联菜单", - "ContextMenuNormalTitle": "基础用法", - "ContextMenuNormalIntro": "点击 ContextMenuZone 内区域右键,弹出上下文关联菜单", - "ContextMenuCustomUITitle": "自定义组件", - "ContextMenuCustomUIIntro": "点击 Li 弹出上下文关联菜单", - "ContextMenuTableTitle": "Table 组件", - "ContextMenuTableIntro": "点击 Table 组件行数据右键,弹出上下文关联菜单", - "ContextMenuTreeTitle": "Tree 组件", - "ContextMenuTreeIntro": "点击 Tree 组件行数据右键,弹出上下文关联菜单", - "ContextMenuCallbackTitle": "ContextMenu 回调", - "ContextMenuCallbackIntro": "通过设置 ContextMenu 组件参数 OnBeforeShowCallback 获得右键菜单弹出前回调事件,可用于数据准备工作,也可按需渲染菜单", - "ContextMenuDisabledTitle": "禁止回调方法", - "ContextMenuDisabledIntro": "通过设置 ContextMenuItem 组件参数 OnDisabledCallback 回调方法可用于设置当前右键选项是否禁用逻辑" + "BootstrapBlazor.Server.Components.Samples.SlideButtons": { + "AutoCloseIntro": "通过设置 IsAutoClose 控制是否点击弹窗以外区域自动关闭弹窗", + "AutoCloseText": "自动关闭", + "BaseUsageIntro": "通过设置 Items 给出二级功能菜单数据项", + "BaseUsageText": "基本用法", + "BodyTemplateIntro": "通过设置 BodyTemplate 自定义弹窗内数据", + "BodyTemplateText": "自定义模板", + "ShowHeaderIntro": "通过设置 ShowHeader 控制是否显示一个标题栏,默认值为 false", + "ShowHeaderText": "显示标题", + "SlideButtonHeaderText": "Foo 数据一览", + "SlideButtonIntro": "点击按钮后弹出功能菜单等信息,多用于二级功能展示", + "SlideButtonItemsIntro": "在页面中直接录入 SlideButtonItems 集合当数据源", + "SlideButtonItemsText": "选项集合", + "SlideButtonTitle": "SlideButton 抽屉式弹窗" }, - "BootstrapBlazor.Server.Components.Samples.DockViews.Index": { - "DockViewTitle": "DockView 可停靠视图", - "DockViewDescription": "多标签停靠布局管理器", - "DockViewIntro": "

            DockView 组件是封装的 Golden Layout 库,它是一个 JavaScript 布局管理器,它使您能够在网页中布局组件并通过拖放重新排列它们。其特点包括:

            • 原生弹出窗口
            • 触摸支持
            • 支持 AngularVue 等应用框架
            • 虚拟组件
            • 全面的API
            • 加载和保存布局
            • 焦点组件
            • 完全主题化
            • 适用于现代浏览器(FirefoxChrome
            • 响应式设计
            " + "BootstrapBlazor.Server.Components.Samples.Sliders": { + "SlidersDescription": "通过拖动滑块在一个固定区间内进行选择", + "SlidersIsDisabledIntro": "通过设置 IsDisabled=\"true\" 禁用组件", + "SlidersIsDisabledTitle": "禁用", + "SlidersNormalIntro": "在拖动滑块时,改变当前值", + "SlidersNormalTitle": "基础用法", + "SlidersRangeIntro": "通过设置绑定值标签 RangeAttribute 自动生成 min max", + "SlidersRangeTitle": "Range 标签", + "SlidersTitle": "Slider 滑块", + "SlidersValueChanged": "ValueChanged 回调方法" }, - "BootstrapBlazor.Server.Components.Samples.DockViews.DockViewCol": { - "DockViewColTitle": "DockView 列布局", - "DockViewColIntro": "通过设置 Type=\"DockContentType.Column\" 使 DockView 垂直布局" + "BootstrapBlazor.Server.Components.Samples.SmilesDrawers": { + "SmilesDrawerDescription": "SmilesDrawer 是一个开源的化学信息学工具包,用于分子建模和化学信息学", + "SmilesDrawerNormalIntro": "通过 Smiles 设置分子式,组件画图", + "SmilesDrawerNormalTitle": "基础用法", + "SmilesDrawerSizeIntro": "通过设置 Width Height 值设置分子式宽高", + "SmilesDrawerSizeTitle": "尺寸", + "SmilesDrawerTitle": "SmilesDrawer 分子图组件" }, - "BootstrapBlazor.Server.Components.Samples.DockViews.DockViewRow": { - "DockViewRowTitle": "DockView 行布局", - "DockViewRowIntro": "通过设置 Type=\"DockContentType.Row\" 使 DockView 水平布局" + "BootstrapBlazor.Server.Components.Samples.Sockets.Adapters": { + "AdaptersDescription": "通过数据适配器接收数据并且显示", + "AdaptersTitle": "Socket 数据适配器示例", + "NormalIntro": "连接后通过 DataPackageAdapter 数据适配器的 ReceivedCallBack 回调方法接收服务端发送来的时间戳数据", + "NormalTitle": "基本用法" }, - "BootstrapBlazor.Server.Components.Samples.DockViews.DockViewStack": { - "DockViewStackTitle": "DockView 堆栈布局", - "DockViewStackIntro": "通过设置 Type=\"DockContentType.Stack\" 使 DockView 堆栈布局" + "BootstrapBlazor.Server.Components.Samples.Sockets.AutoReceives": { + "NormalIntro": "连接后通过 ReceivedCallBack 回调方法自动接收服务端发送来的时间戳数据", + "NormalTitle": "基本用法", + "ReceivesDescription": "通过 ReceiveCallback 接收数据并且显示", + "ReceivesTitle": "自动接收示例" }, - "BootstrapBlazor.Server.Components.Samples.DockViews.DockViewComplex": { - "DockViewComplexTitle": "DockView 复杂布局", - "DockViewComplexIntro": "通过组合、嵌套设置 DockContentType 值可以得到复杂布局" + "BootstrapBlazor.Server.Components.Samples.Sockets.AutoReconnects": { + "AutoReconnectsDescription": "链路断开后自动重连示例", + "AutoReconnectsTitle": "Socket 自动重连示例", + "NormalIntro": "通过设置 IsAutoReconnect 开启自动重连机制", + "NormalTitle": "基本用法" }, - "BootstrapBlazor.Server.Components.Samples.DockViews.DockViewLayout": { - "DockViewLayoutTitle": "DockView 自定义布局", - "DockViewLayoutIntro": "通过设置 DockView 的属性 LayoutConfig 初始化控制面板的显示布局, 方法 GetLayoutConfig 获取面板的显示布局" + "BootstrapBlazor.Server.Components.Samples.Sockets.DataEntities": { + "ConfigIntro": "使用 ConfigureDataConverters 方法对实体类进行映射配置将接收到的数据自动转化", + "ConfigTitle": "数据实体类映射配置", + "DataEntityDescription": "接收到通讯数据后自动转成业务需要的实体类", + "DataEntityTitle": "Socket 数据转化实体类", + "NormalIntro": "通过 DataPropertyConverterAttribute 标签开启数据自动转换功能", + "NormalTitle": "基本用法" }, - "BootstrapBlazor.Server.Components.Samples.DockViews.DockViewLock": { - "DockViewLockTitle": "DockView 锁定面板", - "DockViewLockIntro": "通过设置 Dock 的属性 IsLock,控制所有面板是否能拖动" + "BootstrapBlazor.Server.Components.Samples.Sockets.ManualReceives": { + "NormalIntro": "连接后通过 ReceiveAsync 回调方法接收服务端发送来的数据,需要自行处理粘包分包的数据问题", + "NormalTitle": "基本用法", + "ReceivesDescription": "通过调用 ReceiveAsync 接收数据并且显示", + "ReceivesTitle": "手动接收示例" }, - "BootstrapBlazor.Server.Components.Samples.DockViews.DockViewVisible": { - "DockViewVisibleTitle": "DockView 可见性设置", - "DockViewVisibleIntro": "通过设置 Visible 控制是否显示组件,使用 OnVisibleStateChangedAsync 设置面板关闭回调委托方法" + "BootstrapBlazor.Server.Components.Samples.SortableLists": { + "SortableListClassLi1": "拖动元素样式 sortable-chosen", + "SortableListClassLi2": "拖动元素克隆项默认样式 sortable-ghost 可通过 GhostClass 自定义", + "SortableListClassTitle": "由于 SortableList为容器组件,内容均为自定义组件,无法内置样式,需要根据实际情况自行设置样式", + "SortableListCloneIntro": "通过设置 SortableListOption 参数 Clone 设置拖拽时是否克隆当前元素", + "SortableListCloneTitle": "拖拽时克隆元素", + "SortableListDescription": "可排序的拖拽组件", + "SortableListDisableSortIntro": "通过设置 SortableListOption 参数 Sort 设置拖拽时是否排序当前元素,本例中通过设置 Putback=\"false\" 禁止元素拖拽回左侧集合中", + "SortableListDisableSortTitle": "禁止排序", + "SortableListFilterIntro": "通过设置 SortableListOption 参数 Filter 设置有条件性的拖拽元素,示例中红色元素无法拖动", + "SortableListFilterTitle": "条件过滤拖拽组件", + "SortableListGroupIntro": "通过设置 SortableListOption 参数 Group 指定组名,使不同组之间元素可以拖拽", + "SortableListGroupTitle": "分组共享拖拽", + "SortableListHandlerIntro": "通过设置 SortableListOption 参数 Handle 设置指定可拖拽元素,鼠标拖动图标时拖动整个元素", + "SortableListHandlerTitle": "拖拽控制元素", + "SortableListMultiIntro": "通过设置 SortableListOption 参数 MultiDrag 可先选择多个项目后拖拽", + "SortableListMultiTitle": "多项拖拽", + "SortableListNestIntro": "通过嵌套使用 SortableList 组件即可", + "SortableListNestTitle": "嵌套使用", + "SortableListNormalIntro": "通过设置 SortableListOption 参数 RootSelector 指定样式选择器获得根元素,通过设置 OnUpdate 回调方法重新设置数据源", + "SortableListNormalTitle": "简单例子", + "SortableListOnAddIntro": "通过设置 SortableEvent 参数 FromId 获得拖动项所属 SortableList。本示例中三个区域内元素可以任意拖动", + "SortableListOnAddTitle": "多区域拖动", + "SortableListSwapIntro": "通过设置 SortableListOption 参数 Swap 设置拖拽项与目标项目交换", + "SortableListSwapTitle": "交换", + "SortableListTableIntro": "通过设置 SortableListOption 参数 RootSelector 指定拖拽根元素为 tbody 即可对行进行拖拽操作", + "SortableListTableTitle": "表格行拖拽", + "SortableListTitle": "SortableList 拖拽组件" }, - "BootstrapBlazor.Server.Components.Samples.DockViews.DockViewNest": { - "DockViewNestTitle": "DockView 嵌套布局", - "DockViewNestIntro": "组件 DockComponent 内可嵌套放置 DockView 通过设置 ShowHeader=\"false\" 可使其标签不可见" + "BootstrapBlazor.Server.Components.Samples.Speeches.Index": { + "SpeechButtonText": "开始体验", + "SpeechDescription": "通过麦克风语音采集转换为文字(STT),或者通过文字通过语音朗读出来(TTS)", + "SpeechDescription1": "本套组件内置 AzureBaidu 语音服务,本示例依赖于", + "SpeechDescription2": "使用本组件时需要引用其组件包", + "SpeechGroupBoxHeaderText": "指令面板", + "SpeechGroupBoxTitle": "指令输出区", + "SpeechLi1": "点击 开始 按钮后,对着电脑说 请帮我把灯打开", + "SpeechLi2": "电脑接收到指令后,会询问 您确认要把灯打开吗?请您确认!", + "SpeechLi3": "您对着电脑说: 确认", + "SpeechLi4": "电脑执行指令,在下方文本框内输入 已经为您打开 文本", + "SpeechLiTitle": "实战体验", + "SpeechTips1": "1. 注册服务", + "SpeechTips1Text": "增加 Baidu 语音服务", + "SpeechTips2": "2. 使用服务", + "SpeechTips2Text1": "语音识别服务", + "SpeechTips2Text2": "语音合成服务", + "SpeechTitle": "Speech 语音识别与合成" }, - "BootstrapBlazor.Server.Components.Samples.DockViews2.Index": { - "DockView2Title": "DockViewV2 可停靠视图", - "DockView2Description": "多标签停靠布局管理器", - "DockView2Intro": "

            DockView 组件是封装的 DockView 库,它是一个 JavaScript 布局管理器,它使您能够在网页中布局组件并通过拖放重新排列它们。其特点包括:

            • 原生弹出窗口
            • 触摸支持
            • 支持 AngularVue 等应用框架
            • 虚拟组件
            • 全面的API
            • 加载和保存布局
            • 焦点组件
            • 完全主题化
            • 适用于现代浏览器(FirefoxChrome
            • 响应式设计
            " + "BootstrapBlazor.Server.Components.Samples.Speeches.Recognizers": { + "RecognizerNormalDescription": "使用说明", + "RecognizerNormalIntro": "点击开始识别后对录入语音进行识别", + "RecognizerNormalTips": "点击 开始识别 后,脚本运行可能会提示要求录音权限,授权后开始讲话,5秒后(可配置)右侧文本框显示语音识别结果,请勿讲完话后直接点击

            结束识别

            ", + "RecognizerNormalTitle": "普通用法", + "RecognizersSubTitle": "通过语音采集设备将语音转化为文本", + "RecognizersTitle": "Recognizer 语音识别" }, - "BootstrapBlazor.Server.Components.Samples.DockViews2.DockViewCol": { - "DockViewColTitle": "DockViewV2 列布局", - "DockViewColIntro": "通过设置 Type=\"DockViewContentType.Column\" 使 DockViewV2 垂直布局,通过设置 Height=\"240\" 初始化其面板高度" + "BootstrapBlazor.Server.Components.Samples.Speeches.SpeechWaves": { + "NormalIntro": "显示波形图", + "NormalTitle": "基础用法", + "ShowUsedTimeIntro": "通过 ShowUsedTime", + "ShowUsedTimeTitle": "显示时长", + "SpeechWavesDescription": "开始采集语音时显示的波形动态图", + "SpeechWaveTitle": "SpeechWave 语音波形图", + "ValueButtonText1": "隐藏", + "ValueButtonText2": "显示", + "ValueIntro": "通过 Show 值控制是否显示波形图", + "ValueTitle": "参数控制是否显示" }, - "BootstrapBlazor.Server.Components.Samples.DockViews2.DockViewRow": { - "DockViewRowTitle": "DockViewV2 行布局", - "DockViewRowIntro": "通过设置 Type=\"DockViewContentType.Row\" 使 DockViewV2 水平布局,通过设置 Width=\"240\" 初始化其面板宽度" + "BootstrapBlazor.Server.Components.Samples.Speeches.Synthesizers": { + "SynthesizerNormalIntro": "点击开始合成后对文本内容进行语音合成", + "SynthesizerNormalTitle": "普通用法", + "SynthesizersSubTitle": "将文本内容转化为语音", + "SynthesizersTitle": "Synthesizer 语音合成" }, - "BootstrapBlazor.Server.Components.Samples.DockViews2.DockViewGroup": { - "DockViewGroupTitle": "DockViewV2 组布局", - "DockViewGroupIntro": "通过设置 Type=\"DockViewContentType.Group\" 使 DockViewV2 组布局" + "BootstrapBlazor.Server.Components.Samples.Speeches.WebSpeeches": { + "WebSpeechNormalIntro": "输入文字后选择相对应的语种进行朗读", + "WebSpeechNormalTitle": "语音合成", + "WebSpeechRecognitionButtonText": "语音识别", + "WebSpeechRecognitionContinuousButtonText": "持续识别", + "WebSpeechRecognitionContinuousIntro": "通过设置 WebSpeechRecognitionOption 参数 Continuous=\"true\" InterimResults=\"true\" 进行实时语音识别", + "WebSpeechRecognitionContinuousTitle": "实时语音识别", + "WebSpeechRecognitionIntro": "通过麦克风输入语音,进行语音识别", + "WebSpeechRecognitionTitle": "语音识别", + "WebSpeechSpeakButtonText": "朗读", + "WebSpeechStopButtonText": "停止", + "WebSpeechSubTitle": "使用浏览器接口功能提供语音识别/合成服务", + "WebSpeechText": "开始朗读一段文字", + "WebSpeechTitle": "Web Speech Api 网页原生语音处理 API" }, - "BootstrapBlazor.Server.Components.Samples.DockViews2.DockViewComplex": { - "DockViewComplexTitle": "DockViewV2 复杂布局", - "DockViewComplexIntro": "通过组合、嵌套设置 DockViewContentType 值可以得到复杂布局" + "BootstrapBlazor.Server.Components.Samples.Spinners": { + "SpinnersColorIntro": "提供基本颜色的旋转图标", + "SpinnersColorTitle": "Spinner 带有颜色的旋转图标", + "SpinnersCustomIntro": "带有文字的自定义布局", + "SpinnersCustomLoading": "Loading...", + "SpinnersCustomTitle": "自定义标题", + "SpinnersDescription": "加载数据时显示动效", + "SpinnersFlexIntro": "自定义布局", + "SpinnersFlexTitle": "Flex 布局", + "SpinnersFloatIntro": "使用 Float 布局", + "SpinnersFloatTitle": "悬浮", + "SpinnersGrowingColorIntro": "提供基本颜色的旋转图标", + "SpinnersGrowingColorTitle": "Growing Spinner 带有颜色的旋转图标", + "SpinnersGrowingIntro": "生长式旋转图标", + "SpinnersGrowingTitle": "Growing Spinner 旋转图标", + "SpinnersNormalIntro": "默认旋转图标", + "SpinnersNormalTitle": "基础用法", + "SpinnersSizeIntro": "图标样式大小", + "SpinnersSizeTitle": "Spinner 旋转图标大小", + "SpinnersTips": "页面局部处于等待异步数据或正在渲染过程时,合适的加载动效会有效缓解用户的焦虑。", + "SpinnersTipsTitle": "何时使用", + "SpinnersTitle": "Spinner 旋转图标" }, - "BootstrapBlazor.Server.Components.Samples.DockViews2.DockViewLayout": { - "DockViewLayoutTitle": "DockViewV2 自定义布局", - "DockViewLayoutIntro": "通过设置 DockViewV2 的属性 LayoutConfig 初始化控制面板的显示布局, 方法 GetLayoutConfig 获取面板的显示布局" + "BootstrapBlazor.Server.Components.Samples.Splits": { + "SplitsBarHandleHide": "隐藏拖动栏", + "SplitsBarHandleShow": "显示拖动栏", + "SplitsCollapsibleFalse": "隐藏调整按钮", + "SplitsCollapsibleIntro": "通过设置 IsCollapsible 属性来设置是否可以折叠面板", + "SplitsCollapsibleTitle": "折叠/展开", + "SplitsCollapsibleTrue": "显示调整按钮", + "SplitSetLeftIntro": "通过组件实例方法 SetLeftWidth 设置左侧/上侧面板宽度,右侧/下侧面板宽度自适应", + "SplitSetLeftTitle": "代码设置面板宽度", + "SplitsMinimumIntro": "通过设置 FirstPaneMinimumSize SecondPaneMinimumSize 值限制面板最小尺寸,支持所有单位。本例中设置左右面板最小值均为 10%", + "SplitsMinimumTitle": "最小值", + "SplitsNestedIntro": "通过嵌套 Split 组件进行组合布局", + "SplitsNestedTitle": "嵌套使用", + "SplitsNormalIntro": "左右分割", + "SplitsNormalTitle": "基础用法", + "SplitsPanel1": "我是左侧面板", + "SplitsPanel10": "右边面板", + "SplitsPanel2": "我是右侧面板", + "SplitsPanel3": "我是上部面板", + "SplitsPanel4": "我是底部面板", + "SplitsPanel5": "上边面板", + "SplitsPanel6": "下边面板", + "SplitsPanel7": "右边面板", + "SplitsPanel8": "上边面板", + "SplitsPanel9": "下边面板", + "SplitsPercentIntro": "通过设置 Basis 属性来设置初始化位置占比", + "SplitsPercentTitle": "设置初始化百分比", + "SplitsTitle": "Split 面板分割", + "SplitsVerticalIntro": "通过设置 IsVertical 属性控制垂直分割面板", + "SplitsVerticalTitle": "垂直分割" }, - "BootstrapBlazor.Server.Components.Samples.DockViews2.DockViewLock": { - "DockViewLockTitle": "DockViewV2 锁定面板", - "DockViewLockIntro": "通过设置 DockViewV2 的属性 IsLock,控制所有面板是否能拖动,通过设置 ShowLock 控制是否显示锁定按钮" + "BootstrapBlazor.Server.Components.Samples.Splittings": { + "SplittingColorIntro": "设置 Color 更改进度条颜色", + "SplittingColorTitle": "颜色", + "SplittingColumnsIntro": "设置 Columns 更改进度条分割粒度", + "SplittingColumnsText": "分割粒度", + "SplittingColumnsTitle": "分割粒度", + "SplittingDescription": "加载数据时显示动效", + "SplittingNormalIntro": "默认加载动画", + "SplittingNormalTitle": "基础用法", + "SplittingText": "加载中 。。。", + "SplittingTextIntro": "修改显示的文本内容", + "SplittingTextTitle": "自定义文本", + "SplittingTips": "页面局部处于等待异步数据或正在渲染过程时,合适的加载动效会有效缓解用户的焦虑。", + "SplittingTipsTitle": "何时使用", + "SplittingTitle": "Loader 加载动画" }, - "BootstrapBlazor.Server.Components.Samples.DockViews2.DockViewTitle": { - "DockViewTitleTitle": "DockViewV2 设置标题", - "DockViewTitleIntro": "通过设置 ShowTitleBar 控制是否显示标题前功能按钮,使用 OnClickTitleBarCallback 设置回调委托方法,复杂功能使用 TitleTemplate 自定义" + "BootstrapBlazor.Server.Components.Samples.Stacks": { + "AlignItems": "垂直对齐方式", + "AlignSelf": "子项对齐方式", + "AttrAlignItems": "垂直布局模式", + "AttrChildContent": "内容模板", + "AttrIsReverse": "是否反向布局", + "AttrIsRow": "是否为行布局", + "AttrIsWrap": "是否允许折行", + "AttrJustify": "水平布局调整", + "BasicIntro": "可用于在水平或垂直堆栈中排列其子组件", + "BasicTitle": "普通用法", + "ColumnMode": "列布局", + "IsReverse": "是否反转", + "IsWrap": "是否折行", + "Justify": "水平对齐方式", + "Mode": "布局类型", + "RowMode": "行布局", + "StackItemGrowShrinkDesc": "StackItem 子项还有两个控制方式:", + "StackItemGrowShrinkLi": "
          • Grow 是否尽可能多的占用剩余空间 flex-grow-0 flex-grow-1
          • Shrink 是否尽可能的把空间让给前面兄弟元素 flex-shrink-0 flex-shrink-1
          • ", + "Title": "Stack 布局" }, - "BootstrapBlazor.Server.Components.Samples.DockViews2.DockViewVisible": { - "DockViewVisibleTitle": "DockViewV2 可见性设置", - "DockViewVisibleIntro": "通过设置 Visible 控制是否显示组件,使用 OnVisibleStateChangedAsync 设置面板关闭回调委托方法" + "BootstrapBlazor.Server.Components.Samples.Steps": { + "Step1Text": "第一步", + "Step1Title": "步骤一", + "Step2Text": "第二步", + "Step2Title": "步骤二", + "Step3Text": "完成", + "Step3Title": "步骤三", + "StepDesc": "这是一段描述性文字", + "StepsAttrChildContent": "设置当前步骤的内容模板", + "StepsAttrDescription": "描述信息", + "StepsAttrFinishedIcon": "步骤完成显示图标", + "StepsAttrHeaderTemplate": "设置当前步骤的标题模板", + "StepsAttrIcon": "步骤显示图标", + "StepsAttrText": "步骤显示文字", + "StepsAttrTitle": "步骤显示标题", + "StepsAttrTitleTemplate": "设置当前步骤的描述模板", + "StepsDescIntro": "每个步骤有其对应的步骤状态描述", + "StepsDescription": "引导用户按照流程完成任务的导航条", + "StepsDescTitle": "有描述的步骤条", + "StepsHeaderTemplateIntro": "通过设置 HeaderTemplate 自定义 Header", + "StepsHeaderTemplateTitle": "Header 模板", + "StepsNormalFinishedTemplateDesc": "通过设置 FinishedTemplate 可以实现步骤全部完成后的后续处理逻辑,比如显示已完成,如需要延时一定时间再跳转到一个新页面,需要自定义组件,再其 OnAfterRenderAsync 生命周期中处理", + "StepsNormalIntro": "简单的步骤条,通过直接绑定数据源 Items 即可", + "StepsNormalNextButtonText": "下一步", + "StepsNormalPrevButtonText": "上一步", + "StepsNormalResetButtonText": "重 置", + "StepsNormalTitle": "基础用法", + "StepsStepIntro": "简单的步骤条,组件内部直接使用 Step 组件设置步骤", + "StepsStepTitle": "基础用法", + "StepsTips": "Steps 组件支持通过设置 Items 属性或者直接内嵌 Step 组件两种方式进行 UI 呈现", + "StepsTipsTitle": "引导用户按照流程完成任务的分步导航条,可根据实际应用场景设定步骤,步骤不得少于 2 步", + "StepsTitle": "Step 步骤条", + "StepsTitleTemplateIntro": "通过设置 TitleTemplate 自定义 Title 文字", + "StepsTitleTemplateTitle": "Title 模板", + "StepsVerticalIntro": "通过设置 IsVertical=\"true\" 使步骤条竖式", + "StepsVerticalTitle": "竖式步骤条" }, - "BootstrapBlazor.Server.Components.Samples.DockViews2.DockViewNest": { - "DockViewNestTitle": "DockViewV2 嵌套布局", - "DockViewNestIntro": "组件 DockViewComponent 内可嵌套放置 DockViewV2 通过设置 ShowHeader=\"false\" 可使其标签不可见" + "BootstrapBlazor.Server.Components.Samples.SvgEditors": { + "BasicIntro": "用于 Svg 编辑", + "BasicTitle": "Svg 编辑器", + "SvgEditorTitle": "Svg 编辑器" }, - "BootstrapBlazor.Server.Components.Samples.MouseFollowers": { - "MouseFollowersTitle": "鼠标跟随器", - "MouseFollowersDescription": "可以为网站上的鼠标光标创建惊人而流畅的效果。", - "MouseFollowerNormalTitle": "普通模式", - "MouseFollowerNormalIntro": "显示一个跟随元素", - "MouseFollowerTextTitle": "文本模式", - "MouseFollowerTextIntro": "在光标中显示文本", - "MouseFollowerIconTitle": "图标模式", - "MouseFollowerIconIntro": "在光标中显示SVG图", - "MouseFollowerImageTitle": "图片模式", - "MouseFollowerImageIntro": "在光标中显示图片", - "MouseFollowerVideoTitle": "视频模式", - "MouseFollowerVideoIntro": "在光标中播放视频", - "MouseFollowersFollowerMode": "MouseFollowerMode.Normal 默认模式,MouseFollowerMode.Text 文本模式,MouseFollowerMode.Icon 图标模式,MouseFollowerMode.Image 图片模式,MouseFollowerMode.Video 视频模式", - "MouseFollowersGlobalMode": "全局|局部,模式", - "MouseFollowersContent": "文本,图标,图片路径,视频路径" + "BootstrapBlazor.Server.Components.Samples.SweetAlerts": { + "SwalConsoleInfo": "模态弹窗返回值为", + "SwalOptionContent": "模态对话框内容,不同按钮返回不同值", + "SwalOptionTitle": "模态对话框示例", + "SweetAlertsAutoCloseButtonText": "自动关闭弹窗", + "SweetAlertsAutoCloseDescription": "参数 IsAutoHide 默认为 false 不启用自动关闭功能, 参数 Delay 默认为 4000 毫秒", + "SweetAlertsAutoCloseIntro": "通过设置 IsAutoHide Delay 属性,自定义自动关闭时间", + "SweetAlertsAutoCloseTitle": "自动关闭功能", + "SweetAlertsButtonIntro": "通过设置 ButtonTemplate 自定义弹窗内按钮", + "SweetAlertsButtonTitle": "自定义按钮", + "SweetAlertsCloseButtonText": "代码关闭弹窗", + "SweetAlertsCloseDescription": "不启用自动关闭功能 IsAutoHide=\"false\" 并且隐藏关闭按钮 ShowClose=\"false\", 可通过代码主动关闭弹窗", + "SweetAlertsCloseIntro": "通过调用 SwalOption CloseAsync 方法关闭弹窗", + "SweetAlertsCloseTitle": "代码关闭功能", + "SweetAlertsComponentIntro": "通过设置 Component 弹窗内容为自定义组件", + "SweetAlertsComponentTitle": "显示自定义组件", + "SweetAlertsDescription": "模态对话框,多用于动作过程中进行询问后继续,或者显示执行结果", + "SweetAlertsDisplayIntro": "通过设置 Title Content 用于显示弹窗标题与内容", + "SweetAlertsDisplayTitle": "设置显示内容", + "SweetAlertsFooterButtonText": "带 Footer 弹窗", + "SweetAlertsFooterDescription": "参数 ShowFooter 默认为 false 不显示页脚模板,需要显示设置为 true", + "SweetAlertsFooterIntro": "通过设置 FooterTemplate 自定义 Footer 模板", + "SweetAlertsFooterTitle": "显示 Footer 信息", + "SweetAlertsModalDescription": "本示例代码通过调用 await SwalService.ShowModal 方法弹出模态框,只有关闭弹窗后,后续代码才继续执行", + "SweetAlertsModalIntro": "通过调用 await SwalService.ShowModal 方法弹出模态框,点击弹窗内按钮关闭弹窗后,后续代码继续执行", + "SweetAlertsModalTips": "IsConfirm 参数表示弹窗为确认窗口,自动生成 取消 确认 两个按钮", + "SweetAlertsModalTitle": "模态对话框", + "SweetAlertsNormalDoubt": "疑问", + "SweetAlertsNormalFail": "失败", + "SweetAlertsNormalHint": "提示", + "SweetAlertsNormalIntro": "通过注入服务调用 Swal 来弹出一个对话框", + "SweetAlertsNormalSuccess": "成功", + "SweetAlertsNormalTitle": "基础用法", + "SweetAlertsNormalWarn": "警告", + "SweetAlertsPopups": "弹窗", + "SweetAlertsPreContentText": "我是 Content", + "SweetAlertsPreTitleText": "我是 Title", + "SweetAlertsTips1": "1. 注入服务 SwalService", + "SweetAlertsTips2": "2. 调用其实例 api", + "SweetAlertsTipsTitle": "组件使用介绍", + "SweetAlertsTitle": "SweetAlert 弹窗组件" }, - "BootstrapBlazor.Server.Components.Samples.ExportPdfButtons": { - "ExportPdfButtonsTitle": "将指定网页内容转成 Pdf", - "ExportPdfButtonsDescription": "将 Html 片段或者网页元素导出为 Pdf", - "ExportPdfButtonTips": "IHtml2Pdf 服务接口请参阅 [传送门]", - "NormalTitle": "ElementId", - "NormalIntro": "导出指定元素 Id", - "SelectorTitle": "Selector", - "SelectorIntro": "通过指定元素 Selector 导出 Pdf", - "GroupBoxTitle": "编辑表单", - "ToastTitle": "导出 Pdf", - "ToastContent": "正在导出 Pdf 文件", - "ToastDownloadTitle": "下载 Pdf", - "ToastDownloadContent": "Pdf 文件 {0} 下载完成", - "AttributeElementId": "指定导出 Pdf 元素 Id", - "AttributeSelector": "指定导出 Pdf 元素选择器", - "AttributeStyleTags": "指定导出 Pdf 元素样式表", - "AttributeScriptTags": "指定导出 Pdf 元素脚本", - "AttributePdfFileName": "指定导出 Pdf 文件名", - "AttributeAutoDownload": "是否自动下载 Pdf", - "AttributeOnBeforeExport": "导出 Pdf 之前回调委托", - "AttributeOnBeforeDownload": "下载 Pdf 之前回调委托", - "AttributeOnAfterDownload": "下载 Pdf 之后回调委托" + "BootstrapBlazor.Server.Components.Samples.SwitchButtons": { + "SwitchButtonsDescription": "点击按钮后切换状态", + "SwitchButtonsNormalIntro": "点击组件自动切换状态", + "SwitchButtonsNormalTitle": "基础用法", + "SwitchButtonsOnClickDescription": "OnClick 回调是 EventCallback 会自动刷新当前组件或者页面,若不需要刷新组件或者页面可使用 ToggleStateChanged", + "SwitchButtonsOnClickIntro": "通过设置 ToggleState 初始化组件状态", + "SwitchButtonsOnClickTitle": "点击回调方法", + "SwitchButtonsTitle": "Switch Button 状态切换按钮", + "SwitchButtonsToggleStateDescription": "可通过设置 ToggleStateChanged 回调方法获得当前组件状态", + "SwitchButtonsToggleStateIntro": "通过设置 ToggleState 初始化组件状态", + "SwitchButtonsToggleStateTitle": "初始化状态" }, - "BootstrapBlazor.Server.Components.Samples.Html2Pdfs": { - "Html2PdfTitle": "Html 导出为 Pdf", - "Html2PdfDescription": "将 Html 片段或者网页元素导出为 Pdf", - "Html2PdfNote": "如果导出内容过多,可能会触发 signalR 通讯中断问题,请自行调整 HubOptions 配置即可。", - "Html2PdfElementTitle": "导出指定网页元素", - "Html2PdfElementIntro": "将 Html 元素内容导出为 Pdf 流", - "Html2PdfElementDesc": "调用 IHtml2Pdf 服务实例方法 PdfStreamFromHtmlAsync 将网页 Html 导出为 Pdf", - "ExportPdfButtonTitle": "使用 ExportPdfButton 导出按钮", - "ExportPdfButtonIntro": "通过设置 ExportPdfButton 组件参数 ElementId 将指定 Id 元素内容导出为 Pdf", - "ExportButtonText": "导出 Pdf", - "ToastTitle": "Pdf 导出", - "ToastContent": "通过表格 Id 导出 Pdf 文件成功", - "Tips1": "实现原理", - "Tips2": "服务", - "PackageIntro": "组件默认未实现 IHtml2Pdf,请通过引用包 BootstrapBlazor.Html2Pdf 实现", - "Html2PdfIntro1": "1. 通过 getHtml 脚本获取网页元素 Html 代码", - "Html2PdfIntro2": "2. 将 Html 代码,通过模板生成网页代码,注意 需要提供网页需要的样式表 _content/BootstrapBlazor/css/bootstrap.blazor.bundle.min.css", - "Html2PdfIntro3": "3. 通过 IHtml2Pdf 服务实例方法 PdfStreamFromHtmlAsync 将网页 转化为 Pdf", - "Html2PdfIntro4": "4. IHtml2Pdf 实现服务使用 PuppeteerSharp 将网页 转化为 Pdf,首次使用时会下载 Chromium 运行时,网络不好的情况下可能会很慢" + "BootstrapBlazor.Server.Components.Samples.Switches": { + "SwitchesBindingDescription1": "Switch 组件开启双向绑定时,会根据绑定的 Model 属性值去自动获取 DisplayName 标签值并且显示为前置 Label,通过 DisplayText 属性可以自定义显示前置标签,或者通过 ShowLabel 属性关闭前置标签是否显示", + "SwitchesBindingDescription2": "前置标签显式规则与 BootstrapInput 组件一致 [传送门]", + "SwitchesBindingDisplayText1": "双向绑定示例", + "SwitchesBindingDisplayText2": "自定义标签", + "SwitchesBindingDisplayText3": "不显示", + "SwitchesBindingDividerText1": "自定义标签", + "SwitchesBindingDividerText2": "占位", + "SwitchesBindingDividerText3": "不占位", + "SwitchesBindingDivText1": "绑定数值", + "SwitchesBindingIntro": "绑定组件内变量,数据自动同步", + "SwitchesBindingTips1": "设置 DisplayText 值为 自定义标签", + "SwitchesBindingTips2": "无论是否设置 DisplayText 值,当 ShowLabeltrue 时均显示", + "SwitchesBindingTips3": "无论是否设置 DisplayText 值,当 ShowLabelfalse 时均不显示", + "SwitchesBindingTitle": "双向绑定", + "SwitchesColorIntro": "通过设置 OnColor OffColor 属性值,设置开关状态颜色", + "SwitchesColorTitle": "开关颜色", + "SwitchesDescription": "提供最普通的开关应用", + "SwitchesDisableIntro": "通过设置 IsDisabled 属性控制组件不可用状态", + "SwitchesDisableTitle": "禁用状态", + "SwitchesEventValueChanged": "获取选择改变的值", + "SwitchesInnerTextDescription": "通过设置 OnInnerText OffInnerText 属性更改内置文字,默认情况下建议使用一个汉字,可自定义组件宽度来增加内置文字数量", + "SwitchesInnerTextIntro": "通过设置 ShowInnerText 属性控制组件显示内置文字", + "SwitchesInnerTextLabelText1": "默认文字:", + "SwitchesInnerTextLabelText2": "自定义文字:", + "SwitchesInnerTextOffInnerText": "否", + "SwitchesInnerTextOnInnerText": "是", + "SwitchesInnerTextTitle": "显示内置文字", + "SwitchesNormalDescription": "点击第一个开关有值输出日志", + "SwitchesNormalIntro": "点击按钮切换状态", + "SwitchesNormalTitle": "基础用法", + "SwitchesNullableIntro": "通过设置 DefaultValueWhenNull 属性控制 Null 值的默认值,未设置时为 false", + "SwitchesNullableTitle": "可为空类型的开关", + "SwitchesOffText": "关闭", + "SwitchesOnText": "开启", + "SwitchesTitle": "Switch 开关" }, - "BootstrapBlazor.Server.Components.Samples.Live2DDisplays": { - "Live2DDisplayTitle": "Live2D 插件", - "Live2DDisplayDescription": "基于 pixi-live2d-display 的 Live2D 插件,支持所有版本的 Live2D 模型。", - "Live2DDisplayNormalTitle": "基本用法", - "Live2DDisplayNormalIntro": "通过调节默认的参数选项,实现模型的动态变化。", - "Live2DDisplayNormalTips": "添加以下代码到Program.cs中。", - "Live2DDisplaysSource": "模型数据源,cdn路径或者本地路径。", - "Live2DDisplaysScale": "模型显示比例。", - "Live2DDisplaysXOffset": "模型在canvas画板上的X轴偏移。", - "Live2DDisplaysYOffset": "模型在canvas画板上的Y轴偏移。", - "Live2DDisplaysIsDraggable": "模型是否可以拖动(暂未实现)。", - "Live2DDisplaysAddHitAreaFrames": "显示模型可点击区域框。", - "Live2DDisplaysPosition": "模型默认显示位置枚举。", - "Live2DDisplaysBackgroundColor": "canvas画板背景颜色。", - "Live2DDisplaysBackgroundAlpha": "canvas画板背景是否透明。" + "BootstrapBlazor.Server.Components.Samples.Table.Tables": { + "TableBaseBorderedIntro": "通过设置 IsBordered 属性,增加表格表框效果", + "TableBaseBorderedTitle": "带边框表格", + "TableBaseDescription": "用于展示多条结构类似的数据,可对数据进行排序、筛选、对比或其他自定义操作。", + "TableBaseExplain1": "Table 组件已经支持移动端适配,当屏幕小于 RenderModeResponsiveWidth 设定值时,组件渲染成卡片式方便查看数据,其默认值为 768", + "TableBaseExplain2": "Table 组件有一个 RenderMode 属性,其默认值为 Auto 其他值定义如下", + "TableBaseHeaderStyleDescription": "HeaderStyle 为表格表头样式,默认值为 None", + "TableBaseHeaderStyleIntro": "通过设置 HeaderStyle 属性", + "TableBaseHeaderStyleMode": "表头模式", + "TableBaseHeaderStyleTitle": "表头样式", + "TableBaseNormalDescription": "点击按钮时更新数据源 Items 组件 Table 显示数据自动更新", + "TableBaseNormalIntro": "基础的表格展示用法。", + "TableBaseNormalRefreshText": "刷新", + "TableBaseNormalTitle": "基础表格", + "TableBaseSizeDescription": "TableSize 为表格大小枚举类型,默认值为 Normal,紧奏型值为 Compact", + "TableBaseSizeIntro": "通过设置 TableSize 属性,设定表格内间隙变小适合大数据展示", + "TableBaseSizeTitle": "紧凑型表格", + "TableBaseStripedIntro": "使用带斑马纹的表格,可以更容易区分出不同行的数据。设置 IsStriped=true 即可", + "TableBaseStripedTitle": "带斑马纹表格", + "TableBaseTips1": "Auto: 当屏幕小于 768px 时使用 CardView 模式,否则使用 Table 模式", + "TableBaseTips2": "Table: 表格渲染模式,使用 table 元素进行数据渲染,适合宽屏幕下查看数据", + "TableBaseTips3": "CardView:卡片式渲染模式,使用 div 元素进行数据渲染,适合窄屏幕下查看数据", + "TableBaseTips4": "TableColumn 必须使用 @bind-Field 绑定了模型属性,模型属性为复杂类型时,必须初始化此属性;想要绑定只读属性时,先绑定其他可写属性后利用模板显示只读属性", + "TableBaseTitle": "Table 表格" }, - "BootstrapBlazor.Server.Components.Samples.SlideButtons": { - "SlideButtonTitle": "SlideButton 抽屉式弹窗", - "SlideButtonIntro": "点击按钮后弹出功能菜单等信息,多用于二级功能展示", - "SlideButtonHeaderText": "Foo 数据一览", - "BaseUsageText": "基本用法", - "BaseUsageIntro": "通过设置 Items 给出二级功能菜单数据项", - "ShowHeaderText": "显示标题", - "ShowHeaderIntro": "通过设置 ShowHeader 控制是否显示一个标题栏,默认值为 false", - "AutoCloseText": "自动关闭", - "AutoCloseIntro": "通过设置 IsAutoClose 控制是否点击弹窗以外区域自动关闭弹窗", - "SlideButtonItemsText": "选项集合", - "SlideButtonItemsIntro": "在页面中直接录入 SlideButtonItems 集合当数据源", - "BodyTemplateText": "自定义模板", - "BodyTemplateIntro": "通过设置 BodyTemplate 自定义弹窗内数据" + "BootstrapBlazor.Server.Components.Samples.Table.TablesAttribute": { + "AutoGenerateClassAttribute": "类标签 AutoGenerateClassAttribute", + "AutoGenerateClassP1": "1. 使用用法", + "AutoGenerateClassP1Content": "本例中通过设置 Filterable=true 使表格所有列均开启可搜索功能", + "AutoGenerateClassP2": "1. 使用用法", + "AutoGenerateClassP2Content": "本例中通过设置 Filterable=true 使表格 Name 列开启可搜索功能", + "AutoGenerateCode": "等效代码如下:", + "AutoGenerateColumnAttribute": "列标签 AutoGenerateColumnAttribute", + "TableAttributeColumn": "TableColumn 显示设置值", + "TableAttributeDescription": "通过使用特性标签可以大大节约代码", + "TableAttributeIntro": "权重说明", + "TableAttributeIntroLI1": "只写了 AutoGenerateClassAttribute 以其参数值为准", + "TableAttributeIntroLI2": "只写了 AutoGenerateColumnAttribute 以其参数值为准", + "TableAttributeIntroLI3": "写了 AutoGenerateClassAttribute 并且写了 AutoGenerateColumnAttribute 合并两者参数值取 AutoGenerateColumnAttribute 值", + "TableAttributeIntroLI4": "写了 TableColumn 参数值时以 TableColumn 参数值为最终值", + "TableAttributeQA1": "写了 AutoGenerateClassAttribute 并且写了 AutoGenerateColumnAttribute 合并两者参数值取值举例说明", + "TableAttributeQAP1": "由于 AutoGenerateClassAttribute 设置 Filterable 值为 true,而 AutoGenerateColumn 保持 Filterable 默认值 false 最终 UI 使用 true", + "TableAttributeQAP2": "由于 AutoGenerateClassAttribute 未设置 Sortable 保持默认值 false,而 AutoGenerateColumn 设置 Sortable 值为 true 最终 UI 使用 true", + "TableAttributeQAP3": "最新版本 TableColumnFilterable 等一些参数值均更改为 可为空数据类型,其默认值由原来的 false 更改为 null,可由此判断,只要 TableColumn 的参数 Filterable 值不为空,即以 TableColumn 值为最终 UI 值", + "TableAttributeTitle": "特性标签 AutoGenerateClassAttribute/AutoGenerateColumnAttribute" }, - "BootstrapBlazor.Server.Components.Samples.DialButtons": { - "DialButtonTitle": "DialButton 拨号按钮", - "DialButtonIntro": "点击按钮后弹出功能菜单等信息,多用于二级功能展示", - "BaseUsageText": "基本用法", - "BaseUsageIntro": "通过设置 Placement 枚举值设置弹窗与按钮位置关系" + "BootstrapBlazor.Server.Components.Samples.Table.TablesAutoRefresh": { + "TablesAutoRefreshControlDescription": "通过点击按钮开始/关闭是否自动更新功能", + "TablesAutoRefreshControlIntro": "本示例通过设置变量控制是否自动更新", + "TablesAutoRefreshControlIsAutoRefresh": "当前值", + "TablesAutoRefreshControlTitle": "通过设置变量控制是否自动更新", + "TablesAutoRefreshControlToggleAuto": "更改 Auto", + "TablesAutoRefreshDescription": "在某种应用场景中,数据源的变化需要重新刷新表格组件", + "TablesAutoRefreshNormalIntro": "本示例演示在后台线程中对数据源进行监控,当数据源变化时通知表格组件进行数据刷新", + "TablesAutoRefreshNormalTips1": "通过设置 IsAutoRefresh 属性值来开启自动刷新功能,AutoRefreshInterval 属性值默认为 2000 毫秒,此值为自动刷新时间间隔,周期性调用组件的 QueryAsync 方法使表格具有自动刷新功能", + "TablesAutoRefreshNormalTips2": "本例中每间隔 2 秒钟数据增加一条新数据并保持最多 10 条数据", + "TablesAutoRefreshNormalTitle": "自动刷新" }, - "BootstrapBlazor.Server.Components.Samples.CountButtons": { - "Title": "CountButton 倒计时按钮", - "Description": "多用于强制一段执行时间逻辑,如发送验证码后 60 秒等待输入", - "BaseUsageText": "基本用法", - "BaseUsageIntro": "通过 Count 参数值设置倒计时时间,默认 5 秒", - "TextTitle": "计时文本", - "TextIntro": "通过 CountText 参数值设置倒计时文本", - "Text": "发送验证码", - "CountButtonText": "{0} 秒后重试", - "Count": "倒计时数量", - "CountText": "倒计时文本", - "CountTextCallback": "倒计时格式化回调方法" + "BootstrapBlazor.Server.Components.Samples.Table.TablesCell": { + "TableCellMergeCellIntro": "基础的表格展示用法", + "TableCellMergeCellTip": "本例中通过设置 OnCellRenderHandler 回调委托,通过判断条件对 NameAddress 两列进行单元格合并操作,并且通过设置 TableCellArgs 属性 Class 值为 cell-demo 样式表名称对合并后单元格进行背景色设置", + "TableCellMergeCellTitle": "合并单元格", + "TableCellOnDoubleClickCellCurrentCellName": "当前单元格名称:", + "TableCellOnDoubleClickCellCurrentValue": "当前值:", + "TableCellOnDoubleClickCellIntro": "通过设置 OnDoubleClickColumn 回调,设置当前单元格的双击事件", + "TableCellOnDoubleClickCellTip": "设置双击单元格回调后,鼠标悬停单元格后单元格出现下标横线,以作提示可通过 .table-cell .is-dbcell 样式覆盖", + "TableCellOnDoubleClickCellTitle": "双击单元格", + "TableCellOnDoubleClickCellToastTitle": "双击单元格回调", + "TablesCellDescription": "单元格相关操作示例", + "TablesCellTitle": "Table 表格" }, - "BootstrapBlazor.Server.Components.Samples.QueryBuilders": { - "QueryBuilderTitle": "条件生成器 QueryBuilder", - "QueryBuilderSubTitle": "可用于表单、表格过滤条件生成", - "QueryBuilderNormalTitle": "基本用法", - "QueryBuilderNormalIntro": "在 Razor 文件中直接通过 QueryGroup QueryColumn 构建过滤条件", - "QueryBuilderHeaderTitle": "显示控制按钮", - "QueryBuilderHeaderIntro": "通过设置 ShowHeader=\"false\" 关闭控制按钮" + "BootstrapBlazor.Server.Components.Samples.Table.TablesColumn": { + "AdvanceIntro": "通过显示模板 Template 对各列进行自定义渲染", + "AdvanceTitle": "实战示例", + "AlignIntro": "列绑定时通过指定 Align 属性设置对齐方式", + "AlignP1": "本例中列 DateTime 列设置为居中对齐 Alignment.Center", + "AlignP2": "本例中列 Count 列设置为右侧对齐 Alignment.Right", + "AlignTitle": "列数据对齐方式", + "BindComplexObjectButtonText": "设置公司", + "BindComplexObjectIntro": "当绑定复杂类型时,无论绑定的对象集合是否为空,都要求 TItem 提供无参构造函数,否则要求通过 CreateItemCallback 提供构造回调;当绑定复杂表达式时,要求绑定时该表达式不得引发 NullReferenceException 异常,如果业务逻辑无法避免此问题,建议使用 Template 进行处理", + "BindComplexObjectP1": "本例中,复杂类型 ComplexFoo 不具备无参构造函数,需通过 CreateItemCallback 提供 ComplexFoo 的构造回调", + "BindComplexObjectP2": "本例中,我们希望将复杂表达式 context.Company.Name 绑定到列 CompanyName 上,但是业务逻辑无法确保绑定时属性 Company 的值不为 null 。因此可以先绑定简单表达式,再通过列模板 Template 进行处理", + "BindComplexObjectTitle": "绑定复杂类型和表达式", + "ColumnIgnoreButtonText": "忽略/不忽略", + "ColumnIgnoreIntro": "通过设置 Ignore 参数控制列是否渲染,此参数与 Visible 不同,设置 Visible=\"false\" 后不显示列可通过 ShowColumnList=\"true\" 在列表中勾选并显示", + "ColumnIgnoreTitle": "列忽略", + "ColumnOrderIntro": "通过设置 TableColumnOrder 参数进行设置顺序", + "ColumnOrderTitle": "列顺序", + "ColumnTextDesc": "表格组件 TableColumns 模板中的字段采用的是根据绑定模型的 DisplayName 标签值来自动显示的,如果要自定义显示名称请设置 Text 属性", + "ColumnTextIntro": "通过设置 Text 增加列头显示名称", + "ColumnTextTitle": "自定义列名", + "ComplexFooAddress": "地址", + "ComplexFooAge": "年龄", + "ComplexFooCompany": "公司", + "ComplexFooDateTime": "日期", + "ComplexFooName": "姓名", + "CustomColText1": "自定义列名1", + "CustomColText2": "自定义列名2", + "CustomColText3": "自定义列名3", + "DisabledIntro": "RowTemplate 内部组件 TableCell 设置 Checkbox 并设置相关数据绑定即可,本示例中通过数据绑定将选择框组件与值进行绑定", + "DisabledTitle": "选择框列", + "FormatterIntro": "列绑定时通过指定 FormatString 或者 Formatter 回调委托来实现单元格数值格式化", + "FormatterP1": "本例中列 DateTime 值根据 FormatString 将值格式化为 yyyy-MM-dd 年月日格式", + "FormatterP2": "本例中列 Count 值根据 Formatter 将值格式化为 0.00 保留两位小数格式", + "FormatterTitle": "自定义列数据格式", + "MoreButtonColorDesc": "通过 MoreButtonColor 设置按钮颜色", + "MoreButtonTextDesc": "通过 MoreButtonText 设置按钮显示文本", + "OnColumnCreatingIntro": "通过指定 OnColumnCreating回调,对列集合进行数据二次更改", + "OnColumnCreatingLi1": "根据业务逻辑移除一些列的显示", + "OnColumnCreatingLi2": "根据业务逻辑对特定列进行组件渲染,对 ComponentType ComponentParameters 进行赋值操作", + "OnColumnCreatingP1": "通过 OnColumnCreating 回调方法中的参数既可以对现有列进行扩展:", + "OnColumnCreatingP2": "也可以根据自己的业务逻辑实现一些特殊功能;本例中通过回调函数对 Name 列进行了 只读 设置", + "OnColumnCreatingTitle": "设置当前列属性", + "SelectIntro": "通过设置 IsMultipleSelect=\"true\" 增加表格第一列为选择列,设置 ShowRowCheckboxCallback 属性确定行是否显示选择框,本例中通过 Complete 属性来控制是否显示行的选择框", + "SelectTitle": "带选择列表格", + "ShowCheckboxIntro": "通过设置 ShowCheckboxText=true 表格第一列显示文字为 选择", + "ShowCheckboxTitle": "带显示文字的选择列表格", + "ShowColumnToolboxIntro": "通过设置列 ToolboxTemplate 参数,开启列工具栏按钮", + "ShowColumnToolboxTitle": "列工具栏", + "ShowCopyColumnDesc": "可以通过设置 ShowCopyColumnTooltip CopyColumnTooltipText CopyColumnCopiedTooltipText 等设置微调拷贝列数据图标的 Tooltip 相关参数", + "ShowCopyColumnIntro": "通过设置 ShowCopyColumn 设置表格列允许拷贝整列数据", + "ShowCopyColumnTitle": "允许拷贝列数据", + "ShowMoreButtonDesc": "MoreButtonDropdownTemplate 上下文 context 为当前行实例", + "ShowMoreButtonIntro": "通过设置 ShowMoreButton 参数使行扩展按钮出现 更多 按钮,通过设置 MoreButtonDropdownTemplate 模板自定义下拉菜单选项,通过这样的设计大大减少行空间占用", + "ShowMoreButtonTitle": "更多按钮", + "TablesColumnDescription": "用于展示多条结构类似的数据,可对数据进行排序、筛选、对比或其他自定义操作。", + "TablesColumnTitle": "Table 表格" }, - "BootstrapBlazor.Server.Components.Samples.WebSerials": { - "WebSerialTitle": "WebSerial 串口读写", - "WebSerialIntro": "串口是一种具有广泛使用的通信协议,它可以实现计算机之间的数据传输", - "WebSerialDescription": "允许网站与连接到用户计算机的外围设备进行通信。它提供了连接到操作系统需要通过串行 API 进行通信的设备的能力", - "WebSerialNormalTitle": "基本用法", - "WebSerialNormalIntro": "通过调用 ISerialService 服务,对串口设备进行连接、打开、关闭、读写操作", - "BaudRateText": "波特率", - "DataBitsText": "数据位", - "StopBitsText": "停止位", - "ParityTypeText": "校验位", - "BufferSizeText": "缓冲区", - "FlowControlTypeText": "流控制", - "RequestPortText": "选择", - "OpenPortText": "打开", - "ClosePortText": "关闭", - "WriteButtonText": "写入", - "WriteDataText": "发送数据", - "ReadDataText": "接收数据", - "CRLFText": "末尾加回车换行", - "HEXText": "HEX 发送", - "LoopSendText": "循环发送", - "LoopIntervalText": "发送间隔(ms)", - "WebSerialTipsLi1": "该功能仅在部分或所有支持浏览器的安全上下文(HTTPS)中可用", - "WebSerialTipsLi2": "这是一项实验性技术,在生产中使用之前请仔细,检查 浏览器兼容性表", - "WebSerialTipsTitle": "注意:ISerialPort 接口实例继承 IAsyncDisposable 路由切换时需要对其进行资源释放,调用其 DisposeAsync 即可", - "NotSupportSerialTitle": "申请串口权限", - "NotSupportSerialContent": "当前浏览器不支持串口操作,请更换 Edge 或者 Chrome 浏览器", - "OpenPortSerialTitle": "打开串口操作", - "OpenPortSerialContent": "打开串口失败", - "GetSignalsButtonText": "串口参数", - "GetInfoButtonText": "USB 信息" + "BootstrapBlazor.Server.Components.Samples.Table.TablesColumnDrag": { + "AllowDragOrderDesc": "

            在列标题上按下鼠标拖动到其他列标题位置可将该列调整至目标列之前,但 Table 组件内置的列如明细行列、行号列、选择列、操作列等不可被调整

            本示例通过设置 ClientTableName 参数开启了本地化存储,拖动调整顺序后,可刷新页面,列顺序是保持上次状态的

            通过设置 ColumnOrderCallback 回调方法可以实现服务器端列顺序持久化

            ", + "AllowDragOrderIntro": "通过指定 AllowDragColumn 设置表格列允许拖动列标题调整表格列顺序", + "AllowDragOrderTitle": "允许拖动列标题调整表格列顺序", + "TablesColumnDescription": "用于展示多条结构类似的数据,可对数据进行排序、筛选、对比或其他自定义操作。", + "TablesColumnTitle": "Table 表格" }, - "BootstrapBlazor.Server.Components.Samples.MindMaps": { - "MindMapTitle": "Mind Map 思维导图", - "MindMapDescription": "用于将特定 Json 格式数据展示成 Web 思维导图", - "MindMapNormalTitle": "基本用法", - "MindMapLayout": "布局", - "MindMapTheme": "主题", - "Sample1ButtonText": "普通示例", - "Sample2ButtonText": "周安排示例", - "ExportButtonText": "导出 PNG", - "ExportJsonButtonText": "导出 Json", - "GetFullDataButtonText": "GetFullData", - "GetDataButtonText": "GetData", - "SetDataButtonText": "SetData", - "ResetButtonText": "复位", - "FitButtonText": "自适应", - "Scale1ButtonText": "缩小", - "Scale2ButtonText": "放大", - "CustomButtonText": "自定义", - "Data": "初始数据", - "Export": "下载为文件", - "GetData": "获取数据", - "SetData": "导入数据", - "Reset": "复位", - "SetTheme": "切换主题", - "SetLayout": "切换布局", - "MindMapExtensionDesc": "

            由于 MindMap 封装的 api 方法比较多,组件库无法完全封装,所以提供了扩展方法。例如使用组件需要一个组合按钮,可以通过自己的代码调用自己的 Javascript 来控制 MindMap

            • 自定义按钮调用组件实例方法 MindMap.Execute(\"clickCustom\", \"args1\"),假设参数为 args1
            • 自己实现 Javascript 负责处理 clickCustom 事件
            • clickCustom 方法内 this 即为 MindMap 当前实例,可以调用其任意方法进行自己业务开发

            完整示例如下:

            " + "BootstrapBlazor.Server.Components.Samples.Table.TablesColumnList": { + "ResetVisibleColumnsButtonText": "设置列隐藏信息", + "ResetVisibleColumnsDesc": "通过调用 Table 实例方法 ResetVisibleColumns 可设置任意列显示隐藏属性", + "ShowColumnListControlsDesc": "通过设置 ShowColumnListControls 控制列下拉框是否显示控制按钮,内置控制按钮有 全选反选 两个按钮", + "ShownWithBreakPointIntro": "通过指定 ShownWithBreakPoint 属性设置在不同宽度下是否显示", + "ShownWithBreakPointLi1": "None 未设置均显示", + "ShownWithBreakPointLi2": "Small 屏幕大于等于 576px 时显示", + "ShownWithBreakPointLi3": "Medium 屏幕大于等于 768px 时显示", + "ShownWithBreakPointLi4": "Large 屏幕大于等于 992px 时显示", + "ShownWithBreakPointLi5": "ExtraLarge 屏幕大于等于 1200px 时显示", + "ShownWithBreakPointP1": "ShownWithBreakPoint 枚举值为:", + "ShownWithBreakPointP2": "本例中列 Count 列设置为 BreakPoint.Large 即屏幕在大于 992px 时才显示", + "ShownWithBreakPointP3": "注意:", + "ShownWithBreakPointP4": "由于 Table 组件默认是支持移动端适配,所以小屏幕时采用的是卡片式模式,本例中显式设置使用 RenderMode=\"TableRenderMode.Table\" 模式", + "ShownWithBreakPointTitle": "根据屏幕宽度自动显示/隐藏列", + "TablesColumnDescription": "用于展示多条结构类似的数据,可对数据进行排序、筛选、对比或其他自定义操作。", + "TablesColumnTitle": "Table 表格", + "VisibleIntro": "通过指定 ShowColumnList 属性设置列是否显示", + "VisibleP1": "ShowColumnList 默认值为 false,显式指定为 true 后工具栏出现相应列调整按钮", + "VisibleP2": "TableColumn 增加 Visiable 属性,其默认值为 true,显示设置为 false 时不显示此列", + "VisibleP3": "此例中 数量 列通过设置 Visible 未显示,可以通过列控制按钮进行显示设置", + "VisibleP4": "更改 状态后触发 OnColumnVisibleChanged 回调委托", + "VisibleTitle": "自定义显示/隐藏列" }, - "BootstrapBlazor.Server.Components.Samples.Mermaids": { - "MermaidTitle": "Mermaid 构图工具", - "MermaidDescription": "本组件可渲染 Markdown 启发的文本定义以动态创建和修改图表。", - "MermaidNormalTitle": "基本用法", - "MermaidNormalIntro": "Mermaid 基本样式", - "MermaidStyleTitle": "增加自定义样式", - "MermaidStyleIntro": "", - "MermaidType": "图表类型", - "DownloadPdfButtonText": "下载 Pdf" + "BootstrapBlazor.Server.Components.Samples.Table.TablesColumnResizing": { + "AllowResizingDesc": "注意: Table 父容器有有效宽度值时 Table 才会出现滚动条,可通过设置 ClientTableName 参数开启本地化存储列宽功能,即通过拖拽后列宽下次打开时会保持,通过设置 ShowColumnWidthTooltip 参数控制是否显示列宽提示栏,默认 false", + "AllowResizingIntro": "通过指定 AllowResizing 设置表格列允许调整宽度", + "AllowResizingTitle": "允许列调整", + "CustomerButtonTitle": "自定义按钮处理方法", + "OnRowButtonClickContent": "通过不同的函数区分按钮处理逻辑,参数 Item 为当前行数据", + "TablesColumnDescription": "用于展示多条结构类似的数据,可对数据进行排序、筛选、对比或其他自定义操作。", + "TablesColumnTitle": "Table 表格", + "WidthButtonText1": "明细", + "WidthButtonText2": "编辑", + "WidthButtonText3": "权限", + "WidthButtonText4": "审批", + "WidthConfirmButtonText": "确认", + "WidthIntro": "通过设置 TableColumn Width 属性,来控制列宽度,行内按钮操作列宽度由 ExtendButtonColumnWidth 属性控制", + "WidthP1": "本例中继续上一个例子,实现了自定义四个功能按钮,并且扩展到行内,点击各个按钮时均有相对应的回调委托方法,TableToolbarButton 采用的是 Delegate 方式完成数据交换,点击工具栏按钮时设置 OnClick 委托方法即可获取表内选中的行数据集合", + "WidthP2": "RowButtonTemplate 按钮模板默认将自定义按钮放置到内置按钮后面,如需要自定义按钮放置到内置按钮前请使用 BeforeRowButtonTemplate 模板", + "WidthP3": "通过设置按钮 IsShow 参数来控制是否显示按钮", + "WidthTitle": "自定义各列宽度" }, - "BootstrapBlazor.Server.Components.Samples.Speeches.WebSpeeches": { - "WebSpeechTitle": "Web Speech Api 网页原生语音处理 API", - "WebSpeechSubTitle": "使用浏览器接口功能提供语音识别/合成服务", - "WebSpeechNormalTitle": "语音合成", - "WebSpeechNormalIntro": "输入文字后选择相对应的语种进行朗读", - "WebSpeechSpeakButtonText": "朗读", - "WebSpeechStopButtonText": "停止", - "WebSpeechText": "开始朗读一段文字", - "WebSpeechRecognitionTitle": "语音识别", - "WebSpeechRecognitionIntro": "通过麦克风输入语音,进行语音识别", - "WebSpeechRecognitionButtonText": "语音识别", - "WebSpeechRecognitionContinuousTitle": "实时语音识别", - "WebSpeechRecognitionContinuousIntro": "通过设置 WebSpeechRecognitionOption 参数 Continuous=\"true\" InterimResults=\"true\" 进行实时语音识别", - "WebSpeechRecognitionContinuousButtonText": "持续识别", - "RecognitionErrorNotAllowed": "用户已拒绝访问硬件设备", - "RecognitionErrorNoSpeech": "未检测到语音", - "RecognitionErrorAborted": "用户已取消", - "RecognitionErrorAudioCapture": "硬件设备无法捕获音频", - "RecognitionErrorNetwork": "网络错误", - "RecognitionErrorNotSupported": "浏览器不支持语音识别", - "RecognitionErrorServiceNotAllowed": "服务不允许", - "RecognitionErrorBadGrammar": "语法错误", - "RecognitionErrorLanguageNotSupported": "语言不支持" + "BootstrapBlazor.Server.Components.Samples.Table.TablesColumnTemplate": { + "AutoGenerateColumnsIntro": "通过指定 AutoGenerateColumns 属性值为 true,开启根据绑定模型自动生成列信息功能", + "AutoGenerateColumnsLi1": "Ignore 表示忽略此属性,即不生成", + "AutoGenerateColumnsLi2": "Readonly 表示只读", + "AutoGenerateColumnsLi3": "更多属性详见 源码", + "AutoGenerateColumnsP1": "本例中通过设置 AutoGenerateColumns 值为 true 开启自动生成列功能,默认绑定模型实体类所有属性全部生成,实体类可以通过 AutoGenerateColumnAttribute 标签类进行功能设置,如:", + "AutoGenerateColumnsP2": " 本例中通过 [AutoGenerateColumn(Order = 1, FormatString = \"yyyy-MM-dd\")] 标签格式化 日期 列;通过代码中设置模板列对 Complete 列进行自定义使用 Switch 组件进行渲染;通过 [AutoGenerateColumn(Order = 10)] 标签中的 Order 对显示顺序进行设定", + "AutoGenerateColumnsTitle": "自动生成列", + "TableColumnIntro": "自定义 TableColumn 列的 Template 模板来实现任意显示 UI,EditTemplate 可实现编辑模式下 UI", + "TableColumnLi1": "Value 为当前绑定列的数据值", + "TableColumnLi2": "Row 为当前绑定列所在行的数据值", + "TableColumnP1": " 本例中列 DateTime 值根据 Complete 值是否为 true 显示不同颜色", + "TableColumnP2": "本例中列 Complete 根据 Complete 值自定义显示为 Checkbox 组件", + "TableColumnP3": "Template 模板自带 Context 相关联上下文,其值为 TableColumnContext 类型", + "TableColumnTitle": "自定义列数据模板", + "TablesColumnDescription": "用于展示多条结构类似的数据,可对数据进行排序、筛选、对比或其他自定义操作。", + "TablesColumnTitle": "Table 表格", + "TableTemplateTips": "特别注意:在使用 列模板 时,实际的应用场景经常遇到几列或者多列需要联动的情况,此时直接将联动的组件放置到 EditTemplate 内时是无法完成联动的,正确的做法是将需要联动小组件独立成一个组件,在此组件内部完成联动", + "TemplateIntro": "通过指定 Template 设置最后一列内显示为自定义按钮", + "TemplateTitle": "自定义列模板" }, - "BootstrapBlazor.Server.Components.Samples.ListGroups": { - "ListGroupsTitle": "ListGroup 列表框", - "ListGroupsSubTitle": "多用于数据浏览与选择", - "ListGroupsTips": "
          • 通过 Items 设置列表框显示数据集合
          • 通过 GetItemDisplayText 设置列表框数据项显示文本
          • 由于组件内部高度设置为 100% 使用时自动充满父容器,当父容器设置高度时,列表项自动出现滚动条,本例中设置外部容器元素 list-group-demo 高度为 280px
          • ", - "BasicUsageTitle": "基本用法", - "BasicUsageIntro": "通过 Items 参数值设置数据集合", - "HeaderTextTitle": "标题", - "HeaderTextIntro": "通过 HeaderText 参数值设置标题文字", - "HeaderText": "列表框标题文字", - "HeaderTemplateTitle": "标题模板", - "HeaderTemplateIntro": "通过 HeaderTemplate 自定义标题模板", - "AttrItems": "数据源集合", - "AttrValue": "当前选中值", - "AttrHeaderTemplate": "标题栏模板", - "AttrHeaderText": "标题栏文字", - "AttrItemTemplate": "选项模板", - "AttrOnClickItem": "点击候选项回调方法", - "AttrOnDoubleClickItem": "双击候选项回调方法", - "GetItemDisplayText": "获得显示项显示内容回调方法" + "BootstrapBlazor.Server.Components.Samples.Table.TablesDetailRow": { + "DetailRowTemplate2Intro": "通过设置 DetailRowTemplate 模板设置明细行为子表数据", + "DetailRowTemplate2P": "明细行内嵌套另外一个 Table 组件,由于每行都要关联子表数据,出于性能的考虑,此功能采用 懒加载 模式,即点击展开按钮后,再对嵌套 Table 进行数据填充,通过 ShowDetailRow 回调委托可以控制每一行是否显示明细行,本例中通过 Complete 属性来控制是否显示明细行,可通过翻页来测试本功能", + "DetailRowTemplate2Title": "嵌套 Table 组件应用", + "DetailRowTemplate3Intro": "通过设置 DetailRowTemplate 模板设置明细行内容", + "DetailRowTemplate3P": "本例中明细行内使用 Tab 组件再次将数据分割成两个 TabItem 内容,进行再次数据拆分演示", + "DetailRowTemplate3Title": "明细行中使用 Tab 组件", + "DetailRowTemplateIntro": "通过设置 DetailRowTemplate 模板设置明细行内容", + "DetailRowTemplateIsAccordion": "手风琴效果", + "DetailRowTemplateP": "明细行内显示绑定行的另外一个字段 学历 以普通文字形式呈现。支持双击展开明细行的功能,双击回调仅 PC 端支持,请在PC 端测试。", + "DetailRowTemplateTitle": "简单应用", + "DynamicIntro": "数据源为 DataTable", + "DynamicTitle": "动态数据明细行", + "EducationText": "学历:", + "HeightIntro": "通过设置 Height 固定表头后模板设置明细行内容", + "HeightP": "本例中固定表头后,再开启明细行功能", + "HeightTitle": "固定表头开启明细行功能", + "TabItemText": "关联数据", + "TablesDetailRowDesc": "用于展示父子关系表数据" }, - "BootstrapBlazor.Server.Components.Samples.Marquees": { - "MarqueeTitle": "循环滚动组件", - "MarqueeDescription": "组件多用于创建滚动文本,通常用于新闻滚动、广告滚动等效果", - "MarqueeBase": "基本用法", - "MarqueeBaseIntro": "通过参数调节文字滚动效果" + "BootstrapBlazor.Server.Components.Samples.Table.TablesDialog": { + "TableDialogNormalChoose": "选择", + "TableDialogNormalDescription": "本例中展示如果通过 Modal 组件与 Table 进行联动,通过弹窗中选择数据,然后再进行编辑", + "TableDialogNormalIntro": "点击工具栏中的选择按钮弹出对话框选择候选数据", + "TableDialogNormalSelectItem": "选择项目", + "TableDialogNormalSure": "确定", + "TableDialogNormalTips1": "点击 选择 按钮弹出对话框选择产品 Product", + "TableDialogNormalTips2": "弹窗中选择产品后点击 确定 按钮关闭弹窗", + "TableDialogNormalTips3": "点击 编辑 按钮,由于设置部分数据为只读,只能更改 Count 字段", + "TableDialogNormalTitle": "弹窗中数据联动", + "TablesDialogDescription": "用于带层级关系的数据选择中" }, - "BootstrapBlazor.Server.Components.Samples.Stacks": { - "Title": "Stack 布局", - "BasicTitle": "普通用法", - "BasicIntro": "可用于在水平或垂直堆栈中排列其子组件", - "RowMode": "行布局", - "ColumnMode": "列布局", - "Mode": "布局类型", - "Justify": "水平对齐方式", - "AlignItems": "垂直对齐方式", - "IsWrap": "是否折行", - "IsReverse": "是否反转", - "AlignSelf": "子项对齐方式", - "StackItemGrowShrinkDesc": "StackItem 子项还有两个控制方式:", - "StackItemGrowShrinkLi": "
          • Grow 是否尽可能多的占用剩余空间 flex-grow-0 flex-grow-1
          • Shrink 是否尽可能的把空间让给前面兄弟元素 flex-shrink-0 flex-shrink-1
          • ", - "AttrIsRow": "是否为行布局", - "AttrIsWrap": "是否允许折行", - "AttrIsReverse": "是否反向布局", - "AttrJustify": "水平布局调整", - "AttrAlignItems": "垂直布局模式", - "AttrChildContent": "内容模板" + "BootstrapBlazor.Server.Components.Samples.Table.TablesDynamic": { + "TablesDynamicDataTableIntro": "仅展示 DataTable 数据", + "TablesDynamicDataTableTitle": "普通用法", + "TablesDynamicDescription": "支持动态添加列", + "TablesDynamicDynamicColButtonAddColumnText": "增加列", + "TablesDynamicDynamicColButtonRemoveColumnText": "移除列", + "TablesDynamicDynamicColIntro": "通过代码动态调整 DataTable 表格组件自动更新", + "TablesDynamicDynamicColTitle": "动态列", + "TablesDynamicEditDescription": "通过设置 DataTableDynamicContext 实例的 OnChanged 回调方法,新建行时自动设置值", + "TablesDynamicEditIntro": "增加编辑维护功能", + "TablesDynamicEditTitle": "编辑功能", + "TablesDynamicPageIntro": "通过与 Pagination 组件配合实现分页功能", + "TablesDynamicPageTitle": "分页", + "TablesDynamicTitle": "Table 表格" }, - "BootstrapBlazor.Server.Components.Samples.Segmenteds": { - "Title": "Segmented 分段控制器", - "SubTitle": "展示多个选项并允许用户选择其中单个选项", - "BasicTitle": "基本", - "BasicIntro": "通过参数 Items 设置组件数据源", - "IsDisabledTitle": "不可用", - "IsDisabledIntro": "使其中的一项禁止使用", - "ItemTemplateTitle": "自定义渲染", - "ItemTemplateIntro": "使用 ItemTemplate 自定义渲染", - "IconTitle": "图标", - "IconIntro": "设置 Icon 参数值改变其现实图标", - "SizeTitle": "大小", - "SizeIntro": "组件定义了三种尺寸(大、默认、小),高度分别为 40px32px24px。", - "SegmentItemTitle": "SegmentItem 组件", - "SegmentItemIntro": "可在 Razor 页面中直接书写 SegmentItem 添加数据源", - "BlockTitle": "Block 充满父容器", - "BlockIntro": "通过参数 IsBlock 可将组件充满父容器", - "ItemsAttr": "数据源", - "ValueAttr": "值", - "ValueChangedAttr": "分段选择器选项改变时触发此事件", - "OnValueChanged": "值改变回调委托方法", - "SizeAttr": "设置组件大小", - "IsDisabledAttr": "是否禁用", - "ItemTemplateAttr": "设置 SegmentedItem 模板", - "ChildContent": "组件子内容", - "IsBlockAttr": "是否充满父容器", - "ShowTooltipAttr": "超长被截断的 Item 是否显示 Tooltip", - "ChildContentAttr": "子组件" + "BootstrapBlazor.Server.Components.Samples.Table.TablesDynamicExcel": { + "TablesDynamicExcelDescription": "常用于大数据单表维护", + "TablesDynamicExcelEnumIntro": "设置列 Items 值,将枚举类型渲染成 Select 组件", + "TablesDynamicExcelEnumNotSet": "未设置", + "TablesDynamicExcelEnumTip": "通过上面代码将 Education 列使用 Select 组件渲染", + "TablesDynamicExcelEnumTitle": "枚举类型", + "TablesDynamicExcelKeyboardDescription": "目前支持", + "TablesDynamicExcelKeyboardIntro": "本示例用于测试 Excel 模式下键盘支持", + "TablesDynamicExcelKeyboardTips1_note1": "设置 Table 组件的 TItem 属性值为 DynamicObject", + "TablesDynamicExcelKeyboardTips1_note2": "设置 Table 组件的 DynamicContext 属性值为 DataTableDynamicContext 实例", + "TablesDynamicExcelKeyboardTips1_note3": "设置 Enum 类型渲染成 Select", + "TablesDynamicExcelKeyboardTips1_note4": "将枚举转化为 List", + "TablesDynamicExcelKeyboardTips1_Title": "1. 设置数据源上下文", + "TablesDynamicExcelKeyboardTips2_note1": "设置 OnChanged 回调委托函数处理 新建/删除 逻辑", + "TablesDynamicExcelKeyboardTips2_note2": "输出日志信息", + "TablesDynamicExcelKeyboardTips2_Title": "2. 处理 DataRow 变化逻辑", + "TablesDynamicExcelKeyboardTips3_note1": "设置 OnValueChanged 回调委托函数处理单元格 更新 逻辑", + "TablesDynamicExcelKeyboardTips3_note2": "获得内置 OnValueChanged 回调", + "TablesDynamicExcelKeyboardTips3_note3": "调用内部提供的方法", + "TablesDynamicExcelKeyboardTips3_note4": "内部方法会更新原始数据源 DataTable", + "TablesDynamicExcelKeyboardTips3_note5": "输出日志信息", + "TablesDynamicExcelKeyboardTips3_Title": "3. 处理 DataCell 变化逻辑", + "TablesDynamicExcelKeyboardTips_DatTable": "使用 DatTable 为数据源时,需要按照下面的步骤进行设置", + "TablesDynamicExcelKeyboardTips_IsExcel": "开启 IsExcel 模式后,部分参数将不再生效,斑马线 IsStriped 树形表格 IsTree 明细行 IsDetails 多选栏 IsMultipleSelect", + "TablesDynamicExcelKeyboardTitle": "键盘支持", + "TablesDynamicExcelNormalDescription": "Excel 模式下绑定是 动态类型 时,无法使用 TableColumn 对列属性进行设置,本例中使用 DynamicContext 实例对象 DataTableDynamicContext 构造函数进行设置", + "TablesDynamicExcelNormalIntro": "通过设置表格的 IsExcel 属性,使组件呈现为类似 Excel", + "TablesDynamicExcelNormalTitle": "Excel 模式", + "TablesDynamicExcelTitle": "Table 表格" }, - "BootstrapBlazor.Server.Components.Samples.CodeEditors": { - "Title": "代码编辑器", - "BasicTitle": "基础用法", - "BasicIntro": "基础用法", - "Value": "获得或设置 Value", - "Theme": "编辑器的主题", - "Language": "编辑器使用的语言:csharp,JavaScript,...", - "ValueChanged": "获取或设置更新绑定值的回调" + "BootstrapBlazor.Server.Components.Samples.Table.TablesDynamicObject": { + "TablesDynamicObjectDescription": "使用 IDynamicMetaObjectProvider 类作为数据源", + "TablesDynamicObjectIDynamicObjectIntro": "通过设置 Items 数据源,使用 IDynamicObject 数据集合作为数据源", + "TablesDynamicObjectIDynamicObjectTitle": "IDynamicObject 集合", + "TablesDynamicObjectMetaObjectProviderIntro": "通过设置 Items 数据源,使用 IDynamicMetaObjectProvider 数据集合作为数据源", + "TablesDynamicObjectMetaObjectProviderTitle": "IDynamicMetaObjectProvider 集合", + "TablesDynamicObjectTitle": "Table 表格" }, - "BootstrapBlazor.Server.Components.Samples.JSRuntimeExtensions": { - "JSTips": "使用前,先按照以下代码导入模块。", - "OpenUrlTitle": "OpenUrl", - "OpenUrlIntro": "在特定窗口打开连接", - "OpenUrlTips": "默认为:", - "IsMobileTitle": "IsMobile", - "IsMobileIntro": "通过正则表达式判断 userAgent,表示当前设备是否为移动设备", - "EvalTitle": "Eval", - "EvalIntro": "通过 Eval 函数,在当前作用域内动态运行 JavaScript 代码。", - "FunctionTitle": "Function", - "FunctionIntro": "通过 Function 函数,在全局作用域内动态运行 JavaScript 代码。", - "OpenUrlAttr": "在特定窗口打开连接", - "IsMobileAttr": "判断当前设备是否为移动设备", - "EvalAttr": "调用 Eval 方法", - "FunctionAttr": "调用 Function 方法" + "BootstrapBlazor.Server.Components.Samples.Table.TablesEdit": { + "TablesColumnEditTemplateDescription1": "通过设置姓名列的 EditTemplate 自定义编辑时使用下拉框来选择姓名", + "TablesColumnEditTemplateIntro": "当设置列的 EditTemplate 时,组件自动生成表单维护 UI 时使用此模板作为呈现 UI", + "TablesColumnEditTemplateTips": "本例中 Name 列为自定义组件 TableNameDrop,新建时默认为 请选择 ...Hobby 列为自定义组件 DemoHobbyTemplate 使用多选框组件进行渲染", + "TablesColumnEditTemplateTitle": "自定义列编辑模板", + "TablesEditDataServiceDescription": "自定义数据服务", + "TablesEditDataServiceIntro": "通过设置表格的 DataService 属性,使用独立的数据服务进行对数据的增删改查", + "TablesEditDataServiceTips1": "开启使用注入数据服务后,可通过设置 DataServices 参数对组件进行单独设置,如未设置内部使用注入服务提供的实例", + "TablesEditDataServiceTips2": "本例中通过设置 EditDialogShowMaximizeButton 参数,使编辑弹窗中显示 最大化 按钮", + "TablesEditDataServiceTitle": "使用自定义数据服务", + "TablesEditDescription": "常用于单表维护,通过属性配置实现简单的增、删、改、查、排序、过滤、搜索等常用功能,通过 Template 的高级用法能实现非常复杂的业务需求功能", + "TablesEditFooterTemplateDescription": "点击表格内编辑按钮,弹出编辑弹窗,弹窗内 Footer 内按钮均为自定义按钮。为方便二开的同时保留原有 关闭保存 两个按钮功能,额外内置提供了两个与之相对应的组件 DialogCloseButton DialogSaveButton 这两个按钮无需编写点击相关处理方法", + "TablesEditFooterTemplateIntro": "通过设置 EditFooterTemplate 自定义编辑弹窗 Footer", + "TablesEditFooterTemplateTitle": "自定义编辑弹窗按钮", + "TablesEditInjectDataServiceDescription": "通过注册数据服务进行增、删、改、查的数据库操作,而无需对以下回调委托进行赋值,优先级别为有回调方法优先调用回调方法,如无则调用注入服务进行数据操作", + "TablesEditInjectDataServiceIntro": "未提供数据操作回调方法时组件自动寻找注册的数据服务进行对数据的增删改查", + "TablesEditInjectDataServiceTips1": "Startup 文件注入数据服务", + "TablesEditInjectDataServiceTips2": "实现原理与用法介绍", + "TablesEditInjectDataServiceTips3": "自定义数据服务", + "TablesEditInjectDataServiceTips4": "开启使用注入数据服务后,可通过设置 DataServices 参数对组件进行单独设置,如未设置内部使用注入服务提供的实例", + "TablesEditInjectDataServiceTitle": "使用注入数据服务", + "TablesEditItemsDescription": "设置 Items 作为数据源,必须使用双向绑定 @bind-Items, 同时 TItem 泛型约束的类实例,如本例中的 Foo ,需要正确配置 [Key] 标签,否则内置编辑功能无法正常工作;通过设置 IsGroupExtendButtons 参数控制行内功能按钮是否组合显示 默认 true", + "TablesEditItemsIntro": "设置 Items 作为数据源,无需设置 OnSaveAsync OnDeleteAsync 回调委托使用内置处理逻辑进行更新与删除功能", + "TablesEditItemsTitle": "使用集合作为数据源实现编辑功能", + "TablesEditModeAddModalTitle": "增加测试数据窗口", + "TablesEditModeDescription": "EditMode 为枚举类型其值分别为:Popup EditForm InCell 其默认值为 Popup 弹窗编辑行数据", + "TablesEditModeDrawer": "Drawer 模式示例", + "TablesEditModeEditModalTitle": "编辑测试数据窗口", + "TablesEditModeInCell": "InCell 模式示例", + "TablesEditModeIntro": "通过设置表格的 EditMode 属性,设置组件是弹窗编辑行数据还是行内编辑数据", + "TablesEditModeTips1": "本例中设置数据源 Items 为双向绑定,特别适用与父子表录入,保存时直接使用数据源即可", + "TablesEditModeTips2": "EditForm 模式示例", + "TablesEditModeTitle": "设置编辑模式", + "TablesEditOnAddAsyncDescription": "通过设置 TItem 泛型约束的类实例 Foo 属性的 [Required] 等验证标签即可实现客户端验证", + "TablesEditOnAddAsyncIntro": "当设置了 OnAddAsync 或者 OnSaveAsync 回调委托方法时,如果未设置 EditTemplate 编辑模板时,组件会尝试自动生成表单维护 UI", + "TablesEditOnAddAsyncTips1": "数据绑定类型为可为空类型时自动允许为空,如日期绑定列为 DateTime? 类型", + "TablesEditOnAddAsyncTips2": "数据绑定类型为数值类型时如,如数量绑定列为 int 类型,自动进行数值验证", + "TablesEditOnAddAsyncTips3": "表格呈现的有些数据列是计算得到的结果,此种类型的列是无法参与编辑的,通过设置 Ignore=true 自动生成编辑 UI 时就不会生成此列编辑组件,如本示例中 Count 列在编辑弹窗中是不出现的", + "TablesEditOnAddAsyncTips4": "通过设置 Readonly=true 自动生成编辑 UI 会将此字段进行只读处理,新建时请对 Model 进行默认值赋值", + "TablesEditOnAddAsyncTips5": "通过设置 IsExtendButtonsInRowHeader=true 使扩展按钮在行前面显示", + "TablesEditOnAddAsyncTips6": "通过设置 EditDialogDraggable='true' 使编辑弹出框可拖拽", + "TablesEditOnAddAsyncTitle": "自动生成单表维护功能的表格", + "TablesEditShowSearchPlaceHolderString": "不可为空,50字以内", + "TablesEditTemplateDescription": "本例中设置 Count 右侧对齐,Complete 列设置为居中对齐,布尔类型列自动渲染成 Switch 组件,点击 学历 下拉框时右侧只读组件描述信息联动更新", + "TablesEditTemplateDisplayDetail1": "小学六年", + "TablesEditTemplateDisplayDetail2": "初中三年", + "TablesEditTemplateDisplayLabel": "详细信息", + "TablesEditTemplateIntro": "通过设置 EditTemplate 自定义编辑弹窗,10.0.1 版本后支持联动功能", + "TablesEditTemplateTitle": "具有单表维护功能的表格", + "TablesEditTitle": "Table 表格", + "TablesReadonlyColumnDescription": "对应数据库计算列,或者模型只读属性", + "TablesReadonlyColumnIntro": "通过设置 FieldFieldName 即可", + "TablesReadonlyColumnTips1": "不要写 @bind-Field 只读列在 新建 或者 编辑 时均无法录入", + "TablesReadonlyColumnTips2": "老版本需要写完整代码如下", + "TablesReadonlyColumnTitle": "只读列", + "TablesTemplateColumnDescription": "通过设置 Text 属性设置标题显示文字,通过 Template 设置单元格显示内容,模板上下文为 TableColumnContext 实例,可通过 @v.Row 获得当前行模型实例,模板列不参与数据编辑功能如 新建 编辑", + "TablesTemplateColumnIntro": "通过使用 TableTemplateColumn 代替 TableColumn 组件,即可不绑定模型属性", + "TablesTemplateColumnTitle": "模板列", + "TablesVisibleIntro": "
            Visible 默认值为 true 如果有列设置了 IsVisibleWhenAdd 或者 IsVisibleWhenEdit 属性为 false 时, 新建或者更新时隐藏此列。本例中 新建 弹窗不显示 数量 编辑 弹窗不显示 是否 编辑项。
            可以通过在数据模型中使用 [AutoGenerateClass(Visible = false)] 全部禁止显示,再通过 IsVisibleWhenAdd 或者 IsVisibleWhenEdit 单独设置编辑状态下的可见性,本例中,地址 列默认不可见,新建、编辑 弹窗内均可以编辑
            ", + "TablesVisibleTitle": "Table 编辑时显示/隐藏", + "TableTemplateColumnText": "模板列" }, - "BootstrapBlazor.Server.Components.Samples.Clipboards": { - "ClipboardTitle": "ClipboardService", - "ClipboardIntro": "剪切板服务!请注意,只能在 HTTPS 安全连接下运行,或者在本地 localhost 开发环境中使用", - "ClipboardMessage": "文本内容:{0}, 已复制到剪切板", - "ClipboardGetTextMessage": "读取剪切板文本内容: {0}", - "ClipboardCopyMethod": "拷贝文本到剪切板方法", - "ClipboardGetMethod": "读取剪切板内容方法", - "ClipboardGetTextMethod": "读取剪切板文本内容方法" + "BootstrapBlazor.Server.Components.Samples.Table.TablesExcel": { + "TablesExcelCellRenderIntro": "高级用法", + "TablesExcelCellRenderTips1": "IsFixedHeader 固定表头 高度设定为 Height='500px'", + "TablesExcelCellRenderTips2": "Name 不可编辑显示头像", + "TablesExcelCellRenderTitle": "通过编辑模板单独控制单元格渲染方式", + "TablesExcelDeleteLogicDescription": "设置 OnDeleteAsync 回调委托函数处理 删除 逻辑", + "TablesExcelDeleteLogicNote1": "此处代码为示例代码", + "TablesExcelDeleteLogicNote2": "输出日志信息", + "TablesExcelDeleteLogicNote2Log1": "集合值变化通知 列", + "TablesExcelDeleteLogicNote2Log2": "类型", + "TablesExcelDeleteLogicTitle": "3. 处理删除逻辑", + "TablesExcelDescription": "常用于大数据单表维护", + "TablesExcelNewLogicDescription": "设置 OnAddAsync 回调委托函数处理 新建 逻辑", + "TablesExcelNewLogicNote1": "此处代码为示例代码", + "TablesExcelNewLogicNote1Address": "自定义地址", + "TablesExcelNewLogicNote2": "输出日志信息", + "TablesExcelNewLogicNote2Log1": "集合值变化通知 列", + "TablesExcelNewLogicNote2Log2": "类型", + "TablesExcelNewLogicTitle": "2. 处理新建逻辑", + "TablesExcelOnQueryIntro": "通过 OnQueryAsync 回调获得数据集合", + "TablesExcelOnQueryTitle": "绑定集合", + "TablesExcelSetDataSourceDescription": "设置 Table 组件的 Items 属性或者 OnQueryAsync 回调委托方法", + "TablesExcelSetDataSourceTitle": "1. 设置数据源", + "TablesExcelTips": "使用 List<TItem> 泛型集合作为数据源时,需要按照下面的步骤进行设置", + "TablesExcelTitle": "Table 表格", + "TablesExcelUpdateLogicDescription1": "设置 OnSaveAsync 回调委托函数处理单元格 更新 逻辑", + "TablesExcelUpdateLogicDescription2": "组件内部所有单元格编辑更新后会自动触发 OnSaveAsync 回调委托,参数是当前更新模型 TItem", + "TablesExcelUpdateLogicLog1": "单元格变化通知 类: Foo ", + "TablesExcelUpdateLogicLog2": "值: 单元格", + "TablesExcelUpdateLogicNote": "此处代码为示例代码", + "TablesExcelUpdateLogicTitle": "4. 处理更新逻辑" }, - "BootstrapBlazor.Server.Components.Samples.Gantts": { - "Title": "一个简单、交互式、现代的 Web 甘特图库,具有拖动、调整大小、依赖关系和时间刻度", - "BasicTitle": "基础用法", - "BasicDesc": "在时间线上拖动任务,调整大小以更改持续时间,单击以查看更多信息", - "ViewModeTitle": "改变视图", - "ViewModeDesc": "切换视图模式调用 change_view_mode", - "AttrItems": "数据源", - "AttrOnClick": "点击任务时触发的回调", - "AttrOnDataChanged": "拖动任务时触发的回调", - "AttrOnProgressChanged": "拖动任务进度时触发的回调", - "AttrOption": "配置项", - "AttrMethod": "改变甘特图视图" + "BootstrapBlazor.Server.Components.Samples.Table.TablesExport": { + "TablesExportButtonCliBoardAllText": "导出全部页到剪切板", + "TablesExportButtonCliBoardText": "导出当前页到剪切板", + "TablesExportButtonDropdownTemplateIntro": "通过设置 ExportButtonDropdownTemplate 模板自定义导出按钮下拉框内容", + "TablesExportButtonDropdownTemplateTitle": "自定义导出下拉框按钮", + "TablesExportButtonExcelAllText": "导出全部数据 Excel", + "TablesExportButtonExcelText": "导出当前页数据 Excel", + "TablesExportDescription1": "通过设置 ShowExportButton 参数显示导出按钮,组件内置导出 Excel/Csv/Pdf 功能", + "TablesExportDescription2": "导出功能提供了导出回调方法 OnExportAsync 使用时可以通过提供自定义的导出方法进行数据导出,如果未提供数据导出方法,组件会根据注入的导出服务进行数据导出", + "TablesExportNote1": "增加 BootstrapBlazor 组件", + "TablesExportNote2": "增加 Table Excel 导出服务", + "TablesExportOnExportAsyncIntro": "通过设置 OnExportAsync 回调委托方法可自定义导出方法,不设置将使用组件内置导出函数,可通过设置列属性 IgnoreWhenExport=\"true\" 导出时忽略此列", + "TablesExportOnExportAsyncTitle": "自定义导出方法", + "TablesExportPdfDesc": "导出 Pdf 功能依赖额外组件包", + "TablesExportPdfNote1": "注入 Html2Pdf 服务", + "TablesExportPdfNote2": "增加 Html2Pdf 导出服务", + "TablesExportShowExportButtonIntro": "通过设置 ShowExportButton=\"true\" 属性是否显示导出按钮,默认为false", + "TablesExportShowExportButtonTitle": "表格导出功能", + "TablesExportShowExportCsvButtonIntro": "通过设置 ShowExportCsvButton=\"true\" ShowExportPdfButton=\"true\" 控制 Csv/Pdf 导出按钮", + "TablesExportShowExportCsvButtonTitle": "导出 Csv/Pdf", + "TablesExportTips": "注入服务", + "TablesExportTitle": "Table 表格", + "TablesExportToastFailedContent": "导出数据失败,4 秒后自动关闭", + "TablesExportToastSuccessContent": "导出数据成功,4 秒后自动关闭", + "TablesExportToastTitle": "数据导出" }, - "BootstrapBlazor.Server.Components.Samples.ImageCroppers": { - "Title": "ImageCropper 图像裁剪", - "ImageCropperNormalText": "基础用法", - "ImageCropperNormalIntro": "通过设置 Url 参数设置图片地址,可通过设置 ImageCropperOption.AspectRatio=16/9f 设置裁剪框比例,1 时为正方形", - "ImageCropperRoundText": "圆角", - "ImageCropperRoundIntro": "通过设置 IsRound 参数设置裁剪方式为圆形", - "ImageCropperResetText": "复位", - "ImageCropperReplaceText": "替换", - "ImageCropperRotateText": "旋转", - "ImageCropperEnableText": "启用", - "ImageCropperDisabledText": "禁用", - "ImageCropperClearText": "清除", - "AttributesImageCropperUrl": "图片地址", - "AttributesImageCropperIsDisabled": "是否被禁用", - "AttributesImageCropperOnCropAsync": "剪裁结果回调方法", - "AttributesImageCropperOptions": "裁剪选项", - "AttributesImageCropperShape": "裁剪形状" + "BootstrapBlazor.Server.Components.Samples.Table.TablesFilter": { + "DefaultSortIntro": "设置 DefaultSort 属性值为 true 时作为默认排序列", + "DefaultSortLi1": "设置 DefaultSort=true 开启默认排序功能,当多列设置此属性时,第一列起作用", + "DefaultSortLi2": "设置 DefaultSortOrder 值,设置默认排序规则", + "DefaultSortP": "本例中默认排序为最后一列倒序排序", + "DefaultSortTitle": "默认排序功能", + "FilterableAlert": "开启筛选功能仅需要设置 TableColumnFilterable 值为 true,无需额外任何代码", + "FilterableDiv": "本示例分别为 DateTime、string、bool、enum、int 类型,弹出筛选框也分别不同", + "FilterableIntro": "设置 TableColumn 列的 Filterable 属性,控制列头是否开启数据筛选功能", + "FilterableLi1": "查询方法参数中的 Filters 是筛选条件,数据库查询数据时可以通过此属性自行进行数据筛选", + "FilterableLi2": "无感使用,正常查询数据,对筛选不进行任何处理,组件内部将根据 Filter 进行内部处理", + "FilterableLi3": "外部已经进行了筛选时请设置 QueryData<TItem> 参数的 IsFiltered 属性值为 true", + "FilterableLi4": "各列可分别设置筛选条件,各列之间筛选条件为 And 并且的关系", + "FilterableP": "Filterable 目前支持两种应用方式:", + "FilterableTitle": "可筛选数据的表格", + "FilterTemplateIntro": "设置 FilterTemplate 模板值,自定义列筛选模板,非常适用于复杂类型的筛选弹窗", + "FilterTemplateTitle": "自定义筛选模板", + "MultiFilterIntro": "通过 FilterTemplate 使用内置 MultiFilter 组件提供多选筛选功能", + "MultiFilterTips": "组件提供 Items OnGetItemsAsync 两种设置数据源方式", + "MultiFilterTipsLi1": "Items 适合数据量小且静态事先准备好的数据集合", + "MultiFilterTipsLi2": "OnGetItemsAsync 适合数据量大且动态的数据集合,出于性能考虑组件内部采用局域懒记载方式填装数据,即点开过滤窗口时才回调获得数据", + "MultiFilterTitle": "多选列表筛选", + "OnAdvancedSortIntro": "通过设置 ShowAdvancedSort=\"true\" 显示 高级排序 按钮,通过自定义条件进行多列排序操作", + "OnAdvancedSortTitle": "自定义排序", + "OnSortIntro": "设置 OnSort 参数", + "OnSortP": "点击列头进行排序时,组件内部调用 OnSort 回调,可以在此处根据业务逻辑设置其返回值即可实现动态多列排序功能,本例中点击 时间 列头进行正序排序时,内部使用 DateTime, Count 倒序时使用 DateTime desc, Count desc", + "OnSortTitle": "动态多列排序", + "SetFilterInCodeButtonText1": "名称包含01", + "SetFilterInCodeButtonText2": "重置条件", + "SetFilterInCodeIntro": "示例展示如何通过代码设置过滤条件", + "SetFilterInCodeTitle": "通过代码设置过滤条件", + "ShowFilterHeaderIntro": "设置 ShowFilterHeader 属性值为 true 时显示过滤表头", + "ShowFilterHeaderTitle": "显示过滤表头", + "SortListIntro": "设置 SortList 属性,表格加载时使用此参数进行多列排序", + "SortListP": "本例中默认排序规则为:DeteTime desc Address,无需自己处理排序逻辑,组件内部已经内置", + "SortListTitle": "多列排序", + "TablesFilterDesc": "筛选可快速查找到自己想看的数据;排序可快速查找或对比数据。", + "TablesFilterDescLi1": "对某一列数据进行筛选,通过指定列的 Filterable 属性来指定需要筛选的列", + "TablesFilterDescLi2": "对某一列数据进行排序,通过指定列的 Sortable 属性来指定需要排序的列,通过多次点击更改排序规则" }, - "BootstrapBlazor.Server.Components.Samples.Translators": { - "TranslatorsTitle": "AzureTranslator 翻译服务", - "TranslatorsDescription": "将源语言的字符或字母转换为目标语言的对应字符或字母", - "TranslatorsNormalTitle": "基础用法", - "TranslatorsNormalIntro": "通过调用 TranslateAsync 进行文本翻译", - "TranslatorsInjectService": "注入服务", - "TranslatorsTranslate": "翻译" + "BootstrapBlazor.Server.Components.Samples.Table.TablesFixedColumn": { + "TablesFixedColHeaderDescription": "本例中设置 Name Education Count Complete 前两列和最后一列为固定列,中间各列进行水平滚动,本例中设置 AllowResize=\"true\" 固定列也可以调整宽度", + "TablesFixedColHeaderIntro": "设置 Fixed 属性固定表头", + "TablesFixedColHeaderTitle": "固定列头与列尾", + "TablesFixedColTableHeaderIntro": "设置 IsFixedHeader=\"true\" 固定表头,设置 Fixed 对列进行固定", + "TablesFixedColTableHeaderTitle": "固定表头与列", + "TablesFixedColumnDescription": "对于列数很多的数据,可以固定前后的列,横向滚动查看其它数据", + "TablesFixedColumnNote": "固定列用法请尽可能的设置固定列宽度,本页面如果宽度过长,请 F12 人为减小可视页面宽度", + "TablesFixedExtendButtonsColumnIntro": "设置 FixedExtendButtonsColumn 对操作列进行固定", + "TablesFixedExtendButtonsColumnTitle": "固定按钮操作列", + "TablesFixedHeaderAndExtendButtonsColumnIntro": "设置 IsFixedHeader=\"true\" 固定表头,设置 FixedMultipleColumn 对选择列进行固定,设置 FixedExtendButtonsColumn 对操作列进行固定", + "TablesFixedHeaderAndExtendButtonsColumnTitle": "固定表头与按钮操作列" }, - "BootstrapBlazor.Server.Components.Samples.BarcodeGenerators": { - "Title": "BarcodeGenerator 条码生成器", - "BarcodeGeneratorNormalText": "条码生成器", - "BarcodeGeneratorNormalIntro": "通过给定 Value 值渲染成相对应格式的一维条码", - "OnCompletedAsync": "条码生成(svg)回调方法", - "Options": "条码选项", - "Format": "条码类型", - "Value": "条码值", - "Width": "单个条形的宽度", - "Height": "条形码的高度", - "DisplayValue": "显示条码文字", - "Text": "覆盖显示的文本", - "FontOptions": "字体式样", - "Font": "字体", - "TextAlign": "文本对齐", - "TextPosition": "文字位置", - "TextMargin": "文本边距", - "FontSize": "字体大小", - "Background": "背景色", - "LineColor": "线条颜色", - "Margin": "间距", - "MarginTop": "顶部间距", - "MarginBottom": "底部间距", - "MarginLeft": "左侧间距", - "MarginRight": "右侧间距", - "Flat": "底线平整 (仅EAN8/EAN13)" + "BootstrapBlazor.Server.Components.Samples.Table.TablesFixedHeader": { + "AllowResizingIntro": "固定表头的同时设置 AllowResizing 属性,使列宽可以调整", + "AllowResizingP": "通过设置 Height 参数固定表头,通过设置 AllowResizing 参数允许调整列宽", + "AllowResizingTitle": "宽度可调整", + "AutoHeightIntro": "不设置 Height 值通过父容器自适应高度", + "AutoHeightP": "本例中 Table 表格父容器高度改变时,组件会自适应高度与宽度", + "AutoHeightTitle": "自适应高度", + "DialogButtonText": "弹窗", + "DialogDesc": "

            在弹窗中使用固定表头的 Table 注意事项:

            弹窗要给 DialogOptionClass 参数赋值,本例中设置为 dialog-table,这个操作是为了让我们自定义样式能够定位到弹窗中 Table 组件的父容器 modal-body 并设置其高度,这里可以使用自适应高度的写法 height: calc(100vh - 400px);;当 Table 组件的父级容器有高度后,组件自己就会通过计算进行自适应高度适配了
            ", + "DialogIntro": "Table 组件在弹窗 Dialog 内使用", + "DialogTitle": "弹窗内使用", + "FixedHeaderIntro": "设置 Height=200IsFixedHeader=\"true\" 固定表头", + "FixedHeaderP": "数据比较多加载后即出现纵向滚动条示例", + "FixedHeaderP1": "请设置个列宽度,允许一列宽度不设置,进行自动填充", + "FixedHeaderTitle": "宽度自适应", + "FixedWidthIntro": "设置 Height=200IsFixedHeader=\"true\" 固定表头,当每页显示数据为 10 行时高度超出设置值 200 后,Table 组件出现纵向滚动条", + "FixedWidthP": "所有列均设置宽度,当屏幕过小时会自动出现横向滚动条", + "FixedWidthTitle": "宽度固定", + "TablesFixedHeaderDesc": "滚动数据时表头固定方便查看各列表头信息", + "TablesFixedHeaderDescP": " 本组件固定表头做法采用的是 双表头 做法,常见问题时出现列不对齐的问题,根据自己实际情况请自行添加部分样式,
            固定表头用法请尽可能的设置每列宽度,以避免列宽不对齐的问题" }, - "BootstrapBlazor.Server.Components.Samples.ZipArchives": { - "ZipArchivesTitle": "IZipArchive 压缩归档服务", - "ZipArchivesSubTitle": "组件内置服务,可将文件或者文件夹压缩为指定名称的归档文件", - "ZipArchiveInjectText": "注入服务", - "ZipArchiveFileText": "归档文件", - "ZipArchiveDirectoryText": "归档文件夹", - "ZipArchiveExtractText": "解压缩到指定文件夹" + "BootstrapBlazor.Server.Components.Samples.Table.TablesFooter": { + "TablesFooterDescription": "用于数据统计", + "TablesFooterStatisticsIntro": "设置 ShowFooter=true 显示 Footer 自定义合计功能,通过设置 IsFixedFooter 控制是否固定 Footer", + "TablesFooterStatisticsTips1": "Table 组件有 TableFooter 模板,其数据上下文为 Table 组件的数据集合 IEnumerable<TItem>", + "TablesFooterStatisticsTips2": "TableFooter 模板中关联的上下文 context 值为当页数据集合", + "TablesFooterStatisticsTips3": "TableFooter 模板内可以自定义单元格 td 内容,也可以使用内置的 TableFooterCell 组件进行数据显示", + "TablesFooterStatisticsTitle": "数据统计示例", + "TablesFooterStatisticsTotal": "合计:", + "TablesFooterTemplateDescription": "无数据时默认显示 Footer 可通过设置 @nameof(Table.IsHideFooterWhenNoData) 参数隐藏 Footer", + "TablesFooterTemplateIntro": "设置 FooterTemplate 自定义表格底部显示内容", + "TablesFooterTemplateSentences": "这里可以写一些描述性的语句", + "TablesFooterTemplateTitle": "Footer 模板", + "TablesFooterTemplateTotal": "合计:" }, - "BootstrapBlazor.Server.Components.Samples.Tutorials.Translation.Translator": { - "File": "文件", - "Hide": "隐藏", - "Language": "语言", - "Load": "加载", - "LoadContent": "所有翻译项已读取成功", - "LoadTitle": "读取", - "Operation": "操作", - "Save": "保存", - "SaveContent": "所有翻译项已保存成功", - "SaveTitle": "保存", - "Show": "显示", - "ToolboxCardTitle": "工具栏", - "Translate": "机翻" + "BootstrapBlazor.Server.Components.Samples.Table.TablesHeader": { + "TablesHeaderDescription": "数据结构比较复杂的时候,可使用多级表头来展现数据的层次关系", + "TablesHeaderNormalIntro": "设置 MultiHeaderTemplate 模板即可", + "TablesHeaderNormalTips1": "通过设置 ShowMultiFilterHeader 值,来控制是否显示过滤行头", + "TablesHeaderNormalTips2": "注意细节,首列单元格合并后导致最后一行表头第一列无单元格,所以需要自行设置样式 border-bottom 与其他单元格一致", + "TablesHeaderNormalTitle": "基础用法", + "TablesHeaderNormal_Address": "个人地址", + "TablesHeaderNormal_Info": "个人信息", + "TablesHeaderNormal_Name": "个人姓名", + "TablesHeaderNormal_Time": "时间" }, - "BootstrapBlazor.Server.Components.Samples.SelectTables": { - "Title": "TableSelect 表格选择器", - "Intro": "下拉框为表格用于展示复杂类型的选择需求", - "NormalTitle": "基本功能", - "NormalIntro": "适用于候选项信息量比较大,用 Table 呈现信息量", - "NormalDesc": "可通过 IsClearable 控制是否显示清除小按钮,默认值 false", - "ColorTitle": "颜色", - "ColorIntro": "通过设置 Color 改变组件边框颜色", - "IsDisabledTitle": "禁用", - "IsDisabledIntro": "设置 IsDisabled 属性值为 true 时,组件禁止选择", - "TemplateTitle": "显示模板", - "TemplateIntro": "通过自定义 Template 模板,呈现定制化显示内容", - "AttributeItems": "数据源表格显示内容集合", - "AttributeTableColumns": "设置表格显示列集合", - "AttributeColor": "颜色", - "AttributeIsDisabled": "是否禁用", - "AttributeShowAppendArrow": "是否显示右侧扩展小箭头", - "AttributeGetTextCallback": "获得显示值回调方法", - "AttributePlaceHolder": "占位符", - "AttributeHeight": "表格高度", - "AttributeTableMinWidth": "弹窗表格最小宽度", - "AttributeTemplate": "显示模板", - "ValidateFormTitle": "客户端验证", - "ValidateFormIntro": "下拉框未选择时,点击提交按钮时拦截。", - "SortableTitle": "排序过滤", - "SortableIntro": "通过设置 TableColumnSortable Filterable 开启排序与过滤功能,与组件 Table 一样", - "SearchTitle": "搜索分页", - "SearchIntro": "通过设置 TableColumnSearchable 开启列可搜索功能,与组件 Table 一样,通过设置 IsPagination ShowSearch 开启分页与表格搜索功能" + "BootstrapBlazor.Server.Components.Samples.Table.TablesLoading": { + "TablesLoadingDescription": "调用远端数据接口时,由于网络原因可能出现延时情况,可使用显示加载功能进行屏蔽", + "TablesLoadingShowLoadingInFirstRenderIntro": "设置 ShowLoadingInFirstRender 即可", + "TablesLoadingShowLoadingInFirstRenderTitle": "关闭加载动画", + "TablesLoadingShowLoadingIntro": "设置 ShowLoading 即可", + "TablesLoadingShowLoadingTitle": "基础用法", + "TablesLoadingShowSkeletonIntro": "设置 ShowSkeleton 即可", + "TablesLoadingShowSkeletonTitle": "骨架屏" }, - "BootstrapBlazor.Server.Components.Samples.SelectTables+SelectTableMode": { - "Foo.Required": "{0} 是必填项" + "BootstrapBlazor.Server.Components.Samples.Table.TablesLookup": { + "TableLookupNormalIntro": "通过设置 Lookup 自动翻译显示文字", + "TableLookupNormalTips1": "关于详细 ILookupService 文档请参阅 [传送门]", + "TableLookupNormalTips2": "组件自动将 Complete 转换为 DataSource 集合中的预设值", + "TableLookupNormalTips3": "本例中使用 ILookupService 服务进行统一处理,通过设置 LookupServiceKey=\"Foo.Complete\",从服务中获取 Complete 相关数据集合,将值 true 自动转化为 通过 false 转化为 未通过", + "TableLookupNormalTitle": "Lookup 外置数据源", + "TablesLookupDescription": "用于自动将外键列转换成 Text 显示文字", + "TablesLookupTitle": "Table 表格" }, - "BootstrapBlazor.Server.Components.Samples.SelectObjects": { - "Title": "TableObject 任意选择器", - "Intro": "下拉框为任意组件用于展示复杂类型的选择需求", - "NormalTitle": "基本功能", - "NormalIntro": "内置 ListView 组件选择图片", - "NormalDesc": "可通过 IsClearable 控制是否显示清除小按钮,默认值 false", - "MinWidthTitle": "设置最小宽度", - "MinWidthIntro": "通过设置 DropdownMinWidth 值,来改变下拉框最小宽度", - "HeightTitle": "设置高度", - "HeightIntro": "通过设置 Height 值,来改变下拉框高度", - "CustomComponentTitle": "自定义组件", - "CustomComponentIntro": "任意组件均可放入下拉框内,需要有一个回调进行赋值或者关窗即可" + "BootstrapBlazor.Server.Components.Samples.Table.TablesPages": { + "TablesPagePaginationIntro": "设置 IsPagination 显示分页组件", + "TablesPagePaginationTitle": "分页表格", + "TablesPagesDescription": "用于展示多条结构类似的数据,可对数据进行排序、筛选、对比或其他自定义操作。", + "TablesPageShowTopPaginationIntro": "设置 ShowTopPaginationtrue 是顶端显示分页组件,可通过 IsAutoScrollTopWhenClickPage 控制是否翻页后自动滚动到顶端,默认值为 false 保持滚动条位置", + "TablesPageShowTopPaginationTitle": "显示在顶端", + "TablesPagesTitle": "Table 表格" }, - "BootstrapBlazor.Server.Components.Samples.BrowserFingers": { - "BrowserFingerTitle": "浏览器指纹", - "BrowserFingerIntro": "通过调用 IBrowserFingerService 服务实例方法 GetFingerCodeAsync 获得客户端浏览器指纹,隐私模式下指纹是一致的", - "GetFingerCodeAsync": "获得指纹方法", - "GetClientHubIdAsync": "获得客户端连接 Id 方法" + "BootstrapBlazor.Server.Components.Samples.Table.TablesRow": { + "ClickToSelectIntro": "通过设置 ClickToSelect 属性值可以实现点击任意单元格选中整行效果,选中行样式被设置为 active", + "ClickToSelectNoneText": "无", + "ClickToSelectP": "可以设置 OnClickRowCallback 回调委托方法对点击行做相应处理,点击表格中任意一行后在下方显示选中行绑定数据的 Name 值", + "ClickToSelectP2": "注意:此回调委托内部不进行 UI 渲染,需要 UI 数据更新操作时,请手动显式调用 StateHasChanged 方法", + "ClickToSelectP3": "当前选中行:", + "ClickToSelectTitle": "点击单元格选中整行效果", + "DoubleClickRowCallbackIntro": "本功能仅限 Table 组件单选模式下生效,通过设置 DoubleClickRowCallback 属性值可以实现双击任意单元格自定义回调委托方法,实现自己的需求功能", + "DoubleClickRowCallbackP": "移动端(CardView)模式暂时不支持双击编辑当前行功能", + "DoubleClickRowCallbackTitle": "自定义行双击事件", + "DoubleClickToEditIntro": "通过设置 DoubleClickToEdit 属性值可以实现双击任意单元格编辑本行效果,此功能前提是 Edit 功能可用", + "DoubleClickToEditP": "移动端(CardView)模式暂时不支持双击编辑当前行功能", + "DoubleClickToEditP1": "多选模式下同样支持双击编辑功能,如果设置 ClickToSelect 点击选择效果后,双击编辑功能会导致行选中状态交替选中,请自行设置 ClickToSelect=false 关闭此功能", + "DoubleClickToEditTitle": "双击单元格编辑本行效果", + "PlaceHolder": "不可为空,50字以内", + "RowContentTemplateDesc": "本例中通过自定义组件,实现选择日期后,联动数量列,随机生成一个随机数字,并且保存到原始数据中,从而不需要刷新整个 Table 组件", + "RowContentTemplateIntro": "通过设置 RowContentTemplate 模板,可通过分装组件的方式实现自定义行内单元格联动逻辑,达到性能最优化,避免单元格数据刷新导致联动后需要刷新整个表格组件的问题,可用于销售类软件,调整单价时总价列变化需求", + "RowContentTemplateTitle": "行内容模板", + "RowNumberIntro": "通过设置 ShowLineNo 属性为 true 时表格显示行号了,默认值为 false", + "RowNumberP": "设置 LineNoText 属性值来设置行号列头显示文本,默认为 行号", + "RowNumberText": "序号", + "RowNumberTitle": "显示行号", + "RowTemplateIntro": "通过设置 RowTemplate 模板,可以根据自己的业务逻辑实现行合并功能", + "RowTemplateTitle": "行模板", + "SetRowClassFormatterIntro": "通过设置 SetRowClassFormatter 属性值可以实现通过行数据逻辑对行样式进行设置,实现自己高亮需求功能", + "SetRowClassFormatterP": "本例中 SetRowClassFormatter 方法通过判断绑定数据的 Count > 60 时行高亮显示", + "SetRowClassFormatterTitle": "自定义行高亮", + "TablesRowDesc": "用于展示多条结构类似的数据,可对数据进行排序、筛选、对比或其他自定义操作。", + "TablesRowTitle": "Table 表格" }, - "BootstrapBlazor.Server.Components.Samples.SvgEditors": { - "SvgEditorTitle": "Svg 编辑器", - "BasicTitle": "Svg 编辑器", - "BasicIntro": "用于 Svg 编辑" + "BootstrapBlazor.Server.Components.Samples.Table.TablesSearch": { + "AddModelTitle": "增加测试数据窗口", + "AddressPlaceholder": "请输入地址,500字以内", + "AutoGenerateSearchComment": "逻辑关系使用", + "AutoGenerateSearchGroupBoxTitle": "搜索功能体验区", + "AutoGenerateSearchIntro": "当设置了 ShowSearch 时,如果未设置 SearchTemplate 编辑模板时,组件会尝试自动生成搜索条件 UI", + "AutoGenerateSearchP": "列信息绑定时通过设置 Searchable 属性,设置搜索条件自动构建 UI,可通过设置 SearchDialogShowMaximizeButton 使搜索弹窗显示 最大化 按钮", + "AutoGenerateSearchTips": "

            自动构建搜索弹窗时,由于各列设置 Searchable 此时组件会通过 SearchText 与设置 Searchable 值为 true 的各列自动构建搜索拉姆达表达式,通过 QueryPageOptions 的属性 Searches 获得

            ", + "AutoGenerateSearchTitle": "自动生成搜索功能的表格", + "AutoHeightIntro": "

            高度自适应

            本例中设置父容器高度为 600px 展开/收起搜索栏时,表格自动充满父容器

            ", + "CustomColSearchIntro": "当设置了 SearchTemplate 时,组件自动生成搜索 UI 时使用此模板作为呈现 UI", + "CustomColSearchP": "通过设置姓名列的 SearchTemplate 自定义编辑时使用下拉框来选择姓名", + "CustomColSearchP1": "姓名列搜索模板使用下拉框进行数据过滤,并且增加了 请选择... 项", + "CustomColSearchP2": "生成列搜索模板是查找顺序为 SearchTemplate -> AutoGenerate 优先查找是否设置了搜索模板,然后根据绑定字段类型自动生成", + "CustomColSearchP3": "通过设置 ShowSearch 控制是否显示整个搜索栏", + "CustomColSearchP4": "通过设置 ShowSearchText 控制是否显示模糊搜索栏", + "CustomColSearchP5": "通过设置 ShowResetButton 控制是否显示重置搜索按钮", + "CustomColSearchP6": "通过设置 ShowAdvancedSearch 控制是否显示高级搜索按钮", + "CustomColSearchP7": "通过设置 SearchDialogDraggable=\"true\" 使搜索弹出框可拖拽", + "CustomColSearchTitle": "自定义列搜索模板", + "CustomerSearchModelIntro": "设置了 CustomerSearchModelCustomerSearchTemplate,完全自主控制搜索条件 UI", + "CustomerSearchModelP": "由于某种应用场景我们的表格实体类 TItem 来充当搜索模型时并不理想,比如我们有一个属性是 int 或者 enum 时,我们作为搜索条件时需要有一个 全部 或者 请选择 ... 的空白条件项。此时使用默认模型时非常难用,就可以使用自定义搜索模型 CustomerSearchModelCustomerSearchTemplate 来自定义控制搜索界面", + "CustomerSearchModelTitle": "自定义搜索模型", + "DisplayText1": "搜索模式", + "DisplayText2": "模糊搜索", + "DisplayText3": "显示清空", + "DisplayText4": "显示搜索", + "EditModelTitle": "编辑测试数据窗口", + "NamePlaceholder": "请输入姓名,50字以内", + "SearchTableGroupBoxText": "搜索条件", + "SearchTableIntro": "设置 ShowSearch 显示查询组件,通过设置 SearchTemplate 模板自定义搜索 UI", + "SearchTableLi1": "通过设置 ShowEmpty=\"true\" 开启无数据显示功能", + "SearchTableLi2": "EmptyText 参数用于设置无数据时显示文字,默认取资源文件中的内置文字", + "SearchTableLi3": "EmptyTemplate 参数用于自定义无数据显示模板", + "SearchTableTips": "Table 组件的搜索功能提供两种模式,可通过 SearchMode 进行设置,默认为 Popup 即弹窗模式,Top 模式下搜索栏会内置到表格上方,此模式下 刷新 按钮与 搜索 按钮二合一,可以通过设置 ShowSearchButton=false 关闭搜索按钮", + "SearchTableTitle": "具有搜索功能的表格", + "SelectedItemText": "请选择 ...", + "SelectedItemText1": "姓名1", + "SelectedItemText2": "姓名2", + "SelectedItemValue1": "姓名1", + "SelectedItemValue2": "姓名2", + "TablesSearchDesc": "常用于单表维护,通过属性配置实现简单的增、删、改、查、排序、过滤、搜索等常用功能,通过 Template 的高级用法能实现非常复杂的业务需求功能", + "TablesSearchTitle": "Table 表格" }, - "BootstrapBlazor.Server.Components.Samples.FlipClocks": { - "FlipClocksTitle": "FlipClock 卡片翻转时钟", - "FlipClocksDescription": "用于网站计时,或者倒计时使用", - "CountText": "计时器", - "CountIntro": "通过设置 ViewMode=\"FlipClockViewMode.Count\" 开启计时功能,开始时间使用 StartValue 设置", - "IsCountDownText": "倒计时", - "IsCountDownIntro": "通过设置 ViewMode=\"FlipClockViewMode.CountDown\" 用于倒计时功能,开始时间使用 StartValue 设置,倒计时结束时触发 OnCompletedAsync 回调方法", - "CustomText": "自定义参数", - "CustomIntro": "通过设置参数自定义显示内容", - "Custom": "参数设置", - "Height": "高度", - "FontSize": "字体大小", - "CardHeight": "卡片高度", - "CardWidth": "卡片宽度", - "CardMargin": "卡片边距", - "CardGroupMargin": "卡片组边距", - "ShowDay_Description": "是否显示日", - "ShowHour_Description": "是否显示小时", - "ShowMinute_Description": "是否显示分钟", - "ShowMonth_Description": "是否显示月", - "ShowYear_Description": "是否显示年", - "ViewMode_Description": "显示模式", - "StartValue_Description": "开始时间", - "OnCompletedAsync_Description": "计时结束回调方法", - "Height_Description": "高度", - "BackgroundColor_Description": "背景色", - "FontSize_Description": "字体大小", - "CardWidth_Description": "卡片宽度", - "CardHeight_Description": "卡片高度", - "CardColor_Description": "卡片字体颜色", - "CardBackgroundColor_Description": "卡片背景颜色", - "CardDividerHeight_Description": "卡片分割线高度", - "CardDividerColor_Description": "卡片分割线颜色", - "CardMargin_Description": "卡片间隔", - "CardGroupMargin_Description": "卡片组间隔" + "BootstrapBlazor.Server.Components.Samples.Table.TablesSelection": { + "TablesSelectionDescription": "通过设置 SelectedRows 设置表格行状态,通过选中样式可以设置高亮", + "TablesSelectionKeepInfo": "保持选中行状态:", + "TablesSelectionKeepOffText": "不保持", + "TablesSelectionKeepOnText": "保持", + "TablesSelectionNormalButtonText": "清除选择", + "TablesSelectionNormalIntro": "通过设置 SelectedRows 属性集合初始化表格时默认为选中状态", + "TablesSelectionNormalSelectRow": "选中的行记录", + "TablesSelectionNormalTips": "保持行状态回落机制,ModelEqualityComparer CustomKeyAttribute IEqualityComparer<TItem> Equals 重载方法", + "TablesSelectionNormalTitle": "设置选中行功能", + "TablesSelectionScrollButtonText": "选中最后一行", + "TablesSelectionScrollDescription": "点击按钮后选中最后一行,并且将选中行自动滚动到视窗可见区域内,本代码为示例,本功能可通过设置 AutoScrollLastSelectedRowToView=\"true\" 开启,通过 AutoScrollVerticalAlign 参数设置对齐方式", + "TablesSelectionScrollIntro": "通过设置 OnAfterRenderCallback 回调方法,执行一些特殊操作", + "TablesSelectionScrollTitle": "渲染结束后回调方法", + "TablesSelectionTitle": "Table 表格" }, - "BootstrapBlazor.Server.Components.Samples.Icons.BootstrapIcons": { - "Title": "Bootstrap Icons", - "BaseUsageText": "Bootstrap 免费开源图标库", - "Icons": "图标列表请通过 [传送门] 查看", - "P1": "通过引用扩展组件包", - "P2": "后添加样式表文件链接开启图标" + "BootstrapBlazor.Server.Components.Samples.Table.TablesToolbar": { + "TablesToolbarCustomButton1": "下载1", + "TablesToolbarCustomButton2": "下载2", + "TablesToolbarCustomButtonDescription": "本例中实现经典的应用场景", + "TablesToolbarCustomButtonIntro": "设置 TableToolbarTemplate 模板添加自定义扩展按钮", + "TablesToolbarCustomButtonTips1_note1": "前台显示进度条提示,正在打包导出,此期间可以处理其他事务", + "TablesToolbarCustomButtonTips1_note2": "数据处理完成后,关闭前台提示弹窗,恢复 下载按钮", + "TablesToolbarCustomButtonTips1_title": "点击下载按钮,后台开启下载线程进行数据处理,禁用 下载按钮", + "TablesToolbarCustomButtonTips2_title": "本例中通过设置 TableToolbarButton 按钮的 IsAsync 属性开启 异步操作模式,请注意 OnClickCallback 回调委托内需要使用真正的 异步操作 否则无效果", + "TablesToolbarCustomButtonTitle": "自定义扩展按钮", + "TablesToolbarCustomComponentDescription": "自定义组件在收缩成一个小图标时目前不渲染,稍后有更好的方案时再解决,如果想将组件放到内置按钮后面时,请使用 TableToolbarTemplate 模板", + "TablesToolbarCustomComponentIntro": "使用 TableToolbarComponent 组件实现将自己需要的组件放到工具栏上", + "TablesToolbarCustomComponentTitle": "自定义组件", + "TablesToolbarCustomDisplayButtonIntro": "通过设置 ShowAddButton ShowEditButton ShowDeleteButton 属性值来控制单独功能按钮是否显示,当 ShowDefaultButtons 设置为 false 时,所有按钮均不显示", + "TablesToolbarCustomDisplayButtonTitle": "自定义显示功能按钮", + "TablesToolbarDescription": "用于展示多条结构类似的数据,可对数据进行排序、筛选、对比或其他自定义操作。", + "TablesToolbarNormalIntro": "设置 ShowToolbar 显示工具条组件", + "TablesToolbarNormalTitle": "带 Toolbar 的表格", + "TablesToolbarQueryTableDescription": "本例中通过设置 ShowCardView 显示 视图 按钮,用于切换 Table 组件渲染方式", + "TablesToolbarQueryTableIntro": "设置 ShowSearch 显示查询组件", + "TablesToolbarQueryTableTitle": "带查询的表格", + "TablesToolbarShowRefreshDesc": "点击 刷新 按钮组件内部调用组件实例方法 QueryAsync 如果是 虚拟滚动 模式根据数据源不同触发不同请求数据模式;如果是使用 OnQueryAsync 回调方法作为数据源时,会自动调用", + "TablesToolbarShowRefreshIntro": "设置 ShowToolbar=\"true\" ShowRefresh=\"false\" 组合条件显示工具栏并且不显示刷新按钮", + "TablesToolbarShowRefreshTitle": "不显示刷新按钮", + "TablesToolbarTitle": "Table 表格", + "TableToolbarPopConfirmButton1": "确认下载" }, - "BootstrapBlazor.Server.Components.Samples.Icons.FluentSystemIcons": { - "Title": "Fluent System Icons", - "BaseUsageText": "Microsoft 免费开源图标库", - "Icons": "图标列表请通过 [传送门] 查看", - "P1": "通过引用扩展组件包", - "P2": "后添加样式表文件链接开启图标" + "BootstrapBlazor.Server.Components.Samples.Table.TablesTracking": { + "TablesTrackingDescription": "适用于父子表一起提交的应用场景", + "TablesTrackingNormalIntro": "设置 IsTracking 配合 Items 可以不需要设置 OnSaveAsync 等回调方法", + "TablesTrackingNormalTips1": "可通过设置 ShowToastAfterSaveOrDeleteModel='false' 关闭 保存 删除 按钮的提示信息", + "TablesTrackingNormalTips2": "此模式下所有数据编辑均编辑原始数据,通过 bind-Items 更新数据源,所以不提供 取消 按钮", + "TablesTrackingNormalTitle": "跟踪模式", + "TablesTrackingTitle": "Table 表格" }, - "BootstrapBlazor.Server.Components.Samples.Icons.ElementIcon.ElementIcons": { - "ElementIconTitle": "饿了么图标库", - "ElementIconDescription": "饿了么免费开源图标库", - "CopiedTooltipText": "拷贝成功", - "P1": "1. 引用扩展组件包后添加包内置样式文件开启图标", - "P2": "2. 开启样式隔离,编译后自动引用组件样式", - "P3": "请拷贝下方样式即可", - "Icons": "图标列表请通过 [传送门] 查看" + "BootstrapBlazor.Server.Components.Samples.Table.TablesTree": { + "TablesTreeDataIntro": "通过设置 IsTree 开启树形表格", + "TablesTreeDataTitle": "树形数据展示", + "TablesTreeDescription": "表格支持树形数据的展示", + "TablesTreeEditIntro": "实现简单的增、删、改、查功能。", + "TablesTreeEditTitle": "具有单表维护功能的树形数据", + "TablesTreeIconIntro": "通过设置 TreeIcon 更改指示小箭头图标", + "TablesTreeIconTips1": "默认层次缩进宽度为 16px 通过设置 Indent 更改缩进宽度", + "TablesTreeIconTips2": "本例中更改缩进宽度为 8px", + "TablesTreeIconTitle": "图标", + "TablesTreeLevelIntro": "通过设置 IndentSize 以控制每一层的缩进宽度。", + "TablesTreeLevelTips1": "默认层次缩进宽度为 16px 通过设置 Indent 更改缩进宽度", + "TablesTreeLevelTips2": "本例中更改缩进宽度为 8px", + "TablesTreeLevelTitle": "层次缩进", + "TablesTreeStep1": "第一步:设置 IsTreetrue", + "TablesTreeStep2": "第二步:设置 Items 或者 OnQueryAsync 获得组件数据集合", + "TablesTreeStep3": "第三步:设置 TreeNodeConverter 将组件数据集合转化为树状结构", + "TablesTreeStep4": "第四步:设置 OnTreeExpand 回调委托响应行展开获取子项数据集合", + "TablesTreeTip_note1": "通过 TreeNodeConverter 对数据集进行树状结构转换", + "TablesTreeTip_note2": "设置 TableTreeNodeIsExpand 参数控制当前子节点是否展开", + "TablesTreeTip_note3": "点击子项展开小箭头时,通过 OnTreeExpand 回调委托方法获取子项数据", + "TablesTreeTip_note4": "保持行状态回落机制,ModelEqualityComparer CustomKeyAttribute IEqualityComparer<TItem> Equals 重载方法", + "TablesTreeTip_title": "通过 IsTree 参数控制是否为树形数据" }, - "BootstrapBlazor.Server.Components.Samples.Icons.FAIcons": { - "Title": "Font Awesome Icons", - "BaseUsageText": "目前 BootstrapBlazor 使用 Font Awesome 最新版本作为内置图标库,所有图标如下", - "SwitchButtonTextOff": "点击拷贝", - "SwitchButtonTextOn": "显示高级拷贝", - "P1": "通过引用扩展组件包", - "P2": "后添加样式表文件链接开启图标", - "CopiedTooltipText": "拷贝成功", - "Icons": "图标列表请通过 [传送门] 查看" + "BootstrapBlazor.Server.Components.Samples.Table.TablesVirtualization": { + "TablesFooterFixedLabel": "是否固定 Footer", + "TablesFooterFixedText": "固定", + "TablesFooterInfo": "合计:", + "TablesFooterNotFixedText": "跟随", + "TablesVirtualizationDescription": "Table 组件显示大数据时通常采用分页加载数据,还有一种虚拟行的技术类似手机滚动到底部时后台自动加载数据", + "VirtualizationDynamicDescription": "快速滚动时显示行占位,提升用户体验", + "VirtualizationDynamicIntro": "设置 OnQueryAsync 回调通过参数 StartIndex PageItems 获取数据", + "VirtualizationDynamicTitle": "动态获取数据", + "VirtualizationNormalDescription": "

            需要设置 ScrollMode Height RowHeight PageItems 参数对虚拟滚动进行设置

            通过 ShowFooter 控制是否显示 Footer,通过 IsFixedFooter 控制 Footer 是否固定在未端

            ", + "VirtualizationNormalIntro": "设置 Items 参数组件自动实现虚拟滚动", + "VirtualizationNormalTitle": "基础用法" }, - "BootstrapBlazor.Server.Components.Samples.Icons.MaterialDesignIcons": { - "Title": "MaterialDesign Icons", - "BaseUsageText": "Material Design 图标简单、现代、友好", - "Icons": "图标列表请通过 [传送门] 查看", - "P1": "通过引用扩展组件包", - "P2": "后添加样式表文件链接开启图标" + "BootstrapBlazor.Server.Components.Samples.Table.TablesWrap": { + "TablesWrapCustomCellColumHeaderText_Address": "地址", + "TablesWrapCustomCellColumHeaderText_DateTime": "时间", + "TablesWrapCustomCellColumHeaderText_Name": "姓名", + "TablesWrapCustomCellIntro": "使用模板对单元格内数据进行特殊布局", + "TablesWrapCustomCellTemplate_State": "状态", + "TablesWrapCustomCellTemplate_Time": "时间", + "TablesWrapCustomCellTitle": "自定义单元格内排版", + "TablesWrapDataResizingColumHeaderText_Address": "地址", + "TablesWrapDataResizingColumHeaderText_DateTime": "时间", + "TablesWrapDataResizingColumHeaderText_Name": "姓名", + "TablesWrapDataResizingIntro": "在某种特殊情况下可能单元格内容比较长,需要进行省略处理", + "TablesWrapDataResizingTips1": "可以拖动窗口大小,窗口过小时 地址 列自动进行省略处理", + "TablesWrapDataResizingTips2": "通过设置 TextEllipsis 来开启文本超长省略功能", + "TablesWrapDataResizingTips3": "注意:推荐使用 Width 对列宽度进行设置,如未设置列宽内部自动使用 200px 宽度", + "TablesWrapDataResizingTips4": "单元格内文本被省略后,可以通过 ShowTips 属性来控制鼠标悬停是否显示全部文本,默认为 false,通过设置 GetTooltipTextCallback 回调方法可以自定义 Tooltip 显示内容", + "TablesWrapDataResizingTips5": "拖动地址列,单元格显示内容自动增加与减少", + "TablesWrapDataResizingTitle": "单元格数据超长省略示例", + "TablesWrapDescription": "当表头或者行内单元格内容超长时,通过样式更改实现省略、换行等效果", + "TablesWrapHeaderTextWrapColumHeaderText_Address": "我是超级长的地址表头", + "TablesWrapHeaderTextWrapColumHeaderText_DateTime": "我是超级长的时间表头", + "TablesWrapHeaderTextWrapColumHeaderText_Name": "我是超级长的姓名表头", + "TablesWrapHeaderTextWrapDescription": "可以拖动窗口大小,窗口过小时自动出现横向滚动条后,表头会自动折行", + "TablesWrapHeaderTextWrapIntro": "通过设置 HeaderTextWrap 使超长表头折行", + "TablesWrapHeaderTextWrapTitle": "表头超长折行", + "TablesWrapLongDataColumHeaderText_Address": "地址", + "TablesWrapLongDataColumHeaderText_DateTime": "时间", + "TablesWrapLongDataColumHeaderText_Name": "姓名", + "TablesWrapLongDataIntro": "在某种特殊情况下可能单元格内容比较长,需要进行折行处理", + "TablesWrapLongDataTips1": "可以拖动窗口大小,窗口过小时 地址 列自动进行折行处理", + "TablesWrapLongDataTips2": "通过设置 TextWrap 来开启自动换行功能", + "TablesWrapLongDataTips3": "注意:推荐使用 Width 对列宽度进行设置", + "TablesWrapLongDataTitle": "单元格数据超长折行示例", + "TablesWrapNormalColumHeaderText_Address": "我是超级长的地址表头", + "TablesWrapNormalColumHeaderText_DateTime": "我是超级长的时间表头", + "TablesWrapNormalColumHeaderText_Name": "我是超级长的姓名表头", + "TablesWrapNormalDescription": "可以拖动窗口大小,窗口过小时自动出现横向滚动条,通过设置 Width 固定宽度,通过设置 HeaderTextEllipsis 表头溢出截断", + "TablesWrapNormalIntro": "在某种特殊情况下可能表头比较长,需要将表头控制在一个固定宽度内,通过设置 ShowHeaderTooltip 鼠标移动到表头上时显示 Tooltip 来显示完整表头信息", + "TablesWrapNormalTitle": "表头超长示例", + "TablesWrapTip": "注意:由于 Table 组件已实现适配移动端功能,此演示需在电脑端查看" }, - "BootstrapBlazor.Server.Components.Samples.Icons.IconPark.IconParks": { - "IconParkTitle": "字节跳动图标库", - "IconParkDescription": "已覆盖字节跳动商业化产品系所有平台,并被12个平台作为底层代码引入使用,保证了图标样式与认知的统一性", - "CopiedTooltipText": "拷贝成功", - "P1": "1. 引用扩展组件包后添加包内置样式文件开启图标", - "P2": "2. 开启样式隔离,编译后自动引用组件样式", - "P3": "请拷贝下方样式即可", - "Icons": "图标列表请通过 [传送门] 查看" + "BootstrapBlazor.Server.Components.Samples.Tabs": { + "ActiveButtonText": "激活第一个", + "AddButtonText": "添加", + "BackText1": "计数器", + "BackText2": "天气预报", + "Block9Div": "网站 Header", + "BlockHeaderTemplateDesc": "在 HeaderTemplate 中使用 Badge 设置挂件", + "BlockHeaderTemplateHeaderText": "待办事宜", + "DividerText": "Tab 分割线", + "MethodTitle": "Method 方法", + "RemoveButtonText": "移除", + "ShowTabInHeaderDesc": "Layout 组件中开启多标签功能后,可以通过设置 ShowTabInHeader=\"true\"Tab 标签头渲染到 Layout Header 模板中,效果可以通过 项目模板 新建工程查看", + "TabItem1Content": "我是用户管理", + "TabItem1Text": "用户管理", + "TabItem2Content": "我是菜单管理", + "TabItem2Text": "菜单管理", + "TabItem3Content": "我是角色管理", + "TabItem3Text": "角色管理", + "TabItem4Content": "我是部门管理", + "TabItem4Text": "部门管理", + "TabItem5Content": "我是系统日志", + "TabItem5Text": "系统日志", + "TabItem6Content": "我是部门管理", + "TabItem6Text": "登录日志", + "TabItem7Content": "我是定时任务管理", + "TabItem7Text": "定时任务管理", + "TabItem8Text": "计数组件", + "TabItem9Text": "天气预报", + "TabMethod1AddTab": "添加 TabItem 到 Tab 中,可指定新增Tab的位置", + "TabMethod2RemoveTab": "移除 TabItem", + "TabMethod3ActiveTab": "设置指定 TabItem 为激活状态", + "TabMethod4ClickPrevTab": "切换到上一个标签方法", + "TabMethod5ClickNextTab": "切换到下一个标签方法", + "TabMethod6CloseCurrentTab": "关闭当前标签页方法", + "TabMethod7CloseOtherTabs": "关闭其他标签页方法", + "TabMethod8CloseAllTabs": "关闭所有标签页方法", + "TabMethod9GetActiveTab": "获得当前标签页方法", + "TabsAddTabItemIntro": "通过调用组件 api 动态添加/删除 TabItem", + "TabsAddTabItemTitle": "自定义增加标签页触发器", + "TabsAppDescription": "通过 添加 删除 按钮动态调整 TabItem 数量,使其超出容器数量查看,左右移动效果;用户管理 设置为不可关闭;功能按钮无法关闭这个标签页。组件默认是循环切换标签页的,可以通过 IsLoopSwitchTabItem=\"false\" 关闭这个功能", + "TabsAppIntro": "通过设置 ShowExtendButtons 属性为 true,开启组件左右移动按钮与关闭下拉菜单,实战中非常实用", + "TabsAppTitle": "实战 Tab 组件", + "TabsBorderIntro": "通过 IsBorderCard='true' 设置卡片化的标签页。", + "TabsBorderTitle": "卡片化", + "TabsCapsuleStyleIntro": "通过设置 TabStyle=\"TabStyle.Capsule\" 设置标签页为胶囊样式,目前仅支持 Placement=\"Placement.Top\" Placement=\"Placement.Bottom\" 模式", + "TabsCapsuleStyleTitle": "胶囊样式", + "TabsCardIntro": "通过 IsCard='true' 设置选项卡样式的标签页。", + "TabsCardTitle": "选项卡样式", + "TabsChromeStyleIntro": "通过设置 TabStyle=\"TabStyle.Chrome\" 设置 Chrome 浏览器标签页样式,目前仅支持 Placement=\"Placement.Top\" 模式", + "TabsChromeStyleTitle": "Chrome 样式", + "TabsClosableIntro": "通过设置 ShowClose 属性对标签页显示关闭按钮", + "TabsClosableTips": "

            Tab 组件开启 ShowClose 后,TabItem 属性 Closable 可对标签页单独设置是否可关闭,默认为 true;本例中 用户管理 标签页不提供关闭功能

            ", + "TabsClosableTitle": "关闭", + "TabsComponentDescription": "Tab 组件各个面板内的内容默认是保持状态的,本例中面板切换时保持原有数据", + "TabsComponentIntro": "TabItem 中内置其他组件", + "TabsComponentTitle": "内置其他组件", + "TabsContextMenuDesc": "被禁用的标签页可以通过设置 OnBeforeShowContextMenu 回调方法根据返回值控制右键菜单是否显示,未设置时禁用标签页也显示右键菜单", + "TabsContextMenuIntro": "通过内置 ContextMenuZone 组件,点击标签页右键时弹窗自定义右键菜单", + "TabsContextMenuTitle": "右键菜单", + "TabsDescription": "Tab 组件从设计上采用模板的设计形式,使用本组件时通过将 TabItem 子组件添加到 TabItems 模板中即可", + "TabsDisabledIntro": "通过设置 IsDisabled=\"true\" 禁用当前 TabItem 禁止点击、拖动、关闭等操作", + "TabsDisabledTitle": "禁用", + "TabsDragIntro": "通过设置 AllowDrag 开启标签页拖拽功能,放下标签页后回调 OnDragItemEndAsync 方法", + "TabsDragTitle": "拖拽标签页", + "TabsDynamicTabItemDescription": "本例中右侧 Tab 面板内状态一直保持,关闭后重新打开时组件重新加载", + "TabsDynamicTabItemIntro": "通过此功能可以实现侧边栏中点击菜单链接,右侧数据区上部呈现多标签", + "TabsDynamicTabItemTitle": "程序动态添加 TabItem 面板", + "TabsHeaderTemplateIntro": "通过设置 HeaderTemplateHeader 进行自定义设置", + "TabsHeaderTemplateTitle": "Header 模板", + "TabsIconIntro": "通过设置 TabItem 组件的 Icon 属性对标签页设置图标", + "TabsIconTitle": "图标", + "TabsInfoItem2": "使用内置扩展方法 Navigator.NavigateTo(\"provider\", \"url\", \"text\", \"icon\", \"closable\") 导航时即可设置标签页属性", + "TabsInfoItem4": "通过设置 razor 页面标签 @attribute [TabItemOption(Text = \"LayoutPage\", Icon = \"fa-solid fa-font-awesome\")]", + "TabsInfoTitle": "标签页导航时设置附加信息", + "TabsIsOnlyRenderActiveIntro": "通过设置 IsOnlyRenderActiveTab 参数使组件仅渲染当前活动标签", + "TabsIsOnlyRenderActiveTitle": "仅渲染当前标签", + "TabsItemMenuTitle": "配置 Tab 与 Menu 联动字典,该方法无需再单独设置 TabItemOption 即可自动获取标签页属性。", + "TabsLazyLoadIntro": "通过设置 IsLazyLoadTabItem=\"true\" 开启标签页懒加载,标签组件首次加载时仅加载 IsActive 的标签页,其余不加载,点击后才加载", + "TabsLazyLoadTitle": "懒加载标签页功能", + "TabsNormalIntro": "基础的、简洁的标签页。", + "TabsNormalTitle": "基础用法", + "TabsOnTabHeaderTextLocalizerIntro": "通过设置 OnTabHeaderTextLocalizer 回调委托方法实现 TabItemOption 本地化,入参为 TabItemOption 参数 Text 值,返回值为本地化后值", + "TabsOnTabHeaderTextLocalizerTitle": "TabItemOption 本地化问题", + "TabsPlacementIntro": "通过设置 Placement 属性更改标签位置,更改为左右时会出现上下滚动小箭头进行 TabItem 切换", + "TabsPlacementTitle": "位置", + "TabsQA1": "通过级联参数获得当前 TabSet", + "TabsQA2": "通过级联参数获得当前 TabItem", + "TabsQA3": "网页中点击链接如何跳转到新标签页 TabItem", + "TabsQA4": "代码中如何导航到新标签页 TabItem", + "TabsQATitle": "常见问题", + "TabsSetHeaderTemplateIntro": "通过设置 TabItem 参数 Text 进行自定义标题设置", + "TabsSetHeaderTemplateTitle": "代码设置 Header 标题", + "TabsSetTabItemHeaderTextIntro": "通过设置 TabItem 实例方法 SetHeader 进行自定义标题设置", + "TabsSetTabItemHeaderTextTitle": "代码设置标题图标", + "TabsSubTitle": "分隔内容上有关联但属于不同类别的数据集合。", + "TabsTips1": "作为数据分割", + "TabsTips2": "页面导航", + "TabsTips3": "本组件默认行为为数据分割,点击 TabItem 标题时并不会进行导航行为,如果需要进行地址栏导航时请设置 ClickTabToNavigation 属性为 true,此时点击 TabItem 标题时地址栏将会重定向导航,多用于后台管理系统与 Menu 组件进行联动使用,实战可参考 后台模板模拟器 中的 多标签 模式,如果有 Razor 组件 在额外的程序集中时,请正确设置 AdditionalAssemblies 属性值,以便标签组件内路由正确解析,相关文档 [传送门]", + "TabsTips4": "本组件会根据宽度高度等进行自适应适配,适当的时候可以出现左右或者上下的滚动箭头", + "TabsTipsTitle": "Tab 组件一般有两种用法:", + "TabsTitle": "Tabs 标签页", + "TabsToolbarDesc": "点击按钮计数器数值增加后,点击工具栏的 刷新 按钮计数器清零", + "TabsToolbarIntro": "通过设置 ShowToolbar 显示标签页工具栏,默认显示 刷新 全屏 按钮,可以通过 ShowRefreshToolbarButton ShowFullscreenToolbarButton 控制是否显示,点击 刷新 按钮后触发 OnToolbarRefreshCallback 回调方法,可以通过 ToolbarTemplate 自定义工具栏按钮", + "TabsToolbarTitle": "工具栏" }, - "BootstrapBlazor.Server.Components.Samples.Icons.AntDesign.AntDesignIcons": { - "AntDesignIconTitle": "蚂蚁图标库", - "AntDesignIconDescription": "语义化的矢量图形", - "CopiedTooltipText": "拷贝成功", - "P1": "1. 引用扩展组件包后添加包内置样式文件开启图标", - "P2": "2. 开启样式隔离,编译后自动引用组件样式", - "P3": "请拷贝下方样式即可", - "Icons": "图标列表请通过 [传送门] 查看" + "BootstrapBlazor.Server.Components.Samples.Tags": { + "Tag1": "标签一", + "Tag2": "标签二", + "Tag3": "标签三", + "Tag4": "标签四", + "Tag5": "标签五", + "Tag6": "标签六", + "Tag7": "标签七", + "TagsCloseButtonIntro": "提供关闭按钮的标签", + "TagsCloseButtonTitle": "关闭按钮", + "TagsIconIntro": "表示某种状态时提升可读性。", + "TagsIconTitle": "带 Icon", + "TagsNormalIntro": "页面中的非浮层元素,不会自动消失。", + "TagsNormalTitle": "基础用法", + "TagsOnDismiss": "关闭标签回调方法", + "TagsSubTitle": "用于标记和选择。", + "TagsTitle": "Tag 标签" }, - "BootstrapBlazor.Server.Components.Samples.Icons.OctIcon.OctIcons": { - "OctIconTitle": "Github 图标库", - "OctIconDescription": "Primer is a set of guidelines, principles, and patterns for designing and building UI at GitHub.", - "CopiedTooltipText": "拷贝成功", - "P1": "1. 引用扩展组件包后添加包内置样式文件开启图标", - "P2": "2. 开启样式隔离,编译后自动引用组件样式", - "P3": "请拷贝下方样式即可", - "Icons": "图标列表请通过 [传送门] 查看" + "BootstrapBlazor.Server.Components.Samples.TaskBoard": { + "TaskBoardIntro": "后台任务看板", + "TaskBoardNormalIntro": "本组件提供后台任务调度触发器详细信息", + "TaskBoardNormalTitle": "基本用法", + "TaskBoardTitle": "Task DashBoard 任务管理器" }, - "BootstrapBlazor.Server.Components.Samples.Icons.UniverIcon.UniverIcons": { - "UniverIconTitle": "Univer Icon 图标库", - "UniverIconDescription": "Icons used by Univer", - "CopiedTooltipText": "拷贝成功", - "P1": "1. 引用扩展组件包后添加包内置样式文件开启图标", - "P2": "2. 开启样式隔离,编译后自动引用组件样式", - "P3": "请拷贝下方样式即可", - "Icons": "图标列表请通过 [传送门] 查看" + "BootstrapBlazor.Server.Components.Samples.TextAreas": { + "TextAreaAutoScroll": "自动滚屏", + "TextAreaBindWayBindValue": "绑定值", + "TextAreaBindWayIntro": "绑定组件内变量,数据自动同步", + "TextAreaBindWayTitle": "双向绑定", + "TextAreaDisableIntro": "设置 IsDisabled 属性值为 true 时,组件禁止输入", + "TextAreaDisableTitle": "禁用", + "TextAreaHeightIntro": "设置 rows 属性时,组件初始化显示固定行数高度", + "TextAreaHeightTitle": "高度", + "TextAreaKeyEventIntro": "通过设置 OnEnterAsync OnEscAsync 开始 Enter Esc 按键回调事件", + "TextAreaKeyEventPlaceHolder": "按下 Enter/Esc 键触发事件", + "TextAreaKeyEventTitle": "Enter/Esc 按键事件", + "TextAreaMockChat": "模拟聊天 ", + "TextAreaNormalIntro": "可接受大量文字", + "TextAreaNormalTitle": "基础用法", + "TextAreaPlaceHolder": "请输入 ...", + "TextAreaReadOnlyIntro": "设置 readonly 属性时,组件禁止输入", + "TextAreaReadOnlyTitle": "只读", + "TextAreaScrollIntro": "滚动到底部/顶部/指定位置", + "TextAreaScrollTitle": "内容滚动", + "TextAreaScrollTo": "滚动+20", + "TextAreaScrollToBottom": "滚动到底部", + "TextAreaScrollToTop": "滚动到顶部", + "TextAreaSubTitle": "用于录入大量文字", + "TextAreaTitle": "Textarea 多行文本框", + "TextAreaUseShiftEnterIntro": "通过设置 UseShiftEnter=\"true\" 开始使用 Shift + Enter 进行换行操作,适用于对话框类应用", + "TextAreaUseShiftEnterPlaceHolder": "请输入一些文字,Enter 发送 Shift + Enter 换行", + "TextAreaUseShiftEnterTitle": "Shift Enter" }, - "BootstrapBlazor.Server.Components.Samples.BootstrapBlazorIcons": { - "IconsTitle": "Icon 图标", - "IconsDescription": "同时支持字体图标、矢量 Svg 图标、以及 Image 图片", - "FATitle": "字体图标", - "FAIntro": "通过设置 Name 指定图标样式即可", - "SvgTitle": "矢量图标", - "SvgIntro": "通过设置 IsSvgSprites=\"true\" Url 加载 Svg 雪碧图,通过 Name 指定其 Id 值", - "ImageTitle": "图片", - "ImageIntro": "通过 ChildContent 模板自定义显示内容", - "Icons": "图标列表请通过 [传送门] 查看" + "BootstrapBlazor.Server.Components.Samples.Timelines": { + "TimelineItemContent1": "创建时间", + "TimelineItemContent2": "通过审核", + "TimelineItemContent3": "活动按期开始", + "TimelineItemContent4": "默认样式的节点", + "TimelineItemContent5": "支持自定义颜色", + "TimelineItemContent6": "支持使用图标", + "TimelinesAlternateDescription": "通过设置 IsAlternate 属性来控制时间线左右交替展现", + "TimelinesAlternateIntro": "内容在时间轴两侧轮流出现", + "TimelinesAlternateTitle": "交替展现", + "TimelinesAttributeTitle": "TimelineItem 属性", + "TimelinesColor": "节点颜色", + "TimelinesComponent": "节点自定义组件", + "TimelinesContent": "内容正文", + "TimelinesCustomNodeStyleIntro": "可根据实际场景⾃定义节点颜⾊,或直接使⽤图标。", + "TimelinesCustomNodeStyleTitle": "⾃定义节点样式", + "TimelinesDescription": "节点描述文字", + "TimelinesDescription1": "实时输出", + "TimelinesDescription2": "计数器", + "TimelinesDescription3": "天气预报信息", + "TimelinesDisplayCustomComponentDescription": "通过设置 TimelineItemCustomerComponent 来控制时间线展现的自定义组件", + "TimelinesDisplayCustomComponentIntro": "时间轴上展现自定义组件", + "TimelinesDisplayCustomComponentTitle": "展现自定义组件", + "TimelinesIcon": "节点图标", + "TimelinesLeftDescription": "通过设置 IsLeft 属性来控制内容出现在时间线左侧", + "TimelinesLeftIntro": "内容在时间轴左侧轮流出现", + "TimelinesLeftTitle": "左侧展现", + "TimelinesNormalDescription": "排序:", + "TimelinesNormalIntro": "Timeline
            可拆分成多个按照时间戳正序或倒序排列的 activity,时间戳是其区分于其他控件的重要特征,使⽤时注意与 Steps 步骤条等区分。", + "TimelinesNormalTitle": "基础用法", + "TimelinesSelectedItem1": "正序", + "TimelinesSelectedItem2": "倒序", + "TimelinesSubTitle": "可视化地呈现时间流信息", + "TimelinesTitle": "Timeline 时间线" }, - "BootstrapBlazor.Server.Components.Samples.DriverDotnetJs": { - "DriverJsPopoverTitleText": "高亮向导组件演示", - "DriverJsPopoverContentText1": "这里是菜单,点击后右侧面板出现详细示例", - "DriverJsPopoverContentText2": "这里是组件介绍,通过点击下方单选框可切换图标主题", - "DriverJsPopoverContentText3": "这里是示例区域,此区域内展示具体例子", - "DriverJsPopoverContentText4": "这里是示例区域", - "DriverJsPopoverContentText5": "点击这里开始", - "DriverJsTitle": "DriverJs 高亮向导组件", - "DriverJsSubtitle": "引导用户的注意力穿过整个页面", - "DriverJsNormalTitle": "基础用法", - "DriverJsNormalIntro": "通过简单配置点击按钮开始用户步骤指导", - "DriverJsNormalDesc": "通过设置 DriverJsConfig 参数 Animate=\"false\" 关闭动画效果", - "DriverJsPopoverTitle": "弹窗配置", - "DriverJsPopoverIntro": "通过设置 DriverJsPopover 组件配置 Popover 相关配置信息", - "DriverJsPopoverDesc": "详细参数信息请查看 [传送门]", - "DriverJsPopoverStyleTitle": "弹窗样式", - "DriverJsPopoverStyleIntro": "通过设置 PopoverClass=\"driverjs-theme\" 通过自定义样式 driverjs-theme 设置弹窗 UI", - "DriverJsDestroyTitle": "销毁回调方法", - "DriverJsDestroyIntro": "销毁前回调方法 OnBeforeDestroyAsync 或者销毁回调方法 OnDestroyedAsync", - "DriverJsDestroyDesc": "当用户尝试退出游览时,可以使用 OnBeforeDestroyAsync 回调添加销毁前逻辑,返回 非空字符串 时客户端弹窗二次确认是否阻止销毁;可通过设置 AllowClose 阻止用户退出向导", - "DriverJsHighlightTitle": "高亮显示", - "DriverJsHighlightIntro": "通过调用 DriverJs 组件实例方法 Highlight 使指定元素高亮聚焦显示" + "BootstrapBlazor.Server.Components.Samples.TimePickers": { + "Description": "用于选择或输入时刻", + "HasSecondsIntro": "控制是否显示秒数控件", + "HasSecondsTitle": "隐藏秒数", + "OnConfirmIntro": "可以选择任意时间", + "OnConfirmTitle": "选择任意时间点", + "Title": "TimePicker 时间选择器" }, - "BootstrapBlazor.Server.Components.Samples.IntersectionObservers": { - "IntersectionObserverTitle": "IntersectionObserver 交叉观察器", - "IntersectionObserverDescription": "通过滚动使元素可见使触发组件回调,多用于数据懒加载功能", - "IntersectionObserverBaseUsage": "基础用法", - "IntersectionObserverNormalIntro": "通过设置 Root RootMargin Threshold 参数值,监听元素与根元素交叉变化", - "IntersectionObserverNormalDescription": "本例加载 100 张图片,不可见图片加载默认图片(缓存图片性能高),当滚动到可见区域时,加载真实图片", - "IntersectionObserverLoadTitle": "触底加载", - "IntersectionObserverLoadIntro": "滚动到底后,出现加载更多指示,通知后台加载数据", - "IntersectionObserverLoadDesc1": "通过设置 Threshold=\"1.0\" 约束正在加载指示符完全可见时,执行加载更多操作", - "IntersectionObserverLoadDesc2": "通过设置 AutoUnobserve=\"false\" 保证始终检测正在加载指示符可见性,防止可见后自动移除检测", - "IntersectionObserverLoadDesc3": "通过设置 OnLoadMoreAsync 方法模拟网络延时 1s", - "IntersectionObserverVisibleTitle": "触发阈值", - "IntersectionObserverVisibleIntro": "通过设置 Threshold 调整触发条件", - "IntersectionObserverVisibleDesc": "本例中设置 Threshold=\"1\" 即触发条件为视频完全可见时播放,否则自动暂停", - "IntersectionObserverVisiblePauseLabel": "视频已暂停", - "IntersectionObserverVisiblePlayLabel": "视频已开始播放", - "IntersectionObserverThresholdTitle": "阈值变化观察", - "IntersectionObserverThresholdIntro": "通过设置 Threshold 后通过回调参数 IntersectionObserveEntry 属性 IntersectionRatio 获得观察元素与根元素交叉率", - "IntersectionObserverThresholdDesc": "拖动下方 div 滚动条,可观察数据变化", - "AttributeUseElementViewport": "是否使用当前元素作为视窗", - "AttributeRootMargin": "根元素边距", - "AttributeThreshold": "可见性阈值", - "AttributeAutoUnobserveWhenIntersection": "元素可见时是否自动取消观察", - "AttributeAutoUnobserveWhenNotIntersection": "元素不可见时是否自动取消观察", - "AttributeOnIntersectingAsync": "可见回调方法", - "AttributeChildContent": "子组件", - "LoadMoreTitle": "LoadMore 组件", - "LoadMoreIntro": "通过设置 LoadMore 组件参数 CanLoading 控制加载状态,OnLoadMoreAsync 回调方法加载更多数据", - "LoadMoreDesc": "

            本例中通过设置 CanLoadingtrue 显示加载指示符,加载完成后设置为 false 显示 没有更多数据 提示文本

            • 通过 LoadingTemplate 自定义加载更多的 UI
            • 通过 NoMoreTemplate 自定义没有更多数据时显示的 UI
            • 通过 NoMoreText 参数设置没有更多加载项时显示的指示文本
            • " + "BootstrapBlazor.Server.Components.Samples.Timers": { + "TimersColorIntro": "通过设置 Color 属性设定圆形进度条颜色", + "TimersColorTitle": "颜色", + "TimersDescription": "用于时间倒计时", + "TimersNormalIntro": "通过设置 Value 属性设定倒计时时间", + "TimersNormalTitle": "基本用法", + "TimersTitle": "Timer 计时器" }, - "BootstrapBlazor.Server.Components.Samples.SortableLists": { - "SortableListTitle": "SortableList 拖拽组件", - "SortableListDescription": "可排序的拖拽组件", - "SortableListNormalTitle": "简单例子", - "SortableListNormalIntro": "通过设置 SortableListOption 参数 RootSelector 指定样式选择器获得根元素,通过设置 OnUpdate 回调方法重新设置数据源", - "SortableListGroupTitle": "分组共享拖拽", - "SortableListGroupIntro": "通过设置 SortableListOption 参数 Group 指定组名,使不同组之间元素可以拖拽", - "SortableListCloneTitle": "拖拽时克隆元素", - "SortableListCloneIntro": "通过设置 SortableListOption 参数 Clone 设置拖拽时是否克隆当前元素", - "SortableListDisableSortTitle": "禁止排序", - "SortableListDisableSortIntro": "通过设置 SortableListOption 参数 Sort 设置拖拽时是否排序当前元素,本例中通过设置 Putback=\"false\" 禁止元素拖拽回左侧集合中", - "SortableListHandlerTitle": "拖拽控制元素", - "SortableListHandlerIntro": "通过设置 SortableListOption 参数 Handle 设置指定可拖拽元素,鼠标拖动图标时拖动整个元素", - "SortableListFilterTitle": "条件过滤拖拽组件", - "SortableListFilterIntro": "通过设置 SortableListOption 参数 Filter 设置有条件性的拖拽元素,示例中红色元素无法拖动", - "SortableListNestTitle": "嵌套使用", - "SortableListNestIntro": "通过嵌套使用 SortableList 组件即可", - "SortableListMultiTitle": "多项拖拽", - "SortableListMultiIntro": "通过设置 SortableListOption 参数 MultiDrag 可先选择多个项目后拖拽", - "SortableListTableTitle": "表格行拖拽", - "SortableListTableIntro": "通过设置 SortableListOption 参数 RootSelector 指定拖拽根元素为 tbody 即可对行进行拖拽操作", - "SortableListClassTitle": "由于 SortableList为容器组件,内容均为自定义组件,无法内置样式,需要根据实际情况自行设置样式", - "SortableListClassLi1": "拖动元素样式 sortable-chosen", - "SortableListClassLi2": "拖动元素克隆项默认样式 sortable-ghost 可通过 GhostClass 自定义", - "SortableListClassLi3": "拖动元素交换想项默认样式 sortable-swap-highlight 可通过 SwapClass 自定义", - "SortableListSwapTitle": "交换", - "SortableListSwapIntro": "通过设置 SortableListOption 参数 Swap 设置拖拽项与目标项目交换", - "SortableListOnAddTitle": "多区域拖动", - "SortableListOnAddIntro": "通过设置 SortableEvent 参数 FromId 获得拖动项所属 SortableList。本示例中三个区域内元素可以任意拖动", - "AttributeSortableListOption": "SortableListOption 实例", - "AttributeOnAdd": "增加元素时回调方法", - "AttributeOnUpdate": "更新元素时回调方法", - "AttributeOnRemove": "删除元素时回调方法" + "BootstrapBlazor.Server.Components.Samples.Titles": { + "AdvanceB": "特别注意:", + "AdvanceIntro": "网页中无需添加 Title 组件,调用注入服务 TitleService", + "AdvanceP": "使用此种方法时请在 App 或者 MainLayout 或者 Page 中添加 未设置 Text 属性Title 组件", + "AdvanceTitle": "高级用法", + "BasicUsageIntro": "网页中添加 Title 组件并设置 Text 属性即可", + "BasicUsageP": "设置 Text 属性", + "BasicUsageP1": "测试网页", + "BasicUsageTips": "Title 组件设置 Text 后为普通组件使用,未设置 Text 属性时供服务调用", + "BasicUsageTitle": "基础用法", + "BasicUsageTitleText": "我是标题", + "FuncationParmeter": "我是标题", + "StaticB": "特别注意:", + "StaticDiv": "使用此种方法时请在 App 或者 MainLayout 或者 Page 中添加 未设置 Text 属性Title 组件", + "StaticIntro": "直接调用 TitleService 静态方法", + "StaticTitle": "静态方法", + "SubTitle": "用于设置网页页面标题", + "Tips": "

              NET6.0 可使用微软 PageTitle 组件,用于设置网页标题,本组建额外提供了以服务的形式设置当前网页标题

              ", + "Title": "Title 网站标题" }, - "BootstrapBlazor.Server.Components.Samples.WinBoxes": { - "WinBoxTitle": "WinBox 窗口组件", - "WinBoxDescription": "模拟 Windows 窗口风格的组件", - "WinBoxNormalTitle": "基础用法", - "WinBoxNormalIntro": "通过设置 WinBoxOption 参数值,创建并且弹出窗口", - "AttributeRoot": "弹窗容器根节点", - "AttributeTitle": "弹窗标题", - "AttributeClass": "弹窗样式", - "AttributeBackground": "弹窗背景色", - "AttributeBorder": "弹窗边框", - "AttributeIcon": "弹窗标题图标", - "OnCreateAsync": "创建弹窗回调方法", - "OnShownAsync": "弹窗可见回调方法", - "OnHideAsync": "隐藏弹窗回调方法", - "OnFocusAsync": "弹窗获得焦点回调方法", - "OnBlurAsync": "弹窗失去焦点回调方法", - "OnFullscreenAsync": "弹窗全屏回调方法", - "OnRestoreAsync": "恢复弹窗回调方法", - "OnMaximizeAsync": "最大化弹窗回调方法", - "OnMinimizeAsync": "最小化弹窗回调方法", - "OnCloseAsync": "关闭弹窗回调方法" + "BootstrapBlazor.Server.Components.Samples.Toasts": { + "ShowHeaderText": "Toast", + "ToastsAsyncDemoStep1Text": "正在打包文档,请稍等...", + "ToastsAsyncDemoStep2Text": "打包完成,正在下载...", + "ToastsAsyncDemoStep3Text": "下载完成,自动关窗", + "ToastsAsyncDemoTitle": "异步通知", + "ToastsAsyncIntro": "通过设置按钮 IsAsync 参数,使用同一个 ToastOption 更新弹窗信息提示不同步骤时的信息", + "ToastsAsyncText": "线程阻塞通知示例", + "ToastsAsyncTitle": "线程阻塞通知", + "ToastsCloseIntro": "不会自动关闭,需要人工点击关闭按钮,可通过设置 OnCloseAsync 回调委托自定义关闭弹窗后事件", + "ToastsCloseNotificationText": "成功通知", + "ToastsCloseTitle": "Toast 手动关闭", + "ToastsDanger": "失败通知", + "ToastsDescriptionTitle": "组件使用介绍", + "ToastsHeaderTemplateIntro": "通过设置 HeaderTemplate 自定义标题栏内容", + "ToastsHeaderTemplateTitle": "自定义标题栏", + "ToastsInfo": "信息通知", + "ToastsNormalIntro": "用户操作时,右下角给予适当的提示信息", + "ToastsNormalTitle": "基础用法", + "ToastsPositionAddComponent": "增加 BootstrapBlazor 组件", + "ToastsPositionAddsNew": "系统增加新组件啦,4 秒后自动关闭", + "ToastsPositionAttentionText": "特别注意", + "ToastsPositionAutoClose": "保存数据成功,4 秒后自动关闭", + "ToastsPositionAutomaticDisappearance": "统一设置 Toast 组件自动消失时间", + "ToastsPositionBoxTitle": "通知框 Title 值", + "ToastsPositionCategory": "通知类别", + "ToastsPositionConfigured": "通过 Startup 文件中的 ConfigureServices 方法配置,适用于 Server-Side AppWebAssembly App", + "ToastsPositionContent": "通知正文内容", + "ToastsPositionDescription": "通过设置 Toast 组件的 Placement 值来设置弹窗出现的位置,默认值为 BottomEnd 除此之外的值均为右上角", + "ToastsPositionDisappearance": "统一设置 Toast 组件自动消失时间", + "ToastsPositionIntro": "提供设置 Toast 弹窗出现位置", + "ToastsPositionNote1": "特别说明: 可以通过 BootstrapBlazorOptions 全局统一配置参数可以设置整个系统内的 Toast 组件 Delay 参数值", + "ToastsPositionNote2": "通过配置文件 appsetting.json 文件配置,适用于 Server-Side App", + "ToastsPositionNotification": "消息通知", + "ToastsPositionSaved": "保存成功", + "ToastsPositionServerSide": "或者,仅适用于 Server-Side App", + "ToastsPositionTips": "本组件使用注入服务的形式提供功能,使用时用户体验效果非常舒适,随时随地的调用。
              注入服务提供以下几种快捷调用方法:", + "ToastsPositionTips2": "示例如下", + "ToastsPositionTitle": "Toast 显示位置", + "ToastsPreventIntro": "通过设置 PreventDuplicates=\"true\" 重复点击下方按钮时,仅弹窗一次", + "ToastsPreventText": "阻止重复", + "ToastsPreventTitle": "阻止重复", + "ToastsShowHeaderIntro": "通过设置 ShowHeader=\"false\" 关闭 Header", + "ToastsShowHeaderTitle": "不显示 Header", + "ToastsSubTitle": "提供轻量级 Toast 弹窗", + "ToastsSuccess": "成功通知", + "ToastsTips1": "1. 注入服务 ToastService", + "ToastsTips2": "2. 调用其实例 api", + "ToastsTitle": "Toast 轻量弹窗", + "ToastsWarning": "警告通知" }, - "BootstrapBlazor.Server.Components.Samples.Players": { - "PlayersTitle": "Player 音视频播放器", - "PlayersDescription": "一个简单、可访问和可定制的媒体播放器", - "PlayersTips": "Player 组件支持 视频,音频,YoutubeVimeo", - "PlayersNormalTitle": "基础用法", - "PlayersNormalIntro": "通过回调方法 OnInitAsync 设置组件所需要的配置实例 PlayerOption。通过 PlayerOption 属性值对播放器进行设置", - "PlayersHlsTitle": "HLS 支持", - "PlayersHlsIntro": "通过设置 IsHls=\"true\" 开启 Hls 支持", - "PlayersAudioTitle": "音频播放器", - "PlayersAudioIntro": "通过设置 Mode=\"PlayerMode.Audio\" 播放音频文件", - "PlayersYouTubeTitle": "YouTube 支持", - "PlayersYouTubeIntro": "通过设置 Mode=\"PlayerSources\" 参数 Provider=\"youtube\" 播放 YouTube 视频", - "PlayersVimeoTitle": "Vimeo 支持", - "PlayersVimeoIntro": "通过设置 Mode=\"PlayerSources\" 参数 Provider=\"vimeo\" 播放 Vimei 视频" + "BootstrapBlazor.Server.Components.Samples.Toggles": { + "BasicUsageP": "点击第一个开关有值输出日志", + "BindToWayDisplayText1": "双向绑定示例", + "BindToWayDiv": "绑定数值:", + "BindToWayP1": "Switch 组件开启双向绑定时,会根据绑定的 Model 属性值去自动获取 DisplayName 标签值并且显示为前置 Label,通过 DisplayText 属性可以自定义显示前置标签,或者通过 ShowLabel 属性关闭前置标签是否显示", + "BindToWayP2": "设置 DisplayText 值为 自定义标签", + "BindToWayP3": "无论是否设置 DisplayText 值,当 ShowLabeltrue 时均显示", + "BindToWayP4": "无论是否设置 DisplayText 值,当 ShowLabelfalse 时均不显示", + "CustomLabelText": "自定义标签", + "NotDisplayText": "不显示", + "NotOccupantsText": "不占位", + "OccupantsText": "占位", + "TogglesBindToWayIntro": "绑定组件内变量,数据自动同步", + "TogglesBindToWayTitle": "双向绑定数据", + "TogglesDisableIntro": "开关不可用状态。", + "TogglesDisableTitle": "禁用状态", + "TogglesNormalIntro": "点击按钮切换状态", + "TogglesNormalTitle": "基础用法", + "TogglesOffText": "关闭", + "TogglesOnText": "开启", + "TogglesSubTitle": "提供最普通的开关应用,值为 true false", + "TogglesTitle": "Toggle 开关", + "ValueChanged": "获取选择改变的值" }, - "BootstrapBlazor.Server.Data.CustomValidataModel": { - "Name": "名称", - "Telephone1": "联系电话1", - "Telephone2": "联系电话2", - "CanNotBeTheSame": "联系电话1 和 联系电话2 不能相同" + "BootstrapBlazor.Server.Components.Samples.Toolbars": { + "NormalTitle": "基本用法", + "ToolbarsTitle": "Toolbar 工具栏", + "ToolbarSubTitle": "是按钮或其他应用程序特定工具的容器" }, - "BootstrapBlazor.Server.Data.CustomValidateCollectionModel": { - "Telephone1": "联系电话1", - "Telephone2": "联系电话2" + "BootstrapBlazor.Server.Components.Samples.Tooltips": { + "BootstrapTooltipIntro": "尝试新做一个用起来比较舒服的组件,可尝鲜使用,后期组件名字可能会更改", + "BootstrapTooltipTips1": "通过 BootstrapTooltip 对其他组件或者 HTML 元素进行包裹,使其被包裹对象具有 Tooltip 功能", + "BootstrapTooltipTips2": "本例中通过 BootstrapTooltip 包裹一个图标,鼠标移动到图标上时,显示预设 Tooltip 使用更简单快捷", + "BootstrapTooltipTitle": "测试组件", + "TooltipsButtonIntro": "提供鼠标悬停或者获得焦点后显示提示框", + "TooltipsButtonTitle": "Button 组件提示框", + "TooltipsCustomClassIntro": "通过设置 CustomClass 参数进行自定义样式设置", + "TooltipsCustomClassTitle": "自定义样式", + "TooltipsDescription": "提供鼠标悬停或者获得焦点后显示提示框", + "TooltipsManualDescLI1": "子组件使用级联参数得到 Tooltip 实例,然后调用其相应方法 Show Hide Toggle", + "TooltipsManualDescLI2": "通过 @ref 获得 Tooltip 实例调用其对应方法", + "TooltipsManualIntro": "通过设置 Trigger=\"manual\" 使用代码控制提示栏状态", + "TooltipsManualTitle": "手动控制状态", + "TooltipsNormalIntro": "常用于展示鼠标 hover 时的提示信息", + "TooltipsNormalTitle": "基础用法", + "TooltipsSelectorIntro": "通过设置 Selector 参数精确定位触发提示框元素", + "TooltipsSelectorTitle": "提示信息宿主设置", + "TooltipsTitle": "Tooltip 提示工具条" }, - "BootstrapBlazor.Server.Components.Samples.IFrames": { - "IFrameTitle": "IFrame 内联框架", - "IFrameDescription": "允许在页面中嵌入文档、视频和交互式媒体。 通过这样做可以在主页上显示一个辅助页面。 iFrame 元素允许包含来自其他源的内容,它可以在页面的任何地方集成内容。", - "IFrameNormalTitle": "基础用法", - "IFrameNormalIntro": "通过 Src参数设置其他网站页面地址,内联其内容到本页面中", - "AttributeSrc": "Frame 加载网页路径", - "AttributeData": "传递的数据", - "AttributeOnPostDataAsync": "Frame 加载页面传递过来的数据" + "BootstrapBlazor.Server.Components.Samples.Topologies": { + "TopologiesDescription": "通过 Topology 开源组件进行人机交互界面的渲染", + "TopologiesNormalIntro": "加载网站导出的 Json 文件即可,点击风扇下方数字框可进行控制操作", + "TopologiesNormalTitle": "基础用法", + "TopologiesTitle": "Topology 人机交互界面" }, - "BootstrapBlazor.Server.Components.Samples.RDKits": { - "RDKitTitle": "RDKit.js 分子图组件", - "RDKitDescription": "RDKit 是一个开源的化学信息学工具包,用于分子建模和化学信息学", - "RDKitNormalTitle": "基础用法", - "RDKitNormalIntro": "通过 Smiles 设置分子式,组件画图", - "RDKitSmartsTitle": "Smarts", - "RDKitSmartsIntro": "通过设置 Smarts 值,高亮显示部分分子式", - "RDKitSmartsLabel": "显示 Smarts", - "RDKitSizeTitle": "尺寸", - "RDKitSizeIntro": "通过设置 Width Height 值设置分子式宽高" + "BootstrapBlazor.Server.Components.Samples.Transfers": { + "Backup": "备选", + "BindToWayButtonText1": "增加", + "ClientValidationButtonText": "提交", + "ClientValidationP1": "Transfer 组件内置于 ValidateForm 组件即开启客户端验证,本例中组件双向绑定 Model.Hobby 类型为 IEnumerable<string>", + "Data": "数据", + "LeftButtonText": "到左边", + "LeftPanelText": "左侧列表", + "OnSelectedItemsChanged": "组件绑定数据项集合选项变化时回调方法", + "OnSetItemClass": "设置 Item 样式回调方法", + "PlaceHolder": "请输入", + "RightButtonText": "到右边", + "RightPanelText": "右侧列表", + "TransferBindDescription": "Transfer 组件为泛型组件,支持三种绑定类型 string IEnumerable<string> IEnumerable<SelectedItem> 本例中双向绑定 SelectedValue 类型为 IEnumerable<SelectedItem>", + "TransferBindIntro": "组件数据发生变化时,双向绑定 bind-Value 值同步变化", + "TransferBindTitle": "双向绑定", + "TransferCustomerIntro": "可以对列表标题文案、按钮文案、数据项的渲染函数、列表底部的勾选状态文案、列表底部的内容区等进行自定义。", + "TransferCustomerTitle": "可自定义", + "TransferDisableIntro": "设置 IsDisabled 属性值为 true 时,组件禁止输入", + "TransferDisableTitle": "禁用", + "TransferItemClassIntro": "通过设置 OnSetItemClass 回调方法根据 SelectedItem 值设置选项样式", + "TransferItemClassTitle": "设置 Item 样式", + "TransferMinMaxIntro": "通过设置 Min Max 参数来限制选项个数", + "TransferMinMaxTitle": "最大最小值约束", + "TransferNormalIntro": "左边勾选候选项点击移动按钮将候选项移动到右侧", + "TransferNormalTitle": "基础用法", + "TransferSearchIntro": "在数据很多的情况下,可以对数据进行搜索和过滤。", + "TransferSearchTitle": "可搜索", + "TransfersTitle": "Transfer 穿梭框", + "TransferValidateIntro": "组件数据发生变化时,双向绑定 bind-Value 值同步变化", + "TransferValidateTitle": "客户端验证" }, - "BootstrapBlazor.Server.Components.Samples.SmilesDrawers": { - "SmilesDrawerTitle": "SmilesDrawer 分子图组件", - "SmilesDrawerDescription": "SmilesDrawer 是一个开源的化学信息学工具包,用于分子建模和化学信息学", - "SmilesDrawerNormalTitle": "基础用法", - "SmilesDrawerNormalIntro": "通过 Smiles 设置分子式,组件画图", - "SmilesDrawerSizeTitle": "尺寸", - "SmilesDrawerSizeIntro": "通过设置 Width Height 值设置分子式宽高" + "BootstrapBlazor.Server.Components.Samples.Transitions": { + "TransitionsDescription": "BootstarpBlazor 应用在部分组件的过渡动画,你也可以直接使用。", + "TransitionsDurationIntro": "通过设置 Duration 参数控制动画时长单位为毫秒", + "TransitionsDurationTitle": "设置动画时长", + "TransitionsEndCallbackIntro": "动画执行完成后执行回调函数", + "TransitionsEndCallbackTitle": "动画执行完成回调", + "TransitionsNormalIntro": "基础动画效果演示", + "TransitionsNormalTitle": "基础用法", + "TransitionsTitle": "Transition 过渡效果" }, - "BootstrapBlazor.Server.Components.Samples.Affixs": { - "AffixTitle": "Affix 固钉组件", - "AffixIntro": "将页面元素钉在可视范围", - "AffixNormalTitle": "基础用法", - "AffixNormalIntro": "固钉默认固定在页面顶部", - "AffixPositionTitle": "位置与距离", - "AffixPositionIntro": "通过参数 Position 控制固定顶端还是底端,通过 Offset 值设置到顶端或者底端距离偏移量" + "BootstrapBlazor.Server.Components.Samples.Translators": { + "TranslatorsDescription": "将源语言的字符或字母转换为目标语言的对应字符或字母", + "TranslatorsInjectService": "注入服务", + "TranslatorsNormalIntro": "通过调用 TranslateAsync 进行文本翻译", + "TranslatorsNormalTitle": "基础用法", + "TranslatorsTitle": "AzureTranslator 翻译服务", + "TranslatorsTranslate": "翻译" }, - "BootstrapBlazor.Server.Components.Samples.Watermarks": { - "WatermarkTitle": "Watermark 水印组件", - "WatermarkIntro": "在页面上添加文本或图片等水印信息", - "WatermarkNormalTitle": "基础用法", - "WatermarkNormalIntro": "使用 Text 属性设置一个字符串指定水印内容", - "WatermarkDescription": "

              全局增加水印实现方法

              可以在模板页 MainLayout 中加水印组件并设置 IsPage=\"true\" 即可

              " + "BootstrapBlazor.Server.Components.Samples.TreeViews": { + "OnMaxSelectedCountExceedTitle": "可选最大数量提示", + "TreeViewAccordionModelDescription": "通过设置 Tree 组件的 IsAccordion 属性开启手风琴效果", + "TreeViewAccordionModelIntro": "对于同一级的节点,每次只能展开一个", + "TreeViewAccordionModelTitle": "手风琴模式", + "TreeViewCheckboxAddButtonText": "追加节点", + "TreeViewCheckboxButtonText": "刷新", + "TreeViewCheckboxCheckBoxDisplayText1": "自动选中子节点", + "TreeViewCheckboxCheckBoxDisplayText2": "自动选中父节点", + "TreeViewCheckboxIntro": "适用于需要选择层级时使用", + "TreeViewCheckboxTips1": "通过设置 OnTreeItemChecked 属性监控树形控件节点被勾选时的事件,选中树形控件节点前复选框时下面日志显示选中节点的数据", + "TreeViewCheckboxTips2": "Tree 组件数据加载内部将会保持各个节点状态,刷新 按钮将更新数据源 Items,组件重新初始化,点击 追加节点 按钮时,仅更改数据源内部数据未重新赋值,所以各个节点状态保持不变", + "TreeViewCheckboxTitle": "多选框", + "TreeViewCheckedItemsIntro": "通过设置 OnTreeItemChecked 回调委托获取所有节点", + "TreeViewCheckedItemsTitle": "获取所有选中节点", + "TreeViewDefaultExpandDescription": "通过设置 TreeViewItem 对象的 IsExpand 属性,来控制此节点是否默认为展开状态,本例中 导航二 默认为展开状态,其余节点默认为收缩状态", + "TreeViewDefaultExpandIntro": "可将 Tree 的某些节点设置为默认展开或默认选中", + "TreeViewDefaultExpandTitle": "默认展开和默认选中", + "TreeViewDraggableDescription": "通过设置 AllowDrag 属性开启节点拖拽功能,使用 OnDragItemEndAsync 回调委托方法响应拖拽节点放置事件", + "TreeViewDraggableIntro": "使树中的节点可以进行跨层级拖拽操作", + "TreeViewDraggableTitle": "可拖拽节点", + "TreeViewEnableKeyboardArrowUpDownIntro": "通过设置 EnableKeyboardArrowUpDown=\"true\" 支持键盘上下箭头操作。左箭头 收起节点,右箭头 展开节点,上箭头 向上移动节点,下箭头 向下移动节点,空格 选中节点", + "TreeViewEnableKeyboardArrowUpDownTitle": "键盘支持", + "TreeViewMaxSelectedCountDesc": "选中节点超过 2 个时,弹出 Toast 提示栏", + "TreeViewMaxSelectedCountIntro": "通过设置 MaxSelectedCount 属性控制最大可选数量,通过 OnMaxSelectedCountExceed 回调处理逻辑", + "TreeViewMaxSelectedCountTitle": "最大选择数量", + "TreeViewNormalDescription": "通过设置 OnTreeItemClick 属性监控树形控件节点被点击时的事件,点击树形控件节点时下面日志显示选中节点的数据", + "TreeViewNormalIntro": "基础的树形结构展示", + "TreeViewNormalTitle": "基础用法", + "TreeViewsAttribute": "TreeViewItem 属性", + "TreeViewsDescription": "用清晰的层级结构展示信息,可展开或折叠", + "TreeViewsDisableWholeTreeView": "是否禁用整个 TreeView", + "TreeViewSetActiveDisplayText": "当前激活节点", + "TreeViewSetActiveIntro": "通过调用 SetActiveItem 方法设置当前激活节点", + "TreeViewSetActiveTitle": "设置激活节点", + "TreeViewShowSearchIntro": "通过设置 ShowSearch 显示搜索栏,通过 OnSearchAsync 回调方法设置数据源刷新页面即可", + "TreeViewShowSearchTitle": "显示搜索栏", + "TreeViewShowSkeletonButtonText": "异步加载", + "TreeViewShowSkeletonIntro": "当组件 Itemsnull 时,通过设置 ShowSkeleton=\"true\" 使异步加载数据时组件显示骨架屏,设置 ShowSkeleton=\"false\" 时显示默认正在加载动画", + "TreeViewShowSkeletonTitle": "加载骨架屏", + "TreeViewShowToolbarDesc": "开启后鼠标悬浮节点时,右侧出现工具栏图标,可自定义工具栏功能;通过设置 OnUpdateCallbackAsync 回调方法进行数据的更新;通过设置 ToolbarTemplate 定义工具栏模板,如未设置时使用内部默认更改节点名称模板", + "TreeViewShowToolbarIntro": "通过设置 ShowToolbar=\"true\" 显示工具栏", + "TreeViewShowToolbarTitle": "显示工具栏", + "TreeViewsTips1": "组件为泛型组件需要使用 TItem 指定绑定的数据模型,本例中模型为 TreeFoo 需要设置", + "TreeViewsTips10": "第二步:设置 Items 获得组件数据源 注意 数据源类型为 IEnumerable<TreeViewItem<TItem>>", + "TreeViewsTips11": "第三步:设置 OnExpandNodeAsync 回调委托响应节点展开获取子项数据源集合", + "TreeViewsTips12": "第四步:设置 ModelEqualityComparer 提供组件识别模型比较委托方法,注意 本设置为可选项 通过上面讲解的回落机制进行降级搜索", + "TreeViewsTips2": "设置 TreeViewItemIsExpand 参数控制当前子节点是否展开", + "TreeViewsTips3": "点击子项展开小箭头时,通过 OnExpandNodeAsync 回调委托方法获取子项数据集合", + "TreeViewsTips4": "保持节点状态回落机制,ModelEqualityComparer CustomKeyAttribute IEqualityComparer<TItem> Equals 重载方法", + "TreeViewsTips5": "组件将会保持 展开 收缩 选中 状态", + "TreeViewsTips6": "通过 TreeViewItem<TItem>.IsExpand 设置节点是否 展开 状态", + "TreeViewsTips7": "通过 TreeViewItem<TItem>.IsActive 设置节点是否 选中 状态", + "TreeViewsTips8": "通过 TreeViewItem<TItem>.Checked 设置节点是否 复选/单选 状态", + "TreeViewsTips9": "第一步:设置 TItem 泛型模型", + "TreeViewsTipsOnBeforeTreeItemClick": "通过设置 OnBeforeTreeItemClick 回调方法可以阻止点击节点动作,返回 false 时取消点击动作", + "TreeViewsTitle": "Tree 树形控件", + "TreeViewsWhetherToExpandWhenDisable": "禁用时候是否可以展开或折叠子节点", + "TreeViewTreeClickExpandDescription": "通过设置 TreeViewItem 对象的 ClickToggleNode 属性,来控制此节点是否通过点击来实现展开收缩操作", + "TreeViewTreeClickExpandIntro": "通过设置 ClickToggleNode 来控制点击节点时是否进行展开收缩操作", + "TreeViewTreeClickExpandTitle": "点击节点展开收缩功能", + "TreeViewTreeCustomNodeIntro": "通过设置 TreeViewItem Template 来实现自己的节点模板", + "TreeViewTreeCustomNodeTitle": "自定义节点", + "TreeViewTreeDisableDescription": "通过设置数据源 TreeViewItem 对象的 Disabled 属性,来控制此节点是否可以进行勾选动作,设置为 false 时不影响节点展开/收缩功能", + "TreeViewTreeDisableIntro": "可将 Tree 的某些节点设置为禁用状态", + "TreeViewTreeDisableTitle": "禁用状态", + "TreeViewTreeDisplayIconDescription": "通过设置 TreeViewItem 对象的 ShowIcon 属性,来控制此节点是否显示图标", + "TreeViewTreeDisplayIconIntro": "通过设置 ShowIcon 来控制组件是否显示图标", + "TreeViewTreeDisplayIconTitle": "显示图标", + "TreeViewTreeLazyLoadingDescription": "通过设置节点 HasChildNode 控制是否显示节点小箭头图片 。通过Tree的 OnExpandNodeAsync 委托添加节点", + "TreeViewTreeLazyLoadingIntro": "展开节点时动态添加子节点", + "TreeViewTreeLazyLoadingTitle": "懒加载", + "TreeViewTreeNodeColorIntro": "通过设置 TreeViewItem CssClass 来实现自己的节点样式", + "TreeViewTreeNodeColorTitle": "节点颜色", + "TreeViewTreeValidationFormDescription": "通过设置 ShowCheckbox 属性显示 Checkbox 内置到验证组件 ValidateForm 中不显示 DisplayName", + "TreeViewTreeValidationFormIntro": "Tree 组件内部可开启 Checkbox 内置到验证表单时会显示 DisplayName 此功能在树状组件内需要禁止", + "TreeViewTreeValidationFormTitle": "Tree 组件内置到验证表单中", + "TreeViewVirtualizeDescription": "组件内部使用 Virtualize 来实现虚拟滚动逻辑,对浏览器压力会减少很多;但是如果树状结构数据比较多,比如 全选 等操作必须对所有数据进行标记,导致内存中确实有大数据存在,目前还没有解决这个问题,目前此组件由于大数据对 CPU 压力还是比较大的", + "TreeViewVirtualizeIntro": "通过设置 IsVirtualize=\"true\" 开启虚拟滚动,支持大数据", + "TreeViewVirtualizeTitle": "虚拟滚动" }, - "BootstrapBlazor.Server.Data.AttributeItem": { - "Name": "参数", - "Description": "说明", - "Type": "类型", - "ValueList": "可选值", - "DefaultValue": "默认值" + "BootstrapBlazor.Server.Components.Samples.Tutorials.BarCodeGenerator": { + "EmailDesc": "使用 iPhone 手机相机或者扫描二维码功能扫描下方二维码后,打开 Email 应用发送邮件", + "Preview": "预览", + "SelectType": "选择一个类型", + "TextDesc": "使用 iPhone 手机相机或者扫描二维码功能扫描下方二维码后,打开 Safari 浏览器使用默认搜索引擎搜索当前文本", + "UrlDesc": "使用 iPhone 手机相机或者扫描二维码功能扫描下方二维码后,打开 Safari 浏览器并且打开当前地址", + "WiFiDesc": "使用 iPhone 手机相机或者扫描二维码功能扫描下方二维码后,自动加入 WiFi 网络" }, - "BootstrapBlazor.Server.Data.EventItem": { - "Name": "参数", - "Description": "说明", - "Type": "类型" + "BootstrapBlazor.Server.Components.Samples.Tutorials.OnlineSheet": { + "ToastOnReadyContent": "4 秒后表格更新其他写作人员更改内容", + "ToastOnReadyTitle": "在线表格协作通知" }, - "BootstrapBlazor.Server.Components.Pages.CacheList": { - "CacheListTitle": "缓存管理", - "CacheListIntro": "通过 ICacheManager 接口方法管理组件库内部缓存", - "CacheListKey": "键", - "CacheListValue": "值", - "CacheListExpiration": "到期时间", - "CacheListAction": "操作", - "CacheListRefresh": "刷新", - "CacheListDelete": "删除", - "CacheListDeleteAll": "清除全部", - "CacheListCount": "共 {0} 个键值" + "BootstrapBlazor.Server.Components.Samples.Tutorials.Translation.Translator": { + "File": "文件", + "Hide": "隐藏", + "Language": "语言", + "Load": "加载", + "LoadContent": "所有翻译项已读取成功", + "LoadTitle": "读取", + "Operation": "操作", + "Save": "保存", + "SaveContent": "所有翻译项已保存成功", + "SaveTitle": "保存", + "Show": "显示", + "ToolboxCardTitle": "工具栏", + "Translate": "机翻" }, "BootstrapBlazor.Server.Components.Samples.Typeds": { - "TypedTitle": "Typed 打字机效果", - "TypedIntro": "输入任意字符串,它会按照你设置的速度输入,输入的内容会退格,然后根据你设置的字符串数量开始一个新句子。", - "NormalTitle": "基础用法", "NormalIntro": "通过设置 Text 参数设置要显示的文本", + "NormalTitle": "基础用法", + "TypedIntro": "输入任意字符串,它会按照你设置的速度输入,输入的内容会退格,然后根据你设置的字符串数量开始一个新句子。", + "TypedOptionsIntro": "通过设置 TypedOptions 参数的属性自定义打字速度、延时等设定", "TypedOptionsTitle": "TypedOptions", - "TypedOptionsIntro": "通过设置 TypedOptions 参数的属性自定义打字速度、延时等设定" - }, - "BootstrapBlazor.Server.Components.Samples.Html2Images": { - "Html2ImageTitle": "Html2Image 网页元素转成图片服务", - "Html2ImageIntro": "将网页中任意区域内容转化成图片服务", - "Html2ImageElementTitle": "ToPng", - "Html2ImageElementIntro": "通过调用 GetDataAsync 方法获得 base64-encoded 图片", - "Html2ImageButtonText": "Image", - "Html2ImageDesc": "由于底层使用的是 html-to-image 实际使用过程中遇到问题请参考项目 Issue" + "TypedTitle": "Typed 打字机效果" }, "BootstrapBlazor.Server.Components.Samples.UniverSheets": { - "UniverSheetTitle": "UniverSheet 电子表格组件", - "UniverSheetIntro": "封装开源办公套件 ​Univer​ 的核心电子表格组件,提供高性能、可扩展的在线表格解决方案", - "NormalTitle": "基础用法", - "NormalIntro": "通过调用实例方法 PushDataAsync 推送数据到电子表格", "NormalDesc1": "点击 推送数据 按钮主动将数据推送给表格,点击 保存数据 按钮获得表格数据序列化的数据", "NormalDesc2": "点击 推送数据 按钮主动将数据推送给表格,点击 工具栏 第一个小按钮主动从服务器端获取数据", - "NormalDescRibbonType": "通过参数 RibbonType 设置工具栏样式", "NormalDescDarkMode": "通过参数 IsDarkMode 控制组件是否使用暗黑模式", + "NormalDescRibbonType": "通过参数 RibbonType 设置工具栏样式", + "NormalIntro": "通过调用实例方法 PushDataAsync 推送数据到电子表格", + "NormalTitle": "基础用法", + "PluginIntro": "通过设置 Plugins 参数设置自己的插件", + "PluginTitle": "自定义插件", "PushButtonText": "推送数据", "SaveButtonText": "保存数据", - "ToastOnReadyTitle": "组件通知", "ToastOnReadyContent": "表格组件已就绪,可进行后续数据推送等操作", - "PluginTitle": "自定义插件", - "PluginIntro": "通过设置 Plugins 参数设置自己的插件" + "ToastOnReadyTitle": "组件通知", + "UniverSheetIntro": "封装开源办公套件 ​Univer​ 的核心电子表格组件,提供高性能、可扩展的在线表格解决方案", + "UniverSheetTitle": "UniverSheet 电子表格组件" + }, + "BootstrapBlazor.Server.Components.Samples.UploadAvatars": { + "AvatarUploadAcceptIntro": "组件提供了 Accept 属性用于设置上传文件过滤功能,本例中圆形头像框接受 GIF 和 JPEG 两种图像,设置 Accept='image/gif, image/jpeg',如果不限制图像的格式,可以写为:Accept='image/*',该属性并不安全还是应该是使用 服务器端验证 进行文件格式验证", + "AvatarUploadAcceptTitle": "Accept", + "AvatarUploadButtonText": "提交", + "AvatarUploadIntro": "通过设置 IsMultiple 控制是否允许多文件上传,通过设置 IsCircle 控制是否为圆角,通过设置 BorderRadius 控制圆角曲率。组件通过设置 OnChange 回调函数处理用户上传头像,如果未提供此回调时,将使用内置方法尝试读取上传文件生成 base64 格式预览数据", + "AvatarUploadTitle": "基本用法", + "AvatarUploadValidateIntro": "放置到 ValidateForm 内集成自动数据验证功能,详情可以参考 ValidateForm 组件,本例中上传文件扩展名仅限制为 .png, .jpg, .jpeg,上传其他格式时会有错误提示,文件大小限制为 5M 超过时也会有错误提示显示", + "AvatarUploadValidateTitle": "ValidateForm", + "UploadsNote": "如果上传文件过大,可能会触发 signalR 通讯中断问题,请自行调整 HubOptions 配置即可。", + "UploadsSubTitle": "通过点击上传文件,通常用作上传预览一个或者一组类似头像的图片", + "UploadsTitle": "AvatarUpload 头像上传组件", + "UploadsValidateFormInValidContent": "数据不合规,请更正后再提交表单", + "UploadsValidateFormTitle": "表单应用", + "UploadsValidateFormValidContent": "数据合规,保存成功" + }, + "BootstrapBlazor.Server.Components.Samples.UploadButtons": { + "ButtonUploadIntro": "通过设置 ShowUploadFileList=\"true\" 可以显示上传文件列表,设置 ShowDeleteButton=\"true\" 显示 删除 按钮", + "ButtonUploadTitle": "基础用法", + "UploadsNote": "如果上传文件过大,可能会触发 signalR 通讯中断问题,请自行调整 HubOptions 配置即可。", + "UploadsSubTitle": "通过点击按钮弹出选择文件框选择一个或者多个文件,通常用作上传文件附件", + "UploadsTitle": "ButtonUpload 按钮上传组件" + }, + "BootstrapBlazor.Server.Components.Samples.UploadCards": { + "ButtonUploadIntro": "使用 DefaultFileList 设置已上传的内容", + "ButtonUploadTitle": "基础用法", + "UploadActionButtonTemplateIntro": "通过设置 ActionButtonTemplate 参数,来自定义卡片上的操作按钮(在默认按钮后面追加),通过设置 BeforeActionButtonTemplate 参数,来自定义卡片上的操作按钮(在默认按钮前面追加)", + "UploadActionButtonTemplateTitle": "自定义操作按钮", + "UploadBase64Intro": "通过设置 UploadFile 实例的 PrevUrl 参数值使用 data:image/xxx;base64,XXXXX 格式图片内容字符串作为预览文件路径", + "UploadBase64Title": "Base64 格式文件", + "UploadFileIconIntro": "不同文件格式显示的图标不同", + "UploadFileIconTemplateIntro": "通过设置 IconTemplate 参数,使用 FileIcon 组件可以对文件图标进行进一步自定义 [FileIcon 示例]", + "UploadFileIconTemplateTitle": "自定义文件图标", + "UploadFileIconTitle": "文件图标", + "UploadsFileError": "文件大于 5M 请重新选择文件上传", + "UploadsFileTitle": "文件上传", + "UploadsNote": "如果上传文件过大,可能会触发 signalR 通讯中断问题,请自行调整 HubOptions 配置即可。", + "UploadsSaveFileError": "文件保存失败", + "UploadsSubTitle": "通过点击按钮弹出选择文件框选择一个或者多个文件,呈现为卡片式带预览模式", + "UploadsSuccess": "文件保存成功", + "UploadsTitle": "CardUpload 卡片上传组件", + "UploadsWasmError": "wasm 模式请调用 api 进行保存" + }, + "BootstrapBlazor.Server.Components.Samples.UploadDrops": { + "DropUploadFooterText": "文件大小不超过 5Mb", + "DropUploadIntro": "通过 OnChange 回调处理所有上传文件", + "DropUploadTitle": "基础用法", + "UploadsNote": "如果上传文件过大,可能会触发 signalR 通讯中断问题,请自行调整 HubOptions 配置即可。", + "UploadsSubTitle": "通过点击组件或者拖拽或者粘贴上传一个或者多个文件", + "UploadsTitle": "DropUpload 拖拽上传组件" + }, + "BootstrapBlazor.Server.Components.Samples.UploadInputs": { + "UploadFormSettingsButtonText": "提交", + "UploadFormSettingsIntro": "放置到 ValidateForm 内集成自动数据验证功能,详情可以参考 ValidateForm 组件", + "UploadFormSettingsLi1": "使用 ValidateForm 表单组件,通过设置模型属性的 FileValidation 标签设置自定义验证,支持文件 扩展名 大小 验证,本例中设置扩展名为 .png .jpg .jpeg,文件大小限制为 5M", + "UploadFormSettingsLi2": "选择文件后并未开始上传文件,点击 提交 按钮数据验证合法后,再 OnSubmit 回调委托中进行上传文件操作,注意 Picture 属性类型为 IBrowserFile", + "UploadFormSettingsTitle": "表单应用", + "UploadNormalIntro": "可以通过设置 ShowDeleteButton=\"true\" 显示 删除 按钮", + "UploadNormalLabelPhoto": "选择一个或者多个文件", + "UploadNormalTitle": "基础用法", + "UploadsNote": "如果上传文件过大,可能会触发 signalR 通讯中断问题,请自行调整 HubOptions 配置即可。", + "UploadsSubTitle": "通过点击浏览按钮弹出选择文件框选择一个或者多个文件进行上传", + "UploadsTitle": "InputUpload 上传组件" + }, + "BootstrapBlazor.Server.Components.Samples.Uploads.Person": { + "Name": "姓名", + "Name.Required": "{0}不能为空", + "Picture": "上传文件", + "Picture.Required": "上传文件不能为空" + }, + "BootstrapBlazor.Server.Components.Samples.ValidateForms": { + "ChangeButtonText": "更改组件", + "CustomValidationFormComment1": "增加邮箱验证规则", + "CustomValidationFormComment2": "Razor 文件中使用", + "CustomValidationFormP1": "地址文本框增加了 邮件地址 验证规则,点击提交时验证", + "DatabaseExistLog": "数据库中已存在", + "DisableAutoSubmitFormByEnterDesc": "form 表单是 web 一个重要的元素,如果表单内有 input 元素当此元素获得焦点时,按下 Enter 会自动提交表单,这是表单元素的特性,并不是我们组件代码逻辑,如果不需要这个功能时通过设置 DisableAutoSubmitFormByEnter=\"true\" 禁用此功能,此例中文本框内按回车不会 自动提交 并且进行数据合规性检查,需要点击 提交表单 按钮提交表单", + "LongDisplayDescription": "本例中通过设置 form-inline 样式内的 BootstrapInput 组件 ShowLabelTooltiptrue 使鼠标悬停在被裁剪的 label 时显示完整信息", + "LongDisplayText": "我是特别长的显示标签", + "OnInvalidSubmitCallBackLog": "OnInvalidSubmit 回调委托", + "OnInvalidSubmitLog": "OnInvalidSubmit 回调委托: 验证未通过", + "OnValidSubmitCallBackLog": "OnValidSubmit 回调委托", + "OnValidSubmitDoneLog": "OnValidSubmit 回调委托: Done!", + "OnValidSubmitLog": "OnValidSubmit 回调委托: 验证通过", + "OnValidSubmitStartingLog": "OnValidSubmit 回调委托: Starting ...", + "ResetButtonText": "重置组件", + "SetError": "设置验证失败方法", + "Validate": "表单认证方法", + "ValidateButtonText": "保存", + "ValidateFormComplexValidationDescription": "本示例中第二个绑定的是一个超级复杂类型 ComplexModel.Dummy.Dummy2.Name 清空值后,点击 提交表单 会对数据进行验证。第二个文本框验证合规后,通过调用 SetError 再次显示错误提示", + "ValidateFormComplexValidationIntro": "支持任意复杂类型的绑定与验证", + "ValidateFormComplexValidationPre": "ComplexForm.SetError('Dummy.Dummy2.Name','数据库中已存在');", + "ValidateFormComplexValidationTitle": "复杂类型支持", + "ValidateFormCustomDisplayErrorDescription": "应用场景

              客户端验证通过后进行数据库保存操作,如果出现其他问题,后仍然可以进行表单自定义错误提示,本例中数据验证合法后,点击 提交表单 按钮后,姓名字段会显示,数据库中已存在 这样的自定义提示信息

              ", + "ValidateFormCustomDisplayErrorIntro": "通过调用 SetError 方法设置自定义错误信息", + "ValidateFormCustomDisplayErrorTitle": "自定义显示错误信息", + "ValidateFormCustomValidationFormIntro": "通过设置 Rules 添加自定义验证规则", + "ValidateFormCustomValidationFormTitle": "自定义验证表单", + "ValidateFormDisableAutoSubmitFormByEnterIntro": "当焦点在表单内输入框时,按 Enter 默认是自动提交表单的,通过设置 DisableAutoSubmitFormByEnter=\"false\" 禁止自动提交", + "ValidateFormDisableAutoSubmitFormByEnterTitle": "禁用自动提交功能", + "ValidateFormDynamicFormDescription": "点击 更改组件 按钮后 地址 组件变更为 数量 组件,重置组件 按钮恢复,姓名 地址组件为必填项,数量 组件有默认值 0 所以可以通过数据检查", + "ValidateFormDynamicFormIntro": "通过代码更改表单内组件,验证表单仍然可以正确的进行验证", + "ValidateFormDynamicFormTitle": "动态调整表单内组件", + "ValidateFormInnerComponentInnerComponentDescription1": "示例说明", + "ValidateFormInnerComponentInnerComponentDescription2": "本例中通过设置 提交按钮 属性 IsAsync 来异步提交表单,点击提交后禁用自身,异步操作完毕后恢复", + "ValidateFormInnerComponentInnerComponentLabel": "支持表单验证的组件示例", + "ValidateFormInnerComponentInnerComponentLi1": "姓名为字符串类型", + "ValidateFormInnerComponentInnerComponentLi2": "年龄为整数类型", + "ValidateFormInnerComponentInnerComponentLi3": "生日为时间类型", + "ValidateFormInnerComponentInnerComponentLi4": "教育为枚举类型", + "ValidateFormInnerComponentInnerComponentLi5": "爱好为集合类型", + "ValidateFormInnerComponentIntro": "放置支持表单组件到 ValidateForm 中", + "ValidateFormInnerComponentTitle": "内置组件", + "ValidateFormInnerFormLabelDescription": "地址文本框增加了 邮件地址 验证规则", + "ValidateFormInnerFormLabelIntro": "通过样式统一设置全站或者特定表单内标签对齐方式", + "ValidateFormInnerFormLabelTitle": "表单内设置组件标签右对齐", + "ValidateFormIValidatableObjectDescription": "本示例使用 IValidatableObject 实现校验 联系电话1联系电话2 不能相同,以及 名称 不能为空,本例中并未设置 名称 为必填项,但是由于模型对 IValidatableObject 接口的实现中进行了校验,所以在提交数据时仍然触发 OnInvalidSubmit 回调委托", + "ValidateFormIValidatableObjectIntro": "IValidatableObject 接口提供了更加灵活的自定义校验,非常适合进行非常复杂的数据校验,例如多属性组合起来进行校验等场景。", + "ValidateFormIValidatableObjectTitle": "IValidatableObject 接口类型", + "ValidateFormIValidateCollectionDescription": "本示例使用 IValidateCollection 实现校验 联系电话1联系电话2 不能相同校验,更改任意单元格使电话号码相同时两个文本框均进行提示", + "ValidateFormIValidateCollectionIntro": "IValidateCollection 接口提供了更加灵活的自定义 联动 校验,非常适合进行非常复杂的数据校验,例如多属性组合起来进行校验等场景。", + "ValidateFormIValidateCollectionTitle": "IValidateCollection 接口类型", + "ValidateFormNormalBasicUsageDescription": "组件说明:", + "ValidateFormNormalBasicUsageDescription2": "注意事项:", + "ValidateFormNormalFormLabelWidth": "组件前置标签默认宽度为 120px 六个汉字,如需要更多汉字请在项目样式文件中更改样式变量 --bb-row-label-width 即可,或者设置表单显示标签在组件上方", + "ValidateFormNormalIntro": "放置到 ValidateForm 中的组件提交时自动进行数据合规检查", + "ValidateFormNormalLi1": "ValidateForm 组件支持异步设置 Model 值", + "ValidateFormNormalLi2": "表单事件为 OnValidSubmit OnInvalidSubmit", + "ValidateFormNormalLi3": "Model 参数为必填项不允许为空", + "ValidateFormNormalLi4": "表单内可以放置多个按钮,通过设置 ButtonType='ButtonType.Submit' 参数是否提交表单", + "ValidateFormNormalLi5": "客户端验证机制支持模型的 Required 标签,通过设置 ErrorMessage 参数设置提示信息,未设置时使用默认的英文提示信息", + "ValidateFormNormalLi6": "表单默认检查表单内绑定字段值是否合法,如需要检查模型所有字段时可设置 ValidateAllProperties 属性值为 true", + "ValidateFormNormalLi7": "通过设置提交按钮 Button 属性 IsAsync 值,设置异步提交表单", + "ValidateFormNormalLi8": "表单内组件通常用法都是使用双向绑定技术对 Model 的属性值进行双向绑定,当其值改变时会导致所在组件 StateHasChanged 方法被调用,即其所在组件或者页面进行刷新重新渲染", + "ValidateFormNormalLi9": "表单内组件控件的值修改后 OnFieldChanged 方法被调用", + "ValidateFormNormalTitle": "基础用法", + "ValidateFormsSubmitButtonText": "提交表单", + "ValidateFormsSubTitle": "可供数据合规检查的表单组件", + "ValidateFormsTitle": "ValidateForm 表单组件", + "ValidateFormValidateDescription": "按钮类型为普通按钮不会触发表单 submit 行为,为了提高性能,示例中使用 OnClickWithoutRender 方法减少一次 UI 渲染", + "ValidateFormValidateIntro": "通过代码中调用 ValidateForm 实例方法 Validate 触发表单认证", + "ValidateFormValidateTitle": "代码调用验证方法", + "ValidateFormValidatorAllFieldDescription": " 本例中未放置 Address,由于设置 ValidateAllProperties 参数值为 true,所以 Address 字段仍然被检查,即使表单内所有数据均合法后,提交数据时仍然触发 OnInvalidSubmit 回调委托", + "ValidateFormValidatorAllFieldIntro": "此组件默认检查表单内模型绑定字段值,如需要检查模型所有字段值时设置 ValidateAllProperties 值", + "ValidateFormValidatorAllFieldTitle": "验证所有字段值", + "ValidateMetadataTypeIntro": "模型通过 [MetadataType(typeof(MockModelMetadataType))] 指定元数据类型 MockModelMetadataType 进行模型验证,如果指定模型继承 IValidateCollection 接口时,调用其 Validate 方法进行数据合规性检查", + "ValidateMetadataTypeTitle": "MetadataType IValidateCollection" }, - "BootstrapBlazor.Server.Components.Samples.Tutorials.OnlineSheet": { - "ToastOnReadyTitle": "在线表格协作通知", - "ToastOnReadyContent": "4 秒后表格更新其他写作人员更改内容" + "BootstrapBlazor.Server.Components.Samples.ValidateForms.ComplexFoo": { + "Name": "姓名", + "Name.Required": "{0} 值是必填项" }, - "BootstrapBlazor.Server.Components.Samples.OtpInputs": { - "OtpInputsTitle": "OtpInput 密码框", - "OtpInputsDescription": "基于 OTP(One-Time Password‌) 仅限单次使用且具备时效性的安全验证密码框", - "OtpInputsTips": "OTP(One Time Password,简称OTP):这是一种安全措施,用于在每次登录或交易时生成一个唯一的密码,本组件配合 ITotpService IHotpService 使用大大提高安全性", - "OtpInputsNormalTitle": "基础用法", - "OtpInputsNormalIntro": "通过设置 Type 等参数控制密码类型或者长度", - "OtpInputsValidateFormTitle": "表单内使用", - "OtpInputsValidateFormIntro": "密码未提供值时,点击提交按钮,密码框显示为红色,并且提示不可为空" + "BootstrapBlazor.Server.Components.Samples.ValidateForms.Dummy2": { + "Name": "姓名", + "Name.Required": "Dummy2 {0} 值是必填项" }, - "BootstrapBlazor.Server.Components.Samples.OtpServices": { - "Title": "ITotpService 时间密码验证服务", - "SubTitle": "实现 TOTP RFC 6238 和 HOTP RFC 4226 认证器服务", + "BootstrapBlazor.Server.Components.Samples.Vditors": { + "BaseUsageIntro": "通过设置 Value 值设置组件显示的内容,通过 Options 参数设置组件配置信息", "BaseUsageTitle": "基本用法", - "BaseUsageIntro": "通过调用 ITotpService 服务实例方法 Compute 得到当前时间窗口内密码, 通过调用 Instance.GetRemainingSeconds 方法可以显示当前密码剩余有效时间,本例中通过进度条进行动态显示" - }, - "BootstrapBlazor.Server.Components.Samples.Tutorials.BarCodeGenerator": { - "SelectType": "选择一个类型", - "Preview": "预览", - "TextDesc": "使用 iPhone 手机相机或者扫描二维码功能扫描下方二维码后,打开 Safari 浏览器使用默认搜索引擎搜索当前文本", - "UrlDesc": "使用 iPhone 手机相机或者扫描二维码功能扫描下方二维码后,打开 Safari 浏览器并且打开当前地址", - "WiFiDesc": "使用 iPhone 手机相机或者扫描二维码功能扫描下方二维码后,自动加入 WiFi 网络", - "EmailDesc": "使用 iPhone 手机相机或者扫描二维码功能扫描下方二维码后,打开 Email 应用发送邮件" + "VditorSubTitle": "Vditor 是一款浏览器端的 Markdown 编辑器,支持所见即所得、即时渲染(类似 Typora)和分屏预览模式", + "VditorTitle": "Vditor Markdown 富文本编辑框" }, "BootstrapBlazor.Server.Components.Samples.VideoDevices": { - "VideoDeviceTitle": "IVideoDevice 视频设备服务", - "VideoDeviceIntro": "通过此服务获得视频设备操作能力", - "BaseUsageTitle": "基本用法", - "BaseUsageIntro": "通过调用不同的 api 方法进行不同操作", - "VideoDeviceRequestText": "枚举设备", - "VideoDeviceOpenText": "打开设备", - "VideoDeviceCloseText": "关闭设备", - "VideoDeviceCaptureText": "截图", - "VideoDeviceDownloadText": "下载" - }, - "BootstrapBlazor.Server.Components.Samples.AudioDevices": { - "AudioDeviceTitle": "IAudioDevice 音频设备服务", - "AudioDeviceIntro": "通过此服务获得音频设备操作能力", - "BaseUsageTitle": "基本用法", "BaseUsageIntro": "通过调用不同的 api 方法进行不同操作", - "AudioDeviceRequestText": "枚举设备", - "AudioDeviceOpenText": "录音", - "AudioDeviceCloseText": "停止", - "AudioDevicePauseText": "暂停", - "AudioDeviceResumeText": "恢复", - "AudioDeviceDownloadText": "下载" - }, - "BootstrapBlazor.Server.Components.Samples.Vditors": { - "VditorTitle": "Vditor Markdown 富文本编辑框", - "VditorSubTitle": "Vditor 是一款浏览器端的 Markdown 编辑器,支持所见即所得、即时渲染(类似 Typora)和分屏预览模式", "BaseUsageTitle": "基本用法", - "BaseUsageIntro": "通过设置 Value 值设置组件显示的内容,通过 Options 参数设置组件配置信息" - }, - "BootstrapBlazor.Server.Components.Samples.OfficeViewers": { - "OfficeViewerTitle": "Office 文档预览器", - "OfficeViewerDescription": "本组件通过使用微软在线文档预览功能预览 Office 文档内容", - "OfficeViewerNormalTitle": "基本用法", - "OfficeViewerNormalIntro": "通过设置 Url 值设置预览文档地址", - "OfficeViewerToastSuccessfulContent": "Office 文档加载成功" - }, - "BootstrapBlazor.Server.Components.Samples.Sockets.ManualReceives": { - "ReceivesTitle": "手动接收示例", - "ReceivesDescription": "通过调用 ReceiveAsync 接收数据并且显示", - "NormalTitle": "基本用法", - "NormalIntro": "连接后通过 ReceiveAsync 回调方法接收服务端发送来的数据,需要自行处理粘包分包的数据问题" - }, - "BootstrapBlazor.Server.Components.Samples.Sockets.AutoReceives": { - "ReceivesTitle": "自动接收示例", - "ReceivesDescription": "通过 ReceiveCallback 接收数据并且显示", - "NormalTitle": "基本用法", - "NormalIntro": "连接后通过 ReceivedCallBack 回调方法自动接收服务端发送来的时间戳数据" - }, - "BootstrapBlazor.Server.Components.Samples.Sockets.Adapters": { - "AdaptersTitle": "Socket 数据适配器示例", - "AdaptersDescription": "通过数据适配器接收数据并且显示", - "NormalTitle": "基本用法", - "NormalIntro": "连接后通过 DataPackageAdapter 数据适配器的 ReceivedCallBack 回调方法接收服务端发送来的时间戳数据" - }, - "BootstrapBlazor.Server.Components.Samples.Sockets.AutoReconnects": { - "AutoReconnectsTitle": "Socket 自动重连示例", - "AutoReconnectsDescription": "链路断开后自动重连示例", - "NormalTitle": "基本用法", - "NormalIntro": "通过设置 IsAutoReconnect 开启自动重连机制" + "VideoDeviceCaptureText": "截图", + "VideoDeviceCloseText": "关闭设备", + "VideoDeviceDownloadText": "下载", + "VideoDeviceIntro": "通过此服务获得视频设备操作能力", + "VideoDeviceOpenText": "打开设备", + "VideoDeviceRequestText": "枚举设备", + "VideoDeviceTitle": "IVideoDevice 视频设备服务" }, - "BootstrapBlazor.Server.Components.Samples.Sockets.DataEntities": { - "DataEntityTitle": "Socket 数据转化实体类", - "DataEntityDescription": "接收到通讯数据后自动转成业务需要的实体类", - "NormalTitle": "基本用法", - "NormalIntro": "通过 DataPropertyConverterAttribute 标签开启数据自动转换功能", - "ConfigTitle": "数据实体类映射配置", - "ConfigIntro": "使用 ConfigureDataConverters 方法对实体类进行映射配置将接收到的数据自动转化" + "BootstrapBlazor.Server.Components.Samples.VideoPlayers": { + "MineType": "MineType 类型", + "VideoPlayersChangeURLIntro": "使用 Reload 方法切换播放资源", + "VideoPlayersChangeURLTitle": "切换播放资源", + "VideoPlayersNormalTitle": "基础用法", + "VideoPlayersTips": "默认启用静音模式,只有这样自动播放功能才符合现代浏览器标准.", + "VideoPlayersTitle": "VideoPlayer 视频播放器" }, - "BootstrapBlazor.Server.Components.Samples.NetworkMonitors": { - "NetworkMonitorTitle": "NetworkMonitor 网络状态", - "NetworkMonitorDescription": "使用浏览器原生 api navigator.connection 实时显示当前网络状态", - "NormalTitle": "基本用法", - "NormalIntro": "使用组件 NetworkMonitorIndicator 当网络状态变化时,显示不同颜色的指示灯,鼠标移动到上面时显示网络状态明细", - "IndicatorLi1": "绿色:网络非常好 (4G)", - "IndicatorLi2": "黄色:网络一般 (3G)", - "IndicatorLi3": "红色:网络差 (2G)", - "IndicatorLi4": "灰色:离线状态" + "BootstrapBlazor.Server.Components.Samples.Watermarks": { + "WatermarkDescription": "

              全局增加水印实现方法

              可以在模板页 MainLayout 中加水印组件并设置 IsPage=\"true\" 即可

              ", + "WatermarkIntro": "在页面上添加文本或图片等水印信息", + "WatermarkNormalIntro": "使用 Text 属性设置一个字符串指定水印内容", + "WatermarkNormalTitle": "基础用法", + "WatermarkTitle": "Watermark 水印组件" }, - "BootstrapBlazor.Server.Components.Samples.Toolbars": { - "ToolbarsTitle": "Toolbar 工具栏", - "ToolbarSubTitle": "是按钮或其他应用程序特定工具的容器", - "NormalTitle": "基本用法", - "NormalIntro": "" + "BootstrapBlazor.Server.Components.Samples.WebSerials": { + "BaudRateText": "波特率", + "BufferSizeText": "缓冲区", + "ClosePortText": "关闭", + "CRLFText": "末尾加回车换行", + "DataBitsText": "数据位", + "FlowControlTypeText": "流控制", + "GetInfoButtonText": "USB 信息", + "GetSignalsButtonText": "串口参数", + "HEXText": "HEX 发送", + "LoopIntervalText": "发送间隔(ms)", + "LoopSendText": "循环发送", + "NotSupportSerialContent": "当前浏览器不支持串口操作,请更换 Edge 或者 Chrome 浏览器", + "NotSupportSerialTitle": "申请串口权限", + "OpenPortSerialContent": "打开串口失败", + "OpenPortSerialTitle": "打开串口操作", + "OpenPortText": "打开", + "ParityTypeText": "校验位", + "ReadDataText": "接收数据", + "RequestPortText": "选择", + "StopBitsText": "停止位", + "WebSerialDescription": "允许网站与连接到用户计算机的外围设备进行通信。它提供了连接到操作系统需要通过串行 API 进行通信的设备的能力", + "WebSerialIntro": "串口是一种具有广泛使用的通信协议,它可以实现计算机之间的数据传输", + "WebSerialNormalIntro": "通过调用 ISerialService 服务,对串口设备进行连接、打开、关闭、读写操作", + "WebSerialNormalTitle": "基本用法", + "WebSerialTipsLi1": "该功能仅在部分或所有支持浏览器的安全上下文(HTTPS)中可用", + "WebSerialTipsLi2": "这是一项实验性技术,在生产中使用之前请仔细,检查 浏览器兼容性表", + "WebSerialTipsTitle": "注意:ISerialPort 接口实例继承 IAsyncDisposable 路由切换时需要对其进行资源释放,调用其 DisposeAsync 即可", + "WebSerialTitle": "WebSerial 串口读写", + "WriteButtonText": "写入", + "WriteDataText": "发送数据" }, - "BootstrapBlazor.Server.Components.Samples.OpcDa": { - "OpcDaTitle": "OpcDa Server 服务", - "OpcDaDescription": "连接 OpcDa Server 获得 PLC 实时数据", - "OpcDaNormalTitle": "基本用法", - "OpcDaNormalIntro": "通过注入服务 IOpcDaServer 获得实例,调用 Read 方法获得 PLC 位号值" + "BootstrapBlazor.Server.Components.Samples.WinBoxes": { + "WinBoxDescription": "模拟 Windows 窗口风格的组件", + "WinBoxNormalIntro": "通过设置 WinBoxOption 参数值,创建并且弹出窗口", + "WinBoxNormalTitle": "基础用法", + "WinBoxTitle": "WinBox 窗口组件" }, - "BootstrapBlazor.Server.Components.Samples.Navbars": { - "NavbarTitle": "Navbar 导航栏", - "NavbarDescription": "是网站开发中用于定义顶部导航区域或主页快速启动区域的结构化组件", - "NormalTitle": "基本用法", - "NormalIntro": "通过设置 NavbarBrand NavbarToggleButton NavbarCollapse NavbarGroup NavbarItem 对其内部元素布局" + "BootstrapBlazor.Server.Components.Samples.ZipArchives": { + "ZipArchiveDirectoryText": "归档文件夹", + "ZipArchiveExtractText": "解压缩到指定文件夹", + "ZipArchiveFileText": "归档文件", + "ZipArchiveInjectText": "注入服务", + "ZipArchivesSubTitle": "组件内置服务,可将文件或者文件夹压缩为指定名称的归档文件", + "ZipArchivesTitle": "IZipArchive 压缩归档服务" }, - "BootstrapBlazor.Server.Components.Samples.TaskBoard": { - "TaskBoardTitle": "Task DashBoard 任务管理器", - "TaskBoardIntro": "后台任务看板", - "TaskBoardNormalTitle": "基本用法", - "TaskBoardNormalIntro": "本组件提供后台任务调度触发器详细信息" + "BootstrapBlazor.Server.Data.AttributeItem": { + "DefaultValue": "默认值", + "Description": "说明", + "Name": "参数", + "Type": "类型", + "ValueList": "可选值" }, - "BootstrapBlazor.Server.Components.Samples.Dom2Images": { - "Dom2ImageTitle": "Dom2Image 元素转图片", - "Dom2ImageIntro": "将 Html 片段导出为图片", - "Dom2ImageNormalTitle": "基本用法", - "Dom2ImageNormalIntro": "通过指定 Selector 将此节点转成图片", - "Dom2ImageDesc": "由于底层使用的是 SnapDOM 实际使用过程中遇到问题请参考项目 Issue", - "Dom2ImageButtonText": "转换", - "Dom2ImageDownloadText": "下载", - "Dom2ImageFullText": "长截图" + "BootstrapBlazor.Server.Data.CustomValidataModel": { + "CanNotBeTheSame": "联系电话1 和 联系电话2 不能相同", + "Name": "名称", + "Telephone1": "联系电话1", + "Telephone2": "联系电话2" }, - "BootstrapBlazor.Server.Components.Samples.SelectRegions": { - "RegionTitle": "SelectRegion 行政区域选择器", - "RegionDescription": "提供 4 级行政区划选择器", - "RegionNormalTitle": "基本用法", - "RegionNormalIntro": "使用分组切换显示行政区域的选择模式" + "BootstrapBlazor.Server.Data.CustomValidateCollectionModel": { + "Telephone1": "联系电话1", + "Telephone2": "联系电话2" }, - "BootstrapBlazor.Server.Components.Samples.SelectCities": { - "CityTitle": "SelectCity 城市选择器", - "CityDescription": "提供以省分类的城市选择器", - "CityNormalTitle": "基本用法", - "CityNormalIntro": "通过下拉框的形式选择城市" + "BootstrapBlazor.Server.Data.EnumEducation": { + "Middle": "中学", + "PlaceHolder": "请选择 ...", + "Primary": "小学" }, - "BootstrapBlazor.Server.Components.Samples.SelectProvinces": { - "ProvinceTitle": "SelectProvince 省选择器", - "ProvinceDescription": "提供下拉框选择省/直辖市/特别行政区", - "ProvinceNormalTitle": "基本用法", - "ProvinceNormalIntro": "通过下拉框的形式选择省/直辖市/特别行政区", - "ProvinceMultipleTitle": "多选", - "ProvinceMultipleIntro": "通过设置 IsMultiple 开启多选模式" + "BootstrapBlazor.Server.Data.EventItem": { + "Description": "说明", + "Name": "参数", + "Type": "类型" }, - "BootstrapBlazor.Server.Components.Samples.HikVisions": { - "Title": "HikVision 海康摄像头", - "SubTitle": "", - "BasicUsageTitle": "基本用法", - "BasicUsageIntro": "通过调用 HikVision 组件实例方法进行操作" + "BootstrapBlazor.Server.Data.Foo": { + "Address": "地址", + "Address.PlaceHolder": "不可为空", + "Address.Required": "{0}是必填项", + "Complete": "是/否", + "Count": "数量", + "Count.PlaceHolder": "不可为空", + "DateTime": "日期", + "Education": "学历", + "Education.Required": "{0}是必选项", + "False": "未通过", + "Foo.Address": "上海市普陀区金沙江路 {0} 弄", + "Foo.Address2": "地球、中国、上海市普陀区金沙江路 {0} 弄 这里是超长单元格示例", + "Foo.BindValue": "绑定值", + "Foo.Name": "张三 {0}", + "Hobbies": "游泳,登山,打球,下棋", + "Hobby": "爱好", + "Hobby.Required": "请选择一种{0}", + "Name": "姓名", + "Name.PlaceHolder": "不可为空", + "Name.Required": "{0}是必填项", + "NullItemText": "未设置", + "ReadonlyColumn": "只读列", + "True": "通过" } } diff --git a/src/BootstrapBlazor.Server/Services/ComponentAttributeCacheService.cs b/src/BootstrapBlazor.Server/Services/ComponentAttributeCacheService.cs index b7cb7406b85..764a73ed343 100644 --- a/src/BootstrapBlazor.Server/Services/ComponentAttributeCacheService.cs +++ b/src/BootstrapBlazor.Server/Services/ComponentAttributeCacheService.cs @@ -35,8 +35,15 @@ public static List GetAttributes(Type componentType) private static List GetAttributeCore(Type type) { var attributes = new List(); - var properties = type.GetProperties(BindingFlags.Public | BindingFlags.Instance) - .Where(p => p.GetCustomAttribute() != null); + var properties = type.GetProperties(BindingFlags.Public | BindingFlags.Instance); + + // 检查是否为 IComponent 实现类 + if (typeof(IComponent).IsAssignableFrom(type)) + { + properties = properties + .Where(p => p.GetCustomAttribute() != null) + .ToArray(); + } var xmlDoc = GetXmlDocumentation(type.Assembly); foreach (var property in properties) diff --git a/src/BootstrapBlazor/Components/CountUp/CountUpOption.cs b/src/BootstrapBlazor/Components/CountUp/CountUpOption.cs index 81803dcca8a..39365a1c50e 100644 --- a/src/BootstrapBlazor/Components/CountUp/CountUpOption.cs +++ b/src/BootstrapBlazor/Components/CountUp/CountUpOption.cs @@ -15,98 +15,114 @@ public class CountUpOption { /// /// 开始计数值 默认 0 - /// Start value, default is 0 + /// Start value, Default is 0 + /// 10.2.2 /// [JsonPropertyName("startVal")] public decimal StartValue { get; set; } /// /// 小数位数 默认 0 - /// Decimal places, default is 0 + /// Decimal places, Default is 0 + /// 10.2.2 /// public int DecimalPlaces { get; set; } /// /// 动画时长 默认 2.0 单位秒 - /// Animation duration, default is 2.0 seconds + /// Animation duration, Default is 2.0 seconds + /// 10.2.2 /// public float Duration { get; set; } = 2.0f; /// /// 是否使用分隔符 默认 false - /// Whether to use separator, default is false + /// Whether to use separator, Default is false + /// 10.2.2 /// public bool UseIndianSeparators { get; set; } /// /// 是否使用过渡动画 默认 true - /// Whether to use easing animation, default is true + /// Whether to use easing animation, Default is true + /// 10.2.2 /// public bool UseEasing { get; set; } = true; /// /// 是否分组 默认 true - /// Whether to use grouping, default is true + /// Whether to use grouping, Default is true + /// 10.2.2 /// public bool UseGrouping { get; set; } = true; /// /// 分隔符 默认 逗号 , - /// Separator, default is comma , + /// Separator, Default is comma , + /// 10.2.2 /// public string Separator { get; set; } = ","; /// /// 小数点符号 默认 点 . - /// Decimal point symbol, default is dot . + /// Decimal point symbol, Default is dot . + /// 10.2.2 /// public string Decimal { get; set; } = "."; /// /// 前缀文本 默认 string.Empty 未设置 - /// Prefix text, default is string.Empty (not set) + /// Prefix text, Default is + /// 10.2.2 /// public string Prefix { get; set; } = string.Empty; /// /// 后缀文本 默认 string.Empty 未设置 - /// Suffix text, default is string.Empty (not set) + /// Suffix text, Default is + /// 10.2.2 /// public string Suffix { get; set; } = string.Empty; /// /// 动画阈值 默认 999 - /// Animation threshold, default is 999 + /// Animation threshold, Default is 999 + /// 10.2.2 /// public int SmartEasingThreshold { get; set; } = 999; /// /// 动画总量 默认 333 - /// Animation amount, default is 333 + /// Animation amount, Default is 333 + /// 10.2.2 /// public int SmartEasingAmount { get; set; } = 333; /// /// 是否启用滚动监听 默认 false - /// Whether to enable scroll spy, default is false + /// Whether to enable scroll spy, Default is false + /// 10.2.2 /// public bool EnableScrollSpy { get; set; } /// /// 滚动延时 默认 200 毫秒 - /// Scroll spy delay, default is 200 ms + /// Scroll spy delay, Default is 200 ms + /// 10.2.2 /// public int ScrollSpyDelay { get; set; } = 200; /// /// 滚动监听一次 默认 false - /// Scroll spy once, default is false + /// Scroll spy once, Default is false + /// 10.2.2 /// public bool ScrollSpyOnce { get; set; } /// - /// numeral glyph substitution default null - /// numeral glyph substitution default null + /// 数字字形替换数组 默认值为空 + /// The numeric glyph replacement array. Default is null + /// 10.2.2 /// public char[]? Numerals { get; set; } } diff --git a/src/BootstrapBlazor/Components/ErrorLogger/ErrorLogger.cs b/src/BootstrapBlazor/Components/ErrorLogger/ErrorLogger.cs index 76b5901bbfe..b2ee8355047 100644 --- a/src/BootstrapBlazor/Components/ErrorLogger/ErrorLogger.cs +++ b/src/BootstrapBlazor/Components/ErrorLogger/ErrorLogger.cs @@ -20,29 +20,25 @@ public class ErrorLogger : ComponentBase, IErrorLogger private IStringLocalizer? Localizer { get; set; } /// - /// - /// 10.2.2 + /// /// [Parameter] public bool EnableErrorLogger { get; set; } = true; /// - /// - /// 10.2.2 + /// /// [Parameter] public bool EnableILogger { get; set; } = true; /// - /// - /// 10.2.2 + /// /// [Parameter] public bool ShowToast { get; set; } = true; /// - /// - /// 10.2.2 + /// /// [Parameter] [NotNull] @@ -145,11 +141,8 @@ protected override void BuildRenderTree(RenderTreeBuilder builder) }; /// - /// 由实现 组件实现类调用 - /// Called by implementing component implementation class + /// /// - /// - /// public Task HandlerExceptionAsync(Exception exception) => _errorBoundary.RenderException(exception, GetLastOrDefaultHandler()); private readonly List _cache = []; @@ -157,18 +150,16 @@ protected override void BuildRenderTree(RenderTreeBuilder builder) internal IHandlerException? GetLastOrDefaultHandler() => _cache.LastOrDefault(); /// - /// + /// /// - /// public void Register(IHandlerException component) { _cache.Add(component); } /// - /// + /// /// - /// public void UnRegister(IHandlerException component) { _cache.Remove(component); diff --git a/src/BootstrapBlazor/Components/ErrorLogger/IErrorLogger.cs b/src/BootstrapBlazor/Components/ErrorLogger/IErrorLogger.cs index be33233332d..84ba2806f74 100644 --- a/src/BootstrapBlazor/Components/ErrorLogger/IErrorLogger.cs +++ b/src/BootstrapBlazor/Components/ErrorLogger/IErrorLogger.cs @@ -14,32 +14,35 @@ public interface IErrorLogger /// /// 获得/设置 是否开启全局异常捕获 默认 true /// Gets or sets Whether to Enable Global Exception Capture Default true + /// 10.2.2 /// bool EnableErrorLogger { get; set; } /// - /// 获得/设置 是否启用日志记录功能 默认 true 启用 - /// Gets or sets Whether to Enable Logging Default true - /// 设置 false 后关闭记录日志功能 - /// Set false to disable logging + /// 获得/设置 是否启用日志记录功能 默认 true 启用 设置 false 后关闭记录日志功能 + /// Gets or sets Whether to Enable Logging. Default value is true. Set false to disable logging + /// 10.2.2 /// bool EnableILogger { get; } /// /// 获得 是否显示 Error 提示弹窗 默认 true /// Get Whether to Show Error Toast Default true + /// 10.2.2 /// bool ShowToast { get; } /// /// 获得 Error Toast 弹窗标题 默认读取资源文件内容 /// Get Error Toast Title Default Read Resource File + /// 10.2.2 /// string? ToastTitle { get; } /// /// 获得/设置 自定义 Error 处理方法 默认 null /// Gets or sets Custom Error Handler Default null + /// 10.2.2 /// /// Task HandlerExceptionAsync(Exception ex); @@ -47,6 +50,7 @@ public interface IErrorLogger /// /// 注册方法 /// Register Method + /// 10.2.2 /// /// void Register(IHandlerException component); @@ -54,6 +58,7 @@ public interface IErrorLogger /// /// 注销方法 /// Unregister Method + /// 10.2.2 /// /// void UnRegister(IHandlerException component); diff --git a/test/UnitTest.Localization/JsonTest.cs b/test/UnitTest.Localization/JsonTest.cs new file mode 100644 index 00000000000..7498733b1ec --- /dev/null +++ b/test/UnitTest.Localization/JsonTest.cs @@ -0,0 +1,147 @@ +// Licensed to the .NET Foundation under one or more agreements. +// The .NET Foundation licenses this file to you under the Apache 2.0 License +// See the LICENSE file in the project root for more information. +// Maintainer: Argo Zhang(argo@live.ca) Website: https://www.blazor.zone + +using BootstrapBlazor.Server.Components; +using BootstrapBlazor.Server.Extensions; +using Microsoft.Extensions.Configuration; +using System.Reflection; +using System.Text.Json; + +namespace UnitTest.Localization; + +public class JsonTest +{ + [Theory] + [InlineData("zh-CN.json")] + [InlineData("en-US.json")] + public void Update_Localizer_Ok(string localeFileName) + { + var localizerFile = Path.Combine(AppContext.BaseDirectory, "../../../../../", "src/BootstrapBlazor.Server/Locales/", localeFileName); + + if (!File.Exists(localizerFile)) + { + return; + } + + var configuration = CreateConfiguration(localizerFile); + var routerTable = CreateRouterTable(); + + var rootPath = Path.Combine(AppContext.BaseDirectory, "../../../../../", "src/BootstrapBlazor.Server/Components/Samples/"); + foreach (var router in routerTable) + { + var sectionName = router.FullName; + if (string.IsNullOrEmpty(sectionName)) + { + continue; + } + + var section = configuration.GetSection(sectionName); + if (section == null) + { + continue; + } + + var typeName = router.FullName?.Replace("BootstrapBlazor.Server.Components.Samples.", "").Replace(".", "/"); + if (string.IsNullOrEmpty(typeName)) + { + continue; + } + + var file = Path.Combine(rootPath, typeName); + var razorFile = $"{file}.razor"; + var srcFile = $"{file}.razor.cs"; + foreach (var c in section.GetChildren()) + { + var key = c.Key; + if (!string.IsNullOrEmpty(key)) + { + var found = FindLocalizerByKey(razorFile, key); + if (found) + { + continue; + } + + found = FindLocalizerByKey(srcFile, key); + if (found) + { + continue; + } + + c.Value = null; + } + } + } + + SaveConfiguration(configuration, localizerFile); + } + + private static void SaveConfiguration(IConfiguration configuration, string outputFile) + { + // 循环 Configuration 更新 Json 文件 + using var outputStream = File.Create(outputFile); + WriteToJsonStream(configuration, outputStream); + outputStream.Write(new byte[] { 0x0D, 0x0A }); + } + + private static List CreateRouterTable() + { + var assembly = typeof(App).Assembly; + return assembly.GetExportedTypes() + .Where(t => t.IsDefined(typeof(RouteAttribute)) && + t.IsComponentLayout() && + (t.FullName?.StartsWith("BootstrapBlazor.Server.Components.Samples.") ?? false) + ).ToList(); + } + + private static IConfigurationRoot CreateConfiguration(string localizerFile) + { + var builder = new ConfigurationBuilder(); + builder.AddJsonFile(localizerFile, false, false); + return builder.Build(); + } + + private static bool FindLocalizerByKey(string fileName, string key) + { + var content = File.ReadAllText(fileName); + if (string.IsNullOrEmpty(content)) + { + return false; + } + + if (content.Contains($"Localizer[\"{key}\"]")) + { + return true; + } + + if (content.Contains($"Localizer[nameof({key})]")) + { + return true; + } + + return false; + } + + private static void WriteToJsonStream(IConfiguration configuration, Stream outputStream) + { + using var writer = new Utf8JsonWriter(outputStream, new JsonWriterOptions { Indented = true, Encoder = System.Text.Encodings.Web.JavaScriptEncoder.UnsafeRelaxedJsonEscaping }); + writer.WriteStartObject(); + foreach (var section in configuration.GetChildren()) + { + writer.WritePropertyName(section.Key); + writer.WriteStartObject(); + foreach (var child in section.GetChildren()) + { + if (child.Value is not null) + { + writer.WritePropertyName(child.Key); + writer.WriteStringValue(child.Value); + } + } + writer.WriteEndObject(); + } + writer.WriteEndObject(); + writer.Flush(); + } +} diff --git a/test/UnitTest.Localization/UnitTest.Localization.csproj b/test/UnitTest.Localization/UnitTest.Localization.csproj index 233b111e805..5a3c5bc187c 100644 --- a/test/UnitTest.Localization/UnitTest.Localization.csproj +++ b/test/UnitTest.Localization/UnitTest.Localization.csproj @@ -1,7 +1,6 @@  - @@ -27,7 +26,7 @@ - + diff --git a/test/UnitTestDocs/MenuTest.cs b/test/UnitTestDocs/MenuTest.cs index b92e1a69647..3168c6737c0 100644 --- a/test/UnitTestDocs/MenuTest.cs +++ b/test/UnitTestDocs/MenuTest.cs @@ -27,13 +27,7 @@ public MenuTest(ITestOutputHelper logger) _serviceProvider = serviceCollection.BuildServiceProvider(); _serviceProvider.GetRequiredService(); _routerTable = assembly.GetExportedTypes() - .Where(t => t.IsDefined(typeof(RouteAttribute)) && IsComponentLayout(t) && (t.FullName?.StartsWith("BootstrapBlazor.Server.Components.Samples.") ?? false)); - - bool IsComponentLayout(Type t) - { - return t.GetCustomAttribute()?.LayoutType == typeof(ComponentLayout) - || t.GetCustomAttribute()?.LayoutType == typeof(DockLayout); - } + .Where(t => t.IsDefined(typeof(RouteAttribute)) && t.IsComponentLayout() && (t.FullName?.StartsWith("BootstrapBlazor.Server.Components.Samples.") ?? false)); } [Fact]