@inseefr/lunatic 3.13.6-rc.1 → 3.14.0

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.
Files changed (42) hide show
  1. package/components/Suggester/SuggesterType.d.ts +3 -1
  2. package/components/shared/Combobox/ComboboxType.d.ts +2 -0
  3. package/components/shared/MDLabel/MDLabel.js +2 -1
  4. package/components/shared/MDLabel/MDLabel.js.map +1 -1
  5. package/components/shared/MDLabel/MDLabel.spec.js +25 -31
  6. package/components/shared/MDLabel/MDLabel.spec.js.map +1 -1
  7. package/esm/components/Suggester/SuggesterType.d.ts +3 -1
  8. package/esm/components/shared/Combobox/ComboboxType.d.ts +2 -0
  9. package/esm/components/shared/MDLabel/MDLabel.js +2 -1
  10. package/esm/components/shared/MDLabel/MDLabel.js.map +1 -1
  11. package/esm/components/shared/MDLabel/MDLabel.spec.js +25 -31
  12. package/esm/components/shared/MDLabel/MDLabel.spec.js.map +1 -1
  13. package/esm/use-lunatic/reducer/reducerInitializer.js +1 -1
  14. package/esm/use-lunatic/reducer/reducerInitializer.js.map +1 -1
  15. package/esm/utils/search/SearchInterface.d.ts +9 -1
  16. package/esm/utils/search/melauto.d.ts +4 -1
  17. package/esm/utils/search/melauto.js +17 -17
  18. package/esm/utils/search/melauto.js.map +1 -1
  19. package/esm/utils/search/melauto.spec.js +9 -13
  20. package/esm/utils/search/melauto.spec.js.map +1 -1
  21. package/package.json +4 -2
  22. package/src/components/Suggester/SuggesterType.ts +3 -1
  23. package/src/components/shared/Combobox/ComboboxType.ts +2 -0
  24. package/src/components/shared/MDLabel/MDLabel.spec.tsx +25 -31
  25. package/src/components/shared/MDLabel/MDLabel.tsx +2 -2
  26. package/src/stories/behaviour/cleaning/cleaning.stories.tsx +7 -0
  27. package/src/stories/behaviour/cleaning/source-sequence.json +444 -0
  28. package/src/stories/behaviour/search/search.stories.tsx +258 -0
  29. package/src/use-lunatic/reducer/reducerInitializer.tsx +1 -1
  30. package/src/use-lunatic/use-lunatic.test.ts +6 -2
  31. package/src/utils/search/SearchInterface.ts +10 -1
  32. package/src/utils/search/melauto.spec.ts +10 -13
  33. package/src/utils/search/melauto.ts +20 -13
  34. package/tsconfig.build.tsbuildinfo +1 -1
  35. package/use-lunatic/reducer/reducerInitializer.js +1 -1
  36. package/use-lunatic/reducer/reducerInitializer.js.map +1 -1
  37. package/utils/search/SearchInterface.d.ts +9 -1
  38. package/utils/search/melauto.d.ts +4 -1
  39. package/utils/search/melauto.js +11 -14
  40. package/utils/search/melauto.js.map +1 -1
  41. package/utils/search/melauto.spec.js +9 -13
  42. package/utils/search/melauto.spec.js.map +1 -1
@@ -1,4 +1,4 @@
1
- import { type PropsWithChildren } from 'react';
1
+ import { Fragment, type PropsWithChildren } from 'react';
2
2
  import Markdown, { type Components } from 'react-markdown';
3
3
  import { MarkdownLink } from './MarkdownLink';
4
4
  import remarkBreaks from 'remark-breaks';
