mirror of
https://github.com/Unleash/unleash.git
synced 2025-09-15 17:50:48 +02:00
* refactor: add screen-reader-only util class * refactor: move FeedbackNPS component * feat: add FeedbackCES component * refactor: improve hidden checkbox styles * refactor: fix IFeedbackEndpointRequestBody source type * refactor: remove unnecessary event.persist() calls * refactor: remove disableEscapeKeyDown from FeedbackCES modal * refactor: make textarea label customizable * refactor: store feedback state on the backend * refactor: add FeedbackCESForm snapshot test * refactor: use extant IAuthFeedback type * refactor: fix showNPSFeedback logic for multiple feedback types
41 lines
1.4 KiB
TypeScript
41 lines
1.4 KiB
TypeScript
import React from 'react';
|
|
import produce from 'immer';
|
|
import { useStyles } from 'component/feedback/FeedbackCES/FeedbackCESScore.styles';
|
|
import { IFeedbackCESForm } from 'component/feedback/FeedbackCES/FeedbackCESForm';
|
|
|
|
interface IFeedbackCESScoreProps {
|
|
form: Partial<IFeedbackCESForm>;
|
|
setForm: React.Dispatch<React.SetStateAction<Partial<IFeedbackCESForm>>>;
|
|
}
|
|
|
|
export const FeedbackCESScore = ({ form, setForm }: IFeedbackCESScoreProps) => {
|
|
const styles = useStyles();
|
|
|
|
const onScoreChange = (event: React.ChangeEvent<HTMLInputElement>) => {
|
|
setForm(
|
|
produce(draft => {
|
|
draft.score = Number(event.target.value);
|
|
})
|
|
);
|
|
};
|
|
|
|
return (
|
|
<div className={styles.scoreInput}>
|
|
<span className={styles.scoreHelp}>Very difficult</span>
|
|
{[1, 2, 3, 4, 5, 6, 7].map(score => (
|
|
<label key={score} className={styles.scoreValue}>
|
|
<input
|
|
type="radio"
|
|
name="score"
|
|
value={score}
|
|
checked={form.score === score}
|
|
onChange={onScoreChange}
|
|
/>
|
|
<span>{score}</span>
|
|
</label>
|
|
))}
|
|
<span className={styles.scoreHelp}>Very easy</span>
|
|
</div>
|
|
);
|
|
};
|