BoardConfig.js 1.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778
  1. import React from "react";
  2. import { useTranslation } from "react-i18next";
  3. import { Form, Field } from "react-final-form";
  4. import AutoSave from "../ui/formUtils/AutoSave";
  5. import Label from "../ui/formUtils/Label";
  6. import useBoardConfig from "./useBoardConfig";
  7. const BoardConfig = () => {
  8. const { t } = useTranslation();
  9. const [boardConfig, setBoardConfig] = useBoardConfig();
  10. const onSubmitHandler = React.useCallback(
  11. (data) => {
  12. setBoardConfig((prev) => ({
  13. ...prev,
  14. ...data,
  15. }));
  16. },
  17. [setBoardConfig]
  18. );
  19. return (
  20. <Form
  21. onSubmit={onSubmitHandler}
  22. render={() => (
  23. <div
  24. style={{
  25. display: "flex",
  26. flexDirection: "column",
  27. }}
  28. >
  29. <AutoSave save={onSubmitHandler} />
  30. <Label>
  31. {t("Name")}
  32. <Field
  33. name="name"
  34. component="input"
  35. initialValue={boardConfig.name}
  36. />
  37. </Label>
  38. <Label>
  39. {t("Size")}
  40. <Field
  41. name="size"
  42. component="input"
  43. type="number"
  44. initialValue={boardConfig.size}
  45. />
  46. </Label>
  47. <Label>
  48. {t("Info")}
  49. <Field
  50. name="info"
  51. component="textarea"
  52. initialValue={boardConfig.info}
  53. />
  54. </Label>
  55. <Label>
  56. {t("Publish")}
  57. <Field
  58. name="published"
  59. component="input"
  60. type="checkbox"
  61. initialValue={boardConfig.published}
  62. />
  63. </Label>
  64. </div>
  65. )}
  66. />
  67. );
  68. };
  69. export default BoardConfig;