import * as React from "react"; import { action } from "mobx"; import { observer } from "mobx-react"; import { BoxedValue } from "boxm"; import { FormElementProps, removeProps, StyleComponent } from "./FormElementProps"; export interface RadioButtonProps extends FormElementProps { value: BoxedValue; option: T; component?: StyleComponent } @observer export class TypedRadioButton extends React.Component, {}> { @action.bound changed(ev: React.FormEvent) { if (ev.currentTarget.checked) { this.props.value.set(this.props.option); } } render() { const { component: InputComponent = "input" } = this.props; return ; } } export class RadioButton extends TypedRadioButton {} export class RadioButtonString extends TypedRadioButton {} export class RadioButtonNumber extends TypedRadioButton {} export function RadioButtonUsing(component: StyleComponent) { const I = class extends TypedRadioButton {}; return (props: RadioButtonProps) => ; }