[TLC-1202] Disable fields hidden by type bind, so they are not validated

This commit is contained in:
Kim Shepherd
2025-09-18 14:39:48 +02:00
parent 80865efc2b
commit c47d988bca
2 changed files with 31 additions and 13 deletions

View File

@@ -13,6 +13,8 @@ import {
DynamicFormControlModel, DynamicFormControlModel,
DynamicFormControlRelation, DynamicFormControlRelation,
DynamicFormRelationService, DynamicFormRelationService,
MATCH_DISABLED,
MATCH_ENABLED,
MATCH_VISIBLE, MATCH_VISIBLE,
OR_OPERATOR, OR_OPERATOR,
} from '@ng-dynamic-forms/core'; } from '@ng-dynamic-forms/core';
@@ -217,9 +219,9 @@ export class DsDynamicTypeBindRelationService {
} }
/** /**
* Helper function to construct a typeBindRelations array * Helper function to construct a typeBindRelations array
* @param configuredTypeBindValues * @param configuredTypeBindValues
*/ */
public getTypeBindRelations(configuredTypeBindValues: string[]): DynamicFormControlRelation[] { public getTypeBindRelations(configuredTypeBindValues: string[]): DynamicFormControlRelation[] {
const bindValues = []; const bindValues = [];
configuredTypeBindValues.forEach((value) => { configuredTypeBindValues.forEach((value) => {
@@ -228,11 +230,18 @@ export class DsDynamicTypeBindRelationService {
value: value, value: value,
}); });
}); });
return [{ return [
match: MATCH_VISIBLE, {
operator: OR_OPERATOR, match: MATCH_ENABLED,
when: bindValues, operator: OR_OPERATOR,
}]; when: bindValues,
},
{
match: MATCH_VISIBLE,
operator: OR_OPERATOR,
when: bindValues,
},
];
} }
} }

View File

@@ -5,6 +5,8 @@ import {
import { import {
DynamicFormControlLayout, DynamicFormControlLayout,
DynamicFormControlRelation, DynamicFormControlRelation,
MATCH_DISABLED,
MATCH_ENABLED,
MATCH_VISIBLE, MATCH_VISIBLE,
OR_OPERATOR, OR_OPERATOR,
} from '@ng-dynamic-forms/core'; } from '@ng-dynamic-forms/core';
@@ -381,11 +383,18 @@ export abstract class FieldParser {
// Example: Field [x] will be VISIBLE if item type = book OR item type = book_part // Example: Field [x] will be VISIBLE if item type = book OR item type = book_part
// //
// The opposing match value will be the dc.type for the workspace item // The opposing match value will be the dc.type for the workspace item
return [{ return [
match: MATCH_VISIBLE, {
operator: OR_OPERATOR, match: MATCH_ENABLED,
when: bindValues, operator: OR_OPERATOR,
}]; when: bindValues,
},
{
match: MATCH_VISIBLE,
operator: OR_OPERATOR,
when: bindValues,
},
];
} }
protected hasRegex() { protected hasRegex() {