diff --git a/src/components/modals/CreateBoardModal.jsx b/src/components/modals/CreateBoardModal.jsx new file mode 100644 index 00000000..05194ce4 --- /dev/null +++ b/src/components/modals/CreateBoardModal.jsx @@ -0,0 +1,146 @@ +import React, { useRef, useState } from 'react'; +import { StyledModal } from '../styled/modals/CreateBoardModal.styled'; +import useGeneralStore from '../../hooks/stores/useGeneralStore'; +import Modal from 'react-modal'; +import useError from '../../hooks/useError'; + +const CreateBoardModal = ({ isOpen, closeModal }) => { + const { selectedStyle } = useGeneralStore(state => state); + + const nodeRef = useRef(null); + + const [boardTitle, setBoardTitle] = useState(''); + const [description, setDescription] = useState(''); + const [rule, setRule] = useState(''); + const [rules, setRules] = useState([]); + const [editIndex, setEditIndex] = useState(-1); + + const [, setNewErrorMessage] = useError(); + + + const handleAddRule = () => { + if (rule.trim() === '') { + setNewErrorMessage('Rule field is empty'); + return; + } + + if (rules.length >= 15) { + setNewErrorMessage('Maximum number of rules is 15'); + return; + } + + if(editIndex > -1){ + setRules(rules.map((r, i) => i === editIndex ? rule : r)); + setEditIndex(-1); + } else { + setRules([...rules, rule]); + } + setRule(''); + } + + + const handleKeyDown = (e) => { + if (e.key === 'Enter') { + handleAddRule(); + } + } + + + const handleEditRule = (index) => { + setRule(rules[index]); + setEditIndex(index); + } + + + const handleDeleteRule = (index) => { + if (index === editIndex) { + setEditIndex(-1); + } + setRules(rules.filter((_, i) => i !== index)); + } + + + + return ( + +
+
+ Create Board +
+