@rsuci/shared-form-components 1.0.29 → 1.0.33
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/form-renderer/ConfirmationModal.d.ts +20 -0
- package/dist/components/form-renderer/ConfirmationModal.d.ts.map +1 -0
- package/dist/components/form-renderer/ConfirmationModal.js +79 -0
- package/dist/components/form-renderer/FormActions.d.ts +23 -0
- package/dist/components/form-renderer/FormActions.d.ts.map +1 -0
- package/dist/components/form-renderer/FormActions.js +116 -0
- package/dist/components/form-renderer/FormNavigationButtons.d.ts +23 -0
- package/dist/components/form-renderer/FormNavigationButtons.d.ts.map +1 -0
- package/dist/components/form-renderer/FormNavigationButtons.js +35 -0
- package/dist/components/form-renderer/FormProgress.d.ts +19 -0
- package/dist/components/form-renderer/FormProgress.d.ts.map +1 -0
- package/dist/components/form-renderer/FormProgress.js +26 -0
- package/dist/components/form-renderer/FormRenderer.d.ts +39 -0
- package/dist/components/form-renderer/FormRenderer.d.ts.map +1 -0
- package/dist/components/form-renderer/FormRenderer.js +113 -0
- package/dist/components/form-renderer/FormRendererContext.d.ts +109 -0
- package/dist/components/form-renderer/FormRendererContext.d.ts.map +1 -0
- package/dist/components/form-renderer/FormRendererContext.js +114 -0
- package/dist/components/form-renderer/GroupeInstanceTabs.d.ts +18 -0
- package/dist/components/form-renderer/GroupeInstanceTabs.d.ts.map +1 -0
- package/dist/components/form-renderer/GroupeInstanceTabs.js +174 -0
- package/dist/components/form-renderer/ValidationModal.d.ts +25 -0
- package/dist/components/form-renderer/ValidationModal.d.ts.map +1 -0
- package/dist/components/form-renderer/ValidationModal.js +37 -0
- package/dist/components/form-renderer/index.d.ts +19 -0
- package/dist/components/form-renderer/index.d.ts.map +1 -0
- package/dist/components/form-renderer/index.js +24 -0
- package/dist/hooks/useFormInstances.d.ts +87 -0
- package/dist/hooks/useFormInstances.d.ts.map +1 -0
- package/dist/hooks/useFormInstances.js +197 -0
- package/dist/hooks/useFormNavigation.d.ts +72 -0
- package/dist/hooks/useFormNavigation.d.ts.map +1 -0
- package/dist/hooks/useFormNavigation.js +147 -0
- package/dist/hooks/useFormRenderer.d.ts +87 -0
- package/dist/hooks/useFormRenderer.d.ts.map +1 -0
- package/dist/hooks/useFormRenderer.js +177 -0
- package/dist/hooks/useFormValidation.d.ts +50 -0
- package/dist/hooks/useFormValidation.d.ts.map +1 -0
- package/dist/hooks/useFormValidation.js +175 -0
- package/dist/index.d.ts +14 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +21 -0
- package/dist/lib/__tests__/date-functions.test.d.ts +5 -0
- package/dist/lib/__tests__/date-functions.test.d.ts.map +1 -0
- package/dist/lib/__tests__/date-functions.test.js +184 -0
- package/dist/lib/utils/groupeInstanceManager.d.ts +88 -0
- package/dist/lib/utils/groupeInstanceManager.d.ts.map +1 -0
- package/dist/lib/utils/groupeInstanceManager.js +606 -0
- package/dist/types/form-renderer.d.ts +115 -1
- package/dist/types/form-renderer.d.ts.map +1 -1
- package/package.json +5 -1
|
@@ -0,0 +1,184 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Tests unitaires pour les fonctions de date du conditionEngine
|
|
3
|
+
*/
|
|
4
|
+
import { calculateDateDiff, calculateDateAdd, parseDateString, isValidDateUnit } from '../utils/date-functions';
|
|
5
|
+
describe('date-functions', () => {
|
|
6
|
+
describe('calculateDateDiff', () => {
|
|
7
|
+
describe('différence en jours', () => {
|
|
8
|
+
it('devrait calculer la différence en jours entre deux dates', () => {
|
|
9
|
+
const date1 = new Date('2024-01-01');
|
|
10
|
+
const date2 = new Date('2024-01-31');
|
|
11
|
+
expect(calculateDateDiff(date1, date2, 'd')).toBe(30);
|
|
12
|
+
});
|
|
13
|
+
it('devrait retourner un nombre négatif si date2 < date1', () => {
|
|
14
|
+
const date1 = new Date('2024-01-31');
|
|
15
|
+
const date2 = new Date('2024-01-01');
|
|
16
|
+
expect(calculateDateDiff(date1, date2, 'd')).toBe(-30);
|
|
17
|
+
});
|
|
18
|
+
it('devrait retourner 0 pour la même date', () => {
|
|
19
|
+
const date = new Date('2024-01-15');
|
|
20
|
+
expect(calculateDateDiff(date, date, 'd')).toBe(0);
|
|
21
|
+
});
|
|
22
|
+
it('devrait calculer 365 jours pour une année non bissextile', () => {
|
|
23
|
+
const date1 = new Date('2023-01-01');
|
|
24
|
+
const date2 = new Date('2024-01-01');
|
|
25
|
+
expect(calculateDateDiff(date1, date2, 'd')).toBe(365);
|
|
26
|
+
});
|
|
27
|
+
it('devrait calculer 366 jours pour une année bissextile', () => {
|
|
28
|
+
const date1 = new Date('2024-01-01');
|
|
29
|
+
const date2 = new Date('2025-01-01');
|
|
30
|
+
expect(calculateDateDiff(date1, date2, 'd')).toBe(366);
|
|
31
|
+
});
|
|
32
|
+
});
|
|
33
|
+
describe('différence en mois', () => {
|
|
34
|
+
it('devrait calculer la différence en mois', () => {
|
|
35
|
+
const date1 = new Date('2024-01-15');
|
|
36
|
+
const date2 = new Date('2024-07-15');
|
|
37
|
+
expect(calculateDateDiff(date1, date2, 'm')).toBe(6);
|
|
38
|
+
});
|
|
39
|
+
it('devrait ajuster si le jour du mois n\'est pas atteint', () => {
|
|
40
|
+
const date1 = new Date('2024-01-31');
|
|
41
|
+
const date2 = new Date('2024-02-15');
|
|
42
|
+
expect(calculateDateDiff(date1, date2, 'm')).toBe(0);
|
|
43
|
+
});
|
|
44
|
+
it('devrait retourner 12 mois pour une année exacte', () => {
|
|
45
|
+
const date1 = new Date('2024-01-15');
|
|
46
|
+
const date2 = new Date('2025-01-15');
|
|
47
|
+
expect(calculateDateDiff(date1, date2, 'm')).toBe(12);
|
|
48
|
+
});
|
|
49
|
+
});
|
|
50
|
+
describe('différence en années', () => {
|
|
51
|
+
it('devrait calculer la différence en années avec anniversaire passé', () => {
|
|
52
|
+
const date1 = new Date('2000-06-15');
|
|
53
|
+
const date2 = new Date('2024-08-15');
|
|
54
|
+
expect(calculateDateDiff(date1, date2, 'y')).toBe(24);
|
|
55
|
+
});
|
|
56
|
+
it('devrait retourner 23 si l\'anniversaire n\'est pas encore passé', () => {
|
|
57
|
+
const date1 = new Date('2000-12-31');
|
|
58
|
+
const date2 = new Date('2024-01-01');
|
|
59
|
+
expect(calculateDateDiff(date1, date2, 'y')).toBe(23);
|
|
60
|
+
});
|
|
61
|
+
it('devrait retourner l\'âge exact le jour de l\'anniversaire', () => {
|
|
62
|
+
const date1 = new Date('2000-06-15');
|
|
63
|
+
const date2 = new Date('2024-06-15');
|
|
64
|
+
expect(calculateDateDiff(date1, date2, 'y')).toBe(24);
|
|
65
|
+
});
|
|
66
|
+
it('devrait retourner 0 pour moins d\'un an', () => {
|
|
67
|
+
const date1 = new Date('2024-01-01');
|
|
68
|
+
const date2 = new Date('2024-06-01');
|
|
69
|
+
expect(calculateDateDiff(date1, date2, 'y')).toBe(0);
|
|
70
|
+
});
|
|
71
|
+
});
|
|
72
|
+
describe('gestion des erreurs', () => {
|
|
73
|
+
it('devrait retourner null pour date1 null', () => {
|
|
74
|
+
expect(calculateDateDiff(null, new Date(), 'd')).toBe(null);
|
|
75
|
+
});
|
|
76
|
+
it('devrait retourner null pour date2 null', () => {
|
|
77
|
+
expect(calculateDateDiff(new Date(), null, 'd')).toBe(null);
|
|
78
|
+
});
|
|
79
|
+
it('devrait retourner null pour date invalide', () => {
|
|
80
|
+
expect(calculateDateDiff(new Date('invalid'), new Date(), 'd')).toBe(null);
|
|
81
|
+
});
|
|
82
|
+
it('devrait retourner null pour unité invalide', () => {
|
|
83
|
+
expect(calculateDateDiff(new Date(), new Date(), 'x')).toBe(null);
|
|
84
|
+
});
|
|
85
|
+
});
|
|
86
|
+
});
|
|
87
|
+
describe('calculateDateAdd', () => {
|
|
88
|
+
describe('ajout de jours', () => {
|
|
89
|
+
it('devrait ajouter des jours à une date', () => {
|
|
90
|
+
const date = new Date('2024-01-01');
|
|
91
|
+
const result = calculateDateAdd(date, 30, 'd');
|
|
92
|
+
expect(result?.toISOString().slice(0, 10)).toBe('2024-01-31');
|
|
93
|
+
});
|
|
94
|
+
it('devrait soustraire des jours avec une valeur négative', () => {
|
|
95
|
+
const date = new Date('2024-01-15');
|
|
96
|
+
const result = calculateDateAdd(date, -7, 'd');
|
|
97
|
+
expect(result?.toISOString().slice(0, 10)).toBe('2024-01-08');
|
|
98
|
+
});
|
|
99
|
+
it('devrait gérer le passage de mois', () => {
|
|
100
|
+
const date = new Date('2024-01-31');
|
|
101
|
+
const result = calculateDateAdd(date, 1, 'd');
|
|
102
|
+
expect(result?.toISOString().slice(0, 10)).toBe('2024-02-01');
|
|
103
|
+
});
|
|
104
|
+
});
|
|
105
|
+
describe('ajout de mois', () => {
|
|
106
|
+
it('devrait ajouter des mois à une date', () => {
|
|
107
|
+
const date = new Date('2024-01-15');
|
|
108
|
+
const result = calculateDateAdd(date, 6, 'm');
|
|
109
|
+
expect(result?.toISOString().slice(0, 10)).toBe('2024-07-15');
|
|
110
|
+
});
|
|
111
|
+
it('devrait soustraire des mois avec une valeur négative', () => {
|
|
112
|
+
const date = new Date('2024-07-15');
|
|
113
|
+
const result = calculateDateAdd(date, -6, 'm');
|
|
114
|
+
expect(result?.toISOString().slice(0, 10)).toBe('2024-01-15');
|
|
115
|
+
});
|
|
116
|
+
it('devrait gérer le passage d\'année', () => {
|
|
117
|
+
const date = new Date('2024-11-15');
|
|
118
|
+
const result = calculateDateAdd(date, 3, 'm');
|
|
119
|
+
expect(result?.toISOString().slice(0, 10)).toBe('2025-02-15');
|
|
120
|
+
});
|
|
121
|
+
});
|
|
122
|
+
describe('ajout d\'années', () => {
|
|
123
|
+
it('devrait ajouter des années à une date', () => {
|
|
124
|
+
const date = new Date('2024-01-01');
|
|
125
|
+
const result = calculateDateAdd(date, 1, 'y');
|
|
126
|
+
expect(result?.toISOString().slice(0, 10)).toBe('2025-01-01');
|
|
127
|
+
});
|
|
128
|
+
it('devrait soustraire des années avec une valeur négative', () => {
|
|
129
|
+
const date = new Date('2024-01-01');
|
|
130
|
+
const result = calculateDateAdd(date, -5, 'y');
|
|
131
|
+
expect(result?.toISOString().slice(0, 10)).toBe('2019-01-01');
|
|
132
|
+
});
|
|
133
|
+
});
|
|
134
|
+
describe('gestion des erreurs', () => {
|
|
135
|
+
it('devrait retourner null pour date null', () => {
|
|
136
|
+
expect(calculateDateAdd(null, 30, 'd')).toBe(null);
|
|
137
|
+
});
|
|
138
|
+
it('devrait retourner null pour date invalide', () => {
|
|
139
|
+
expect(calculateDateAdd(new Date('invalid'), 30, 'd')).toBe(null);
|
|
140
|
+
});
|
|
141
|
+
it('devrait retourner null pour valeur NaN', () => {
|
|
142
|
+
expect(calculateDateAdd(new Date(), NaN, 'd')).toBe(null);
|
|
143
|
+
});
|
|
144
|
+
it('devrait retourner null pour unité invalide', () => {
|
|
145
|
+
expect(calculateDateAdd(new Date(), 30, 'x')).toBe(null);
|
|
146
|
+
});
|
|
147
|
+
});
|
|
148
|
+
});
|
|
149
|
+
describe('parseDateString', () => {
|
|
150
|
+
it('devrait parser une date ISO', () => {
|
|
151
|
+
const result = parseDateString('2024-01-15');
|
|
152
|
+
expect(result?.toISOString().slice(0, 10)).toBe('2024-01-15');
|
|
153
|
+
});
|
|
154
|
+
it('devrait parser une date ISO avec heure', () => {
|
|
155
|
+
const result = parseDateString('2024-01-15T10:30:00');
|
|
156
|
+
expect(result).not.toBe(null);
|
|
157
|
+
});
|
|
158
|
+
it('devrait parser un timestamp', () => {
|
|
159
|
+
const timestamp = new Date('2024-01-15').getTime().toString();
|
|
160
|
+
const result = parseDateString(timestamp);
|
|
161
|
+
expect(result).not.toBe(null);
|
|
162
|
+
});
|
|
163
|
+
it('devrait retourner null pour une chaîne vide', () => {
|
|
164
|
+
expect(parseDateString('')).toBe(null);
|
|
165
|
+
});
|
|
166
|
+
it('devrait retourner null pour une date invalide', () => {
|
|
167
|
+
expect(parseDateString('invalid')).toBe(null);
|
|
168
|
+
});
|
|
169
|
+
});
|
|
170
|
+
describe('isValidDateUnit', () => {
|
|
171
|
+
it('devrait retourner true pour "d"', () => {
|
|
172
|
+
expect(isValidDateUnit('d')).toBe(true);
|
|
173
|
+
});
|
|
174
|
+
it('devrait retourner true pour "m"', () => {
|
|
175
|
+
expect(isValidDateUnit('m')).toBe(true);
|
|
176
|
+
});
|
|
177
|
+
it('devrait retourner true pour "y"', () => {
|
|
178
|
+
expect(isValidDateUnit('y')).toBe(true);
|
|
179
|
+
});
|
|
180
|
+
it('devrait retourner false pour une unité invalide', () => {
|
|
181
|
+
expect(isValidDateUnit('x')).toBe(false);
|
|
182
|
+
});
|
|
183
|
+
});
|
|
184
|
+
});
|
|
@@ -0,0 +1,88 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Gestionnaire des instances multiples pour les groupes d'enquête
|
|
3
|
+
* RSU v2 - Moteur de Rendu des Formulaires d'Enquête
|
|
4
|
+
*/
|
|
5
|
+
import { GroupeFormulaire, GroupeInstance, EnqueteReponse, ConstraintValidationResult } from '../../types/enquete';
|
|
6
|
+
export declare class GroupeInstanceManager {
|
|
7
|
+
/**
|
|
8
|
+
* Récupère le nombre maximum d'instances autorisées depuis la variable de contrôle
|
|
9
|
+
* RÈGLE DE PROTECTION : Ne jamais permettre de réduire sous le nombre d'instances existantes
|
|
10
|
+
*/
|
|
11
|
+
static getMaxInstances(groupe: GroupeFormulaire, responses: Record<string, EnqueteReponse>): number;
|
|
12
|
+
/**
|
|
13
|
+
* Récupère le nombre minimum d'instances (basé sur les instances existantes)
|
|
14
|
+
*/
|
|
15
|
+
static getMinInstances(groupe: GroupeFormulaire): number;
|
|
16
|
+
/**
|
|
17
|
+
* Compte le nombre d'instances existantes pour un groupe
|
|
18
|
+
*/
|
|
19
|
+
static getInstancesCount(groupe: GroupeFormulaire, responses: Record<string, EnqueteReponse>): number;
|
|
20
|
+
/**
|
|
21
|
+
* Crée une nouvelle instance pour un groupe multiple
|
|
22
|
+
*/
|
|
23
|
+
static createInstance(groupe: GroupeFormulaire, numeroInstance: number): GroupeInstance;
|
|
24
|
+
/**
|
|
25
|
+
* Initialise les instances pour un groupe multiple
|
|
26
|
+
*/
|
|
27
|
+
static initializeInstances(groupe: GroupeFormulaire, responses: Record<string, EnqueteReponse>): GroupeInstance[];
|
|
28
|
+
/**
|
|
29
|
+
* Vérifie si une instance est complètement renseignée
|
|
30
|
+
*/
|
|
31
|
+
static isInstanceComplete(instance: GroupeInstance, groupe: GroupeFormulaire): boolean;
|
|
32
|
+
/**
|
|
33
|
+
* Valide si on peut ajouter une nouvelle instance
|
|
34
|
+
*/
|
|
35
|
+
static canAddInstance(groupe: GroupeFormulaire, responses: Record<string, EnqueteReponse>): ConstraintValidationResult;
|
|
36
|
+
/**
|
|
37
|
+
* Valide si on peut supprimer une instance
|
|
38
|
+
*/
|
|
39
|
+
static canRemoveInstance(groupe: GroupeFormulaire, responses: Record<string, EnqueteReponse>): ConstraintValidationResult;
|
|
40
|
+
/**
|
|
41
|
+
* Valide si on peut modifier la variable de contrôle
|
|
42
|
+
*/
|
|
43
|
+
static canModifyControlVariable(variableCode: string, newValue: number, groupesMultiples: GroupeFormulaire[], responses: Record<string, EnqueteReponse>): ConstraintValidationResult;
|
|
44
|
+
/**
|
|
45
|
+
* Ajoute une nouvelle instance à un groupe
|
|
46
|
+
*/
|
|
47
|
+
static addInstance(groupe: GroupeFormulaire, responses: Record<string, EnqueteReponse>): {
|
|
48
|
+
success: boolean;
|
|
49
|
+
instance?: GroupeInstance;
|
|
50
|
+
error?: string;
|
|
51
|
+
};
|
|
52
|
+
/**
|
|
53
|
+
* Supprime une instance d'un groupe
|
|
54
|
+
*/
|
|
55
|
+
static removeInstance(groupe: GroupeFormulaire, instanceNumber: number, responses: Record<string, EnqueteReponse>): {
|
|
56
|
+
success: boolean;
|
|
57
|
+
error?: string;
|
|
58
|
+
};
|
|
59
|
+
/**
|
|
60
|
+
* Met à jour les propriétés calculées d'un groupe multiple
|
|
61
|
+
*/
|
|
62
|
+
static updateGroupeProperties(groupe: GroupeFormulaire, responses: Record<string, EnqueteReponse>): void;
|
|
63
|
+
/**
|
|
64
|
+
* Synchronise les réponses d'une instance avec le store global
|
|
65
|
+
*/
|
|
66
|
+
static syncInstanceResponses(instance: GroupeInstance, groupe: GroupeFormulaire, globalResponses: Record<string, EnqueteReponse>): void;
|
|
67
|
+
/**
|
|
68
|
+
* Valide la navigation vers l'instance suivante
|
|
69
|
+
*/
|
|
70
|
+
static canNavigateToNextInstance(currentInstance: GroupeInstance, groupe: GroupeFormulaire): ConstraintValidationResult;
|
|
71
|
+
/**
|
|
72
|
+
* Trouve la prochaine instance incomplète dans un groupe
|
|
73
|
+
*/
|
|
74
|
+
static findNextIncompleteInstance(groupe: GroupeFormulaire): GroupeInstance | null;
|
|
75
|
+
/**
|
|
76
|
+
* Calcule la progression d'un groupe multiple
|
|
77
|
+
*/
|
|
78
|
+
static calculateGroupProgress(groupe: GroupeFormulaire): {
|
|
79
|
+
completedInstances: number;
|
|
80
|
+
totalInstances: number;
|
|
81
|
+
progressPercentage: number;
|
|
82
|
+
};
|
|
83
|
+
/**
|
|
84
|
+
* Réorganise les numéros d'instances après suppression
|
|
85
|
+
*/
|
|
86
|
+
static reorderInstances(groupe: GroupeFormulaire, responses: Record<string, EnqueteReponse>): void;
|
|
87
|
+
}
|
|
88
|
+
//# sourceMappingURL=groupeInstanceManager.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"groupeInstanceManager.d.ts","sourceRoot":"","sources":["../../../src/lib/utils/groupeInstanceManager.ts"],"names":[],"mappings":"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"}
|