Skip to content

Commit

Permalink
fix task react_movies-list-add-form
Browse files Browse the repository at this point in the history
  • Loading branch information
P-Nazar committed Jan 22, 2024
1 parent bf6902e commit 042d002
Show file tree
Hide file tree
Showing 4 changed files with 13 additions and 17 deletions.
1 change: 1 addition & 0 deletions src/App.scss
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
iframe {
display: none;
}

.page {
display: grid;
grid-template: auto / 1fr 400px;
Expand Down
2 changes: 1 addition & 1 deletion src/App.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@ import moviesFromServer from './api/movies.json';
import { Movie } from './types/Movie';

export const App = () => {
const [movieList, setMovieList] = useState<Movie[]>([...moviesFromServer]);
const [movieList, setMovieList] = useState<Movie[]>(moviesFromServer);

const handleAddMovie = (newMovie: Movie) => {
setMovieList((prevMovies) => [...prevMovies, newMovie]);
Expand Down
25 changes: 10 additions & 15 deletions src/components/NewMovie/NewMovie.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -25,12 +25,6 @@ export const NewMovie: React.FC<Props> = ({ onAdd }) => {
imdbId: '',
});

// const [title, setTitle] = useState('');
// const [description, setDescription] = useState('');
// const [imgUrl, setImgUrl] = useState('');
// const [imdbUrl, setimdbUrl] = useState('');
// const [imdbId, setImdbId] = useState('');

const urlValidator = (urlString: string): boolean => {
// eslint-disable-next-line max-len
const pattern = /^((([A-Za-z]{3,9}:(?:\/\/)?)(?:[-;:&=+$,\w]+@)?[A-Za-z0-9.-]+|(?:www\.|[-;:&=+$,\w]+@)[A-Za-z0-9.-]+)((?:\/[+~%/.\w-_]*)?\??(?:[-+=&;%@,.\w_]*)#?(?:[,.!/\\\w]*))?)$/;
Expand All @@ -42,6 +36,10 @@ export const NewMovie: React.FC<Props> = ({ onAdd }) => {
return true;
};

const isDisabled = !newMovie.title.trim()
|| !urlValidator(newMovie.imgUrl) || !urlValidator(newMovie.imdbUrl)
|| !newMovie.imdbId.trim();

function addMovie(event: React.FormEvent) {
event.preventDefault();

Expand Down Expand Up @@ -82,36 +80,36 @@ export const NewMovie: React.FC<Props> = ({ onAdd }) => {
name="title"
label="Title"
value={newMovie.title}
onChange={e => handleChange(e)}
onChange={handleChange}
required
/>

<TextField
name="description"
value={newMovie.description}
onChange={e => handleChange(e)}
onChange={handleChange}
/>

<TextField
name="imgUrl"
value={newMovie.imgUrl}
onChange={e => handleChange(e)}
onChange={handleChange}
checkUrl={urlValidator}
required
/>

<TextField
name="imdbUrl"
value={newMovie.imdbUrl}
onChange={e => handleChange(e)}
onChange={handleChange}
checkUrl={urlValidator}
required
/>

<TextField
name="imdbId"
value={newMovie.imdbId}
onChange={e => handleChange(e)}
onChange={handleChange}
required
/>

Expand All @@ -121,10 +119,7 @@ export const NewMovie: React.FC<Props> = ({ onAdd }) => {
type="submit"
data-cy="submit-button"
className="button is-link"
disabled={!newMovie.title
|| !urlValidator(newMovie.imgUrl)
|| !urlValidator(newMovie.imdbUrl)
|| !newMovie.imdbId}
disabled={isDisabled}
>
Add
</button>
Expand Down
2 changes: 1 addition & 1 deletion src/components/TextField/TextField.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -31,7 +31,7 @@ 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 hasError = touched && required && !value.trim();

return (
<div className="field">
Expand Down

0 comments on commit 042d002

Please sign in to comment.