@rsuci/shared-form-components 1.0.63 → 1.0.65
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/components/VariableRenderer.d.ts +1 -0
- package/dist/components/VariableRenderer.d.ts.map +1 -1
- package/dist/components/VariableRenderer.js +2 -2
- package/dist/components/form-renderer/FormRenderer.d.ts.map +1 -1
- package/dist/components/form-renderer/FormRenderer.js +59 -5
- package/dist/hooks/useConditionValidation.d.ts +60 -0
- package/dist/hooks/useConditionValidation.d.ts.map +1 -0
- package/dist/hooks/useConditionValidation.js +209 -0
- package/dist/lib/condition-engine.d.ts +25 -1
- package/dist/lib/condition-engine.d.ts.map +1 -1
- package/dist/lib/condition-engine.js +138 -0
- package/dist/types/enquete.d.ts +13 -0
- package/dist/types/enquete.d.ts.map +1 -1
- package/package.json +1 -1
|
@@ -32,6 +32,7 @@ export interface VariableRendererProps {
|
|
|
32
32
|
services?: any;
|
|
33
33
|
geographicComponents?: any;
|
|
34
34
|
isConsultationMode?: boolean;
|
|
35
|
+
conditionValidationError?: string | null;
|
|
35
36
|
}
|
|
36
37
|
declare const GeographicFallback: React.FC<VariableRendererProps>;
|
|
37
38
|
declare const getVariableRenderer: (typeCode: string, RosterCheckInput?: React.ComponentType<VariableRendererProps>, RosterListInput?: React.ComponentType<VariableRendererProps>) => React.ComponentType<VariableRendererProps>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"VariableRenderer.d.ts","sourceRoot":"","sources":["../../src/components/VariableRenderer.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAmB,MAAM,OAAO,CAAC;AA+BxC,OAAO,KAAK,EAAE,kBAAkB,EAAE,aAAa,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAC1F,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;AACzD,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,0BAA0B,CAAC;AAGlE,MAAM,WAAW,qBAAqB;IACpC,QAAQ,EAAE,kBAAkB,CAAC;IAC7B,KAAK,EAAE,aAAa,CAAC;IACrB,QAAQ,EAAE,CAAC,KAAK,EAAE,aAAa,KAAK,IAAI,CAAC;IACzC,MAAM,CAAC,EAAE,MAAM,IAAI,CAAC;IACpB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,oBAAoB,CAAC,EAAE,CAAC,UAAU,EAAE,gBAAgB,KAAK,IAAI,CAAC;IAC9D,qBAAqB,CAAC,EAAE,CAAC,WAAW,EAAE,iBAAiB,KAAK,IAAI,CAAC;IACjE,mBAAmB,CAAC,EAAE,kBAAkB,EAAE,CAAC;IAC3C,eAAe,CAAC,EAAE,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAC;QAAC,WAAW,CAAC,EAAE,MAAM,CAAC;QAAC,MAAM,CAAC,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,EAAE,MAAM,CAAC;QAAC,WAAW,CAAC,EAAE,MAAM,CAAC;QAAC,cAAc,CAAC,EAAE,OAAO,CAAC;QAAC,YAAY,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IAC1L,YAAY,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,cAAc,CAAC,CAAC;IAC9C,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;IAG/B,gBAAgB,CAAC,EAAE,KAAK,CAAC,aAAa,CAAC,qBAAqB,CAAC,CAAC;IAC9D,eAAe,CAAC,EAAE,KAAK,CAAC,aAAa,CAAC,qBAAqB,CAAC,CAAC;IAC7D,wBAAwB,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,CAAC,MAAM,EAAE,cAAc,CAAC,EAAE,YAAY,CAAC,EAAE,MAAM,KAAK,MAAM,CAAC;IAGvH,QAAQ,CAAC,EAAE,GAAG,CAAC;IACf,oBAAoB,CAAC,EAAE,GAAG,CAAC;IAG3B,kBAAkB,CAAC,EAAE,OAAO,CAAC;
|
|
1
|
+
{"version":3,"file":"VariableRenderer.d.ts","sourceRoot":"","sources":["../../src/components/VariableRenderer.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAmB,MAAM,OAAO,CAAC;AA+BxC,OAAO,KAAK,EAAE,kBAAkB,EAAE,aAAa,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAC1F,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;AACzD,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,0BAA0B,CAAC;AAGlE,MAAM,WAAW,qBAAqB;IACpC,QAAQ,EAAE,kBAAkB,CAAC;IAC7B,KAAK,EAAE,aAAa,CAAC;IACrB,QAAQ,EAAE,CAAC,KAAK,EAAE,aAAa,KAAK,IAAI,CAAC;IACzC,MAAM,CAAC,EAAE,MAAM,IAAI,CAAC;IACpB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,oBAAoB,CAAC,EAAE,CAAC,UAAU,EAAE,gBAAgB,KAAK,IAAI,CAAC;IAC9D,qBAAqB,CAAC,EAAE,CAAC,WAAW,EAAE,iBAAiB,KAAK,IAAI,CAAC;IACjE,mBAAmB,CAAC,EAAE,kBAAkB,EAAE,CAAC;IAC3C,eAAe,CAAC,EAAE,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAC;QAAC,WAAW,CAAC,EAAE,MAAM,CAAC;QAAC,MAAM,CAAC,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,EAAE,MAAM,CAAC;QAAC,WAAW,CAAC,EAAE,MAAM,CAAC;QAAC,cAAc,CAAC,EAAE,OAAO,CAAC;QAAC,YAAY,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IAC1L,YAAY,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,cAAc,CAAC,CAAC;IAC9C,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;IAG/B,gBAAgB,CAAC,EAAE,KAAK,CAAC,aAAa,CAAC,qBAAqB,CAAC,CAAC;IAC9D,eAAe,CAAC,EAAE,KAAK,CAAC,aAAa,CAAC,qBAAqB,CAAC,CAAC;IAC7D,wBAAwB,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,CAAC,MAAM,EAAE,cAAc,CAAC,EAAE,YAAY,CAAC,EAAE,MAAM,KAAK,MAAM,CAAC;IAGvH,QAAQ,CAAC,EAAE,GAAG,CAAC;IACf,oBAAoB,CAAC,EAAE,GAAG,CAAC;IAG3B,kBAAkB,CAAC,EAAE,OAAO,CAAC;IAG7B,wBAAwB,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CAC1C;AAGD,QAAA,MAAM,kBAAkB,EAAE,KAAK,CAAC,EAAE,CAAC,qBAAqB,CAQvD,CAAC;AAGF,QAAA,MAAM,mBAAmB,GACvB,UAAU,MAAM,EAChB,mBAAmB,KAAK,CAAC,aAAa,CAAC,qBAAqB,CAAC,EAC7D,kBAAkB,KAAK,CAAC,aAAa,CAAC,qBAAqB,CAAC,KAC3D,KAAK,CAAC,aAAa,CAAC,qBAAqB,CAsD3C,CAAC;AAGF,QAAA,MAAM,gBAAgB,EAAE,KAAK,CAAC,EAAE,CAAC,qBAAqB,CAyIrD,CAAC;AAEF,eAAe,gBAAgB,CAAC;AAChC,OAAO,EAAE,mBAAmB,EAAE,kBAAkB,EAAE,CAAC"}
|
|
@@ -58,7 +58,7 @@ const getVariableRenderer = (typeCode, RosterCheckInput, RosterListInput) => {
|
|
|
58
58
|
return renderers[typeCode] || StringInput;
|
|
59
59
|
};
|
|
60
60
|
// Composant principal VariableRenderer
|
|
61
|
-
const VariableRenderer = ({ variable, value, onChange, onBlur, error, disabled, numeroMembre, valeurMin, onFillFormFromMenage, onFillFormFromEnquete, formulaireVariables, rosterVariables, allResponses = {}, RosterCheckInput, RosterListInput, interpolateVariableLabel, reponses = {}, services, isConsultationMode = false }) => {
|
|
61
|
+
const VariableRenderer = ({ variable, value, onChange, onBlur, error, disabled, numeroMembre, valeurMin, onFillFormFromMenage, onFillFormFromEnquete, formulaireVariables, rosterVariables, allResponses = {}, RosterCheckInput, RosterListInput, interpolateVariableLabel, reponses = {}, services, isConsultationMode = false, conditionValidationError }) => {
|
|
62
62
|
console.log('🎨 [VariableRenderer] Rendu de variable', {
|
|
63
63
|
code: variable.code,
|
|
64
64
|
designation: variable.designation,
|
|
@@ -107,7 +107,7 @@ const VariableRenderer = ({ variable, value, onChange, onBlur, error, disabled,
|
|
|
107
107
|
length: Array.isArray(rosterVariables) ? rosterVariables.length : 'N/A'
|
|
108
108
|
});
|
|
109
109
|
return null;
|
|
110
|
-
})(), _jsx(RendererComponent, { variable: variable, value: value, onChange: onChange, onBlur: onBlur, error: error, disabled: disabled, numeroMembre: numeroMembre, valeurMin: valeurMin, onFillFormFromMenage: onFillFormFromMenage, onFillFormFromEnquete: onFillFormFromEnquete, formulaireVariables: formulaireVariables, rosterVariables: rosterVariables, allResponses: allResponses, reponses: reponses, services: services, isConsultationMode: isConsultationMode })] }), variable.proprietes?.helpText && (_jsx("p", { className: "text-xs text-gray-500", children: variable.proprietes.helpText })), error && (_jsxs("div", { className: "flex items-center space-x-1 text-red-600 text-sm", children: [_jsx(AlertCircle, { className: "h-4 w-4" }), _jsx("span", { children: error })] }))] }));
|
|
110
|
+
})(), _jsx(RendererComponent, { variable: variable, value: value, onChange: onChange, onBlur: onBlur, error: error, disabled: disabled, numeroMembre: numeroMembre, valeurMin: valeurMin, onFillFormFromMenage: onFillFormFromMenage, onFillFormFromEnquete: onFillFormFromEnquete, formulaireVariables: formulaireVariables, rosterVariables: rosterVariables, allResponses: allResponses, reponses: reponses, services: services, isConsultationMode: isConsultationMode })] }), variable.proprietes?.helpText && (_jsx("p", { className: "text-xs text-gray-500", children: variable.proprietes.helpText })), error && (_jsxs("div", { className: "flex items-center space-x-1 text-red-600 text-sm", children: [_jsx(AlertCircle, { className: "h-4 w-4" }), _jsx("span", { children: error })] })), conditionValidationError && (_jsxs("div", { className: "flex items-center space-x-1 text-red-600 text-sm mt-1", children: [_jsx(AlertCircle, { className: "h-4 w-4 flex-shrink-0" }), _jsx("span", { children: conditionValidationError })] }))] }));
|
|
111
111
|
};
|
|
112
112
|
export default VariableRenderer;
|
|
113
113
|
export { getVariableRenderer, GeographicFallback };
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"FormRenderer.d.ts","sourceRoot":"","sources":["../../../src/components/form-renderer/FormRenderer.tsx"],"names":[],"mappings":"AAAA;;;;GAIG;AAIH,OAAO,KAA4D,MAAM,OAAO,CAAC;AACjF,OAAO,EACL,iBAAiB,EACjB,eAAe,EACf,cAAc,EAIf,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EACL,kBAAkB,EAClB,qBAAqB,EAEtB,MAAM,2BAA2B,CAAC;AACnC,OAAO,EAAE,oBAAoB,EAAE,oBAAoB,EAAE,MAAM,sBAAsB,CAAC;
|
|
1
|
+
{"version":3,"file":"FormRenderer.d.ts","sourceRoot":"","sources":["../../../src/components/form-renderer/FormRenderer.tsx"],"names":[],"mappings":"AAAA;;;;GAIG;AAIH,OAAO,KAA4D,MAAM,OAAO,CAAC;AACjF,OAAO,EACL,iBAAiB,EACjB,eAAe,EACf,cAAc,EAIf,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EACL,kBAAkB,EAClB,qBAAqB,EAEtB,MAAM,2BAA2B,CAAC;AACnC,OAAO,EAAE,oBAAoB,EAAE,oBAAoB,EAAE,MAAM,sBAAsB,CAAC;AAsBlF;;GAEG;AACH,MAAM,WAAW,iBAAiB;IAChC,6BAA6B;IAC7B,UAAU,EAAE,iBAAiB,CAAC;IAC9B,6DAA6D;IAC7D,OAAO,CAAC,EAAE,eAAe,CAAC;IAC1B,yBAAyB;IACzB,gBAAgB,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,cAAc,CAAC,CAAC;IAClD,oCAAoC;IACpC,MAAM,EAAE,kBAAkB,CAAC;IAC3B,iCAAiC;IACjC,SAAS,EAAE,qBAAqB,CAAC;IACjC,wBAAwB;IACxB,QAAQ,CAAC,EAAE,oBAAoB,CAAC;IAChC,wCAAwC;IACxC,oBAAoB,CAAC,EAAE,oBAAoB,CAAC;IAC5C,iCAAiC;IACjC,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,iCAAiC;IACjC,YAAY,CAAC,EAAE,OAAO,CAAC;CACxB;AAwsBD;;;GAGG;AACH,eAAO,MAAM,YAAY,EAAE,KAAK,CAAC,EAAE,CAAC,iBAAiB,CAgBpD,CAAC;AAEF,eAAe,YAAY,CAAC"}
|
|
@@ -19,6 +19,7 @@ import RosterCheckInput from '../roster/RosterCheckInput';
|
|
|
19
19
|
import RosterListInput from '../roster/RosterListInput';
|
|
20
20
|
// Hooks et utilitaires
|
|
21
21
|
import { useFormTree } from '../../hooks/useFormTree';
|
|
22
|
+
import { useConditionValidation } from '../../hooks/useConditionValidation';
|
|
22
23
|
import { interpolateVariableLabel } from '../../lib/utils/interpolateVariableLabel';
|
|
23
24
|
/**
|
|
24
25
|
* Composant interne qui utilise le contexte
|
|
@@ -36,6 +37,9 @@ const FormRendererInner = () => {
|
|
|
36
37
|
const [isSubmittingForm, setIsSubmittingForm] = useState(false);
|
|
37
38
|
// FormTree pour la visibilité des variables et les autoactions
|
|
38
39
|
const { formTree, getVisibleVariables, getVisibleVariablesForInstance, validateGroupForInstance, evaluateAutoActionsForInstance } = useFormTree(groupesWithInstances.length > 0 ? groupesWithInstances : formulaire?.groupes || [], responses, { debug: false });
|
|
40
|
+
// Hook pour la validation des conditions (ConditionEval)
|
|
41
|
+
const conditionEngine = formTree?.getConditionEngine() || null;
|
|
42
|
+
const { validationErrors: conditionValidationErrors, validateVariable: validateConditionVariable, validateGroup: validateConditionGroup, validateAll: validateAllConditions, hasErrors: hasConditionErrors, getErrorForVariable: getConditionErrorForVariable, revalidateDependents } = useConditionValidation(conditionEngine, responses, { debug: false });
|
|
39
43
|
// Refs pour éviter les boucles infinies lors de l'application des autoactions
|
|
40
44
|
const isApplyingAutoActions = useRef(false);
|
|
41
45
|
const lastProcessedResponsesKey = useRef('');
|
|
@@ -118,7 +122,14 @@ const FormRendererInner = () => {
|
|
|
118
122
|
? currentInstance?.numeroInstance
|
|
119
123
|
: undefined;
|
|
120
124
|
updateResponse(variable.code, value, variable, numeroMembre);
|
|
121
|
-
|
|
125
|
+
// Valider la condition de validation de cette variable
|
|
126
|
+
if (variable.conditionsValidation) {
|
|
127
|
+
validateConditionVariable(variable, numeroMembre);
|
|
128
|
+
}
|
|
129
|
+
// Réévaluer les validations des variables dépendantes
|
|
130
|
+
const groupes = groupesWithInstances.length > 0 ? groupesWithInstances : formulaire?.groupes || [];
|
|
131
|
+
revalidateDependents(variable.code, groupes, numeroMembre);
|
|
132
|
+
}, [currentGroup, currentInstance, updateResponse, validateConditionVariable, revalidateDependents, groupesWithInstances, formulaire?.groupes]);
|
|
122
133
|
// Handler pour l'annulation
|
|
123
134
|
const handleCancelClick = () => {
|
|
124
135
|
if (hasUnsavedChanges) {
|
|
@@ -212,7 +223,29 @@ const FormRendererInner = () => {
|
|
|
212
223
|
const canGoNext = isConsultationMode || validateCurrentGroupWithVisibility();
|
|
213
224
|
const isFormValid = validation.validateAllGroups(groupes, responses).isValid;
|
|
214
225
|
const handleNext = () => {
|
|
215
|
-
|
|
226
|
+
// En mode consultation, navigation libre
|
|
227
|
+
if (isConsultationMode) {
|
|
228
|
+
if (!navigation.isLastGroup) {
|
|
229
|
+
navigation.goToNextGroup();
|
|
230
|
+
}
|
|
231
|
+
return;
|
|
232
|
+
}
|
|
233
|
+
// Valider les champs obligatoires
|
|
234
|
+
if (!canGoNext) {
|
|
235
|
+
console.log('❌ [Navigation] Champs obligatoires non remplis');
|
|
236
|
+
return;
|
|
237
|
+
}
|
|
238
|
+
// Valider les conditions de validation (ConditionEval) du groupe actuel
|
|
239
|
+
if (currentGroup) {
|
|
240
|
+
const numeroMembre = currentGroup.estMultiple ? currentInstance?.numeroInstance : undefined;
|
|
241
|
+
const conditionErrors = validateConditionGroup(currentGroup, numeroMembre);
|
|
242
|
+
if (conditionErrors.length > 0) {
|
|
243
|
+
console.log('❌ [Navigation] Erreurs de validation ConditionEval:', conditionErrors);
|
|
244
|
+
// Les erreurs sont déjà affichées sous les variables via getConditionErrorForVariable
|
|
245
|
+
return;
|
|
246
|
+
}
|
|
247
|
+
}
|
|
248
|
+
if (!navigation.isLastGroup) {
|
|
216
249
|
navigation.goToNextGroup();
|
|
217
250
|
}
|
|
218
251
|
};
|
|
@@ -225,6 +258,7 @@ const FormRendererInner = () => {
|
|
|
225
258
|
const handleSubmit = async () => {
|
|
226
259
|
if (effectiveDisabled || isSubmitting || isSubmittingForm)
|
|
227
260
|
return;
|
|
261
|
+
// Valider les champs obligatoires
|
|
228
262
|
const result = validation.validateAllGroups(groupes, responses);
|
|
229
263
|
if (!result.isValid) {
|
|
230
264
|
if (callbacks.onValidationError) {
|
|
@@ -232,6 +266,26 @@ const FormRendererInner = () => {
|
|
|
232
266
|
}
|
|
233
267
|
return;
|
|
234
268
|
}
|
|
269
|
+
// Valider les conditions de validation (ConditionEval) de tous les groupes
|
|
270
|
+
const instancesMap = new Map();
|
|
271
|
+
for (const groupe of groupes) {
|
|
272
|
+
if (groupe.estMultiple && groupe.instances) {
|
|
273
|
+
instancesMap.set(groupe.code, groupe.instances.map(i => i.numeroInstance));
|
|
274
|
+
}
|
|
275
|
+
}
|
|
276
|
+
const conditionErrors = validateAllConditions(groupes, instancesMap);
|
|
277
|
+
if (conditionErrors.length > 0) {
|
|
278
|
+
console.log('❌ [Soumission] Erreurs de validation ConditionEval:', conditionErrors);
|
|
279
|
+
if (callbacks.onValidationError) {
|
|
280
|
+
// Convertir les erreurs de condition en erreurs de validation standard
|
|
281
|
+
callbacks.onValidationError(conditionErrors.map(e => ({
|
|
282
|
+
variableCode: e.variableCode,
|
|
283
|
+
message: e.message,
|
|
284
|
+
type: 'custom'
|
|
285
|
+
})));
|
|
286
|
+
}
|
|
287
|
+
return;
|
|
288
|
+
}
|
|
235
289
|
setIsSubmittingForm(true);
|
|
236
290
|
try {
|
|
237
291
|
await callbacks.onSubmit(responses);
|
|
@@ -300,12 +354,12 @@ const FormRendererInner = () => {
|
|
|
300
354
|
const rosterVariables = (variable.typeCode === 'ROSTERCHECK' || variable.typeCode === 'ROSTERLIST')
|
|
301
355
|
? variable.rosterVariables
|
|
302
356
|
: undefined;
|
|
303
|
-
return (_jsx(VariableRenderer, { variable: variable, value: currentValue, onChange: (value) => handleVariableChange(variable, value), disabled: effectiveDisabled, numeroMembre: currentGroup?.estMultiple ? currentInstance?.numeroInstance : undefined, services: services, geographicComponents: geographicComponents, formulaireVariables: formulaire.variables, allResponses: responses, reponses: responses, interpolateVariableLabel: interpolateVariableLabel, rosterVariables: rosterVariables, RosterCheckInput: RosterCheckInput, RosterListInput: RosterListInput }, variable.id));
|
|
304
|
-
}) }), currentGroup?.estMultiple && currentGroup.instances && (_jsx("div", { className: "mt-6 pt-6 border-t", children: _jsx(GroupeInstanceTabs, { groupe: currentGroup, currentInstanceIndex: navigation.navigationState.instanceIndex, responses: responses, onInstanceChange: handleInstanceChange, onInstanceAdded: handleInstanceAdded, onInstanceRemoved: handleInstanceRemoved, disabled: effectiveDisabled }) }))] })] }), _jsx("div", { className: "bg-white rounded-lg shadow-sm border border-gray-200 p-4", children: _jsxs("div", { className: "flex flex-wrap justify-between items-center gap-2", children: [_jsxs("div", { className: "flex flex-wrap gap-2", children: [_jsxs("button", { type: "button", onClick: handlePrevious, disabled: navigation.isFirstGroup || effectiveDisabled, className: `flex items-center px-4 py-2 rounded-lg font-medium transition-colors ${!navigation.isFirstGroup && !effectiveDisabled
|
|
357
|
+
return (_jsx(VariableRenderer, { variable: variable, value: currentValue, onChange: (value) => handleVariableChange(variable, value), disabled: effectiveDisabled, numeroMembre: currentGroup?.estMultiple ? currentInstance?.numeroInstance : undefined, conditionValidationError: getConditionErrorForVariable(variable.code, currentGroup?.estMultiple ? currentInstance?.numeroInstance : undefined), services: services, geographicComponents: geographicComponents, formulaireVariables: formulaire.variables, allResponses: responses, reponses: responses, interpolateVariableLabel: interpolateVariableLabel, rosterVariables: rosterVariables, RosterCheckInput: RosterCheckInput, RosterListInput: RosterListInput }, variable.id));
|
|
358
|
+
}) }), currentGroup?.estMultiple && currentGroup.instances && (_jsx("div", { className: "mt-6 pt-6 border-t", children: _jsx(GroupeInstanceTabs, { groupe: currentGroup, currentInstanceIndex: navigation.navigationState.instanceIndex, responses: responses, onInstanceChange: handleInstanceChange, onInstanceAdded: handleInstanceAdded, onInstanceRemoved: handleInstanceRemoved, disabled: effectiveDisabled }) }))] })] }), _jsx("div", { className: "bg-white rounded-lg shadow-sm border border-gray-200 p-4", children: _jsxs("div", { className: "flex flex-wrap justify-between items-center gap-2", children: [_jsxs("div", { className: "flex flex-wrap gap-2", children: [_jsxs("button", { type: "button", onClick: handlePrevious, disabled: navigation.isFirstGroup || (!isConsultationMode && effectiveDisabled), className: `flex items-center px-4 py-2 rounded-lg font-medium transition-colors ${!navigation.isFirstGroup && (isConsultationMode || !effectiveDisabled)
|
|
305
359
|
? 'bg-orange-500 text-white hover:bg-orange-600'
|
|
306
360
|
: 'bg-gray-100 text-gray-400 cursor-not-allowed'}`, children: [_jsx("svg", { className: "h-4 w-4 mr-2", fill: "none", viewBox: "0 0 24 24", stroke: "currentColor", children: _jsx("path", { strokeLinecap: "round", strokeLinejoin: "round", strokeWidth: 2, d: "M15 19l-7-7 7-7" }) }), _jsx("span", { className: "hidden sm:inline", children: labels.previousButton || 'Précédent' }), _jsx("span", { className: "sm:hidden", children: "Pr\u00E9c." })] }), mode === 'admin' && features?.saveDraft && callbacks.onSaveDraft && (_jsx("button", { type: "button", onClick: handleSaveDraft, disabled: effectiveDisabled || isSavingDraft || isSubmitting || isSubmittingForm, className: `flex items-center px-4 py-2 rounded-lg font-medium transition-colors ${!effectiveDisabled && !isSavingDraft && !isSubmitting && !isSubmittingForm
|
|
307
361
|
? 'bg-yellow-500 text-white hover:bg-yellow-600'
|
|
308
|
-
: 'bg-gray-300 text-gray-500 cursor-not-allowed'}`, children: isSavingDraft ? (_jsxs("span", { className: "flex items-center", children: [_jsxs("svg", { className: "animate-spin -ml-1 mr-2 h-4 w-4", fill: "none", viewBox: "0 0 24 24", children: [_jsx("circle", { className: "opacity-25", cx: "12", cy: "12", r: "10", stroke: "currentColor", strokeWidth: "4" }), _jsx("path", { className: "opacity-75", fill: "currentColor", d: "M4 12a8 8 0 018-8V0C5.373 0 0 5.373 0 12h4zm2 5.291A7.962 7.962 0 014 12H0c0 3.042 1.135 5.824 3 7.938l3-2.647z" })] }), "Enregistrement..."] })) : (_jsxs(_Fragment, { children: [_jsx("span", { className: "hidden sm:inline", children: labels.draftButton || 'Enregistrer brouillon' }), _jsx("span", { className: "sm:hidden", children: "Brouillon" })] })) }))] }), _jsxs("div", { className: "flex flex-wrap gap-2", children: [_jsxs("button", { type: "button", onClick: handleCancelClick, disabled: isSubmitting || isSubmittingForm || isSavingDraft, className: "px-4 py-2 rounded-lg font-medium transition-colors bg-red-500 text-white hover:bg-red-600 disabled:opacity-50 disabled:cursor-not-allowed", children: [_jsx("span", { className: "hidden sm:inline", children: labels.cancelButton || 'Annuler' }), _jsx("span", { className: "sm:hidden", children: "Annuler" })] }), !navigation.isLastGroup && (_jsxs("button", { type: "button", onClick: handleNext, disabled: !canGoNext || effectiveDisabled, className: `flex items-center px-4 py-2 rounded-lg font-medium transition-colors ${canGoNext && !effectiveDisabled
|
|
362
|
+
: 'bg-gray-300 text-gray-500 cursor-not-allowed'}`, children: isSavingDraft ? (_jsxs("span", { className: "flex items-center", children: [_jsxs("svg", { className: "animate-spin -ml-1 mr-2 h-4 w-4", fill: "none", viewBox: "0 0 24 24", children: [_jsx("circle", { className: "opacity-25", cx: "12", cy: "12", r: "10", stroke: "currentColor", strokeWidth: "4" }), _jsx("path", { className: "opacity-75", fill: "currentColor", d: "M4 12a8 8 0 018-8V0C5.373 0 0 5.373 0 12h4zm2 5.291A7.962 7.962 0 014 12H0c0 3.042 1.135 5.824 3 7.938l3-2.647z" })] }), "Enregistrement..."] })) : (_jsxs(_Fragment, { children: [_jsx("span", { className: "hidden sm:inline", children: labels.draftButton || 'Enregistrer brouillon' }), _jsx("span", { className: "sm:hidden", children: "Brouillon" })] })) }))] }), _jsxs("div", { className: "flex flex-wrap gap-2", children: [_jsxs("button", { type: "button", onClick: handleCancelClick, disabled: isSubmitting || isSubmittingForm || isSavingDraft, className: "px-4 py-2 rounded-lg font-medium transition-colors bg-red-500 text-white hover:bg-red-600 disabled:opacity-50 disabled:cursor-not-allowed", children: [_jsx("span", { className: "hidden sm:inline", children: labels.cancelButton || 'Annuler' }), _jsx("span", { className: "sm:hidden", children: "Annuler" })] }), !navigation.isLastGroup && (_jsxs("button", { type: "button", onClick: handleNext, disabled: !canGoNext || (!isConsultationMode && effectiveDisabled), className: `flex items-center px-4 py-2 rounded-lg font-medium transition-colors ${canGoNext && (isConsultationMode || !effectiveDisabled)
|
|
309
363
|
? 'bg-green-600 text-white hover:bg-green-700'
|
|
310
364
|
: 'bg-gray-400 text-gray-200 cursor-not-allowed'}`, title: !canGoNext ? 'Veuillez remplir tous les champs obligatoires' : 'Passer au groupe suivant', children: [_jsx("span", { className: "hidden sm:inline", children: labels.nextButton || 'Suivant' }), _jsx("span", { className: "sm:hidden", children: "Suiv." }), _jsx("svg", { className: "h-4 w-4 ml-2", fill: "none", viewBox: "0 0 24 24", stroke: "currentColor", children: _jsx("path", { strokeLinecap: "round", strokeLinejoin: "round", strokeWidth: 2, d: "M9 5l7 7-7 7" }) })] })), navigation.isLastGroup && !isConsultationMode && !showDRValidationButtons && (_jsx("button", { type: "button", onClick: handleSubmit, disabled: effectiveDisabled || isSubmitting || isSubmittingForm || !isFormValid, className: `flex items-center px-4 py-2 rounded-lg font-medium transition-colors ${isFormValid && !effectiveDisabled
|
|
311
365
|
? 'bg-green-600 text-white hover:bg-green-700'
|
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Hook de validation des conditions (ConditionEval) pour les formulaires d'enquête
|
|
3
|
+
* Gère l'évaluation des validations personnalisées via ConditionEval()
|
|
4
|
+
* RSU v2 - Package Partagé
|
|
5
|
+
*/
|
|
6
|
+
import { ConditionEngine } from '../lib/condition-engine';
|
|
7
|
+
import { EnqueteReponse, VariableFormulaire, GroupeFormulaire, ConditionValidationError } from '../types/enquete';
|
|
8
|
+
export interface UseConditionValidationOptions {
|
|
9
|
+
/** Délai de debounce pour l'évaluation (ms) */
|
|
10
|
+
debounceMs?: number;
|
|
11
|
+
/** Évaluer automatiquement sur changement de réponse */
|
|
12
|
+
evaluateOnChange?: boolean;
|
|
13
|
+
/** Mode debug (affiche les logs) */
|
|
14
|
+
debug?: boolean;
|
|
15
|
+
}
|
|
16
|
+
export interface UseConditionValidationResult {
|
|
17
|
+
/** Map des erreurs de validation par variable (clé: variableCode ou variableCode_numeroMembre) */
|
|
18
|
+
validationErrors: Map<string, ConditionValidationError>;
|
|
19
|
+
/** Valide une variable individuelle et retourne l'erreur ou null */
|
|
20
|
+
validateVariable: (variable: VariableFormulaire, numeroMembre?: number) => ConditionValidationError | null;
|
|
21
|
+
/** Valide toutes les variables d'un groupe et retourne les erreurs */
|
|
22
|
+
validateGroup: (groupe: GroupeFormulaire, numeroMembre?: number) => ConditionValidationError[];
|
|
23
|
+
/** Valide toutes les variables de tous les groupes */
|
|
24
|
+
validateAll: (groupes: GroupeFormulaire[], instances?: Map<string, number[]>) => ConditionValidationError[];
|
|
25
|
+
/** Efface l'erreur pour une variable */
|
|
26
|
+
clearError: (variableCode: string, numeroMembre?: number) => void;
|
|
27
|
+
/** Efface toutes les erreurs */
|
|
28
|
+
clearAllErrors: () => void;
|
|
29
|
+
/** Indique s'il y a des erreurs */
|
|
30
|
+
hasErrors: boolean;
|
|
31
|
+
/** Récupère le message d'erreur pour une variable (ou null) */
|
|
32
|
+
getErrorForVariable: (variableCode: string, numeroMembre?: number) => string | null;
|
|
33
|
+
/** Réévalue les validations pour les variables dépendantes d'une variable modifiée */
|
|
34
|
+
revalidateDependents: (changedVariableCode: string, groupes: GroupeFormulaire[], numeroMembre?: number) => void;
|
|
35
|
+
}
|
|
36
|
+
/**
|
|
37
|
+
* Hook pour gérer la validation des conditions ConditionEval() dans les formulaires
|
|
38
|
+
*
|
|
39
|
+
* @param conditionEngine - Instance du moteur de conditions
|
|
40
|
+
* @param responses - Réponses actuelles du formulaire
|
|
41
|
+
* @param options - Options de configuration
|
|
42
|
+
* @returns Objet contenant les fonctions et état de validation
|
|
43
|
+
*
|
|
44
|
+
* @example
|
|
45
|
+
* ```tsx
|
|
46
|
+
* const {
|
|
47
|
+
* validationErrors,
|
|
48
|
+
* validateVariable,
|
|
49
|
+
* validateGroup,
|
|
50
|
+
* hasErrors,
|
|
51
|
+
* getErrorForVariable
|
|
52
|
+
* } = useConditionValidation(conditionEngine, responses, {
|
|
53
|
+
* evaluateOnChange: true,
|
|
54
|
+
* debug: true
|
|
55
|
+
* });
|
|
56
|
+
* ```
|
|
57
|
+
*/
|
|
58
|
+
export declare function useConditionValidation(conditionEngine: ConditionEngine | null, responses: Record<string, EnqueteReponse>, options?: UseConditionValidationOptions): UseConditionValidationResult;
|
|
59
|
+
export default useConditionValidation;
|
|
60
|
+
//# sourceMappingURL=useConditionValidation.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useConditionValidation.d.ts","sourceRoot":"","sources":["../../src/hooks/useConditionValidation.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAGH,OAAO,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAC;AAC1D,OAAO,EACL,cAAc,EACd,kBAAkB,EAClB,gBAAgB,EAChB,wBAAwB,EAEzB,MAAM,kBAAkB,CAAC;AAE1B,MAAM,WAAW,6BAA6B;IAC5C,+CAA+C;IAC/C,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,wDAAwD;IACxD,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAC3B,oCAAoC;IACpC,KAAK,CAAC,EAAE,OAAO,CAAC;CACjB;AAED,MAAM,WAAW,4BAA4B;IAC3C,kGAAkG;IAClG,gBAAgB,EAAE,GAAG,CAAC,MAAM,EAAE,wBAAwB,CAAC,CAAC;IAExD,oEAAoE;IACpE,gBAAgB,EAAE,CAChB,QAAQ,EAAE,kBAAkB,EAC5B,YAAY,CAAC,EAAE,MAAM,KAClB,wBAAwB,GAAG,IAAI,CAAC;IAErC,sEAAsE;IACtE,aAAa,EAAE,CACb,MAAM,EAAE,gBAAgB,EACxB,YAAY,CAAC,EAAE,MAAM,KAClB,wBAAwB,EAAE,CAAC;IAEhC,sDAAsD;IACtD,WAAW,EAAE,CACX,OAAO,EAAE,gBAAgB,EAAE,EAC3B,SAAS,CAAC,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,KAC9B,wBAAwB,EAAE,CAAC;IAEhC,wCAAwC;IACxC,UAAU,EAAE,CAAC,YAAY,EAAE,MAAM,EAAE,YAAY,CAAC,EAAE,MAAM,KAAK,IAAI,CAAC;IAElE,gCAAgC;IAChC,cAAc,EAAE,MAAM,IAAI,CAAC;IAE3B,mCAAmC;IACnC,SAAS,EAAE,OAAO,CAAC;IAEnB,+DAA+D;IAC/D,mBAAmB,EAAE,CAAC,YAAY,EAAE,MAAM,EAAE,YAAY,CAAC,EAAE,MAAM,KAAK,MAAM,GAAG,IAAI,CAAC;IAEpF,sFAAsF;IACtF,oBAAoB,EAAE,CACpB,mBAAmB,EAAE,MAAM,EAC3B,OAAO,EAAE,gBAAgB,EAAE,EAC3B,YAAY,CAAC,EAAE,MAAM,KAClB,IAAI,CAAC;CACX;AASD;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,wBAAgB,sBAAsB,CACpC,eAAe,EAAE,eAAe,GAAG,IAAI,EACvC,SAAS,EAAE,MAAM,CAAC,MAAM,EAAE,cAAc,CAAC,EACzC,OAAO,GAAE,6BAAkC,GAC1C,4BAA4B,CA+N9B;AAED,eAAe,sBAAsB,CAAC"}
|
|
@@ -0,0 +1,209 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Hook de validation des conditions (ConditionEval) pour les formulaires d'enquête
|
|
3
|
+
* Gère l'évaluation des validations personnalisées via ConditionEval()
|
|
4
|
+
* RSU v2 - Package Partagé
|
|
5
|
+
*/
|
|
6
|
+
import { useState, useCallback, useMemo, useRef } from 'react';
|
|
7
|
+
/**
|
|
8
|
+
* Génère une clé unique pour une variable (avec ou sans numéro de membre)
|
|
9
|
+
*/
|
|
10
|
+
function getVariableKey(variableCode, numeroMembre) {
|
|
11
|
+
return numeroMembre ? `${variableCode}_${numeroMembre}` : variableCode;
|
|
12
|
+
}
|
|
13
|
+
/**
|
|
14
|
+
* Hook pour gérer la validation des conditions ConditionEval() dans les formulaires
|
|
15
|
+
*
|
|
16
|
+
* @param conditionEngine - Instance du moteur de conditions
|
|
17
|
+
* @param responses - Réponses actuelles du formulaire
|
|
18
|
+
* @param options - Options de configuration
|
|
19
|
+
* @returns Objet contenant les fonctions et état de validation
|
|
20
|
+
*
|
|
21
|
+
* @example
|
|
22
|
+
* ```tsx
|
|
23
|
+
* const {
|
|
24
|
+
* validationErrors,
|
|
25
|
+
* validateVariable,
|
|
26
|
+
* validateGroup,
|
|
27
|
+
* hasErrors,
|
|
28
|
+
* getErrorForVariable
|
|
29
|
+
* } = useConditionValidation(conditionEngine, responses, {
|
|
30
|
+
* evaluateOnChange: true,
|
|
31
|
+
* debug: true
|
|
32
|
+
* });
|
|
33
|
+
* ```
|
|
34
|
+
*/
|
|
35
|
+
export function useConditionValidation(conditionEngine, responses, options = {}) {
|
|
36
|
+
const { debounceMs = 0, evaluateOnChange = true, debug = false } = options;
|
|
37
|
+
// État des erreurs de validation
|
|
38
|
+
const [validationErrors, setValidationErrors] = useState(new Map());
|
|
39
|
+
// Ref pour le debounce
|
|
40
|
+
const debounceTimerRef = useRef(null);
|
|
41
|
+
// Fonction utilitaire pour logger en mode debug
|
|
42
|
+
const log = useCallback((message, data) => {
|
|
43
|
+
if (debug) {
|
|
44
|
+
console.log(`[ConditionValidation] ${message}`, data || '');
|
|
45
|
+
}
|
|
46
|
+
}, [debug]);
|
|
47
|
+
/**
|
|
48
|
+
* Valide une variable individuelle
|
|
49
|
+
*/
|
|
50
|
+
const validateVariable = useCallback((variable, numeroMembre) => {
|
|
51
|
+
if (!conditionEngine)
|
|
52
|
+
return null;
|
|
53
|
+
// Si pas de condition de validation, c'est valide
|
|
54
|
+
if (!variable.conditionsValidation || variable.conditionsValidation.trim() === '') {
|
|
55
|
+
// Effacer toute erreur existante
|
|
56
|
+
const key = getVariableKey(variable.code, numeroMembre);
|
|
57
|
+
setValidationErrors(prev => {
|
|
58
|
+
if (!prev.has(key))
|
|
59
|
+
return prev;
|
|
60
|
+
const next = new Map(prev);
|
|
61
|
+
next.delete(key);
|
|
62
|
+
return next;
|
|
63
|
+
});
|
|
64
|
+
return null;
|
|
65
|
+
}
|
|
66
|
+
log('Validation de la variable:', {
|
|
67
|
+
code: variable.code,
|
|
68
|
+
condition: variable.conditionsValidation,
|
|
69
|
+
numeroMembre
|
|
70
|
+
});
|
|
71
|
+
// Évaluer la condition
|
|
72
|
+
const result = conditionEngine.evaluateValidation(variable.conditionsValidation, variable.code, numeroMembre);
|
|
73
|
+
const key = getVariableKey(variable.code, numeroMembre);
|
|
74
|
+
if (!result.isValid) {
|
|
75
|
+
const error = {
|
|
76
|
+
variableCode: variable.code,
|
|
77
|
+
message: result.errorMessage || 'Données invalides',
|
|
78
|
+
condition: result.condition,
|
|
79
|
+
numeroMembre
|
|
80
|
+
};
|
|
81
|
+
log('Erreur de validation détectée:', error);
|
|
82
|
+
setValidationErrors(prev => {
|
|
83
|
+
const next = new Map(prev);
|
|
84
|
+
next.set(key, error);
|
|
85
|
+
return next;
|
|
86
|
+
});
|
|
87
|
+
return error;
|
|
88
|
+
}
|
|
89
|
+
// Valide: effacer l'erreur si elle existait
|
|
90
|
+
setValidationErrors(prev => {
|
|
91
|
+
if (!prev.has(key))
|
|
92
|
+
return prev;
|
|
93
|
+
const next = new Map(prev);
|
|
94
|
+
next.delete(key);
|
|
95
|
+
return next;
|
|
96
|
+
});
|
|
97
|
+
log('Variable validée avec succès:', variable.code);
|
|
98
|
+
return null;
|
|
99
|
+
}, [conditionEngine, log]);
|
|
100
|
+
/**
|
|
101
|
+
* Valide toutes les variables d'un groupe
|
|
102
|
+
*/
|
|
103
|
+
const validateGroup = useCallback((groupe, numeroMembre) => {
|
|
104
|
+
const errors = [];
|
|
105
|
+
for (const variable of groupe.variables) {
|
|
106
|
+
const error = validateVariable(variable, numeroMembre);
|
|
107
|
+
if (error) {
|
|
108
|
+
errors.push(error);
|
|
109
|
+
}
|
|
110
|
+
}
|
|
111
|
+
log('Validation du groupe:', {
|
|
112
|
+
groupeCode: groupe.code,
|
|
113
|
+
nombreVariables: groupe.variables.length,
|
|
114
|
+
nombreErreurs: errors.length
|
|
115
|
+
});
|
|
116
|
+
return errors;
|
|
117
|
+
}, [validateVariable, log]);
|
|
118
|
+
/**
|
|
119
|
+
* Valide toutes les variables de tous les groupes
|
|
120
|
+
*/
|
|
121
|
+
const validateAll = useCallback((groupes, instances) => {
|
|
122
|
+
const allErrors = [];
|
|
123
|
+
for (const groupe of groupes) {
|
|
124
|
+
if (groupe.estMultiple && instances?.has(groupe.code)) {
|
|
125
|
+
// Groupe multiple: valider chaque instance
|
|
126
|
+
const instanceNumbers = instances.get(groupe.code) || [];
|
|
127
|
+
for (const instanceNum of instanceNumbers) {
|
|
128
|
+
const errors = validateGroup(groupe, instanceNum);
|
|
129
|
+
allErrors.push(...errors);
|
|
130
|
+
}
|
|
131
|
+
}
|
|
132
|
+
else {
|
|
133
|
+
// Groupe simple
|
|
134
|
+
const errors = validateGroup(groupe);
|
|
135
|
+
allErrors.push(...errors);
|
|
136
|
+
}
|
|
137
|
+
}
|
|
138
|
+
log('Validation complète:', {
|
|
139
|
+
totalGroupes: groupes.length,
|
|
140
|
+
totalErreurs: allErrors.length
|
|
141
|
+
});
|
|
142
|
+
return allErrors;
|
|
143
|
+
}, [validateGroup, log]);
|
|
144
|
+
/**
|
|
145
|
+
* Efface l'erreur pour une variable
|
|
146
|
+
*/
|
|
147
|
+
const clearError = useCallback((variableCode, numeroMembre) => {
|
|
148
|
+
const key = getVariableKey(variableCode, numeroMembre);
|
|
149
|
+
setValidationErrors(prev => {
|
|
150
|
+
if (!prev.has(key))
|
|
151
|
+
return prev;
|
|
152
|
+
const next = new Map(prev);
|
|
153
|
+
next.delete(key);
|
|
154
|
+
return next;
|
|
155
|
+
});
|
|
156
|
+
}, []);
|
|
157
|
+
/**
|
|
158
|
+
* Efface toutes les erreurs
|
|
159
|
+
*/
|
|
160
|
+
const clearAllErrors = useCallback(() => {
|
|
161
|
+
setValidationErrors(new Map());
|
|
162
|
+
}, []);
|
|
163
|
+
/**
|
|
164
|
+
* Récupère le message d'erreur pour une variable
|
|
165
|
+
*/
|
|
166
|
+
const getErrorForVariable = useCallback((variableCode, numeroMembre) => {
|
|
167
|
+
const key = getVariableKey(variableCode, numeroMembre);
|
|
168
|
+
const error = validationErrors.get(key);
|
|
169
|
+
return error ? error.message : null;
|
|
170
|
+
}, [validationErrors]);
|
|
171
|
+
/**
|
|
172
|
+
* Réévalue les validations pour les variables dépendantes
|
|
173
|
+
*/
|
|
174
|
+
const revalidateDependents = useCallback((changedVariableCode, groupes, numeroMembre) => {
|
|
175
|
+
if (!conditionEngine)
|
|
176
|
+
return;
|
|
177
|
+
log('Réévaluation des dépendants de:', changedVariableCode);
|
|
178
|
+
// Parcourir toutes les variables pour trouver celles qui dépendent de la variable modifiée
|
|
179
|
+
for (const groupe of groupes) {
|
|
180
|
+
for (const variable of groupe.variables) {
|
|
181
|
+
if (!variable.conditionsValidation)
|
|
182
|
+
continue;
|
|
183
|
+
// Vérifier si la condition référence la variable modifiée
|
|
184
|
+
if (variable.conditionsValidation.includes(`\${${changedVariableCode}}`)) {
|
|
185
|
+
log('Variable dépendante trouvée:', variable.code);
|
|
186
|
+
validateVariable(variable, numeroMembre);
|
|
187
|
+
}
|
|
188
|
+
}
|
|
189
|
+
}
|
|
190
|
+
}, [conditionEngine, validateVariable, log]);
|
|
191
|
+
/**
|
|
192
|
+
* Indicateur de présence d'erreurs
|
|
193
|
+
*/
|
|
194
|
+
const hasErrors = useMemo(() => {
|
|
195
|
+
return validationErrors.size > 0;
|
|
196
|
+
}, [validationErrors]);
|
|
197
|
+
return {
|
|
198
|
+
validationErrors,
|
|
199
|
+
validateVariable,
|
|
200
|
+
validateGroup,
|
|
201
|
+
validateAll,
|
|
202
|
+
clearError,
|
|
203
|
+
clearAllErrors,
|
|
204
|
+
hasErrors,
|
|
205
|
+
getErrorForVariable,
|
|
206
|
+
revalidateDependents
|
|
207
|
+
};
|
|
208
|
+
}
|
|
209
|
+
export default useConditionValidation;
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
* Moteur d'évaluation des conditions complexes pour les formulaires d'enquête
|
|
3
3
|
* RSU v2 - Moteur de Rendu des Formulaires d'Enquête
|
|
4
4
|
*/
|
|
5
|
-
import { EnqueteReponse, VariableValue } from '../types/enquete';
|
|
5
|
+
import { EnqueteReponse, VariableValue, ValidationEvalResult } from '../types/enquete';
|
|
6
6
|
export interface AutoAction {
|
|
7
7
|
type: 'setValue';
|
|
8
8
|
targetVariable: string;
|
|
@@ -21,6 +21,8 @@ export declare class ConditionEngine {
|
|
|
21
21
|
private autoActions;
|
|
22
22
|
private conditionCache;
|
|
23
23
|
private maxCacheSize;
|
|
24
|
+
private static readonly FORBIDDEN_VALIDATION_FUNCTIONS;
|
|
25
|
+
private static readonly DEFAULT_VALIDATION_ERROR;
|
|
24
26
|
constructor(responses: Record<string, EnqueteReponse>);
|
|
25
27
|
/**
|
|
26
28
|
* Évalue une condition complexe
|
|
@@ -109,6 +111,28 @@ export declare class ConditionEngine {
|
|
|
109
111
|
* Vide la liste des actions automatiques
|
|
110
112
|
*/
|
|
111
113
|
clearAutoActions(): void;
|
|
114
|
+
/**
|
|
115
|
+
* Évalue une condition de validation ConditionEval()
|
|
116
|
+
* Syntaxe: ConditionEval(condition, errorMessage?)
|
|
117
|
+
*
|
|
118
|
+
* @param conditionValidation - Expression ConditionEval complète ou condition brute
|
|
119
|
+
* @param variableCode - Code de la variable à laquelle cette validation s'applique
|
|
120
|
+
* @param currentIteration - Numéro d'itération pour les groupes multiples
|
|
121
|
+
* @returns ValidationEvalResult avec isValid, errorMessage, variableCode, condition
|
|
122
|
+
*/
|
|
123
|
+
evaluateValidation(conditionValidation: string, variableCode: string, currentIteration?: number): ValidationEvalResult;
|
|
124
|
+
/**
|
|
125
|
+
* Évalue une expression ConditionEval(condition, errorMessage?)
|
|
126
|
+
*/
|
|
127
|
+
private evaluateConditionEval;
|
|
128
|
+
/**
|
|
129
|
+
* Vérifie si une expression contient des fonctions interdites pour la validation
|
|
130
|
+
*/
|
|
131
|
+
private containsForbiddenValidationFunction;
|
|
132
|
+
/**
|
|
133
|
+
* Parse un paramètre chaîne (gère les guillemets)
|
|
134
|
+
*/
|
|
135
|
+
private parseStringParam;
|
|
112
136
|
/**
|
|
113
137
|
* Construit le contexte d'évaluation à partir des réponses
|
|
114
138
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"condition-engine.d.ts","sourceRoot":"","sources":["../../src/lib/condition-engine.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAGH,OAAO,EAAE,cAAc,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;
|
|
1
|
+
{"version":3,"file":"condition-engine.d.ts","sourceRoot":"","sources":["../../src/lib/condition-engine.ts"],"names":[],"mappings":"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"}
|
|
@@ -409,6 +409,136 @@ export class ConditionEngine {
|
|
|
409
409
|
clearAutoActions() {
|
|
410
410
|
this.autoActions = [];
|
|
411
411
|
}
|
|
412
|
+
/**
|
|
413
|
+
* Évalue une condition de validation ConditionEval()
|
|
414
|
+
* Syntaxe: ConditionEval(condition, errorMessage?)
|
|
415
|
+
*
|
|
416
|
+
* @param conditionValidation - Expression ConditionEval complète ou condition brute
|
|
417
|
+
* @param variableCode - Code de la variable à laquelle cette validation s'applique
|
|
418
|
+
* @param currentIteration - Numéro d'itération pour les groupes multiples
|
|
419
|
+
* @returns ValidationEvalResult avec isValid, errorMessage, variableCode, condition
|
|
420
|
+
*/
|
|
421
|
+
evaluateValidation(conditionValidation, variableCode, currentIteration) {
|
|
422
|
+
// Condition vide ou nulle = valide
|
|
423
|
+
if (!conditionValidation || conditionValidation.trim() === '') {
|
|
424
|
+
return {
|
|
425
|
+
isValid: true,
|
|
426
|
+
errorMessage: null,
|
|
427
|
+
variableCode,
|
|
428
|
+
condition: ''
|
|
429
|
+
};
|
|
430
|
+
}
|
|
431
|
+
try {
|
|
432
|
+
const trimmed = conditionValidation.trim();
|
|
433
|
+
// Vérifier si c'est une expression ConditionEval()
|
|
434
|
+
if (trimmed.startsWith('ConditionEval(')) {
|
|
435
|
+
return this.evaluateConditionEval(trimmed, variableCode, currentIteration);
|
|
436
|
+
}
|
|
437
|
+
// Si ce n'est pas ConditionEval(), évaluer comme condition brute
|
|
438
|
+
// (pour rétrocompatibilité avec d'anciennes validations)
|
|
439
|
+
const processedCondition = this.replaceVariableReferencesWithIterations(trimmed, currentIteration);
|
|
440
|
+
const isValid = this.safeEvaluate(processedCondition);
|
|
441
|
+
return {
|
|
442
|
+
isValid,
|
|
443
|
+
errorMessage: isValid ? null : ConditionEngine.DEFAULT_VALIDATION_ERROR,
|
|
444
|
+
variableCode,
|
|
445
|
+
condition: trimmed
|
|
446
|
+
};
|
|
447
|
+
}
|
|
448
|
+
catch (error) {
|
|
449
|
+
console.warn('Erreur lors de l\'évaluation de la validation:', conditionValidation, error);
|
|
450
|
+
return {
|
|
451
|
+
isValid: false,
|
|
452
|
+
errorMessage: ConditionEngine.DEFAULT_VALIDATION_ERROR,
|
|
453
|
+
variableCode,
|
|
454
|
+
condition: conditionValidation
|
|
455
|
+
};
|
|
456
|
+
}
|
|
457
|
+
}
|
|
458
|
+
/**
|
|
459
|
+
* Évalue une expression ConditionEval(condition, errorMessage?)
|
|
460
|
+
*/
|
|
461
|
+
evaluateConditionEval(expression, variableCode, currentIteration) {
|
|
462
|
+
try {
|
|
463
|
+
// Parser ConditionEval(...)
|
|
464
|
+
const match = expression.match(/^ConditionEval\s*\((.+)\)$/s);
|
|
465
|
+
if (!match) {
|
|
466
|
+
return {
|
|
467
|
+
isValid: true,
|
|
468
|
+
errorMessage: null,
|
|
469
|
+
variableCode,
|
|
470
|
+
condition: expression
|
|
471
|
+
};
|
|
472
|
+
}
|
|
473
|
+
const paramsStr = match[1];
|
|
474
|
+
const params = this.smartSplit(paramsStr, ',');
|
|
475
|
+
if (params.length < 1) {
|
|
476
|
+
return {
|
|
477
|
+
isValid: false,
|
|
478
|
+
errorMessage: 'Syntaxe ConditionEval invalide',
|
|
479
|
+
variableCode,
|
|
480
|
+
condition: expression
|
|
481
|
+
};
|
|
482
|
+
}
|
|
483
|
+
// Premier paramètre: condition à évaluer
|
|
484
|
+
const conditionStr = params[0].trim();
|
|
485
|
+
// Deuxième paramètre optionnel: message d'erreur
|
|
486
|
+
let errorMessage = ConditionEngine.DEFAULT_VALIDATION_ERROR;
|
|
487
|
+
if (params.length > 1) {
|
|
488
|
+
errorMessage = this.parseStringParam(params.slice(1).join(',').trim());
|
|
489
|
+
}
|
|
490
|
+
// Vérifier les fonctions interdites
|
|
491
|
+
if (this.containsForbiddenValidationFunction(conditionStr)) {
|
|
492
|
+
console.warn('ConditionEval contient une fonction interdite:', conditionStr);
|
|
493
|
+
return {
|
|
494
|
+
isValid: false,
|
|
495
|
+
errorMessage: 'Fonction non autorisée dans la validation',
|
|
496
|
+
variableCode,
|
|
497
|
+
condition: conditionStr
|
|
498
|
+
};
|
|
499
|
+
}
|
|
500
|
+
// Remplacer les variables et évaluer
|
|
501
|
+
const processedCondition = this.replaceVariableReferencesWithIterations(conditionStr, currentIteration);
|
|
502
|
+
const isValid = this.safeEvaluate(processedCondition);
|
|
503
|
+
return {
|
|
504
|
+
isValid,
|
|
505
|
+
errorMessage: isValid ? null : errorMessage,
|
|
506
|
+
variableCode,
|
|
507
|
+
condition: conditionStr
|
|
508
|
+
};
|
|
509
|
+
}
|
|
510
|
+
catch (error) {
|
|
511
|
+
console.warn('Erreur lors de l\'évaluation de ConditionEval:', expression, error);
|
|
512
|
+
return {
|
|
513
|
+
isValid: false,
|
|
514
|
+
errorMessage: ConditionEngine.DEFAULT_VALIDATION_ERROR,
|
|
515
|
+
variableCode,
|
|
516
|
+
condition: expression
|
|
517
|
+
};
|
|
518
|
+
}
|
|
519
|
+
}
|
|
520
|
+
/**
|
|
521
|
+
* Vérifie si une expression contient des fonctions interdites pour la validation
|
|
522
|
+
*/
|
|
523
|
+
containsForbiddenValidationFunction(expression) {
|
|
524
|
+
for (const fn of ConditionEngine.FORBIDDEN_VALIDATION_FUNCTIONS) {
|
|
525
|
+
if (new RegExp(`\\b${fn}\\s*\\(`).test(expression)) {
|
|
526
|
+
return true;
|
|
527
|
+
}
|
|
528
|
+
}
|
|
529
|
+
return false;
|
|
530
|
+
}
|
|
531
|
+
/**
|
|
532
|
+
* Parse un paramètre chaîne (gère les guillemets)
|
|
533
|
+
*/
|
|
534
|
+
parseStringParam(param) {
|
|
535
|
+
const trimmed = param.trim();
|
|
536
|
+
if ((trimmed.startsWith('"') && trimmed.endsWith('"')) ||
|
|
537
|
+
(trimmed.startsWith("'") && trimmed.endsWith("'"))) {
|
|
538
|
+
return trimmed.slice(1, -1);
|
|
539
|
+
}
|
|
540
|
+
return trimmed;
|
|
541
|
+
}
|
|
412
542
|
/**
|
|
413
543
|
* Construit le contexte d'évaluation à partir des réponses
|
|
414
544
|
*/
|
|
@@ -885,6 +1015,14 @@ export class ConditionEngine {
|
|
|
885
1015
|
return suggestions.slice(0, 15); // Augmenter à 15 suggestions
|
|
886
1016
|
}
|
|
887
1017
|
}
|
|
1018
|
+
// Fonctions interdites dans les expressions de validation ConditionEval()
|
|
1019
|
+
ConditionEngine.FORBIDDEN_VALIDATION_FUNCTIONS = [
|
|
1020
|
+
'showMe', 'hideMe', 'setValeur',
|
|
1021
|
+
'eval', 'Function', 'setTimeout', 'setInterval',
|
|
1022
|
+
'fetch', 'XMLHttpRequest', 'require', 'import'
|
|
1023
|
+
];
|
|
1024
|
+
// Message d'erreur par défaut pour ConditionEval
|
|
1025
|
+
ConditionEngine.DEFAULT_VALIDATION_ERROR = 'Données invalides';
|
|
888
1026
|
/**
|
|
889
1027
|
* Hook React pour utiliser le moteur d'évaluation des conditions
|
|
890
1028
|
*/
|
package/dist/types/enquete.d.ts
CHANGED
|
@@ -53,6 +53,18 @@ export interface UtilityFunctionResult {
|
|
|
53
53
|
result: boolean | AutoAction[];
|
|
54
54
|
originalCondition: string;
|
|
55
55
|
}
|
|
56
|
+
export interface ValidationEvalResult {
|
|
57
|
+
isValid: boolean;
|
|
58
|
+
errorMessage: string | null;
|
|
59
|
+
variableCode: string;
|
|
60
|
+
condition: string;
|
|
61
|
+
}
|
|
62
|
+
export interface ConditionValidationError {
|
|
63
|
+
variableCode: string;
|
|
64
|
+
message: string;
|
|
65
|
+
condition: string;
|
|
66
|
+
numeroMembre?: number;
|
|
67
|
+
}
|
|
56
68
|
export interface VariableValidation {
|
|
57
69
|
required?: boolean;
|
|
58
70
|
customRules?: Array<{
|
|
@@ -108,6 +120,7 @@ export interface VariableFormulaire {
|
|
|
108
120
|
estCommun?: boolean;
|
|
109
121
|
isReadonly?: boolean;
|
|
110
122
|
conditionsAffichage?: string;
|
|
123
|
+
conditionsValidation?: string;
|
|
111
124
|
proprietes?: VariableProperties;
|
|
112
125
|
componentStyle?: ComponentStyle;
|
|
113
126
|
valeurDefaut?: VariableValue;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"enquete.d.ts","sourceRoot":"","sources":["../../src/types/enquete.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"enquete.d.ts","sourceRoot":"","sources":["../../src/types/enquete.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED