import React, { FC, useState, useRef, useEffect } from 'react'; import Button from '../../blocks/Button'; import Form from '../../blocks/Form'; import Textarea from '../../blocks/Textarea'; import Rating from 'react-rating'; import css from './index.module.css'; import IconStarEmptySVG from '../../assets/icons/icon-star-empty.svg'; import IconStarFullSVG from '../../assets/icons/icon-star-full.svg'; import classnames from 'classnames'; export interface FormPartnerFeedbackValues { satisfiedServiceRating?: number; satisfiedServiceRatingReason?: string; partnerAppRating?: number; partnerAppRatingReason?: string; partnerPortalRating?: number; partnerPortalRatingReason?: string; recommendWorkRating?: number; recommendWorkRatingReason?: string; shareText?: string; } export interface FormPartnerFeedbackLabels { satisfiedServiceRatingText?: string; unhappy?: string; happy?: string; reasonTextareaText?: string; satisfiedServiceInfrastructureText?: string; partnerAppRatingText?: string; partnerPortalRatingText?: string; recommendWorkRatingText?: string; leastLikely?: string; mostLikely?: string; shareText?: string; otherText?: string; thanksText?: string; feedbackButton?: string; } export interface FormPartnerFeedbackErrors { satisfiedServiceRating: string; satisfiedServiceRatingReason: string; partnerAppRating: string; partnerAppRatingReason: string; partnerPortalRating: string; partnerPortalRatingReason: string; recommendWorkRating: string; recommendWorkRatingReason: string; shareText: string; } export interface FormPartnerFeedbackTouched { [key: string]: unknown; } export interface FormPartnerFeedbackProps { values: FormPartnerFeedbackValues; touched: FormPartnerFeedbackTouched; errors: FormPartnerFeedbackErrors; labels: FormPartnerFeedbackLabels; handleChange: (e) => void; handleBlur: (e) => void; handleSubmit: (e) => void; setFieldValue: (field, value) => void; isSubmitting?: boolean; status?: { msg: string; }; } const FormPartnerFeedback: FC = ({ values, errors, handleChange, handleSubmit, labels, isSubmitting, setFieldValue, }) => { const inputEl1 = useRef(null); const inputEl2 = useRef(null); const inputEl3 = useRef(null); const inputEl4 = useRef(null); const inputEl5 = useRef(null); const [isDisabled, setDisable] = useState(true); const [rating, setRating] = useState(0); const [satisfiedServiceRating, setSatisfiedServiceRating] = useState(0); const [partnerAppRating, setPartnerAppRating] = useState(0); const [partnerPortalRating, setPartnerPortalRating] = useState(0); const satisfiedServiceRatingChanged = (newRating): void => { setSatisfiedServiceRating(newRating); setFieldValue('satisfiedServiceRating', newRating); }; const partnerAppRatingChanged = (newRating): void => { setPartnerAppRating(newRating); setFieldValue('partnerAppRating', newRating); }; const partnerPortalRatingChanged = (newRating): void => { setPartnerPortalRating(newRating); setFieldValue('partnerPortalRating', newRating); }; useEffect(() => { setDisable(Object.keys(errors).length != 0); }, [errors]); const createRatingButton = (value): JSX.Element => { value += 1; return (
  • ); }; useEffect(() => { if (satisfiedServiceRating > 0) { inputEl1.current.focus(); } if (partnerAppRating > 0) { inputEl2.current.focus(); } if (partnerPortalRating > 0) { inputEl3.current.focus(); } if (rating > 0) { inputEl4.current.focus(); } }, [satisfiedServiceRating, partnerAppRating, partnerPortalRating, rating]); return (

    {labels.satisfiedServiceRatingText}

    {labels.unhappy}
    {labels.happy}
    } fullSymbol={ } onClick={satisfiedServiceRatingChanged} />
    {satisfiedServiceRating > 0 && (