@inseefr/lunatic 3.4.13 → 3.4.14

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.
@@ -8,43 +8,53 @@ const is_object_1 = require("../../utils/is-object");
8
8
  */
9
9
  function usePageHasResponse(components, executeExpression) {
10
10
  return (0, react_1.useCallback)(() => {
11
- if (!Array.isArray(components) || components.length === 0) {
11
+ return hasOneResponse(components, executeExpression);
12
+ }, [components, executeExpression]);
13
+ }
14
+ function hasOneResponse(components, executeExpression) {
15
+ if (!Array.isArray(components) || components.length === 0) {
16
+ return true;
17
+ }
18
+ for (const component of components) {
19
+ // Some components are considered as "filled" by default
20
+ // We assume they are not in the same page has other components
21
+ if (['PairwiseLinks', 'Roundabout', 'Sequence', 'Subsequence'].includes(component.componentType ?? '')) {
12
22
  return true;
13
23
  }
14
- for (const component of components) {
15
- // Some components are considered as "filled" by default
16
- // We assume they are not in the same page has other components
17
- if (['PairwiseLinks', 'Roundabout', 'Sequence', 'Subsequence'].includes(component.componentType ?? '')) {
18
- return true;
19
- }
20
- // We have a missing response for this component
21
- if ('missingResponse' in component &&
22
- component.missingResponse &&
23
- component.missingResponse.value) {
24
- return true;
25
- }
26
- // For Table, we have to extract components from its body and apply isSubComponentsEmpty function
27
- if (component.componentType === 'Table') {
28
- // Body is array for array (row), each "cell" could be an Label or Component, so we filter array.
29
- const childrenComponent = component.body.reduce((_, row) => {
30
- const componentsInRow = row.filter((cell) => (0, is_object_1.isObject)(cell) && 'componentType' in cell);
31
- return [..._, ...componentsInRow];
32
- }, []);
33
- return !isSubComponentsEmpty(childrenComponent, executeExpression);
34
- }
35
- // We found a value in one of the root component
36
- if ('value' in component && !isEmpty(component.value)) {
37
- return true;
38
- }
39
- // For rosterForLoop we need to inspect child components
40
- if ('components' in component &&
41
- Array.isArray(component.components) &&
42
- !isSubComponentsEmpty(component.components, executeExpression)) {
43
- return true;
44
- }
24
+ // We have a missing response for this component
25
+ if ('missingResponse' in component &&
26
+ component.missingResponse &&
27
+ component.missingResponse.value) {
28
+ return true;
45
29
  }
46
- return false;
47
- }, [components, executeExpression]);
30
+ // For Table, we have to extract components from its body and apply isSubComponentsEmpty function
31
+ if (component.componentType === 'Table') {
32
+ // Body is array for array (row), each "cell" could be an Label or Component, so we filter array.
33
+ const childrenComponent = component.body.reduce((_, row) => {
34
+ const componentsInRow = row.filter((cell) => (0, is_object_1.isObject)(cell) && 'componentType' in cell);
35
+ return [..._, ...componentsInRow];
36
+ }, []);
37
+ return !isSubComponentsEmpty(childrenComponent, executeExpression);
38
+ }
39
+ // We found a value in one of the root component
40
+ if ('value' in component && !isEmpty(component.value)) {
41
+ return true;
42
+ }
43
+ // For Question, we need to check subcomponents
44
+ if (component.componentType === 'Question' &&
45
+ 'components' in component &&
46
+ Array.isArray(component.components) &&
47
+ hasOneResponse(component.components, executeExpression)) {
48
+ return true;
49
+ }
50
+ // For rosterForLoop we need to inspect child components
51
+ if ('components' in component &&
52
+ Array.isArray(component.components) &&
53
+ !isSubComponentsEmpty(component.components, executeExpression)) {
54
+ return true;
55
+ }
56
+ }
57
+ return false;
48
58
  }
