Skip to content

Commit

Permalink
MVP
Browse files Browse the repository at this point in the history
  • Loading branch information
arodidev committed May 29, 2024
1 parent d1f1b33 commit ecb2b4a
Show file tree
Hide file tree
Showing 2 changed files with 21 additions and 0 deletions.
5 changes: 5 additions & 0 deletions src/registry/inbuilt-components/inbuiltValidators.ts
Original file line number Diff line number Diff line change
@@ -1,3 +1,4 @@
import { conditionalAnsweredValidator } from '../../validators/conditional-answered-validator';
import { type FormFieldValidator } from '../../types';
import { DateValidator } from '../../validators/date-validator';
import { DefaultValueValidator } from '../../validators/default-value-validator';
Expand Down Expand Up @@ -25,4 +26,8 @@ export const inbuiltValidators: Array<RegistryItem<FormFieldValidator>> = [
name: 'js_expression',
component: ExpressionValidator,
},
{
name: 'conditionalAnswered',
component: conditionalAnsweredValidator,
},
];
16 changes: 16 additions & 0 deletions src/validators/conditional-answered-validator.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
import { type FormFieldValidator, type FormField } from '../types';

export const conditionalAnsweredValidator: FormFieldValidator = {
validate: function (field: FormField, value: unknown, config: Record<string, any>) {
const { referenceQuestionId, referenceQuestionAnswers, values, fields, message } = config;

const referencedField = fields.find((field) => field.id === referenceQuestionId);
const referencedFieldValue = referencedField.meta?.submission?.newValue?.value || values[referencedField.id];

if (!referencedFieldValue || !referenceQuestionAnswers.includes(referencedFieldValue)) {
return [{ resultType: 'error', errCode: 'invalid.valueSelected', message: message }];
}

return [];
},
};

0 comments on commit ecb2b4a

Please sign in to comment.