Skip to content

Commit 5560aa7

Browse files
Merge pull request #190 from communitiesuk/BAU-handle-checkboxes-repopulation
BAU: Handle checkbox repopulation for values containing commas
2 parents 28dcf56 + 6510db8 commit 5560aa7

File tree

2 files changed

+22
-1
lines changed

2 files changed

+22
-1
lines changed
Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
import {
2+
CheckboxesField as CoreCheckboxesField
3+
} from "../../../../../../digital-form-builder/runner/src/server/plugins/engine/components";
4+
import { FormData, FormSubmissionErrors } from '@xgovformbuilder/runner/plugins/engine/types';
5+
6+
export class CheckboxesField extends CoreCheckboxesField {
7+
getViewModel(formData: FormData, errors: FormSubmissionErrors) {
8+
const viewModel = super.getViewModel(formData, errors);
9+
// Assumes that checkbox values containing commas should be followed by a space (e.g., "Option 1, Option 2").
10+
// Ensures consistent splitting, as list items are separated by commas without spaces.
11+
12+
let formDataItems = (formData[this.name] ?? "").split(/,(?!\s)/g);
13+
viewModel.items = (viewModel.items ?? []).map((item) => ({
14+
...item,
15+
checked: !!formDataItems.find((i) => `${item.value}` === i),
16+
}));
17+
18+
return viewModel;
19+
}
20+
}
21+

runner/src/server/plugins/engine/components/index.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@ export {
99
} from "../../../../../../digital-form-builder/runner/src/server/plugins/engine/components/AutocompleteField";
1010
export {
1111
CheckboxesField
12-
} from "../../../../../../digital-form-builder/runner/src/server/plugins/engine/components/CheckboxesField";
12+
} from "./CheckboxesField";
1313
export {ComponentBase as Component} from "./ComponentBase";
1414
export {ComponentCollection} from "./ComponentCollection";
1515
export {DateField} from "../../../../../../digital-form-builder/runner/src/server/plugins/engine/components/DateField";

0 commit comments

Comments
 (0)