Browse Source

Merge pull request #16823 from abpframework/EngincanV/blazor-extension-property

Allow Setting Extended Property as ReadOnly on the UI for Blazor
pull/16985/head
liangshiwei 3 years ago
committed by GitHub
parent
commit
4ce1a735a2
No known key found for this signature in database GPG Key ID: 4AEE18F83AFDEB23
  1. 2
      framework/src/Volo.Abp.BlazoriseUI/Components/ObjectExtending/CheckExtensionProperty.razor
  2. 1
      framework/src/Volo.Abp.BlazoriseUI/Components/ObjectExtending/DateTimeExtensionProperty.razor
  3. 1
      framework/src/Volo.Abp.BlazoriseUI/Components/ObjectExtending/ExtensionProperties.razor
  4. 4
      framework/src/Volo.Abp.BlazoriseUI/Components/ObjectExtending/ExtensionProperties.razor.cs
  5. 7
      framework/src/Volo.Abp.BlazoriseUI/Components/ObjectExtending/ExtensionPropertyComponentBase.cs
  6. 7
      framework/src/Volo.Abp.BlazoriseUI/Components/ObjectExtending/ExtensionPropertyModalType.cs
  7. 3
      framework/src/Volo.Abp.BlazoriseUI/Components/ObjectExtending/LookupExtensionProperty.razor
  8. 2
      framework/src/Volo.Abp.BlazoriseUI/Components/ObjectExtending/SelectExtensionProperty.razor
  9. 2
      framework/src/Volo.Abp.BlazoriseUI/Components/ObjectExtending/TextExtensionProperty.razor
  10. 2
      framework/src/Volo.Abp.BlazoriseUI/Components/ObjectExtending/TimeExtensionProperty.razor
  11. 18
      framework/src/Volo.Abp.ObjectExtending/Volo/Abp/ObjectExtending/ObjectExtensionPropertyInfo.cs
  12. 6
      modules/identity/src/Volo.Abp.Identity.Blazor/Pages/Identity/RoleManagement.razor
  13. 4
      modules/identity/src/Volo.Abp.Identity.Blazor/Pages/Identity/UserManagement.razor
  14. 4
      modules/tenant-management/src/Volo.Abp.TenantManagement.Blazor/Pages/TenantManagement/TenantManagement.razor

2
framework/src/Volo.Abp.BlazoriseUI/Components/ObjectExtending/CheckExtensionProperty.razor

@ -8,7 +8,7 @@
{ {
<Validation Validator="@Validate" MessageLocalizer="@LH.Localize"> <Validation Validator="@Validate" MessageLocalizer="@LH.Localize">
<Field> <Field>
<Check TValue="bool" @bind-Checked="@Value"> <Check TValue="bool" @bind-Checked="@Value" Disabled="IsReadonlyField">
<ChildContent> <ChildContent>
@PropertyInfo.GetLocalizedDisplayName(StringLocalizerFactory) @PropertyInfo.GetLocalizedDisplayName(StringLocalizerFactory)
</ChildContent> </ChildContent>

1
framework/src/Volo.Abp.BlazoriseUI/Components/ObjectExtending/DateTimeExtensionProperty.razor

@ -13,6 +13,7 @@
<DateEdit TValue="DateTime?" <DateEdit TValue="DateTime?"
InputMode="@(PropertyInfo.IsDate() ? DateInputMode.Date : DateInputMode.DateTime)" InputMode="@(PropertyInfo.IsDate() ? DateInputMode.Date : DateInputMode.DateTime)"
Pattern="@PropertyInfo.GetDateEditInputFormatOrNull()" Pattern="@PropertyInfo.GetDateEditInputFormatOrNull()"
Disabled="IsReadonlyField"
@bind-Date="@Value"> @bind-Date="@Value">
<Feedback> <Feedback>
<ValidationError/> <ValidationError/>

1
framework/src/Volo.Abp.BlazoriseUI/Components/ObjectExtending/ExtensionProperties.razor

@ -25,6 +25,7 @@
__builder.AddAttribute(1, "PropertyInfo", propertyInfo); __builder.AddAttribute(1, "PropertyInfo", propertyInfo);
__builder.AddAttribute(2, "Entity", Entity); __builder.AddAttribute(2, "Entity", Entity);
__builder.AddAttribute(3, "LH", LH); __builder.AddAttribute(3, "LH", LH);
__builder.AddAttribute(4, "ModalType", ModalType);
__builder.CloseComponent(); __builder.CloseComponent();
} }
} }

