UNPKG

rap-react

Version:

To make it easy for you to get started with GitLab, here's a list of recommended next steps.

140 lines (132 loc) 4.27 kB
import React, { useContext } from "react"; import showMessage from "../message"; import { SendFeedback } from "../../../services/commonService"; import { GetBrandName } from "../../../services/brandService"; import { SendEmail } from "../../../services/emailService"; import { UserContext } from "../../../context/user/userContext"; export const FeedbackBox = (props) => { const { state } = useContext(UserContext); const [feedbackValue, setFeedbackValue] = React.useState(""); const [isClicked, setClicked] = React.useState(false); const [valid, setValid] = React.useState(false); const maxLength = 2000; const handleKeyPress = (e) => { let count = e.target.value; let length = count.length; if (length > maxLength) { count = count.substring(0, count - 1); e.target.value = count; } setFeedbackValue(count); if (count.length > 0) { setValid(true); } else { setValid(false); } }; const handleSendFeedback = (e) => { setClicked(true); if (valid) { const validResponse = "Feedback Received!".toUpperCase(); let brandID = state?.user?.userProfile?.brandID; let brandName = GetBrandName(brandID); let email = state?.user?.userProfile?.email; const input = { Feedback: feedbackValue, Email: email }; SendFeedback(input, brandID).then( (res) => { if ( res !== null && res !== undefined && res.toUpperCase() === validResponse ) { SendEmail({ Email: email, Comments: feedbackValue, BrandName: brandName, }); showMessage("We have received your feedback successfully."); } else { showMessage("Could not send feedback", -2); } }, (err) => { showMessage("Could not send feedback", -2); } ); props.callOpen(false); } e.preventDefault(); }; const handleClose = (e) => { props.callOpen(false); e.preventDefault(); }; const getMainClassName = () => { let cls = "modal-wrapper"; if (props.open === true) { cls += " show-modal-wrapper"; } cls += " feedback"; return cls; }; return ( <React.Fragment> <div className={getMainClassName()}> <div className="modal-block"> <div className="feedback-heading-container"> <span>Please report any issues or provide feedback below.</span> </div> <div className="confirmation-content-wrapper"> <div className="feedback-container"> <textarea onChange={handleKeyPress} className="empty-comments" rows="7" maxLength={maxLength} ></textarea> <div className="counter-placeholder"> <div> <span className="current-counter"> {feedbackValue.length} </span> <span data-val={maxLength} className="maximum-counter"> / {maxLength} </span> </div> </div> </div> <div className={`error-message ${ isClicked === false ? "hide" : feedbackValue.length === 0 ? "" : "hide" } `} > <span>Please enter feedback</span> </div> </div> <div className="confirmation-button-block"> <button className="confirmation-button w-button yes" onClick={(event) => { handleSendFeedback(event); }} > Submit </button> <button onClick={(event) => { handleClose(event); }} className="confirmation-button w-button no" > Cancel </button> </div> </div> </div> </React.Fragment> ); };