import * as React from "react"; import { action, Lambda, autorun } from "mobx"; import { observer } from "mobx-react"; import { FormElementProps, removeProps, StyleComponent } from "./FormElementProps"; export interface CheckBoxProps extends FormElementProps { value: { // https://github.com/danielearwicker/bidi-mobx/issues/14 get(): boolean | undefined; set(value: boolean): void; }; component?: StyleComponent } @observer export class CheckBox extends React.Component { quit: Lambda; indeterminate = (input: HTMLInputElement) => { if (input) { this.quit = autorun(() => input.indeterminate = this.props.value.get() === undefined); } else { this.quit(); } } @action.bound changed(e: React.FormEvent) { this.props.value.set(e.currentTarget.checked); } render() { const { component: InputComponent = "input" } = this.props; return ( ); } } export function CheckBoxUsing(component: StyleComponent) { return (props: CheckBoxProps) => ; }