import React, { useCallback, useState } from 'react'; import { ITemplate } from '@growi/core'; import { useTranslation } from 'next-i18next'; import { Modal, ModalHeader, ModalBody, ModalFooter, } from 'reactstrap'; import { useTemplateModal } from '~/stores/modal'; import { usePreviewOptions } from '~/stores/renderer'; import { useTemplates } from '~/stores/template'; import Preview from './PageEditor/Preview'; type TemplateRadioButtonProps = { template: ITemplate, onChange: (selectedTemplate: ITemplate) => void, isSelected?: boolean, } const TemplateRadioButton = ({ template, onChange, isSelected }: TemplateRadioButtonProps): JSX.Element => { const radioButtonId = `rb-${template.id}`; return (
onChange(template)} />
); }; export const TemplateModal = (): JSX.Element => { const { t } = useTranslation(); const { data: templateModalStatus, close } = useTemplateModal(); const { data: rendererOptions } = usePreviewOptions(); const { data: templates } = useTemplates(); const [selectedTemplate, setSelectedTemplate] = useState(); const submitHandler = useCallback((template?: ITemplate) => { if (templateModalStatus == null) { return } if (templateModalStatus.onSubmit == null || template == null) { close(); return; } templateModalStatus.onSubmit(template.markdown); close(); }, [close, templateModalStatus]); if (templates == null || templateModalStatus == null) { return <>; } return ( Template
{ templates.map(template => ( setSelectedTemplate(t)} isSelected={template.id === selectedTemplate?.id} /> )) }
{ rendererOptions != null && ( <>

Preview

) }
); };