Browse Source

Merge branch 'dev' into liangshiwei/toaster

pull/19344/head
liangshiwei 3 years ago
parent
commit
4c9f03ec4a
  1. 10
      Directory.Packages.props
  2. 5
      abp_io/AbpIoLocalization/AbpIoLocalization/Admin/Localization/Resources/en.json
  3. 1
      docs/en/UI/Blazor/Data-Table-Column-Extensions.md
  4. 2
      framework/src/Volo.Abp.AspNetCore.Components.Web/Volo/Abp/AspNetCore/Components/Web/Extensibility/TableColumns/TableColumn.cs
  5. 12
      framework/src/Volo.Abp.BlazoriseUI/Components/AbpExtensibleDataGrid.razor
  6. 2
      framework/src/Volo.Abp.BlazoriseUI/Components/UiMessageAlert.razor
  7. 2
      framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/Commands/NewCommand.cs
  8. 60
      framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/Commands/ProjectCreationCommandBase.cs
  9. 4
      npm/ng-packs/packages/schematics/src/commands/create-lib/files-package/__libraryName@kebab__/src/lib/__libraryName@kebab__-routing.module.ts.template

10
Directory.Packages.props

@ -115,11 +115,11 @@
<PackageVersion Include="NUglify" Version="1.21.0" />
<PackageVersion Include="Nullable" Version="1.3.1" />
<PackageVersion Include="Octokit" Version="9.0.0" />
<PackageVersion Include="OpenIddict.Abstractions" Version="5.2.0" />
<PackageVersion Include="OpenIddict.Core" Version="5.2.0" />
<PackageVersion Include="OpenIddict.Server.AspNetCore" Version="5.2.0" />
<PackageVersion Include="OpenIddict.Validation.AspNetCore" Version="5.2.0" />
<PackageVersion Include="OpenIddict.Validation.ServerIntegration" Version="5.2.0" />
<PackageVersion Include="OpenIddict.Abstractions" Version="5.4.0" />
<PackageVersion Include="OpenIddict.Core" Version="5.4.0" />
<PackageVersion Include="OpenIddict.Server.AspNetCore" Version="5.4.0" />
<PackageVersion Include="OpenIddict.Validation.AspNetCore" Version="5.4.0" />
<PackageVersion Include="OpenIddict.Validation.ServerIntegration" Version="5.4.0" />
<PackageVersion Include="Oracle.EntityFrameworkCore" Version="8.21.121" />
<PackageVersion Include="Polly" Version="8.2.0" />
<PackageVersion Include="Polly.Extensions.Http" Version="3.0.0" />

5
abp_io/AbpIoLocalization/AbpIoLocalization/Admin/Localization/Resources/en.json

@ -617,6 +617,9 @@
"Permission:Testimonials": "Testimonials",
"SelectCompanySizePlaceholder": "Company Size",
"SelectExperienceYearPlaceholder": "Experience year",
"SelectCountryPlaceholder": "Country"
"SelectCountryPlaceholder": "Country",
"DeleteImageConfirmationMessage": "Are you sure you want to delete the image for \"{0}\"?",
"DeleteImageSuccessMessage": "Image successfully deleted",
"DeleteImage": "Delete Image"
}
}

1
docs/en/UI/Blazor/Data-Table-Column-Extensions.md

@ -73,6 +73,7 @@ This section explains how to customize data table columns using the properties i
* `Sortable`: A boolean field indicating whether the column is sortable or not.
* `DisplayFormat`: You can specify a custom format for the column.
* `DisplayFormatProvider` : You can provide a custom `IFormatProvider` for the column. Default value is `CultureInfo.CurrentCulture`.
* `Visible`: A boolean field indicating whether the column is visible or not.
## Rendering Custom Components In The Data Table Columns

2
framework/src/Volo.Abp.AspNetCore.Components.Web/Volo/Abp/AspNetCore/Components/Web/Extensibility/TableColumns/TableColumn.cs

