diff --git a/src/App.tsx b/src/App.tsx index 5349b8e..31bc63a 100644 --- a/src/App.tsx +++ b/src/App.tsx @@ -1,10 +1,10 @@ -import logo from './logo.svg'; -import './App.css'; +import "./App.css"; +import ReactUseStateHooks from "./hooks/usestate/UseStateHook"; function App() { return ( -
- +
+
); } diff --git a/src/hooks/usestate/UseStateHook.tsx b/src/hooks/usestate/UseStateHook.tsx new file mode 100644 index 0000000..be5f226 --- /dev/null +++ b/src/hooks/usestate/UseStateHook.tsx @@ -0,0 +1,50 @@ +import { Button, TextField } from "@mui/material"; +import { useState } from "react"; +import TextFieldComponent from "./component/TextField"; +import RadioGroupComponent from "./component/RadioGroup"; +import SliderComponent from "./component/Slider"; + +export interface ReactUseStateHooksProps {} + +export default function ReactUseStateHooks(props: ReactUseStateHooksProps) { + return ( +
+ + + +
+ ); +} + +function Row1() { + return ( + <> +
+ 1. TextField component with useState hook +
+ + + ); +} + +function Row2() { + return ( + <> +
+ 2. Radio group component with useState hook +
+ + + ); +} + +function Row3() { + return ( + <> +
+ 3. Slider component with useState hook +
+ + + ); +} diff --git a/src/hooks/usestate/component/RadioGroup.tsx b/src/hooks/usestate/component/RadioGroup.tsx new file mode 100644 index 0000000..72223d2 --- /dev/null +++ b/src/hooks/usestate/component/RadioGroup.tsx @@ -0,0 +1,51 @@ +import { + FormControl, + FormControlLabel, + FormLabel, + Radio, + RadioGroup, +} from "@mui/material"; +import * as React from "react"; + +export interface RadioGroupComponentProps {} + +export default function RadioGroupComponent(props: RadioGroupComponentProps) { + return ( +
+ +
+ ); +} + +function Radiogroup() { + const [selection, setSelection] = React.useState("female"); + const handler = (e: any) => { + setSelection(e.target.value); + }; + + return ( + <> +
+ + Gender + + } + label="Female" + /> + } label="Male" /> + } label="Other" /> + + +
+ +
+ Selection display: +
+
+ {selection} +
+ + ); +} diff --git a/src/hooks/usestate/component/Slider.tsx b/src/hooks/usestate/component/Slider.tsx new file mode 100644 index 0000000..221b3b2 --- /dev/null +++ b/src/hooks/usestate/component/Slider.tsx @@ -0,0 +1,25 @@ +import { Slider } from "@mui/material"; +import * as React from "react"; + +export interface ISliderComponentProps {} + +export default function SliderComponent(props: ISliderComponentProps) { + const [sliderValue, setSliderValue] = React.useState(0); + const handleSlidingEvent = (e: any) => { + setSliderValue(e.target.value); + }; + + return ( +
+
+ +
+
+ Percent display: +
+
+ {sliderValue} +
+
+ ); +} diff --git a/src/hooks/usestate/component/TextField.tsx b/src/hooks/usestate/component/TextField.tsx new file mode 100644 index 0000000..85b10ca --- /dev/null +++ b/src/hooks/usestate/component/TextField.tsx @@ -0,0 +1,37 @@ +import { TextField } from "@mui/material"; +import { useState } from "react"; + +export interface TextFieldComponentProps {} + +/** + * Ui component showcasing the useState hooks usage. + * + * @param props TextField props + * @returns Ui component + */ +export default function TextFieldComponent(props: TextFieldComponentProps) { + const [textFieldValue, setTextFieldValue] = useState(""); + const handleEdit = (e: any) => { + setTextFieldValue(e.target.value); + }; + + return ( +
+
+ +
+
+ Text display: +
+
+ {textFieldValue} +
+
+ ); +}