@inseefr/lunatic 3.11.2 → 3.12.0-rc.ucq-options-variable.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 (33) hide show
  1. package/esm/type.source.d.ts +17 -9
  2. package/esm/use-lunatic/commons/fill-components/fill-component-expressions.d.ts +1 -1
  3. package/esm/use-lunatic/commons/fill-components/fill-component-expressions.js.map +1 -1
  4. package/esm/use-lunatic/commons/fill-components/fill-components.js +10 -2
  5. package/esm/use-lunatic/commons/fill-components/fill-components.js.map +1 -1
  6. package/esm/use-lunatic/props/propOptions.d.ts +9 -1
  7. package/esm/use-lunatic/props/propOptions.js +56 -1
  8. package/esm/use-lunatic/props/propOptions.js.map +1 -1
  9. package/esm/use-lunatic/props/propOptions.spec.js +220 -56
  10. package/esm/use-lunatic/props/propOptions.spec.js.map +1 -1
  11. package/package.json +4 -1
  12. package/src/stories/checkbox/checkbox.stories.tsx +13 -0
  13. package/src/stories/checkbox/sourceOneDynamicOptions.json +496 -0
  14. package/src/stories/dropdown/dropdown.stories.tsx +12 -0
  15. package/src/stories/dropdown/sourceDynamicOptions.json +496 -0
  16. package/src/stories/radio/radio.stories.tsx +13 -0
  17. package/src/stories/radio/sourceDynamicOptions.json +496 -0
  18. package/src/type.source.ts +19 -9
  19. package/src/use-lunatic/commons/fill-components/fill-component-expressions.ts +2 -1
  20. package/src/use-lunatic/commons/fill-components/fill-components.ts +9 -10
  21. package/src/use-lunatic/props/propOptions.spec.ts +217 -147
  22. package/src/use-lunatic/props/propOptions.ts +99 -10
  23. package/tsconfig.build.tsbuildinfo +1 -1
  24. package/type.source.d.ts +17 -9
  25. package/use-lunatic/commons/fill-components/fill-component-expressions.d.ts +1 -1
  26. package/use-lunatic/commons/fill-components/fill-component-expressions.js.map +1 -1
  27. package/use-lunatic/commons/fill-components/fill-components.js +9 -1
  28. package/use-lunatic/commons/fill-components/fill-components.js.map +1 -1
  29. package/use-lunatic/props/propOptions.d.ts +9 -1
  30. package/use-lunatic/props/propOptions.js +57 -2
  31. package/use-lunatic/props/propOptions.js.map +1 -1
  32. package/use-lunatic/props/propOptions.spec.js +217 -55
  33. package/use-lunatic/props/propOptions.spec.js.map +1 -1
package/type.source.d.ts CHANGED
@@ -124,8 +124,8 @@ export type ComponentCheckboxBooleanDefinition = ComponentDefinitionBaseWithResp
124
124
  export type ComponentRadioDefinition = ComponentDefinitionBaseWithResponse & {
125
125
  componentType: 'Radio';
126
126
  orientation?: 'horizontal' | 'vertical';
127
- options: OptionsWithDetail;
128
- };
127
+ } & ComponentRadioDefinition1;
128
+ export type ComponentRadioDefinition1 = StaticOptions | OptionsFromVariable;
129
129
  export type OptionsWithDetail = {
130
130
  value: string | boolean;
131
131
  label: VTLExpression;
@@ -140,16 +140,16 @@ export type OptionsWithDetail = {
140
140
  }[];
141
141
  export type ComponentDropdownDefinition = ComponentDefinitionBaseWithResponse & {
142
142
  componentType: 'Dropdown';
143
- options: Options;
144
- };
143
+ } & ComponentDropdownDefinition1;
144
+ export type ComponentDropdownDefinition1 = StaticOptions | OptionsFromVariable;
145
145
  export type ComponentQuestionDefinition = ComponentDefinitionBase & {
146
146
  componentType: 'Question';
147
147
  components: ComponentDefinition[];
148
148
  };
149
149
  export type ComponentCheckboxOneDefinition = ComponentDefinitionBaseWithResponse & {
150
150
  componentType: 'CheckboxOne';
151
- options: OptionsWithDetail;
152
- };
151
+ } & ComponentCheckboxOneDefinition1;
152
+ export type ComponentCheckboxOneDefinition1 = StaticOptions | OptionsFromVariable;
153
153
  export type ComponentSuggesterDefinition = ComponentDefinitionBaseWithResponse & {
154
154
  componentType: 'Suggester';
155
155
  /**
@@ -186,11 +186,12 @@ export type ComponentPairWiseLinksDefinition = ComponentDefinitionBase & {
186
186
  };
187
187
  };
188
188
  sourceVariables?: {
189
- /** Name of the variable containing the name of the respondent */
189
+ /**
190
+ * Name of the variable containing the name of the respondent
191
+ */
190
192
  name?: string;
191
193
  /**
192
- * Name of the variable containing the gender of the respondent
193
- * (value of variable -> 1:male, 2: female)
194
+ * Name of the variable containing the sex/gender of the respondent (value of variable -> 1: man, 2: woman)
194
195
  */
195
196
  gender?: string;
196
197
  };
@@ -375,6 +376,13 @@ export type ControlDefinition = {
375
376
  export type ResponseDefinition = {
376
377
  name: string;
377
378
  };
379
+ export type StaticOptions = {
380
+ options: OptionsWithDetail;
381
+ };
382
+ export type OptionsFromVariable = {
383
+ optionSource: string;
384
+ optionFilter?: VTLExpression;
385
+ };
378
386
  export type ComponentText = {
379
387
  componentType: 'Text';
380
388
  label: VTLExpression;
@@ -1,6 +1,6 @@
1
1
  import type { ReactNode } from 'react';
2
2
  import type { LunaticComponentDefinition, LunaticExpression, LunaticReducerState } from '../../type';
3
- type UntranslatedProperties = 'expressions' | 'sections' | 'body' | 'item' | 'controls' | 'conditionFilter' | 'conditionReadOnly' | 'components';
3
+ type UntranslatedProperties = 'expressions' | 'sections' | 'body' | 'item' | 'controls' | 'conditionFilter' | 'conditionReadOnly' | 'components' | 'optionFilter';
4
4
  export type DeepTranslateExpression<T> = T extends LunaticExpression ? ReactNode : T extends (infer ElementType)[] ? DeepTranslateExpression<ElementType>[] : T extends {
5
5
  [k: string | number]: unknown;
6
6
  } ? {
@@ -1 +1 @@
1
- {"version":3,"file":"fill-component-expressions.js","sourceRoot":"","sources":["../../../src/use-lunatic/commons/fill-components/fill-component-expressions.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"fill-component-expressions.js","sourceRoot":"","sources":["../../../src/use-lunatic/commons/fill-components/fill-component-expressions.ts"],"names":[],"mappings":"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"}
@@ -47,7 +47,15 @@ parentReadOnly) => {
47
47
  missingResponse: (0, propMissingResponse_1.getMissingResponseProp)(component, state),
48
48
  management: state.management,
49
49
  iterations: (0, propIterations_1.getIterationsProp)(component, state),
50
- options: (0, propOptions_1.getOptionsProp)(interpretedProps, state.variables, state.handleChanges, state.pager.iteration, value, state.logger, state.disableFilters, shouldBeFiltered),
50
+ options: (0, propOptions_1.computeOptionsFromComponent)(interpretedProps, {
51
+ variables: state.variables,
52
+ handleChanges: state.handleChanges,
53
+ pagerIteration: state.pager.iteration,
54
+ value,
55
+ logger: state.logger,
56
+ disableFilters: state.disableFilters,
57
+ shouldParentBeFiltered: shouldBeFiltered,
58
+ }),
51
59
  ...(0, getComponentTypeProps_1.getComponentTypeProps)(interpretedProps, state),
52
60
  // This is too dynamic to be typed correctly, so we allow any here
53
61
  };
@@ -1 +1 @@
1
- {"version":3,"file":"fill-components.js","sourceRoot":"","sources":["../../../src/use-lunatic/commons/fill-components/fill-components.ts"],"names":[],"mappings":";;;AAoGA,wCA2CC;AAxID,6EAAwE;AACxE,6EAA0E;AAE1E,yEAAyE;AACzE,qDAAqD;AACrD,+DAA+D;AAC/D,yDAAyD;AAoBzD;;GAEG;AACI,MAAM,aAAa,GAAG,CAC5B,SAAqC,EACrC,KAAwB;AACxB,4GAA4G;AAC5G,qBAA2B;AAC3B,qGAAqG;AACrG,cAAoB,EACoC,EAAE;IAC1D,MAAM,gBAAgB,GAAG,IAAA,qDAAwB,EAAC,SAAS,EAAE,KAAK,CAAC,CAAC;IAEpE,MAAM,sBAAsB,GAAG,qBAAqB,KAAK,KAAK,CAAC;IAE/D,MAAM,gBAAgB,GAAG,cAAc,KAAK,IAAI,CAAC;IAEjD,gEAAgE;IAChE,MAAM,QAAQ,GACb,gBAAgB;QAChB,CAAC,mBAAmB,IAAI,gBAAgB;YACvC,CAAC,CAAC,gBAAgB,CAAC,iBAAiB;YACpC,CAAC,CAAC,KAAK,CAAC,CAAC;IAEX,gEAAgE;IAChE,MAAM,gBAAgB,GACrB,sBAAsB;QACtB,CAAC,iBAAiB,IAAI,gBAAgB;YACrC,CAAC,CAAC,CAAC,gBAAgB,CAAC,eAAe;YACnC,CAAC,CAAC,KAAK,CAAC,CAAC;IAEX,MAAM,KAAK,GAAG,IAAA,wBAAY,EAAC,SAAS,EAAE,KAAK,CAAC,CAAC;IAC7C,OAAO;QACN,GAAG,gBAAgB;QACnB,aAAa,EAAE,KAAK,CAAC,aAAa;QAClC,iBAAiB,EAAE,KAAK,CAAC,iBAAiB;QAC1C,WAAW,EAAE,KAAK,CAAC,WAAW;QAC9B,QAAQ,EAAE,KAAK,CAAC,QAAQ;QACxB,QAAQ,EAAE,KAAK,CAAC,QAAQ;QACxB,UAAU,EAAE,KAAK,CAAC,UAAU;QAC5B,cAAc,EAAE,KAAK,CAAC,cAAc;QACpC,QAAQ,EAAE,QAAQ;QAClB,gBAAgB,EAAE,gBAAgB;QAClC,SAAS,EAAE,KAAK,CAAC,KAAK,CAAC,SAAS;QAChC,QAAQ,EAAE,aAAa,IAAI,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,WAAW,CAAC,CAAC,CAAC,KAAK;QACpE,KAAK,EAAE,KAAK;QACZ,eAAe,EAAE,IAAA,4CAAsB,EAAC,SAAS,EAAE,KAAK,CAAC;QACzD,UAAU,EAAE,KAAK,CAAC,UAAU;QAC5B,UAAU,EAAE,IAAA,kCAAiB,EAAC,SAAS,EAAE,KAAK,CAAC;QAC/C,OAAO,EAAE,IAAA,4BAAc,EACtB,gBAAgB,EAChB,KAAK,CAAC,SAAS,EACf,KAAK,CAAC,aAAa,EACnB,KAAK,CAAC,KAAK,CAAC,SAAS,EACrB,KAAK,EACL,KAAK,CAAC,MAAM,EACZ,KAAK,CAAC,cAAc,EACpB,gBAAgB,CAChB;QACD,GAAG,IAAA,6CAAqB,EAAC,gBAAgB,EAAE,KAAK,CAAC;QACjD,kEAAkE;KAC3D,CAAC;AACV,CAAC,CAAC;AA3DW,QAAA,aAAa,iBA2DxB;AAEF;;GAEG;AACH,SAAgB,cAAc,CAC7B,UAAwC,EACxC,KAAwB,EACxB,UAAwD,EACxD,qBAA2C,EAC3C,cAAoC;IAEpC,+FAA+F;IAC/F,MAAM,gBAAgB,GAAG,UAAU,CAAC,OAAO,CAAC,CAAC,SAAS,EAAE,EAAE;QACzD,IACC,SAAS,CAAC,aAAa,KAAK,mBAAmB;YAC/C,KAAK,CAAC,yBAAyB,EAC9B,CAAC;YACF,OAAO,EAAE,CAAC;QACX,CAAC;QAED,OAAO;YACN,IAAA,qBAAa,EAAC,SAAS,EAAE,KAAK,EAAE,qBAAqB,EAAE,cAAc,CAAC;SACtE,CAAC;IACH,CAAC,CAAC,CAAC;IAEH,IAAI,KAAK,CAAC,cAAc,EAAE,CAAC;QAC1B,OAAO,gBAAgB,CAAC;IACzB,CAAC;IAED,sEAAsE;IACtE,IAAI,UAAU,KAAK,eAAe,EAAE,CAAC;QACpC,OAAO,gBAAgB,CAAC,GAAG,CAAC,CAAC,eAAe,EAAE,EAAE,CAC/C,CAAC,eAAe,CAAC,eAAe,IAAI,IAAI,CAAC;YACxC,CAAC,CAAC,eAAe;YACjB,CAAC,CAAC,mDAAmD;gBACnD;oBACA,GAAG,eAAe;oBAClB,KAAK,EAAE,EAAE;oBACT,aAAa,EAAE,MAAM;iBACK,CAC7B,CAAC;IACH,CAAC;IAED,+EAA+E;IAC/E,OAAO,gBAAgB,CAAC,MAAM,CAC7B,CAAC,EAAE,eAAe,EAAE,EAAE,EAAE,CAAC,eAAe,IAAI,IAAI,CAChD,CAAC;AACH,CAAC"}
1
+ {"version":3,"file":"fill-components.js","sourceRoot":"","sources":["../../../src/use-lunatic/commons/fill-components/fill-components.ts"],"names":[],"mappings":"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"}
@@ -19,7 +19,15 @@ export type InterpretedOption = {
19
19
  /**
20
20
  * Compute options for checkboxes / radios / dropdown
21
21
  */
22
- export declare function getOptionsProp(definition: DeepTranslateExpression<LunaticComponentDefinition>, variables: LunaticVariablesStore, handleChanges: LunaticChangesHandler, pagerIteration: LunaticState['pager']['iteration'], value: unknown, logger: LunaticLogger, disableFilters?: boolean, shouldParentBeFiltered?: boolean): {
22
+ export declare function computeOptionsFromComponent(definition: DeepTranslateExpression<LunaticComponentDefinition>, { variables, handleChanges, pagerIteration, value, logger, disableFilters, shouldParentBeFiltered, }: {
23
+ variables: LunaticVariablesStore;
24
+ handleChanges: LunaticChangesHandler;
25
+ pagerIteration: LunaticState['pager']['iteration'];
26
+ value: unknown;
27
+ logger: LunaticLogger;
28
+ disableFilters?: boolean;
29
+ shouldParentBeFiltered?: boolean;
30
+ }): InterpretedOption[] | {
23
31
  label: ReactNode;
24
32
  name: string;
25
33
  id: string;
@@ -1,11 +1,11 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.getOptionsProp = getOptionsProp;
3
+ exports.computeOptionsFromComponent = computeOptionsFromComponent;
4
4
  const number_1 = require("../../utils/number");
5
5
  /**
6
6
  * Compute options for checkboxes / radios / dropdown
7
7
  */
8
- function getOptionsProp(definition, variables, handleChanges, pagerIteration, value, logger, disableFilters, shouldParentBeFiltered) {
8
+ function computeOptionsFromComponent(definition, { variables, handleChanges, pagerIteration, value, logger, disableFilters, shouldParentBeFiltered, }) {
9
9
  const iteration = (0, number_1.isNumber)(pagerIteration) ? [pagerIteration] : undefined;
10
10
  if (definition.componentType === 'CheckboxGroup') {
11
11
  return definition.responses
@@ -40,9 +40,24 @@ function getOptionsProp(definition, variables, handleChanges, pagerIteration, va
40
40
  isFilteredOutOption(variables, iteration, logger, response.conditionFilter),
41
41
  }));
42
42
  }
43
+ // options based on another variable
44
+ if ('optionSource' in definition && definition.optionSource) {
45
+ return computeOptionsFromSource(definition.optionSource, {
46
+ variables,
47
+ value,
48
+ handleChanges,
49
+ responseName: definition.response.name,
50
+ logger,
51
+ shouldParentBeFiltered,
52
+ optionFilter: definition.optionFilter,
53
+ });
54
+ }
43
55
  if (!('options' in definition)) {
44
56
  return [];
45
57
  }
58
+ if (!definition.options) {
59
+ return [];
60
+ }
46
61
  return definition.options
47
62
  .filter((option) => {
48
63
  if (disableFilters ||
@@ -81,6 +96,46 @@ function getOptionsProp(definition, variables, handleChanges, pagerIteration, va
81
96
  isFilteredOutOption(variables, iteration, logger, option.conditionFilter)),
82
97
  }));
83
98
  }
99
+ /**
100
+ * Get all options from a source variable, applying filters.
101
+ */
102
+ function computeOptionsFromSource(optionSource, { variables, value, handleChanges, responseName, logger, shouldParentBeFiltered, optionFilter, }) {
103
+ // we don't know the type of the optionSource values (string, numbers, boolean)
104
+ const optionValues = variables.get(optionSource);
105
+ if (!optionValues) {
106
+ return [];
107
+ }
108
+ const normalizedValues = Array.isArray(optionValues)
109
+ ? optionValues
110
+ : [optionValues];
111
+ return normalizedValues
112
+ .filter((option, index) => {
113
+ // option is an empty value, we remove it from the options list
114
+ if (option === null || option === undefined) {
115
+ return false;
116
+ }
117
+ // no filter expression, we keep the option
118
+ if (!optionFilter) {
119
+ return true;
120
+ }
121
+ // apply filter expression on option (applied to its iteration)
122
+ return !isFilteredOutOption(variables, [index], logger, optionFilter);
123
+ })
124
+ .map((option) => {
125
+ return {
126
+ label: String(option),
127
+ value: option,
128
+ checked: value === option,
129
+ onCheck: () => {
130
+ handleChanges([{ name: responseName, value: option }]);
131
+ },
132
+ onUncheck: () => {
133
+ handleChanges([{ name: responseName, value: null }]);
134
+ },
135
+ shouldBeFiltered: shouldParentBeFiltered,
136
+ };
137
+ });
138
+ }
84
139
  /**
85
140
  * Check if an option should be filtered, depending on its conditionFilter.
86
141
  */
@@ -1 +1 @@
1
- {"version":3,"file":"propOptions.js","sourceRoot":"","sources":["../../src/use-lunatic/props/propOptions.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"propOptions.js","sourceRoot":"","sources":["../../src/use-lunatic/props/propOptions.ts"],"names":[],"mappings":"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"}
@@ -3,69 +3,99 @@ Object.defineProperty(exports, "__esModule", { value: true });
3
3
  const vitest_1 = require("vitest");
4
4
  const lunatic_variables_store_1 = require("../commons/variables/lunatic-variables-store");
5
5
  const propOptions_1 = require("./propOptions");
6
- (0, vitest_1.describe)('getOptionsProp()', () => {
6
+ (0, vitest_1.describe)('computeOptionsFromComponent', () => {
7
7
  let variables;
8
- const checkboxGroupDefinition = {
9
- id: 'CheckboxGroup',
10
- componentType: 'CheckboxGroup',
11
- responses: [
12
- {
13
- label: 'Option 1',
14
- response: { name: 'O1' },
15
- id: 'id1',
16
- },
17
- {
18
- label: 'Option 2',
19
- response: { name: 'O2' },
20
- id: 'id2',
21
- },
22
- ],
23
- };
24
- const radioDefinition = {
25
- id: 'RadioGroup',
26
- componentType: 'Radio',
27
- response: { name: 'RADIO' },
28
- options: [
29
- {
30
- label: 'Option 1',
31
- value: 'id1',
32
- },
33
- {
34
- label: 'Option 2',
35
- value: 'id2',
36
- },
37
- ],
38
- };
39
8
  let mockChange;
40
9
  const mockLogger = vitest_1.vi.fn();
41
10
  (0, vitest_1.beforeEach)(() => {
42
11
  mockChange = vitest_1.vi.fn();
43
12
  variables = new lunatic_variables_store_1.LunaticVariablesStore();
44
13
  });
45
- (0, vitest_1.describe)('CheckboxGroup', () => {
14
+ (0, vitest_1.describe)('Options based on a fixed list', () => {
15
+ const checkboxGroupDefinition = {
16
+ id: 'CheckboxGroup',
17
+ componentType: 'CheckboxGroup',
18
+ responses: [
19
+ {
20
+ label: 'Option 1',
21
+ response: { name: 'O1' },
22
+ id: 'id1',
23
+ },
24
+ {
25
+ label: 'Option 2',
26
+ response: { name: 'O2' },
27
+ id: 'id2',
28
+ },
29
+ ],
30
+ };
31
+ const radioDefinition = {
32
+ id: 'RadioGroup',
33
+ componentType: 'Radio',
34
+ response: { name: 'RADIO' },
35
+ options: [
36
+ {
37
+ label: 'Option 1',
38
+ value: 'id1',
39
+ },
40
+ {
41
+ label: 'Option 2',
42
+ value: 'id2',
43
+ },
44
+ ],
45
+ };
46
46
  (0, vitest_1.it)('should check boxes', () => {
47
47
  variables.set('O2', false);
48
- let options = (0, propOptions_1.getOptionsProp)(checkboxGroupDefinition, variables, mockChange, undefined, undefined, mockLogger);
48
+ let options = (0, propOptions_1.computeOptionsFromComponent)(checkboxGroupDefinition, {
49
+ variables,
50
+ handleChanges: mockChange,
51
+ pagerIteration: undefined,
52
+ value: undefined,
53
+ logger: mockLogger,
54
+ });
49
55
  (0, vitest_1.expect)(options[1].checked).toBe(false);
50
56
  variables.set('O2', true);
51
- options = (0, propOptions_1.getOptionsProp)(checkboxGroupDefinition, variables, mockChange, undefined, undefined, mockLogger);
57
+ options = (0, propOptions_1.computeOptionsFromComponent)(checkboxGroupDefinition, {
58
+ variables,
59
+ handleChanges: mockChange,
60
+ pagerIteration: undefined,
61
+ value: undefined,
62
+ logger: mockLogger,
63
+ });
52
64
  (0, vitest_1.expect)(options[1].checked).toBe(true);
53
65
  });
54
66
  (0, vitest_1.it)('should check boxes correctly within iteration', () => {
55
67
  variables.set('O1', []);
56
68
  variables.set('O2', []);
57
- let options = (0, propOptions_1.getOptionsProp)(checkboxGroupDefinition, variables, mockChange, 0, undefined, mockLogger);
69
+ let options = (0, propOptions_1.computeOptionsFromComponent)(checkboxGroupDefinition, {
70
+ variables,
71
+ handleChanges: mockChange,
72
+ pagerIteration: 0,
73
+ value: undefined,
74
+ logger: mockLogger,
75
+ });
58
76
  (0, vitest_1.expect)(options.filter((o) => o.checked), 'Nothing checked when variable empty').toHaveLength(0);
59
77
  variables.set('O1', [true, 0]);
60
- options = (0, propOptions_1.getOptionsProp)(checkboxGroupDefinition, variables, mockChange, 0, undefined, mockLogger);
78
+ options = (0, propOptions_1.computeOptionsFromComponent)(checkboxGroupDefinition, {
79
+ variables,
80
+ handleChanges: mockChange,
81
+ pagerIteration: 0,
82
+ value: undefined,
83
+ logger: mockLogger,
84
+ });
61
85
  (0, vitest_1.expect)(options[0].checked).toBe(true);
62
86
  (0, vitest_1.expect)(options[1].checked).toBe(false);
63
87
  });
64
88
  (0, vitest_1.it)('should create handleChange correctly', () => {
65
89
  variables.set('O1', [true, false]);
66
90
  variables.set('O2', [false, true]);
67
- const options = (0, propOptions_1.getOptionsProp)(checkboxGroupDefinition, variables, mockChange, 1, undefined, mockLogger);
68
- options[1].onCheck(false);
91
+ const options = (0, propOptions_1.computeOptionsFromComponent)(checkboxGroupDefinition, {
92
+ variables,
93
+ handleChanges: mockChange,
94
+ pagerIteration: 1,
95
+ value: undefined,
96
+ logger: mockLogger,
97
+ });
98
+ options[1].onCheck?.(false);
69
99
  (0, vitest_1.expect)(mockChange).toHaveBeenLastCalledWith([
70
100
  { name: 'O2', value: false },
71
101
  ]);
@@ -96,7 +126,13 @@ const propOptions_1 = require("./propOptions");
96
126
  ],
97
127
  };
98
128
  variables.set('DETAIL', true);
99
- const options = (0, propOptions_1.getOptionsProp)(definition, variables, mockChange, undefined, undefined, mockLogger);
129
+ const options = (0, propOptions_1.computeOptionsFromComponent)(definition, {
130
+ variables,
131
+ handleChanges: mockChange,
132
+ pagerIteration: undefined,
133
+ value: undefined,
134
+ logger: mockLogger,
135
+ });
100
136
  (0, vitest_1.expect)(options).toHaveLength(2);
101
137
  (0, vitest_1.expect)(options[0].detailLabel).toBe('Precize:');
102
138
  (0, vitest_1.expect)(options[1].detailLabel).toBe('Precize:');
@@ -129,7 +165,13 @@ const propOptions_1 = require("./propOptions");
129
165
  ],
130
166
  };
131
167
  variables.set('DETAIL', true);
132
- const options = (0, propOptions_1.getOptionsProp)(definition, variables, mockChange, undefined, undefined, mockLogger);
168
+ const options = (0, propOptions_1.computeOptionsFromComponent)(definition, {
169
+ variables,
170
+ handleChanges: mockChange,
171
+ pagerIteration: undefined,
172
+ value: undefined,
173
+ logger: mockLogger,
174
+ });
133
175
  (0, vitest_1.expect)(options).toHaveLength(2);
134
176
  (0, vitest_1.expect)(options[0].detailLabel).toBe('Precize:');
135
177
  (0, vitest_1.expect)(options[1].detailLabel).toBe('Precize:');
@@ -156,7 +198,13 @@ const propOptions_1 = require("./propOptions");
156
198
  },
157
199
  ],
158
200
  };
159
- const options = (0, propOptions_1.getOptionsProp)(definition, variables, mockChange, undefined, undefined, mockLogger);
201
+ const options = (0, propOptions_1.computeOptionsFromComponent)(definition, {
202
+ variables,
203
+ handleChanges: mockChange,
204
+ pagerIteration: undefined,
205
+ value: undefined,
206
+ logger: mockLogger,
207
+ });
160
208
  // First option should be filtered out since its conditionFilter is evaluated to false
161
209
  (0, vitest_1.expect)(options).toHaveLength(1);
162
210
  (0, vitest_1.expect)(options[0].label).toBe('Option 2');
@@ -177,7 +225,13 @@ const propOptions_1 = require("./propOptions");
177
225
  },
178
226
  ],
179
227
  };
180
- const options = (0, propOptions_1.getOptionsProp)(definition, variables, mockChange, undefined, undefined, mockLogger);
228
+ const options = (0, propOptions_1.computeOptionsFromComponent)(definition, {
229
+ variables,
230
+ handleChanges: mockChange,
231
+ pagerIteration: undefined,
232
+ value: undefined,
233
+ logger: mockLogger,
234
+ });
181
235
  // First option should be filtered out since its conditionFilter is evaluated to false
182
236
  (0, vitest_1.expect)(options).toHaveLength(1);
183
237
  (0, vitest_1.expect)(options[0].label).toBe('Option 2');
@@ -198,7 +252,13 @@ const propOptions_1 = require("./propOptions");
198
252
  vitest_1.vi.spyOn(variables, 'run').mockImplementation(() => {
199
253
  throw new Error('Test error');
200
254
  });
201
- const options = (0, propOptions_1.getOptionsProp)(definition, variables, mockChange, undefined, undefined, mockLogger);
255
+ const options = (0, propOptions_1.computeOptionsFromComponent)(definition, {
256
+ variables,
257
+ handleChanges: mockChange,
258
+ pagerIteration: undefined,
259
+ value: undefined,
260
+ logger: mockLogger,
261
+ });
202
262
  // Ensure the option is not filtered
203
263
  (0, vitest_1.expect)(options).toHaveLength(1);
204
264
  (0, vitest_1.expect)(options[0].shouldBeFiltered).toBe(false);
@@ -218,7 +278,13 @@ const propOptions_1 = require("./propOptions");
218
278
  vitest_1.vi.spyOn(variables, 'run').mockImplementation(() => {
219
279
  throw new Error('Test error');
220
280
  });
221
- const options = (0, propOptions_1.getOptionsProp)(definition, variables, mockChange, undefined, undefined, mockLogger);
281
+ const options = (0, propOptions_1.computeOptionsFromComponent)(definition, {
282
+ variables,
283
+ handleChanges: mockChange,
284
+ pagerIteration: undefined,
285
+ value: undefined,
286
+ logger: mockLogger,
287
+ });
222
288
  // Ensure the option is not filtered
223
289
  (0, vitest_1.expect)(options).toHaveLength(1);
224
290
  (0, vitest_1.expect)(options[0].shouldBeFiltered).toBe(false);
@@ -239,8 +305,14 @@ const propOptions_1 = require("./propOptions");
239
305
  vitest_1.vi.spyOn(variables, 'run').mockImplementation(() => {
240
306
  return false;
241
307
  });
242
- const options = (0, propOptions_1.getOptionsProp)(definition, variables, mockChange, undefined, undefined, mockLogger, true // disableFilters = true
243
- );
308
+ const options = (0, propOptions_1.computeOptionsFromComponent)(definition, {
309
+ variables,
310
+ handleChanges: mockChange,
311
+ pagerIteration: undefined,
312
+ value: undefined,
313
+ logger: mockLogger,
314
+ disableFilters: true,
315
+ });
244
316
  // Ensure the option is not filtered
245
317
  (0, vitest_1.expect)(options).toHaveLength(1);
246
318
  // the option should would have been filtered if we did not disable filters
@@ -261,8 +333,14 @@ const propOptions_1 = require("./propOptions");
261
333
  vitest_1.vi.spyOn(variables, 'run').mockImplementation(() => {
262
334
  return false;
263
335
  });
264
- const options = (0, propOptions_1.getOptionsProp)(definition, variables, mockChange, undefined, undefined, mockLogger, true // disableFilters = true
265
- );
336
+ const options = (0, propOptions_1.computeOptionsFromComponent)(definition, {
337
+ variables,
338
+ handleChanges: mockChange,
339
+ pagerIteration: undefined,
340
+ value: undefined,
341
+ logger: mockLogger,
342
+ disableFilters: true,
343
+ });
266
344
  // Ensure the option is not filtered
267
345
  (0, vitest_1.expect)(options).toHaveLength(1);
268
346
  // the option should would have been filtered if we did not disable filters
@@ -280,9 +358,15 @@ const propOptions_1 = require("./propOptions");
280
358
  },
281
359
  ],
282
360
  };
283
- const options = (0, propOptions_1.getOptionsProp)(definition, variables, mockChange, undefined, undefined, mockLogger, true, // disableFilters = true
284
- true // parent component should be filtered
285
- );
361
+ const options = (0, propOptions_1.computeOptionsFromComponent)(definition, {
362
+ variables,
363
+ handleChanges: mockChange,
364
+ pagerIteration: undefined,
365
+ value: undefined,
366
+ logger: mockLogger,
367
+ disableFilters: true,
368
+ shouldParentBeFiltered: true,
369
+ });
286
370
  // Ensure the option is not filtered
287
371
  (0, vitest_1.expect)(options).toHaveLength(1);
288
372
  // the option would have been filtered if we did not disable filters because its parent would
@@ -299,14 +383,92 @@ const propOptions_1 = require("./propOptions");
299
383
  },
300
384
  ],
301
385
  };
302
- const options = (0, propOptions_1.getOptionsProp)(definition, variables, mockChange, undefined, undefined, mockLogger, true, // disableFilters = true
303
- true // parent component should be filtered
304
- );
386
+ const options = (0, propOptions_1.computeOptionsFromComponent)(definition, {
387
+ variables,
388
+ handleChanges: mockChange,
389
+ pagerIteration: undefined,
390
+ value: undefined,
391
+ logger: mockLogger,
392
+ disableFilters: true,
393
+ shouldParentBeFiltered: true,
394
+ });
305
395
  // Ensure the option is not filtered
306
396
  (0, vitest_1.expect)(options).toHaveLength(1);
307
397
  // the option would have been filtered if we did not disable filters because its parent would
308
398
  (0, vitest_1.expect)(options[0].shouldBeFiltered).toBe(true);
309
399
  });
