form-studio
Version:
A tool that helps design, create and manage form / survey / questionnaire through simple JSON configurations.
47 lines (46 loc) • 1.97 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.sanitizeConfigs = void 0;
const sanitizeConfigs = (configs) => ({
groups: configs.groups ? sanitizeGroupConfigs(undefined, configs.groups) : [],
questions: configs.questions ? sanitizeQuestionConfigs(undefined, configs.questions) : []
});
exports.sanitizeConfigs = sanitizeConfigs;
const sanitizeGroupConfigs = (parentGroupId, groups) => groups.map((group, i) => {
const id = group.id ?? (parentGroupId ? `${parentGroupId}_g${i}` : `g${i}`);
return {
id,
defaultDisabled: !!group.defaultDisabled,
enabledOnSelected: group.enabledOnSelected,
disabledOnSelected: group.disabledOnSelected,
custom: group.custom,
groups: group.groups ? sanitizeGroupConfigs(id, group.groups) : [],
questions: group.questions ? sanitizeQuestionConfigs(id, group.questions) : []
};
});
const sanitizeQuestionConfigs = (groupId, questions) => questions.map((question, i) => {
const id = question.id ?? (groupId ? `${groupId}_q${i}` : `q${i}`);
return {
id,
defaultDisabled: !!question.defaultDisabled,
enabledOnSelected: question.enabledOnSelected,
disabledOnSelected: question.disabledOnSelected,
custom: question.custom,
type: question.type,
choices: question.type !== 'any' ? sanitizeChoiceConfigs(id, question.choices ?? []) : [],
validators: question.validators ?? [],
defaultAnswer: question.defaultAnswer
};
});
const sanitizeChoiceConfigs = (questionId, choices) => choices.map((choice, i) => {
const id = choice.id ?? `${questionId}_c${i}`;
return {
id,
defaultDisabled: !!choice.defaultDisabled,
enabledOnSelected: choice.enabledOnSelected,
disabledOnSelected: choice.disabledOnSelected,
custom: choice.custom,
value: choice.value ?? id,
onSelected: choice.onSelected
};
});