From 7134f82b5f6491edfcddb31e2011d3219b340e75 Mon Sep 17 00:00:00 2001 From: Ivan Diaz Date: Sun, 25 Feb 2018 11:37:37 -0300 Subject: [PATCH] Add IE compatibility --- .../create-ticket-form.js | 5 +- .../app/main/dashboard/dashboard-layout.js | 2 +- client/src/core-components/form-field.js | 8 ++-- client/src/core-components/text-editor.js | 48 +++++++++++++++---- client/src/core-components/text-editor.scss | 10 +++- client/src/index.html | 3 +- client/src/index.php | 9 ++-- client/src/lib-core/navigator.js | 15 ++++++ server/config.php | 15 ------ 9 files changed, 78 insertions(+), 37 deletions(-) create mode 100644 client/src/lib-core/navigator.js delete mode 100755 server/config.php diff --git a/client/src/app/main/dashboard/dashboard-create-ticket/create-ticket-form.js b/client/src/app/main/dashboard/dashboard-create-ticket/create-ticket-form.js index c04ae6b4..98f7b5e6 100644 --- a/client/src/app/main/dashboard/dashboard-create-ticket/create-ticket-form.js +++ b/client/src/app/main/dashboard/dashboard-create-ticket/create-ticket-form.js @@ -1,7 +1,6 @@ import React from 'react'; import _ from 'lodash'; import {connect} from 'react-redux'; -import {EditorState, convertToRaw} from 'draft-js'; import history from 'lib-app/history'; import i18n from 'lib-app/i18n'; @@ -13,6 +12,7 @@ import LanguageSelector from 'app-components/language-selector'; import Captcha from 'app/main/captcha'; import Header from 'core-components/header'; +import TextEditor from 'core-components/text-editor'; import Form from 'core-components/form'; import FormField from 'core-components/form-field'; import SubmitButton from 'core-components/submit-button'; @@ -33,7 +33,7 @@ class CreateTicketForm extends React.Component { message: null, form: { title: '', - content: EditorState.createEmpty(), + content: TextEditor.createEmpty(), departmentIndex: 0, email: '', name: '', @@ -162,4 +162,3 @@ export default connect((store) => { allowAttachments: store.config['allow-attachments'] }; })(CreateTicketForm); - diff --git a/client/src/app/main/dashboard/dashboard-layout.js b/client/src/app/main/dashboard/dashboard-layout.js index ae51fca4..99545ff4 100644 --- a/client/src/app/main/dashboard/dashboard-layout.js +++ b/client/src/app/main/dashboard/dashboard-layout.js @@ -14,7 +14,7 @@ class DashboardLayout extends React.Component {
- + {this.props.children}
diff --git a/client/src/core-components/form-field.js b/client/src/core-components/form-field.js index c1e38ef3..f8ae8a6b 100644 --- a/client/src/core-components/form-field.js +++ b/client/src/core-components/form-field.js @@ -27,7 +27,7 @@ class FormField extends React.Component { field: React.PropTypes.oneOf(['input', 'textarea', 'select', 'checkbox', 'checkbox-group', 'file']), fieldProps: React.PropTypes.object }; - + static defaultProps = { field: 'input', fieldProps: {} @@ -118,7 +118,7 @@ class FormField extends React.Component { return classNames(classes); } - + getFieldProps() { let props = _.extend({}, this.props.fieldProps, { disabled: this.isDisabled(), @@ -172,7 +172,7 @@ class FormField extends React.Component { this.props.onChange(event) } } - + isDisabled() { const fieldProps = this.props.fieldProps; @@ -186,4 +186,4 @@ class FormField extends React.Component { } } -export default FormField; \ No newline at end of file +export default FormField; diff --git a/client/src/core-components/text-editor.js b/client/src/core-components/text-editor.js index 486fbd90..ffcba1e4 100644 --- a/client/src/core-components/text-editor.js +++ b/client/src/core-components/text-editor.js @@ -3,19 +3,24 @@ import classNames from 'classnames'; import {Editor} from 'react-draft-wysiwyg'; import {EditorState, ContentState, convertFromHTML} from 'draft-js'; import {stateToHTML} from 'draft-js-export-html'; +import {isIE} from 'lib-core/navigator'; class TextEditor extends React.Component { static propTypes = { errored: React.PropTypes.bool, onChange: React.PropTypes.func, - value: React.PropTypes.object + value: React.PropTypes.oneOfType([ + React.PropTypes.object, React.PropTypes.string + ]) }; - + static createEmpty() { - return EditorState.createEmpty() + if(isIE()) return ''; + return EditorState.createEmpty(); } - + static getEditorStateFromHTML(htmlString) { + if(isIE()) return htmlString; const blocksFromHTML = convertFromHTML(htmlString); const state = ContentState.createFromBlockArray( blocksFromHTML.contentBlocks, @@ -26,31 +31,51 @@ class TextEditor extends React.Component { } static getHTMLFromEditorState(editorState) { + if(isIE()) return editorState; return stateToHTML(editorState.getCurrentContent()); } - + static isEditorState(editorState) { + if(isIE()) return typeof editorState === 'String'; return editorState && editorState.getCurrentContent; } state = { - value: EditorState.createEmpty(), + value: TextEditor.createEmpty(), focused: false }; render() { return (
- + {isIE() ? this.renderTextArea() : this.renderDraftJS()}
); } + renderDraftJS() { + return ; + } + + renderTextArea() { + return ( +