Skip to content

Commit 9c8eebf

Browse files
fix: apply the minCharacterToSearch validator for object value
1 parent 9ed6231 commit 9c8eebf

File tree

3 files changed

+35
-15
lines changed

3 files changed

+35
-15
lines changed

src/core_modules/capture-core/utils/validation/getValidators.ts

Lines changed: 4 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,7 @@ import {
2121
isValidDate,
2222
isValidNonFutureDate,
2323
isValidDateTime,
24+
isValidMinCharactersToSearch,
2425
getNumberRangeValidator,
2526
getDateRangeValidator,
2627
getDateTimeRangeValidator,
@@ -257,27 +258,15 @@ function buildCompulsoryValidator(metaData: DataElement): Array<ValidatorContain
257258
}
258259

259260
function buildMinCharactersToSearchValidator(metaData: DataElement): Array<ValidatorContainer> {
260-
const { minCharactersToSearch, unique, optionSet } = metaData;
261+
const { minCharactersToSearch } = metaData;
261262

262-
if (minCharactersToSearch === undefined || minCharactersToSearch === 0 || unique || optionSet) {
263+
if (minCharactersToSearch === undefined || minCharactersToSearch === 0) {
263264
return [];
264265
}
265266

266267
return [
267268
{
268-
validator: (value) => {
269-
if (value === undefined || typeof value !== 'string') {
270-
return true;
271-
}
272-
273-
const trimmedValue = value.trim();
274-
275-
if (trimmedValue === '') {
276-
return true;
277-
}
278-
279-
return minCharactersToSearch <= trimmedValue.length;
280-
},
269+
validator: value => isValidMinCharactersToSearch(value, minCharactersToSearch),
281270
message: errorMessages.MIN_CHARACTERS_TO_SEARCH(metaData),
282271
errorMessage: errorMessages.MIN_CHARACTERS_TO_SEARCH(metaData),
283272
},

src/core_modules/capture-core/utils/validation/validators/form/index.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,3 +8,4 @@ export { getDateTimeRangeValidator } from './getDateTimeRangeValidator';
88
export { getNumberRangeValidator } from './getNumberRangeValidator';
99
export { getTimeRangeValidator } from './getTimeRangeValidator';
1010
export { isValidNonFutureAge } from './isValidNonFutureAge';
11+
export { isValidMinCharactersToSearch } from './isValidMinCharactersToSearch';
Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,30 @@
1+
const isValueBiggerThanMinCharactersToSearch = (value: string, minCharactersToSearch: number) => {
2+
const trimmedValue = value.trim();
3+
if (trimmedValue === '') {
4+
return true;
5+
}
6+
return minCharactersToSearch <= trimmedValue.length;
7+
};
8+
9+
export const isValidMinCharactersToSearch = (value: any, minCharactersToSearch: number) => {
10+
if (value === undefined) {
11+
return true;
12+
}
13+
14+
if (typeof value == 'string') {
15+
return isValueBiggerThanMinCharactersToSearch(value, minCharactersToSearch);
16+
}
17+
18+
if ('from' in value && 'to' in value) {
19+
return (
20+
isValueBiggerThanMinCharactersToSearch(value.from, minCharactersToSearch) &&
21+
isValueBiggerThanMinCharactersToSearch(value.to, minCharactersToSearch)
22+
);
23+
}
24+
25+
if ('date' in value) {
26+
return isValueBiggerThanMinCharactersToSearch(value.date, minCharactersToSearch);
27+
}
28+
29+
return true;
30+
};

0 commit comments

Comments
 (0)