4
framework/src/Volo.Abp.BlazoriseUI/Components/ObjectExtending/ExtensionProperties.razor.cs

@ -2,6 +2,7 @@
using Microsoft.Extensions.Localization; using Microsoft.Extensions.Localization;
using Volo.Abp.AspNetCore.Components.Web; using Volo.Abp.AspNetCore.Components.Web;
using Volo.Abp.Data; using Volo.Abp.Data;
using Volo.Abp.ObjectExtending;
namespace Volo.Abp.BlazoriseUI.Components.ObjectExtending; namespace Volo.Abp.BlazoriseUI.Components.ObjectExtending;
@ -16,4 +17,7 @@ public partial class ExtensionProperties<TEntityType, TResourceType> : Component
[Parameter] [Parameter]
public TEntityType Entity { get; set; } public TEntityType Entity { get; set; }
[Parameter]
public ExtensionPropertyModalType? ModalType { get; set; }
} }

7
framework/src/Volo.Abp.BlazoriseUI/Components/ObjectExtending/ExtensionPropertyComponentBase.cs

@ -33,6 +33,9 @@ public abstract class ExtensionPropertyComponentBase<TEntity, TResourceType> : O
[Parameter] [Parameter]
public AbpBlazorMessageLocalizerHelper<TResourceType> LH { get; set; } public AbpBlazorMessageLocalizerHelper<TResourceType> LH { get; set; }
[Parameter]
public ExtensionPropertyModalType? ModalType { get; set; }
protected virtual void Validate(ValidatorEventArgs e) protected virtual void Validate(ValidatorEventArgs e)
{ {
e.Status = ValidationStatus.Success; e.Status = ValidationStatus.Success;
@ -65,12 +68,14 @@ public abstract class ExtensionPropertyComponentBase<TEntity, TResourceType> : O
} }
e.MemberNames = result.MemberNames; e.MemberNames = result.MemberNames;
e.Status = ValidationStatus.Error; e.Status = ValidationStatus.Error;
e.ErrorText = errorMessage; e.ErrorText = errorMessage;
break; break;
} }
} }
protected bool IsReadonlyField => ModalType is ExtensionPropertyModalType.EditModal && PropertyInfo.UI.EditModal.IsReadOnly;
private static string GetDefaultErrorMessage(ValidationAttribute validationAttribute) private static string GetDefaultErrorMessage(ValidationAttribute validationAttribute)
{ {
if (validationAttribute is StringLengthAttribute stringLengthAttribute && stringLengthAttribute.MinimumLength != 0) if (validationAttribute is StringLengthAttribute stringLengthAttribute && stringLengthAttribute.MinimumLength != 0)

7
framework/src/Volo.Abp.BlazoriseUI/Components/ObjectExtending/ExtensionPropertyModalType.cs

@ -0,0 +1,7 @@
namespace Volo.Abp.BlazoriseUI.Components.ObjectExtending;
public enum ExtensionPropertyModalType : byte
{
CreateModal = 0,
EditModal = 1
}

3
framework/src/Volo.Abp.BlazoriseUI/Components/ObjectExtending/LookupExtensionProperty.razor

@ -15,6 +15,7 @@
SelectedValueChanged="@SelectedValueChanged" SelectedValueChanged="@SelectedValueChanged"
SearchChanged="@SearchFilterChangedAsync" SearchChanged="@SearchFilterChangedAsync"
Validator="@Validate" Validator="@Validate"
MinLength="0"> MinLength="0"
Disabled="IsReadonlyField">
</Autocomplete> </Autocomplete>
</Field> </Field>

2
framework/src/Volo.Abp.BlazoriseUI/Components/ObjectExtending/SelectExtensionProperty.razor

@ -10,7 +10,7 @@
<ChildContent> <ChildContent>
@foreach (var item in SelectItems) @foreach (var item in SelectItems)
{ {
<SelectItem Value="@item.Value">@item.Text</SelectItem> <SelectItem Value="@item.Value" Disabled="IsReadonlyField">@item.Text</SelectItem>
} }
</ChildContent> </ChildContent>
<Feedback> <Feedback>

2
framework/src/Volo.Abp.BlazoriseUI/Components/ObjectExtending/TextExtensionProperty.razor

@ -9,7 +9,7 @@
<Validation Validator="@Validate" MessageLocalizer="@LH.Localize"> <Validation Validator="@Validate" MessageLocalizer="@LH.Localize">
<Field> <Field>
<FieldLabel>@PropertyInfo.GetLocalizedDisplayName(StringLocalizerFactory)</FieldLabel> <FieldLabel>@PropertyInfo.GetLocalizedDisplayName(StringLocalizerFactory)</FieldLabel>
<TextEdit @bind-Text="@Value" Role="@PropertyInfo.GetTextRole()" InputMode="@PropertyInfo.GetTextInputMode()"> <TextEdit @bind-Text="@Value" Role="@PropertyInfo.GetTextRole()" InputMode="@PropertyInfo.GetTextInputMode()" Disabled="IsReadonlyField">
<Feedback> <Feedback>
<ValidationError/> <ValidationError/>
</Feedback> </Feedback>

2
framework/src/Volo.Abp.BlazoriseUI/Components/ObjectExtending/TimeExtensionProperty.razor

@ -9,7 +9,7 @@
<Validation Validator="@Validate" MessageLocalizer="@LH.Localize"> <Validation Validator="@Validate" MessageLocalizer="@LH.Localize">
<Field> <Field>
<FieldLabel>@PropertyInfo.GetLocalizedDisplayName(StringLocalizerFactory)</FieldLabel>--> <FieldLabel>@PropertyInfo.GetLocalizedDisplayName(StringLocalizerFactory)</FieldLabel>-->
<TimeEdit TValue="TimeSpan?" @bind-Time="@Value"> <TimeEdit TValue="TimeSpan?" @bind-Time="@Value" Disabled="IsReadonlyField">
<Feedback> <Feedback>
<ValidationError/> <ValidationError/>
</Feedback> </Feedback>

18
framework/src/Volo.Abp.ObjectExtending/Volo/Abp/ObjectExtending/ObjectExtensionPropertyInfo.cs

@ -65,6 +65,8 @@ public class ObjectExtensionPropertyInfo : IHasNameWithLocalizableDisplayName, I
/// </summary> /// </summary>
public int Order { get; set; } public int Order { get; set; }
public ExtensionPropertyUI UI { get; set; }
public ObjectExtensionPropertyInfo( public ObjectExtensionPropertyInfo(
[NotNull] ObjectExtensionInfo objectExtension, [NotNull] ObjectExtensionInfo objectExtension,
[NotNull] Type type, [NotNull] Type type,
@ -81,10 +83,26 @@ public class ObjectExtensionPropertyInfo : IHasNameWithLocalizableDisplayName, I
Attributes.AddRange(ExtensionPropertyHelper.GetDefaultAttributes(Type)); Attributes.AddRange(ExtensionPropertyHelper.GetDefaultAttributes(Type));
DefaultValue = TypeHelper.GetDefaultValue(Type); DefaultValue = TypeHelper.GetDefaultValue(Type);
Lookup = new ExtensionPropertyLookupConfiguration(); Lookup = new ExtensionPropertyLookupConfiguration();
UI = new ExtensionPropertyUI();
} }
public object GetDefaultValue() public object GetDefaultValue()
{ {
return ExtensionPropertyHelper.GetDefaultValue(Type, DefaultValueFactory, DefaultValue); return ExtensionPropertyHelper.GetDefaultValue(Type, DefaultValueFactory, DefaultValue);
} }
public class ExtensionPropertyUI
{
public ExtensionPropertyUIEditModal EditModal { get; set; }
public ExtensionPropertyUI()
{
EditModal = new ExtensionPropertyUIEditModal();
}
}
public class ExtensionPropertyUIEditModal
{
public bool IsReadOnly { get; set; }
}
} }