49
59
  /**
50
60
  * Check if a value is empty.
@@ -1 +1 @@
1
- {"version":3,"file":"use-page-has-response.js","sourceRoot":"","sources":["../../src/use-lunatic/hooks/use-page-has-response.ts"],"names":[],"mappings":";;AAQA,gDA0DC;AAlED,iCAAoC;AACpC,qDAAiD;AAIjD;;GAEG;AACH,SAAgB,kBAAkB,CACjC,UAAmC,EACnC,iBAA2D;IAE3D,OAAO,IAAA,mBAAW,EAAC,GAAG,EAAE;QACvB,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,UAAU,CAAC,IAAI,UAAU,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAC3D,OAAO,IAAI,CAAC;QACb,CAAC;QAED,KAAK,MAAM,SAAS,IAAI,UAAU,EAAE,CAAC;YACpC,wDAAwD;YACxD,+DAA+D;YAC/D,IACC,CAAC,eAAe,EAAE,YAAY,EAAE,UAAU,EAAE,aAAa,CAAC,CAAC,QAAQ,CAClE,SAAS,CAAC,aAAa,IAAI,EAAE,CAC7B,EACA,CAAC;gBACF,OAAO,IAAI,CAAC;YACb,CAAC;YAED,gDAAgD;YAChD,IACC,iBAAiB,IAAI,SAAS;gBAC9B,SAAS,CAAC,eAAe;gBACzB,SAAS,CAAC,eAAe,CAAC,KAAK,EAC9B,CAAC;gBACF,OAAO,IAAI,CAAC;YACb,CAAC;YAED,iGAAiG;YACjG,IAAI,SAAS,CAAC,aAAa,KAAK,OAAO,EAAE,CAAC;gBACzC,iGAAiG;gBACjG,MAAM,iBAAiB,GAAG,SAAS,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,GAAG,EAAE,EAAE;oBAC1D,MAAM,eAAe,GAAG,GAAG,CAAC,MAAM,CACjC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAA,oBAAQ,EAAC,IAAI,CAAC,IAAI,eAAe,IAAI,IAAI,CACnD,CAAC;oBACF,OAAO,CAAC,GAAG,CAAC,EAAE,GAAG,eAAe,CAAC,CAAC;gBACnC,CAAC,EAAE,EAA6B,CAAC,CAAC;gBAClC,OAAO,CAAC,oBAAoB,CAAC,iBAAiB,EAAE,iBAAiB,CAAC,CAAC;YACpE,CAAC;YAED,gDAAgD;YAChD,IAAI,OAAO,IAAI,SAAS,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC;gBACvD,OAAO,IAAI,CAAC;YACb,CAAC;YAED,wDAAwD;YACxD,IACC,YAAY,IAAI,SAAS;gBACzB,KAAK,CAAC,OAAO,CAAC,SAAS,CAAC,UAAU,CAAC;gBACnC,CAAC,oBAAoB,CAAC,SAAS,CAAC,UAAU,EAAE,iBAAiB,CAAC,EAC7D,CAAC;gBACF,OAAO,IAAI,CAAC;YACb,CAAC;QACF,CAAC;QAED,OAAO,KAAK,CAAC;IACd,CAAC,EAAE,CAAC,UAAU,EAAE,iBAAiB,CAAC,CAAC,CAAC;AACrC,CAAC;AAED;;;;;GAKG;AACH,SAAS,OAAO,CAAC,KAAc;IAC9B,wCAAwC;IACxC,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;QAC1B,sCAAsC;QACtC,OAAO,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,KAAK,SAAS,CAAC;IACrD,CAAC;IACD,iCAAiC;IACjC,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,IAAI,EAAE,CAAC;QACjD,OAAO,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC;IACtC,CAAC;IACD,OAAO,CAAC,KAAK,IAAI,EAAE,CAAC,KAAK,EAAE,IAAI,KAAK,KAAK,KAAK,CAAC;AAChD,CAAC;AAED;;GAEG;AACH,SAAS,oBAAoB,CAC5B,UAAkE,EAClE,iBAA2D;IAE3D,KAAK,MAAM,SAAS,IAAI,UAAU,EAAE,CAAC;QACpC,IAAI,WAAW,IAAI,SAAS,IAAI,KAAK,CAAC,OAAO,CAAC,SAAS,CAAC,SAAS,CAAC,EAAE,CAAC;YACpE,KAAK,MAAM,QAAQ,IAAI,SAAS,CAAC,SAAS,EAAE,CAAC;gBAC5C,IACC,CAAC,OAAO,CACP,iBAAiB,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,KAAK,EAAE,QAAQ,CAAC,QAAQ,EAAE,IAAI,EAAE,CAAC,CAClE,EACA,CAAC;oBACF,OAAO,KAAK,CAAC;gBACd,CAAC;YACF,CAAC;QACF,CAAC;QACD,IACC,UAAU,IAAI,SAAS;YACvB,SAAS,CAAC,QAAQ;YAClB,OAAO,SAAS,CAAC,QAAQ,KAAK,QAAQ;YACtC,MAAM,IAAI,SAAS,CAAC,QAAQ;YAC5B,OAAO,SAAS,CAAC,QAAQ,CAAC,IAAI,KAAK,QAAQ;YAC3C,CAAC,OAAO,CACP,iBAAiB,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,KAAK,EAAE,SAAS,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC,CAClE,EACA,CAAC;YACF,OAAO,KAAK,CAAC;QACd,CAAC;IACF,CAAC;IAED,OAAO,IAAI,CAAC;AACb,CAAC"}
1
+ {"version":3,"file":"use-page-has-response.js","sourceRoot":"","sources":["../../src/use-lunatic/hooks/use-page-has-response.ts"],"names":[],"mappings":"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"}
@@ -188,6 +188,7 @@ export declare function getComponentTypeProps(component: DeepTranslateExpression
188
188
  components: import("../..").LunaticComponentProps[];
189
189
  componentType?: "Question";
190
190
  iteration?: number;
191
+ value: Record<string, unknown>;
191
192
  } & {
192
193
  conditionFilter?: boolean;
193
194
  }) | (import("../../components/type").LunaticBaseProps<string | null> & import("../..").LunaticExtraProps & {