Browse Source

Does Tag-Helper support Bootstrap Floating Labels? #12900

pull/16251/head
masoodkhoshgard 3 years ago
parent
commit
410492b749
  1. 4
      framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Form/AbpInputTagHelper.cs
  2. 6
      framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Form/AbpInputTagHelperService.cs
  3. 4
      framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Form/AbpSelectTagHelper.cs
  4. 4
      framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Form/AbpSelectTagHelperService.cs
  5. 2
      framework/src/Volo.Abp.AspNetCore.Mvc.UI.MultiTenancy/Volo/Abp/AspNetCore/Mvc/UI/MultiTenancy/Localization/en.json
  6. 8
      framework/src/Volo.Abp.AspNetCore.Mvc.UI.Theme.Shared.Demo/Views/Components/Themes/Shared/Demos/FormElementsDemo/Default.cshtml
  7. 2
      framework/src/Volo.Abp.ExceptionHandling/Volo/Abp/ExceptionHandling/Localization/en.json
  8. 8
      framework/src/Volo.Abp.Features/Volo/Abp/Features/Localization/fa.json
  9. 4
      framework/src/Volo.Abp.Ldap.Abstractions/Volo/Abp/Ldap/Localization/fa.json
  10. 6
      framework/src/Volo.Abp.UI/Localization/Resources/AbpUi/fa.json
  11. 2
      framework/src/Volo.Abp.Validation/Volo/Abp/Validation/Localization/en.json
  12. 10
      framework/src/Volo.Abp.Validation/Volo/Abp/Validation/Localization/fa.json
  13. 7
      framework/test/Volo.Abp.Localization.Tests/Volo/Abp/Localization/TestResources/Base/Validation/fa.json
  14. 7
      framework/test/Volo.Abp.Localization.Tests/Volo/Abp/Localization/TestResources/Source/fa.json

4
framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Form/AbpInputTagHelper.cs

@ -46,6 +46,10 @@ public class AbpInputTagHelper : AbpTagHelper<AbpInputTagHelper, AbpInputTagHelp
public bool SuppressLabel { get; set; }
[HtmlAttributeName("floating-label")]
public bool FloatingLabel { get; set; }
public CheckBoxHiddenInputRenderMode? CheckBoxHiddenInputRenderMode { get; set; }
public AbpInputTagHelper(AbpInputTagHelperService tagHelperService)

6
framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Form/AbpInputTagHelperService.cs

@ -54,6 +54,10 @@ public class AbpInputTagHelperService : AbpTagHelperService<AbpInputTagHelper>
output.TagMode = TagMode.StartTagAndEndTag;
output.TagName = "div";
LeaveOnlyGroupAttributes(context, output);
if (TagHelper.FloatingLabel && !isCheckBox)
{
output.Attributes.AddClass("form-floating");
}
output.Attributes.AddClass(isCheckBox ? "mb-2" : "mb-3");
if (isCheckBox)
{
@ -294,7 +298,7 @@ public class AbpInputTagHelperService : AbpTagHelperService<AbpInputTagHelper>
{
return "";
}
var isHaveRequiredAttribute = context.AllAttributes.Any(a => a.Name == "required");
return TagHelper.AspFor.ModelExplorer.GetAttribute<RequiredAttribute>() != null || isHaveRequiredAttribute ? "<span> * </span>" : "";

4
framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Form/AbpSelectTagHelper.cs

@ -44,6 +44,10 @@ public class AbpSelectTagHelper : AbpTagHelper<AbpSelectTagHelper, AbpSelectTagH
public string Placeholder { get; set; }
[HtmlAttributeName("floating-label")]
public bool FloatingLabel { get; set; }
public AbpSelectTagHelper(AbpSelectTagHelperService tagHelperService)
: base(tagHelperService)
{

4
framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Form/AbpSelectTagHelperService.cs

@ -56,6 +56,10 @@ public class AbpSelectTagHelperService : AbpTagHelperService<AbpSelectTagHelper>
{
output.TagName = "div";
LeaveOnlyGroupAttributes(context, output);
if (TagHelper.FloatingLabel)
{
output.Attributes.AddClass("form-floating");
}
output.Attributes.AddClass("mb-3");
output.TagMode = TagMode.StartTagAndEndTag;
output.Content.SetHtmlContent(innerHtml);

2
framework/src/Volo.Abp.AspNetCore.Mvc.UI.MultiTenancy/Volo/Abp/AspNetCore/Mvc/UI/MultiTenancy/Localization/en.json

@ -10,4 +10,4 @@
"SwitchTenant": "Switch tenant",
"NotSelected": "Not selected"
}
}
}