6
modules/identity/src/Volo.Abp.Identity.Blazor/Pages/Identity/RoleManagement.razor

@ -54,7 +54,7 @@
</Feedback> </Feedback>
</TextEdit> </TextEdit>
</Field> </Field>
<ExtensionProperties TEntityType="IdentityRoleCreateDto" TResourceType="IdentityResource" Entity="@NewEntity" LH="@LH"/> <ExtensionProperties TEntityType="IdentityRoleCreateDto" TResourceType="IdentityResource" Entity="@NewEntity" LH="@LH" ModalType="ExtensionPropertyModalType.CreateModal" />
</Validation> </Validation>
<Field> <Field>
<Check TValue="bool" @bind-Checked="@NewEntity.IsDefault">@L["DisplayName:IsDefault"]</Check> <Check TValue="bool" @bind-Checked="@NewEntity.IsDefault">@L["DisplayName:IsDefault"]</Check>
@ -92,7 +92,7 @@
</Feedback> </Feedback>
</TextEdit> </TextEdit>
</Field> </Field>
<ExtensionProperties TEntityType="IdentityRoleUpdateDto" TResourceType="IdentityResource" Entity="@EditingEntity" LH="@LH"/> <ExtensionProperties TEntityType="IdentityRoleUpdateDto" TResourceType="IdentityResource" Entity="@EditingEntity" LH="@LH" ModalType="ExtensionPropertyModalType.EditModal" />
</Validation> </Validation>
<Field> <Field>
<Check TValue="bool" @bind-Checked="@EditingEntity.IsDefault">@L["DisplayName:IsDefault"]</Check> <Check TValue="bool" @bind-Checked="@EditingEntity.IsDefault">@L["DisplayName:IsDefault"]</Check>
@ -112,4 +112,4 @@
@if (HasManagePermissionsPermission) @if (HasManagePermissionsPermission)
{ {
<PermissionManagementModal @ref="PermissionManagementModal"/> <PermissionManagementModal @ref="PermissionManagementModal"/>
} }

