From 26e43c671c4252dccbf3b0e9257407d41e4297ae Mon Sep 17 00:00:00 2001 From: Nick Frazier Date: Wed, 21 Dec 2016 09:37:07 -0500 Subject: PLT-4943: Warn when editing a message > 4000 chars (#4789) * added basic functionality * css fixes * css fixes part II: electric boogaloo * removed css interference with theme changes, for this and post length error --- webapp/components/create_post.jsx | 2 +- webapp/components/edit_post_modal.jsx | 41 ++++++++++++++++++++++++++++++----- webapp/sass/components/_modal.scss | 15 +++++++++++++ webapp/sass/layout/_post.scss | 18 +++++---------- webapp/sass/responsive/_tablet.scss | 10 +++------ webapp/sass/routes/_activity-log.scss | 1 + webapp/utils/constants.jsx | 2 ++ 7 files changed, 63 insertions(+), 26 deletions(-) (limited to 'webapp') diff --git a/webapp/components/create_post.jsx b/webapp/components/create_post.jsx index 30af8dd30..4ec2bec38 100644 --- a/webapp/components/create_post.jsx +++ b/webapp/components/create_post.jsx @@ -494,7 +494,7 @@ export default class CreatePost extends React.Component { let postError = null; if (this.state.postError) { - const postErrorClass = 'control-label post-error' + (this.state.errorClass ? (' ' + this.state.errorClass) : ''); + const postErrorClass = 'post-error' + (this.state.errorClass ? (' ' + this.state.errorClass) : ''); postError = ; } diff --git a/webapp/components/edit_post_modal.jsx b/webapp/components/edit_post_modal.jsx index a5bccfb80..1617d9f65 100644 --- a/webapp/components/edit_post_modal.jsx +++ b/webapp/components/edit_post_modal.jsx @@ -47,7 +47,8 @@ export default class EditPostModal extends React.Component { channel_id: '', comments: 0, refocusId: '', - ctrlSend: PreferenceStore.getBool(Constants.Preferences.CATEGORY_ADVANCED_SETTINGS, 'send_on_ctrl_enter') + ctrlSend: PreferenceStore.getBool(Constants.Preferences.CATEGORY_ADVANCED_SETTINGS, 'send_on_ctrl_enter'), + postError: '' }; } @@ -58,6 +59,14 @@ export default class EditPostModal extends React.Component { channel_id: this.state.channel_id }; + if (this.state.postError) { + this.setState({errorClass: 'animation--highlight'}); + setTimeout(() => { + this.setState({errorClass: null}); + }, Constants.ANIMATION_TIMEOUT); + return; + } + if (updatedPost.message === this.state.originalText) { // no changes so just close the modal $('#edit_post').modal('hide'); @@ -90,9 +99,25 @@ export default class EditPostModal extends React.Component { } handleChange(e) { + const message = e.target.value; this.setState({ - editText: e.target.value + editText: message }); + + if (message.length > Constants.CHARACTER_LIMIT) { + const errorMessage = ( + ); + this.setState({postError: errorMessage}); + } else { + this.setState({postError: ''}); + } } handleEditKeyPress(e) { @@ -195,9 +220,11 @@ export default class EditPostModal extends React.Component { } render() { - var error = (

); - if (this.state.error) { - error = (

); + const errorBoxClass = 'edit-post-footer' + (this.state.postError ? ' has-error' : ''); + let postError = null; + if (this.state.postError) { + const postErrorClass = 'post-error' + (this.state.errorClass ? (' ' + this.state.errorClass) : ''); + postError = (); } return ( @@ -242,7 +269,9 @@ export default class EditPostModal extends React.Component { id='edit_textbox' ref='editbox' /> - {error} +
+ {postError} +