33408/frontend/src/components/RichTextField.tsx
2025-08-15 05:05:29 +00:00

43 lines
1.4 KiB
TypeScript

import React, { useEffect, useId, useState } from 'react';
import {Editor} from "@tinymce/tinymce-react";
import { tinyKey } from '../config'
import {useAppSelector} from "../stores/hooks";
export const RichTextField = ({ options, field, form, itemRef, showField }) => {
const [value, setValue] = useState(null);
const darkMode = useAppSelector((state) => state.style.darkMode);
useEffect(() => {
if (field.value) {
setValue(field.value);
}
}, [field.value]);
const handleChange = (value) => {
form.setFieldValue(field.name, value);
setValue(value);
};
return (
<Editor
onEditorChange={handleChange}
value={value || ''}
apiKey={tinyKey}
init={{
plugins:
'advlist autolink lists link image charmap print preview anchor' +
'searchreplace visualblocks code fullscreen' +
'insertdatetime media table paste help wordcount',
toolbar:
'undo redo | formatselect | ' +
'bold italic backcolor | alignleft aligncenter ' +
'alignright alignjustify | bullist numlist outdent indent | ' +
'removeformat | code',
content_style: `${darkMode ? 'body { color: #ffffff; }' : ''}`,
}}
/>
);
};