@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.
Files changed (101) hide show
  1. package/lib/index.js +38 -82
  2. package/lib/index.js.map +1 -1
  3. package/package.json +2 -2
  4. package/src/components/breadcrumb/component.js +29 -29
  5. package/src/components/button/component.js +53 -53
  6. package/src/components/button/index.js +1 -1
  7. package/src/components/checkbox/index.js +3 -3
  8. package/src/components/datepicker/index.js +1 -1
  9. package/src/components/declarations/index.js +1 -1
  10. package/src/components/declarations/wrappers/input-declarations-wrapper.js +28 -7
  11. package/src/components/declarations/wrappers/list-declarations-wrapper.js +232 -232
  12. package/src/components/dropdown/commons/components/dropdown.js +21 -0
  13. package/src/components/dropdown/dropdown-edit/dropdown-edit.js +4 -1
  14. package/src/components/dropdown/dropdown-simple/dropdown.js +3 -1
  15. package/src/components/filter-description/component.js +42 -42
  16. package/src/components/icon/component.js +33 -33
  17. package/src/components/input/index.js +2 -2
  18. package/src/components/input/input-number.js +2 -1
  19. package/src/components/loop/index.js +1 -1
  20. package/src/components/loop-constructor/wrapper/body-component.js +13 -1
  21. package/src/components/radio/index.js +1 -1
  22. package/src/components/sequence/index.js +1 -1
  23. package/src/components/subsequence/index.js +1 -1
  24. package/src/components/suggester/check-store.js +70 -70
  25. package/src/components/suggester/components/suggester-content.js +42 -42
  26. package/src/components/suggester/components/suggester.js +43 -3
  27. package/src/components/suggester/idb-suggester.js +7 -1
  28. package/src/components/suggester/lunatic-suggester.js +1 -0
  29. package/src/components/suggester/suggester-wrapper.js +6 -0
  30. package/src/components/tooltip/response.js +52 -52
  31. package/src/stories/checkbox-boolean/data-forced.json +48 -48
  32. package/src/stories/icons/icons.stories.js +16 -16
  33. package/src/stories/questionnaire/kish.json +275 -0
  34. package/src/stories/questionnaire/logement-queen.json +23390 -23390
  35. package/src/stories/questionnaire/logement-s2.json +46027 -44536
  36. package/src/stories/questionnaire/questionnaire.stories.js +14 -2
  37. package/src/stories/utils/custom-lunatic.scss +23 -23
  38. package/src/stories/utils/orchestrator-split.js +4 -2
  39. package/src/stories/utils/orchestrator.js +4 -2
  40. package/src/tests/components/breadcrumb.spec.js +13 -13
  41. package/src/tests/components/button.spec.js +11 -11
  42. package/src/tests/components/checkbox-boolean.spec.js +45 -45
  43. package/src/tests/components/checkbox-group.spec.js +53 -53
  44. package/src/tests/components/checkbox-one.spec.js +32 -32
  45. package/src/tests/components/datepicker.spec.js +22 -22
  46. package/src/tests/components/declarations-wrappers/input-declarations-wrapper.spec.js +67 -67
  47. package/src/tests/components/declarations-wrappers/list-declarations-wrapper.spec.js +52 -52
  48. package/src/tests/components/declarations-wrappers/simple-declarations-wrapper.spec.js +21 -21
  49. package/src/tests/components/declarations.spec.js +46 -46
  50. package/src/tests/components/input.spec.js +18 -18
  51. package/src/tests/components/loops/loop-static.json +66 -66
  52. package/src/tests/components/loops/loop.json +258 -258
  53. package/src/tests/components/loops/loop.spec.js +30 -30
  54. package/src/tests/components/loops/roster-for-loop.spec.js +18 -18
  55. package/src/tests/components/progress-bar.spec.js +15 -15
  56. package/src/tests/components/radio.spec.js +27 -27
  57. package/src/tests/components/sequence.spec.js +9 -9
  58. package/src/tests/components/subsequence.spec.js +9 -9
  59. package/src/tests/components/table.spec.js +11 -11
  60. package/src/tests/components/textarea.spec.js +18 -18
  61. package/src/tests/components/tooltip.spec.js +25 -25
  62. package/src/tests/setup/setupTests.js +4 -4
  63. package/src/tests/utils/lib/alphabet.spec.js +36 -36
  64. package/src/tests/utils/lib/array.spec.js +22 -22
  65. package/src/tests/utils/lib/checkbox/group.spec.js +72 -72
  66. package/src/tests/utils/lib/decorator/title-decorator.spec.js +12 -12
  67. package/src/tests/utils/lib/input-number.spec.js +18 -18
  68. package/src/tests/utils/lib/items-positioning.spec.js +17 -17
  69. package/src/tests/utils/lib/label-position.spec.js +22 -22
  70. package/src/tests/utils/lib/loops/bindings.spec.js +75 -75
  71. package/src/tests/utils/lib/loops/shared.spec.js +82 -82
  72. package/src/tests/utils/lib/missing/missing.spec.js +74 -74
  73. package/src/tests/utils/lib/missing/mock.js +137 -137
  74. package/src/tests/utils/lib/pagination/shared.spec.js +42 -42
  75. package/src/tests/utils/lib/responses.spec.js +64 -64
  76. package/src/tests/utils/lib/style.spec.js +26 -26
  77. package/src/tests/utils/lib/tooltip/build-response.spec.js +95 -95
  78. package/src/tests/utils/lib/tooltip/content.spec.js +109 -109
  79. package/src/tests/utils/to-expose/handler/handler.spec.js +94 -94
  80. package/src/tests/utils/to-expose/handler/questionnaire.json +158 -158
  81. package/src/tests/utils/to-expose/handler/results/index.js +6 -6
  82. package/src/tests/utils/to-expose/handler/results/res-double.json +158 -158
  83. package/src/tests/utils/to-expose/handler/results/res-input-collected.json +158 -158
  84. package/src/tests/utils/to-expose/handler/results/res-input-edited.json +158 -158
  85. package/src/tests/utils/to-expose/handler/results/res-loop.json +158 -158
  86. package/src/tests/utils/to-expose/handler/results/res-matrix.json +158 -158
  87. package/src/tests/utils/to-expose/handler/results/res-responses.json +158 -158
  88. package/src/tests/utils/to-expose/hooks/use-lunatic.spec.js +46 -46
  89. package/src/tests/utils/to-expose/init-questionnaire/data.json +12 -12
  90. package/src/tests/utils/to-expose/init-questionnaire/init-questionnaire.spec.js +19 -19
  91. package/src/tests/utils/to-expose/interpret/interpret.spec.js +48 -48
  92. package/src/tests/utils/to-expose/state/questionnaire.json +61 -61
  93. package/src/tests/utils/to-expose/state/results.js +78 -78
  94. package/src/utils/lib/splitting.js +55 -23
  95. package/src/utils/lib/tooltip/build-response.js +41 -41
  96. package/src/utils/store-tools/create/index.js +1 -1
  97. package/src/utils/store-tools/create/update-store-info.js +26 -26
  98. package/src/utils/store-tools/index.js +5 -5
  99. package/src/utils/to-expose/handler.js +12 -14
  100. package/src/utils/to-expose/hooks/lunatic-split.js +44 -27
  101. package/src/utils/to-expose/hooks/lunatic.js +12 -5
@@ -1,52 +1,52 @@
1
- import React from 'react';
2
- import { shallow, mount } from 'enzyme';
3
- import { fakeSchedulers } from 'rxjs-marbles/jest';
4
- import { ListDeclarationsWrapper } from 'components/declarations/wrappers';
5
-
6
- const handleChange = jest.fn();
7
- const options = [
8
- { value: 'france', label: 'France' },
9
- { value: 'italy', label: 'Italy' },
10
- ];
11
- const response = { values: { COLLECTED: 'italy' } };
12
-
13
- const defaultProps = {
14
- id: 'id',
15
- label: 'label',
16
- handleChange,
17
- options,
18
- response,
19
- };
20
-
21
- describe('list-declarations-wrapper', () => {
22
- it('renders without crashing', () => {
23
- mount(<ListDeclarationsWrapper {...defaultProps} type="radio" />);
24
- mount(<ListDeclarationsWrapper {...defaultProps} type="checkbox" />);
25
- });
26
-
27
- it('returns management component', () => {
28
- shallow(
29
- <ListDeclarationsWrapper {...defaultProps} management type="radio" />
30
- );
31
- });
32
-
33
- it('renders firing useEffect', () => {
34
- const wrapper = mount(
35
- <ListDeclarationsWrapper {...defaultProps} type="radio" />
36
- );
37
- wrapper.setProps({ focused: true });
38
- });
39
-
40
- it('should trigger the change event', () => {
41
- fakeSchedulers((advance) => {
42
- const wrapper = shallow(
43
- <ListDeclarationsWrapper {...defaultProps} type="radio" />
44
- );
45
- wrapper.find('input').first().simulate('change');
46
- advance(400);
47
- wrapper.update();
48
- expect(handleChange).toHaveBeenCalled();
49
- expect(handleChange).toHaveBeenCalledWith({ '': 'france' });
50
- });
51
- });
52
- });
1
+ import React from 'react';
2
+ import { shallow, mount } from 'enzyme';
3
+ import { fakeSchedulers } from 'rxjs-marbles/jest';
4
+ import { ListDeclarationsWrapper } from 'components/declarations/wrappers';
5
+
6
+ const handleChange = jest.fn();
7
+ const options = [
8
+ { value: 'france', label: 'France' },
9
+ { value: 'italy', label: 'Italy' },
10
+ ];
11
+ const response = { values: { COLLECTED: 'italy' } };
12
+
13
+ const defaultProps = {
14
+ id: 'id',
15
+ label: 'label',
16
+ handleChange,
17
+ options,
18
+ response,
19
+ };
20
+
21
+ describe('list-declarations-wrapper', () => {
22
+ it('renders without crashing', () => {
23
+ mount(<ListDeclarationsWrapper {...defaultProps} type="radio" />);
24
+ mount(<ListDeclarationsWrapper {...defaultProps} type="checkbox" />);
25
+ });
26
+
27
+ it('returns management component', () => {
28
+ shallow(
29
+ <ListDeclarationsWrapper {...defaultProps} management type="radio" />
30
+ );
31
+ });
32
+
33
+ it('renders firing useEffect', () => {
34
+ const wrapper = mount(
35
+ <ListDeclarationsWrapper {...defaultProps} type="radio" />
36
+ );
37
+ wrapper.setProps({ focused: true });
38
+ });
39
+
40
+ it('should trigger the change event', () => {
41
+ fakeSchedulers((advance) => {
42
+ const wrapper = shallow(
43
+ <ListDeclarationsWrapper {...defaultProps} type="radio" />
44
+ );
45
+ wrapper.find('input').first().simulate('change');
46
+ advance(400);
47
+ wrapper.update();
48
+ expect(handleChange).toHaveBeenCalled();
49
+ expect(handleChange).toHaveBeenCalledWith({ '': 'france' });
50
+ });
51
+ });
52
+ });
@@ -1,21 +1,21 @@
1
- import React from 'react';
2
- import { shallow } from 'enzyme';
3
- import { SimpleDeclarationsWrapper } from 'components/declarations/wrappers';
4
-
5
- describe('simple-declarations-wrapper', () => {
6
- it('renders without crashing', () => {
7
- shallow(
8
- <SimpleDeclarationsWrapper id="module-id" label="Sequence">
9
- <span>{`test`}</span>
10
- </SimpleDeclarationsWrapper>
11
- );
12
- });
13
- it('renders with elements', () => {
14
- const wrapper = shallow(
15
- <SimpleDeclarationsWrapper id="module-id" label="Sequence">
16
- <span>{`test`}</span>
17
- </SimpleDeclarationsWrapper>
18
- );
19
- expect(wrapper.children()).toHaveLength(4);
20
- });
21
- });
1
+ import React from 'react';
2
+ import { shallow } from 'enzyme';
3
+ import { SimpleDeclarationsWrapper } from 'components/declarations/wrappers';
4
+
5
+ describe('simple-declarations-wrapper', () => {
6
+ it('renders without crashing', () => {
7
+ shallow(
8
+ <SimpleDeclarationsWrapper id="module-id" label="Sequence">
9
+ <span>{`test`}</span>
10
+ </SimpleDeclarationsWrapper>
11
+ );
12
+ });
13
+ it('renders with elements', () => {
14
+ const wrapper = shallow(
15
+ <SimpleDeclarationsWrapper id="module-id" label="Sequence">
16
+ <span>{`test`}</span>
17
+ </SimpleDeclarationsWrapper>
18
+ );
19
+ expect(wrapper.children()).toHaveLength(4);
20
+ });
21
+ });
@@ -1,46 +1,46 @@
1
- import React from 'react';
2
- import { shallow } from 'enzyme';
3
- import { Declarations } from 'components';
4
- import * as C from '../../constants';
5
-
6
- const defaultProps = { id: 'id', label: 'label' };
7
- const declarations = [
8
- {
9
- position: C.AFTER_QUESTION_TEXT,
10
- id: 'id1',
11
- label: 'label',
12
- declarationType: C.INSTRUCTION,
13
- },
14
- {
15
- position: C.BEFORE_QUESTION_TEXT,
16
- id: 'id2',
17
- label: 'label',
18
- declarationType: C.INSTRUCTION,
19
- },
20
- ];
21
-
22
- describe('declarations', () => {
23
- it('minimalist renders without crashing', () => {
24
- shallow(<Declarations {...defaultProps} />);
25
- });
26
- it('returns no declaration', () => {
27
- const wrapper = shallow(
28
- <Declarations
29
- {...defaultProps}
30
- type={C.DETACHABLE}
31
- declarations={declarations}
32
- />
33
- );
34
- expect(wrapper.find('.declarations-lunatic').children()).toHaveLength(0);
35
- });
36
- it('returns one declaration', () => {
37
- const wrapper = shallow(
38
- <Declarations
39
- {...defaultProps}
40
- type={C.AFTER_QUESTION_TEXT}
41
- declarations={declarations}
42
- />
43
- );
44
- expect(wrapper.find('.declarations-lunatic').children()).toHaveLength(1);
45
- });
46
- });
1
+ import React from 'react';
2
+ import { shallow } from 'enzyme';
3
+ import { Declarations } from 'components';
4
+ import * as C from '../../constants';
5
+
6
+ const defaultProps = { id: 'id', label: 'label' };
7
+ const declarations = [
8
+ {
9
+ position: C.AFTER_QUESTION_TEXT,
10
+ id: 'id1',
11
+ label: 'label',
12
+ declarationType: C.INSTRUCTION,
13
+ },
14
+ {
15
+ position: C.BEFORE_QUESTION_TEXT,
16
+ id: 'id2',
17
+ label: 'label',
18
+ declarationType: C.INSTRUCTION,
19
+ },
20
+ ];
21
+
22
+ describe('declarations', () => {
23
+ it('minimalist renders without crashing', () => {
24
+ shallow(<Declarations {...defaultProps} />);
25
+ });
26
+ it('returns no declaration', () => {
27
+ const wrapper = shallow(
28
+ <Declarations
29
+ {...defaultProps}
30
+ type={C.DETACHABLE}
31
+ declarations={declarations}
32
+ />
33
+ );
34
+ expect(wrapper.find('.declarations-lunatic').children()).toHaveLength(0);
35
+ });
36
+ it('returns one declaration', () => {
37
+ const wrapper = shallow(
38
+ <Declarations
39
+ {...defaultProps}
40
+ type={C.AFTER_QUESTION_TEXT}
41
+ declarations={declarations}
42
+ />
43
+ );
44
+ expect(wrapper.find('.declarations-lunatic').children()).toHaveLength(1);
45
+ });
46
+ });
@@ -1,18 +1,18 @@
1
- import React from 'react';
2
- import { shallow } from 'enzyme';
3
- import { Input } from 'components';
4
-
5
- const handleChange = jest.fn();
6
- const defaultProps = { id: 'id', label: 'label', handleChange };
7
-
8
- describe('input', () => {
9
- it('renders without crashing', () => {
10
- shallow(<Input {...defaultProps} />);
11
- });
12
- it('returns management component', () => {
13
- shallow(<Input {...defaultProps} label="label" management />);
14
- });
15
- it('returns disabled & readOnly component', () => {
16
- shallow(<Input {...defaultProps} label="label" disabled readOnly />);
17
- });
18
- });
1
+ import React from 'react';
2
+ import { shallow } from 'enzyme';
3
+ import { Input } from 'components';
4
+
5
+ const handleChange = jest.fn();
6
+ const defaultProps = { id: 'id', label: 'label', handleChange };
7
+
8
+ describe('input', () => {
9
+ it('renders without crashing', () => {
10
+ shallow(<Input {...defaultProps} />);
11
+ });
12
+ it('returns management component', () => {
13
+ shallow(<Input {...defaultProps} label="label" management />);
14
+ });
15
+ it('returns disabled & readOnly component', () => {
16
+ shallow(<Input {...defaultProps} label="label" disabled readOnly />);
17
+ });
18
+ });
@@ -1,66 +1,66 @@
1
- {
2
- "components": [
3
- {
4
- "id": "k3ylzyo4",
5
- "componentType": "Loop",
6
- "mandatory": true,
7
- "positioning": "HORIZONTAL",
8
- "label": "\"Ajouter un individu\"",
9
- "conditionFilter": { "value": "true" },
10
- "bindingDependencies": ["PRENOM", "AGE"],
11
- "lines": { "min": "3", "max": "3" },
12
- "components": [
13
- {
14
- "componentType": "Input",
15
- "label": "Prénom",
16
- "conditionFilter": { "value": "true" },
17
- "maxLength": 30,
18
- "bindingDependencies": ["PRENOM"],
19
- "id": "k3yn2qmr",
20
- "response": {
21
- "name": "PRENOM"
22
- }
23
- },
24
- {
25
- "componentType": "InputNumber",
26
- "label": "Age",
27
- "conditionFilter": { "value": "true" },
28
- "min": 0,
29
- "max": 120,
30
- "decimals": 0,
31
- "bindingDependencies": ["AGE"],
32
- "id": "k3ymundt",
33
- "response": {
34
- "name": "AGE"
35
- }
36
- }
37
- ]
38
- }
39
- ],
40
- "variables": [
41
- {
42
- "variableType": "COLLECTED",
43
- "name": "PRENOM",
44
- "componentRef": "k3ylzyo4",
45
- "values": {
46
- "PREVIOUS": [null],
47
- "COLLECTED": ["Marco"],
48
- "FORCED": [null],
49
- "EDITED": [null],
50
- "INPUTED": [null]
51
- }
52
- },
53
- {
54
- "variableType": "COLLECTED",
55
- "name": "AGE",
56
- "componentRef": "k3ylzyo4",
57
- "values": {
58
- "PREVIOUS": [null],
59
- "COLLECTED": ["28"],
60
- "FORCED": [null],
61
- "EDITED": [null],
62
- "INPUTED": [null]
63
- }
64
- }
65
- ]
66
- }
1
+ {
2
+ "components": [
3
+ {
4
+ "id": "k3ylzyo4",
5
+ "componentType": "Loop",
6
+ "mandatory": true,
7
+ "positioning": "HORIZONTAL",
8
+ "label": "\"Ajouter un individu\"",
9
+ "conditionFilter": { "value": "true" },
10
+ "bindingDependencies": ["PRENOM", "AGE"],
11
+ "lines": { "min": "3", "max": "3" },
12
+ "components": [
13
+ {
14
+ "componentType": "Input",
15
+ "label": "Prénom",
16
+ "conditionFilter": { "value": "true" },
17
+ "maxLength": 30,
18
+ "bindingDependencies": ["PRENOM"],
19
+ "id": "k3yn2qmr",
20
+ "response": {
21
+ "name": "PRENOM"
22
+ }
23
+ },
24
+ {
25
+ "componentType": "InputNumber",
26
+ "label": "Age",
27
+ "conditionFilter": { "value": "true" },
28
+ "min": 0,
29
+ "max": 120,
30
+ "decimals": 0,
31
+ "bindingDependencies": ["AGE"],
32
+ "id": "k3ymundt",
33
+ "response": {
34
+ "name": "AGE"
35
+ }
36
+ }
37
+ ]
38
+ }
39
+ ],
40
+ "variables": [
41
+ {
42
+ "variableType": "COLLECTED",
43
+ "name": "PRENOM",
44
+ "componentRef": "k3ylzyo4",
45
+ "values": {
46
+ "PREVIOUS": [null],
47
+ "COLLECTED": ["Marco"],
48
+ "FORCED": [null],
49
+ "EDITED": [null],
50
+ "INPUTED": [null]
51
+ }
52
+ },
53
+ {
54
+ "variableType": "COLLECTED",
55
+ "name": "AGE",
56
+ "componentRef": "k3ylzyo4",
57
+ "values": {
58
+ "PREVIOUS": [null],
59
+ "COLLECTED": ["28"],
60
+ "FORCED": [null],
61
+ "EDITED": [null],
62
+ "INPUTED": [null]
63
+ }
64
+ }
65
+ ]
66
+ }