@inseefr/lunatic 3.8.0-rc.ucq-options-variable.0 → 3.8.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.
- package/esm/type.source.d.ts +3 -9
- package/esm/use-lunatic/commons/fill-components/fill-component-expressions.d.ts +1 -1
- package/esm/use-lunatic/commons/fill-components/fill-component-expressions.js.map +1 -1
- package/esm/use-lunatic/commons/fill-components/fill-components.js +2 -10
- package/esm/use-lunatic/commons/fill-components/fill-components.js.map +1 -1
- package/esm/use-lunatic/props/propOptions.d.ts +1 -9
- package/esm/use-lunatic/props/propOptions.js +1 -56
- package/esm/use-lunatic/props/propOptions.js.map +1 -1
- package/esm/use-lunatic/props/propOptions.spec.js +56 -220
- package/esm/use-lunatic/props/propOptions.spec.js.map +1 -1
- package/package.json +1 -4
- package/src/stories/checkbox/checkbox.stories.tsx +0 -13
- package/src/stories/dropdown/dropdown.stories.tsx +0 -12
- package/src/stories/radio/radio.stories.tsx +0 -13
- package/src/type.source.ts +3 -9
- package/src/use-lunatic/commons/fill-components/fill-component-expressions.ts +1 -2
- package/src/use-lunatic/commons/fill-components/fill-components.ts +10 -9
- package/src/use-lunatic/props/propOptions.spec.ts +147 -217
- package/src/use-lunatic/props/propOptions.ts +8 -97
- package/tsconfig.build.tsbuildinfo +1 -1
- package/type.source.d.ts +3 -9
- package/use-lunatic/commons/fill-components/fill-component-expressions.d.ts +1 -1
- package/use-lunatic/commons/fill-components/fill-component-expressions.js.map +1 -1
- package/use-lunatic/commons/fill-components/fill-components.js +1 -9
- package/use-lunatic/commons/fill-components/fill-components.js.map +1 -1
- package/use-lunatic/props/propOptions.d.ts +1 -9
- package/use-lunatic/props/propOptions.js +2 -57
- package/use-lunatic/props/propOptions.js.map +1 -1
- package/use-lunatic/props/propOptions.spec.js +55 -217
- package/use-lunatic/props/propOptions.spec.js.map +1 -1
- package/src/stories/checkbox/sourceOneDynamicOptions.json +0 -496
- package/src/stories/dropdown/sourceDynamicOptions.json +0 -496
- package/src/stories/radio/sourceDynamicOptions.json +0 -496
package/esm/type.source.d.ts
CHANGED
|
@@ -124,9 +124,7 @@ export type ComponentCheckboxBooleanDefinition = ComponentDefinitionBaseWithResp
|
|
|
124
124
|
export type ComponentRadioDefinition = ComponentDefinitionBaseWithResponse & {
|
|
125
125
|
componentType: 'Radio';
|
|
126
126
|
orientation?: 'horizontal' | 'vertical';
|
|
127
|
-
options
|
|
128
|
-
optionSource?: string;
|
|
129
|
-
optionFilter?: VTLExpression;
|
|
127
|
+
options: OptionsWithDetail;
|
|
130
128
|
};
|
|
131
129
|
export type OptionsWithDetail = {
|
|
132
130
|
value: string | boolean;
|
|
@@ -142,9 +140,7 @@ export type OptionsWithDetail = {
|
|
|
142
140
|
}[];
|
|
143
141
|
export type ComponentDropdownDefinition = ComponentDefinitionBaseWithResponse & {
|
|
144
142
|
componentType: 'Dropdown';
|
|
145
|
-
options
|
|
146
|
-
optionSource?: string;
|
|
147
|
-
optionFilter?: VTLExpression;
|
|
143
|
+
options: Options;
|
|
148
144
|
};
|
|
149
145
|
export type ComponentQuestionDefinition = ComponentDefinitionBase & {
|
|
150
146
|
componentType: 'Question';
|
|
@@ -152,9 +148,7 @@ export type ComponentQuestionDefinition = ComponentDefinitionBase & {
|
|
|
152
148
|
};
|
|
153
149
|
export type ComponentCheckboxOneDefinition = ComponentDefinitionBaseWithResponse & {
|
|
154
150
|
componentType: 'CheckboxOne';
|
|
155
|
-
options
|
|
156
|
-
optionSource?: string;
|
|
157
|
-
optionFilter?: VTLExpression;
|
|
151
|
+
options: OptionsWithDetail;
|
|
158
152
|
};
|
|
159
153
|
export type ComponentSuggesterDefinition = ComponentDefinitionBaseWithResponse & {
|
|
160
154
|
componentType: 'Suggester';
|
|
@@ -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';
|
|
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":"AAMA,OAAO,EAAE,QAAQ,EAAE,MAAM,uBAAuB,CAAC;AAEjD,MAAM,cAAc,GAAG;IACtB,CAAC,OAAO,EAAE,IAAI,CAAC;IACf,CAAC,MAAM,EAAE,IAAI,CAAC;IACd,CAAC,eAAe,EAAE,IAAI,CAAC;IACvB,CAAC,oBAAoB,EAAE,IAAI,CAAC;IAC5B,CAAC,aAAa,EAAE,IAAI,CAAC;IACrB,CAAC,YAAY,EAAE,UAAU,CAAC;IAC1B,CAAC,iBAAiB,EAAE,IAAI,CAAC;IACzB,CAAC,uBAAuB,EAAE,IAAI,CAAC;IAC/B,CAAC,wBAAwB,EAAE,IAAI,CAAC;IAChC,CAAC,qBAAqB,EAAE,IAAI,CAAC;IAC7B,CAAC,sBAAsB,EAAE,IAAI,CAAC;IAC9B,CAAC,qBAAqB,EAAE,UAAU,CAAC;IACnC,CAAC,aAAa,EAAE,IAAI,CAAC;IACrB,CAAC,YAAY,EAAE,IAAI,CAAC;IACpB,CAAC,WAAW,EAAE,UAAU,CAAC;IACzB,CAAC,WAAW,EAAE,UAAU,CAAC;IACzB,CAAC,iBAAiB,EAAE,UAAU,CAAC;IAC/B,CAAC,iBAAiB,EAAE,UAAU,CAAC;IAC/B,CAAC,iBAAiB,EAAE,QAAQ,CAAC;IAC7B,CAAC,cAAc,EAAE,IAAI,CAAC;IACtB,CAAC,UAAU,EAAE,QAAQ,CAAC;IACtB,CAAC,mBAAmB,EAAE,QAAQ,CAAC;IAC/B,iBAAiB;IACjB,CAAC,iBAAiB,EAAE,UAAU,CAAC;IAC/B,CAAC,sBAAsB,EAAE,UAAU,CAAC;CAC3B,CAAC;AAEX,oEAAoE;AACpE,MAAM,WAAW,GAAG,IAAI,GAAG,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC;AAEtC,SAAS,UAAU,CAAC,CAAU;IAC7B,IAAI,OAAO,CAAC,KAAK,QAAQ,EAAE,CAAC;QAC3B,OAAO,CAAC,CAAC;IACV,CAAC;IACD,IAAI,OAAO,CAAC,KAAK,QAAQ,EAAE,CAAC;QAC3B,OAAO,QAAQ,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;IACxB,CAAC;IACD,IAAI,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACtC,OAAO,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IACzB,CAAC;IACD,IAAI,CAAC,KAAK,IAAI,EAAE,CAAC;QAChB,OAAO,CAAC,CAAC;IACV,CAAC;IACD,MAAM,IAAI,KAAK,CAAC,gBAAgB,CAAC,aAAa,CAAC,CAAC;AACjD,CAAC;AAED,SAAS,QAAQ,CAAC,CAAU;IAC3B,IAAI,OAAO,CAAC,KAAK,SAAS,EAAE,CAAC;QAC5B,OAAO,CAAC,CAAC;IACV,CAAC;IACD,IAAI,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACtC,OAAO,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IACvB,CAAC;IACD,IAAI,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC;QACtB,OAAO,KAAK,CAAC;IACd,CAAC;IACD,OAAO,OAAO,CAAC,CAAC,CAAC,CAAC;AACnB,CAAC;AAED,SAAS,UAAU,CAAC,CAAU;IAC7B,IAAI,OAAO,CAAC,KAAK,QAAQ,EAAE,CAAC;QAC3B,OAAO,CAAC,CAAC;IACV,CAAC;IACD,IAAI,OAAO,CAAC,KAAK,QAAQ,EAAE,CAAC;QAC3B,OAAO,CAAC,CAAC,QAAQ,EAAE,CAAC;IACrB,CAAC;IACD,IAAI,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC;QACtB,OAAO,CAAC,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACrC,CAAC;IACD,IAAI,CAAC,CAAC,EAAE,CAAC;QACR,OAAO,EAAE,CAAC;IACX,CAAC;IACD,OAAO,CAAC,CAAC,QAAQ,EAAE,CAAC;AACrB,CAAC;AAwBD;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,MAAM,UAAU,wBAAwB,CACvC,SAAqC,EACrC,KAGC;IAED,IAAI,eAAe,GAAQ,SAAS,CAAC,CAAC,4DAA4D;IAElG,KAAK,MAAM,SAAS,IAAI,cAAc,EAAE,CAAC;QACxC,MAAM,YAAY,GAAG,SAAS,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;QAC7C,MAAM,MAAM,GAAG,SAAS,CAAC,CAAC,CAAC,CAAC;QAE5B,0BAA0B;QAC1B,MAAM,OAAO,GAAG,CAAC,UAAmB,EAAE,EAAE;;YACvC,qFAAqF;YACrF,IAAI,OAAO,UAAU,KAAK,QAAQ,IAAI,WAAW,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;gBACxE,OAAO,UAAU,CAAC;YACnB,CAAC;YACD,IAAI,CAAC,iBAAiB,CAAC,UAAU,CAAC,EAAE,CAAC;gBACpC,MAAM,IAAI,KAAK,CACd,2BAA2B,SAAS,CAAC,CAAC,CAAC,UAAU,UAAU,EAAE,CAC7D,CAAC;YACH,CAAC;YACD,MAAM,MAAM,GAAG,KAAK,CAAC,iBAAiB,CAAC,UAAU,EAAE;gBAClD,SAAS,EAAE,MAAA,KAAK,CAAC,KAAK,CAAC,eAAe,mCAAI,KAAK,CAAC,KAAK,CAAC,SAAS;aAC/D,CAAC,CAAC;YACH,IAAI,CAAC;gBACJ,OAAO,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC;YACzC,CAAC;YAAC,OAAO,CAAC,EAAE,CAAC;gBACZ,MAAM,IAAI,KAAK,CAAC,wBAAwB,YAAY,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;YACzE,CAAC;QACF,CAAC,CAAC;QACF,eAAe,GAAG,uBAAuB,CACxC,eAAe,EACf,YAAY,EACZ,OAAO,CACP,CAAC;IACH,CAAC;IAED,OAAO,eAAe,CAAC;AACxB,CAAC;AAED,SAAS,iBAAiB,CACzB,UAAmB;IAEnB,OAAO,OAAO,CACb,UAAU;QACT,OAAO,UAAU,KAAK,QAAQ;QAC9B,MAAM,IAAI,UAAU;QACpB,OAAO,IAAI,UAAU,CACtB,CAAC;AACH,CAAC;AAED;;;;GAIG;AACH,SAAS,uBAAuB,CAC/B,GAAY,EACZ,IAAc,EACd,WAAoC;IAEpC,sDAAsD;IACtD,IAAI,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC;QACxB,OAAO,GAAG,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,uBAAuB,CAAC,IAAI,EAAE,IAAI,EAAE,WAAW,CAAC,CAAC,CAAC;IAC5E,CAAC;IAED,+CAA+C;IAC/C,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACvB,OAAO,WAAW,CAAC,GAAG,CAAC,CAAC;IACzB,CAAC;IACD,MAAM,CAAC,QAAQ,EAAE,GAAG,IAAI,CAAC,GAAG,IAAI,CAAC;IACjC,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,QAAQ,IAAI,GAAG,CAAC,EAAE,CAAC;QAC1C,OAAO,GAAG,CAAC;IACZ,CAAC;IACD,OAAO;QACN,GAAG,GAAG;QACN,CAAC,QAAQ,CAAC,EAAE,uBAAuB,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,IAAI,EAAE,WAAW,CAAC;KACrE,CAAC;AACH,CAAC"}
|
|
@@ -3,7 +3,7 @@ import { getComponentTypeProps } from '../../props/getComponentTypeProps';
|
|
|
3
3
|
import { getMissingResponseProp } from '../../props/propMissingResponse';
|
|
4
4
|
import { getValueProp } from '../../props/propValue';
|
|
5
5
|
import { getIterationsProp } from '../../props/propIterations';
|
|
6
|
-
import {
|
|
6
|
+
import { getOptionsProp } from '../../props/propOptions';
|
|
7
7
|
/**
|
|
8
8
|
* To make this work with TypeScript we need to call function in succession, we prefer expressiveness here over generalized approach
|
|
9
9
|
*/
|
|
@@ -43,15 +43,7 @@ parentReadOnly) => {
|
|
|
43
43
|
missingResponse: getMissingResponseProp(component, state),
|
|
44
44
|
management: state.management,
|
|
45
45
|
iterations: getIterationsProp(component, state),
|
|
46
|
-
options:
|
|
47
|
-
variables: state.variables,
|
|
48
|
-
handleChanges: state.handleChanges,
|
|
49
|
-
pagerIteration: state.pager.iteration,
|
|
50
|
-
value,
|
|
51
|
-
logger: state.logger,
|
|
52
|
-
disableFilters: state.disableFilters,
|
|
53
|
-
shouldParentBeFiltered: shouldBeFiltered,
|
|
54
|
-
}),
|
|
46
|
+
options: getOptionsProp(interpretedProps, state.variables, state.handleChanges, state.pager.iteration, value, state.logger, state.disableFilters, shouldBeFiltered),
|
|
55
47
|
...getComponentTypeProps(interpretedProps, state),
|
|
56
48
|
// This is too dynamic to be typed correctly, so we allow any here
|
|
57
49
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"fill-components.js","sourceRoot":"","sources":["../../../../src/use-lunatic/commons/fill-components/fill-components.ts"],"names":[],"mappings":"AAOA,OAAO,EAAE,wBAAwB,EAAE,MAAM,8BAA8B,CAAC;AACxE,OAAO,EAAE,qBAAqB,EAAE,MAAM,mCAAmC,CAAC;AAE1E,OAAO,EAAE,sBAAsB,EAAE,MAAM,iCAAiC,CAAC;AACzE,OAAO,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAC;AACrD,OAAO,EAAE,iBAAiB,EAAE,MAAM,4BAA4B,CAAC;AAC/D,OAAO,EAAE,
|
|
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,15 +19,7 @@ export type InterpretedOption = {
|
|
|
19
19
|
/**
|
|
20
20
|
* Compute options for checkboxes / radios / dropdown
|
|
21
21
|
*/
|
|
22
|
-
export declare function
|
|
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[] | {
|
|
22
|
+
export declare function getOptionsProp(definition: DeepTranslateExpression<LunaticComponentDefinition>, variables: LunaticVariablesStore, handleChanges: LunaticChangesHandler, pagerIteration: LunaticState['pager']['iteration'], value: unknown, logger: LunaticLogger, disableFilters?: boolean, shouldParentBeFiltered?: boolean): {
|
|
31
23
|
label: ReactNode;
|
|
32
24
|
name: string;
|
|
33
25
|
id: string;
|
|
@@ -2,7 +2,7 @@ import { isNumber } from '../../utils/number';
|
|
|
2
2
|
/**
|
|
3
3
|
* Compute options for checkboxes / radios / dropdown
|
|
4
4
|
*/
|
|
5
|
-
export function
|
|
5
|
+
export function getOptionsProp(definition, variables, handleChanges, pagerIteration, value, logger, disableFilters, shouldParentBeFiltered) {
|
|
6
6
|
const iteration = isNumber(pagerIteration) ? [pagerIteration] : undefined;
|
|
7
7
|
if (definition.componentType === 'CheckboxGroup') {
|
|
8
8
|
return definition.responses
|
|
@@ -40,24 +40,9 @@ export function computeOptionsFromComponent(definition, { variables, handleChang
|
|
|
40
40
|
});
|
|
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
|
-
}
|
|
55
43
|
if (!('options' in definition)) {
|
|
56
44
|
return [];
|
|
57
45
|
}
|
|
58
|
-
if (!definition.options) {
|
|
59
|
-
return [];
|
|
60
|
-
}
|
|
61
46
|
return definition.options
|
|
62
47
|
.filter((option) => {
|
|
63
48
|
if (disableFilters ||
|
|
@@ -99,46 +84,6 @@ export function computeOptionsFromComponent(definition, { variables, handleChang
|
|
|
99
84
|
});
|
|
100
85
|
});
|
|
101
86
|
}
|
|
102
|
-
/**
|
|
103
|
-
* Get all options from a source variable, applying filters.
|
|
104
|
-
*/
|
|
105
|
-
function computeOptionsFromSource(optionSource, { variables, value, handleChanges, responseName, logger, shouldParentBeFiltered, optionFilter, }) {
|
|
106
|
-
// we don't know the type of the optionSource values (string, numbers, boolean)
|
|
107
|
-
const optionValues = variables.get(optionSource);
|
|
108
|
-
if (!optionValues) {
|
|
109
|
-
return [];
|
|
110
|
-
}
|
|
111
|
-
const normalizedValues = Array.isArray(optionValues)
|
|
112
|
-
? optionValues
|
|
113
|
-
: [optionValues];
|
|
114
|
-
return normalizedValues
|
|
115
|
-
.filter((option, index) => {
|
|
116
|
-
// option is an empty value, we remove it from the options list
|
|
117
|
-
if (option === null || option === undefined) {
|
|
118
|
-
return false;
|
|
119
|
-
}
|
|
120
|
-
// no filter expression, we keep the option
|
|
121
|
-
if (!optionFilter) {
|
|
122
|
-
return true;
|
|
123
|
-
}
|
|
124
|
-
// apply filter expression on option (applied to its iteration)
|
|
125
|
-
return !isFilteredOutOption(variables, [index], logger, optionFilter);
|
|
126
|
-
})
|
|
127
|
-
.map((option) => {
|
|
128
|
-
return {
|
|
129
|
-
label: String(option),
|
|
130
|
-
value: option,
|
|
131
|
-
checked: value === option,
|
|
132
|
-
onCheck: () => {
|
|
133
|
-
handleChanges([{ name: responseName, value: option }]);
|
|
134
|
-
},
|
|
135
|
-
onUncheck: () => {
|
|
136
|
-
handleChanges([{ name: responseName, value: null }]);
|
|
137
|
-
},
|
|
138
|
-
shouldBeFiltered: shouldParentBeFiltered,
|
|
139
|
-
};
|
|
140
|
-
});
|
|
141
|
-
}
|
|
142
87
|
/**
|
|
143
88
|
* Check if an option should be filtered, depending on its conditionFilter.
|
|
144
89
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"propOptions.js","sourceRoot":"","sources":["../../../src/use-lunatic/props/propOptions.ts"],"names":[],"mappings":"AAOA,OAAO,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAC;AAoB9C;;GAEG;AACH,MAAM,UAAU,
|
|
1
|
+
{"version":3,"file":"propOptions.js","sourceRoot":"","sources":["../../../src/use-lunatic/props/propOptions.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,100 +1,69 @@
|
|
|
1
1
|
import { beforeEach, describe, expect, it, vi } from 'vitest';
|
|
2
2
|
import { LunaticVariablesStore } from '../commons/variables/lunatic-variables-store';
|
|
3
|
-
import {
|
|
4
|
-
describe('
|
|
3
|
+
import { getOptionsProp } from './propOptions';
|
|
4
|
+
describe('getOptionsProp()', () => {
|
|
5
5
|
let variables;
|
|
6
|
+
const checkboxGroupDefinition = {
|
|
7
|
+
id: 'CheckboxGroup',
|
|
8
|
+
componentType: 'CheckboxGroup',
|
|
9
|
+
responses: [
|
|
10
|
+
{
|
|
11
|
+
label: 'Option 1',
|
|
12
|
+
response: { name: 'O1' },
|
|
13
|
+
id: 'id1',
|
|
14
|
+
},
|
|
15
|
+
{
|
|
16
|
+
label: 'Option 2',
|
|
17
|
+
response: { name: 'O2' },
|
|
18
|
+
id: 'id2',
|
|
19
|
+
},
|
|
20
|
+
],
|
|
21
|
+
};
|
|
22
|
+
const radioDefinition = {
|
|
23
|
+
id: 'RadioGroup',
|
|
24
|
+
componentType: 'Radio',
|
|
25
|
+
response: { name: 'RADIO' },
|
|
26
|
+
options: [
|
|
27
|
+
{
|
|
28
|
+
label: 'Option 1',
|
|
29
|
+
value: 'id1',
|
|
30
|
+
},
|
|
31
|
+
{
|
|
32
|
+
label: 'Option 2',
|
|
33
|
+
value: 'id2',
|
|
34
|
+
},
|
|
35
|
+
],
|
|
36
|
+
};
|
|
6
37
|
let mockChange;
|
|
7
38
|
const mockLogger = vi.fn();
|
|
8
39
|
beforeEach(() => {
|
|
9
40
|
mockChange = vi.fn();
|
|
10
41
|
variables = new LunaticVariablesStore();
|
|
11
42
|
});
|
|
12
|
-
describe('
|
|
13
|
-
const checkboxGroupDefinition = {
|
|
14
|
-
id: 'CheckboxGroup',
|
|
15
|
-
componentType: 'CheckboxGroup',
|
|
16
|
-
responses: [
|
|
17
|
-
{
|
|
18
|
-
label: 'Option 1',
|
|
19
|
-
response: { name: 'O1' },
|
|
20
|
-
id: 'id1',
|
|
21
|
-
},
|
|
22
|
-
{
|
|
23
|
-
label: 'Option 2',
|
|
24
|
-
response: { name: 'O2' },
|
|
25
|
-
id: 'id2',
|
|
26
|
-
},
|
|
27
|
-
],
|
|
28
|
-
};
|
|
29
|
-
const radioDefinition = {
|
|
30
|
-
id: 'RadioGroup',
|
|
31
|
-
componentType: 'Radio',
|
|
32
|
-
response: { name: 'RADIO' },
|
|
33
|
-
options: [
|
|
34
|
-
{
|
|
35
|
-
label: 'Option 1',
|
|
36
|
-
value: 'id1',
|
|
37
|
-
},
|
|
38
|
-
{
|
|
39
|
-
label: 'Option 2',
|
|
40
|
-
value: 'id2',
|
|
41
|
-
},
|
|
42
|
-
],
|
|
43
|
-
};
|
|
43
|
+
describe('CheckboxGroup', () => {
|
|
44
44
|
it('should check boxes', () => {
|
|
45
45
|
variables.set('O2', false);
|
|
46
|
-
let options =
|
|
47
|
-
variables,
|
|
48
|
-
handleChanges: mockChange,
|
|
49
|
-
pagerIteration: undefined,
|
|
50
|
-
value: undefined,
|
|
51
|
-
logger: mockLogger,
|
|
52
|
-
});
|
|
46
|
+
let options = getOptionsProp(checkboxGroupDefinition, variables, mockChange, undefined, undefined, mockLogger);
|
|
53
47
|
expect(options[1].checked).toBe(false);
|
|
54
48
|
variables.set('O2', true);
|
|
55
|
-
options =
|
|
56
|
-
variables,
|
|
57
|
-
handleChanges: mockChange,
|
|
58
|
-
pagerIteration: undefined,
|
|
59
|
-
value: undefined,
|
|
60
|
-
logger: mockLogger,
|
|
61
|
-
});
|
|
49
|
+
options = getOptionsProp(checkboxGroupDefinition, variables, mockChange, undefined, undefined, mockLogger);
|
|
62
50
|
expect(options[1].checked).toBe(true);
|
|
63
51
|
});
|
|
64
52
|
it('should check boxes correctly within iteration', () => {
|
|
65
53
|
variables.set('O1', []);
|
|
66
54
|
variables.set('O2', []);
|
|
67
|
-
let options =
|
|
68
|
-
variables,
|
|
69
|
-
handleChanges: mockChange,
|
|
70
|
-
pagerIteration: 0,
|
|
71
|
-
value: undefined,
|
|
72
|
-
logger: mockLogger,
|
|
73
|
-
});
|
|
55
|
+
let options = getOptionsProp(checkboxGroupDefinition, variables, mockChange, 0, undefined, mockLogger);
|
|
74
56
|
expect(options.filter((o) => o.checked), 'Nothing checked when variable empty').toHaveLength(0);
|
|
75
57
|
variables.set('O1', [true, 0]);
|
|
76
|
-
options =
|
|
77
|
-
variables,
|
|
78
|
-
handleChanges: mockChange,
|
|
79
|
-
pagerIteration: 0,
|
|
80
|
-
value: undefined,
|
|
81
|
-
logger: mockLogger,
|
|
82
|
-
});
|
|
58
|
+
options = getOptionsProp(checkboxGroupDefinition, variables, mockChange, 0, undefined, mockLogger);
|
|
83
59
|
expect(options[0].checked).toBe(true);
|
|
84
60
|
expect(options[1].checked).toBe(false);
|
|
85
61
|
});
|
|
86
62
|
it('should create handleChange correctly', () => {
|
|
87
|
-
var _a, _b;
|
|
88
63
|
variables.set('O1', [true, false]);
|
|
89
64
|
variables.set('O2', [false, true]);
|
|
90
|
-
const options =
|
|
91
|
-
|
|
92
|
-
handleChanges: mockChange,
|
|
93
|
-
pagerIteration: 1,
|
|
94
|
-
value: undefined,
|
|
95
|
-
logger: mockLogger,
|
|
96
|
-
});
|
|
97
|
-
(_b = (_a = options[1]).onCheck) === null || _b === void 0 ? void 0 : _b.call(_a, false);
|
|
65
|
+
const options = getOptionsProp(checkboxGroupDefinition, variables, mockChange, 1, undefined, mockLogger);
|
|
66
|
+
options[1].onCheck(false);
|
|
98
67
|
expect(mockChange).toHaveBeenLastCalledWith([
|
|
99
68
|
{ name: 'O2', value: false },
|
|
100
69
|
]);
|
|
@@ -125,13 +94,7 @@ describe('computeOptionsFromComponent', () => {
|
|
|
125
94
|
],
|
|
126
95
|
};
|
|
127
96
|
variables.set('DETAIL', true);
|
|
128
|
-
const options =
|
|
129
|
-
variables,
|
|
130
|
-
handleChanges: mockChange,
|
|
131
|
-
pagerIteration: undefined,
|
|
132
|
-
value: undefined,
|
|
133
|
-
logger: mockLogger,
|
|
134
|
-
});
|
|
97
|
+
const options = getOptionsProp(definition, variables, mockChange, undefined, undefined, mockLogger);
|
|
135
98
|
expect(options).toHaveLength(2);
|
|
136
99
|
expect(options[0].detailLabel).toBe('Precize:');
|
|
137
100
|
expect(options[1].detailLabel).toBe('Precize:');
|
|
@@ -164,13 +127,7 @@ describe('computeOptionsFromComponent', () => {
|
|
|
164
127
|
],
|
|
165
128
|
};
|
|
166
129
|
variables.set('DETAIL', true);
|
|
167
|
-
const options =
|
|
168
|
-
variables,
|
|
169
|
-
handleChanges: mockChange,
|
|
170
|
-
pagerIteration: undefined,
|
|
171
|
-
value: undefined,
|
|
172
|
-
logger: mockLogger,
|
|
173
|
-
});
|
|
130
|
+
const options = getOptionsProp(definition, variables, mockChange, undefined, undefined, mockLogger);
|
|
174
131
|
expect(options).toHaveLength(2);
|
|
175
132
|
expect(options[0].detailLabel).toBe('Precize:');
|
|
176
133
|
expect(options[1].detailLabel).toBe('Precize:');
|
|
@@ -197,13 +154,7 @@ describe('computeOptionsFromComponent', () => {
|
|
|
197
154
|
},
|
|
198
155
|
],
|
|
199
156
|
};
|
|
200
|
-
const options =
|
|
201
|
-
variables,
|
|
202
|
-
handleChanges: mockChange,
|
|
203
|
-
pagerIteration: undefined,
|
|
204
|
-
value: undefined,
|
|
205
|
-
logger: mockLogger,
|
|
206
|
-
});
|
|
157
|
+
const options = getOptionsProp(definition, variables, mockChange, undefined, undefined, mockLogger);
|
|
207
158
|
// First option should be filtered out since its conditionFilter is evaluated to false
|
|
208
159
|
expect(options).toHaveLength(1);
|
|
209
160
|
expect(options[0].label).toBe('Option 2');
|
|
@@ -224,13 +175,7 @@ describe('computeOptionsFromComponent', () => {
|
|
|
224
175
|
},
|
|
225
176
|
],
|
|
226
177
|
};
|
|
227
|
-
const options =
|
|
228
|
-
variables,
|
|
229
|
-
handleChanges: mockChange,
|
|
230
|
-
pagerIteration: undefined,
|
|
231
|
-
value: undefined,
|
|
232
|
-
logger: mockLogger,
|
|
233
|
-
});
|
|
178
|
+
const options = getOptionsProp(definition, variables, mockChange, undefined, undefined, mockLogger);
|
|
234
179
|
// First option should be filtered out since its conditionFilter is evaluated to false
|
|
235
180
|
expect(options).toHaveLength(1);
|
|
236
181
|
expect(options[0].label).toBe('Option 2');
|
|
@@ -251,13 +196,7 @@ describe('computeOptionsFromComponent', () => {
|
|
|
251
196
|
vi.spyOn(variables, 'run').mockImplementation(() => {
|
|
252
197
|
throw new Error('Test error');
|
|
253
198
|
});
|
|
254
|
-
const options =
|
|
255
|
-
variables,
|
|
256
|
-
handleChanges: mockChange,
|
|
257
|
-
pagerIteration: undefined,
|
|
258
|
-
value: undefined,
|
|
259
|
-
logger: mockLogger,
|
|
260
|
-
});
|
|
199
|
+
const options = getOptionsProp(definition, variables, mockChange, undefined, undefined, mockLogger);
|
|
261
200
|
// Ensure the option is not filtered
|
|
262
201
|
expect(options).toHaveLength(1);
|
|
263
202
|
expect(options[0].shouldBeFiltered).toBe(false);
|
|
@@ -277,13 +216,7 @@ describe('computeOptionsFromComponent', () => {
|
|
|
277
216
|
vi.spyOn(variables, 'run').mockImplementation(() => {
|
|
278
217
|
throw new Error('Test error');
|
|
279
218
|
});
|
|
280
|
-
const options =
|
|
281
|
-
variables,
|
|
282
|
-
handleChanges: mockChange,
|
|
283
|
-
pagerIteration: undefined,
|
|
284
|
-
value: undefined,
|
|
285
|
-
logger: mockLogger,
|
|
286
|
-
});
|
|
219
|
+
const options = getOptionsProp(definition, variables, mockChange, undefined, undefined, mockLogger);
|
|
287
220
|
// Ensure the option is not filtered
|
|
288
221
|
expect(options).toHaveLength(1);
|
|
289
222
|
expect(options[0].shouldBeFiltered).toBe(false);
|
|
@@ -304,14 +237,8 @@ describe('computeOptionsFromComponent', () => {
|
|
|
304
237
|
vi.spyOn(variables, 'run').mockImplementation(() => {
|
|
305
238
|
return false;
|
|
306
239
|
});
|
|
307
|
-
const options =
|
|
308
|
-
|
|
309
|
-
handleChanges: mockChange,
|
|
310
|
-
pagerIteration: undefined,
|
|
311
|
-
value: undefined,
|
|
312
|
-
logger: mockLogger,
|
|
313
|
-
disableFilters: true,
|
|
314
|
-
});
|
|
240
|
+
const options = getOptionsProp(definition, variables, mockChange, undefined, undefined, mockLogger, true // disableFilters = true
|
|
241
|
+
);
|
|
315
242
|
// Ensure the option is not filtered
|
|
316
243
|
expect(options).toHaveLength(1);
|
|
317
244
|
// the option should would have been filtered if we did not disable filters
|
|
@@ -332,14 +259,8 @@ describe('computeOptionsFromComponent', () => {
|
|
|
332
259
|
vi.spyOn(variables, 'run').mockImplementation(() => {
|
|
333
260
|
return false;
|
|
334
261
|
});
|
|
335
|
-
const options =
|
|
336
|
-
|
|
337
|
-
handleChanges: mockChange,
|
|
338
|
-
pagerIteration: undefined,
|
|
339
|
-
value: undefined,
|
|
340
|
-
logger: mockLogger,
|
|
341
|
-
disableFilters: true,
|
|
342
|
-
});
|
|
262
|
+
const options = getOptionsProp(definition, variables, mockChange, undefined, undefined, mockLogger, true // disableFilters = true
|
|
263
|
+
);
|
|
343
264
|
// Ensure the option is not filtered
|
|
344
265
|
expect(options).toHaveLength(1);
|
|
345
266
|
// the option should would have been filtered if we did not disable filters
|
|
@@ -357,15 +278,9 @@ describe('computeOptionsFromComponent', () => {
|
|
|
357
278
|
},
|
|
358
279
|
],
|
|
359
280
|
};
|
|
360
|
-
const options =
|
|
361
|
-
|
|
362
|
-
|
|
363
|
-
pagerIteration: undefined,
|
|
364
|
-
value: undefined,
|
|
365
|
-
logger: mockLogger,
|
|
366
|
-
disableFilters: true,
|
|
367
|
-
shouldParentBeFiltered: true,
|
|
368
|
-
});
|
|
281
|
+
const options = getOptionsProp(definition, variables, mockChange, undefined, undefined, mockLogger, true, // disableFilters = true
|
|
282
|
+
true // parent component should be filtered
|
|
283
|
+
);
|
|
369
284
|
// Ensure the option is not filtered
|
|
370
285
|
expect(options).toHaveLength(1);
|
|
371
286
|
// the option would have been filtered if we did not disable filters because its parent would
|
|
@@ -382,93 +297,14 @@ describe('computeOptionsFromComponent', () => {
|
|
|
382
297
|
},
|
|
383
298
|
],
|
|
384
299
|
};
|
|
385
|
-
const options =
|
|
386
|
-
|
|
387
|
-
|
|
388
|
-
pagerIteration: undefined,
|
|
389
|
-
value: undefined,
|
|
390
|
-
logger: mockLogger,
|
|
391
|
-
disableFilters: true,
|
|
392
|
-
shouldParentBeFiltered: true,
|
|
393
|
-
});
|
|
300
|
+
const options = getOptionsProp(definition, variables, mockChange, undefined, undefined, mockLogger, true, // disableFilters = true
|
|
301
|
+
true // parent component should be filtered
|
|
302
|
+
);
|
|
394
303
|
// Ensure the option is not filtered
|
|
395
304
|
expect(options).toHaveLength(1);
|
|
396
305
|
// the option would have been filtered if we did not disable filters because its parent would
|
|
397
306
|
expect(options[0].shouldBeFiltered).toBe(true);
|
|
398
307
|
});
|
|
399
308
|
});
|
|
400
|
-
describe('Options based on a source variable', () => {
|
|
401
|
-
const radioOptionSourceDefinition = {
|
|
402
|
-
id: 'RadioGroupDynamic',
|
|
403
|
-
componentType: 'Radio',
|
|
404
|
-
response: { name: 'RADIO' },
|
|
405
|
-
optionSource: 'NAME',
|
|
406
|
-
};
|
|
407
|
-
it('should build options when the source variable is an array of strings', () => {
|
|
408
|
-
variables.set('NAME', ['Maëlle', 'Verso']);
|
|
409
|
-
const options = computeOptionsFromComponent(radioOptionSourceDefinition, {
|
|
410
|
-
variables,
|
|
411
|
-
handleChanges: mockChange,
|
|
412
|
-
pagerIteration: undefined,
|
|
413
|
-
value: undefined,
|
|
414
|
-
logger: mockLogger,
|
|
415
|
-
}); // force type but it should infer type correctly
|
|
416
|
-
expect(options).toHaveLength(2);
|
|
417
|
-
expect(options[0].value).toBe('Maëlle');
|
|
418
|
-
expect(options[0].label).toBe('Maëlle');
|
|
419
|
-
expect(options[1].value).toBe('Verso');
|
|
420
|
-
expect(options[1].label).toBe('Verso');
|
|
421
|
-
});
|
|
422
|
-
it('should build options when the source variable is an array of numbers', () => {
|
|
423
|
-
variables.set('NAME', [10, 20]);
|
|
424
|
-
const options = computeOptionsFromComponent(radioOptionSourceDefinition, {
|
|
425
|
-
variables,
|
|
426
|
-
handleChanges: mockChange,
|
|
427
|
-
pagerIteration: undefined,
|
|
428
|
-
value: undefined,
|
|
429
|
-
logger: mockLogger,
|
|
430
|
-
}); // force type but it should infer type correctly
|
|
431
|
-
expect(options).toHaveLength(2);
|
|
432
|
-
expect(options[0].value).toBe(10);
|
|
433
|
-
expect(options[0].label).toBe('10');
|
|
434
|
-
expect(options[1].value).toBe(20);
|
|
435
|
-
expect(options[1].label).toBe('20');
|
|
436
|
-
});
|
|
437
|
-
it('should set the response when selecting a dynamic option', () => {
|
|
438
|
-
var _a, _b, _c, _d;
|
|
439
|
-
variables.set('NAME', ['Maëlle', 'Verso']);
|
|
440
|
-
const options = 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
|
-
(_b = (_a = options[0]).onCheck) === null || _b === void 0 ? void 0 : _b.call(_a);
|
|
448
|
-
expect(mockChange).toHaveBeenLastCalledWith([
|
|
449
|
-
{ name: 'RADIO', value: 'Maëlle' },
|
|
450
|
-
]);
|
|
451
|
-
(_d = (_c = options[1]).onCheck) === null || _d === void 0 ? void 0 : _d.call(_c);
|
|
452
|
-
expect(mockChange).toHaveBeenLastCalledWith([
|
|
453
|
-
{ name: 'RADIO', value: 'Verso' },
|
|
454
|
-
]);
|
|
455
|
-
});
|
|
456
|
-
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 = 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
|
-
expect(options.map((option) => option.value)).toEqual(['Verso', 'Aline']);
|
|
471
|
-
});
|
|
472
|
-
});
|
|
473
309
|
});
|
|
474
310
|
//# sourceMappingURL=propOptions.spec.js.map
|