310
400
  });
401
+ (0, vitest_1.describe)('Options based on a source variable', () => {
402
+ const radioOptionSourceDefinition = {
403
+ id: 'RadioGroupDynamic',
404
+ componentType: 'Radio',
405
+ response: { name: 'RADIO' },
406
+ optionSource: 'NAME',
407
+ };
408
+ (0, vitest_1.it)('should build options when the source variable is an array of strings', () => {
409
+ variables.set('NAME', ['Maëlle', 'Verso']);
410
+ const options = (0, propOptions_1.computeOptionsFromComponent)(radioOptionSourceDefinition, {
411
+ variables,
412
+ handleChanges: mockChange,
413
+ pagerIteration: undefined,
414
+ value: undefined,
415
+ logger: mockLogger,
416
+ }); // force type but it should infer type correctly
417
+ (0, vitest_1.expect)(options).toHaveLength(2);
418
+ (0, vitest_1.expect)(options[0].value).toBe('Maëlle');
419
+ (0, vitest_1.expect)(options[0].label).toBe('Maëlle');
420
+ (0, vitest_1.expect)(options[1].value).toBe('Verso');
421
+ (0, vitest_1.expect)(options[1].label).toBe('Verso');
422
+ });
423
+ (0, vitest_1.it)('should build options when the source variable is an array of numbers', () => {
424
+ variables.set('NAME', [10, 20]);
425
+ const options = (0, propOptions_1.computeOptionsFromComponent)(radioOptionSourceDefinition, {
426
+ variables,
427
+ handleChanges: mockChange,
428
+ pagerIteration: undefined,
429
+ value: undefined,
430
+ logger: mockLogger,
431
+ }); // force type but it should infer type correctly
432
+ (0, vitest_1.expect)(options).toHaveLength(2);
433
+ (0, vitest_1.expect)(options[0].value).toBe(10);
434
+ (0, vitest_1.expect)(options[0].label).toBe('10');
435
+ (0, vitest_1.expect)(options[1].value).toBe(20);
436
+ (0, vitest_1.expect)(options[1].label).toBe('20');
437
+ });
438
+ (0, vitest_1.it)('should set the response when selecting a dynamic option', () => {
439
+ variables.set('NAME', ['Maëlle', 'Verso']);
440
+ const options = (0, propOptions_1.computeOptionsFromComponent)(radioOptionSourceDefinition, {
441
+ variables,
442
+ handleChanges: mockChange,
443
+ pagerIteration: undefined,
444
+ value: undefined,
445
+ logger: mockLogger,
446
+ }); // force type but it should infer type correctly
447
+ options[0].onCheck?.();
448
+ (0, vitest_1.expect)(mockChange).toHaveBeenLastCalledWith([
449
+ { name: 'RADIO', value: 'Maëlle' },
450
+ ]);
451
+ options[1].onCheck?.();
452
+ (0, vitest_1.expect)(mockChange).toHaveBeenLastCalledWith([
453
+ { name: 'RADIO', value: 'Verso' },
454
+ ]);
455
+ });
456
+ (0, vitest_1.it)('should filter options based on the optionFilter expression', () => {
457
+ const definition = {
458
+ ...radioOptionSourceDefinition,
459
+ optionFilter: { type: 'VTL', value: 'AGE >= 18' },
460
+ };
461
+ variables.set('NAME', ['Maëlle', 'Verso', 'Aline']);
462
+ variables.set('AGE', [16, 30, 50]);
463
+ const options = (0, propOptions_1.computeOptionsFromComponent)(definition, {
464
+ variables,
465
+ handleChanges: mockChange,
466
+ pagerIteration: undefined,
467
+ value: undefined,
468
+ logger: mockLogger,
469
+ }); // force type but it should infer type correctly
470
+ (0, vitest_1.expect)(options.map((option) => option.value)).toEqual(['Verso', 'Aline']);
471
+ });
472
+ });
311
473
  });
312
474
  //# sourceMappingURL=propOptions.spec.js.map