@inseefr/lunatic 3.6.10 → 3.6.11

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.
@@ -29,13 +29,28 @@ export function getValueProp(component, args) {
29
29
  */
30
30
  function getChildResponseValues(components, variables) {
31
31
  return Object.fromEntries(components.flatMap((c) => {
32
- if ('response' in c) {
33
- return [[c.response.name, variables.get(c.response.name)]];
32
+ var _a;
33
+ const entries = [];
34
+ // Handle main response
35
+ if ('response' in c && ((_a = c.response) === null || _a === void 0 ? void 0 : _a.name)) {
36
+ entries.push([c.response.name, variables.get(c.response.name)]);
34
37
  }
35
- if ('components' in c) {
36
- return Object.entries(getChildResponseValues(c.components, variables));
38
+ // Handle optionResponses safely
39
+ if (c.componentType === 'Suggester' && c.optionResponses) {
40
+ for (const optionResponse of c.optionResponses) {
41
+ if (optionResponse === null || optionResponse === void 0 ? void 0 : optionResponse.name) {
42
+ entries.push([
43
+ optionResponse.name,
44
+ variables.get(optionResponse.name),
45
+ ]);
46
+ }
47
+ }
37
48
  }
38
- return [];
49
+ // Handle nested components
50
+ if ('components' in c && Array.isArray(c.components)) {
51
+ entries.push(...Object.entries(getChildResponseValues(c.components, variables)));
52
+ }
53
+ return entries;
39
54
  }));
40
55
  }
41
56
  //# sourceMappingURL=propValue.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"propValue.js","sourceRoot":"","sources":["../../../src/use-lunatic/props/propValue.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAC;AAC9C,OAAO,EAAE,WAAW,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AAIjE,MAAM,UAAU,YAAY,CAC3B,SAAqC,EACrC,IAGC;;IAED,IAAI,SAAS,GAAG,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC;QAC7C,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC;QACxB,CAAC,CAAC,SAAS,CAAC;IACb,IAAI,IAAI,CAAC,KAAK,CAAC,eAAe,EAAE,CAAC;QAChC,SAAS,GAAG,IAAI,CAAC,KAAK,CAAC,eAAe,CAAC;IACxC,CAAC;IACD,IAAI,YAAY,CAAC,SAAS,CAAC,EAAE,CAAC;QAC7B,OAAO,MAAM,CAAC,WAAW,CACxB,MAAA,MAAA,SAAS,CAAC,SAAS,0CAAE,GAAG,CAAC,CAAC,EAAE,QAAQ,EAAE,EAAE,EAAE,CAAC;YAC1C,QAAQ,CAAC,IAAI;YACb,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,QAAQ,CAAC,IAAI,EAAE,SAAS,CAAC;SAC5C,CAAC,mCAAI,EAAE,CACR,CAAC;IACH,CAAC;IACD,IAAI,WAAW,CAAC,SAAS,CAAC,EAAE,CAAC;QAC5B,OAAO,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,SAAS,CAAC,QAAQ,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC;IAC/D,CAAC;IACD,4EAA4E;IAC5E,IACC,SAAS,CAAC,aAAa,KAAK,MAAM;QAClC,SAAS,CAAC,aAAa,KAAK,eAAe,EAC1C,CAAC;QACF,OAAO,sBAAsB,CAAC,SAAS,CAAC,UAAU,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC;IACrE,CAAC;IACD,OAAO,IAAI,CAAC;AACb,CAAC;AAED;;GAEG;AACH,SAAS,sBAAsB,CAC9B,UAAwC,EACxC,SAAgC;IAEhC,OAAO,MAAM,CAAC,WAAW,CACxB,UAAU,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE;QACxB,IAAI,UAAU,IAAI,CAAC,EAAE,CAAC;YACrB,OAAO,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,IAAI,EAAE,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAC5D,CAAC;QACD,IAAI,YAAY,IAAI,CAAC,EAAE,CAAC;YACvB,OAAO,MAAM,CAAC,OAAO,CAAC,sBAAsB,CAAC,CAAC,CAAC,UAAU,EAAE,SAAS,CAAC,CAAC,CAAC;QACxE,CAAC;QACD,OAAO,EAAE,CAAC;IACX,CAAC,CAAC,CACF,CAAC;AACH,CAAC"}
1
+ {"version":3,"file":"propValue.js","sourceRoot":"","sources":["../../../src/use-lunatic/props/propValue.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAC;AAC9C,OAAO,EAAE,WAAW,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AAIjE,MAAM,UAAU,YAAY,CAC3B,SAAqC,EACrC,IAGC;;IAED,IAAI,SAAS,GAAG,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC;QAC7C,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC;QACxB,CAAC,CAAC,SAAS,CAAC;IACb,IAAI,IAAI,CAAC,KAAK,CAAC,eAAe,EAAE,CAAC;QAChC,SAAS,GAAG,IAAI,CAAC,KAAK,CAAC,eAAe,CAAC;IACxC,CAAC;IACD,IAAI,YAAY,CAAC,SAAS,CAAC,EAAE,CAAC;QAC7B,OAAO,MAAM,CAAC,WAAW,CACxB,MAAA,MAAA,SAAS,CAAC,SAAS,0CAAE,GAAG,CAAC,CAAC,EAAE,QAAQ,EAAE,EAAE,EAAE,CAAC;YAC1C,QAAQ,CAAC,IAAI;YACb,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,QAAQ,CAAC,IAAI,EAAE,SAAS,CAAC;SAC5C,CAAC,mCAAI,EAAE,CACR,CAAC;IACH,CAAC;IACD,IAAI,WAAW,CAAC,SAAS,CAAC,EAAE,CAAC;QAC5B,OAAO,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,SAAS,CAAC,QAAQ,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC;IAC/D,CAAC;IACD,4EAA4E;IAC5E,IACC,SAAS,CAAC,aAAa,KAAK,MAAM;QAClC,SAAS,CAAC,aAAa,KAAK,eAAe,EAC1C,CAAC;QACF,OAAO,sBAAsB,CAAC,SAAS,CAAC,UAAU,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC;IACrE,CAAC;IACD,OAAO,IAAI,CAAC;AACb,CAAC;AAED;;GAEG;AACH,SAAS,sBAAsB,CAC9B,UAAwC,EACxC,SAAgC;IAEhC,OAAO,MAAM,CAAC,WAAW,CACxB,UAAU,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE;;QACxB,MAAM,OAAO,GAAwB,EAAE,CAAC;QAExC,uBAAuB;QACvB,IAAI,UAAU,IAAI,CAAC,KAAI,MAAA,CAAC,CAAC,QAAQ,0CAAE,IAAI,CAAA,EAAE,CAAC;YACzC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,IAAI,EAAE,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QACjE,CAAC;QAED,gCAAgC;QAChC,IAAI,CAAC,CAAC,aAAa,KAAK,WAAW,IAAI,CAAC,CAAC,eAAe,EAAE,CAAC;YAC1D,KAAK,MAAM,cAAc,IAAI,CAAC,CAAC,eAAe,EAAE,CAAC;gBAChD,IAAI,cAAc,aAAd,cAAc,uBAAd,cAAc,CAAE,IAAI,EAAE,CAAC;oBAC1B,OAAO,CAAC,IAAI,CAAC;wBACZ,cAAc,CAAC,IAAI;wBACnB,SAAS,CAAC,GAAG,CAAC,cAAc,CAAC,IAAI,CAAC;qBAClC,CAAC,CAAC;gBACJ,CAAC;YACF,CAAC;QACF,CAAC;QAED,2BAA2B;QAC3B,IAAI,YAAY,IAAI,CAAC,IAAI,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,UAAU,CAAC,EAAE,CAAC;YACtD,OAAO,CAAC,IAAI,CACX,GAAG,MAAM,CAAC,OAAO,CAAC,sBAAsB,CAAC,CAAC,CAAC,UAAU,EAAE,SAAS,CAAC,CAAC,CAClE,CAAC;QACH,CAAC;QAED,OAAO,OAAO,CAAC;IAChB,CAAC,CAAC,CACF,CAAC;AACH,CAAC"}
@@ -97,7 +97,7 @@ describe('fillComponentValue', () => {
97
97
  });
98
98
  });
99
99
  });
100
- describe('RosterForLoop', () => {
100
+ describe('RosterForLoop with suggester having optionResponses', () => {
101
101
  const rosterForLoopComponent = {
102
102
  id: 'loop-prenom',
103
103
  componentType: 'RosterForLoop',
@@ -131,17 +131,35 @@ describe('fillComponentValue', () => {
131
131
  name: 'PRENOM',
132
132
  },
133
133
  },
134
+ {
135
+ id: 'commune',
136
+ response: {
137
+ name: 'COMMUNE',
138
+ },
139
+ storeName: 'nomenclature-commune',
140
+ componentType: 'Suggester',
141
+ optionResponses: [
142
+ {
143
+ name: 'LABEL_COMMUNE',
144
+ attribute: 'label_attribute',
145
+ },
146
+ ],
147
+ },
134
148
  ],
135
149
  };
136
150
  it('should correctly extract values from nested responses as arrays', () => {
137
151
  const values = {
138
152
  PRENOM: ['Alice', 'Bob', 'Charlie'],
153
+ COMMUNE: ['59000', '25000', '54000'],
154
+ LABEL_COMMUNE: ['Lille', 'Besançon', 'Nancy'],
139
155
  };
140
156
  expectFilledComponent(rosterForLoopComponent, values).toEqual(values);
141
157
  });
142
158
  it('should return null for missing responses', () => {
143
159
  expectFilledComponent(rosterForLoopComponent).toEqual({
144
160
  PRENOM: null,
161
+ COMMUNE: null,
162
+ LABEL_COMMUNE: null,
145
163
  });
146
164
  });
147
165
  });
@@ -1 +1 @@
1
- {"version":3,"file":"propValue.spec.js","sourceRoot":"","sources":["../../../src/use-lunatic/props/propValue.spec.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"propValue.spec.js","sourceRoot":"","sources":["../../../src/use-lunatic/props/propValue.spec.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@inseefr/lunatic",
3
- "version": "3.6.10",
3
+ "version": "3.6.11",
4
4
  "description": "Library of questionnaire components",
5
5
  "repository": {
6
6
  "type": "git",
@@ -116,7 +116,7 @@ describe('fillComponentValue', () => {
116
116
  });
117
117
  });
118
118
 
119
- describe('RosterForLoop', () => {
119
+ describe('RosterForLoop with suggester having optionResponses', () => {
120
120
  const rosterForLoopComponent = {
121
121
  id: 'loop-prenom',
122
122
  componentType: 'RosterForLoop',
@@ -150,12 +150,28 @@ describe('fillComponentValue', () => {
150
150
  name: 'PRENOM',
151
151
  },
152
152
  },
153
+ {
154
+ id: 'commune',
155
+ response: {
156
+ name: 'COMMUNE',
157
+ },
158
+ storeName: 'nomenclature-commune',
159
+ componentType: 'Suggester',
160
+ optionResponses: [
161
+ {
162
+ name: 'LABEL_COMMUNE',
163
+ attribute: 'label_attribute',
164
+ },
165
+ ],
166
+ },
153
167
  ],
154
168
  } as any as LunaticComponentDefinition<'RosterForLoop'>;
155
169
 
156
170
  it('should correctly extract values from nested responses as arrays', () => {
157
171
  const values = {
158
172
  PRENOM: ['Alice', 'Bob', 'Charlie'],
173
+ COMMUNE: ['59000', '25000', '54000'],
174
+ LABEL_COMMUNE: ['Lille', 'Besançon', 'Nancy'],
159
175
  };
160
176
 
161
177
  expectFilledComponent(rosterForLoopComponent, values).toEqual(values);
@@ -164,6 +180,8 @@ describe('fillComponentValue', () => {
164
180
  it('should return null for missing responses', () => {
165
181
  expectFilledComponent(rosterForLoopComponent).toEqual({
166
182
  PRENOM: null,
183
+ COMMUNE: null,
184
+ LABEL_COMMUNE: null,
167
185
  });
168
186
  });
169
187
  });
@@ -46,13 +46,33 @@ function getChildResponseValues(
46
46
  ): Record<string, unknown> {
47
47
  return Object.fromEntries(
48
48
  components.flatMap((c) => {
49
- if ('response' in c) {
50
- return [[c.response.name, variables.get(c.response.name)]];
49
+ const entries: [string, unknown][] = [];
50
+
51
+ // Handle main response
52
+ if ('response' in c && c.response?.name) {
53
+ entries.push([c.response.name, variables.get(c.response.name)]);
51
54
  }
52
- if ('components' in c) {
53
- return Object.entries(getChildResponseValues(c.components, variables));
55
+
56
+ // Handle optionResponses safely
57
+ if (c.componentType === 'Suggester' && c.optionResponses) {
58
+ for (const optionResponse of c.optionResponses) {
59
+ if (optionResponse?.name) {
60
+ entries.push([
61
+ optionResponse.name,
62
+ variables.get(optionResponse.name),
63
+ ]);
64
+ }
65
+ }
54
66
  }
55
- return [];
67
+
68
+ // Handle nested components
69
+ if ('components' in c && Array.isArray(c.components)) {
70
+ entries.push(
71
+ ...Object.entries(getChildResponseValues(c.components, variables))
72
+ );
73
+ }
74
+
75
+ return entries;
56
76
  })
57
77
  );
58
78
  }