Advertisement
Guest User

Untitled

a guest
Nov 21st, 2018
85
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.94 KB | None | 0 0
  1. import React, {Component} from "react";
  2. import $ from "jquery";
  3.  
  4. class Editor extends Component {
  5. constructor(props) {
  6. super(props);
  7. this.changeEditorState = this.changeEditorState.bind(this);
  8. this.saveChanges = this.saveChanges.bind(this);
  9. this.state = {
  10. value: this.props.value
  11. }
  12. }
  13.  
  14. changeEditorState(event) {
  15. let caller = $(event.target).closest(".substance-editor");
  16. let editor_is_mutable = caller.hasClass("editor-mutable")
  17. let editor_is_active = caller.hasClass("item-active")
  18. let form_element = caller.find("input, textarea");
  19.  
  20. if (!editor_is_active && editor_is_mutable) {
  21. caller.addClass("item-active");
  22. form_element.focus();
  23. }
  24.  
  25. if (editor_is_active) {
  26. caller.removeClass("item-active");
  27. }
  28. }
  29.  
  30. saveChanges(event) {
  31. let caller = $(event.target).closest(".substance-editor");
  32. let form_element = caller.find("input, textarea");
  33. form_element.text(form_element.val());
  34. this.props.onValueChange(form_element.val());
  35. this.setState({
  36. value: form_element.val()
  37. })
  38. }
  39.  
  40. getClass() {
  41. if (this.props.textArea) {
  42. return "richtext";
  43. }
  44. return "text";
  45. }
  46.  
  47. getEditField() {
  48. if (this.props.textArea) {
  49. return (
  50. <textarea id="somefield" defaultValue={this.state.value}/>)
  51.  
  52. }
  53. return (
  54. <input id="somefield" type="text" defaultValue={this.state.value}/>
  55. )
  56. }
  57.  
  58. render() {
  59. return (
  60. <div className={'substance-editor editor-type-' + this.getClass() + ' editor-mutable'}
  61. onClick={this.changeEditorState}>
  62. <div className={this.props.textArea ? 'editor-value substance-richtext' : 'editor-value'}>
  63. {this.state.value}
  64. </div>
  65.  
  66. <div className="editor-form field-entry entry-unlabeled">
  67. <div className="field-container">
  68. {this.getEditField()}
  69. </div>
  70. </div>
  71.  
  72. <ul className="editor-actions substance-toolchain">
  73. <li className="toolchain-link">
  74. <button title="" className="primary-action action-icon action-size-mini action-cancel">Cancel
  75. change
  76. </button>
  77. </li>
  78.  
  79. <li className="toolchain-link">
  80. <button title="" className="primary-action action-icon action-size-mini action-save"
  81. onClick={this.saveChanges}>
  82. Save change
  83. </button>
  84. </li>
  85. </ul>
  86. </div>
  87. )
  88. }
  89. }
  90.  
  91. export default Editor;
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement