Skip to content

Commit

Permalink
solved version 2
Browse files Browse the repository at this point in the history
  • Loading branch information
nikolas-hallwil committed Feb 1, 2025
1 parent 950a685 commit 45484a9
Show file tree
Hide file tree
Showing 3 changed files with 8 additions and 24 deletions.
4 changes: 2 additions & 2 deletions src/App.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -13,10 +13,10 @@ export type Movie = {
};

export const App = () => {
const [movies, setMovie] = useState([...moviesFromServer]);
const [movies, setMovies] = useState([...moviesFromServer]);

const onAdd = (movie: Movie) => {
setMovie(currentMovies => [...currentMovies, movie]);
setMovies(currentMovies => [...currentMovies, movie]);
};

return (
Expand Down
10 changes: 5 additions & 5 deletions src/components/NewMovie/NewMovie.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -40,38 +40,38 @@ export const NewMovie: React.FC<Props> = ({ onAdd }) => {
name="title"
label="Title"
value={title}
onChange={setTitle}
onChange={value => setTitle(value)}
required
/>

<TextField
name="description"
label="Description"
value={descr}
onChange={setDescr}
onChange={value => setDescr(value)}
/>

<TextField
name="imgUrl"
label="Image URL"
value={img}
onChange={setImg}
onChange={value => setImg(value)}
required
/>

<TextField
name="imdbUrl"
label="Imdb URL"
value={url}
onChange={setUrl}
onChange={value => setUrl(value)}
required
/>

<TextField
name="imdbId"
label="Imdb ID"
value={id}
onChange={setId}
onChange={value => setId(value)}
required
/>

Expand Down
18 changes: 1 addition & 17 deletions src/components/TextField/TextField.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -14,9 +14,6 @@ function getRandomDigits() {
return Math.random().toFixed(16).slice(2);
}

const pattern =
/^((([A-Za-z]{3,9}:(?:\/\/)?)(?:[-;:&=+$,\w]+@)?[A-Za-z0-9.-]+|(?:www\.|[-;:&=+$,\w]+@)[A-Za-z0-9.-]+)((?:\/[+~%/.\w-_]*)?\??(?:[-+=&;%@,.\w_]*)#?(?:[,.!/\\\w]*))?)$/;

export const TextField: React.FC<Props> = ({
name,
value,
Expand All @@ -31,7 +28,6 @@ export const TextField: React.FC<Props> = ({
// To show errors only if the field was touched (onBlur)
const [touched, setTouched] = useState(false);
const hasError = touched && required && !value;
const [validMessage, setValidMessage] = useState('');

return (
<div className="field">
Expand All @@ -50,23 +46,11 @@ export const TextField: React.FC<Props> = ({
placeholder={placeholder}
value={value}
onChange={event => onChange(event.target.value)}
onBlur={() => {
setTouched(true);
if (
(name === 'imgUrl' || name === 'imdbUrl') &&
!pattern.test(value)
) {
console.log(pattern.test(value));
setValidMessage('Not valid URL');
} else {
setValidMessage('');
}
}}
onBlur={() => setTouched(true)}
/>
</div>

{hasError && <p className="help is-danger">{`${label} is required`}</p>}
{validMessage && <p className="help is-danger">{`Not valid URL`}</p>}
</div>
);
};

0 comments on commit 45484a9

Please sign in to comment.