|
@@ -291,74 +291,76 @@ const Answer: FC<IAnswerProps> = ({ item, feedbackDisabled = false, isHideFeedba
|
|
|
</div>
|
|
|
}
|
|
|
</div>
|
|
|
- <div className={`${s.answerWrap} ${showEdit ? 'w-full' : ''}`}>
|
|
|
- <div className={`${s.answer} relative text-sm text-gray-900`}>
|
|
|
- <div className={'ml-2 py-3 px-4 bg-gray-100 rounded-tr-2xl rounded-b-2xl'}>
|
|
|
- {item.isOpeningStatement && (
|
|
|
- <div className='flex items-center mb-1 gap-1'>
|
|
|
- <OpeningStatementIcon />
|
|
|
- <div className='text-xs text-gray-500'>{t('appDebug.openingStatement.title')}</div>
|
|
|
- </div>
|
|
|
- )}
|
|
|
- {(isResponsing && !content) ? (
|
|
|
- <div className='flex items-center justify-center w-6 h-5'>
|
|
|
- <LoadingAnim type='text' />
|
|
|
- </div>
|
|
|
- ) : (
|
|
|
- <Markdown content={content} />
|
|
|
- )}
|
|
|
- {!showEdit
|
|
|
- ? (annotation?.content
|
|
|
- && <>
|
|
|
- <Divider name={annotation?.account?.name || userProfile?.name} />
|
|
|
- {annotation.content}
|
|
|
- </>)
|
|
|
- : <>
|
|
|
- <Divider name={annotation?.account?.name || userProfile?.name} />
|
|
|
- <AutoHeightTextarea
|
|
|
- placeholder={t('appLog.detail.operation.annotationPlaceholder') as string}
|
|
|
- value={inputValue}
|
|
|
- onChange={e => setInputValue(e.target.value)}
|
|
|
- minHeight={58}
|
|
|
- className={`${cn(s.textArea)} !py-2 resize-none block w-full !px-3 bg-gray-50 border border-gray-200 rounded-md shadow-sm focus:outline-none focus:ring-blue-500 focus:border-blue-500 sm:text-sm text-gray-700 tracking-[0.2px]`}
|
|
|
- />
|
|
|
- <div className="mt-2 flex flex-row">
|
|
|
- <Button
|
|
|
- type='primary'
|
|
|
- className='mr-2'
|
|
|
- loading={loading}
|
|
|
- onClick={async () => {
|
|
|
- if (!inputValue)
|
|
|
- return
|
|
|
- setLoading(true)
|
|
|
- const res = await onSubmitAnnotation?.(id, inputValue)
|
|
|
- if (res)
|
|
|
- setAnnotation({ ...annotation, content: inputValue } as any)
|
|
|
- setLoading(false)
|
|
|
- setShowEdit(false)
|
|
|
- }}>{t('common.operation.confirm')}</Button>
|
|
|
- <Button
|
|
|
- onClick={() => {
|
|
|
- setInputValue(annotation?.content ?? '')
|
|
|
- setShowEdit(false)
|
|
|
- }}>{t('common.operation.cancel')}</Button>
|
|
|
+ <div className={s.answerWrapWrap}>
|
|
|
+ <div className={`${s.answerWrap} ${showEdit ? 'w-full' : ''}`}>
|
|
|
+ <div className={`${s.answer} relative text-sm text-gray-900`}>
|
|
|
+ <div className={'ml-2 py-3 px-4 bg-gray-100 rounded-tr-2xl rounded-b-2xl'}>
|
|
|
+ {item.isOpeningStatement && (
|
|
|
+ <div className='flex items-center mb-1 gap-1'>
|
|
|
+ <OpeningStatementIcon />
|
|
|
+ <div className='text-xs text-gray-500'>{t('appDebug.openingStatement.title')}</div>
|
|
|
</div>
|
|
|
- </>
|
|
|
- }
|
|
|
- </div>
|
|
|
- <div className='absolute top-[-14px] right-[-14px] flex flex-row justify-end gap-1'>
|
|
|
- <CopyBtn
|
|
|
- value={content}
|
|
|
- className={cn(s.copyBtn, 'mr-1')}
|
|
|
- />
|
|
|
- {!feedbackDisabled && !item.feedbackDisabled && renderItemOperation(displayScene !== 'console')}
|
|
|
- {/* Admin feedback is displayed only in the background. */}
|
|
|
- {!feedbackDisabled && renderFeedbackRating(localAdminFeedback?.rating, false, false)}
|
|
|
- {/* User feedback must be displayed */}
|
|
|
- {!feedbackDisabled && renderFeedbackRating(feedback?.rating, !isHideFeedbackEdit, displayScene !== 'console')}
|
|
|
+ )}
|
|
|
+ {(isResponsing && !content) ? (
|
|
|
+ <div className='flex items-center justify-center w-6 h-5'>
|
|
|
+ <LoadingAnim type='text' />
|
|
|
+ </div>
|
|
|
+ ) : (
|
|
|
+ <Markdown content={content} />
|
|
|
+ )}
|
|
|
+ {!showEdit
|
|
|
+ ? (annotation?.content
|
|
|
+ && <>
|
|
|
+ <Divider name={annotation?.account?.name || userProfile?.name} />
|
|
|
+ {annotation.content}
|
|
|
+ </>)
|
|
|
+ : <>
|
|
|
+ <Divider name={annotation?.account?.name || userProfile?.name} />
|
|
|
+ <AutoHeightTextarea
|
|
|
+ placeholder={t('appLog.detail.operation.annotationPlaceholder') as string}
|
|
|
+ value={inputValue}
|
|
|
+ onChange={e => setInputValue(e.target.value)}
|
|
|
+ minHeight={58}
|
|
|
+ className={`${cn(s.textArea)} !py-2 resize-none block w-full !px-3 bg-gray-50 border border-gray-200 rounded-md shadow-sm focus:outline-none focus:ring-blue-500 focus:border-blue-500 sm:text-sm text-gray-700 tracking-[0.2px]`}
|
|
|
+ />
|
|
|
+ <div className="mt-2 flex flex-row">
|
|
|
+ <Button
|
|
|
+ type='primary'
|
|
|
+ className='mr-2'
|
|
|
+ loading={loading}
|
|
|
+ onClick={async () => {
|
|
|
+ if (!inputValue)
|
|
|
+ return
|
|
|
+ setLoading(true)
|
|
|
+ const res = await onSubmitAnnotation?.(id, inputValue)
|
|
|
+ if (res)
|
|
|
+ setAnnotation({ ...annotation, content: inputValue } as any)
|
|
|
+ setLoading(false)
|
|
|
+ setShowEdit(false)
|
|
|
+ }}>{t('common.operation.confirm')}</Button>
|
|
|
+ <Button
|
|
|
+ onClick={() => {
|
|
|
+ setInputValue(annotation?.content ?? '')
|
|
|
+ setShowEdit(false)
|
|
|
+ }}>{t('common.operation.cancel')}</Button>
|
|
|
+ </div>
|
|
|
+ </>
|
|
|
+ }
|
|
|
+ </div>
|
|
|
+ <div className='absolute top-[-14px] right-[-14px] flex flex-row justify-end gap-1'>
|
|
|
+ <CopyBtn
|
|
|
+ value={content}
|
|
|
+ className={cn(s.copyBtn, 'mr-1')}
|
|
|
+ />
|
|
|
+ {!feedbackDisabled && !item.feedbackDisabled && renderItemOperation(displayScene !== 'console')}
|
|
|
+ {/* Admin feedback is displayed only in the background. */}
|
|
|
+ {!feedbackDisabled && renderFeedbackRating(localAdminFeedback?.rating, false, false)}
|
|
|
+ {/* User feedback must be displayed */}
|
|
|
+ {!feedbackDisabled && renderFeedbackRating(feedback?.rating, !isHideFeedbackEdit, displayScene !== 'console')}
|
|
|
+ </div>
|
|
|
</div>
|
|
|
+ {more && <MoreInfo more={more} isQuestion={false} />}
|
|
|
</div>
|
|
|
- {more && <MoreInfo more={more} isQuestion={false} />}
|
|
|
</div>
|
|
|
</div>
|
|
|
</div>
|
|
@@ -372,7 +374,7 @@ const Question: FC<IQuestionProps> = ({ id, content, more, useCurrentUserAvatar
|
|
|
const userName = userProfile?.name
|
|
|
return (
|
|
|
<div className='flex items-start justify-end' key={id}>
|
|
|
- <div>
|
|
|
+ <div className={s.questionWrapWrap}>
|
|
|
<div className={`${s.question} relative text-sm text-gray-900`}>
|
|
|
<div
|
|
|
className={'mr-2 py-3 px-4 bg-blue-500 rounded-tl-2xl rounded-b-2xl'}
|