8
framework/src/Volo.Abp.AspNetCore.Mvc.UI.Theme.Shared.Demo/Views/Components/Themes/Shared/Demos/FormElementsDemo/Default.cshtml

@ -100,6 +100,14 @@ public class FormElementsDemoModel
<abp-input asp-for="@Model.MyDetailsModel.Description" label="Description" />
</abp-component-demo-section>
<abp-component-demo-section title="Floating Labels" view-path="@FormElementsDemoViewComponent.ViewPath">
<abp-input asp-for="@Model.MyDetailsModel.EmailAddress" label="Email Address" placeholder="name@example.com" floating-label="true" />
<abp-select asp-for="@Model.MyDetailsModel.City" asp-items="@Model.CityList" label="City" floating-label="true" />
<abp-select asp-for="@Model.MyDetailsModel.Cities" asp-items="@Model.CityList" label="Cities" floating-label="true" />
<abp-input asp-for="@Model.MyDetailsModel.Description" label="Description" floating-label="true" />
</abp-component-demo-section>
<abp-component-demo-section title="Sizing" view-path="@FormElementsDemoViewComponent.ViewPath">
<abp-input asp-for="@Model.MyInformMeModel.Name" size="Large" />
<abp-input asp-for="@Model.MyInformMeModel.Name" size="Small" />

2
framework/src/Volo.Abp.ExceptionHandling/Volo/Abp/ExceptionHandling/Localization/en.json

@ -23,4 +23,4 @@
"403MessageDetail": "You are not authorized to perform this operation!",
"404MessageDetail": "Sorry, there's nothing at this address."
}
}
}

8
framework/src/Volo.Abp.Features/Volo/Abp/Features/Localization/fa.json

@ -1,10 +1,8 @@
{
"culture": "fa",
"texts": {
"Features": "ویژگی ها",
"NoFeatureFoundMessage": "هیچ ویژگی ای در دسترس نمی باشد.",
"Permission:FeatureManagement": "مدیریت ویژگی ها",
"Permission:FeatureManagement.ManageHostFeatures": "مدیریت ویژگی های میزبان",
"Volo.Abp.FeatureManagement:InvalidFeatureValue": "{0} مقدار ویژگی صحیح نمی باشد!"
"Volo.Feature:010001": "ویژگی فعال نیست: {FeatureName}",
"Volo.Feature:010002": "ویژگی های مورد نیاز فعال نیستند. همه این ویژگی ها باید فعال باشند: {FeatureNames}",
"Volo.Feature:010003": "ویژگی های مورد نیاز فعال نیستند. حداقل یکی از این ویژگی ها باید فعال باشد: {FeatureNames}"
}
}

4
framework/src/Volo.Abp.Ldap.Abstractions/Volo/Abp/Ldap/Localization/fa.json

@ -11,7 +11,7 @@
"Description:Abp.Ldap.Domain": "دامنه",
"DisplayName:Abp.Ldap.UserName": "نام کاربری",
"Description:Abp.Ldap.UserName": "نام کاربری",
"DisplayName:Abp.Ldap.Password": "رمز عبور",
"Description:Abp.Ldap.Password": "رمز عبور"
"DisplayName:Abp.Ldap.Password": "گذرواژه",
"Description:Abp.Ldap.Password": "گذرواژه"
}
}

6
framework/src/Volo.Abp.UI/Localization/Resources/AbpUi/fa.json

@ -40,7 +40,7 @@
"Selected": "انتخاب شده",
"PagerShowMenuEntries": "نمایش _MENU_ مورد",
"DatatableActionDropdownDefaultText": "عملیات",
"ChangePassword": "تغییر رمز",
"ChangePassword": "تغییر گذرواژه",
"PersonalInfo": "پروفایل من",
"AreYouSureYouWantToCancelEditingWarningMessage": "شما تغییرات ذخیره نشده ای دارید.",
"GoHomePage": "برو به صفحه اصلی",
@ -49,6 +49,8 @@
"ItemWillBeDeletedMessageWithFormat": "{0} حذف خواهد شد!",
"ItemWillBeDeletedMessage": "این مورد حذف خواهد شد!",
"ManageYourAccount": "حساب خود را مدیریت کنید",
"OthersGroup": "دیگر"
"OthersGroup": "دیگر",
"Today": "امروز",
"Apply": "اعمال کردن"
}
}

2
framework/src/Volo.Abp.Validation/Volo/Abp/Validation/Localization/en.json

