@rsuci/shared-form-components 1.0.130 → 1.0.132

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,13 +1,4 @@
1
- /**
2
- * Composant unifié pour la sélection géographique en cascade
3
- * S'adapte automatiquement selon le type de variable (DISTRICT, REGION, DEPARTEMENT, etc.)
4
- * Gère la cascade via le champ variable.valeur (ex: "${G_01}")
5
- * Utilise SearchableSelect pour une meilleure UX avec recherche intégrée
6
- */
7
1
  import React from 'react';
8
- /**
9
- * Format de données retourné par les APIs backend
10
- */
11
2
  interface SelectDto {
12
3
  id: number;
13
4
  code: string;
@@ -1 +1 @@
1
- {"version":3,"file":"GeographicCascadeInput.d.ts","sourceRoot":"","sources":["../../../src/components/inputs/GeographicCascadeInput.tsx"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAA4D,MAAM,OAAO,CAAC;AAWjF;;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;IACnB,kBAAkB,CAAC,EAAE,OAAO,CAAC;CAC9B;AAED,eAAO,MAAM,sBAAsB,EAAE,KAAK,CAAC,EAAE,CAAC,2BAA2B,CAwPxE,CAAC;AAEF,eAAe,sBAAsB,CAAC"}
1
+ {"version":3,"file":"GeographicCascadeInput.d.ts","sourceRoot":"","sources":["../../../src/components/inputs/GeographicCascadeInput.tsx"],"names":[],"mappings":"AAAA,OAAO,KAA4D,MAAM,OAAO,CAAC;AAWjF,UAAU,SAAS;IACjB,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;CACrB;AAED,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;IACnB,kBAAkB,CAAC,EAAE,OAAO,CAAC;CAC9B;AAED,eAAO,MAAM,sBAAsB,EAAE,KAAK,CAAC,EAAE,CAAC,2BAA2B,CAqRxE,CAAC;AAEF,eAAe,sBAAsB,CAAC"}
@@ -1,104 +1,126 @@
1
1
  import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
- /**
3
- * Composant unifié pour la sélection géographique en cascade
4
- * S'adapte automatiquement selon le type de variable (DISTRICT, REGION, DEPARTEMENT, etc.)
5
- * Gère la cascade via le champ variable.valeur (ex: "${G_01}")
6
- * Utilise SearchableSelect pour une meilleure UX avec recherche intégrée
7
- */
8
2
  import { useEffect, useState, useCallback, useRef, useMemo } from 'react';
9
3
  import SearchableSelect from './SearchableSelect';
10
4
  import { extractVariableCode, resolveParentValue, getApiEndpoint, getParentLabel, requiresParent } from '../../utils/variableDependencyResolver';
11
5
  import { isComponentReadonly } from '../../utils/componentStateUtils';
12
6
  export const GeographicCascadeInput = ({ variable, value, onChange, reponses, disabled = false, required = false, className = '', isConsultationMode = false }) => {
7
+ const PAGE_SIZE = 50;
13
8
  const [items, setItems] = useState([]);
14
9
  const [loading, setLoading] = useState(false);
10
+ const [loadingMore, setLoadingMore] = useState(false);
15
11
  const [error, setError] = useState(null);
16
- // 1. Déterminer si ce type nécessite un parent
12
+ const [page, setPage] = useState(1);
13
+ const [hasMore, setHasMore] = useState(true);
14
+ const [searchTerm, setSearchTerm] = useState('');
17
15
  const needsParent = requiresParent(variable.typeCode);
18
- // 1b. Vérifier si un parent est CONFIGURÉ dans la variable (valeur non vide)
19
16
  const hasParentConfigured = !!extractVariableCode(variable);
20
- // Le champ a besoin d'un parent SEULEMENT si le type le requiert ET qu'un parent est configuré
21
17
  const effectiveNeedsParent = needsParent && hasParentConfigured;
22
- // 2. Résoudre la valeur du parent depuis les réponses
23
18
  const parentValue = resolveParentValue(variable, reponses);
24
- // Debug temporaire - À SUPPRIMER après validation
25
- console.log('[GeographicCascade] Debug:', {
26
- variableCode: variable.code,
27
- variableType: variable.typeCode,
28
- valueProp: value,
29
- valueType: typeof value,
30
- variableValeurDefaut: variable.valeurDefaut,
31
- needsParent,
32
- parentCode: extractVariableCode(variable),
33
- parentValue,
34
- reponsesKeys: Object.keys(reponses || {})
35
- });
36
- // 3. Pour DISTRICT, déterminer le code pays (depuis variable.valeur ou défaut 'CIV')
37
19
  const countryCode = variable.typeCode === 'DISTRICT'
38
20
  ? (variable.valeur || 'CIV')
39
21
  : undefined;
40
- // 4. Déterminer l'endpoint API à appeler
41
- const apiEndpoint = getApiEndpoint(variable.typeCode, parentValue, countryCode, hasParentConfigured);
42
- // 4. Fonction pour charger les données
43
- const fetchData = useCallback(async () => {
44
- // Si un parent est requis (configuré) mais absent, ne rien charger
22
+ const baseEndpoint = getApiEndpoint(variable.typeCode, parentValue, countryCode, hasParentConfigured);
23
+ // Construire l'URL paginée avec recherche
24
+ const buildUrl = useCallback((p, search) => {
25
+ if (!baseEndpoint)
26
+ return null;
27
+ const url = new URL(baseEndpoint, window.location.origin);
28
+ url.searchParams.set('page', String(p));
29
+ url.searchParams.set('pageSize', String(PAGE_SIZE));
30
+ if (search)
31
+ url.searchParams.set('search', search);
32
+ return url.pathname + url.search;
33
+ }, [baseEndpoint]);
34
+ // Extraire les items depuis la réponse API (multi-format)
35
+ const parseResponse = (result) => {
36
+ // Format endpoint unifié : { data: { data: [...], totalCount, ... } }
37
+ if (result.data && typeof result.data === 'object' && !Array.isArray(result.data) && Array.isArray(result.data.data)) {
38
+ return result.data.data.map((item) => ({
39
+ id: item.id,
40
+ code: item.code,
41
+ designation: item.label || item.designation,
42
+ }));
43
+ }
44
+ // Format RSU API : { status: "SUCCESS", data: [...] }
45
+ if (result.status === 'SUCCESS' && Array.isArray(result.data)) {
46
+ return result.data;
47
+ }
48
+ if (Array.isArray(result))
49
+ return result;
50
+ if (result.data && Array.isArray(result.data))
51
+ return result.data;
52
+ throw new Error('Format de réponse invalide');
53
+ };
54
+ // Chargement initial + reset quand parent ou recherche change (debounce 300ms sur recherche)
55
+ useEffect(() => {
45
56
  if (effectiveNeedsParent && !parentValue) {
46
57
  setItems([]);
47
58
  setLoading(false);
48
59
  setError(null);
60
+ setPage(1);
61
+ setHasMore(true);
49
62
  return;
50
63
  }
51
- // Si pas d'endpoint valide, ne rien charger
52
- if (!apiEndpoint) {
64
+ const url = buildUrl(1, searchTerm || undefined);
65
+ if (!url) {
53
66
  setItems([]);
54
67
  setLoading(false);
55
68
  setError(null);
56
69
  return;
57
70
  }
58
- try {
71
+ const timer = setTimeout(async () => {
59
72
  setLoading(true);
60
73
  setError(null);
61
- const response = await fetch(apiEndpoint);
62
- if (!response.ok) {
63
- throw new Error(`HTTP error! status: ${response.status}`);
64
- }
65
- const result = await response.json();
66
- // Vérifier le format de la réponse
67
- // Support pour plusieurs formats possibles
68
- if (Array.isArray(result)) {
69
- // Format 1: tableau direct [...]
70
- setItems(result);
71
- }
72
- else if (result.status === 'SUCCESS' && Array.isArray(result.data)) {
73
- // Format 2: { status: "SUCCESS", data: [...] } (format RSU API)
74
- setItems(result.data);
75
- }
76
- else if (result.success && Array.isArray(result.data)) {
77
- // Format 3: { success: true, data: [...] }
78
- setItems(result.data);
74
+ setItems([]);
75
+ setPage(1);
76
+ setHasMore(true);
77
+ try {
78
+ const response = await fetch(url);
79
+ if (!response.ok)
80
+ throw new Error(`HTTP ${response.status}`);
81
+ const result = await response.json();
82
+ const data = parseResponse(result);
83
+ setItems(data);
84
+ setHasMore(data.length === PAGE_SIZE);
79
85
  }
80
- else if (result.data && Array.isArray(result.data)) {
81
- // Format 4: { data: [...] }
82
- setItems(result.data);
86
+ catch (err) {
87
+ setError(`Erreur de chargement des ${variable.designation?.toLowerCase() || 'données'}`);
88
+ setItems([]);
83
89
  }
84
- else {
85
- console.error('Format de réponse non reconnu:', result);
86
- throw new Error('Format de réponse invalide');
90
+ finally {
91
+ setLoading(false);
87
92
  }
93
+ }, searchTerm ? 300 : 0);
94
+ return () => clearTimeout(timer);
95
+ }, [baseEndpoint, effectiveNeedsParent, parentValue, searchTerm, buildUrl]);
96
+ const handleScrollEnd = useCallback(async () => {
97
+ if (!hasMore || loadingMore || loading)
98
+ return;
99
+ const nextPage = page + 1;
100
+ const url = buildUrl(nextPage, searchTerm || undefined);
101
+ if (!url)
102
+ return;
103
+ setLoadingMore(true);
104
+ try {
105
+ const response = await fetch(url);
106
+ if (!response.ok)
107
+ throw new Error(`HTTP ${response.status}`);
108
+ const result = await response.json();
109
+ const data = parseResponse(result);
110
+ setItems(prev => [...prev, ...data]);
111
+ setPage(nextPage);
112
+ setHasMore(data.length === PAGE_SIZE);
88
113
  }
89
- catch (err) {
90
- console.error(`Error fetching ${variable.typeCode}:`, err);
91
- setError(`Erreur de chargement des ${variable.designation?.toLowerCase() || 'données'}`);
92
- setItems([]);
114
+ catch {
115
+ // Les données existantes restent affichées
93
116
  }
94
117
  finally {
95
- setLoading(false);
118
+ setLoadingMore(false);
96
119
  }
97
- }, [apiEndpoint, effectiveNeedsParent, parentValue, variable.type, variable.libelle]);
98
- // 5. Charger les données quand l'endpoint ou le parent change
99
- useEffect(() => {
100
- fetchData();
101
- }, [fetchData]);
120
+ }, [hasMore, loadingMore, loading, page, searchTerm, buildUrl]);
121
+ const handleSearchChange = useCallback((term) => {
122
+ setSearchTerm(term);
123
+ }, []);
102
124
  // 6. Réinitialiser la valeur si le parent change
103
125
  const previousParentRef = useRef(undefined);
104
126
  useEffect(() => {
@@ -145,13 +167,6 @@ export const GeographicCascadeInput = ({ variable, value, onChange, reponses, di
145
167
  }
146
168
  return `Sélectionner ${variable.designation || 'un élément'}...`;
147
169
  };
148
- // 10. Convertir les items en SelectOption pour SearchableSelect
149
- const options = items.map(item => ({
150
- id: item.id,
151
- code: item.code,
152
- designation: item.designation
153
- }));
154
- // 11. Parser la valeur si c'est une chaîne JSON (cas édition d'enquête existante)
155
170
  const parsedValue = useMemo(() => {
156
171
  if (!value)
157
172
  return null;
@@ -173,7 +188,19 @@ export const GeographicCascadeInput = ({ variable, value, onChange, reponses, di
173
188
  }
174
189
  return null;
175
190
  }, [value]);
176
- // 12. Convertir la valeur parsée en SelectOption
191
+ // Convertir les items en SelectOption, avec la valeur pré-sélectionnée en tête si absente
192
+ const options = useMemo(() => {
193
+ const mapped = items.map(item => ({
194
+ id: item.id,
195
+ code: item.code,
196
+ designation: item.designation,
197
+ }));
198
+ if (parsedValue && !items.some(item => item.id === parsedValue.id)) {
199
+ return [{ id: parsedValue.id, code: parsedValue.code, designation: parsedValue.designation }, ...mapped];
200
+ }
201
+ return mapped;
202
+ }, [items, parsedValue]);
203
+ // Convertir la valeur parsée en SelectOption
177
204
  const currentValue = parsedValue ? {
178
205
  id: parsedValue.id,
179
206
  code: parsedValue.code,
@@ -182,9 +209,6 @@ export const GeographicCascadeInput = ({ variable, value, onChange, reponses, di
182
209
  // 13. Rendu du composant
183
210
  return (_jsxs("div", { className: "w-full", children: [_jsx(SearchableSelect, { options: options, value: currentValue, onChange: handleChange, placeholder: getPlaceholder(), searchPlaceholder: "Rechercher...", disabled: isDisabled, required: required, loading: loading, error: error || undefined, className: className, noOptionsMessage: effectiveNeedsParent && !parentValue
184
211
  ? `Veuillez d'abord sélectionner ${getParentLabel(variable.typeCode)}`
185
- : `Aucun(e) ${variable.designation?.toLowerCase() || 'élément'} disponible`, formatOptionLabel: (option) => {
186
- // Afficher uniquement la désignation
187
- return option.designation;
188
- } }), effectiveNeedsParent && !parentValue && !loading && !error && (_jsxs("p", { className: "mt-1 text-sm text-gray-500 flex items-center", children: [_jsx("svg", { className: "w-4 h-4 mr-1", fill: "currentColor", viewBox: "0 0 20 20", children: _jsx("path", { fillRule: "evenodd", d: "M18 10a8 8 0 11-16 0 8 8 0 0116 0zm-7-4a1 1 0 11-2 0 1 1 0 012 0zM9 9a1 1 0 000 2v3a1 1 0 001 1h1a1 1 0 100-2v-3a1 1 0 00-1-1H9z", clipRule: "evenodd" }) }), "Veuillez d'abord s\u00E9lectionner ", getParentLabel(variable.typeCode)] })), loading && (_jsxs("p", { className: "mt-1 text-sm text-blue-600 flex items-center", children: [_jsxs("svg", { className: "animate-spin h-4 w-4 mr-1", 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" })] }), "Chargement des donn\u00E9es..."] }))] }));
212
+ : `Aucun(e) ${variable.designation?.toLowerCase() || 'élément'} disponible`, formatOptionLabel: (option) => option.designation, onSearchChange: handleSearchChange, onScrollEnd: handleScrollEnd, loadingMore: loadingMore }), effectiveNeedsParent && !parentValue && !loading && !error && (_jsxs("p", { className: "mt-1 text-sm text-gray-500 flex items-center", children: [_jsx("svg", { className: "w-4 h-4 mr-1", fill: "currentColor", viewBox: "0 0 20 20", children: _jsx("path", { fillRule: "evenodd", d: "M18 10a8 8 0 11-16 0 8 8 0 0116 0zm-7-4a1 1 0 11-2 0 1 1 0 012 0zM9 9a1 1 0 000 2v3a1 1 0 001 1h1a1 1 0 100-2v-3a1 1 0 00-1-1H9z", clipRule: "evenodd" }) }), "Veuillez d'abord s\u00E9lectionner ", getParentLabel(variable.typeCode)] })), loading && (_jsxs("p", { className: "mt-1 text-sm text-blue-600 flex items-center", children: [_jsxs("svg", { className: "animate-spin h-4 w-4 mr-1", 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" })] }), "Chargement des donn\u00E9es..."] }))] }));
189
213
  };
190
214
  export default GeographicCascadeInput;
@@ -1 +1 @@
1
- {"version":3,"file":"SearchableSelect.d.ts","sourceRoot":"","sources":["../../../src/components/inputs/SearchableSelect.tsx"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAsC,MAAM,OAAO,CAAC;AAE3D,MAAM,WAAW,YAAY;IAC3B,EAAE,EAAE,MAAM,GAAG,MAAM,CAAC;IACpB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,WAAW,EAAE,MAAM,CAAC;IACpB,CAAC,GAAG,EAAE,MAAM,GAAG,GAAG,CAAC;CACpB;AAED,UAAU,qBAAqB;IAC7B,OAAO,EAAE,YAAY,EAAE,CAAC;IACxB,KAAK,CAAC,EAAE,YAAY,GAAG,IAAI,CAAC;IAC5B,QAAQ,EAAE,CAAC,MAAM,EAAE,YAAY,GAAG,IAAI,KAAK,IAAI,CAAC;IAChD,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,iBAAiB,CAAC,EAAE,CAAC,MAAM,EAAE,YAAY,KAAK,MAAM,CAAC;IACrD,cAAc,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;IACxC,WAAW,CAAC,EAAE,MAAM,IAAI,CAAC;IACzB,WAAW,CAAC,EAAE,OAAO,CAAC;CACvB;AAED,eAAO,MAAM,gBAAgB,EAAE,KAAK,CAAC,EAAE,CAAC,qBAAqB,CA2N5D,CAAC;AAEF,eAAe,gBAAgB,CAAC"}
1
+ {"version":3,"file":"SearchableSelect.d.ts","sourceRoot":"","sources":["../../../src/components/inputs/SearchableSelect.tsx"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAsC,MAAM,OAAO,CAAC;AAE3D,MAAM,WAAW,YAAY;IAC3B,EAAE,EAAE,MAAM,GAAG,MAAM,CAAC;IACpB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,WAAW,EAAE,MAAM,CAAC;IACpB,CAAC,GAAG,EAAE,MAAM,GAAG,GAAG,CAAC;CACpB;AAED,UAAU,qBAAqB;IAC7B,OAAO,EAAE,YAAY,EAAE,CAAC;IACxB,KAAK,CAAC,EAAE,YAAY,GAAG,IAAI,CAAC;IAC5B,QAAQ,EAAE,CAAC,MAAM,EAAE,YAAY,GAAG,IAAI,KAAK,IAAI,CAAC;IAChD,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,iBAAiB,CAAC,EAAE,CAAC,MAAM,EAAE,YAAY,KAAK,MAAM,CAAC;IACrD,cAAc,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;IACxC,WAAW,CAAC,EAAE,MAAM,IAAI,CAAC;IACzB,WAAW,CAAC,EAAE,OAAO,CAAC;CACvB;AAED,eAAO,MAAM,gBAAgB,EAAE,KAAK,CAAC,EAAE,CAAC,qBAAqB,CA8N5D,CAAC;AAEF,eAAe,gBAAgB,CAAC"}
@@ -31,13 +31,16 @@ export const SearchableSelect = ({ options, value, onChange, placeholder = 'Sél
31
31
  searchInputRef.current.focus();
32
32
  }
33
33
  }, [isOpen]);
34
- // Filtrer les options selon le terme de recherche
35
- const filteredOptions = options.filter(option => {
36
- const label = formatOptionLabel ? formatOptionLabel(option) : option.designation;
37
- const searchLower = searchTerm.toLowerCase();
38
- return (label.toLowerCase().includes(searchLower) ||
39
- (option.code && option.code.toLowerCase().includes(searchLower)));
40
- });
34
+ // Si onSearchChange est fourni, la recherche est côté serveur : pas de filtrage local
35
+ const isServerSearch = !!onSearchChange;
36
+ const filteredOptions = isServerSearch
37
+ ? options
38
+ : options.filter(option => {
39
+ const label = formatOptionLabel ? formatOptionLabel(option) : option.designation;
40
+ const searchLower = searchTerm.toLowerCase();
41
+ return (label.toLowerCase().includes(searchLower) ||
42
+ (option.code && option.code.toLowerCase().includes(searchLower)));
43
+ });
41
44
  // Gérer la sélection d'une option
42
45
  const handleSelect = (option, event) => {
43
46
  event.preventDefault();
@@ -1,5 +1,5 @@
1
1
  import React from 'react';
2
- import { StructureDto } from '../../types/services';
2
+ import { StructureDto, FetchFilter } from '../../types/services';
3
3
  export interface RSUInputProps {
4
4
  variable: {
5
5
  typeCode: string;
@@ -19,7 +19,7 @@ export interface RSUInputProps {
19
19
  numeroMembre?: number;
20
20
  valeurMin?: number;
21
21
  services?: {
22
- fetchStructures?: () => Promise<StructureDto[]>;
22
+ fetchStructures?: (filter?: FetchFilter) => Promise<StructureDto[]>;
23
23
  };
24
24
  }
25
25
  declare const RSUInput: React.FC<RSUInputProps>;
@@ -1 +1 @@
1
- {"version":3,"file":"RSUInput.d.ts","sourceRoot":"","sources":["../../../src/components/selectors/RSUInput.tsx"],"names":[],"mappings":"AAEA,OAAO,KAA8B,MAAM,OAAO,CAAC;AAEnD,OAAO,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AAEpD,MAAM,WAAW,aAAa;IAC5B,QAAQ,EAAE;QACR,QAAQ,EAAE,MAAM,CAAC;QACjB,IAAI,EAAE,MAAM,CAAC;QACb,WAAW,EAAE,MAAM,CAAC;QACpB,cAAc,CAAC,EAAE,OAAO,CAAC;QACzB,UAAU,CAAC,EAAE;YACX,OAAO,CAAC,EAAE,MAAM,CAAC;YACjB,QAAQ,CAAC,EAAE,MAAM,CAAC;SACnB,CAAC;KACH,CAAC;IACF,KAAK,EAAE,GAAG,CAAC;IACX,QAAQ,EAAE,CAAC,KAAK,EAAE,GAAG,KAAK,IAAI,CAAC;IAC/B,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,QAAQ,CAAC,EAAE;QACT,eAAe,CAAC,EAAE,MAAM,OAAO,CAAC,YAAY,EAAE,CAAC,CAAC;KACjD,CAAC;CACH;AAED,QAAA,MAAM,QAAQ,EAAE,KAAK,CAAC,EAAE,CAAC,aAAa,CA0ErC,CAAC;AAEF,OAAO,EAAE,QAAQ,EAAE,CAAC;AACpB,eAAe,QAAQ,CAAC"}
1
+ {"version":3,"file":"RSUInput.d.ts","sourceRoot":"","sources":["../../../src/components/selectors/RSUInput.tsx"],"names":[],"mappings":"AAEA,OAAO,KAA2C,MAAM,OAAO,CAAC;AAEhE,OAAO,EAAE,YAAY,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AAEjE,MAAM,WAAW,aAAa;IAC5B,QAAQ,EAAE;QACR,QAAQ,EAAE,MAAM,CAAC;QACjB,IAAI,EAAE,MAAM,CAAC;QACb,WAAW,EAAE,MAAM,CAAC;QACpB,cAAc,CAAC,EAAE,OAAO,CAAC;QACzB,UAAU,CAAC,EAAE;YACX,OAAO,CAAC,EAAE,MAAM,CAAC;YACjB,QAAQ,CAAC,EAAE,MAAM,CAAC;SACnB,CAAC;KACH,CAAC;IACF,KAAK,EAAE,GAAG,CAAC;IACX,QAAQ,EAAE,CAAC,KAAK,EAAE,GAAG,KAAK,IAAI,CAAC;IAC/B,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,QAAQ,CAAC,EAAE;QACT,eAAe,CAAC,EAAE,CAAC,MAAM,CAAC,EAAE,WAAW,KAAK,OAAO,CAAC,YAAY,EAAE,CAAC,CAAC;KACrE,CAAC;CACH;AAID,QAAA,MAAM,QAAQ,EAAE,KAAK,CAAC,EAAE,CAAC,aAAa,CA6FrC,CAAC;AAEF,OAAO,EAAE,QAAQ,EAAE,CAAC;AACpB,eAAe,QAAQ,CAAC"}
@@ -1,53 +1,71 @@
1
1
  'use client';
2
2
  import { jsx as _jsx } from "react/jsx-runtime";
3
- import { useState, useEffect } from 'react';
3
+ import { useState, useEffect, useCallback } from 'react';
4
4
  import SearchableSelect from '../inputs/SearchableSelect';
5
+ const PAGE_SIZE = 50;
5
6
  const RSUInput = ({ variable, value, onChange, error, disabled, services }) => {
6
7
  const [structures, setStructures] = useState([]);
8
+ const [page, setPage] = useState(1);
9
+ const [hasMore, setHasMore] = useState(true);
7
10
  const [loading, setLoading] = useState(false);
11
+ const [loadingMore, setLoadingMore] = useState(false);
8
12
  const [loadError, setLoadError] = useState(null);
9
- // Charger les structures au montage du composant
13
+ const [searchTerm, setSearchTerm] = useState('');
10
14
  useEffect(() => {
11
- const loadStructures = async () => {
12
- if (!services?.fetchStructures) {
13
- setLoadError('Service de chargement des structures non disponible');
14
- return;
15
- }
15
+ if (!services?.fetchStructures) {
16
+ setLoadError('Service de chargement des structures non disponible');
17
+ return;
18
+ }
19
+ const timer = setTimeout(async () => {
16
20
  setLoading(true);
17
21
  setLoadError(null);
22
+ setStructures([]);
23
+ setPage(1);
24
+ setHasMore(true);
18
25
  try {
19
- const data = await services.fetchStructures();
26
+ const data = await services.fetchStructures({ searchText: searchTerm || undefined, page: 1, pageSize: PAGE_SIZE });
20
27
  setStructures(data);
28
+ setHasMore(data.length === PAGE_SIZE);
21
29
  }
22
- catch (err) {
23
- console.error('Erreur lors du chargement des structures:', err);
30
+ catch {
24
31
  setLoadError('Erreur lors du chargement des structures');
25
32
  }
26
33
  finally {
27
34
  setLoading(false);
28
35
  }
29
- };
30
- loadStructures();
31
- }, [services]);
32
- // Convertir les structures en options pour SearchableSelect
36
+ }, searchTerm ? 300 : 0);
37
+ return () => clearTimeout(timer);
38
+ }, [searchTerm, services]);
39
+ const handleScrollEnd = useCallback(async () => {
40
+ if (!hasMore || loadingMore || loading || !services?.fetchStructures)
41
+ return;
42
+ setLoadingMore(true);
43
+ const nextPage = page + 1;
44
+ try {
45
+ const data = await services.fetchStructures({ searchText: searchTerm || undefined, page: nextPage, pageSize: PAGE_SIZE });
46
+ setStructures(prev => [...prev, ...data]);
47
+ setPage(nextPage);
48
+ setHasMore(data.length === PAGE_SIZE);
49
+ }
50
+ catch {
51
+ // Les données existantes restent affichées
52
+ }
53
+ finally {
54
+ setLoadingMore(false);
55
+ }
56
+ }, [hasMore, loadingMore, loading, page, searchTerm, services]);
33
57
  const options = structures.map(structure => ({
34
58
  id: structure.id,
35
59
  code: structure.code || structure.id.toString(),
36
- designation: structure.designation || `Structure ${structure.id}`
60
+ designation: structure.designation || `Structure ${structure.id}`,
37
61
  }));
38
- // Trouver la structure sélectionnée
39
62
  const structureId = value ? parseInt(value) : null;
40
63
  const selectedOption = structureId ? options.find(opt => opt.id === structureId) : null;
41
- // Gérer le changement de sélection
42
64
  const handleChange = (option) => {
43
65
  const newStructureId = option?.id;
44
66
  onChange(newStructureId?.toString() || null);
45
67
  };
46
- // Format d'affichage: Designation uniquement
47
- const formatOptionLabel = (option) => {
48
- return option.designation;
49
- };
50
- return (_jsx(SearchableSelect, { options: options, value: selectedOption, onChange: handleChange, placeholder: "S\u00E9lectionner une structure RSU...", searchPlaceholder: "Rechercher une structure...", disabled: disabled, required: variable.estObligatoire, loading: loading, error: loadError || error, formatOptionLabel: formatOptionLabel, noOptionsMessage: loading ? "Chargement..." : "Aucune structure trouvée" }));
68
+ return (_jsx(SearchableSelect, { options: options, value: selectedOption, onChange: handleChange, placeholder: "S\u00E9lectionner une structure RSU...", searchPlaceholder: "Rechercher une structure...", disabled: disabled, required: variable.estObligatoire, loading: loading, error: loadError || error, formatOptionLabel: (option) => option.designation, noOptionsMessage: loading ? 'Chargement...' : 'Aucune structure trouvée', onSearchChange: setSearchTerm, onScrollEnd: handleScrollEnd, loadingMore: loadingMore }));
51
69
  };
52
70
  export { RSUInput };
53
71
  export default RSUInput;
package/dist/index.d.ts CHANGED
@@ -40,7 +40,7 @@ export { default as FormNavigationButtons, type FormNavigationButtonsProps } fro
40
40
  export { default as FormActions, type FormActionsProps } from './components/form-renderer/FormActions';
41
41
  export { default as FormRenderer, type FormRendererProps as UnifiedFormRendererProps } from './components/form-renderer/FormRenderer';
42
42
  export type { EnqueteReponse, VariableFormulaire, GroupeFormulaire, FormulaireComplet, EnqueteInstance, GroupeInstance, VariableValue, VariableType, ComponentStyle, ValidationError, AutoAction, NavigationState } from './types/enquete';
43
- export type { FormRendererServices, GeographicComponents, DistrictSelectorProps, RegionSelectorProps, DepartementSelectorProps, SousPrefectureSelectorProps, QuartierSelectorProps, VillageSelectorProps } from './types/services';
43
+ export type { FormRendererServices, FetchFilter, GeographicComponents, DistrictSelectorProps, RegionSelectorProps, DepartementSelectorProps, SousPrefectureSelectorProps, QuartierSelectorProps, VillageSelectorProps } from './types/services';
44
44
  export type { FormRendererProps, GroupRendererProps, VariableRendererProps, FormRendererMode, FormRendererFeatures, FormRendererLabels, FormRendererConfig, FormRendererCallbacks, FormRendererUnifiedProps, DRValidationResult } from './types/form-renderer';
45
45
  export type { VariableNodeState, GroupNodeState, JumpRange, JumpError, IFormTree, FormTreeOptions, JumpEvaluationResult } from './types/form-tree';
46
46
  export { VariableValueConverter } from './lib/utils/variableValueConverter';
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
@@ -33,7 +33,7 @@ export interface FormRendererServices {
33
33
  fetchMenages?: (filter?: FetchFilter) => Promise<MenageCompletDto[]>;
34
34
  fetchEnquetes?: (filter?: FetchFilter) => Promise<EnqueteCompletDto[]>;
35
35
  fetchEnqueteDonnees?: (enqueteId: number) => Promise<any>;
36
- fetchStructures?: () => Promise<StructureDto[]>;
36
+ fetchStructures?: (filter?: FetchFilter) => Promise<StructureDto[]>;
37
37
  fetchGeographicData?: (level: string, parentId?: number) => Promise<GeographicItem[]>;
38
38
  forceUppercase?: boolean;
39
39
  currentUser?: CurrentUserDto;
@@ -1 +1 @@
1
- {"version":3,"file":"services.d.ts","sourceRoot":"","sources":["../../src/types/services.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"services.d.ts","sourceRoot":"","sources":["../../src/types/services.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"variableDependencyResolver.d.ts","sourceRoot":"","sources":["../../src/utils/variableDependencyResolver.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH;;;;;;;;;;;;GAYG;AACH,wBAAgB,mBAAmB,CAAC,gBAAgB,EAAE,MAAM,GAAG,GAAG,GAAG,IAAI,GAAG,SAAS,GAAG,MAAM,GAAG,IAAI,CAmCpG;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,kBAAkB,CAChC,QAAQ,EAAE,GAAG,EACb,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAC5B,MAAM,GAAG,IAAI,CA+Cf;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,cAAc,CAC5B,YAAY,EAAE,MAAM,EACpB,QAAQ,CAAC,EAAE,MAAM,GAAG,IAAI,EACxB,kBAAkB,GAAE,MAAc,EAClC,mBAAmB,GAAE,OAAc,GAClC,MAAM,GAAG,IAAI,CA+Bf;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"}
1
+ {"version":3,"file":"variableDependencyResolver.d.ts","sourceRoot":"","sources":["../../src/utils/variableDependencyResolver.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH;;;;;;;;;;;;GAYG;AACH,wBAAgB,mBAAmB,CAAC,gBAAgB,EAAE,MAAM,GAAG,GAAG,GAAG,IAAI,GAAG,SAAS,GAAG,MAAM,GAAG,IAAI,CAmCpG;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,kBAAkB,CAChC,QAAQ,EAAE,GAAG,EACb,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAC5B,MAAM,GAAG,IAAI,CA+Cf;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,cAAc,CAC5B,YAAY,EAAE,MAAM,EACpB,QAAQ,CAAC,EAAE,MAAM,GAAG,IAAI,EACxB,kBAAkB,GAAE,MAAc,EAClC,mBAAmB,GAAE,OAAc,GAClC,MAAM,GAAG,IAAI,CAiBf;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"}
@@ -116,33 +116,19 @@ export function resolveParentValue(variable, reponses) {
116
116
  */
117
117
  export function getApiEndpoint(variableType, parentId, defaultCountryCode = 'CIV', hasParentConfigured = true) {
118
118
  const type = variableType?.toUpperCase();
119
- switch (type) {
120
- case 'DISTRICT':
121
- return `/api/v1/Districts/select`;
122
- case 'REGION':
123
- if (parentId)
124
- return `/api/v1/Regions/${parentId}/select`;
125
- return hasParentConfigured ? null : `/api/v1/Regions/select`;
126
- case 'DEPARTEMENT':
127
- if (parentId)
128
- return `/api/v1/Departements/${parentId}/select`;
129
- return hasParentConfigured ? null : `/api/v1/Departements/select`;
130
- case 'SOUS_PREFECTURE':
131
- case 'SOUSPREFECTURE':
132
- if (parentId)
133
- return `/api/v1/SousPrefectures/${parentId}/select`;
134
- return hasParentConfigured ? null : `/api/v1/SousPrefectures/select`;
135
- case 'QUARTIER':
136
- if (parentId)
137
- return `/api/v1/Quartiers/${parentId}/select`;
138
- return hasParentConfigured ? null : `/api/v1/Quartiers/select`;
139
- case 'VILLAGE':
140
- if (parentId)
141
- return `/api/v1/Villages/${parentId}/select`;
142
- return hasParentConfigured ? null : `/api/v1/Villages/select`;
143
- default:
144
- return null;
145
- }
119
+ // Normaliser SOUS_PREFECTURE → SOUSPREFECTURE pour le endpoint unifié
120
+ const entityType = type === 'SOUS_PREFECTURE' ? 'SOUSPREFECTURE' : type;
121
+ const validTypes = ['DISTRICT', 'REGION', 'DEPARTEMENT', 'SOUSPREFECTURE', 'QUARTIER', 'VILLAGE'];
122
+ if (!validTypes.includes(entityType))
123
+ return null;
124
+ // Si un parent est configuré mais absent, ne pas charger
125
+ if (hasParentConfigured && requiresParent(type) && !parentId)
126
+ return null;
127
+ const params = new URLSearchParams();
128
+ params.set('entityType', entityType);
129
+ if (parentId)
130
+ params.set('parentId', String(parentId));
131
+ return `/api/v1/Select?${params.toString()}`;
146
132
  }
147
133
  /**
148
134
  * Détermine le libellé du parent selon le type de variable
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@rsuci/shared-form-components",
3
- "version": "1.0.130",
3
+ "version": "1.0.132",
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",