diff --git a/Directory.Packages.props b/Directory.Packages.props
index c39ba6790b..4787ed47bc 100644
--- a/Directory.Packages.props
+++ b/Directory.Packages.props
@@ -122,7 +122,7 @@
-
+
diff --git a/abp_io/AbpIoLocalization/AbpIoLocalization/Admin/Localization/Resources/en.json b/abp_io/AbpIoLocalization/AbpIoLocalization/Admin/Localization/Resources/en.json
index 3fd77f45a1..5b713a52ab 100644
--- a/abp_io/AbpIoLocalization/AbpIoLocalization/Admin/Localization/Resources/en.json
+++ b/abp_io/AbpIoLocalization/AbpIoLocalization/Admin/Localization/Resources/en.json
@@ -283,6 +283,7 @@
"ChooseCoverImage": "Choose a cover image...",
"Menu:Quotation": "Quotation",
"Menu:Invoice": "Invoice",
+ "Menu:Quotation/Invoice": "Quotation/Invoice",
"Menu:PaymentRequests": "Payment Requests",
"Permission:PaymentRequests": "Payment Requests",
"PaymentRequests": "Payment Requests",
@@ -600,6 +601,10 @@
"NoChangesDetected": "No changes detected",
"ProductCount": "Product Count",
"Actions": "Actions",
- "CreateInvoice": "Create Invoice"
+ "CreateInvoice": "Create Invoice",
+ "AllowedLicenses": "Allowed Licenses",
+ "AllowedModules": "Allowed Modules",
+ "ModuleName": "Module name",
+ "NonYet": "Non yet"
}
}
diff --git a/docs/en/UI/Angular/Chart-Component.md b/docs/en/UI/Angular/Chart-Component.md
index d165261e18..e2bf2c2e1e 100644
--- a/docs/en/UI/Angular/Chart-Component.md
+++ b/docs/en/UI/Angular/Chart-Component.md
@@ -11,8 +11,8 @@ First of all, need to import the `ChartModule` to your feature module as follows
```ts
// your-feature.module.ts
-import { ChartModule } from '@abp/ng.components/chart.js';
-import { ChartDemoComponent } from './chart-demo.component';
+import { ChartModule } from "@abp/ng.components/chart.js";
+import { ChartDemoComponent } from "./chart-demo.component";
@NgModule({
imports: [
@@ -30,20 +30,20 @@ Then, `abp-chart` component can be used. See an example:
```ts
// chart-demo.component.ts
-import { Component } from '@angular/core';
+import { Component } from "@angular/core";
@Component({
- selector: 'app-chart-demo',
+ selector: "app-chart-demo",
template: ` `,
})
export class ChartDemoComponent {
data = {
- labels: ['Data 1', 'Data 2', 'Data 3'],
+ labels: ["Data 1", "Data 2", "Data 3"],
datasets: [
{
- label: 'Dataset 1',
+ label: "Dataset 1",
data: [40, 15, 45],
- backgroundColor: ['#ff7675', '#fdcb6e', '#0984e3'],
+ backgroundColor: ["#ff7675", "#fdcb6e", "#0984e3"],
},
],
};
@@ -61,10 +61,10 @@ See the result:
### Doughnut
```ts
-import { Component } from '@angular/core';
+import { Component } from "@angular/core";
@Component({
- selector: 'app-chart-demo',
+ selector: "app-chart-demo",
template: `
`,
})
export class ChartDemoComponent {
data = {
- labels: ['Data 1', 'Data 2', 'Data 3'],
+ labels: ["Data 1", "Data 2", "Data 3"],
datasets: [
{
- label: 'Dataset 1',
+ label: "Dataset 1",
data: [40, 15, 45],
- backgroundColor: ['#a0e6c3', '#f0ea4c', '#5b9dc3'],
+ backgroundColor: ["#a0e6c3", "#f0ea4c", "#5b9dc3"],
},
],
};
@@ -91,14 +92,22 @@ export class ChartDemoComponent {
plugins: {
title: {
display: true,
- text: 'Doughnut Chart',
+ text: "Doughnut Chart",
fontSize: 16,
},
legend: {
- position: 'bottom',
+ position: "bottom",
},
},
};
+
+ myPlugin = [
+ {
+ afterRender: (chart, args, options) => {
+ console.log("chart has been rendered");
+ },
+ },
+ ];
}
```
@@ -109,10 +118,10 @@ Result:
### Bar
```ts
-import { Component } from '@angular/core';
+import { Component } from "@angular/core";
@Component({
- selector: 'app-chart-demo',
+ selector: "app-chart-demo",
template: `
t.ComponentType != PageLayout.ToolbarItems[i].ComponentType).Any();
+ }
protected async override Task OnInitializedAsync()
{
diff --git a/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bundling/Volo/Abp/AspNetCore/Mvc/UI/Bundling/TagHelpers/AbpTagHelperResourceService.cs b/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bundling/Volo/Abp/AspNetCore/Mvc/UI/Bundling/TagHelpers/AbpTagHelperResourceService.cs
index 9be91c535f..ea5ecc8edc 100644
--- a/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bundling/Volo/Abp/AspNetCore/Mvc/UI/Bundling/TagHelpers/AbpTagHelperResourceService.cs
+++ b/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bundling/Volo/Abp/AspNetCore/Mvc/UI/Bundling/TagHelpers/AbpTagHelperResourceService.cs
@@ -98,7 +98,7 @@ public abstract class AbpTagHelperResourceService : ITransientDependency
protected virtual void AddErrorScript(ViewContext viewContext, TagHelper tagHelper, TagHelperContext context, TagHelperOutput output, BundleFile file, string bundleName)
{
- output.Content.AppendHtml($"{Environment.NewLine}");
+ output.Content.AppendHtml($"{Environment.NewLine}");
}
protected virtual string GenerateBundleName(List bundleItems)
diff --git a/framework/src/Volo.Abp.BlazoriseUI/Components/AbpExtensibleDataGrid.razor b/framework/src/Volo.Abp.BlazoriseUI/Components/AbpExtensibleDataGrid.razor
index 522140811e..b38f4afaa9 100644
--- a/framework/src/Volo.Abp.BlazoriseUI/Components/AbpExtensibleDataGrid.razor
+++ b/framework/src/Volo.Abp.BlazoriseUI/Components/AbpExtensibleDataGrid.razor
@@ -23,7 +23,7 @@
- No data available
+ No data available
diff --git a/framework/src/Volo.Abp.Ddd.Domain/Volo/Abp/Domain/Values/ValueObject.cs b/framework/src/Volo.Abp.Ddd.Domain/Volo/Abp/Domain/Values/ValueObject.cs
index 4c9dab3487..acc0dcd59a 100644
--- a/framework/src/Volo.Abp.Ddd.Domain/Volo/Abp/Domain/Values/ValueObject.cs
+++ b/framework/src/Volo.Abp.Ddd.Domain/Volo/Abp/Domain/Values/ValueObject.cs
@@ -1,4 +1,5 @@
-using System.Collections.Generic;
+using System;
+using System.Collections.Generic;
using System.Linq;
namespace Volo.Abp.Domain.Values;
@@ -30,7 +31,14 @@ public abstract class ValueObject
return false;
}
- if (thisValues.Current != null && !thisValues.Current.Equals(otherValues.Current))
+ if (thisValues.Current is ValueObject currentValueObject && otherValues.Current is ValueObject otherValueObject)
+ {
+ if (!currentValueObject.ValueEquals(otherValueObject))
+ {
+ return false;
+ }
+ }
+ else if (thisValues.Current != null && !thisValues.Current.Equals(otherValues.Current))
{
return false;
}
diff --git a/framework/test/Volo.Abp.Ddd.Tests/Volo/Abp/Domain/Values/AddressWithZipCode.cs b/framework/test/Volo.Abp.Ddd.Tests/Volo/Abp/Domain/Values/AddressWithZipCode.cs
new file mode 100644
index 0000000000..84f65d4128
--- /dev/null
+++ b/framework/test/Volo.Abp.Ddd.Tests/Volo/Abp/Domain/Values/AddressWithZipCode.cs
@@ -0,0 +1,63 @@
+using System;
+using System.Collections.Generic;
+
+namespace Volo.Abp.Domain.Values;
+
+public class AddressWithZipCode : ValueObject
+{
+ public Guid CityId { get; }
+
+ public string Street { get; }
+
+ public int Number { get; }
+
+ public ZipCode ZipCode { get; }
+
+ public string[] Tags { get; }
+
+ private AddressWithZipCode()
+ {
+ }
+
+ public AddressWithZipCode(
+ Guid cityId,
+ string street,
+ int number,
+ ZipCode zipCode,
+ params string[] tags)
+ {
+ CityId = cityId;
+ Street = street;
+ Number = number;
+ ZipCode = zipCode;
+ Tags = tags;
+ }
+
+ //Requires to implement this method to return properties.
+ protected override IEnumerable