@@ -31,20 +31,24 @@ const fieldCondition = (value, { is, isNotEmpty, isEmpty, pattern, notMatch, fla
3131export const parseCondition = ( condition , values ) => {
3232 let positiveResult = {
3333 visible : true ,
34- ...condition . then
34+ ...condition . then ,
35+ result : true
3536 } ;
3637
3738 let negativeResult = {
3839 visible : false ,
39- ...condition . else
40+ ...condition . else ,
41+ result : false
4042 } ;
4143
4244 if ( Array . isArray ( condition ) ) {
43- return ! condition . map ( ( condition ) => parseCondition ( condition , values ) ) . some ( ( result ) => result === false ) ? positiveResult : negativeResult ;
45+ return ! condition . map ( ( condition ) => parseCondition ( condition , values ) ) . some ( ( { result } ) => result === false ) ? positiveResult : negativeResult ;
4446 }
4547
4648 if ( condition . and ) {
47- return ! condition . and . map ( ( condition ) => parseCondition ( condition , values ) ) . some ( ( result ) => result === false ) ? positiveResult : negativeResult ;
49+ return ! condition . and . map ( ( condition ) => parseCondition ( condition , values ) ) . some ( ( { result } ) => result === false )
50+ ? positiveResult
51+ : negativeResult ;
4852 }
4953
5054 if ( condition . sequence ) {
@@ -53,20 +57,21 @@ export const parseCondition = (condition, values) => {
5357 const result = parseCondition ( curr , values ) ;
5458
5559 return {
56- sets : [ ...acc . sets , ...[ result . set ? result . set : [ ] ] ] ,
57- visible : acc . visible || result . visible
60+ sets : [ ...acc . sets , ...( result . set ? [ result . set ] : [ ] ) ] ,
61+ visible : acc . visible || result . visible ,
62+ result : acc . result || result . result
5863 } ;
5964 } ,
6065 { ...negativeResult , sets : [ ] }
6166 ) ;
6267 }
6368
6469 if ( condition . or ) {
65- return condition . or . map ( ( condition ) => parseCondition ( condition , values ) ) . some ( ( result ) => result === true ) ? positiveResult : negativeResult ;
70+ return condition . or . map ( ( condition ) => parseCondition ( condition , values ) ) . some ( ( { result } ) => result === true ) ? positiveResult : negativeResult ;
6671 }
6772
6873 if ( condition . not ) {
69- return ! parseCondition ( condition . not , values ) ? positiveResult : negativeResult ;
74+ return ! parseCondition ( condition . not , values ) . result ? positiveResult : negativeResult ;
7075 }
7176
7277 if ( typeof condition . when === 'string' ) {
0 commit comments