Skip to content

Commit f92c49a

Browse files
committed
fix(renderer): add missing condition mapper attribute
1 parent a6b85fd commit f92c49a

File tree

4 files changed

+15
-15
lines changed

4 files changed

+15
-15
lines changed

packages/react-form-renderer/src/get-condition-triggers/get-condition-triggers.js

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@ const mergeFunctionTrigger = (fn, field) => {
1313
const getConditionTriggers = (condition, field, conditionMapper = {}) => {
1414
let triggers = [];
1515
if (Array.isArray(condition)) {
16-
return condition.reduce((acc, item) => [...acc, ...getConditionTriggers(item, field)], []);
16+
return condition.reduce((acc, item) => [...acc, ...getConditionTriggers(item, field, conditionMapper)], []);
1717
}
1818

1919
// extract mapped attributes to a new static condition object
@@ -58,13 +58,13 @@ const getConditionTriggers = (condition, field, conditionMapper = {}) => {
5858
nestedKeys.forEach((key) => {
5959
if (typeof rest[key] !== 'undefined') {
6060
rest[key].forEach((item) => {
61-
triggers = [...triggers, ...getConditionTriggers(item, field)];
61+
triggers = [...triggers, ...getConditionTriggers(item, field, conditionMapper)];
6262
});
6363
}
6464
});
6565

6666
if (typeof condition.not === 'object') {
67-
triggers = [...triggers, ...getConditionTriggers(condition.not, field)];
67+
triggers = [...triggers, ...getConditionTriggers(condition.not, field, conditionMapper)];
6868
}
6969

7070
return Array.from(new Set(triggers));

packages/react-form-renderer/src/get-visible-fields/get-visible-fields.js

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,17 +1,17 @@
11
import parseCondition from '../parse-condition';
22

3-
const getVisibleFields = (schema, values) => {
3+
const getVisibleFields = (schema, values, conditionMapper) => {
44
if (Array.isArray(schema)) {
5-
return schema.map((field) => getVisibleFields(field, values)).filter(Boolean);
5+
return schema.map((field) => getVisibleFields(field, values, undefined, conditionMapper)).filter(Boolean);
66
}
77

88
if (schema.condition) {
9-
const result = parseCondition(schema.condition, values, schema);
9+
const result = parseCondition(schema.condition, values, schema, conditionMapper);
1010

1111
if (result.visible) {
1212
return {
1313
...schema,
14-
...(schema.fields && { fields: getVisibleFields(schema.fields, values).filter(Boolean) }),
14+
...(schema.fields && { fields: getVisibleFields(schema.fields, values, undefined, conditionMapper).filter(Boolean) }),
1515
};
1616
} else {
1717
return null;
@@ -20,7 +20,7 @@ const getVisibleFields = (schema, values) => {
2020

2121
return {
2222
...schema,
23-
...(schema.fields && { fields: getVisibleFields(schema.fields, values).filter(Boolean) }),
23+
...(schema.fields && { fields: getVisibleFields(schema.fields, values, undefined, conditionMapper).filter(Boolean) }),
2424
};
2525
};
2626

packages/react-form-renderer/src/parse-condition/parse-condition.js

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -89,23 +89,23 @@ export const parseCondition = (condition, values, field, conditionMapper = {}) =
8989
};
9090

9191
if (Array.isArray(condition)) {
92-
return !condition.map((condition) => parseCondition(condition, values, field)).some(({ result }) => result === false)
92+
return !condition.map((condition) => parseCondition(condition, values, field, conditionMapper)).some(({ result }) => result === false)
9393
? positiveResult
9494
: negativeResult;
9595
}
9696

9797
const conditionInternal = unpackMappedCondition(condition, conditionMapper);
9898

9999
if (conditionInternal.and) {
100-
return !conditionInternal.and.map((condition) => parseCondition(condition, values, field)).some(({ result }) => result === false)
100+
return !conditionInternal.and.map((condition) => parseCondition(condition, values, field, conditionMapper)).some(({ result }) => result === false)
101101
? positiveResult
102102
: negativeResult;
103103
}
104104

105105
if (conditionInternal.sequence) {
106106
return conditionInternal.sequence.reduce(
107107
(acc, curr) => {
108-
const result = parseCondition(curr, values, field);
108+
const result = parseCondition(curr, values, field, conditionMapper);
109109

110110
return {
111111
sets: [...acc.sets, ...(result.set ? [result.set] : [])],
@@ -118,13 +118,13 @@ export const parseCondition = (condition, values, field, conditionMapper = {}) =
118118
}
119119

120120
if (conditionInternal.or) {
121-
return conditionInternal.or.map((condition) => parseCondition(condition, values, field)).some(({ result }) => result === true)
121+
return conditionInternal.or.map((condition) => parseCondition(condition, values, field, conditionMapper)).some(({ result }) => result === true)
122122
? positiveResult
123123
: negativeResult;
124124
}
125125

126126
if (conditionInternal.not) {
127-
return !parseCondition(conditionInternal.not, values, field).result ? positiveResult : negativeResult;
127+
return !parseCondition(conditionInternal.not, values, field, conditionMapper).result ? positiveResult : negativeResult;
128128
}
129129

130130
const finalWhen = typeof conditionInternal.when === 'function' ? conditionInternal.when(field) : conditionInternal.when;

packages/react-form-renderer/src/validation/validation.js

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -32,7 +32,7 @@ const validation = async (schema, options) => {
3232
throw new Error(`options argument has to be type of object, provided: ${typeof options}`);
3333
}
3434

35-
const { values, componentMapper, validatorMapper, actionMapper, schemaValidatorMapper, omitWarnings } = options;
35+
const { values, componentMapper, validatorMapper, actionMapper, schemaValidatorMapper, omitWarnings, conditionMapper } = options;
3636

3737
const validatorMapperMerged = { ...defaultValidatorMapper, ...validatorMapper };
3838

@@ -49,7 +49,7 @@ const validation = async (schema, options) => {
4949

5050
defaultSchemaValidator(finalSchema, finalComponentMapper, validatorTypes, actionTypes, schemaValidatorMapper);
5151

52-
finalSchema = getVisibleFields(finalSchema, values);
52+
finalSchema = getVisibleFields(finalSchema, values, undefined, conditionMapper);
5353

5454
const validates = getValidates(finalSchema, { componentMapper: finalComponentMapper, actionMapper, values });
5555

0 commit comments

Comments
 (0)