@rsuci/shared-form-components 1.0.45 → 1.0.47

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.
@@ -1 +1 @@
1
- {"version":3,"file":"GroupRenderer.d.ts","sourceRoot":"","sources":["../../src/components/GroupRenderer.tsx"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAIH,OAAO,KAAuC,MAAM,OAAO,CAAC;AAE5D,OAAO,EACL,gBAAgB,EAChB,cAAc,EACd,aAAa,EACb,eAAe,EACf,UAAU,EAEX,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAC;AAC1D,OAAO,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAG5C,UAAU,kBAAkB;IAC1B,MAAM,EAAE,gBAAgB,CAAC;IACzB,SAAS,EAAE,MAAM,CAAC,MAAM,EAAE,cAAc,CAAC,CAAC;IAC1C,+CAA+C;IAC/C,eAAe,CAAC,EAAE,eAAe,CAAC;IAClC,8DAA8D;IAC9D,QAAQ,CAAC,EAAE,QAAQ,CAAC;IACpB,QAAQ,EAAE,CAAC,YAAY,EAAE,MAAM,EAAE,KAAK,EAAE,aAAa,EAAE,SAAS,CAAC,EAAE,MAAM,KAAK,IAAI,CAAC;IACnF,YAAY,EAAE,CAAC,MAAM,EAAE,eAAe,EAAE,KAAK,IAAI,CAAC;IAClD,YAAY,CAAC,EAAE,CAAC,OAAO,EAAE,UAAU,EAAE,KAAK,IAAI,CAAC;IAC/C,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,YAAY,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,cAAc,CAAC,CAAC;IAC9C,wBAAwB,CAAC,EAAE,CACzB,KAAK,EAAE,MAAM,EACb,SAAS,EAAE,MAAM,CAAC,MAAM,EAAE,cAAc,CAAC,EACzC,YAAY,CAAC,EAAE,MAAM,KAClB,MAAM,CAAC;IACZ,gBAAgB,CAAC,EAAE,KAAK,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC;IAC5C,eAAe,CAAC,EAAE,KAAK,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC;CAC5C;AAgKD,QAAA,MAAM,aAAa,EAAE,KAAK,CAAC,EAAE,CAAC,kBAAkB,CA0V/C,CAAC;AAEF,eAAe,aAAa,CAAC"}
1
+ {"version":3,"file":"GroupRenderer.d.ts","sourceRoot":"","sources":["../../src/components/GroupRenderer.tsx"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAIH,OAAO,KAAuC,MAAM,OAAO,CAAC;AAE5D,OAAO,EACL,gBAAgB,EAChB,cAAc,EACd,aAAa,EACb,eAAe,EACf,UAAU,EAEX,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAC;AAC1D,OAAO,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAG5C,UAAU,kBAAkB;IAC1B,MAAM,EAAE,gBAAgB,CAAC;IACzB,SAAS,EAAE,MAAM,CAAC,MAAM,EAAE,cAAc,CAAC,CAAC;IAC1C,+CAA+C;IAC/C,eAAe,CAAC,EAAE,eAAe,CAAC;IAClC,8DAA8D;IAC9D,QAAQ,CAAC,EAAE,QAAQ,CAAC;IACpB,QAAQ,EAAE,CAAC,YAAY,EAAE,MAAM,EAAE,KAAK,EAAE,aAAa,EAAE,SAAS,CAAC,EAAE,MAAM,KAAK,IAAI,CAAC;IACnF,YAAY,EAAE,CAAC,MAAM,EAAE,eAAe,EAAE,KAAK,IAAI,CAAC;IAClD,YAAY,CAAC,EAAE,CAAC,OAAO,EAAE,UAAU,EAAE,KAAK,IAAI,CAAC;IAC/C,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,YAAY,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,cAAc,CAAC,CAAC;IAC9C,wBAAwB,CAAC,EAAE,CACzB,KAAK,EAAE,MAAM,EACb,SAAS,EAAE,MAAM,CAAC,MAAM,EAAE,cAAc,CAAC,EACzC,YAAY,CAAC,EAAE,MAAM,KAClB,MAAM,CAAC;IACZ,gBAAgB,CAAC,EAAE,KAAK,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC;IAC5C,eAAe,CAAC,EAAE,KAAK,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC;CAC5C;AAwKD,QAAA,MAAM,aAAa,EAAE,KAAK,CAAC,EAAE,CAAC,kBAAkB,CAmW/C,CAAC;AAEF,eAAe,aAAa,CAAC"}
@@ -20,7 +20,10 @@ const MultipleGroupManager = ({ groupe, entries, onAddEntry, onRemoveEntry, chil
20
20
  : 'bg-gray-300 text-gray-500 cursor-not-allowed'}`, children: [_jsx(Plus, { className: "h-4 w-4 mr-1" }), "Ajouter"] }))] }), _jsx("div", { className: "space-y-4", children: children })] }));
21
21
  };
22
22
  // Composant pour une entrée individuelle dans un groupe multiple
23
- const MultipleGroupEntry = ({ groupe, iterationNumber, totalIterations, visibleVariables, responses, onChange, onRemove, canRemove, disabled, allResponses, interpolateVariableLabel, RosterCheckInput, RosterListInput }) => {
23
+ const MultipleGroupEntry = ({ groupe, iterationNumber, totalIterations, visibleVariables, responses, onChange, onRemove, canRemove, disabled, allResponses, interpolateVariableLabel, RosterCheckInput, RosterListInput, instanceVisibleVariables }) => {
24
+ // Utiliser les variables visibles spécifiques à l'instance si disponibles
25
+ // Sinon, fallback sur les variables visibles globales (rétrocompatibilité)
26
+ const effectiveVisibleVariables = instanceVisibleVariables || visibleVariables;
24
27
  console.log('🔢 [MultipleGroupEntry] Rendu de l\'entrée', {
25
28
  groupeCode: groupe.code,
26
29
  iterationNumber,
@@ -28,11 +31,12 @@ const MultipleGroupEntry = ({ groupe, iterationNumber, totalIterations, visibleV
28
31
  allResponsesKeys: allResponses ? Object.keys(allResponses) : [],
29
32
  allResponsesCount: allResponses ? Object.keys(allResponses).length : 0,
30
33
  hasInterpolateFunction: !!interpolateVariableLabel,
31
- visibleVariablesCount: visibleVariables.length
34
+ visibleVariablesCount: effectiveVisibleVariables.length,
35
+ hasInstanceVisibleVariables: !!instanceVisibleVariables
32
36
  });
33
37
  const entryTitle = groupe.configMultiple?.labelTemplate?.replace('{index}', iterationNumber.toString()) ||
34
38
  `${groupe.designation} ${iterationNumber}`;
35
- return (_jsxs("div", { className: "iteration-card bg-white border border-gray-200 rounded-lg p-4 shadow-sm", children: [_jsxs("div", { className: "flex items-center justify-between mb-4", children: [_jsxs("h4", { className: "text-lg font-medium text-gray-800 flex items-center", children: [_jsx("span", { className: "w-6 h-6 bg-blue-100 text-blue-800 rounded-full flex items-center justify-center text-sm font-semibold mr-2", children: iterationNumber }), entryTitle] }), groupe.configMultiple?.allowManualControl && canRemove && onRemove && (_jsx("button", { onClick: onRemove, disabled: disabled, className: "p-2 text-red-500 hover:text-red-700 hover:bg-red-50 rounded-lg transition-colors disabled:opacity-50 disabled:cursor-not-allowed", title: "Supprimer cette entr\u00E9e", children: _jsx(Trash2, { className: "h-4 w-4" }) }))] }), _jsx("div", { className: "variables-grid grid grid-cols-1 md:grid-cols-2 gap-4", children: visibleVariables.map(variable => {
39
+ return (_jsxs("div", { className: "iteration-card bg-white border border-gray-200 rounded-lg p-4 shadow-sm", children: [_jsxs("div", { className: "flex items-center justify-between mb-4", children: [_jsxs("h4", { className: "text-lg font-medium text-gray-800 flex items-center", children: [_jsx("span", { className: "w-6 h-6 bg-blue-100 text-blue-800 rounded-full flex items-center justify-center text-sm font-semibold mr-2", children: iterationNumber }), entryTitle] }), groupe.configMultiple?.allowManualControl && canRemove && onRemove && (_jsx("button", { onClick: onRemove, disabled: disabled, className: "p-2 text-red-500 hover:text-red-700 hover:bg-red-50 rounded-lg transition-colors disabled:opacity-50 disabled:cursor-not-allowed", title: "Supprimer cette entr\u00E9e", children: _jsx(Trash2, { className: "h-4 w-4" }) }))] }), _jsx("div", { className: "variables-grid grid grid-cols-1 md:grid-cols-2 gap-4", children: effectiveVisibleVariables.map(variable => {
36
40
  const responseKey = `${variable.code}_${iterationNumber}`;
37
41
  // Extraire les variables roster si c'est un type ROSTERCHECK ou ROSTERLIST
38
42
  const rosterVariables = (variable.typeCode === 'ROSTERCHECK' || variable.typeCode === 'ROSTERLIST')
@@ -245,7 +249,14 @@ const GroupRenderer = ({ groupe, responses, conditionEngine, formTree, onChange,
245
249
  return (_jsxs("div", { className: "mb-4 p-3 bg-red-50 border border-red-200 rounded-lg", children: [_jsxs("div", { className: "flex items-center mb-2", children: [_jsx(AlertCircle, { className: "h-4 w-4 text-red-600 mr-2" }), _jsxs("h4", { className: "text-sm font-medium text-red-800", children: ["Erreurs de validation (", validationErrors.length, ")"] })] }), _jsxs("ul", { className: "text-sm text-red-700 space-y-1", children: [validationErrors.slice(0, 5).map((error, index) => (_jsxs("li", { children: ["\u2022 ", error.message] }, index))), validationErrors.length > 5 && (_jsxs("li", { className: "text-red-600 font-medium", children: ["... et ", validationErrors.length - 5, " autres erreurs"] }))] })] }));
246
250
  };
247
251
  if (groupe.estMultiple) {
248
- return (_jsxs("div", { className: "group-renderer-multiple", children: [_jsx(ErrorSummary, {}), _jsx(MultipleGroupManager, { groupe: groupe, entries: multipleEntries, onAddEntry: addEntry, onRemoveEntry: removeEntry, children: multipleEntries.map((iterationNumber, index) => (_jsx(MultipleGroupEntry, { groupe: groupe, iterationNumber: iterationNumber, totalIterations: multipleEntries.length, visibleVariables: visibleVariables, responses: responses, onChange: onChange, onRemove: () => removeEntry(index), canRemove: multipleEntries.length > (groupe.configMultiple?.minIterations || 1), disabled: disabled, allResponses: allResponses, interpolateVariableLabel: interpolateVariableLabel, RosterCheckInput: RosterCheckInput, RosterListInput: RosterListInput }, iterationNumber))) })] }));
252
+ return (_jsxs("div", { className: "group-renderer-multiple", children: [_jsx(ErrorSummary, {}), _jsx(MultipleGroupManager, { groupe: groupe, entries: multipleEntries, onAddEntry: addEntry, onRemoveEntry: removeEntry, children: multipleEntries.map((iterationNumber, index) => {
253
+ // Pour les groupes multiples avec FormTree, utiliser getVisibleVariablesForInstance
254
+ // pour obtenir les variables visibles spécifiques à cette instance (gestion des jumps par instance)
255
+ const instanceVisibleVars = useFormTreeMode && formTree
256
+ ? formTree.getVisibleVariablesForInstance(groupe.code, iterationNumber)
257
+ : undefined;
258
+ return (_jsx(MultipleGroupEntry, { groupe: groupe, iterationNumber: iterationNumber, totalIterations: multipleEntries.length, visibleVariables: visibleVariables, instanceVisibleVariables: instanceVisibleVars, responses: responses, onChange: onChange, onRemove: () => removeEntry(index), canRemove: multipleEntries.length > (groupe.configMultiple?.minIterations || 1), disabled: disabled, allResponses: allResponses, interpolateVariableLabel: interpolateVariableLabel, RosterCheckInput: RosterCheckInput, RosterListInput: RosterListInput }, iterationNumber));
259
+ }) })] }));
249
260
  }
250
261
  // Groupe simple
251
262
  return (_jsxs("div", { className: "group-renderer-simple", children: [_jsxs("div", { className: "mb-6", children: [_jsx("h2", { className: "text-xl font-semibold text-gray-900 mb-2", children: groupe.designation }), visibleVariables.length > 0 && (_jsxs("p", { className: "text-gray-600 text-sm", children: [visibleVariables.length, " ", visibleVariables.length > 1 ? 'champs' : 'champ'] }))] }), _jsx(ErrorSummary, {}), _jsx("div", { className: "variables-container space-y-6", children: visibleVariables.map(variable => {
@@ -31,6 +31,7 @@ export interface VariableRendererProps {
31
31
  interpolateVariableLabel?: (label: string, responses: Record<string, EnqueteReponse>, numeroMembre?: number) => string;
32
32
  services?: any;
33
33
  geographicComponents?: any;
34
+ isConsultationMode?: boolean;
34
35
  }
35
36
  declare const GeographicFallback: React.FC<VariableRendererProps>;
36
37
  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;CAC5B;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,CAmHrD,CAAC;AAEF,eAAe,gBAAgB,CAAC;AAChC,OAAO,EAAE,mBAAmB,EAAE,kBAAkB,EAAE,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;CAC9B;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,CAqHrD,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 }) => {
61
+ const VariableRenderer = ({ variable, value, onChange, onBlur, error, disabled, numeroMembre, valeurMin, onFillFormFromMenage, onFillFormFromEnquete, formulaireVariables, rosterVariables, allResponses = {}, RosterCheckInput, RosterListInput, interpolateVariableLabel, reponses = {}, services, isConsultationMode = false }) => {
62
62
  console.log('🎨 [VariableRenderer] Rendu de variable', {
63
63
  code: variable.code,
64
64
  designation: variable.designation,
@@ -85,7 +85,7 @@ const VariableRenderer = ({ variable, value, onChange, onBlur, error, disabled,
85
85
  ...variable,
86
86
  designation: interpolatedDesignation
87
87
  };
88
- return _jsx(RendererComponent, { variable: variableWithInterpolatedLabel, value, onChange, onBlur, error, disabled, numeroMembre, valeurMin, onFillFormFromMenage, formulaireVariables, rosterVariables });
88
+ return _jsx(RendererComponent, { variable: variableWithInterpolatedLabel, value, onChange, onBlur, error, disabled, numeroMembre, valeurMin, onFillFormFromMenage, formulaireVariables, rosterVariables, isConsultationMode });
89
89
  }
90
90
  return (_jsxs("div", { className: "variable-container space-y-2", children: [_jsxs("label", { className: "block text-sm font-medium text-gray-700", children: [variable.typeCode !== 'LABEL' && variable.code && (_jsxs("span", { className: "text-blue-600 font-mono text-xs mr-2", children: ["(", variable.code, ")"] })), interpolatedDesignation, variable.estObligatoire && _jsx("span", { className: "text-red-500 ml-1", children: "*" }), variable.proprietes?.tooltip && (_jsx("button", { type: "button", className: "ml-2 text-gray-400 hover:text-gray-600", title: variable.proprietes.tooltip, children: _jsx(HelpCircle, { className: "h-4 w-4 inline" }) }))] }), _jsxs(Suspense, { fallback: _jsx("div", { className: "animate-pulse bg-gray-200 h-10 rounded" }), children: [(variable.typeCode === 'ROSTERCHECK' || variable.typeCode === 'ROSTERLIST') && (() => {
91
91
  console.log(`🔍 [VariableRenderer] Variable ${variable.code} - Avant rendu:`, {
@@ -96,7 +96,7 @@ const VariableRenderer = ({ variable, value, onChange, onBlur, error, disabled,
96
96
  length: Array.isArray(rosterVariables) ? rosterVariables.length : 'N/A'
97
97
  });
98
98
  return null;
99
- })(), _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 })] }), 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 })] }))] }));
99
+ })(), _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 })] }))] }));
100
100
  };
101
101
  export default VariableRenderer;
102
102
  export { getVariableRenderer, GeographicFallback };
@@ -1 +1 @@
1
- {"version":3,"file":"StringInput.d.ts","sourceRoot":"","sources":["../../../src/components/inputs/StringInput.tsx"],"names":[],"mappings":"AAAA;;;GAGG;AAIH,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,kBAAkB,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AACxE,OAAO,EAAE,oBAAoB,EAAE,MAAM,sBAAsB,CAAC;AAI5D,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,EAAE,kBAAkB,GAAG;QAAE,QAAQ,EAAE,QAAQ,CAAA;KAAE,CAAC;IACtD,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,QAAQ,CAAC,EAAE,oBAAoB,CAAC;IAChC,kBAAkB,CAAC,EAAE,OAAO,CAAC;CAC9B;AAED,QAAA,MAAM,WAAW,EAAE,KAAK,CAAC,EAAE,CAAC,gBAAgB,CA4D3C,CAAC;AAEF,eAAe,WAAW,CAAC"}
1
+ {"version":3,"file":"StringInput.d.ts","sourceRoot":"","sources":["../../../src/components/inputs/StringInput.tsx"],"names":[],"mappings":"AAAA;;;GAGG;AAIH,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,kBAAkB,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AACxE,OAAO,EAAE,oBAAoB,EAAE,MAAM,sBAAsB,CAAC;AAI5D,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,EAAE,kBAAkB,GAAG;QAAE,QAAQ,EAAE,QAAQ,CAAA;KAAE,CAAC;IACtD,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,QAAQ,CAAC,EAAE,oBAAoB,CAAC;IAChC,kBAAkB,CAAC,EAAE,OAAO,CAAC;CAC9B;AAED,QAAA,MAAM,WAAW,EAAE,KAAK,CAAC,EAAE,CAAC,gBAAgB,CAmF3C,CAAC;AAEF,eAAe,WAAW,CAAC"}
@@ -13,10 +13,31 @@ const StringInput = ({ variable, value, onChange, onBlur, error, disabled, servi
13
13
  const { textStyle, containerStyle } = applyComponentStyle(variable.componentStyle);
14
14
  // Déterminer si le composant est en lecture seule
15
15
  const isReadonly = isComponentReadonly(variable, isConsultationMode);
16
+ // 🔍 DEBUG: Log pour tracer le problème des STRING dans les rosters
17
+ console.log('[StringInput] État du composant', {
18
+ code: variable.code,
19
+ typeCode: variable.typeCode,
20
+ value,
21
+ stringValue,
22
+ isReadonly,
23
+ isConsultationMode,
24
+ variableIsReadonly: variable.isReadonly,
25
+ disabled,
26
+ hasOnChange: !!onChange
27
+ });
16
28
  const handleChange = (newValue) => {
17
- if (isReadonly)
29
+ console.log('[StringInput] handleChange appelé', {
30
+ code: variable.code,
31
+ newValue,
32
+ isReadonly,
33
+ willProcess: !isReadonly
34
+ });
35
+ if (isReadonly) {
36
+ console.log('[StringInput] ⚠️ Changement bloqué car isReadonly=true');
18
37
  return;
38
+ }
19
39
  const transformed = forceUppercase ? newValue.toLocaleUpperCase('fr-FR') : newValue;
40
+ console.log('[StringInput] Appel onChange avec:', transformed);
20
41
  onChange(transformed);
21
42
  };
22
43
  // Générer les classes CSS
@@ -9,6 +9,7 @@
9
9
  import React from 'react';
10
10
  import { VariableFormulaire, VariableValue } from '../../types/enquete';
11
11
  import { RosterVariable } from './RosterPanel';
12
+ import { FormRendererServices } from '../../types/services';
12
13
  export interface RosterCheckInputProps {
13
14
  variable: VariableFormulaire;
14
15
  value: VariableValue;
@@ -17,6 +18,8 @@ export interface RosterCheckInputProps {
17
18
  error?: string;
18
19
  disabled?: boolean;
19
20
  rosterVariables?: RosterVariable[];
21
+ services?: FormRendererServices;
22
+ isConsultationMode?: boolean;
20
23
  }
21
24
  declare const RosterCheckInput: React.FC<RosterCheckInputProps>;
22
25
  export default RosterCheckInput;
@@ -1 +1 @@
1
- {"version":3,"file":"RosterCheckInput.d.ts","sourceRoot":"","sources":["../../../src/components/roster/RosterCheckInput.tsx"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAIH,OAAO,KAAuC,MAAM,OAAO,CAAC;AAC5D,OAAO,EAAE,kBAAkB,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AAIxE,OAAoB,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AAG5D,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,eAAe,CAAC,EAAE,cAAc,EAAE,CAAC;CACpC;AAYD,QAAA,MAAM,gBAAgB,EAAE,KAAK,CAAC,EAAE,CAAC,qBAAqB,CA+KrD,CAAC;AAEF,eAAe,gBAAgB,CAAC"}
1
+ {"version":3,"file":"RosterCheckInput.d.ts","sourceRoot":"","sources":["../../../src/components/roster/RosterCheckInput.tsx"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAIH,OAAO,KAAuC,MAAM,OAAO,CAAC;AAC5D,OAAO,EAAE,kBAAkB,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AAIxE,OAAoB,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AAC5D,OAAO,EAAE,oBAAoB,EAAE,MAAM,sBAAsB,CAAC;AAG5D,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,eAAe,CAAC,EAAE,cAAc,EAAE,CAAC;IAEnC,QAAQ,CAAC,EAAE,oBAAoB,CAAC;IAChC,kBAAkB,CAAC,EAAE,OAAO,CAAC;CAC9B;AAYD,QAAA,MAAM,gBAAgB,EAAE,KAAK,CAAC,EAAE,CAAC,qBAAqB,CA8LrD,CAAC;AAEF,eAAe,gBAAgB,CAAC"}
@@ -12,7 +12,7 @@ import { useMemo, useState, useEffect } from 'react';
12
12
  import { AlertCircle } from 'lucide-react';
13
13
  import { VariableValueConverter } from '../../lib/utils/variableValueConverter';
14
14
  import RosterPanel from './RosterPanel';
15
- const RosterCheckInput = ({ variable, value, onChange, onBlur, error, disabled, rosterVariables = [] }) => {
15
+ const RosterCheckInput = ({ variable, value, onChange, onBlur, error, disabled, rosterVariables = [], services, isConsultationMode = false }) => {
16
16
  // Parser les options depuis la propriété valeur (format: "01#Option1|02#Option2|...")
17
17
  const options = useMemo(() => {
18
18
  const optionsSource = variable.proprietes?.valeur || variable.valeurDefaut;
@@ -75,6 +75,13 @@ const RosterCheckInput = ({ variable, value, onChange, onBlur, error, disabled,
75
75
  }, [rosterVariables]);
76
76
  // Gérer le changement d'une variable dans une option
77
77
  const handleVariableChange = (optionCode, variableCode, variableValue) => {
78
+ console.log('[RosterCheckInput] handleVariableChange appelé', {
79
+ optionCode,
80
+ variableCode,
81
+ variableValue,
82
+ variableValueType: typeof variableValue,
83
+ currentDataBefore: JSON.stringify(currentData)
84
+ });
78
85
  const newData = { ...currentData };
79
86
  if (!newData[optionCode]) {
80
87
  newData[optionCode] = {};
@@ -90,8 +97,10 @@ const RosterCheckInput = ({ variable, value, onChange, onBlur, error, disabled,
90
97
  delete newData[optionCode];
91
98
  }
92
99
  }
100
+ const serializedData = JSON.stringify(newData);
101
+ console.log('[RosterCheckInput] Nouvelle valeur sérialisée:', serializedData);
93
102
  // Sérialiser en JSON pour le stockage
94
- onChange(JSON.stringify(newData));
103
+ onChange(serializedData);
95
104
  if (onBlur) {
96
105
  onBlur();
97
106
  }
@@ -105,7 +114,7 @@ const RosterCheckInput = ({ variable, value, onChange, onBlur, error, disabled,
105
114
  }
106
115
  return (_jsxs("div", { className: "space-y-4", children: [_jsx("div", { children: _jsx("p", { className: "text-sm text-gray-500", children: "Renseignez les options" }) }), _jsx("div", { className: "grid grid-cols-1 md:grid-cols-2 lg:grid-cols-3 gap-4", children: options.map(option => {
107
116
  const isChecked = checkedOptions.has(option.code);
108
- return (_jsx(RosterPanel, { option: option, rosterVariables: sortedRosterVariables, value: currentData[option.code] || {}, onChange: (variableCode, variableValue) => handleVariableChange(option.code, variableCode, variableValue), disabled: disabled, showCheckbox: true, isChecked: isChecked, onCheckChange: (checked) => handleCheckChange(option.code, checked) }, option.code));
117
+ return (_jsx(RosterPanel, { option: option, rosterVariables: sortedRosterVariables, value: currentData[option.code] || {}, onChange: (variableCode, variableValue) => handleVariableChange(option.code, variableCode, variableValue), disabled: disabled, showCheckbox: true, isChecked: isChecked, onCheckChange: (checked) => handleCheckChange(option.code, checked), services: services, isConsultationMode: isConsultationMode }, option.code));
109
118
  }) }), checkedOptions.size > 0 && (_jsx("div", { className: "p-2 bg-green-50 border border-green-200 rounded text-sm", children: _jsxs("span", { className: "text-green-800 font-medium", children: [checkedOptions.size, " option(s) coch\u00E9e(s)", Object.keys(currentData).length > 0 && ` · ${Object.keys(currentData).length} avec des données`] }) })), 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
119
  };
111
120
  export default RosterCheckInput;
@@ -9,6 +9,7 @@
9
9
  import React from 'react';
10
10
  import { VariableFormulaire, VariableValue } from '../../types/enquete';
11
11
  import { RosterVariable } from './RosterPanel';
12
+ import { FormRendererServices } from '../../types/services';
12
13
  export interface RosterListInputProps {
13
14
  variable: VariableFormulaire;
14
15
  value: VariableValue;
@@ -17,6 +18,8 @@ export interface RosterListInputProps {
17
18
  error?: string;
18
19
  disabled?: boolean;
19
20
  rosterVariables?: RosterVariable[];
21
+ services?: FormRendererServices;
22
+ isConsultationMode?: boolean;
20
23
  }
21
24
  declare const RosterListInput: React.FC<RosterListInputProps>;
22
25
  export default RosterListInput;
@@ -1 +1 @@
1
- {"version":3,"file":"RosterListInput.d.ts","sourceRoot":"","sources":["../../../src/components/roster/RosterListInput.tsx"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAIH,OAAO,KAAkB,MAAM,OAAO,CAAC;AACvC,OAAO,EAAE,kBAAkB,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AAIxE,OAAoB,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AAG5D,MAAM,WAAW,oBAAoB;IACnC,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,eAAe,CAAC,EAAE,cAAc,EAAE,CAAC;CACpC;AAYD,QAAA,MAAM,eAAe,EAAE,KAAK,CAAC,EAAE,CAAC,oBAAoB,CAkInD,CAAC;AAEF,eAAe,eAAe,CAAC"}
1
+ {"version":3,"file":"RosterListInput.d.ts","sourceRoot":"","sources":["../../../src/components/roster/RosterListInput.tsx"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAIH,OAAO,KAAkB,MAAM,OAAO,CAAC;AACvC,OAAO,EAAE,kBAAkB,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AAIxE,OAAoB,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AAC5D,OAAO,EAAE,oBAAoB,EAAE,MAAM,sBAAsB,CAAC;AAG5D,MAAM,WAAW,oBAAoB;IACnC,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,eAAe,CAAC,EAAE,cAAc,EAAE,CAAC;IAEnC,QAAQ,CAAC,EAAE,oBAAoB,CAAC;IAChC,kBAAkB,CAAC,EAAE,OAAO,CAAC;CAC9B;AAYD,QAAA,MAAM,eAAe,EAAE,KAAK,CAAC,EAAE,CAAC,oBAAoB,CAiJnD,CAAC;AAEF,eAAe,eAAe,CAAC"}
@@ -12,7 +12,7 @@ import { useMemo } from 'react';
12
12
  import { AlertCircle } from 'lucide-react';
13
13
  import { VariableValueConverter } from '../../lib/utils/variableValueConverter';
14
14
  import RosterPanel from './RosterPanel';
15
- const RosterListInput = ({ variable, value, onChange, onBlur, error, disabled, rosterVariables = [] }) => {
15
+ const RosterListInput = ({ variable, value, onChange, onBlur, error, disabled, rosterVariables = [], services, isConsultationMode = false }) => {
16
16
  // Parser les options depuis la propriété valeur (format: "01#Option1|02#Option2|...")
17
17
  const options = useMemo(() => {
18
18
  const optionsSource = variable.proprietes?.valeur || variable.valeurDefaut;
@@ -44,6 +44,13 @@ const RosterListInput = ({ variable, value, onChange, onBlur, error, disabled, r
44
44
  }, [rosterVariables]);
45
45
  // Gérer le changement d'une variable dans un panel
46
46
  const handleVariableChange = (optionCode, variableCode, newValue) => {
47
+ console.log('[RosterListInput] handleVariableChange appelé', {
48
+ optionCode,
49
+ variableCode,
50
+ newValue,
51
+ newValueType: typeof newValue,
52
+ currentDataBefore: JSON.stringify(currentData)
53
+ });
47
54
  const newData = { ...currentData };
48
55
  if (!newData[optionCode]) {
49
56
  newData[optionCode] = {};
@@ -58,8 +65,10 @@ const RosterListInput = ({ variable, value, onChange, onBlur, error, disabled, r
58
65
  delete newData[optionCode];
59
66
  }
60
67
  }
68
+ const serializedData = JSON.stringify(newData);
69
+ console.log('[RosterListInput] Nouvelle valeur sérialisée:', serializedData);
61
70
  // Sérialiser en JSON pour le stockage
62
- onChange(JSON.stringify(newData));
71
+ onChange(serializedData);
63
72
  };
64
73
  // Obtenir la valeur d'une variable
65
74
  const getVariableValue = (optionCode, variableCode) => {
@@ -72,6 +81,6 @@ const RosterListInput = ({ variable, value, onChange, onBlur, error, disabled, r
72
81
  if (sortedRosterVariables.length === 0) {
73
82
  return (_jsx("div", { className: "p-3 bg-yellow-50 border border-yellow-200 rounded-lg", children: _jsx("p", { className: "text-yellow-800 text-sm", children: "Aucune variable de roster d\u00E9finie. Veuillez configurer les variables du roster." }) }));
74
83
  }
75
- return (_jsxs("div", { className: "space-y-4", children: [_jsx("div", { children: _jsx("p", { className: "text-sm text-gray-500", children: "Renseignez les options" }) }), _jsx("div", { className: "grid grid-cols-1 md:grid-cols-2 lg:grid-cols-3 gap-4", children: options.map(option => (_jsx(RosterPanel, { option: option, rosterVariables: sortedRosterVariables, value: currentData[option.code] || {}, onChange: (variableCode, newValue) => handleVariableChange(option.code, variableCode, newValue), disabled: disabled }, option.code))) }), Object.keys(currentData).length > 0 && (_jsx("div", { className: "p-2 bg-green-50 border border-green-200 rounded text-sm", children: _jsxs("span", { className: "text-green-800 font-medium", children: [Object.keys(currentData).length, " option(s) avec des s\u00E9lections"] }) })), 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 })] }))] }));
84
+ return (_jsxs("div", { className: "space-y-4", children: [_jsx("div", { children: _jsx("p", { className: "text-sm text-gray-500", children: "Renseignez les options" }) }), _jsx("div", { className: "grid grid-cols-1 md:grid-cols-2 lg:grid-cols-3 gap-4", children: options.map(option => (_jsx(RosterPanel, { option: option, rosterVariables: sortedRosterVariables, value: currentData[option.code] || {}, onChange: (variableCode, newValue) => handleVariableChange(option.code, variableCode, newValue), disabled: disabled, services: services, isConsultationMode: isConsultationMode }, option.code))) }), Object.keys(currentData).length > 0 && (_jsx("div", { className: "p-2 bg-green-50 border border-green-200 rounded text-sm", children: _jsxs("span", { className: "text-green-800 font-medium", children: [Object.keys(currentData).length, " option(s) avec des s\u00E9lections"] }) })), 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 })] }))] }));
76
85
  };
77
86
  export default RosterListInput;
@@ -6,6 +6,7 @@
6
6
  * (RADIO, COMBOBOX, STRING, etc.) au lieu de simples checkboxes/selects
7
7
  */
8
8
  import React from 'react';
9
+ import { FormRendererServices } from '../../types/services';
9
10
  interface RosterOption {
10
11
  code: string;
11
12
  designation: string;
@@ -30,6 +31,8 @@ export interface RosterPanelProps {
30
31
  showCheckbox?: boolean;
31
32
  isChecked?: boolean;
32
33
  onCheckChange?: (checked: boolean) => void;
34
+ services?: FormRendererServices;
35
+ isConsultationMode?: boolean;
33
36
  }
34
37
  declare const RosterPanel: React.FC<RosterPanelProps>;
35
38
  export default RosterPanel;
@@ -1 +1 @@
1
- {"version":3,"file":"RosterPanel.d.ts","sourceRoot":"","sources":["../../../src/components/roster/RosterPanel.tsx"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAIH,OAAO,KAAkB,MAAM,OAAO,CAAC;AAOvC,UAAU,YAAY;IACpB,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;CACrB;AAGD,MAAM,WAAW,cAAc;IAC7B,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,KAAK,EAAE,MAAM,CAAC;IACd,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,mBAAmB,CAAC,EAAE,MAAM,CAAC;CAC9B;AAGD,MAAM,WAAW,gBAAgB;IAC/B,MAAM,EAAE,YAAY,CAAC;IACrB,eAAe,EAAE,cAAc,EAAE,CAAC;IAClC,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;IAC3B,QAAQ,EAAE,CAAC,YAAY,EAAE,MAAM,EAAE,KAAK,EAAE,GAAG,KAAK,IAAI,CAAC;IACrD,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,aAAa,CAAC,EAAE,CAAC,OAAO,EAAE,OAAO,KAAK,IAAI,CAAC;CAC5C;AAED,QAAA,MAAM,WAAW,EAAE,KAAK,CAAC,EAAE,CAAC,gBAAgB,CA+J3C,CAAC;AAEF,eAAe,WAAW,CAAC"}
1
+ {"version":3,"file":"RosterPanel.d.ts","sourceRoot":"","sources":["../../../src/components/roster/RosterPanel.tsx"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAIH,OAAO,KAAkB,MAAM,OAAO,CAAC;AAEvC,OAAO,EAAE,oBAAoB,EAAE,MAAM,sBAAsB,CAAC;AAM5D,UAAU,YAAY;IACpB,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;CACrB;AAGD,MAAM,WAAW,cAAc;IAC7B,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,KAAK,EAAE,MAAM,CAAC;IACd,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,mBAAmB,CAAC,EAAE,MAAM,CAAC;CAC9B;AAGD,MAAM,WAAW,gBAAgB;IAC/B,MAAM,EAAE,YAAY,CAAC;IACrB,eAAe,EAAE,cAAc,EAAE,CAAC;IAClC,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;IAC3B,QAAQ,EAAE,CAAC,YAAY,EAAE,MAAM,EAAE,KAAK,EAAE,GAAG,KAAK,IAAI,CAAC;IACrD,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,aAAa,CAAC,EAAE,CAAC,OAAO,EAAE,OAAO,KAAK,IAAI,CAAC;IAE3C,QAAQ,CAAC,EAAE,oBAAoB,CAAC;IAChC,kBAAkB,CAAC,EAAE,OAAO,CAAC;CAC9B;AAED,QAAA,MAAM,WAAW,EAAE,KAAK,CAAC,EAAE,CAAC,gBAAgB,CAqL3C,CAAC;AAEF,eAAe,WAAW,CAAC"}
@@ -11,7 +11,7 @@ import { useMemo } from 'react';
11
11
  import VariableRenderer from '../VariableRenderer';
12
12
  import { cn } from '../../lib/utils/cn';
13
13
  import { RosterConditionEngine } from '../../lib/roster-condition-engine';
14
- const RosterPanel = ({ option, rosterVariables, value, onChange, disabled, showCheckbox = false, isChecked = true, onCheckChange }) => {
14
+ const RosterPanel = ({ option, rosterVariables, value, onChange, disabled, showCheckbox = false, isChecked = true, onCheckChange, services, isConsultationMode = false }) => {
15
15
  // Trier les variables par ordre
16
16
  const sortedVariables = [...rosterVariables].sort((a, b) => a.ordre - b.ordre);
17
17
  // Calculer les variables masquées par les jumps
@@ -88,7 +88,24 @@ const RosterPanel = ({ option, rosterVariables, value, onChange, disabled, showC
88
88
  };
89
89
  // Récupérer la valeur actuelle pour cette variable dans cette option
90
90
  const currentValue = value[rosterVar.code] || null;
91
- return (_jsx("div", { className: "roster-variable", children: _jsx(VariableRenderer, { variable: variable, value: currentValue, onChange: (newValue) => onChange(rosterVar.code, newValue), disabled: disabled }) }, rosterVar.code));
91
+ // 🔍 DEBUG: Log pour tracer le problème des STRING dans les rosters
92
+ console.log('[RosterPanel] Rendu variable', {
93
+ code: rosterVar.code,
94
+ uniqueCode,
95
+ typeCode: effectiveTypeCode,
96
+ currentValue,
97
+ currentValueType: typeof currentValue,
98
+ isDisabled: disabled,
99
+ variableIsReadonly: variable.isReadonly
100
+ });
101
+ return (_jsx("div", { className: "roster-variable", children: _jsx(VariableRenderer, { variable: variable, value: currentValue, onChange: (newValue) => {
102
+ console.log('[RosterPanel] onChange appelé', {
103
+ variableCode: rosterVar.code,
104
+ newValue,
105
+ newValueType: typeof newValue
106
+ });
107
+ onChange(rosterVar.code, newValue);
108
+ }, disabled: disabled, services: services, isConsultationMode: isConsultationMode }) }, rosterVar.code));
92
109
  }) })) : (_jsx("div", { className: "p-4 text-center text-gray-500 bg-gray-50 rounded border border-gray-200", children: _jsx("p", { className: "text-sm", children: "\u2713 Cochez l'option ci-dessus pour renseigner les variables" }) }))] }));
93
110
  };
94
111
  export default RosterPanel;
@@ -16,8 +16,12 @@ export interface UseFormTreeReturn {
16
16
  formTree: FormTree;
17
17
  /** Retourne les variables visibles d'un groupe */
18
18
  getVisibleVariables: (groupeCode: string) => VariableFormulaire[];
19
+ /** Retourne les variables visibles d'un groupe pour une instance spécifique (groupes multiples) */
20
+ getVisibleVariablesForInstance: (groupeCode: string, instanceNumber: number) => VariableFormulaire[];
19
21
  /** Retourne les codes des variables sautées dans un groupe */
20
22
  getJumpedVariableCodes: (groupeCode: string) => Set<string>;
23
+ /** Retourne les codes des variables sautées pour une instance spécifique (groupes multiples) */
24
+ getJumpedVariableCodesForInstance: (groupeCode: string, instanceNumber: number) => Set<string>;
21
25
  /** Valide un groupe et retourne les erreurs */
22
26
  validateGroup: (groupeCode: string) => {
23
27
  isValid: boolean;
@@ -33,6 +37,8 @@ export interface UseFormTreeReturn {
33
37
  jumpErrors: JumpError[];
34
38
  /** Liste des jumps actifs */
35
39
  activeJumps: JumpRange[];
40
+ /** Retourne les jumps actifs pour une instance spécifique */
41
+ getActiveJumpsForInstance: (groupeCode: string, instanceNumber: number) => JumpRange[];
36
42
  /** Force une réévaluation de toutes les conditions */
37
43
  forceEvaluate: () => void;
38
44
  /** Compteur de mise à jour (pour forcer le re-render) */
@@ -1 +1 @@
1
- {"version":3,"file":"useFormTree.d.ts","sourceRoot":"","sources":["../../src/hooks/useFormTree.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAKH,OAAO,EAAE,gBAAgB,EAAE,cAAc,EAAE,kBAAkB,EAAE,MAAM,kBAAkB,CAAC;AACxF,OAAO,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAC5C,OAAO,EAAE,SAAS,EAAE,SAAS,EAAE,iBAAiB,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AAE7F,MAAM,WAAW,kBAAkB;IACjC,8CAA8C;IAC9C,WAAW,CAAC,EAAE,CAAC,KAAK,EAAE,SAAS,KAAK,IAAI,CAAC;IACzC,kCAAkC;IAClC,KAAK,CAAC,EAAE,OAAO,CAAC;CACjB;AAED,MAAM,WAAW,iBAAiB;IAChC,2BAA2B;IAC3B,QAAQ,EAAE,QAAQ,CAAC;IAEnB,kDAAkD;IAClD,mBAAmB,EAAE,CAAC,UAAU,EAAE,MAAM,KAAK,kBAAkB,EAAE,CAAC;IAElE,8DAA8D;IAC9D,sBAAsB,EAAE,CAAC,UAAU,EAAE,MAAM,KAAK,GAAG,CAAC,MAAM,CAAC,CAAC;IAE5D,+CAA+C;IAC/C,aAAa,EAAE,CAAC,UAAU,EAAE,MAAM,KAAK;QAAE,OAAO,EAAE,OAAO,CAAC;QAAC,MAAM,EAAE,MAAM,EAAE,CAAA;KAAE,CAAC;IAE9E,uEAAuE;IACvE,yBAAyB,EAAE,MAAM,MAAM,EAAE,CAAC;IAE1C,qCAAqC;IACrC,gBAAgB,EAAE,CAAC,YAAY,EAAE,MAAM,KAAK,iBAAiB,GAAG,SAAS,CAAC;IAE1E,kCAAkC;IAClC,aAAa,EAAE,CAAC,UAAU,EAAE,MAAM,KAAK,cAAc,GAAG,SAAS,CAAC;IAElE,0CAA0C;IAC1C,UAAU,EAAE,SAAS,EAAE,CAAC;IAExB,6BAA6B;IAC7B,WAAW,EAAE,SAAS,EAAE,CAAC;IAEzB,sDAAsD;IACtD,aAAa,EAAE,MAAM,IAAI,CAAC;IAE1B,yDAAyD;IACzD,WAAW,EAAE,MAAM,CAAC;CACrB;AAED;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AACH,wBAAgB,WAAW,CACzB,OAAO,EAAE,gBAAgB,EAAE,EAC3B,SAAS,EAAE,MAAM,CAAC,MAAM,EAAE,cAAc,CAAC,EACzC,OAAO,GAAE,kBAAuB,GAC/B,iBAAiB,CAyFnB;AAED,eAAe,WAAW,CAAC"}
1
+ {"version":3,"file":"useFormTree.d.ts","sourceRoot":"","sources":["../../src/hooks/useFormTree.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAKH,OAAO,EAAE,gBAAgB,EAAE,cAAc,EAAE,kBAAkB,EAAE,MAAM,kBAAkB,CAAC;AACxF,OAAO,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAC5C,OAAO,EAAE,SAAS,EAAE,SAAS,EAAE,iBAAiB,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AAE7F,MAAM,WAAW,kBAAkB;IACjC,8CAA8C;IAC9C,WAAW,CAAC,EAAE,CAAC,KAAK,EAAE,SAAS,KAAK,IAAI,CAAC;IACzC,kCAAkC;IAClC,KAAK,CAAC,EAAE,OAAO,CAAC;CACjB;AAED,MAAM,WAAW,iBAAiB;IAChC,2BAA2B;IAC3B,QAAQ,EAAE,QAAQ,CAAC;IAEnB,kDAAkD;IAClD,mBAAmB,EAAE,CAAC,UAAU,EAAE,MAAM,KAAK,kBAAkB,EAAE,CAAC;IAElE,mGAAmG;IACnG,8BAA8B,EAAE,CAAC,UAAU,EAAE,MAAM,EAAE,cAAc,EAAE,MAAM,KAAK,kBAAkB,EAAE,CAAC;IAErG,8DAA8D;IAC9D,sBAAsB,EAAE,CAAC,UAAU,EAAE,MAAM,KAAK,GAAG,CAAC,MAAM,CAAC,CAAC;IAE5D,gGAAgG;IAChG,iCAAiC,EAAE,CAAC,UAAU,EAAE,MAAM,EAAE,cAAc,EAAE,MAAM,KAAK,GAAG,CAAC,MAAM,CAAC,CAAC;IAE/F,+CAA+C;IAC/C,aAAa,EAAE,CAAC,UAAU,EAAE,MAAM,KAAK;QAAE,OAAO,EAAE,OAAO,CAAC;QAAC,MAAM,EAAE,MAAM,EAAE,CAAA;KAAE,CAAC;IAE9E,uEAAuE;IACvE,yBAAyB,EAAE,MAAM,MAAM,EAAE,CAAC;IAE1C,qCAAqC;IACrC,gBAAgB,EAAE,CAAC,YAAY,EAAE,MAAM,KAAK,iBAAiB,GAAG,SAAS,CAAC;IAE1E,kCAAkC;IAClC,aAAa,EAAE,CAAC,UAAU,EAAE,MAAM,KAAK,cAAc,GAAG,SAAS,CAAC;IAElE,0CAA0C;IAC1C,UAAU,EAAE,SAAS,EAAE,CAAC;IAExB,6BAA6B;IAC7B,WAAW,EAAE,SAAS,EAAE,CAAC;IAEzB,6DAA6D;IAC7D,yBAAyB,EAAE,CAAC,UAAU,EAAE,MAAM,EAAE,cAAc,EAAE,MAAM,KAAK,SAAS,EAAE,CAAC;IAEvF,sDAAsD;IACtD,aAAa,EAAE,MAAM,IAAI,CAAC;IAE1B,yDAAyD;IACzD,WAAW,EAAE,MAAM,CAAC;CACrB;AAED;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AACH,wBAAgB,WAAW,CACzB,OAAO,EAAE,gBAAgB,EAAE,EAC3B,SAAS,EAAE,MAAM,CAAC,MAAM,EAAE,cAAc,CAAC,EACzC,OAAO,GAAE,kBAAuB,GAC/B,iBAAiB,CA8GnB;AAED,eAAe,WAAW,CAAC"}
@@ -57,7 +57,10 @@ export function useFormTree(groupes, responses, options = {}) {
57
57
  }, [formTree, responses]);
58
58
  // Fonctions de requête memoizées
59
59
  const getVisibleVariables = useCallback((groupeCode) => formTree.getVisibleVariables(groupeCode), [formTree, updateCount]);
60
+ const getVisibleVariablesForInstance = useCallback((groupeCode, instanceNumber) => formTree.getVisibleVariablesForInstance(groupeCode, instanceNumber), [formTree, updateCount]);
60
61
  const getJumpedVariableCodes = useCallback((groupeCode) => formTree.getJumpedVariableCodes(groupeCode), [formTree, updateCount]);
62
+ const getJumpedVariableCodesForInstance = useCallback((groupeCode, instanceNumber) => formTree.getJumpedVariableCodesForInstance(groupeCode, instanceNumber), [formTree, updateCount]);
63
+ const getActiveJumpsForInstance = useCallback((groupeCode, instanceNumber) => formTree.getActiveJumpsForInstance(groupeCode, instanceNumber), [formTree, updateCount]);
61
64
  const validateGroup = useCallback((groupeCode) => formTree.validateGroup(groupeCode), [formTree, updateCount]);
62
65
  const getVariablesToClearOnSave = useCallback(() => formTree.getVariablesToClearOnSave(), [formTree, updateCount]);
63
66
  const getVariableState = useCallback((variableCode) => formTree.getVariableState(variableCode), [formTree, updateCount]);
@@ -72,13 +75,16 @@ export function useFormTree(groupes, responses, options = {}) {
72
75
  return {
73
76
  formTree,
74
77
  getVisibleVariables,
78
+ getVisibleVariablesForInstance,
75
79
  getJumpedVariableCodes,
80
+ getJumpedVariableCodesForInstance,
76
81
  validateGroup,
77
82
  getVariablesToClearOnSave,
78
83
  getVariableState,
79
84
  getGroupState,
80
85
  jumpErrors,
81
86
  activeJumps,
87
+ getActiveJumpsForInstance,
82
88
  forceEvaluate,
83
89
  updateCount
84
90
  };
@@ -20,6 +20,8 @@ export declare class FormTree implements IFormTree {
20
20
  private conditionEngine;
21
21
  private responses;
22
22
  private debug;
23
+ private instanceStates;
24
+ private instanceJumpRanges;
23
25
  onJumpError?: (error: JumpError) => void;
24
26
  constructor(responses?: Record<string, EnqueteReponse>, options?: FormTreeOptions);
25
27
  private log;
@@ -38,6 +40,42 @@ export declare class FormTree implements IFormTree {
38
40
  private applyJumpRanges;
39
41
  private computeFinalVisibility;
40
42
  getVisibleVariables(groupeCode: string): VariableFormulaire[];
43
+ /**
44
+ * Retourne les variables visibles pour une instance spécifique d'un groupe multiple
45
+ * Évalue les conditions et jumps dans le contexte de l'instance
46
+ * @param groupeCode Code du groupe
47
+ * @param instanceNumber Numéro de l'instance (1, 2, 3, ...)
48
+ */
49
+ getVisibleVariablesForInstance(groupeCode: string, instanceNumber: number): VariableFormulaire[];
50
+ /**
51
+ * Évalue les états de visibilité pour une instance spécifique d'un groupe multiple
52
+ * Prend en compte les jumps avec interpolation de l'index d'instance
53
+ */
54
+ private evaluateInstanceStates;
55
+ /**
56
+ * Récupère la valeur d'une variable pour une instance spécifique
57
+ */
58
+ private getInstanceValue;
59
+ /**
60
+ * Traite les conditions de jump pour une instance spécifique
61
+ */
62
+ private processJumpConditionForInstance;
63
+ /**
64
+ * Évalue la partie non-jump d'une condition pour une instance spécifique
65
+ */
66
+ private evaluateNonJumpPartForInstance;
67
+ /**
68
+ * Applique les jumps pour une instance spécifique
69
+ */
70
+ private applyInstanceJumpRanges;
71
+ /**
72
+ * Retourne les jumps actifs pour une instance spécifique
73
+ */
74
+ getActiveJumpsForInstance(groupeCode: string, instanceNumber: number): JumpRange[];
75
+ /**
76
+ * Retourne les codes des variables sautées pour une instance spécifique
77
+ */
78
+ getJumpedVariableCodesForInstance(groupeCode: string, instanceNumber: number): Set<string>;
41
79
  getGroupState(groupeCode: string): GroupNodeState | undefined;
42
80
  getVariableState(variableCode: string): VariableNodeState | undefined;
43
81
  getJumpedVariableCodes(groupeCode: string): Set<string>;
@@ -1 +1 @@
1
- {"version":3,"file":"form-tree.d.ts","sourceRoot":"","sources":["../../src/lib/form-tree.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,OAAO,EACL,kBAAkB,EAClB,gBAAgB,EAChB,cAAc,EACd,aAAa,EACd,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EACL,SAAS,EACT,iBAAiB,EACjB,cAAc,EACd,SAAS,EACT,SAAS,EACT,eAAe,EAEhB,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AAErD,qBAAa,QAAS,YAAW,SAAS;IACxC,OAAO,CAAC,UAAU,CAA0C;IAC5D,OAAO,CAAC,aAAa,CAA6C;IAClE,OAAO,CAAC,gBAAgB,CAA4B;IACpD,OAAO,CAAC,UAAU,CAAmB;IACrC,OAAO,CAAC,UAAU,CAAmB;IACrC,OAAO,CAAC,eAAe,CAAkB;IACzC,OAAO,CAAC,SAAS,CAAiC;IAClD,OAAO,CAAC,KAAK,CAAU;IAEhB,WAAW,CAAC,EAAE,CAAC,KAAK,EAAE,SAAS,KAAK,IAAI,CAAC;gBAG9C,SAAS,GAAE,MAAM,CAAC,MAAM,EAAE,cAAc,CAAM,EAC9C,OAAO,GAAE,eAAoB;IAU/B,OAAO,CAAC,GAAG;IAQX,mBAAmB,CAAC,OAAO,EAAE,gBAAgB,EAAE,GAAG,IAAI;IAmDtD,eAAe,CAAC,SAAS,EAAE,MAAM,CAAC,MAAM,EAAE,cAAc,CAAC,GAAG,IAAI;IAchE,WAAW,IAAI,IAAI;IA+BnB,OAAO,CAAC,uBAAuB;IAkC/B,OAAO,CAAC,YAAY;IAIpB;;;OAGG;IACH,OAAO,CAAC,mBAAmB;IAiB3B,OAAO,CAAC,oBAAoB;IA6C5B,OAAO,CAAC,YAAY;IA+DpB,OAAO,CAAC,eAAe;IAsBvB,OAAO,CAAC,sBAAsB;IAY9B,mBAAmB,CAAC,UAAU,EAAE,MAAM,GAAG,kBAAkB,EAAE;IAS7D,aAAa,CAAC,UAAU,EAAE,MAAM,GAAG,cAAc,GAAG,SAAS;IAI7D,gBAAgB,CAAC,YAAY,EAAE,MAAM,GAAG,iBAAiB,GAAG,SAAS;IAIrE,sBAAsB,CAAC,UAAU,EAAE,MAAM,GAAG,GAAG,CAAC,MAAM,CAAC;IAYvD,cAAc,IAAI,SAAS,EAAE;IAI7B,aAAa,IAAI,SAAS,EAAE;IAM5B,aAAa,CAAC,UAAU,EAAE,MAAM,GAAG;QAAE,OAAO,EAAE,OAAO,CAAC;QAAC,MAAM,EAAE,MAAM,EAAE,CAAA;KAAE;IA+BzE,OAAO,CAAC,YAAY;IAOpB,yBAAyB,IAAI,MAAM,EAAE;IAcrC;;;OAGG;IACH,kBAAkB,IAAI,eAAe;IAMrC;;OAEG;IACH,gBAAgB,IAAI;QAClB,MAAM,EAAE,KAAK,CAAC;YAAE,IAAI,EAAE,MAAM,CAAC;YAAC,SAAS,EAAE,OAAO,CAAC;YAAC,aAAa,EAAE,MAAM,CAAA;SAAE,CAAC,CAAC;QAC3E,SAAS,EAAE,KAAK,CAAC;YAAE,IAAI,EAAE,MAAM,CAAC;YAAC,SAAS,EAAE,OAAO,CAAC;YAAC,YAAY,EAAE,OAAO,CAAC;YAAC,KAAK,EAAE,aAAa,CAAA;SAAE,CAAC,CAAC;QACpG,WAAW,EAAE,SAAS,EAAE,CAAC;QACzB,MAAM,EAAE,SAAS,EAAE,CAAC;KACrB;CAiBF"}
1
+ {"version":3,"file":"form-tree.d.ts","sourceRoot":"","sources":["../../src/lib/form-tree.ts"],"names":[],"mappings":"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"}
@@ -16,6 +16,12 @@ export class FormTree {
16
16
  this.orderedVariables = [];
17
17
  this.jumpRanges = [];
18
18
  this.jumpErrors = [];
19
+ // Cache pour les états par instance dans les groupes multiples
20
+ // Clé: "groupeCode_instanceNumber", Valeur: Map<variableCode, VariableNodeState>
21
+ this.instanceStates = new Map();
22
+ // Cache pour les jumps par instance
23
+ // Clé: "groupeCode_instanceNumber", Valeur: JumpRange[]
24
+ this.instanceJumpRanges = new Map();
19
25
  this.responses = responses;
20
26
  this.conditionEngine = new ConditionEngine(responses);
21
27
  this.onJumpError = options.onJumpError;
@@ -76,6 +82,9 @@ export class FormTree {
76
82
  for (const [code, state] of this.variableNodes) {
77
83
  state.currentValue = responses[code]?.valeur ?? null;
78
84
  }
85
+ // Invalider le cache des instances (sera recalculé à la demande)
86
+ this.instanceStates.clear();
87
+ this.instanceJumpRanges.clear();
79
88
  // Réévaluer toutes les conditions
80
89
  this.evaluateAll();
81
90
  }
@@ -275,6 +284,220 @@ export class FormTree {
275
284
  .filter(state => state.isVisible)
276
285
  .map(state => state.variable);
277
286
  }
287
+ /**
288
+ * Retourne les variables visibles pour une instance spécifique d'un groupe multiple
289
+ * Évalue les conditions et jumps dans le contexte de l'instance
290
+ * @param groupeCode Code du groupe
291
+ * @param instanceNumber Numéro de l'instance (1, 2, 3, ...)
292
+ */
293
+ getVisibleVariablesForInstance(groupeCode, instanceNumber) {
294
+ const groupNode = this.groupNodes.get(groupeCode);
295
+ if (!groupNode || !groupNode.isVisible)
296
+ return [];
297
+ // Pour les groupes non-multiples, utiliser la méthode standard
298
+ if (!groupNode.groupe.estMultiple) {
299
+ return this.getVisibleVariables(groupeCode);
300
+ }
301
+ // Calculer ou récupérer du cache les états pour cette instance
302
+ const instanceKey = `${groupeCode}_${instanceNumber}`;
303
+ let instanceStateMap = this.instanceStates.get(instanceKey);
304
+ if (!instanceStateMap) {
305
+ // Calculer les états pour cette instance
306
+ instanceStateMap = this.evaluateInstanceStates(groupNode, instanceNumber);
307
+ this.instanceStates.set(instanceKey, instanceStateMap);
308
+ }
309
+ // Retourner les variables visibles pour cette instance
310
+ return groupNode.variables
311
+ .filter(varState => {
312
+ const instanceState = instanceStateMap.get(varState.variable.code);
313
+ return instanceState ? instanceState.isVisible : varState.isVisible;
314
+ })
315
+ .map(state => state.variable);
316
+ }
317
+ /**
318
+ * Évalue les états de visibilité pour une instance spécifique d'un groupe multiple
319
+ * Prend en compte les jumps avec interpolation de l'index d'instance
320
+ */
321
+ evaluateInstanceStates(groupNode, instanceNumber) {
322
+ const instanceStateMap = new Map();
323
+ const instanceJumps = [];
324
+ const groupeCode = groupNode.groupe.code;
325
+ this.log(`Evaluating instance ${instanceNumber} for group ${groupeCode}`);
326
+ // Créer une copie des états pour cette instance
327
+ for (const varState of groupNode.variables) {
328
+ const instanceState = {
329
+ variable: varState.variable,
330
+ isVisible: varState.variable.estVisible,
331
+ isJumpedOver: false,
332
+ isConditionMet: true,
333
+ isValid: true,
334
+ skipValidation: false,
335
+ currentValue: this.getInstanceValue(varState.variable.code, instanceNumber),
336
+ shouldClearOnSave: false
337
+ };
338
+ instanceStateMap.set(varState.variable.code, instanceState);
339
+ }
340
+ // Évaluer les conditions et jumps pour cette instance
341
+ for (const varState of groupNode.variables) {
342
+ const condition = varState.variable.conditionsAffichage;
343
+ const instanceState = instanceStateMap.get(varState.variable.code);
344
+ if (!condition) {
345
+ instanceState.isConditionMet = true;
346
+ continue;
347
+ }
348
+ // Détecter et traiter les jumps avec le contexte de l'instance
349
+ if (this.containsJump(condition)) {
350
+ const jumps = this.processJumpConditionForInstance(instanceState, groupeCode, condition, instanceNumber, instanceStateMap);
351
+ instanceJumps.push(...jumps);
352
+ // Évaluer la partie non-jump de la condition avec le contexte de l'instance
353
+ instanceState.isConditionMet = this.evaluateNonJumpPartForInstance(condition, instanceNumber);
354
+ }
355
+ else {
356
+ // Évaluer la condition avec le contexte de l'instance
357
+ instanceState.isConditionMet = this.conditionEngine.evaluate(condition, instanceNumber);
358
+ }
359
+ }
360
+ // Appliquer les jumps pour cette instance
361
+ this.applyInstanceJumpRanges(instanceJumps, instanceStateMap);
362
+ // Calculer la visibilité finale pour cette instance
363
+ for (const state of instanceStateMap.values()) {
364
+ state.isVisible =
365
+ state.variable.estVisible &&
366
+ state.isConditionMet &&
367
+ !state.isJumpedOver;
368
+ }
369
+ // Stocker les jumps de cette instance pour référence
370
+ const instanceKey = `${groupeCode}_${instanceNumber}`;
371
+ this.instanceJumpRanges.set(instanceKey, instanceJumps);
372
+ return instanceStateMap;
373
+ }
374
+ /**
375
+ * Récupère la valeur d'une variable pour une instance spécifique
376
+ */
377
+ getInstanceValue(variableCode, instanceNumber) {
378
+ // Essayer d'abord avec le suffixe d'instance
379
+ const instanceKey = `${variableCode}_${instanceNumber}`;
380
+ const instanceResponse = this.responses[instanceKey];
381
+ if (instanceResponse) {
382
+ return instanceResponse.valeur;
383
+ }
384
+ // Chercher par variableCode et numeroMembre
385
+ const responseByMembre = Object.values(this.responses).find(r => r.variableCode === variableCode && r.numeroMembre === instanceNumber);
386
+ if (responseByMembre) {
387
+ return responseByMembre.valeur;
388
+ }
389
+ return null;
390
+ }
391
+ /**
392
+ * Traite les conditions de jump pour une instance spécifique
393
+ */
394
+ processJumpConditionForInstance(sourceState, groupeCode, condition, instanceNumber, instanceStateMap) {
395
+ const jumps = [];
396
+ this.log(`Processing jump condition for ${sourceState.variable.code} (instance ${instanceNumber}):`, condition);
397
+ // Parser tous les jumps dans la condition
398
+ const jumpPattern = /jump\s*\(\s*(.+?)\s*,\s*\$\{([A-Z_][A-Z0-9_]*)\}\s*\)/g;
399
+ let match;
400
+ while ((match = jumpPattern.exec(condition)) !== null) {
401
+ const innerCondition = match[1].trim();
402
+ const targetCode = match[2];
403
+ this.log(`Found jump: condition="${innerCondition}", target="${targetCode}" (instance ${instanceNumber})`);
404
+ // Valider que la cible existe dans le groupe
405
+ const targetState = instanceStateMap.get(targetCode);
406
+ if (!targetState) {
407
+ this.log(`Target "${targetCode}" not found in instance ${instanceNumber}`);
408
+ continue;
409
+ }
410
+ // Valider que c'est un jump vers l'avant
411
+ if (targetState.variable.ordre <= sourceState.variable.ordre) {
412
+ this.log(`Backward jump not allowed: ${sourceState.variable.code} -> ${targetCode}`);
413
+ continue;
414
+ }
415
+ // Évaluer la condition avec le contexte de l'instance
416
+ let shouldActivate = false;
417
+ try {
418
+ shouldActivate = this.conditionEngine.evaluate(innerCondition, instanceNumber);
419
+ this.log(`Jump condition evaluated to ${shouldActivate} for instance ${instanceNumber}`);
420
+ }
421
+ catch (e) {
422
+ this.log(`Error evaluating jump condition for instance ${instanceNumber}:`, e);
423
+ }
424
+ const jumpRange = {
425
+ sourceCode: sourceState.variable.code,
426
+ sourceOrdre: sourceState.variable.ordre,
427
+ targetCode: targetCode,
428
+ targetOrdre: targetState.variable.ordre,
429
+ groupeCode,
430
+ condition: innerCondition,
431
+ isActive: shouldActivate,
432
+ instanceNumber: instanceNumber
433
+ };
434
+ jumps.push(jumpRange);
435
+ this.log(`Jump range created for instance ${instanceNumber}:`, jumpRange);
436
+ }
437
+ return jumps;
438
+ }
439
+ /**
440
+ * Évalue la partie non-jump d'une condition pour une instance spécifique
441
+ */
442
+ evaluateNonJumpPartForInstance(condition, instanceNumber) {
443
+ // Retirer les appels jump() de la condition
444
+ const withoutJumps = condition
445
+ .replace(/jump\s*\([^)]*\)/g, 'true')
446
+ .replace(/\|\|\s*true/g, '')
447
+ .replace(/true\s*\|\|/g, '')
448
+ .replace(/&&\s*true/g, '')
449
+ .replace(/true\s*&&/g, '')
450
+ .trim();
451
+ if (!withoutJumps || withoutJumps === 'true') {
452
+ return true;
453
+ }
454
+ return this.conditionEngine.evaluate(withoutJumps, instanceNumber);
455
+ }
456
+ /**
457
+ * Applique les jumps pour une instance spécifique
458
+ */
459
+ applyInstanceJumpRanges(jumps, instanceStateMap) {
460
+ for (const jump of jumps) {
461
+ if (!jump.isActive)
462
+ continue;
463
+ this.log(`Applying jump for instance ${jump.instanceNumber}: ${jump.sourceCode} -> ${jump.targetCode}`);
464
+ // Marquer les variables entre source et cible comme "jumped over"
465
+ for (const [code, state] of instanceStateMap) {
466
+ const ordre = state.variable.ordre;
467
+ // Variables strictement entre source et cible (exclusif aux deux bornes)
468
+ if (ordre > jump.sourceOrdre && ordre < jump.targetOrdre) {
469
+ state.isJumpedOver = true;
470
+ state.skipValidation = true;
471
+ state.shouldClearOnSave = true;
472
+ this.log(`Variable ${code} marked as jumped over for instance ${jump.instanceNumber}`);
473
+ }
474
+ }
475
+ }
476
+ }
477
+ /**
478
+ * Retourne les jumps actifs pour une instance spécifique
479
+ */
480
+ getActiveJumpsForInstance(groupeCode, instanceNumber) {
481
+ const instanceKey = `${groupeCode}_${instanceNumber}`;
482
+ const jumps = this.instanceJumpRanges.get(instanceKey);
483
+ return jumps ? jumps.filter(j => j.isActive) : [];
484
+ }
485
+ /**
486
+ * Retourne les codes des variables sautées pour une instance spécifique
487
+ */
488
+ getJumpedVariableCodesForInstance(groupeCode, instanceNumber) {
489
+ const codes = new Set();
490
+ const instanceKey = `${groupeCode}_${instanceNumber}`;
491
+ const instanceStateMap = this.instanceStates.get(instanceKey);
492
+ if (instanceStateMap) {
493
+ for (const [code, state] of instanceStateMap) {
494
+ if (state.isJumpedOver) {
495
+ codes.add(code);
496
+ }
497
+ }
498
+ }
499
+ return codes;
500
+ }
278
501
  getGroupState(groupeCode) {
279
502
  return this.groupNodes.get(groupeCode);
280
503
  }
@@ -62,6 +62,8 @@ export interface JumpRange {
62
62
  condition: string;
63
63
  /** Le jump est actuellement actif */
64
64
  isActive: boolean;
65
+ /** Numéro d'instance pour les groupes multiples (undefined = groupe simple) */
66
+ instanceNumber?: number;
65
67
  }
66
68
  /**
67
69
  * Erreur de jump pour notification
@@ -99,6 +101,13 @@ export interface IFormTree {
99
101
  * @param groupeCode Code du groupe
100
102
  */
101
103
  getVisibleVariables(groupeCode: string): VariableFormulaire[];
104
+ /**
105
+ * Retourne les variables visibles d'un groupe pour une instance spécifique
106
+ * Évalue les conditions et jumps dans le contexte de l'instance
107
+ * @param groupeCode Code du groupe
108
+ * @param instanceNumber Numéro de l'instance (1, 2, 3, ...)
109
+ */
110
+ getVisibleVariablesForInstance(groupeCode: string, instanceNumber: number): VariableFormulaire[];
102
111
  /**
103
112
  * Retourne l'état d'un groupe
104
113
  * @param groupeCode Code du groupe
@@ -1 +1 @@
1
- {"version":3,"file":"form-tree.d.ts","sourceRoot":"","sources":["../../src/types/form-tree.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,kBAAkB,EAAE,gBAAgB,EAAE,cAAc,EAAE,aAAa,EAAE,MAAM,WAAW,CAAC;AAEhG;;GAEG;AACH,MAAM,WAAW,iBAAiB;IAChC,4CAA4C;IAC5C,QAAQ,EAAE,kBAAkB,CAAC;IAG7B,+EAA+E;IAC/E,SAAS,EAAE,OAAO,CAAC;IACnB,+BAA+B;IAC/B,YAAY,EAAE,OAAO,CAAC;IACtB,uCAAuC;IACvC,cAAc,EAAE,OAAO,CAAC;IAGxB,0BAA0B;IAC1B,OAAO,EAAE,OAAO,CAAC;IACjB,mCAAmC;IACnC,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,uCAAuC;IACvC,cAAc,EAAE,OAAO,CAAC;IAGxB,qCAAqC;IACrC,YAAY,EAAE,aAAa,CAAC;IAC5B,uCAAuC;IACvC,iBAAiB,EAAE,OAAO,CAAC;CAC5B;AAED;;GAEG;AACH,MAAM,WAAW,cAAc;IAC7B,wCAAwC;IACxC,MAAM,EAAE,gBAAgB,CAAC;IACzB,uCAAuC;IACvC,SAAS,EAAE,iBAAiB,EAAE,CAAC;IAG/B,4BAA4B;IAC5B,SAAS,EAAE,OAAO,CAAC;IACnB,sDAAsD;IACtD,UAAU,EAAE,OAAO,CAAC;IACpB,sCAAsC;IACtC,gBAAgB,EAAE,MAAM,EAAE,CAAC;IAG3B,uDAAuD;IACvD,UAAU,EAAE,GAAG,CAAC,MAAM,EAAE,iBAAiB,EAAE,CAAC,CAAC;CAC9C;AAED;;;GAGG;AACH,MAAM,WAAW,SAAS;IACxB,yCAAyC;IACzC,UAAU,EAAE,MAAM,CAAC;IACnB,kCAAkC;IAClC,WAAW,EAAE,MAAM,CAAC;IACpB,wCAAwC;IACxC,UAAU,EAAE,MAAM,CAAC;IACnB,iCAAiC;IACjC,WAAW,EAAE,MAAM,CAAC;IACpB,uCAAuC;IACvC,UAAU,EAAE,MAAM,CAAC;IACnB,qCAAqC;IACrC,SAAS,EAAE,MAAM,CAAC;IAClB,qCAAqC;IACrC,QAAQ,EAAE,OAAO,CAAC;CACnB;AAED;;GAEG;AACH,MAAM,WAAW,SAAS;IACxB,oBAAoB;IACpB,IAAI,EAAE,eAAe,GAAG,gBAAgB,GAAG,eAAe,GAAG,kBAAkB,CAAC;IAChF,iCAAiC;IACjC,cAAc,EAAE,MAAM,CAAC;IACvB,gCAAgC;IAChC,cAAc,EAAE,MAAM,CAAC;IACvB,kCAAkC;IAClC,OAAO,EAAE,MAAM,CAAC;CACjB;AAED;;GAEG;AACH,MAAM,WAAW,SAAS;IAExB;;;OAGG;IACH,mBAAmB,CAAC,OAAO,EAAE,gBAAgB,EAAE,GAAG,IAAI,CAAC;IAGvD;;;OAGG;IACH,eAAe,CAAC,SAAS,EAAE,MAAM,CAAC,MAAM,EAAE,cAAc,CAAC,GAAG,IAAI,CAAC;IAEjE;;OAEG;IACH,WAAW,IAAI,IAAI,CAAC;IAGpB;;;OAGG;IACH,mBAAmB,CAAC,UAAU,EAAE,MAAM,GAAG,kBAAkB,EAAE,CAAC;IAE9D;;;OAGG;IACH,aAAa,CAAC,UAAU,EAAE,MAAM,GAAG,cAAc,GAAG,SAAS,CAAC;IAE9D;;;OAGG;IACH,gBAAgB,CAAC,YAAY,EAAE,MAAM,GAAG,iBAAiB,GAAG,SAAS,CAAC;IAGtE;;;OAGG;IACH,sBAAsB,CAAC,UAAU,EAAE,MAAM,GAAG,GAAG,CAAC,MAAM,CAAC,CAAC;IAExD;;OAEG;IACH,cAAc,IAAI,SAAS,EAAE,CAAC;IAE9B;;OAEG;IACH,aAAa,IAAI,SAAS,EAAE,CAAC;IAG7B;;;OAGG;IACH,aAAa,CAAC,UAAU,EAAE,MAAM,GAAG;QAAE,OAAO,EAAE,OAAO,CAAC;QAAC,MAAM,EAAE,MAAM,EAAE,CAAA;KAAE,CAAC;IAE1E;;OAEG;IACH,yBAAyB,IAAI,MAAM,EAAE,CAAC;IAGtC,8CAA8C;IAC9C,WAAW,CAAC,EAAE,CAAC,KAAK,EAAE,SAAS,KAAK,IAAI,CAAC;CAC1C;AAED;;GAEG;AACH,MAAM,WAAW,eAAe;IAC9B,uCAAuC;IACvC,WAAW,CAAC,EAAE,CAAC,KAAK,EAAE,SAAS,KAAK,IAAI,CAAC;IACzC,kCAAkC;IAClC,KAAK,CAAC,EAAE,OAAO,CAAC;CACjB;AAED;;GAEG;AACH,MAAM,WAAW,oBAAoB;IACnC,6CAA6C;IAC7C,aAAa,EAAE,OAAO,CAAC;IACvB,mEAAmE;IACnE,UAAU,EAAE,OAAO,CAAC;IACpB,sDAAsD;IACtD,cAAc,EAAE,OAAO,CAAC;IACxB,gCAAgC;IAChC,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B,wBAAwB;IACxB,KAAK,CAAC,EAAE,SAAS,CAAC;CACnB"}
1
+ {"version":3,"file":"form-tree.d.ts","sourceRoot":"","sources":["../../src/types/form-tree.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@rsuci/shared-form-components",
3
- "version": "1.0.45",
3
+ "version": "1.0.47",
4
4
  "description": "Composants partagés de rendu de formulaires RSU v2 - Package local pour frontend Admin et Public",
5
5
  "main": "dist/index.js",
6
6
  "types": "dist/index.d.ts",