Ensure only one pre-selected radio button or custom select item

[MAILPOET-2592]
This commit is contained in:
Rostislav Wolny
2020-01-08 16:55:12 +01:00
committed by Rostislav Wolný
parent a18bf316a0
commit 5adda60fbf

View File

@@ -120,20 +120,20 @@ const Preview = ({
remove, remove,
onReorder, onReorder,
}) => { }) => {
const [valuesWhileMoved, setSegments] = useState(values); const [valuesWhileMoved, setValues] = useState(values);
const moveItem = useCallback( const moveItem = useCallback(
(dragIndex, hoverIndex) => { (dragIndex, hoverIndex) => {
const result = Array.from(valuesWhileMoved); const result = Array.from(valuesWhileMoved);
const [removed] = result.splice(dragIndex, 1); const [removed] = result.splice(dragIndex, 1);
result.splice(hoverIndex, 0, removed); result.splice(hoverIndex, 0, removed);
setSegments(result); setValues(result);
}, },
[valuesWhileMoved, setSegments], [valuesWhileMoved, setValues],
); );
useEffect(() => { useEffect(() => {
setSegments(values); setValues(values);
}, [values]); }, [values]);
if (valuesWhileMoved.length === 0) { if (valuesWhileMoved.length === 0) {
@@ -147,6 +147,13 @@ const Preview = ({
}; };
const onCheck = (valueId, checked) => { const onCheck = (valueId, checked) => {
if (checked) {
const checkedValue = valuesWhileMoved.find((v) => v.isChecked);
if (checkedValue) {
checkedValue.isChecked = false;
update(checkedValue);
}
}
const value = valuesWhileMoved.find((v) => v.id === valueId); const value = valuesWhileMoved.find((v) => v.id === valueId);
value.isChecked = checked; value.isChecked = checked;
update(value); update(value);