@ -24,6 +24,8 @@ public class TableColumn
public Func<object, string>? ValueConverter { get; set; }
public bool Sortable { get; set; }
public bool Visible { get; set; } = true;
public TableColumn()
{

12
framework/src/Volo.Abp.BlazoriseUI/Components/AbpExtensibleDataGrid.razor

@ -74,7 +74,7 @@
{
@if (column.ValueConverter == null)
{
<DataGridColumn TItem="TItem" Field="@column.Data" Caption="@column.Title" Sortable="@column.Sortable" DisplayFormat="@column.DisplayFormat" DisplayFormatProvider="@column.DisplayFormatProvider" >
<DataGridColumn TItem="TItem" Field="@column.Data" Caption="@column.Title" Sortable="@column.Sortable" DisplayFormat="@column.DisplayFormat" DisplayFormatProvider="@column.DisplayFormatProvider" Displayable="column.Visible" >
<DisplayTemplate>
@RenderCustomTableColumnComponent(column.Component, context)
</DisplayTemplate>
@ -82,7 +82,7 @@
}
else
{
<DataGridColumn TItem="TItem" Field="@column.Data" Caption="@column.Title" Sortable="@column.Sortable">
<DataGridColumn TItem="TItem" Field="@column.Data" Caption="@column.Title" Sortable="@column.Sortable" Displayable="column.Visible">
<DisplayTemplate>
@RenderCustomTableColumnComponent(column.Component, context)
</DisplayTemplate>
@ -100,14 +100,16 @@
Caption="@column.Title"
Sortable="@column.Sortable"
DisplayFormat="@column.DisplayFormat"
DisplayFormatProvider="@column.DisplayFormatProvider"/>
DisplayFormatProvider="@column.DisplayFormatProvider"
Displayable="column.Visible"/>
}
else
{
<DataGridColumn TItem="TItem"
Field="@column.Data"
Caption="@column.Title"
Sortable="@column.Sortable">
Sortable="@column.Sortable"
Displayable="column.Visible">
<DisplayTemplate>
@(GetConvertedFieldValue(context, column))
</DisplayTemplate>
@ -116,7 +118,7 @@
}
else
{
<DataGridColumn TItem="TItem" Field="@nameof(IHasExtraProperties.ExtraProperties)" SortField="@column.PropertyName" Caption="@column.Title">
<DataGridColumn TItem="TItem" Field="@nameof(IHasExtraProperties.ExtraProperties)" SortField="@column.PropertyName" Caption="@column.Title" Displayable="column.Visible">
<DisplayTemplate>
@{
var entity = context as IHasExtraProperties;

2
framework/src/Volo.Abp.BlazoriseUI/Components/UiMessageAlert.razor

@ -15,7 +15,7 @@
<Icon Name="@MessageIcon" Style="@MessageIconStyle" />
</DisplayHeading>
}
<Paragraph TextAlignment="TextAlignment.Center" Margin="Margin.Is0.FromBottom">
<Paragraph TextAlignment="TextAlignment.Center" Margin="Margin.Is0.FromBottom" Style="white-space: break-spaces;">
@Message
</Paragraph>
</ModalBody>

2
framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/Commands/NewCommand.cs

@ -111,6 +111,8 @@ public class NewCommand : ProjectCreationCommandBase, IConsoleCommand, ITransien
await RunGraphBuildForMicroserviceServiceTemplate(projectArgs);
await CreateInitialMigrationsAsync(projectArgs);
await ConfigureAngularAfterMicroserviceServiceCreatedAsync(projectArgs, template);
var skipInstallLibs = commandLineArgs.Options.ContainsKey(Options.SkipInstallingLibs.Long) || commandLineArgs.Options.ContainsKey(Options.SkipInstallingLibs.Short);
if (!skipInstallLibs)
{

60
framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/Commands/ProjectCreationCommandBase.cs

@ -1,13 +1,12 @@
using System;
using System.IO;
using System.Text;
using System.Linq;
using System.Threading.Tasks;
using ICSharpCode.SharpZipLib.Core;
using ICSharpCode.SharpZipLib.Zip;
using Microsoft.Extensions.Logging;
using Microsoft.Extensions.Logging.Abstractions;
using NuGet.Versioning;
using NUglify.Helpers;
using Volo.Abp.Cli.ProjectModification;
using Volo.Abp.Cli.Args;
using Volo.Abp.Cli.Bundling;
@ -436,6 +435,7 @@ public abstract class ProjectCreationCommandBase
var isModuleTemplate = ModuleTemplateBase.IsModuleTemplate(projectArgs.TemplateName);
var isWebassembly = projectArgs.UiFramework == UiFramework.Blazor;
var message = isWebassembly || isModuleTemplate
? "Generating bundles for Blazor Wasm"
: "Generating bundles for MAUI Blazor";
@ -453,6 +453,7 @@ public abstract class ProjectCreationCommandBase
var searchPattern = isWebassembly ? "*.Blazor.csproj" : "*.MauiBlazor.csproj";
var path = projectArgs.OutputFolder;
if (isWebassembly && Directory.GetFiles(path, "*.Blazor.Client.csproj", SearchOption.AllDirectories).Any())
{
searchPattern = "*.Blazor.Client.csproj";
@ -720,7 +721,7 @@ public abstract class ProjectCreationCommandBase
protected virtual ThemeStyle? GetThemeStyleOrNull(CommandLineArgs commandLineArgs, Theme theme)
{
if(theme != Theme.LeptonX)
if (theme != Theme.LeptonX)
{
return null;
}
@ -758,6 +759,59 @@ public abstract class ProjectCreationCommandBase
}
}
protected virtual async Task ConfigureAngularAfterMicroserviceServiceCreatedAsync(ProjectBuildArgs projectArgs, string template)
{
if (!MicroserviceServiceTemplateBase.IsMicroserviceServiceTemplate(projectArgs.TemplateName))
{
return;
}
var rootPath = Directory.GetCurrentDirectory();
var uiFramework = FindMicroserviceSolutionUiFramework(rootPath);
if (uiFramework != UiFramework.Angular)
{
return;
}
Logger.LogInformation("Setting up the angular library...");
var libraryName = projectArgs.SolutionName.ProjectName.ToKebabCase();
var angularAppPath = Path.Combine(rootPath, "apps", "angular");
var result = await CreateAngularLibraryAsync(libraryName, angularAppPath);
Logger.LogInformation(result);
}
protected virtual async Task<string> CreateAngularLibraryAsync(
string libraryName,
string workingDirectory,
bool isSecondaryEndpoint = false,
bool isModuleTemplate = true,
bool isOverride = true)
{
//TODO: Can we improve this validations ?
if (string.IsNullOrWhiteSpace(libraryName))
{
throw new CliUsageException("Angular library name can not be empty");
}
if (string.IsNullOrWhiteSpace(workingDirectory))
{
throw new CliUsageException("Angular project path can not be empty");
}
var commandBuilder = new StringBuilder($"npx ng g @abp/ng.schematics:create-lib --package-name {libraryName}");
commandBuilder.Append($" --is-secondary-entrypoint {isSecondaryEndpoint.ToString().ToLower()}");
commandBuilder.Append($" --is-module-template {isModuleTemplate.ToString().ToLower()}");
commandBuilder.Append($" --override {isOverride.ToString().ToLower()}");
var result = CmdHelper.RunCmdAndGetOutput(commandBuilder.ToString(), workingDirectory);
return await Task.FromResult(result);
}
public static class Options
{
public static class Template

4
npm/ng-packs/packages/schematics/src/commands/create-lib/files-package/__libraryName@kebab__/src/lib/__libraryName@kebab__-routing.module.ts.template

@ -1,12 +1,12 @@
import { NgModule } from '@angular/core';
import { DynamicLayoutComponent } from '@abp/ng.core';
import { RouterOutletComponent } from '@abp/ng.core';
import { Routes, RouterModule } from '@angular/router';
const routes: Routes = [
{
path: '',
pathMatch: 'full',
component: DynamicLayoutComponent,
component: RouterOutletComponent,
children: [],
},
];

Loading…
Cancel
Save