diff --git a/javascripts/src/components/common/fields.tsx b/javascripts/src/components/common/fields.tsx index d5cf690b..998fe103 100644 --- a/javascripts/src/components/common/fields.tsx +++ b/javascripts/src/components/common/fields.tsx @@ -5,15 +5,16 @@ import {Field} from "../../../../types/mobx-react-form"; import LabeledFieldComponent from "./LabeledFieldComponent"; import {injectIntl, InjectedIntl} from 'react-intl'; import {HoudiniField} from "../../lib/houdini_form"; +import ReactInput from "./form/ReactInput"; -export const BasicField = injectIntl(observer((props:{field:Field, intl?:InjectedIntl, wrapperClassName?:string}) =>{ +export const BasicField = observer((props:{field:Field, placeholder?:string, label?:string, wrapperClassName?:string}) =>{ let field = props.field as HoudiniField return - + -})) \ No newline at end of file +}) \ No newline at end of file diff --git a/javascripts/src/components/common/form/ReactForm.tsx b/javascripts/src/components/common/form/ReactForm.tsx new file mode 100644 index 00000000..c61a828b --- /dev/null +++ b/javascripts/src/components/common/form/ReactForm.tsx @@ -0,0 +1,49 @@ +// License: LGPL-3.0-or-later +import * as React from 'react'; +import { observer, Provider } from 'mobx-react'; +import {Field, Form} from "mobx-react-form"; +import {observable, action, toJS} from 'mobx'; + +export interface ReactFormProps +{ + form:Form +} + +///Mostly useless class but, at some point, will replace all our form elements +@observer +export class ReactForm extends React.Component { + + + + @observable + form:Form + + @action.bound + componentWillMount() + { + this.form = this.props.form + } + + + + + componentDidUpdate(){ + + + } + + componentWillUnmount(){ + } + + + render() { + + return
+ {this.props.children} +
+ } +} + + + + diff --git a/javascripts/src/components/common/form/ReactInput.spec.tsx b/javascripts/src/components/common/form/ReactInput.spec.tsx new file mode 100644 index 00000000..b2a030fe --- /dev/null +++ b/javascripts/src/components/common/form/ReactInput.spec.tsx @@ -0,0 +1,164 @@ +// License: LGPL-3.0-or-later +import * as React from 'react'; +import 'jest'; +import ReactInput from './ReactInput' +import {Form} from "mobx-react-form"; +import {mount} from 'enzyme'; +import {toJS, observable, action, runInAction} from 'mobx'; +import {observer} from 'mobx-react'; +import {InputHTMLAttributes} from 'react'; +import {ReactForm} from "./ReactForm"; + + + +@observer +class TestChange extends React.Component{ + @observable + remove:boolean + @observable + form: Form + + @action.bound + componentWillMount(){ + this.form = new Form({fields:[{ + name: 'name', + extra: null} + ]}) + } + + + + @action.bound + onClick(){ + this.remove = true + } + render() { + let reactInput = !this.remove ? + {this.props.children} + : undefined + + return + + {reactInput} +