mirror of
https://github.com/hedgedoc/hedgedoc.git
synced 2025-05-29 06:15:29 -04:00
refactor: Deduplicate delete modal (#1734)
This commit is contained in:
parent
6a6f6105b9
commit
5f228b1bf2
4 changed files with 62 additions and 36 deletions
|
@ -11,36 +11,58 @@ import { DeletionModal } from '../../../common/modals/deletion-modal'
|
|||
import { useApplicationState } from '../../../../hooks/common/use-application-state'
|
||||
import type { ModalVisibilityProps } from '../../../common/modals/common-modal'
|
||||
|
||||
export interface DeleteHistoryNoteModalProps {
|
||||
modalTitleI18nKey?: string
|
||||
modalQuestionI18nKey?: string
|
||||
modalWarningI18nKey?: string
|
||||
modalButtonI18nKey?: string
|
||||
}
|
||||
|
||||
export interface DeleteNoteModalProps extends ModalVisibilityProps {
|
||||
optionalNoteTitle?: string
|
||||
onConfirm: () => void
|
||||
}
|
||||
|
||||
/**
|
||||
* A modal that asks the user if they really want to delete the current note.
|
||||
*
|
||||
* @param optionalNoteTitle optional note title
|
||||
* @param show Defines if the modal should be shown
|
||||
* @param onHide A callback that fires if the modal should be hidden without confirmation
|
||||
* @param onConfirm A callback that fires if the user confirmed the request
|
||||
* @param modalTitleI18nKey optional i18nKey for the title
|
||||
* @param modalQuestionI18nKey optional i18nKey for the question
|
||||
* @param modalWarningI18nKey optional i18nKey for the warning
|
||||
* @param modalButtonI18nKey optional i18nKey for the button
|
||||
*/
|
||||
export const DeleteNoteModal: React.FC<DeleteNoteModalProps> = ({ show, onHide, onConfirm }) => {
|
||||
export const DeleteNoteModal: React.FC<DeleteNoteModalProps & DeleteHistoryNoteModalProps> = ({
|
||||
optionalNoteTitle,
|
||||
show,
|
||||
onHide,
|
||||
onConfirm,
|
||||
modalTitleI18nKey,
|
||||
modalQuestionI18nKey,
|
||||
modalWarningI18nKey,
|
||||
modalButtonI18nKey
|
||||
}) => {
|
||||
const noteTitle = useApplicationState((state) => state.noteDetails.noteTitle)
|
||||
|
||||
return (
|
||||
<DeletionModal
|
||||
{...cypressId('sidebar.deleteNote.modal')}
|
||||
onConfirm={onConfirm}
|
||||
deletionButtonI18nKey={'editor.modal.deleteNote.button'}
|
||||
deletionButtonI18nKey={modalButtonI18nKey ?? 'editor.modal.deleteNote.button'}
|
||||
show={show}
|
||||
onHide={onHide}
|
||||
title={'editor.modal.deleteNote.title'}>
|
||||
title={modalTitleI18nKey ?? 'editor.modal.deleteNote.title'}>
|
||||
<h5>
|
||||
<Trans i18nKey={'editor.modal.deleteNote.question'} />
|
||||
<Trans i18nKey={modalQuestionI18nKey ?? 'editor.modal.deleteNote.question'} />
|
||||
</h5>
|
||||
<ul>
|
||||
<li {...cypressId('sidebar.deleteNote.modal.noteTitle')}> {noteTitle}</li>
|
||||
<li {...cypressId('sidebar.deleteNote.modal.noteTitle')}>{optionalNoteTitle ?? noteTitle}</li>
|
||||
</ul>
|
||||
<h6>
|
||||
<Trans i18nKey={'editor.modal.deleteNote.warning'} />
|
||||
<Trans i18nKey={modalWarningI18nKey ?? 'editor.modal.deleteNote.warning'} />
|
||||
</h6>
|
||||
</DeletionModal>
|
||||
)
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue