import * as React from "react"; import { ClassHelpers } from "../../../utilities/classHelpers"; import { generateUniqueId } from "../form"; import { DataValidationMessage, DataValidationMode } from "../formCore"; export interface IRadioInput { focus: () => void blur: () => void } export interface IRadioInputProps extends React.InputHTMLAttributes { labelContent: React.ReactNode; } const RadioInputRef: React.RefForwardingComponent = (props, ref) => { const { labelContent, id, ...attrs } = props const input = React.useRef(undefined) const refCallback = React.useCallback(() => { return { focus() { if (input.current) { input.current.focus() } }, blur() { if (input.current) { input.current.blur() } }, } }, [input]) React.useImperativeHandle(ref, refCallback, [refCallback]) const validationMessage = DataValidationMessage.get(props) const validationMode = DataValidationMode.get(props) const autoId = React.useMemo(() => id || generateUniqueId(u => "radio_" + u), [id]); const classes = React.useMemo(() => ClassHelpers.classNames( "armstrong-input", "radio", props.className, { "show-validation": (validationMode !== "none" && validationMessage), }, ), [props.className, validationMode, validationMessage]); return (
); } export const RadioInput = React.forwardRef(RadioInputRef)