@rsuci/shared-form-components 1.0.7 → 1.0.9
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/inputs/GeographicCascadeInput.d.ts.map +1 -1
- package/dist/components/inputs/GeographicCascadeInput.js +15 -7
- package/dist/components/inputs/StringInput.d.ts +2 -0
- package/dist/components/inputs/StringInput.d.ts.map +1 -1
- package/dist/components/inputs/StringInput.js +8 -3
- package/dist/components/roster/RosterPanel.d.ts +1 -0
- package/dist/components/roster/RosterPanel.d.ts.map +1 -1
- package/dist/components/roster/RosterPanel.js +8 -3
- package/dist/types/services.d.ts +1 -0
- package/dist/types/services.d.ts.map +1 -1
- package/dist/utils/variableDependencyResolver.d.ts +1 -1
- package/dist/utils/variableDependencyResolver.d.ts.map +1 -1
- package/dist/utils/variableDependencyResolver.js +10 -3
- package/package.json +1 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"GeographicCascadeInput.d.ts","sourceRoot":"","sources":["../../../src/components/inputs/GeographicCascadeInput.tsx"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,
|
|
1
|
+
{"version":3,"file":"GeographicCascadeInput.d.ts","sourceRoot":"","sources":["../../../src/components/inputs/GeographicCascadeInput.tsx"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAmD,MAAM,OAAO,CAAC;AAUxE;;GAEG;AACH,UAAU,SAAS;IACjB,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;CACrB;AAWD,UAAU,2BAA2B;IACnC,QAAQ,EAAE,GAAG,CAAC;IACd,KAAK,EAAE,GAAG,CAAC;IACX,QAAQ,EAAE,CAAC,KAAK,EAAE,SAAS,GAAG,IAAI,KAAK,IAAI,CAAC;IAC5C,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;IAC9B,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,eAAO,MAAM,sBAAsB,EAAE,KAAK,CAAC,EAAE,CAAC,2BAA2B,CA2MxE,CAAC;AAEF,eAAe,sBAAsB,CAAC"}
|
|
@@ -5,7 +5,7 @@ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
|
5
5
|
* Gère la cascade via le champ variable.valeur (ex: "${G_01}")
|
|
6
6
|
* Utilise SearchableSelect pour une meilleure UX avec recherche intégrée
|
|
7
7
|
*/
|
|
8
|
-
import { useEffect, useState, useCallback } from 'react';
|
|
8
|
+
import { useEffect, useState, useCallback, useRef } from 'react';
|
|
9
9
|
import SearchableSelect from './SearchableSelect';
|
|
10
10
|
import { resolveParentValue, getApiEndpoint, getParentLabel, requiresParent } from '../../utils/variableDependencyResolver';
|
|
11
11
|
export const GeographicCascadeInput = ({ variable, value, onChange, reponses, disabled = false, required = false, className = '' }) => {
|
|
@@ -83,14 +83,22 @@ export const GeographicCascadeInput = ({ variable, value, onChange, reponses, di
|
|
|
83
83
|
fetchData();
|
|
84
84
|
}, [fetchData]);
|
|
85
85
|
// 6. Réinitialiser la valeur si le parent change
|
|
86
|
+
const previousParentRef = useRef(undefined);
|
|
86
87
|
useEffect(() => {
|
|
87
|
-
// Si un parent est requis et
|
|
88
|
-
if (needsParent
|
|
89
|
-
//
|
|
90
|
-
|
|
91
|
-
|
|
88
|
+
// Si un parent est requis et que la valeur du parent a changé
|
|
89
|
+
if (needsParent) {
|
|
90
|
+
// Premier rendu : initialiser la référence sans réinitialiser
|
|
91
|
+
if (previousParentRef.current === undefined) {
|
|
92
|
+
previousParentRef.current = parentValue;
|
|
93
|
+
return;
|
|
94
|
+
}
|
|
95
|
+
// Si le parent a changé et qu'on a une valeur sélectionnée, la réinitialiser
|
|
96
|
+
if (parentValue !== previousParentRef.current && value) {
|
|
97
|
+
onChange(null);
|
|
98
|
+
}
|
|
99
|
+
previousParentRef.current = parentValue;
|
|
92
100
|
}
|
|
93
|
-
}, [parentValue, needsParent, value]);
|
|
101
|
+
}, [parentValue, needsParent, value, onChange]);
|
|
94
102
|
// 7. Gérer le changement de valeur
|
|
95
103
|
const handleChange = (option) => {
|
|
96
104
|
if (!option) {
|
|
@@ -4,6 +4,7 @@
|
|
|
4
4
|
*/
|
|
5
5
|
import React from 'react';
|
|
6
6
|
import { VariableFormulaire, VariableValue } from '../../types/enquete';
|
|
7
|
+
import { FormRendererServices } from '../../types/services';
|
|
7
8
|
export interface StringInputProps {
|
|
8
9
|
variable: VariableFormulaire & {
|
|
9
10
|
typeCode: 'STRING';
|
|
@@ -13,6 +14,7 @@ export interface StringInputProps {
|
|
|
13
14
|
onBlur?: () => void;
|
|
14
15
|
error?: string;
|
|
15
16
|
disabled?: boolean;
|
|
17
|
+
services?: FormRendererServices;
|
|
16
18
|
}
|
|
17
19
|
declare const StringInput: React.FC<StringInputProps>;
|
|
18
20
|
export default StringInput;
|
|
@@ -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;
|
|
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;AAE5D,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;CACjC;AAED,QAAA,MAAM,WAAW,EAAE,KAAK,CAAC,EAAE,CAAC,gBAAgB,CA0C3C,CAAC;AAEF,eAAe,WAAW,CAAC"}
|
|
@@ -4,12 +4,17 @@
|
|
|
4
4
|
*/
|
|
5
5
|
'use client';
|
|
6
6
|
import { jsx as _jsx } from "react/jsx-runtime";
|
|
7
|
-
const StringInput = ({ variable, value, onChange, onBlur, error, disabled }) => {
|
|
7
|
+
const StringInput = ({ variable, value, onChange, onBlur, error, disabled, services }) => {
|
|
8
8
|
const props = variable.proprietes;
|
|
9
9
|
const stringValue = value || '';
|
|
10
|
+
const forceUppercase = services?.forceUppercase ?? false;
|
|
11
|
+
const handleChange = (newValue) => {
|
|
12
|
+
const transformed = forceUppercase ? newValue.toLocaleUpperCase('fr-FR') : newValue;
|
|
13
|
+
onChange(transformed);
|
|
14
|
+
};
|
|
10
15
|
if (props?.displayAs === 'textarea') {
|
|
11
|
-
return (_jsx("textarea", { value: stringValue, onChange: (e) =>
|
|
16
|
+
return (_jsx("textarea", { value: stringValue, onChange: (e) => handleChange(e.target.value), onBlur: onBlur, placeholder: props.placeholder, maxLength: props.maxLength, rows: props.rows || 3, disabled: disabled, className: `w-full px-3 py-2 border rounded-lg focus:ring-2 focus:ring-green-500 focus:border-transparent resize-vertical text-gray-900 ${error ? 'border-red-500' : 'border-gray-300'} ${disabled ? 'bg-gray-100 cursor-not-allowed text-gray-500' : 'bg-white'}` }));
|
|
12
17
|
}
|
|
13
|
-
return (_jsx("input", { type: "text", value: stringValue, onChange: (e) =>
|
|
18
|
+
return (_jsx("input", { type: "text", value: stringValue, onChange: (e) => handleChange(e.target.value), onBlur: onBlur, placeholder: props?.placeholder, maxLength: props?.maxLength, pattern: props?.pattern, disabled: disabled, className: `w-full px-3 py-2 border rounded-lg focus:ring-2 focus:ring-green-500 focus:border-transparent text-gray-900 ${error ? 'border-red-500' : 'border-gray-300'} ${disabled ? 'bg-gray-100 cursor-not-allowed text-gray-500' : 'bg-white'}` }));
|
|
14
19
|
};
|
|
15
20
|
export default StringInput;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"RosterPanel.d.ts","sourceRoot":"","sources":["../../../src/components/roster/RosterPanel.tsx"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAIH,OAAO,KAAK,MAAM,OAAO,CAAC;AAM1B,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,KAAK,EAAE,MAAM,CAAC;IACd,cAAc,CAAC,EAAE,OAAO,CAAC;CAC1B;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,
|
|
1
|
+
{"version":3,"file":"RosterPanel.d.ts","sourceRoot":"","sources":["../../../src/components/roster/RosterPanel.tsx"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAIH,OAAO,KAAK,MAAM,OAAO,CAAC;AAM1B,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;CAC1B;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,CAwG3C,CAAC;AAEF,eAAe,WAAW,CAAC"}
|
|
@@ -16,18 +16,23 @@ const RosterPanel = ({ option, rosterVariables, value, onChange, disabled, showC
|
|
|
16
16
|
// Créer un objet VariableFormulaire compatible avec VariableRenderer
|
|
17
17
|
// Rendre le code unique par panel pour éviter les conflits de radios/checkboxes
|
|
18
18
|
const uniqueCode = `${option.code}_${rosterVar.code}`;
|
|
19
|
+
// Récupérer les options (format: "01#Option1|02#Option2|...")
|
|
20
|
+
const optionsValue = rosterVar.valeurDefaut || rosterVar.valeur;
|
|
19
21
|
const variable = {
|
|
20
22
|
id: 0, // Pas d'ID propre pour les variables roster
|
|
21
23
|
code: uniqueCode, // Code unique par panel
|
|
22
24
|
designation: rosterVar.designation || rosterVar.code,
|
|
23
|
-
typeCode: rosterVar.typeCode,
|
|
25
|
+
typeCode: rosterVar.typeCode || 'STRING', // Fallback explicite si typeCode manquant
|
|
24
26
|
groupeCode: '',
|
|
25
27
|
ordre: rosterVar.ordre,
|
|
26
28
|
estObligatoire: rosterVar.estObligatoire || false,
|
|
27
29
|
estVisible: true,
|
|
28
30
|
estCommun: false,
|
|
29
|
-
proprietes
|
|
30
|
-
|
|
31
|
+
// Mapper les options dans proprietes.valeur pour que RadioInput/SelectInput les trouvent
|
|
32
|
+
proprietes: {
|
|
33
|
+
valeur: optionsValue
|
|
34
|
+
},
|
|
35
|
+
valeurDefaut: optionsValue,
|
|
31
36
|
validation: {
|
|
32
37
|
required: rosterVar.estObligatoire || false
|
|
33
38
|
}
|
package/dist/types/services.d.ts
CHANGED
|
@@ -7,6 +7,7 @@ export interface FormRendererServices {
|
|
|
7
7
|
fetchMenages?: () => Promise<MenageCompletDto[]>;
|
|
8
8
|
fetchEnquetes?: (filter?: any) => Promise<EnqueteCompletDto[]>;
|
|
9
9
|
fetchGeographicData?: (level: string, parentId?: number) => Promise<GeographicItem[]>;
|
|
10
|
+
forceUppercase?: boolean;
|
|
10
11
|
}
|
|
11
12
|
export interface GeographicComponents {
|
|
12
13
|
DistrictSelectorComponent?: React.ComponentType<DistrictSelectorProps>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"services.d.ts","sourceRoot":"","sources":["../../src/types/services.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,MAAM,OAAO,CAAC;AAG1B,MAAM,WAAW,oBAAoB;IAEnC,YAAY,CAAC,EAAE,MAAM,OAAO,CAAC,gBAAgB,EAAE,CAAC,CAAC;IAGjD,aAAa,CAAC,EAAE,CAAC,MAAM,CAAC,EAAE,GAAG,KAAK,OAAO,CAAC,iBAAiB,EAAE,CAAC,CAAC;IAG/D,mBAAmB,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,MAAM,KAAK,OAAO,CAAC,cAAc,EAAE,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"services.d.ts","sourceRoot":"","sources":["../../src/types/services.ts"],"names":[],"mappings":"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"}
|
|
@@ -11,7 +11,7 @@
|
|
|
11
11
|
* extractVariableCode("${G_01}") // Returns: "G_01"
|
|
12
12
|
* extractVariableCode("${DISTRICT_VAR}") // Returns: "DISTRICT_VAR"
|
|
13
13
|
* extractVariableCode(null) // Returns: null
|
|
14
|
-
* extractVariableCode("G_01") // Returns:
|
|
14
|
+
* extractVariableCode("G_01") // Returns: "G_01" (format direct supporté)
|
|
15
15
|
*/
|
|
16
16
|
export declare function extractVariableCode(valeur: string | null | undefined): string | null;
|
|
17
17
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"variableDependencyResolver.d.ts","sourceRoot":"","sources":["../../src/utils/variableDependencyResolver.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH;;;;;;;;;;GAUG;AACH,wBAAgB,mBAAmB,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,GAAG,MAAM,GAAG,IAAI,
|
|
1
|
+
{"version":3,"file":"variableDependencyResolver.d.ts","sourceRoot":"","sources":["../../src/utils/variableDependencyResolver.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH;;;;;;;;;;GAUG;AACH,wBAAgB,mBAAmB,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,GAAG,MAAM,GAAG,IAAI,CAcpF;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,kBAAkB,CAChC,QAAQ,EAAE,GAAG,EACb,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAC5B,MAAM,GAAG,IAAI,CAiCf;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,cAAc,CAC5B,YAAY,EAAE,MAAM,EACpB,QAAQ,CAAC,EAAE,MAAM,GAAG,IAAI,EACxB,kBAAkB,GAAE,MAAc,GACjC,MAAM,GAAG,IAAI,CA2Bf;AAED;;;;;;;;GAQG;AACH,wBAAgB,cAAc,CAAC,YAAY,EAAE,MAAM,GAAG,MAAM,CAa3D;AAED;;;;;;;;GAQG;AACH,wBAAgB,cAAc,CAAC,YAAY,EAAE,MAAM,GAAG,OAAO,CAW5D;AAED;;;;;;;;GAQG;AACH,wBAAgB,gBAAgB,CAAC,YAAY,EAAE,MAAM,GAAG,OAAO,CAY9D"}
|
|
@@ -11,14 +11,21 @@
|
|
|
11
11
|
* extractVariableCode("${G_01}") // Returns: "G_01"
|
|
12
12
|
* extractVariableCode("${DISTRICT_VAR}") // Returns: "DISTRICT_VAR"
|
|
13
13
|
* extractVariableCode(null) // Returns: null
|
|
14
|
-
* extractVariableCode("G_01") // Returns:
|
|
14
|
+
* extractVariableCode("G_01") // Returns: "G_01" (format direct supporté)
|
|
15
15
|
*/
|
|
16
16
|
export function extractVariableCode(valeur) {
|
|
17
17
|
if (!valeur)
|
|
18
18
|
return null;
|
|
19
|
-
// Match ${ANYTHING}
|
|
19
|
+
// Match ${ANYTHING} format (ex: "${G_01}")
|
|
20
20
|
const match = valeur.match(/\$\{([^}]+)\}/);
|
|
21
|
-
|
|
21
|
+
if (match)
|
|
22
|
+
return match[1];
|
|
23
|
+
// Support du format direct sans ${} (ex: "G_01")
|
|
24
|
+
// Si c'est un code de variable valide (commence par lettre/underscore, suivi de lettres/chiffres/underscores)
|
|
25
|
+
if (/^[A-Za-z_][A-Za-z0-9_]*$/.test(valeur)) {
|
|
26
|
+
return valeur;
|
|
27
|
+
}
|
|
28
|
+
return null;
|
|
22
29
|
}
|
|
23
30
|
/**
|
|
24
31
|
* Résout la valeur ID d'une variable parente depuis les réponses
|
package/package.json
CHANGED