@ariakit/react-core
Version:
Ariakit React core
82 lines (80 loc) • 2.08 kB
JavaScript
"use client";
import {
useRadio
} from "../__chunks/G5SQMZXW.js";
import "../__chunks/IIPXEB7M.js";
import {
useFormControl
} from "../__chunks/ZNASNLV3.js";
import {
useFormContext
} from "../__chunks/AOHIIJHJ.js";
import "../__chunks/JT5CKSP7.js";
import "../__chunks/7NJRHOSP.js";
import "../__chunks/4WQSNMEM.js";
import "../__chunks/NO3UEYQ2.js";
import "../__chunks/EZ4UPVW6.js";
import "../__chunks/3F6D4KUU.js";
import "../__chunks/SWN3JYXT.js";
import {
useStoreState
} from "../__chunks/SOQQIDO4.js";
import "../__chunks/CTVD4XJH.js";
import {
createElement,
createHook,
forwardRef,
memo
} from "../__chunks/L4OUMOCQ.js";
import {
useEvent
} from "../__chunks/W2TDKEPX.js";
import "../__chunks/AZVQSWGA.js";
// src/form/form-radio.tsx
import { invariant } from "@ariakit/core/utils/misc";
var TagName = "input";
var useFormRadio = createHook(
function useFormRadio2({ store, name: nameProp, value, ...props }) {
const context = useFormContext();
store = store || context;
invariant(
store,
process.env.NODE_ENV !== "production" && "FormRadio must be wrapped in a Form component."
);
const name = String(nameProp);
const onChangeProp = props.onChange;
const onChange = useEvent((event) => {
onChangeProp == null ? void 0 : onChangeProp(event);
if (event.defaultPrevented) return;
store == null ? void 0 : store.setValue(name, value);
});
const checkedProp = props.checked;
const checked = useStoreState(
store,
() => checkedProp != null ? checkedProp : (store == null ? void 0 : store.getValue(name)) === value
);
props = {
...props,
checked,
onChange
};
props = useRadio({ name, value, ...props });
props = useFormControl({
store,
name,
"aria-labelledby": void 0,
...props
});
return props;
}
);
var FormRadio = memo(
forwardRef(function FormRadio2(props) {
const htmlProps = useFormRadio(props);
return createElement(TagName, htmlProps);
})
);
export {
FormRadio,
useFormRadio
};