1
0
mirror of https://github.com/Unleash/unleash.git synced 2025-01-06 00:07:44 +01:00
unleash.unleash/frontend/src/component/commandBar/CommandBarFeedback.tsx

97 lines
3.3 KiB
TypeScript
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

import { Button, styled, TextField } from '@mui/material';
import type React from 'react';
import { useState } from 'react';
import { ConditionallyRender } from 'component/common/ConditionallyRender/ConditionallyRender';
import { useUserFeedbackApi } from 'hooks/api/actions/useUserFeedbackApi/useUserFeedbackApi';
import useToast from 'hooks/useToast';
import useUserType from '../feedbackNew/useUserType';
const StyledContainer = styled('div')(({ theme }) => ({
display: 'flex',
flexDirection: 'column',
padding: theme.spacing(2),
gap: theme.spacing(1),
}));
const StyledText = styled('span')(({ theme }) => ({
fontSize: theme.fontSizes.bodySize,
}));
const StyledButton = styled(Button)(({ theme }) => ({
fontSize: theme.spacing(1.5),
}));
interface ICommandBarFeedbackProps {
onSubmit: () => void;
}
export const CommandBarFeedback = ({ onSubmit }: ICommandBarFeedbackProps) => {
const userType = useUserType();
const { addFeedback } = useUserFeedbackApi();
const { setToastData } = useToast();
const [suggesting, setSuggesting] = useState(false);
const [feedback, setFeedback] = useState<string | undefined>(undefined);
const changeFeedback = (event: React.ChangeEvent<HTMLInputElement>) => {
setFeedback(event.target.value.trim());
};
const sendFeedback = async () => {
await addFeedback({
areasForImprovement: feedback,
category: 'commandBar',
userType: userType,
});
onSubmit();
setToastData({
title: 'Feedback sent',
type: 'success',
});
};
return (
<StyledContainer>
<ConditionallyRender
condition={suggesting}
show={
<>
<StyledText>Describe the capability</StyledText>
<TextField
multiline={true}
minRows={2}
onChange={changeFeedback}
/>
<StyledButton
type='submit'
variant='contained'
color='primary'
onClick={sendFeedback}
>
Send to Unleash
</StyledButton>
</>
}
elseShow={
<>
<StyledText>
We couldnt find anything matching your search
criteria. If you think this is a missing capability,
feel free to make a suggestion.
</StyledText>
<StyledButton
type='submit'
variant='contained'
color='primary'
onClick={(e) => {
e.stopPropagation();
setSuggesting(true);
}}
>
Suggest capability
</StyledButton>
</>
}
/>
</StyledContainer>
);
};