@ -36,4 +36,4 @@
"ThisFieldIsNotAValidFullyQualifiedHttpHttpsOrFtpUrl": "This field is not a valid fully-qualified http, https, or ftp URL.",
"ThisFieldIsInvalid.": "This field is invalid."
}
}
}

10
framework/src/Volo.Abp.Validation/Volo/Abp/Validation/Localization/fa.json

@ -26,11 +26,13 @@
"ThisFieldMustBeAStringOrArrayTypeWithAMaximumLengthOf {0}": "این قسمت باید یک رشته یا نوع آرایه با حداکثر طول '{0}' باشد.",
"ThisFieldMustBeAStringOrArrayTypeWithAMinimumLengthOf {0}": "این فیلد باید یک رشته یا نوع آرایه با حداقل طول '{0}' باشد.",
"ThisFieldIsNotAValidPhoneNumber.": "این قسمت شماره تلفن معتبری نیست.",
"ThisFieldMustBeBetween {0} And {1}": "این قسمت باید بین {0} و {1} باشد.",
"ThisFieldMustMatchTheRegularExpression {0}": "این قسمت باید با عبارت معمولی '{0}' مطابقت داشته باشد.",
"ThisFieldMustBeBetween{0}And{1}": "این قسمت باید بین {0} و {1} باشد.",
"ThisFieldMustBeGreaterThanOrEqual{0}": "این فیلد باید بزرگتر یا مساوی با {0} باشد.",
"ThisFieldMustBeLessOrEqual{0}": "این فیلد باید کمتر یا مساوی با {0} باشد.",
"ThisFieldMustMatchTheRegularExpression{0}": "این قسمت باید با عبارت معمولی '{0}' مطابقت داشته باشد.",
"ThisFieldIsRequired.": "این فیلد الزامی است.",
"ThisFieldMustBeAStringWithAMaximumLengthOf {0}": "این فیلد باید یک رشته با حداکثر طول {0} باشد.",
"ThisFieldMustBeAStringWithAMinimumLengthOf {1} AndAMaximumLengthOf {0}": "این فیلد باید رشته ای با حداقل طول {1} و حداکثر طول {0} باشد.",
"ThisFieldMustBeAStringWithAMaximumLengthOf{0}": "این فیلد باید یک رشته با حداکثر طول {0} باشد.",
"ThisFieldMustBeAStringWithAMinimumLengthOf{1}AndAMaximumLengthOf {0}": "این فیلد باید رشته ای با حداقل طول {1} و حداکثر طول {0} باشد.",
"ThisFieldIsNotAValidFullyQualifiedHttpHttpsOrFtpUrl": "این قسمت آدرس http , https , یا ftp کاملاً واجد شرایط نیست.",
"ThisFieldIsInvalid.": "این قسمت نامعتبر است."
}

7
framework/test/Volo.Abp.Localization.Tests/Volo/Abp/Localization/TestResources/Base/Validation/fa.json

@ -2,6 +2,11 @@
"culture": "fa",
"texts": {
"ThisFieldIsRequired": "این فیلد الزامی است",
"MaxLenghtErrorMessage": "این فیلد میتواند نهایتا '{0}' کاراکتر باشد"
"MaxLenghtErrorMessage": "این فیلد میتواند نهایتا '{0}' کاراکتر باشد",
"Enum:BookType.Undefined": "از منبع اعتبار سنجی تعریف نشده است",
"Enum:BookType.0": "با مقدار 0 از منبع اعتبار سنجی تعریف نشده است",
"BookType.Adventure": "مخاطره از منبع اعتبارسنجی رخ داده است",
"BookType.1": "مخاطره با ارزش 1 از منبع اعتبارسنجی رخ داده است",
"Biography": "بیوگرافی از منبع اعتبارسنجی رخ داده است"
}
}

7
framework/test/Volo.Abp.Localization.Tests/Volo/Abp/Localization/TestResources/Source/fa.json

@ -6,6 +6,11 @@
"CarPlural": "اتومبیل ها",
"MaxLenghtErrorMessage": "طول این فیلد میتواند نهایتا '{0}' کاراکتر باشد",
"Universe": "کائنات",
"FortyTwo": "چهل و دو"
"FortyTwo": "چهل و دو",
"Enum:BookType.Undefined": "تعریف نشده است",
"Enum:BookType.0": "با مقدار 0 تعریف نشده است",
"BookType.Adventure": "مخاطره رخ داده است",
"BookType.1": "مخاطره با ارزش 1 رخ داده است",
"Biography": "بیوگرافی رخ داده است"
}
}
Loading…
Cancel
Save