@cnamts/form-builder
Version:
FormBuilder for the French Health Insurance
376 lines (373 loc) • 6.88 kB
text/typescript
/* eslint-disable max-lines */
import { Form } from '../../types';
const scheduleItems = [
{
text: '9h',
value: null
},
{
text: '9h30',
value: 0
},
{
text: '10h',
value: 10
},
{
text: '11h',
value: 11
}
];
export const questionForm: Form = {
section1: {
title: 'Champs textes',
description: 'Champs textes, date et périodes et leurs sous-types.',
questions: {
questionString: {
type: 'text',
value: null,
fieldOptions: {
label: 'Votre nom',
outlined: true
}
},
questionPassword: {
type: 'text',
value: null,
fieldOptions: {
type: 'password',
label: 'Votre mot de passe',
outlined: true
}
},
questionNumber: {
type: 'number',
value: null,
fieldOptions: {
label: 'Votre âge',
mask: '###',
outlined: true
}
},
questionTextarea: {
type: 'textarea',
title: 'Vos symptômes',
tooltip: 'Décrivez vos symptômes sous le format suivant :\nJJ/DD/MM : Description',
description: 'Décrivez les symptômes qui vous affectent et leur ordre d’apparition.',
value: null,
fieldOptions: {
label: 'Vos symptômes',
outlined: true
}
},
questionDate: {
type: 'date',
value: null,
fieldOptions: {
outlined: true,
birthdate: true,
textField: {
label: 'Votre date de naissance'
}
}
},
questionPeriod: {
type: 'period',
value: null
}
}
},
section2: {
title: 'Champs de sélection',
questions: {
questionSelect: {
type: 'select',
value: null,
items: scheduleItems,
fieldOptions: {
label: 'Votre horaire de rendez-vous',
outlined: true,
menuProps: {
offsetY: true
}
}
},
questionSelectMultiple: {
type: 'select',
value: {
value: null
},
multiple: true,
items: scheduleItems,
fieldOptions: {
label: 'Vos horaires de rendez-vous',
outlined: true
}
},
questionSelectSliderTick: {
type: 'select',
title: 'Question select slider',
value: {
value: '9.30',
other: null
},
items: scheduleItems,
fieldOptions: {
type: 'choiceSlider'
}
},
questionSelectSliderThumb: {
type: 'select',
title: 'Question select slider thumb',
value: null,
items: scheduleItems,
fieldOptions: {
type: 'choiceSlider',
thumbLabel: true
}
},
questionSelectSliderThumbLabel: {
type: 'select',
title: 'Question select slider thumb with custom label',
value: null,
items: scheduleItems,
fieldOptions: {
labelMin: 'min',
labelMax: 'max',
type: 'choiceSlider',
thumbLabel: true
}
},
questionAutocomplete: {
type: 'select',
title: 'Question avec complétion automatique',
value: null,
items: scheduleItems,
fieldOptions: {
type: 'choiceAutocomplete',
outlined: true,
chips: true,
menuProps: {
offsetY: true
},
label: 'Votre réponse'
}
}
}
},
section3: {
title: 'Section 3',
questions: {
questionChoiceButton: {
type: 'select',
title: 'Souhaitez-vous être contacté par nos services ?',
items: [
{
text: 'Oui',
value: 1
},
{
text: 'Non',
value: 0
}
],
fieldOptions: {
inline: true,
type: 'choiceButton',
hint: 'Vous pourrez choisir le moyen de contact'
}
},
questionChoiceButtonMultiple: {
type: 'select',
title: 'Question choix bouton multiple',
multiple: true,
items: [
{
text: 'Multiple 1',
value: 'test1'
},
{
text: 'Multiple 2',
value: 22
},
{
text: 'Seul 1',
value: 33,
alone: true
},
{
text: 'Seul 2',
value: 44,
alone: true
},
{
text: 'Valeur nulle',
value: null
}
],
fieldOptions: {
type: 'choiceButton'
}
},
questionChoiceButtonTextMultiLine: {
title: 'Question choix bouton plusieurs lignes',
type: 'select',
value: {
value: 1,
other: null
},
items: [
{
text: 'Texte qui permet de tester sur plusieurs lignes',
value: 1
},
{
text: 'Texte 2',
value: 2
}
],
fieldOptions: {
type: 'choiceButton'
}
},
questionChoiceOther: {
title: 'Question choix autre',
multiple: true,
type: 'select',
value: {
value: [0, 1],
other: 'Autre valeur'
},
items: [
{
text: 'S',
value: 0
},
{
text: 'M',
value: 1
},
{
text: 'L',
value: 2,
alone: true
},
{
text: 'XL',
value: 3,
alone: true
}
],
other: {
fieldOptions: {
placeholder: 'Autre'
}
},
fieldOptions: {
type: 'choiceButton',
label: 'Classic field',
outlined: true
}
},
questionChoiceOtherSelected: {
title: 'Question choix autre conditionnel',
description: 'Visible quand le choix « Autre » est sélectionné',
multiple: true,
type: 'select',
value: {
value: 0,
other: 'XXL'
},
items: [
{
text: 'S',
value: 's'
},
{
text: 'M',
value: 1
},
{
text: 'L',
value: 2,
alone: true
},
{
text: 'XL',
value: 3,
alone: true
},
{
text: 'Autre',
value: 0
}
],
other: {
selectedChoice: 0,
label: 'Autre choix',
fieldOptions: {
placeholder: 'Entrez votre taille'
}
},
fieldOptions: {
label: 'Classic field',
outlined: true
}
},
questionChoiceOtherArraySelected: {
title: 'Question choix oui ou non conditionnel',
description: 'Visible quand le choix « Oui » ou « Non » est sélectionné',
multiple: true,
type: 'select',
value: {
value: 'oui',
other: 'justification'
},
items: [
{
text: 'Oui',
value: 'oui'
},
{
text: 'Non',
value: 'non'
}
],
other: [
{
label: 'Merci d\'expliquer les raisons de votre réponse affirmative ?',
selectedChoice: 'oui',
fieldOptions: {
hint: 'Veuillez entrez votre réponse'
}
},
{
label: 'Merci de clarifier les raisons de votre réponse négative ?',
selectedChoice: 'non',
fieldOptions: {
hint: 'Veuillez entrez votre réponse'
}
}
],
fieldOptions: {
outlined: true,
type: 'choiceButton',
inline: true
}
}
}
},
section4: {
title: 'Champs personnalisés',
questions: {
customQuestion: {
type: 'custom',
value: null,
fieldOptions: {
label: 'Question personnalisée',
outlined: true
}
}
}
}
};