4
modules/identity/src/Volo.Abp.Identity.Blazor/Pages/Identity/UserManagement.razor

@ -132,7 +132,7 @@
<Field> <Field>
<Check TValue="bool" @bind-Checked="@NewEntity.LockoutEnabled">@L["DisplayName:LockoutEnabled"]</Check> <Check TValue="bool" @bind-Checked="@NewEntity.LockoutEnabled">@L["DisplayName:LockoutEnabled"]</Check>
</Field> </Field>
<ExtensionProperties TEntityType="IdentityUserCreateDto" TResourceType="IdentityResource" Entity="@NewEntity" LH="@LH" /> <ExtensionProperties TEntityType="IdentityUserCreateDto" TResourceType="IdentityResource" Entity="@NewEntity" LH="@LH" ModalType="ExtensionPropertyModalType.CreateModal" />
</TabPanel> </TabPanel>
<TabPanel Name="Roles"> <TabPanel Name="Roles">
@if (NewUserRoles != null) @if (NewUserRoles != null)
@ -253,7 +253,7 @@
<Field> <Field>
<Check TValue="bool" @bind-Checked="EditingEntity.LockoutEnabled">@L["DisplayName:LockoutEnabled"]</Check> <Check TValue="bool" @bind-Checked="EditingEntity.LockoutEnabled">@L["DisplayName:LockoutEnabled"]</Check>
</Field> </Field>
<ExtensionProperties TEntityType="IdentityUserUpdateDto" TResourceType="IdentityResource" Entity="@EditingEntity" LH="@LH" /> <ExtensionProperties TEntityType="IdentityUserUpdateDto" TResourceType="IdentityResource" Entity="@EditingEntity" LH="@LH" ModalType="ExtensionPropertyModalType.EditModal" />
</TabPanel> </TabPanel>
<TabPanel Name="Roles"> <TabPanel Name="Roles">
@if (EditUserRoles != null) @if (EditUserRoles != null)

4
modules/tenant-management/src/Volo.Abp.TenantManagement.Blazor/Pages/TenantManagement/TenantManagement.razor

@ -81,7 +81,7 @@
<ValidationError Style="display: block" /> <ValidationError Style="display: block" />
</Field> </Field>
</Validation> </Validation>
<ExtensionProperties TEntityType="TenantCreateDto" TResourceType="AbpTenantManagementResource" Entity="@NewEntity" LH="@LH"/> <ExtensionProperties TEntityType="TenantCreateDto" TResourceType="AbpTenantManagementResource" Entity="@NewEntity" LH="@LH" ModalType="ExtensionPropertyModalType.CreateModal" />
</Validations> </Validations>
</ModalBody> </ModalBody>
<ModalFooter> <ModalFooter>
@ -116,7 +116,7 @@
</Field> </Field>
</Validation> </Validation>
</Validations> </Validations>
<ExtensionProperties TEntityType="TenantUpdateDto" TResourceType="AbpTenantManagementResource" Entity="@EditingEntity" LH="@LH"/> <ExtensionProperties TEntityType="TenantUpdateDto" TResourceType="AbpTenantManagementResource" Entity="@EditingEntity" LH="@LH" ModalType="ExtensionPropertyModalType.EditModal" />
</ModalBody> </ModalBody>
<ModalFooter> <ModalFooter>
<Button Color="Color.Secondary" Clicked="CloseEditModalAsync">@L["Cancel"]</Button> <Button Color="Color.Secondary" Clicked="CloseEditModalAsync">@L["Cancel"]</Button>

Loading…
Cancel
Save