This repository has been archived on 2025-05-09. You can view files and clone it, but cannot push or open issues or pull requests.

68 lines
1.6 KiB
JavaScript

import { Radio as AntRadio } from 'antd';
import { useOptions } from 'client/hooks/useOptions';
import { useStatus } from 'client/hooks/useStatus';
import { useStoreValue } from 'client/hooks/useStoreValue';
import { Status } from "core/types/statuses";
import { observer } from 'mobx-react';
import React from 'react';
const Radio = ({ name, style, computedValue, valueName }) => {
const { value, setCurrentValue } = useStoreValue({
computedValue,
valueName,
});
const { status } = useStatus(name);
const { options } = useOptions(name);
/**
* TODO: style type in core
* TODO: column
*/
return (
<AntRadio.Group
disabled={status === Status.Disabled}
buttonStyle={style === 'button' && 'solid'}
value={value}
onChange={e => {
if (e && e.target) setCurrentValue(e.target.value);
}}
>
{options.map((option, i) => {
switch (style) {
case 'button':
if (option) {
return (
<AntRadio.Button key={i} value={option.value || ''}>
{option.name}
</AntRadio.Button>
);
}
break;
default:
if (option)
return (
<AntRadio
key={i}
value={option.value || ''}
style={styles.radio}
>
{option.name}
</AntRadio>
);
break;
}
})}
</AntRadio.Group>
);
};
const styles = {
radio: {
display: 'block',
},
};
export default observer(Radio);