Organisms

Samodzielne komponenty takie jak listy, modale i nawigacja.

SaveModal.js
import React, { useState, useContext, useEffect } from 'react';
import { StyledTitle, Wrapper, Content, SaveButton } from './SaveModal.styles';
import { Button } from 'components/atoms/Button/Button';
import { ReactComponent as CloseIcon } from 'assets/icons/delete.svg';
import { DatePicker } from 'react-date-time-picker-popup';
import TimePicker from 'react-times';
import { PlaylistContext } from 'providers/PlaylistProvider';
import './css/calendar.css';
import './css/time.css';

const SaveModal = ({ handleClose }) => {
  const [day, setDay] = useState(new Date());
  const [expiration, setExpiration] = useState({ hour: '02', minute: '00' });
  const { savePlaylist, isPlaylistUpdated, updatedPlaylist } = useContext(PlaylistContext);

  const closeEvents = () => {
    handleClose();
    setTimeout(() => {
      savePlaylist(day, expiration);
    }, 200);
  };

  useEffect(() => {
    if (isPlaylistUpdated) {
      setDay(updatedPlaylist.day);
      setExpiration(updatedPlaylist.expiration);
    }
    // eslint-disable-next-line
  }, []);

  return (
    <Wrapper>
      <StyledTitle>
        {!isPlaylistUpdated ? <p>Zapisz playliste</p> : <p>Zapisz zmiany</p>}
        <Button onClick={handleClose}>
          <CloseIcon />
        </Button>
      </StyledTitle>
      <Content>
        <p>Wybierz datę</p>
        <DatePicker
          lang="pl"
          selectedDay={day}
          setSelectedDay={setDay}
          timeSelector={true}
          minuteInterval={10}
          BGColor={'#1B7290'}
        />
        <p>Wybierz po jakim czasie playlista wygaśnie</p>
        <TimePicker theme="classic" time={expiration.hour + expiration.minute} onTimeChange={setExpiration} />
        <SaveButton onClick={closeEvents}>ZAPISZ</SaveButton>
      </Content>
    </Wrapper>
  );
};

export default SaveModal;

Last updated