Files
web-menu-react-version-/src/components/ProRatioGroups/ProRatioGroups.tsx
2026-01-05 08:50:11 +03:00

90 lines
2.4 KiB
TypeScript

import { Divider, Radio, RadioChangeEvent, Space } from "antd";
import ProText from "components/ProText";
import styles from "./ProRatioGroups.module.css";
interface ProRatioGroupsProps {
options: { label: string; value: string; price?: string }[];
onRatioClick?: (value: string) => void;
onChange?: (e: RadioChangeEvent) => void;
value?: string;
optionsStyle?: React.CSSProperties;
valueStyle?: React.CSSProperties;
showDivider?: boolean;
}
const ProRatioGroups = ({
options,
onRatioClick,
onChange,
value,
optionsStyle,
valueStyle,
showDivider = false,
...props
}: ProRatioGroupsProps) => {
const handleChange = (e: RadioChangeEvent) => {
console.log(e.target.value);
// If onChange is provided (from Form.Item), use it
if (onChange) {
onChange(e);
}
// Also call onRatioClick if provided (for backward compatibility)
if (onRatioClick) {
onRatioClick(e.target.value);
}
};
return (
<div className={styles.proRatioGroups}>
<Radio.Group
style={{
width: "100%",
}}
value={value}
onChange={handleChange}
{...props}
>
<Space orientation="vertical" style={{ width: "100%" }}>
{options.map((option) => (
<>
<Radio
key={option.value}
value={option.value}
className={styles.circleCheckbox}
>
<div
style={{
display: "flex",
flexDirection: "row",
justifyContent: "space-between",
width: "100%",
padding: "8px 0",
placeItems: "center",
}}
>
<ProText
style={{
fontSize: "1rem",
...optionsStyle,
}}
>
{option.label}
</ProText>
<ProText style={{ fontSize: "1rem", ...valueStyle }}>
{option?.price}
</ProText>
</div>
</Radio>
{showDivider && options.length !== options.length - 1 && (
<Divider style={{ margin: "0 0 16px 0 " }} />
)}
</>
))}
</Space>
</Radio.Group>
</div>
);
};
export default ProRatioGroups;