adwaita-web
Version:
A GTK inspired toolkit designed to build awesome web apps
40 lines (39 loc) • 917 B
JavaScript
import React from "react";
import useControlled from "../utils/useControlled";
import { Box } from "./Box";
import { Radio } from "./Radio";
function RadioGroup({
size,
compact = false,
horizontal = true,
value: valueProp,
defaultValue,
onChange,
name,
options
}) {
const isControlled = valueProp !== void 0;
const [value, setValue] = useControlled(valueProp, defaultValue, onChange);
return /* @__PURE__ */ React.createElement(Box, {
horizontal,
vertical: !horizontal,
compact
}, options.map((o) => /* @__PURE__ */ React.createElement(Radio, {
key: o.value,
size,
name,
value: o.value,
checked: value === o.value,
defaultChecked: defaultValue === o.value,
label: o.label,
onChange: (checked) => {
if (checked)
setValue(o.value);
if (!isControlled && onChange)
onChange(o.value);
}
})));
}
export {
RadioGroup
};