react-froala-wysiwyg
Version:
React component for Froala WYSIWYG HTML rich text editor.
86 lines (73 loc) • 2.55 kB
JSX
// Note that Froala Editor has to be required separately
import 'froala-editor/css/froala_editor.pkgd.min.css';
import 'froala-editor/css/froala_style.css';
import 'file-loader?name=[name].[ext]!./manual_initialization.html';
import FroalaEditor from 'react-froala-wysiwyg';
import FroalaEditorView from 'react-froala-wysiwyg/FroalaEditorView';
import React from 'react';
import ReactDOM from 'react-dom/client';
// Render Froala Editor component.
class EditorComponent extends React.Component {
constructor () {
super();
this.state = {
initControls: null
};
this.handleModelChange = this.handleModelChange.bind(this);
this.handleController = this.handleController.bind(this);
this.initializeEditor = this.initializeEditor.bind(this);
this.destroyEditor = this.destroyEditor.bind(this);
this.deleteAll = this.deleteAll.bind(this);
}
handleModelChange (model) {
this.setState({content: model});
}
deleteAll () {
if (!this.state.initControls) {
return;
}
this.state.initControls.getEditor().html.set();
this.state.initControls.getEditor().undo.reset();
this.state.initControls.getEditor().undo.saveStep();
}
handleController (initControls) {
this.setState({initControls: initControls});
}
initializeEditor () {
this.state.initControls.initialize();
this.setState({initControls: this.state.initControls});
}
destroyEditor () {
this.state.initControls.destroy();
this.setState({initControls: this.state.initControls});
}
render () {
return(
<div className="sample">
<h2>Manual Initialization</h2>
{this.state.initControls ?
<button className="manual" onClick={this.initializeEditor}>Initialize Editor</button>
:
null
}
{this.state.initControls && this.state.initControls.getEditor() ?
<span>
<button className="button" onClick={this.destroyEditor}>Close Editor</button>
<button className="button" onClick={this.deleteAll}>Delete All</button>
</span>
:
null
}
<FroalaEditor
model={this.state.content}
onModelChange={this.handleModelChange}
onManualControllerReady={this.handleController}
>
Check out the <a href="https://www.froala.com/wysiwyg-editor">Froala Editor</a>
</FroalaEditor>
</div>
);
}
}
const root = ReactDOM.createRoot(document.getElementById('editor'));
root.render(<EditorComponent/>);