@inseefr/lunatic 0.3.2-experimental → 0.3.6-experimental
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/lib/index.js +38 -82
- package/lib/index.js.map +1 -1
- package/package.json +2 -2
- package/src/components/breadcrumb/component.js +29 -29
- package/src/components/button/component.js +53 -53
- package/src/components/button/index.js +1 -1
- package/src/components/checkbox/index.js +3 -3
- package/src/components/datepicker/index.js +1 -1
- package/src/components/declarations/index.js +1 -1
- package/src/components/declarations/wrappers/input-declarations-wrapper.js +28 -7
- package/src/components/declarations/wrappers/list-declarations-wrapper.js +232 -232
- package/src/components/dropdown/commons/components/dropdown.js +21 -0
- package/src/components/dropdown/dropdown-edit/dropdown-edit.js +4 -1
- package/src/components/dropdown/dropdown-simple/dropdown.js +3 -1
- package/src/components/filter-description/component.js +42 -42
- package/src/components/icon/component.js +33 -33
- package/src/components/input/index.js +2 -2
- package/src/components/input/input-number.js +2 -1
- package/src/components/loop/index.js +1 -1
- package/src/components/loop-constructor/wrapper/body-component.js +13 -1
- package/src/components/radio/index.js +1 -1
- package/src/components/sequence/index.js +1 -1
- package/src/components/subsequence/index.js +1 -1
- package/src/components/suggester/check-store.js +70 -70
- package/src/components/suggester/components/suggester-content.js +42 -42
- package/src/components/suggester/components/suggester.js +43 -3
- package/src/components/suggester/idb-suggester.js +7 -1
- package/src/components/suggester/lunatic-suggester.js +1 -0
- package/src/components/suggester/suggester-wrapper.js +6 -0
- package/src/components/tooltip/response.js +52 -52
- package/src/stories/checkbox-boolean/data-forced.json +48 -48
- package/src/stories/icons/icons.stories.js +16 -16
- package/src/stories/questionnaire/kish.json +275 -0
- package/src/stories/questionnaire/logement-queen.json +23390 -23390
- package/src/stories/questionnaire/logement-s2.json +46027 -44536
- package/src/stories/questionnaire/questionnaire.stories.js +14 -2
- package/src/stories/utils/custom-lunatic.scss +23 -23
- package/src/stories/utils/orchestrator-split.js +4 -2
- package/src/stories/utils/orchestrator.js +4 -2
- package/src/tests/components/breadcrumb.spec.js +13 -13
- package/src/tests/components/button.spec.js +11 -11
- package/src/tests/components/checkbox-boolean.spec.js +45 -45
- package/src/tests/components/checkbox-group.spec.js +53 -53
- package/src/tests/components/checkbox-one.spec.js +32 -32
- package/src/tests/components/datepicker.spec.js +22 -22
- package/src/tests/components/declarations-wrappers/input-declarations-wrapper.spec.js +67 -67
- package/src/tests/components/declarations-wrappers/list-declarations-wrapper.spec.js +52 -52
- package/src/tests/components/declarations-wrappers/simple-declarations-wrapper.spec.js +21 -21
- package/src/tests/components/declarations.spec.js +46 -46
- package/src/tests/components/input.spec.js +18 -18
- package/src/tests/components/loops/loop-static.json +66 -66
- package/src/tests/components/loops/loop.json +258 -258
- package/src/tests/components/loops/loop.spec.js +30 -30
- package/src/tests/components/loops/roster-for-loop.spec.js +18 -18
- package/src/tests/components/progress-bar.spec.js +15 -15
- package/src/tests/components/radio.spec.js +27 -27
- package/src/tests/components/sequence.spec.js +9 -9
- package/src/tests/components/subsequence.spec.js +9 -9
- package/src/tests/components/table.spec.js +11 -11
- package/src/tests/components/textarea.spec.js +18 -18
- package/src/tests/components/tooltip.spec.js +25 -25
- package/src/tests/setup/setupTests.js +4 -4
- package/src/tests/utils/lib/alphabet.spec.js +36 -36
- package/src/tests/utils/lib/array.spec.js +22 -22
- package/src/tests/utils/lib/checkbox/group.spec.js +72 -72
- package/src/tests/utils/lib/decorator/title-decorator.spec.js +12 -12
- package/src/tests/utils/lib/input-number.spec.js +18 -18
- package/src/tests/utils/lib/items-positioning.spec.js +17 -17
- package/src/tests/utils/lib/label-position.spec.js +22 -22
- package/src/tests/utils/lib/loops/bindings.spec.js +75 -75
- package/src/tests/utils/lib/loops/shared.spec.js +82 -82
- package/src/tests/utils/lib/missing/missing.spec.js +74 -74
- package/src/tests/utils/lib/missing/mock.js +137 -137
- package/src/tests/utils/lib/pagination/shared.spec.js +42 -42
- package/src/tests/utils/lib/responses.spec.js +64 -64
- package/src/tests/utils/lib/style.spec.js +26 -26
- package/src/tests/utils/lib/tooltip/build-response.spec.js +95 -95
- package/src/tests/utils/lib/tooltip/content.spec.js +109 -109
- package/src/tests/utils/to-expose/handler/handler.spec.js +94 -94
- package/src/tests/utils/to-expose/handler/questionnaire.json +158 -158
- package/src/tests/utils/to-expose/handler/results/index.js +6 -6
- package/src/tests/utils/to-expose/handler/results/res-double.json +158 -158
- package/src/tests/utils/to-expose/handler/results/res-input-collected.json +158 -158
- package/src/tests/utils/to-expose/handler/results/res-input-edited.json +158 -158
- package/src/tests/utils/to-expose/handler/results/res-loop.json +158 -158
- package/src/tests/utils/to-expose/handler/results/res-matrix.json +158 -158
- package/src/tests/utils/to-expose/handler/results/res-responses.json +158 -158
- package/src/tests/utils/to-expose/hooks/use-lunatic.spec.js +46 -46
- package/src/tests/utils/to-expose/init-questionnaire/data.json +12 -12
- package/src/tests/utils/to-expose/init-questionnaire/init-questionnaire.spec.js +19 -19
- package/src/tests/utils/to-expose/interpret/interpret.spec.js +48 -48
- package/src/tests/utils/to-expose/state/questionnaire.json +61 -61
- package/src/tests/utils/to-expose/state/results.js +78 -78
- package/src/utils/lib/splitting.js +55 -23
- package/src/utils/lib/tooltip/build-response.js +41 -41
- package/src/utils/store-tools/create/index.js +1 -1
- package/src/utils/store-tools/create/update-store-info.js +26 -26
- package/src/utils/store-tools/index.js +5 -5
- package/src/utils/to-expose/handler.js +12 -14
- package/src/utils/to-expose/hooks/lunatic-split.js +44 -27
- package/src/utils/to-expose/hooks/lunatic.js +12 -5
|
@@ -17,13 +17,17 @@ import { useFilterComponents } from './filter-components';
|
|
|
17
17
|
import { loadSuggesters } from '../../store-tools/auto-load';
|
|
18
18
|
import { getCollectedStateByValueType, getState } from '..';
|
|
19
19
|
|
|
20
|
+
const defaultData = {};
|
|
21
|
+
const defaultPreferences = [COLLECTED];
|
|
22
|
+
const defaultFeatures = ['VTL'];
|
|
23
|
+
|
|
20
24
|
const useLunaticSplit = (
|
|
21
25
|
source,
|
|
22
|
-
data,
|
|
26
|
+
data = defaultData,
|
|
23
27
|
{
|
|
24
28
|
savingType = COLLECTED,
|
|
25
|
-
preferences =
|
|
26
|
-
features =
|
|
29
|
+
preferences = defaultPreferences,
|
|
30
|
+
features = defaultFeatures,
|
|
27
31
|
management = false,
|
|
28
32
|
pagination = false,
|
|
29
33
|
modalForControls = false,
|
|
@@ -38,37 +42,48 @@ const useLunaticSplit = (
|
|
|
38
42
|
console.log('useLunaticSplit');
|
|
39
43
|
var start = new Date().getTime();
|
|
40
44
|
}
|
|
45
|
+
const fullQuestionnaire = useMemo(
|
|
46
|
+
() => mergeQuestionnaireAndData(source)(data),
|
|
47
|
+
[source, data]
|
|
48
|
+
);
|
|
41
49
|
const sources = useMemo(() => getSplitQuestionnaireSource(source), [source]);
|
|
50
|
+
const allData = useMemo(
|
|
51
|
+
() => getState(fullQuestionnaire),
|
|
52
|
+
[fullQuestionnaire]
|
|
53
|
+
);
|
|
54
|
+
const [allBindings, setAllBindings] = useState(() =>
|
|
55
|
+
getBindings(fullQuestionnaire)
|
|
56
|
+
);
|
|
57
|
+
|
|
42
58
|
const rootPagesOfSource = useMemo(
|
|
43
59
|
() => getRootPageInSources(sources),
|
|
44
60
|
[sources]
|
|
45
61
|
);
|
|
46
62
|
|
|
47
|
-
const [
|
|
48
|
-
const [lunaticData, setLunaticData] = useState(
|
|
63
|
+
const [sourceIndex, setSourceIndex] = useState(0);
|
|
64
|
+
const [lunaticData, setLunaticData] = useState(allData);
|
|
49
65
|
|
|
50
66
|
const [initPage, setInitPage] = useState(false);
|
|
51
67
|
const featuresWithoutMD = features.filter((f) => f !== 'MD');
|
|
52
68
|
|
|
53
69
|
const [questionnaire, setQuestionnaire] = useState(() =>
|
|
54
|
-
mergeQuestionnaireAndData(sources[
|
|
70
|
+
mergeQuestionnaireAndData(sources[sourceIndex])(lunaticData)
|
|
55
71
|
);
|
|
56
72
|
const [bindings, setBindings] = useState(() => getBindings(questionnaire));
|
|
57
|
-
const [allBindings, setAllBindings] = useState(bindings);
|
|
58
73
|
|
|
59
74
|
const [wantedPage, setWantedPage] = useState(null);
|
|
60
75
|
|
|
61
76
|
// updating current source
|
|
62
77
|
useEffect(() => {
|
|
63
78
|
setInitPage(false);
|
|
64
|
-
const newQ = mergeQuestionnaireAndData(sources[
|
|
79
|
+
const newQ = mergeQuestionnaireAndData(sources[sourceIndex])(lunaticData);
|
|
65
80
|
setQuestionnaire(newQ);
|
|
66
81
|
const bind = getBindings(newQ);
|
|
67
82
|
setBindings(bind);
|
|
68
83
|
setAllBindings({ ...allBindings, ...bind });
|
|
69
84
|
|
|
70
85
|
// eslint-disable-next-line react-hooks/exhaustive-deps
|
|
71
|
-
}, [sources,
|
|
86
|
+
}, [sources, sourceIndex]);
|
|
72
87
|
|
|
73
88
|
const getBindingsSplit = (quest) => {
|
|
74
89
|
const bind = getBindings(quest);
|
|
@@ -141,14 +156,14 @@ const useLunaticSplit = (
|
|
|
141
156
|
|
|
142
157
|
const isFirstPage = page === firstPage;
|
|
143
158
|
const isLastPage = page === maxPage;
|
|
144
|
-
const isFirstSource =
|
|
145
|
-
const isLastSource =
|
|
159
|
+
const isFirstSource = sourceIndex === 0;
|
|
160
|
+
const isLastSource = sourceIndex === sources.length - 1;
|
|
146
161
|
|
|
147
162
|
const goSplitNext = () => {
|
|
148
163
|
if (!isLastSource) {
|
|
149
164
|
const stateData = getState(questionnaire);
|
|
150
165
|
setLunaticData(mergeStateData(lunaticData, stateData));
|
|
151
|
-
|
|
166
|
+
setSourceIndex(sourceIndex + 1);
|
|
152
167
|
}
|
|
153
168
|
};
|
|
154
169
|
|
|
@@ -189,7 +204,7 @@ const useLunaticSplit = (
|
|
|
189
204
|
if (!isFirstSource) {
|
|
190
205
|
const stateData = getState(questionnaire);
|
|
191
206
|
setLunaticData(mergeStateData(lunaticData, stateData));
|
|
192
|
-
|
|
207
|
+
setSourceIndex(sourceIndex - 1);
|
|
193
208
|
}
|
|
194
209
|
};
|
|
195
210
|
|
|
@@ -233,7 +248,7 @@ const useLunaticSplit = (
|
|
|
233
248
|
(newPage) => {
|
|
234
249
|
const p = newPage?.split('.')[0];
|
|
235
250
|
const index = rootPagesOfSource.findIndex((pages) => pages.includes(p));
|
|
236
|
-
if (index ===
|
|
251
|
+
if (index === sourceIndex) {
|
|
237
252
|
setPage(newPage);
|
|
238
253
|
setWantedPage(null);
|
|
239
254
|
} else {
|
|
@@ -241,10 +256,10 @@ const useLunaticSplit = (
|
|
|
241
256
|
setWantedPage(newPage);
|
|
242
257
|
const stateData = getState(questionnaire);
|
|
243
258
|
setLunaticData(mergeStateData(lunaticData, stateData));
|
|
244
|
-
|
|
259
|
+
setSourceIndex(index);
|
|
245
260
|
}
|
|
246
261
|
},
|
|
247
|
-
[lunaticData, questionnaire, rootPagesOfSource,
|
|
262
|
+
[lunaticData, questionnaire, rootPagesOfSource, sourceIndex]
|
|
248
263
|
);
|
|
249
264
|
|
|
250
265
|
useEffect(() => {
|
|
@@ -252,13 +267,12 @@ const useLunaticSplit = (
|
|
|
252
267
|
if (wantedPage) {
|
|
253
268
|
setPage(wantedPage);
|
|
254
269
|
setWantedPage(null);
|
|
255
|
-
setInitPage(true);
|
|
256
270
|
} else {
|
|
257
271
|
const getNewInitPage = () => {
|
|
258
272
|
if (flow === FLOW_NEXT) {
|
|
259
273
|
const tempPage =
|
|
260
|
-
|
|
261
|
-
? sources[
|
|
274
|
+
sourceIndex - 1 > 0
|
|
275
|
+
? sources[sourceIndex - 1].maxPage
|
|
262
276
|
: sources[0].maxPage;
|
|
263
277
|
return getPage({
|
|
264
278
|
components: questionnaire.components,
|
|
@@ -270,8 +284,8 @@ const useLunaticSplit = (
|
|
|
270
284
|
});
|
|
271
285
|
} else if (flow === FLOW_PREVIOUS) {
|
|
272
286
|
const tempPage =
|
|
273
|
-
|
|
274
|
-
? sources[
|
|
287
|
+
sourceIndex + 1 < sources.length - 1
|
|
288
|
+
? sources[sourceIndex + 1].firstPage
|
|
275
289
|
: sources[sources.length - 1].firstPage;
|
|
276
290
|
return getPage({
|
|
277
291
|
components: questionnaire.components,
|
|
@@ -289,12 +303,12 @@ const useLunaticSplit = (
|
|
|
289
303
|
else {
|
|
290
304
|
const newPage = getNewInitPage();
|
|
291
305
|
if (!newPage) {
|
|
292
|
-
if (flow === FLOW_NEXT)
|
|
293
|
-
else
|
|
306
|
+
if (flow === FLOW_NEXT) setSourceIndex(sourceIndex + 1);
|
|
307
|
+
else setSourceIndex(sourceIndex - 1);
|
|
294
308
|
} else setPage(newPage);
|
|
295
309
|
}
|
|
296
|
-
setInitPage(true);
|
|
297
310
|
}
|
|
311
|
+
setInitPage(true);
|
|
298
312
|
}
|
|
299
313
|
}, [
|
|
300
314
|
initPage,
|
|
@@ -305,7 +319,7 @@ const useLunaticSplit = (
|
|
|
305
319
|
page,
|
|
306
320
|
featuresWithoutMD,
|
|
307
321
|
management,
|
|
308
|
-
|
|
322
|
+
sourceIndex,
|
|
309
323
|
sources,
|
|
310
324
|
flow,
|
|
311
325
|
wantedPage,
|
|
@@ -347,11 +361,14 @@ const useLunaticSplit = (
|
|
|
347
361
|
|
|
348
362
|
useEffect(() => {
|
|
349
363
|
if (Object.keys(todoExternals).length !== 0) {
|
|
350
|
-
const newQ = updateExternals(questionnaire)(logFunction)(
|
|
364
|
+
const newQ = updateExternals(questionnaire)(logFunction, preferences)(
|
|
365
|
+
todoExternals
|
|
366
|
+
);
|
|
367
|
+
setBindings(getBindings(newQ));
|
|
351
368
|
setQuestionnaire(newQ);
|
|
352
369
|
setTodoExternals({});
|
|
353
370
|
}
|
|
354
|
-
}, [todoExternals, logFunction, questionnaire]);
|
|
371
|
+
}, [todoExternals, logFunction, questionnaire, preferences]);
|
|
355
372
|
|
|
356
373
|
const cancelModal = () => {
|
|
357
374
|
setModalContent(null);
|
|
@@ -13,13 +13,17 @@ import { COLLECTED } from '../../../constants';
|
|
|
13
13
|
import { useFilterComponents } from './filter-components';
|
|
14
14
|
import { loadSuggesters } from '../../store-tools/auto-load';
|
|
15
15
|
|
|
16
|
+
const defaultData = {};
|
|
17
|
+
const defaultPreferences = [COLLECTED];
|
|
18
|
+
const defaultFeatures = ['VTL'];
|
|
19
|
+
|
|
16
20
|
const useLunatic = (
|
|
17
21
|
source,
|
|
18
|
-
data,
|
|
22
|
+
data = defaultData,
|
|
19
23
|
{
|
|
20
24
|
savingType = COLLECTED,
|
|
21
|
-
preferences =
|
|
22
|
-
features =
|
|
25
|
+
preferences = defaultPreferences,
|
|
26
|
+
features = defaultFeatures,
|
|
23
27
|
management = false,
|
|
24
28
|
pagination = false,
|
|
25
29
|
modalForControls = false,
|
|
@@ -212,11 +216,14 @@ const useLunatic = (
|
|
|
212
216
|
|
|
213
217
|
useEffect(() => {
|
|
214
218
|
if (Object.keys(todoExternals).length !== 0) {
|
|
215
|
-
const newQ = updateExternals(questionnaire)(logFunction)(
|
|
219
|
+
const newQ = updateExternals(questionnaire)(logFunction, preferences)(
|
|
220
|
+
todoExternals
|
|
221
|
+
);
|
|
222
|
+
setBindings(getBindings(newQ));
|
|
216
223
|
setQuestionnaire(newQ);
|
|
217
224
|
setTodoExternals({});
|
|
218
225
|
}
|
|
219
|
-
}, [todoExternals, logFunction, questionnaire]);
|
|
226
|
+
}, [todoExternals, logFunction, questionnaire, preferences]);
|
|
220
227
|
|
|
221
228
|
const cancelModal = () => {
|
|
222
229
|
setModalContent(null);
|