UNPKG

strapi-html-editor

Version:

Presenting an alternative to standard wysiwyg editor in Strapi in the form of this HTML-editor that facilitates easier and hussle-free data customization to use with various frontends.

70 lines (63 loc) 1.47 kB
import React from "react"; import PropTypes from "prop-types"; import styled from "styled-components"; import { CKEditor } from "@ckeditor/ckeditor5-react"; import ClassicEditor from "@ckeditor/ckeditor5-build-classic"; import { Box } from "@strapi/design-system/Box"; const Wrapper = styled(Box)` .ck-editor__main { min-height: ${200 / 16}em; > div { min-height: ${200 / 16}em; } // Since Strapi resets css styles, it can be configured here (h2, h3, strong, i, ...) } `; const configuration = { toolbar: [ "heading", "|", "bold", "italic", "link", "bulletedList", "numberedList", "|", "indent", "outdent", "|", "blockQuote", "insertTable", "mediaEmbed", "undo", "redo", ], }; const Editor = ({ onChange, name, value, disabled }) => { return ( <Wrapper> <CKEditor editor={ClassicEditor} disabled={disabled} config={configuration} data={value || ""} onReady={(editor) => editor.setData(value || "")} onChange={(event, editor) => { const data = editor.getData(); onChange({ target: { name, value: data } }); }} /> </Wrapper> ); }; Editor.defaultProps = { value: "", disabled: false, }; Editor.propTypes = { onChange: PropTypes.func.isRequired, name: PropTypes.string.isRequired, value: PropTypes.string, disabled: PropTypes.bool, }; export default Editor;