Advertisement
Guest User

Untitled

a guest
Aug 21st, 2019
89
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.96 KB | None | 0 0
  1. import ReactDOM from "react-dom";
  2. import React, { useState } from "react";
  3. import { Grid, TextField, Button } from "@material-ui/core";
  4. import { Formik } from "formik";
  5. import * as Yup from "yup";
  6. import Select from "react-select";
  7. import "./styles.css";
  8.  
  9. function App() {
  10. const [selectedYear, setSelectedYear] = useState("");
  11.  
  12. const testSchema = Yup.object().shape({
  13. name: Yup.string().required("Enter Name"),
  14. year: Yup.string().required("Select Year")
  15. });
  16.  
  17. const initialValues = {
  18. name: "",
  19. year: ""
  20. };
  21.  
  22. const handleYearChange = (selectedYear, values) => {
  23. values.year = selectedYear.value;
  24. console.log(selectedYear);
  25. setSelectedYear(selectedYear);
  26. };
  27.  
  28. const yearOptions = [
  29. { value: "1960", label: "1960" },
  30. { value: "1961", label: "1961" },
  31. { value: "1962", label: "1962" },
  32. { value: "1963", label: "1963" },
  33. { value: "1964", label: "1964" },
  34. { value: "1965", label: "1965" }
  35. ];
  36.  
  37. return (
  38. <Formik validationSchema={testSchema} initialValues={initialValues}>
  39. {({
  40. handleChange,
  41. handleBlur,
  42. values,
  43. errors,
  44. touched,
  45. handleSubmit,
  46. setFieldTouched
  47. }) => {
  48. return (
  49. <>
  50. <Grid container spacing={2}>
  51. <Grid item md={12} xs={12}>
  52. <TextField
  53. label="Name"
  54. name="name"
  55. margin="normal"
  56. variant="outlined"
  57. onChange={handleChange("name")}
  58. style={{ width: "100%", zIndex: 0 }}
  59. value={values.name}
  60. onBlur={() => {
  61. console.log("name");
  62. }}
  63. />
  64. {errors.name}
  65. </Grid>
  66.  
  67. <Grid item md={6} xs={12}>
  68. <Select
  69. placeholder="Year"
  70. value={selectedYear}
  71. onChange={selectedOption => {
  72. handleYearChange(selectedOption);
  73. // handleYearChange(selectedOption, values);
  74. // values.year = selectedOption.value;
  75. console.log("values", values.year);
  76. handleChange("year");
  77. }}
  78. isSearchable={true}
  79. options={yearOptions}
  80. name="year"
  81. isLoading={false}
  82. loadingMessage={() => "Fetching year"}
  83. noOptionsMessage={() => "Year appears here"}
  84. />
  85. {errors.year}
  86. </Grid>
  87. <Grid
  88. item
  89. md={4}
  90. style={{ marginTop: "24px", marginBottom: "10px" }}
  91. xs={12}
  92. >
  93. <Button onClick={handleSubmit}>Save</Button>
  94. </Grid>
  95. </Grid>
  96. </>
  97. );
  98. }}
  99. </Formik>
  100. );
  101. }
  102.  
  103. const rootElement = document.getElementById("root");
  104. ReactDOM.render(<App />, rootElement);
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement