@inseefr/lunatic 3.4.10-rc.0 → 3.4.10-rc.1
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/components/shared/Radio/RadioOption.js +5 -1
- package/components/shared/Radio/RadioOption.js.map +1 -1
- package/components/shared/Radio/RadioOption.spec.js +21 -0
- package/components/shared/Radio/RadioOption.spec.js.map +1 -1
- package/esm/components/shared/Radio/RadioOption.js +5 -1
- package/esm/components/shared/Radio/RadioOption.js.map +1 -1
- package/esm/components/shared/Radio/RadioOption.spec.js +21 -0
- package/esm/components/shared/Radio/RadioOption.spec.js.map +1 -1
- package/esm/use-lunatic/props/propOptions.d.ts +2 -0
- package/esm/use-lunatic/props/propOptions.js +4 -0
- package/esm/use-lunatic/props/propOptions.js.map +1 -1
- package/package.json +1 -1
- package/src/components/shared/Radio/RadioOption.spec.tsx +55 -0
- package/src/components/shared/Radio/RadioOption.tsx +5 -0
- package/src/use-lunatic/props/propOptions.ts +5 -0
- package/tsconfig.build.tsbuildinfo +1 -1
- package/use-lunatic/props/propOptions.d.ts +2 -0
- package/use-lunatic/props/propOptions.js +4 -0
- package/use-lunatic/props/propOptions.js.map +1 -1
|
@@ -11,13 +11,17 @@ const useKeyboardKey_1 = require("../../../hooks/useKeyboardKey");
|
|
|
11
11
|
const Label_1 = require("../Label/Label");
|
|
12
12
|
const classnames_1 = __importDefault(require("classnames"));
|
|
13
13
|
const Input_1 = require("../../Input/Input");
|
|
14
|
-
function LunaticRadioOption({ checked, disabled, readOnly, checkboxStyle, value, onKeyDown, index, shortcut, codeModality, id, invalid, labelledBy, description, label, onDetailChange, detailAlwaysDisplayed, detailLabel, detailValue, onCheck, }) {
|
|
14
|
+
function LunaticRadioOption({ checked, disabled, readOnly, checkboxStyle, value, onKeyDown, index, shortcut, codeModality, id, invalid, labelledBy, description, label, onDetailChange, detailAlwaysDisplayed, detailLabel, detailValue, onCheck, onUncheck, }) {
|
|
15
15
|
const divEl = (0, react_1.useRef)(null);
|
|
16
16
|
const isEnabled = !disabled && !readOnly;
|
|
17
17
|
const isRadio = !checkboxStyle;
|
|
18
18
|
const hasDetail = !!onDetailChange;
|
|
19
19
|
const onClickOption = () => {
|
|
20
20
|
if (!isEnabled || !onCheck || checked) {
|
|
21
|
+
// for checkboxStyle=true (only used by CheckboxOne) , we allow uncheck
|
|
22
|
+
if (checkboxStyle && onUncheck) {
|
|
23
|
+
onUncheck();
|
|
24
|
+
}
|
|
21
25
|
return;
|
|
22
26
|
}
|
|
23
27
|
onCheck();
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"RadioOption.js","sourceRoot":"","sources":["../../../src/components/shared/Radio/RadioOption.tsx"],"names":[],"mappings":";;;;;;;AAAA,iCAAqE;AACrE,kEAA+D;AAC/D,kEAA+D;AAC/D,0CAAuC;AACvC,4DAAoC;AACpC,6CAAgD;AAiBhD,SAAS,kBAAkB,CAAC,EAC3B,OAAO,EACP,QAAQ,EACR,QAAQ,EACR,aAAa,EACb,KAAK,EACL,SAAS,EACT,KAAK,EACL,QAAQ,EACR,YAAY,EACZ,EAAE,EACF,OAAO,EACP,UAAU,EACV,WAAW,EACX,KAAK,EACL,cAAc,EACd,qBAAqB,EACrB,WAAW,EACX,WAAW,EACX,OAAO,
|
|
1
|
+
{"version":3,"file":"RadioOption.js","sourceRoot":"","sources":["../../../src/components/shared/Radio/RadioOption.tsx"],"names":[],"mappings":";;;;;;;AAAA,iCAAqE;AACrE,kEAA+D;AAC/D,kEAA+D;AAC/D,0CAAuC;AACvC,4DAAoC;AACpC,6CAAgD;AAiBhD,SAAS,kBAAkB,CAAC,EAC3B,OAAO,EACP,QAAQ,EACR,QAAQ,EACR,aAAa,EACb,KAAK,EACL,SAAS,EACT,KAAK,EACL,QAAQ,EACR,YAAY,EACZ,EAAE,EACF,OAAO,EACP,UAAU,EACV,WAAW,EACX,KAAK,EACL,cAAc,EACd,qBAAqB,EACrB,WAAW,EACX,WAAW,EACX,OAAO,EACP,SAAS,GACF;IACP,MAAM,KAAK,GAAG,IAAA,cAAM,EAAiB,IAAI,CAAC,CAAC;IAC3C,MAAM,SAAS,GAAG,CAAC,QAAQ,IAAI,CAAC,QAAQ,CAAC;IACzC,MAAM,OAAO,GAAG,CAAC,aAAa,CAAC;IAC/B,MAAM,SAAS,GAAG,CAAC,CAAC,cAAc,CAAC;IAEnC,MAAM,aAAa,GAAG,GAAG,EAAE;QAC1B,IAAI,CAAC,SAAS,IAAI,CAAC,OAAO,IAAI,OAAO,EAAE,CAAC;YACvC,uEAAuE;YACvE,IAAI,aAAa,IAAI,SAAS,EAAE,CAAC;gBAChC,SAAS,EAAE,CAAC;YACb,CAAC;YACD,OAAO;QACR,CAAC;QACD,OAAO,EAAE,CAAC;IACX,CAAC,CAAC;IAEF,MAAM,aAAa,GAAyC,CAAC,CAAC,EAAE,EAAE;QACjE,SAAS,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,CAAC,GAAG,EAAE,KAAK,EAAE,KAAK,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC;QAChD,KAAK,CAAC,OAAO,EAAE,IAAI,EAAE,CAAC;IACvB,CAAC,CAAC;IAEF,IAAA,iBAAS,EACR;QACC,MAAM,EAAE,OAAO,EAAE,GAAG,KAAK,CAAC;QAC1B,IAAI,OAAO,IAAI,OAAO,EAAE,CAAC;YACxB,OAAO,CAAC,KAAK,EAAE,CAAC;QACjB,CAAC;IACF,CAAC,EACD,CAAC,OAAO,EAAE,KAAK,EAAE,KAAK,CAAC,CACvB,CAAC;IAEF,MAAM,mBAAmB,GAAG,OAAO,CAAC,QAAQ,IAAI,YAAY,IAAI,SAAS,CAAC,CAAC;IAC3E,IAAA,+BAAc,EACb,YAAY,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,EAAE,EAClC,CAAC,CAAC,EAAE,EAAE;QACL,CAAC,CAAC,cAAc,EAAE,CAAC;QACnB,aAAa,EAAE,CAAC;IACjB,CAAC,EACD,mBAAmB,CACnB,CAAC;IAEF,OAAO,CACN,iCAAK,SAAS,EAAC,gCAAgC,aAC9C,iCACC,EAAE,EAAE,EAAE,EACN,IAAI,EAAC,OAAO,kBACE,OAAO,mBACN,QAAQ,EACvB,SAAS,EAAE,IAAA,oBAAU,EACpB,wBAAwB,EACxB,OAAO,IAAI,qBAAqB,CAChC,kBACa,OAAO,EACrB,QAAQ,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAC1B,OAAO,EAAE,aAAa,EACtB,SAAS,EAAE,aAAa,qBACP,UAAU,EAC3B,GAAG,EAAE,KAAK,aAEV,gCAAK,SAAS,EAAC,8BAA8B,YAC3C,OAAO,IAAI,aAAa,IAAI,CAC5B,gCACC,KAAK,EAAC,4BAA4B,EAClC,IAAI,EAAC,MAAM,EACX,OAAO,EAAC,WAAW,YAEnB,iCACC,CAAC,EAAC,2CAA2C,EAC7C,IAAI,EAAC,cAAc,GAClB,GACG,CACN,GACI,EACN,wBAAC,aAAK,IAAC,EAAE,EAAE,UAAU,EAAE,OAAO,EAAE,EAAE,EAAE,WAAW,EAAE,WAAW,aAC1D,YAAY,IAAI,CAChB,iCAAM,SAAS,EAAC,eAAe,YAAE,YAAY,CAAC,WAAW,EAAE,GAAQ,CACnE,EACA,KAAK,IACC,IACH,EACL,SAAS,IAAI,CAAC,OAAO,IAAI,qBAAqB,CAAC,IAAI,CACnD,uBAAC,mBAAW,IACX,EAAE,EAAC,UAAU,EACb,KAAK,EAAE,WAAW,IAAI,YAAY,EAClC,KAAK,EAAE,OAAO,WAAW,KAAK,QAAQ,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,EAAE,EACzD,QAAQ,EAAE,cAAc,EACxB,QAAQ,EAAE,QAAQ,GACjB,CACF,IACI,CACN,CAAC;AACH,CAAC;AAEY,QAAA,WAAW,GAAG,IAAA,uCAAkB,EAC5C,aAAa,EACb,kBAAkB,CAClB,CAAC"}
|
|
@@ -17,6 +17,27 @@ const vitest_1 = require("vitest");
|
|
|
17
17
|
react_1.fireEvent.click(option);
|
|
18
18
|
(0, vitest_1.expect)(onClickMock).toHaveBeenCalled();
|
|
19
19
|
});
|
|
20
|
+
(0, vitest_1.it)('does not allow to uncheck modality if checkboxStyle is not defined', () => {
|
|
21
|
+
const onClickMock = vitest_1.vi.fn();
|
|
22
|
+
(0, react_1.render)((0, jsx_runtime_1.jsx)(RadioOption_1.RadioOption, { id: "radio-option", label: "Test Option", onCheck: onClickMock, onUncheck: onClickMock, checked: true }));
|
|
23
|
+
const option = react_1.screen.getByRole('radio');
|
|
24
|
+
react_1.fireEvent.click(option);
|
|
25
|
+
(0, vitest_1.expect)(onClickMock).not.toHaveBeenCalled();
|
|
26
|
+
});
|
|
27
|
+
(0, vitest_1.it)('does not allow to uncheck modality if checkboxStyle is false', () => {
|
|
28
|
+
const onClickMock = vitest_1.vi.fn();
|
|
29
|
+
(0, react_1.render)((0, jsx_runtime_1.jsx)(RadioOption_1.RadioOption, { id: "radio-option", label: "Test Option", onCheck: onClickMock, onUncheck: onClickMock, checkboxStyle: false, checked: true }));
|
|
30
|
+
const option = react_1.screen.getByRole('radio');
|
|
31
|
+
react_1.fireEvent.click(option);
|
|
32
|
+
(0, vitest_1.expect)(onClickMock).not.toHaveBeenCalled();
|
|
33
|
+
});
|
|
34
|
+
(0, vitest_1.it)('allows to uncheck modality if checkboxStyle = true and onUncheck', () => {
|
|
35
|
+
const onClickMock = vitest_1.vi.fn();
|
|
36
|
+
(0, react_1.render)((0, jsx_runtime_1.jsx)(RadioOption_1.RadioOption, { id: "radio-option", label: "Test Option", onCheck: onClickMock, onUncheck: onClickMock, checkboxStyle: true, checked: true }));
|
|
37
|
+
const option = react_1.screen.getByRole('radio');
|
|
38
|
+
react_1.fireEvent.click(option);
|
|
39
|
+
(0, vitest_1.expect)(onClickMock).toHaveBeenCalled();
|
|
40
|
+
});
|
|
20
41
|
(0, vitest_1.it)('sets the tabIndex to 0 when unchecked', () => {
|
|
21
42
|
const { getByRole } = (0, react_1.render)((0, jsx_runtime_1.jsx)(RadioOption_1.RadioOption, { id: "radio-option", label: "Test Option", checked: false }));
|
|
22
43
|
(0, vitest_1.expect)(getByRole('radio')).toHaveAttribute('tabIndex', '0');
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"RadioOption.spec.js","sourceRoot":"","sources":["../../../src/components/shared/Radio/RadioOption.spec.tsx"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"RadioOption.spec.js","sourceRoot":"","sources":["../../../src/components/shared/Radio/RadioOption.spec.tsx"],"names":[],"mappings":"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"}
|
|
@@ -5,13 +5,17 @@ import { useKeyboardKey } from '../../../hooks/useKeyboardKey';
|
|
|
5
5
|
import { Label } from '../Label/Label';
|
|
6
6
|
import classnames from 'classnames';
|
|
7
7
|
import { CustomInput } from '../../Input/Input';
|
|
8
|
-
function LunaticRadioOption({ checked, disabled, readOnly, checkboxStyle, value, onKeyDown, index, shortcut, codeModality, id, invalid, labelledBy, description, label, onDetailChange, detailAlwaysDisplayed, detailLabel, detailValue, onCheck, }) {
|
|
8
|
+
function LunaticRadioOption({ checked, disabled, readOnly, checkboxStyle, value, onKeyDown, index, shortcut, codeModality, id, invalid, labelledBy, description, label, onDetailChange, detailAlwaysDisplayed, detailLabel, detailValue, onCheck, onUncheck, }) {
|
|
9
9
|
const divEl = useRef(null);
|
|
10
10
|
const isEnabled = !disabled && !readOnly;
|
|
11
11
|
const isRadio = !checkboxStyle;
|
|
12
12
|
const hasDetail = !!onDetailChange;
|
|
13
13
|
const onClickOption = () => {
|
|
14
14
|
if (!isEnabled || !onCheck || checked) {
|
|
15
|
+
// for checkboxStyle=true (only used by CheckboxOne) , we allow uncheck
|
|
16
|
+
if (checkboxStyle && onUncheck) {
|
|
17
|
+
onUncheck();
|
|
18
|
+
}
|
|
15
19
|
return;
|
|
16
20
|
}
|
|
17
21
|
onCheck();
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"RadioOption.js","sourceRoot":"","sources":["../../../../src/components/shared/Radio/RadioOption.tsx"],"names":[],"mappings":";AAAA,OAAO,EAA6B,SAAS,EAAE,MAAM,EAAE,MAAM,OAAO,CAAC;AACrE,OAAO,EAAE,kBAAkB,EAAE,MAAM,2BAA2B,CAAC;AAC/D,OAAO,EAAE,cAAc,EAAE,MAAM,+BAA+B,CAAC;AAC/D,OAAO,EAAE,KAAK,EAAE,MAAM,gBAAgB,CAAC;AACvC,OAAO,UAAU,MAAM,YAAY,CAAC;AACpC,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAiBhD,SAAS,kBAAkB,CAAC,EAC3B,OAAO,EACP,QAAQ,EACR,QAAQ,EACR,aAAa,EACb,KAAK,EACL,SAAS,EACT,KAAK,EACL,QAAQ,EACR,YAAY,EACZ,EAAE,EACF,OAAO,EACP,UAAU,EACV,WAAW,EACX,KAAK,EACL,cAAc,EACd,qBAAqB,EACrB,WAAW,EACX,WAAW,EACX,OAAO,
|
|
1
|
+
{"version":3,"file":"RadioOption.js","sourceRoot":"","sources":["../../../../src/components/shared/Radio/RadioOption.tsx"],"names":[],"mappings":"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"}
|
|
@@ -15,6 +15,27 @@ describe('RadioOption', () => {
|
|
|
15
15
|
fireEvent.click(option);
|
|
16
16
|
expect(onClickMock).toHaveBeenCalled();
|
|
17
17
|
});
|
|
18
|
+
it('does not allow to uncheck modality if checkboxStyle is not defined', () => {
|
|
19
|
+
const onClickMock = vi.fn();
|
|
20
|
+
render(_jsx(RadioOption, { id: "radio-option", label: "Test Option", onCheck: onClickMock, onUncheck: onClickMock, checked: true }));
|
|
21
|
+
const option = screen.getByRole('radio');
|
|
22
|
+
fireEvent.click(option);
|
|
23
|
+
expect(onClickMock).not.toHaveBeenCalled();
|
|
24
|
+
});
|
|
25
|
+
it('does not allow to uncheck modality if checkboxStyle is false', () => {
|
|
26
|
+
const onClickMock = vi.fn();
|
|
27
|
+
render(_jsx(RadioOption, { id: "radio-option", label: "Test Option", onCheck: onClickMock, onUncheck: onClickMock, checkboxStyle: false, checked: true }));
|
|
28
|
+
const option = screen.getByRole('radio');
|
|
29
|
+
fireEvent.click(option);
|
|
30
|
+
expect(onClickMock).not.toHaveBeenCalled();
|
|
31
|
+
});
|
|
32
|
+
it('allows to uncheck modality if checkboxStyle = true and onUncheck', () => {
|
|
33
|
+
const onClickMock = vi.fn();
|
|
34
|
+
render(_jsx(RadioOption, { id: "radio-option", label: "Test Option", onCheck: onClickMock, onUncheck: onClickMock, checkboxStyle: true, checked: true }));
|
|
35
|
+
const option = screen.getByRole('radio');
|
|
36
|
+
fireEvent.click(option);
|
|
37
|
+
expect(onClickMock).toHaveBeenCalled();
|
|
38
|
+
});
|
|
18
39
|
it('sets the tabIndex to 0 when unchecked', () => {
|
|
19
40
|
const { getByRole } = render(_jsx(RadioOption, { id: "radio-option", label: "Test Option", checked: false }));
|
|
20
41
|
expect(getByRole('radio')).toHaveAttribute('tabIndex', '0');
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"RadioOption.spec.js","sourceRoot":"","sources":["../../../../src/components/shared/Radio/RadioOption.spec.tsx"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"RadioOption.spec.js","sourceRoot":"","sources":["../../../../src/components/shared/Radio/RadioOption.spec.tsx"],"names":[],"mappings":"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"}
|
|
@@ -11,6 +11,7 @@ export type InterpretedOption = {
|
|
|
11
11
|
detailValue?: string | null;
|
|
12
12
|
onDetailChange?: (value: string) => void;
|
|
13
13
|
onCheck?: () => void;
|
|
14
|
+
onUncheck?: () => void;
|
|
14
15
|
};
|
|
15
16
|
/**
|
|
16
17
|
* Compute options for checkboxes / radios
|
|
@@ -32,6 +33,7 @@ export declare function getOptionsProp(definition: DeepTranslateExpression<Lunat
|
|
|
32
33
|
checked: boolean;
|
|
33
34
|
detailLabel: ReactNode;
|
|
34
35
|
onCheck: () => void;
|
|
36
|
+
onUncheck: () => void;
|
|
35
37
|
detailValue: unknown;
|
|
36
38
|
onDetailChange: ((value: string) => void) | null;
|
|
37
39
|
}[];
|
|
@@ -61,6 +61,10 @@ export function getOptionsProp(definition, variables, handleChanges, pagerIterat
|
|
|
61
61
|
{ name: definition.response.name, value: option.value },
|
|
62
62
|
]);
|
|
63
63
|
},
|
|
64
|
+
// for CheckboxOne, we allow uncheck
|
|
65
|
+
onUncheck: () => {
|
|
66
|
+
handleChanges([{ name: definition.response.name, value: null }]);
|
|
67
|
+
},
|
|
64
68
|
detailValue: 'detail' in option && option.detail
|
|
65
69
|
? variables.get(option.detail.response.name, iteration)
|
|
66
70
|
: null,
|
|
@@ -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;
|
|
1
|
+
{"version":3,"file":"propOptions.js","sourceRoot":"","sources":["../../../src/use-lunatic/props/propOptions.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -25,6 +25,61 @@ describe('RadioOption', () => {
|
|
|
25
25
|
expect(onClickMock).toHaveBeenCalled();
|
|
26
26
|
});
|
|
27
27
|
|
|
28
|
+
it('does not allow to uncheck modality if checkboxStyle is not defined', () => {
|
|
29
|
+
const onClickMock = vi.fn();
|
|
30
|
+
render(
|
|
31
|
+
<RadioOption
|
|
32
|
+
id="radio-option"
|
|
33
|
+
label="Test Option"
|
|
34
|
+
onCheck={onClickMock}
|
|
35
|
+
onUncheck={onClickMock}
|
|
36
|
+
checked
|
|
37
|
+
/>
|
|
38
|
+
);
|
|
39
|
+
|
|
40
|
+
const option = screen.getByRole('radio');
|
|
41
|
+
fireEvent.click(option);
|
|
42
|
+
expect(onClickMock).not.toHaveBeenCalled();
|
|
43
|
+
});
|
|
44
|
+
|
|
45
|
+
it('does not allow to uncheck modality if checkboxStyle is false', () => {
|
|
46
|
+
const onClickMock = vi.fn();
|
|
47
|
+
|
|
48
|
+
render(
|
|
49
|
+
<RadioOption
|
|
50
|
+
id="radio-option"
|
|
51
|
+
label="Test Option"
|
|
52
|
+
onCheck={onClickMock}
|
|
53
|
+
onUncheck={onClickMock}
|
|
54
|
+
checkboxStyle={false}
|
|
55
|
+
checked
|
|
56
|
+
/>
|
|
57
|
+
);
|
|
58
|
+
|
|
59
|
+
const option = screen.getByRole('radio');
|
|
60
|
+
fireEvent.click(option);
|
|
61
|
+
expect(onClickMock).not.toHaveBeenCalled();
|
|
62
|
+
});
|
|
63
|
+
|
|
64
|
+
it('allows to uncheck modality if checkboxStyle = true and onUncheck', () => {
|
|
65
|
+
const onClickMock = vi.fn();
|
|
66
|
+
|
|
67
|
+
render(
|
|
68
|
+
<RadioOption
|
|
69
|
+
id="radio-option"
|
|
70
|
+
label="Test Option"
|
|
71
|
+
onCheck={onClickMock}
|
|
72
|
+
onUncheck={onClickMock}
|
|
73
|
+
checkboxStyle={true}
|
|
74
|
+
checked
|
|
75
|
+
/>
|
|
76
|
+
);
|
|
77
|
+
|
|
78
|
+
const option = screen.getByRole('radio');
|
|
79
|
+
fireEvent.click(option);
|
|
80
|
+
expect(onClickMock).toHaveBeenCalled();
|
|
81
|
+
});
|
|
82
|
+
|
|
28
83
|
it('sets the tabIndex to 0 when unchecked', () => {
|
|
29
84
|
const { getByRole } = render(
|
|
30
85
|
<RadioOption id="radio-option" label="Test Option" checked={false} />
|
|
@@ -40,6 +40,7 @@ function LunaticRadioOption({
|
|
|
40
40
|
detailLabel,
|
|
41
41
|
detailValue,
|
|
42
42
|
onCheck,
|
|
43
|
+
onUncheck,
|
|
43
44
|
}: Props) {
|
|
44
45
|
const divEl = useRef<HTMLDivElement>(null);
|
|
45
46
|
const isEnabled = !disabled && !readOnly;
|
|
@@ -48,6 +49,10 @@ function LunaticRadioOption({
|
|
|
48
49
|
|
|
49
50
|
const onClickOption = () => {
|
|
50
51
|
if (!isEnabled || !onCheck || checked) {
|
|
52
|
+
// for checkboxStyle=true (only used by CheckboxOne) , we allow uncheck
|
|
53
|
+
if (checkboxStyle && onUncheck) {
|
|
54
|
+
onUncheck();
|
|
55
|
+
}
|
|
51
56
|
return;
|
|
52
57
|
}
|
|
53
58
|
onCheck();
|
|
@@ -18,6 +18,7 @@ export type InterpretedOption = {
|
|
|
18
18
|
detailValue?: string | null;
|
|
19
19
|
onDetailChange?: (value: string) => void;
|
|
20
20
|
onCheck?: () => void;
|
|
21
|
+
onUncheck?: () => void;
|
|
21
22
|
};
|
|
22
23
|
|
|
23
24
|
/**
|
|
@@ -86,6 +87,10 @@ export function getOptionsProp(
|
|
|
86
87
|
{ name: definition.response.name, value: option.value },
|
|
87
88
|
]);
|
|
88
89
|
},
|
|
90
|
+
// for CheckboxOne, we allow uncheck
|
|
91
|
+
onUncheck: () => {
|
|
92
|
+
handleChanges([{ name: definition.response.name, value: null }]);
|
|
93
|
+
},
|
|
89
94
|
detailValue:
|
|
90
95
|
'detail' in option && option.detail
|
|
91
96
|
? variables.get(option.detail.response.name, iteration)
|