Модальное окно после перетягивания становиться неактивным. Теряются обработчики

Я сделал маленькое окно-форму, которое можно переносить по экрану. Но после того как оно меняет позицию, кнопки формы перестают отвечать на нажатия. Мне кажется, что после того как я "пере-добавляю" это окно к родительскому элементу, для того чтобы применить ему новые координаты, то обработчики формы теряются. как можно привязать обработчики обратно? Спасибо за совет.

Вот само модальное окно:

import React, { useState } from 'react'



export const PopUpforTime = () => {
    // DRAGABBLE POPUP
    const [error, setError] = useState()
    const formFandler = (e) => {
        e.preventDefault();
        if (e.target[1].value !== '') {
            console.log(e.target[0].value)
            console.log(e.target[1].value)
        } else {
            setError("no empty event!")
            console.log(error)
        }
    }
    const formReset = () => setError(prev => null)
    const dragModal = (e) => {
        const element = e.target.offsetParent
        element.onmousedown = function (event) {
            let shiftX = event.clientX - element.offsetLeft;
            let shiftY = event.clientY - element.offsetTop;
            e.target.offsetParent.offsetParent.appendChild(element);
            moveAt(event.pageX, event.pageY);
            // taking initial shifts into account
            function moveAt(pageX, pageY) {
                element.style.left = pageX - shiftX + 'px';
                element.style.top = pageY - shiftY + 'px';
            }
            function onMouseMove(event) {
                moveAt(event.pageX, event.pageY);
            }
            document.addEventListener('mousemove', onMouseMove);
            element.onmouseup = function () {
                document.removeEventListener('mousemove', onMouseMove);
                element.onmouseup = null;
            };
        };
        element.ondragstart = function () {
            return false;
        };
    }

    return (
        <div className="calendar__popup" id="card_id" >
            <div className="calendar__popup_drag" onMouseDown={dragModal} />
            <form
                onSubmit={(e) => formFandler(e)} className="calendar__popup_form"
                onReset={(e) => formReset(e)}
            >
                <div style={{ userSelect: "none" }} >Please set the event time and description for it</div>
                {error && <span className="error-span">{error}</span>}
                <div className="calendar__popup_inputs">
                    <input className="calendar__popup_inputs__input" name="eventTime" type="time" placeholder="event time" />
                    <textarea className="calendar__popup_inputs__input" name="eventText" type="text" placeholder="event text" />
                </div>
                <div className="calendar__popup_buttons">
                    <button className="calendar__popup_buttons__button" type="submit">Submit</button>
                    <button className="calendar__popup_buttons__button" type="reset">Reset</button>
                    <button className="calendar__popup_buttons__button" type="reset">Close</button>
                </div>
            </form>
        </div>
    )
}

А вот его родитель:

import React, { useEffect, useReducer, memo } from 'react'
import { CALENDAR_ACTIONS, calendarReducer } from './calendarReducer';
import { Loader } from '../Loader';
import { CalendarTOdoList } from './CalendarTOdoList';
import { CalendarView } from './CalendarView';
import { API } from './../../API';
import { PopUpforTime } from './PopupForTime';
import "./calendar.scss"

const MonthButton = ({ name }) => <button className="calendar__buttonList_item">{name}</button>

const CalendarBox = () => {
    const [state, dispatch] = useReducer(calendarReducer)

    const getTodos = () => {
        API.getToDos().then(response => dispatch({ type: CALENDAR_ACTIONS.SET_TODO_ITEM, payload: response.data }))
    }
    const addTodos = () => {
        let date = "10.12.2020"
        let time = "10:00"
        let event = "do something"
        API.setToDos(time, date, event).then(response => dispatch({ type: CALENDAR_ACTIONS.SET_TODO_ITEM, payload: response.data }))
    }
    const deleteTodos = (id) => {
        //console.log("deleted")
        API.deleteToDos(id).then(response => dispatch({ type: CALENDAR_ACTIONS.DELETE_TODO_ITEM, payload: id }))
    }
    useEffect(() => {
        getTodos()
    }, [])
    useEffect(() => {//TIME
        const intervalId = setInterval(() => {  //assign interval to a variable to clear it
            dispatch({ type: CALENDAR_ACTIONS.SET_TIME })
            dispatch({ type: CALENDAR_ACTIONS.SET_DATE })
        }, 1000)
        return () => clearInterval(intervalId); //This is important
    }, []);


    return (
        <div className="calendar">
            <h1 className="calendar__title">Month List</h1>
            <div className="calendar__title_time-now">
                <span>{`Time now: ${state ? state.currentTime : "..."} Date now: ${state ? state.currentDate : "..."}`}</span>
            </div>
            <button className="calendar__title_add-todo" onClick={addTodos}>Add nev event</button>
            <div className="calendar__buttonList">
                {
                    state
                        ? state.monthArray.map(item => <MonthButton name={item} key={item} />)
                        : <Loader />
                }
            </div>
            <div className="calendar__sections">
                <div className="calendar__sections_todo">
                    {state
                        ? <CalendarTOdoList items={state.toDoItem} toDelete={deleteTodos} />
                        : <Loader />
                    }
                    <PopUpforTime />
                </div>
                <div className="calendar__sections_view">
                    <CalendarView />
                </div>
            </div>
            
        </div>
    )
}




export default memo(CalendarBox)


Ответы (0 шт):