@@ -12,7 +12,7 @@ type Props = {
12
12
  export function MDLabel({ expression, MarkdownLinkOverride }: Props) {
13
13
  const hasParagraphs = /\n\n/.test(expression);
14
14
  const components = {
15
- p: hasParagraphs ? 'p' : 'div',
15
+ p: hasParagraphs ? 'p' : Fragment,
16
16
  br: 'br',
17
17
  a: (props: MarkdownAProps) => (
18
18
  <MarkdownA
@@ -4,6 +4,7 @@ import {
4
4
  type OrchestratorStory,
5
5
  } from '../../utils/Orchestrator';
6
6
  import source from './source.json';
7
+ import sourceSequence from './source-sequence.json';
7
8
  import sourceLoop from './source-loop.json';
8
9
  import sourceLoopScopes from './source-loop-scopes.json';
9
10
 
@@ -24,6 +25,12 @@ export const Default: OrchestratorStory = {
24
25
  },
25
26
  };
26
27
 
28
+ export const Sequence: OrchestratorStory = {
29
+ args: {
30
+ source: sourceSequence,
31
+ },
32
+ };
33
+
27
34
  export const Loop: OrchestratorStory = {
28
35
  args: {
29
36
  source: sourceLoop,
@@ -0,0 +1,444 @@
1
+ {
2
+ "$schema": "../../../../lunatic-schema.json",
3
+ "id": "mv592es3",
4
+ "label": {
5
+ "type": "VTL|MD",
6
+ "value": "BUG_FILTRE_OK_CLEAN_KO - Input Number"
7
+ },
8
+ "modele": "BUG_FILTRE",
9
+ "maxPage": "5",
10
+ "cleaning": {
11
+ "Q": {
12
+ "TEST": [
13
+ {
14
+ "expression": "nvl(Q,21)>20",
15
+ "shouldCheckAllIterations": false,
16
+ "shouldCheckDuringResizing": false
17
+ }
18
+ ],
19
+ "TAB_ANNEX2": [
20
+ {
21
+ "shapeFrom": "TAB_ANNEX2",
22
+ "expression": "nvl(Q,21)>20",
23
+ "shouldCheckAllIterations": false,
24
+ "shouldCheckDuringResizing": false
25
+ }
26
+ ]
27
+ }
28
+ },
29
+ "resizing": {},
30
+ "variables": [
31
+ {
32
+ "name": "Q",
33
+ "values": {
34
+ "COLLECTED": null
35
+ },
36
+ "dimension": 0,
37
+ "variableType": "COLLECTED"
38
+ },
39
+ {
40
+ "name": "TEST",
41
+ "values": {
42
+ "COLLECTED": null
43
+ },
44
+ "dimension": 0,
45
+ "variableType": "COLLECTED"
46
+ },
47
+ {
48
+ "name": "TAB_ANNEX2",
49
+ "values": {
50
+ "COLLECTED": []
51
+ },
52
+ "dimension": 1,
53
+ "variableType": "COLLECTED",
54
+ "iterationReference": "mpfp48fx"
55
+ },
56
+ {
57
+ "name": "DUREE_REMPL",
58
+ "variableType": "COLLECTED"
59
+ },
60
+ {
61
+ "name": "COMMENT_QE",
62
+ "variableType": "COLLECTED"
63
+ },
64
+ {
65
+ "name": "FILTER_RESULT_Q",
66
+ "dimension": 0,
67
+ "expression": {
68
+ "type": "VTL",
69
+ "value": "true"
70
+ },
71
+ "variableType": "CALCULATED",
72
+ "isIgnoredByLunatic": true
73
+ },
74
+ {
75
+ "name": "FILTER_RESULT_TEST",
76
+ "dimension": 0,
77
+ "expression": {
78
+ "type": "VTL",
79
+ "value": "(nvl(Q,21)>20)"
80
+ },
81
+ "variableType": "CALCULATED",
82
+ "isIgnoredByLunatic": true,
83
+ "bindingDependencies": ["Q"]
84
+ },
85
+ {
86
+ "name": "FILTER_RESULT_TAB_ANNEX2",
87
+ "dimension": 1,
88
+ "shapeFrom": ["TAB_ANNEX2"],
89
+ "expression": {
90
+ "type": "VTL",
91
+ "value": "(nvl(Q,21)>20)"
92
+ },
93
+ "variableType": "CALCULATED",
94
+ "isIgnoredByLunatic": true,
95
+ "iterationReference": "mpfp48fx",
96
+ "bindingDependencies": ["Q"]
97
+ },
98
+ {
99
+ "name": "FILTER_RESULT_DUREE_REMPL",
100
+ "expression": {
101
+ "type": "VTL",
102
+ "value": "true"
103
+ },
104
+ "variableType": "CALCULATED",
105
+ "isIgnoredByLunatic": true
106
+ },
107
+ {
108
+ "name": "FILTER_RESULT_COMMENT_QE",
109
+ "expression": {
110
+ "type": "VTL",
111
+ "value": "true"
112
+ },
113
+ "variableType": "CALCULATED",
114
+ "isIgnoredByLunatic": true
115
+ }
116
+ ],
117
+ "components": [
118
+ {
119
+ "id": "mpfp2xss",
120
+ "page": "1",
121
+ "label": {
122
+ "type": "VTL",
123
+ "value": "\"I - \" || \"S\""
124
+ },
125
+ "componentType": "Sequence",
126
+ "conditionFilter": {
127
+ "type": "VTL",
128
+ "value": "true"
129
+ }
130
+ },
131
+ {
132
+ "id": "question-mpfped8m",
133
+ "page": "1",
134
+ "label": {
135
+ "type": "VTL|MD",
136
+ "value": "\"1\\. \" || \"Q - permet d'afficher la question suivante si vide ou valeur >20\""
137
+ },
138
+ "components": [
139
+ {
140
+ "id": "mpfped8m",
141
+ "max": 1000,
142
+ "min": 1,
143
+ "page": "1",
144
+ "controls": [
145
+ {
146
+ "id": "mpfped8m-format-borne-inf-sup",
147
+ "type": "SIMPLE",
148
+ "control": {
149
+ "type": "VTL",
150
+ "value": "not(not(isnull(Q)) and (1>Q or 1000<Q))"
151
+ },
152
+ "criticality": "ERROR",
153
+ "errorMessage": {
154
+ "type": "VTL|MD",
155
+ "value": "\" La valeur doit être comprise entre 1 et 1000\""
156
+ },
157
+ "typeOfControl": "FORMAT"
158
+ },
159
+ {
160
+ "id": "mpfped8m-format-decimal",
161
+ "type": "SIMPLE",
162
+ "control": {
163
+ "type": "VTL",
164
+ "value": "not(not(isnull(Q)) and round(Q,0)<>Q)"
165
+ },
166
+ "criticality": "ERROR",
167
+ "errorMessage": {
168
+ "type": "VTL|MD",
169
+ "value": "\"Le nombre doit comporter au maximum 0 chiffre(s) après la virgule\""
170
+ },
171
+ "typeOfControl": "FORMAT"
172
+ }
173
+ ],
174
+ "decimals": 0,
175
+ "response": {
176
+ "name": "Q"
177
+ },
178
+ "description": {
179
+ "type": "TXT",
180
+ "value": "Format attendu : un nombre entre 1 et 1 000"
181
+ },
182
+ "isMandatory": false,
183
+ "componentType": "InputNumber"
184
+ }
185
+ ],
186
+ "componentType": "Question",
187
+ "conditionFilter": {
188
+ "type": "VTL",
189
+ "value": "true"
190
+ }
191
+ },
192
+ {
193
+ "id": "mpfoxtyu",
194
+ "page": "2",
195
+ "label": {
196
+ "type": "VTL",
197
+ "value": "\"II - \" || \"S2\""
198
+ },
199
+ "componentType": "Sequence",
200
+ "conditionFilter": {
201
+ "type": "VTL",
202
+ "value": "(nvl(Q,21)>20)"
203
+ }
204
+ },
205
+ {
206
+ "id": "question-mv58ouq2",
207
+ "page": "2",
208
+ "label": {
209
+ "type": "VTL|MD",
210
+ "value": "\"1\\. \" || \"TEST \""
211
+ },
212
+ "components": [
213
+ {
214
+ "id": "mv58ouq2",
215
+ "page": "2",
216
+ "response": {
217
+ "name": "TEST"
218
+ },
219
+ "maxLength": 249,
220
+ "isMandatory": false,
221
+ "componentType": "Input"
222
+ }
223
+ ],
224
+ "componentType": "Question",
225
+ "conditionFilter": {
226
+ "type": "VTL",
227
+ "value": "(nvl(Q,21)>20)"
228
+ }
229
+ },
230
+ {
231
+ "id": "question-mpfp48fx",
232
+ "page": "2",
233
+ "label": {
234
+ "type": "VTL|MD",
235
+ "value": "\"2\\. \" || \"TAB_ANNEX\""
236
+ },
237
+ "components": [
238
+ {
239
+ "id": "mpfp48fx",
240
+ "page": "2",
241
+ "lines": {
242
+ "max": {
243
+ "type": "VTL",
244
+ "value": "5"
245
+ },
246
+ "min": {
247
+ "type": "VTL",
248
+ "value": "5"
249
+ }
250
+ },
251
+ "header": [
252
+ {
253
+ "label": {
254
+ "type": "VTL|MD",
255
+ "value": "\"PROD\""
256
+ }
257
+ },
258
+ {
259
+ "label": {
260
+ "type": "VTL|MD",
261
+ "value": "\"Montant \""
262
+ }
263
+ }
264
+ ],
265
+ "controls": [
266
+ {
267
+ "id": "mpfp48fx-RDOP-mpfougkl-format-borne-inf-sup",
268
+ "type": "ROW",
269
+ "control": {
270
+ "type": "VTL",
271
+ "value": "not(not(isnull(TAB_ANNEX2)) and (0>TAB_ANNEX2 or 1000000<TAB_ANNEX2))"
272
+ },
273
+ "criticality": "ERROR",
274
+ "errorMessage": {
275
+ "type": "VTL|MD",
276
+ "value": "\" La valeur doit être comprise entre 0 et 1000000\""
277
+ },
278
+ "typeOfControl": "FORMAT"
279
+ },
280
+ {
281
+ "id": "mpfp48fx-RDOP-mpfougkl-format-decimal",
282
+ "type": "ROW",
283
+ "control": {
284
+ "type": "VTL",
285
+ "value": "not(not(isnull(TAB_ANNEX2)) and round(TAB_ANNEX2,0)<>TAB_ANNEX2)"
286
+ },
287
+ "criticality": "ERROR",
288
+ "errorMessage": {
289
+ "type": "VTL|MD",
290
+ "value": "\"Le nombre doit comporter au maximum 0 chiffre(s) après la virgule\""
291
+ },
292
+ "typeOfControl": "FORMAT"
293
+ }
294
+ ],
295
+ "components": [
296
+ {
297
+ "label": {
298
+ "type": "VTL|MD",
299
+ "value": "\"Produit numéro - [\" || cast(GLOBAL_ITERATION_INDEX,string) || \"]\""
300
+ },
301
+ "componentType": "Text"
302
+ },
303
+ {
304
+ "id": "mpfp48fx-RDOP-mpfougkl",
305
+ "max": 1000000,
306
+ "min": 0,
307
+ "unit": {
308
+ "type": "VTL",
309
+ "value": "\"k€\""
310
+ },
311
+ "decimals": 0,
312
+ "response": {
313
+ "name": "TAB_ANNEX2"
314
+ },
315
+ "componentType": "InputNumber"
316
+ }
317
+ ],
318
+ "componentType": "RosterForLoop"
319
+ }
320
+ ],
321
+ "componentType": "Question",
322
+ "conditionFilter": {
323
+ "type": "VTL",
324
+ "value": "(nvl(Q,21)>20)"
325
+ }
326
+ },
327
+ {
328
+ "id": "mpfp5p0r",
329
+ "page": "3",
330
+ "label": {
331
+ "type": "VTL",
332
+ "value": "\"III - \" || \"FIN\""
333
+ },
334
+ "componentType": "Sequence",
335
+ "conditionFilter": {
336
+ "type": "VTL",
337
+ "value": "true"
338
+ }
339
+ },
340
+ {
341
+ "id": "TIME-SEQ",
342
+ "page": "4",
343
+ "label": {
344
+ "type": "VTL",
345
+ "value": "\"Temps de réponse\""
346
+ },
347
+ "componentType": "Sequence",
348
+ "conditionFilter": {
349
+ "type": "VTL",
350
+ "value": "true"
351
+ }
352
+ },
353
+ {
354
+ "id": "question-TIME-QUESTION-RESPONSE",
355
+ "page": "4",
356
+ "label": {
357
+ "type": "VTL|MD",
358
+ "value": "\"1\\. \" || \"Combien de temps avez-vous mis en tout pour répondre à cette enquête (recherche des données + remplissage du questionnaire) ?\""
359
+ },
360
+ "components": [
361
+ {
362
+ "id": "TIME-QUESTION-RESPONSE",
363
+ "max": "PT99H59M",
364
+ "min": "PT0H0M",
365
+ "page": "4",
366
+ "format": "PTnHnM",
367
+ "controls": [
368
+ {
369
+ "id": "TIME-QUESTION-RESPONSE-format",
370
+ "type": "SIMPLE",
371
+ "control": {
372
+ "type": "VTL",
373
+ "value": "not(not(isnull(DUREE_REMPL)) and (cast(substr(DUREE_REMPL, 3, instr(DUREE_REMPL, \"H\") - 3), integer) < 0 or (cast(substr(DUREE_REMPL, 3, instr(DUREE_REMPL, \"H\") - 3), integer) = 0 and cast(substr(DUREE_REMPL, instr(DUREE_REMPL, \"H\") + 1, instr(DUREE_REMPL, \"M\") - instr(DUREE_REMPL, \"H\") - 1), integer) < 0) or cast(substr(DUREE_REMPL, 3, instr(DUREE_REMPL, \"H\") - 3), integer) > 99 or (cast(substr(DUREE_REMPL, 3, instr(DUREE_REMPL, \"H\") - 3), integer) = 99 and cast(substr(DUREE_REMPL, instr(DUREE_REMPL, \"H\") + 1, instr(DUREE_REMPL, \"M\") - instr(DUREE_REMPL, \"H\") - 1), integer) > 59)))"
374
+ },
375
+ "criticality": "ERROR",
376
+ "errorMessage": {
377
+ "type": "VTL|MD",
378
+ "value": "\"La durée saisie doit être inférieure à 99 heures et 59 minutes\""
379
+ },
380
+ "typeOfControl": "FORMAT"
381
+ }
382
+ ],
383
+ "response": {
384
+ "name": "DUREE_REMPL"
385
+ },
386
+ "description": {
387
+ "type": "TXT",
388
+ "value": "Jusqu'à 99 heures et 59 minutes"
389
+ },
390
+ "isMandatory": false,
391
+ "componentType": "Duration"
392
+ }
393
+ ],
394
+ "componentType": "Question",
395
+ "conditionFilter": {
396
+ "type": "VTL",
397
+ "value": "true"
398
+ }
399
+ },
400
+ {
401
+ "id": "COMMENT-SEQ",
402
+ "page": "5",
403
+ "label": {
404
+ "type": "VTL",
405
+ "value": "\"Commentaire\""
406
+ },
407
+ "componentType": "Sequence",
408
+ "conditionFilter": {
409
+ "type": "VTL",
410
+ "value": "true"
411
+ }
412
+ },
413
+ {
414
+ "id": "question-COMMENT-QUESTION",
415
+ "page": "5",
416
+ "label": {
417
+ "type": "VTL|MD",
418
+ "value": "\"2\\. \" || \"Avez-vous des remarques concernant l'enquête ou des commentaires ?\""
419
+ },
420
+ "components": [
421
+ {
422
+ "id": "COMMENT-QUESTION",
423
+ "page": "5",
424
+ "response": {
425
+ "name": "COMMENT_QE"
426
+ },
427
+ "maxLength": 2000,
428
+ "isMandatory": false,
429
+ "componentType": "Textarea"
430
+ }
431
+ ],
432
+ "componentType": "Question",
433
+ "conditionFilter": {
434
+ "type": "VTL",
435
+ "value": "true"
436
+ }
437
+ }
438
+ ],
439
+ "pagination": "sequence",
440
+ "componentType": "Questionnaire",
441
+ "enoCoreVersion": "3.66.1",
442
+ "generatingDate": "23-10-2026 12:37:22",
443
+ "lunaticModelVersion": "6.0.0"
444
+ }