Fix field required not-updating on required logic

This commit is contained in:
y.yerli 2025-01-09 12:44:28 +03:00
parent 46b06deff2
commit 0424425848
5 changed files with 7 additions and 3 deletions

View file

@ -184,6 +184,7 @@ export interface Field {
items?: Record[];
readonly?: boolean;
display?: WritableSignal<DisplayType>;
required?: WritableSignal<boolean>;
defaultDisplay?: string;
default?: string;
defaultValueModes?: ViewMode[];
@ -219,6 +220,7 @@ export class BaseField implements Field {
dynamicLabelKey?: string;
readonly?: boolean;
display?: WritableSignal<DisplayType>;
required?: WritableSignal<boolean>;
defaultDisplay?: string;
default?: string;
defaultValueModes?: ViewMode[];
@ -250,6 +252,7 @@ export class BaseField implements Field {
this.valueSubject = new BehaviorSubject<FieldValue>({} as FieldValue);
this.valueChanges$ = this.valueSubject.asObservable();
this.display = signal('default');
this.required = signal(false);
}
get value(): string {

View file

@ -38,7 +38,7 @@
<div class="{{col?.headerColumnClass}} field-layout-field-label-wrapper col-form-label label-container">
<strong>
<ng-container
*ngIf="col.field.definition.required && (['edit', 'create'].includes(config.mode))">
*ngIf="col.field?.required() && (['edit', 'create'].includes(config.mode))">
<span class="required">*</span>
</ng-container>
<label [ngClass]="labelClass">{{col.field.label | uppercase}}</label>

View file

@ -41,7 +41,7 @@
<span class="field-group-label pr-1">
<label *ngIf="attribute.labelKey && showLabel(attribute)">
<scrm-label [labelKey]="attribute.labelKey" [module]="getModule()"></scrm-label>
<ng-container *ngIf="attribute.definition.required && (['edit', 'create'].includes(mode))">
<ng-container *ngIf="attribute?.required() && (['edit', 'create'].includes(mode))">
<span class="required">*</span>
</ng-container>
</label>

View file

@ -84,7 +84,7 @@ export class RequiredAction extends FieldLogicActionHandler {
data.field.formControl.updateValueAndValidity({onlySelf: true, emitEvent: true});
record.formGroup.updateValueAndValidity({onlySelf: true, emitEvent: true});
data.field.definition.required = required;
data.field.required.set(required);
data.field.formControl.setValidators(validators);
data.field.formControl.updateValueAndValidity({onlySelf: true, emitEvent: true});
record.formGroup.updateValueAndValidity({onlySelf: true, emitEvent: true});

View file

@ -186,6 +186,7 @@ export class FieldBuilder {
field.vardefBased = viewField?.vardefBased ?? definition?.vardefBased ?? false;
field.readonly = isTrue(viewField.readonly) || isTrue(definition.readonly) || false;
field.display = signal((viewField.display || definition.display || 'default') as DisplayType);
field.required = signal(isTrue(definition?.required) ?? isTrue(viewField?.fieldDefinition?.required) ?? false);
field.defaultDisplay = field?.display();
if (field.defaultDisplay === 'default') {
field.defaultDisplay = 'show';