Skip to content

Commit 2e9d939

Browse files
committed
update validations for scorecard form
1 parent 33f7ed6 commit 2e9d939

File tree

3 files changed

+30
-9
lines changed

3 files changed

+30
-9
lines changed

src/apps/review/src/pages/scorecards/EditScorecardPage/components/ScorecardInfoForm.tsx

Lines changed: 7 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -28,14 +28,15 @@ export const scorecardInfoSchema = {
2828
.required('Category is required'),
2929
maxScore: yup
3030
.number()
31-
.typeError('Max. Score must be a number')
32-
.required('Max. Score is required')
33-
.moreThan(yup.ref('minScore'), 'Max. Score must be greater than Min. Score'),
31+
.typeError('Max score must be a number')
32+
.required('Max score is required')
33+
.moreThan(yup.ref('minScore'), 'Max score must be greater than min score')
34+
.max(100, 'Max score must be lower than 100'),
3435
minScore: yup
3536
.number()
36-
.typeError('Min. Score must be a number')
37-
.required('Min. Score is required')
38-
.min(0, 'Min. Score must be at least 0'),
37+
.typeError('Min Score must be a number')
38+
.required('Min Score is required')
39+
.min(0, 'Min Score must be at least 0'),
3940
name: yup.string()
4041
.required('Scorecard Name is required'),
4142
status: yup.string()

src/apps/review/src/pages/scorecards/EditScorecardPage/components/ScorecardQuestionForm.tsx

Lines changed: 21 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,15 @@ export const scorecardQuestionSchema = {
2929
.required('Description is required'),
3030
guidelines: yup.string()
3131
.nullable(),
32+
requiresUpload: yup.boolean()
33+
.transform((value, originalValue) => {
34+
// Handle empty string as undefined (so required() can catch it)
35+
if (originalValue === "") return undefined;
36+
37+
// Yup already transforms "true"/"false" strings into booleans
38+
return value;
39+
}).required()
40+
.required('Documents requirements is required'),
3241
type: yup.string()
3342
.required('Scale is required'),
3443
weight: yup
@@ -168,7 +177,18 @@ const ScorecardQuestionForm: FC<ScorecardQuestionFormProps> = props => {
168177
name={`${name}.${index}.requiresUpload`}
169178
placeholder='Select Document Requirements'
170179
>
171-
<BasicSelect options={yesNoOptions} />
180+
<BasicSelect
181+
options={yesNoOptions}
182+
onChange={(function handleChangeRequireUpload(
183+
ev: ChangeEvent<HTMLInputElement>,
184+
field: any,
185+
) {
186+
field.onChange({
187+
...ev,
188+
target: { ...ev.target, value: ev.target.value === 'true' },
189+
})
190+
}) as ChangeEventHandler}
191+
/>
172192
</InputWrapper>
173193
</div>
174194
</div>

src/apps/review/src/pages/scorecards/EditScorecardPage/utils.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@ import { Scorecard, ScorecardGroup, ScorecardQuestion, ScorecardSection } from '
77
export const getEmptyScorecardQuestion = (): ScorecardQuestion => ({
88
description: '',
99
guidelines: '',
10-
requiresUpload: false,
10+
requiresUpload: '',
1111
scaleMax: '',
1212
scaleMin: '',
1313
sortOrder: 0,
@@ -61,7 +61,7 @@ export const weightsSum = (
6161
if (!items?.length) return false
6262
const sum = items.reduce((acc, g) => acc + (Number(g.weight) || 0), 0)
6363

64-
if (sum !== 100) {
64+
if (sum !== value) {
6565
// force the error to go into `.root`, otherwise it will overwride the array errors
6666
return ctx.createError({
6767
path: ctx.path.replace(/(\.root$)|$/, '.root'),

0 commit comments

Comments
 (0)