Guest User

Untitled

a guest
May 26th, 2018
123
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.53 KB | None | 0 0
  1. module type Config = {
  2. type state;
  3. type fields;
  4. let lens: list((fields, state => ReForm.Value.t, (state, ReForm.Value.t) => state));
  5. };
  6.  
  7. module Create = (Config: Config) => {
  8. module Form = ReForm.Create(Config);
  9. type fieldSchema = {
  10. field: Config.fields,
  11. label: string,
  12. validator: ReForm.Validation.validation(Form.values),
  13. };
  14. let component = ReasonReact.statelessComponent("QuickForm");
  15. let make =
  16. (
  17. ~onSubmit,
  18. ~onFormStateChange=?,
  19. ~validate=?,
  20. ~schema: list(fieldSchema),
  21. ~initialState,
  22. ~renderField,
  23. ~renderSubmit,
  24. ~i18n=?,
  25. _children,
  26. ) => {
  27. ...component,
  28. render: _self =>
  29. <Form
  30. onSubmit
  31. initialState
  32. ?onFormStateChange
  33. ?validate
  34. ?i18n
  35. schema=(
  36. List.map(fieldSchema => (fieldSchema.field, fieldSchema.validator), schema)
  37. )>
  38. ...(
  39. reform =>
  40. <div>
  41. (
  42. List.map(
  43. fieldSchema =>
  44. renderField(
  45. ~label=fieldSchema.label,
  46. ~onChange=reform.handleChange,
  47. ~getErrorForField=reform.getErrorForField,
  48. ),
  49. schema,
  50. )
  51. |> Array.of_list
  52. |> ReasonReact.arrayToElement
  53. )
  54. (renderSubmit(~onClick=reform.handleSubmit))
  55. </div>
  56. )
  57. </Form>,
  58. };
  59. };
Add Comment
Please, Sign In to add comment