diff --git a/npm/ng-packs/packages/theme-shared/extensions/src/lib/components/extensible-form/extensible-form-prop.component.html b/npm/ng-packs/packages/theme-shared/extensions/src/lib/components/extensible-form/extensible-form-prop.component.html
index 3c94b3123e..26dcbf1297 100644
--- a/npm/ng-packs/packages/theme-shared/extensions/src/lib/components/extensible-form/extensible-form-prop.component.html
+++ b/npm/ng-packs/packages/theme-shared/extensions/src/lib/components/extensible-form/extensible-form-prop.component.html
@@ -153,6 +153,10 @@
[formControlName]="prop.name"
>
+
+ {{
+ prop.formText | abpLocalization
+ }}
diff --git a/npm/ng-packs/packages/theme-shared/extensions/src/lib/models/form-props.ts b/npm/ng-packs/packages/theme-shared/extensions/src/lib/models/form-props.ts
index 47a64142e6..8db6db57f4 100644
--- a/npm/ng-packs/packages/theme-shared/extensions/src/lib/models/form-props.ts
+++ b/npm/ng-packs/packages/theme-shared/extensions/src/lib/models/form-props.ts
@@ -71,6 +71,7 @@ export class FormProp extends Prop {
readonly className?: string;
readonly group?: FormPropGroup | undefined;
readonly displayTextResolver?: PropDisplayTextResolver;
+ readonly formText?: string;
constructor(options: FormPropOptions) {
super(
@@ -82,10 +83,11 @@ export class FormProp extends Prop {
options.isExtra,
options.template,
options.className,
+ options.formText,
);
this.group = options.group;
this.className = options.className;
-
+ this.formText = options.formText;
this.asyncValidators = options.asyncValidators || (_ => []);
this.validators = options.validators || (_ => []);
this.disabled = options.disabled || (_ => false);
@@ -132,6 +134,7 @@ export type FormPropOptions = O.Optional<
| 'options'
| 'id'
| 'displayTextResolver'
+ | 'formText'
>;
export type CreateFormPropDefaults = Record[]>;
diff --git a/npm/ng-packs/packages/theme-shared/extensions/src/lib/models/internal/object-extensions.ts b/npm/ng-packs/packages/theme-shared/extensions/src/lib/models/internal/object-extensions.ts
index 811b0a04f3..b89cd0216d 100644
--- a/npm/ng-packs/packages/theme-shared/extensions/src/lib/models/internal/object-extensions.ts
+++ b/npm/ng-packs/packages/theme-shared/extensions/src/lib/models/internal/object-extensions.ts
@@ -60,6 +60,7 @@ export interface ExtensionPropertyDto {
attributes: ExtensionPropertyAttributeDto[];
configuration: Record;
defaultValue: any;
+ formText?: string;
}
export interface ExtensionPropertyUiDto {
diff --git a/npm/ng-packs/packages/theme-shared/extensions/src/lib/models/props.ts b/npm/ng-packs/packages/theme-shared/extensions/src/lib/models/props.ts
index 867380e9d8..799702bc70 100644
--- a/npm/ng-packs/packages/theme-shared/extensions/src/lib/models/props.ts
+++ b/npm/ng-packs/packages/theme-shared/extensions/src/lib/models/props.ts
@@ -35,6 +35,7 @@ export abstract class Prop {
public readonly isExtra = false,
public readonly template?: Type,
public readonly className?: string,
+ public readonly formText?: string,
public readonly displayTextResolver?: PropDisplayTextResolver,
) {
this.displayName = this.displayName || this.name;
diff --git a/npm/ng-packs/packages/theme-shared/extensions/src/lib/utils/state.util.ts b/npm/ng-packs/packages/theme-shared/extensions/src/lib/utils/state.util.ts
index ef5fef48c3..2d545c1162 100644
--- a/npm/ng-packs/packages/theme-shared/extensions/src/lib/utils/state.util.ts
+++ b/npm/ng-packs/packages/theme-shared/extensions/src/lib/utils/state.util.ts
@@ -4,25 +4,25 @@ import {
ConfigStateService,
ExtensionEnumDto,
ExtensionPropertyUiLookupDto,
- ObjectExtensionsDto
-} from "@abp/ng.core";
-import { Observable, pipe, zip } from "rxjs";
-import { filter, map, switchMap, take } from "rxjs/operators";
-import { ePropType } from "../enums/props.enum";
-import { EntityProp, EntityPropList } from "../models/entity-props";
-import { FormProp, FormPropList } from "../models/form-props";
-import { ObjectExtensions } from "../models/object-extensions";
-import { PropCallback } from "../models/props";
-import { createEnum, createEnumOptions, createEnumValueResolver } from "./enum.util";
-import { createDisplayNameLocalizationPipeKeyGenerator } from "./localization.util";
-import { createExtraPropertyValueResolver } from "./props.util";
+ ObjectExtensionsDto,
+} from '@abp/ng.core';
+import { Observable, pipe, zip } from 'rxjs';
+import { filter, map, switchMap, take } from 'rxjs/operators';
+import { ePropType } from '../enums/props.enum';
+import { EntityProp, EntityPropList } from '../models/entity-props';
+import { FormProp, FormPropList } from '../models/form-props';
+import { ObjectExtensions } from '../models/object-extensions';
+import { PropCallback } from '../models/props';
+import { createEnum, createEnumOptions, createEnumValueResolver } from './enum.util';
+import { createDisplayNameLocalizationPipeKeyGenerator } from './localization.util';
+import { createExtraPropertyValueResolver } from './props.util';
import {
createTypeaheadDisplayNameGenerator,
createTypeaheadOptions,
getTypeaheadType,
- hasTypeaheadTextSuffix
-} from "./typeahead.util";
-import { getValidatorsFromProperty } from "./validation.util";
+ hasTypeaheadTextSuffix,
+} from './typeahead.util';
+import { getValidatorsFromProperty } from './validation.util';
function selectObjectExtensions(configState: ConfigStateService): Observable {
return configState.getOne$('objectExtensions');
@@ -141,10 +141,10 @@ function createPropertiesToContributorsMapper(
if (property.ui.onTable.isVisible) {
const sortable = Boolean(property.ui.onTable.isSortable);
const columnWidth = type === ePropType.Boolean ? 150 : 250;
- const valueResolver: PropCallback> =
- type === ePropType.Enum && property.type
- ? createEnumValueResolver(property.type, enums[property.type], propName)
- : createExtraPropertyValueResolver(propName);
+ const valueResolver: PropCallback> = type === ePropType.Enum &&
+ property.type
+ ? createEnumValueResolver(property.type, enums[property.type], propName)
+ : createExtraPropertyValueResolver(propName);
const entityProp = new EntityProp({
type,
@@ -165,6 +165,7 @@ function createPropertiesToContributorsMapper(
if (isOnCreateForm || isOnEditForm) {
const defaultValue = property.defaultValue;
+ const formText = property.formText;
const validators = () => getValidatorsFromProperty(property);
let options: PropCallback[]>> | undefined;
if (type === ePropType.Enum)
@@ -179,6 +180,7 @@ function createPropertiesToContributorsMapper(
defaultValue,
validators,
isExtra,
+ formText,
});
const formContributor = (propList: FormPropList) => propList.addTail(formProp);