import React, { useState } from "react"; import { addPost, addProposal } from "actions/posts"; import Button from "components/Button"; import ErrorMessage from "components/ErrorMessage"; import { useActionState } from "hooks"; const AddPostForm = ({ className }) => { const [text, setText] = useState(""); const [addingPost, addingPostError] = useActionState(addPost, { content: text, }); const [addingProposal, addingProposalError] = useActionState(addPost, { content: text, }); const onTextInput = (evt) => { setText(evt.target.value); }; const onAddPost = async (evt) => { if (!!text) { const result = await addPost.run({ content: text }); if (!result.error) { setText(""); } } }; const onAddProposal = async (evt) => { evt.stopPropagation(); if (!!text) { const result = await addProposal.run({ content: text }); if (!result.error) { setText(""); } } }; const buttonDropdownActionList = ( <ul className="dropdown-button__choices bg-white text-black whitespace-no-wrap"> <li className="dropdown-button__choice hover:bg-grey-125"> <span className="block px-4 py-3" onClick={onAddProposal}> Navrhnout postup </span> </li> </ul> ); return ( <div className={className}> {addingPostError && ( <ErrorMessage> Při přidávání příspěvku došlo k problému: {addingPostError}. </ErrorMessage> )} {addingProposalError && ( <ErrorMessage> Při přidávání příspěvku došlo k problému: {addingProposalError}. </ErrorMessage> )} <div className="form-field"> <div className="form-field__wrapper form-field__wrapper--shadowed"> <textarea className="text-input form-field__control " value={text} rows="5" cols="40" placeholder="Vyplňte text vašeho příspěvku" onChange={onTextInput} ></textarea> </div> </div> <div className="space-x-4"> <Button onClick={onAddPost} disabled={!text || addingPost || addingProposal} loading={addingPost || addingProposal} hoverActive icon="ico--chevron-down" iconWrapperClassName="dropdown-button" iconChildren={buttonDropdownActionList} > Přidat příspěvek </Button> <span className="text-sm text-grey-200 hidden lg:inline"> Pro pokročilejší formátování můžete používat{" "} <a href="https://github.com/adam-p/markdown-here/wiki/Markdown-Cheatsheet" className="underline" target="_blank" rel="noreferrer noopener" > Markdown </a> . </span> </div> </div> ); }; export default AddPostForm;