From d8c5a83827c24a8931da7f2b1fd78da66162bd7e Mon Sep 17 00:00:00 2001 From: Eugen Rochko Date: Sat, 25 Mar 2017 00:01:43 +0100 Subject: [PATCH] Redesigned compose form --- .../components/actions/compose.jsx | 23 +- .../components/components/icon_button.jsx | 7 +- .../compose/components/compose_form.jsx | 65 +++--- .../components/emoji_picker_dropdown.jsx | 14 +- .../compose/components/privacy_dropdown.jsx | 83 +++++++ .../compose/components/private_toggle.jsx | 27 --- .../compose/components/text_icon_button.jsx | 31 +++ .../compose/components/unlisted_toggle.jsx | 32 --- .../compose/components/upload_button.jsx | 2 +- .../compose/components/upload_form.jsx | 6 +- ...ner.jsx => privacy_dropdown_container.jsx} | 10 +- .../containers/sensitive_button_container.jsx | 49 +++++ .../containers/sensitive_toggle_container.jsx | 18 -- .../containers/spoiler_button_container.jsx | 24 ++ .../containers/spoiler_toggle_container.jsx | 17 -- .../containers/unlisted_toggle_container.jsx | 31 --- .../components/features/compose/index.jsx | 1 - .../components/reducers/compose.jsx | 32 +-- app/assets/stylesheets/components.scss | 205 +++++++++++++++++- app/assets/stylesheets/fonts/roboto-mono.scss | 7 +- app/assets/stylesheets/fonts/roboto.scss | 11 +- 21 files changed, 477 insertions(+), 218 deletions(-) create mode 100644 app/assets/javascripts/components/features/compose/components/privacy_dropdown.jsx delete mode 100644 app/assets/javascripts/components/features/compose/components/private_toggle.jsx create mode 100644 app/assets/javascripts/components/features/compose/components/text_icon_button.jsx delete mode 100644 app/assets/javascripts/components/features/compose/components/unlisted_toggle.jsx rename app/assets/javascripts/components/features/compose/containers/{private_toggle_container.jsx => privacy_dropdown_container.jsx} (57%) create mode 100644 app/assets/javascripts/components/features/compose/containers/sensitive_button_container.jsx delete mode 100644 app/assets/javascripts/components/features/compose/containers/sensitive_toggle_container.jsx create mode 100644 app/assets/javascripts/components/features/compose/containers/spoiler_button_container.jsx delete mode 100644 app/assets/javascripts/components/features/compose/containers/spoiler_toggle_container.jsx delete mode 100644 app/assets/javascripts/components/features/compose/containers/unlisted_toggle_container.jsx diff --git a/app/assets/javascripts/components/actions/compose.jsx b/app/assets/javascripts/components/actions/compose.jsx index 51c11e5ad..13cab8b5b 100644 --- a/app/assets/javascripts/components/actions/compose.jsx +++ b/app/assets/javascripts/components/actions/compose.jsx @@ -123,6 +123,10 @@ export function submitComposeFail(error) { export function uploadCompose(files) { return function (dispatch, getState) { + if (getState().getIn(['compose', 'media_attachments']).size > 3) { + return; + } + dispatch(uploadComposeRequest()); let data = new FormData(); @@ -231,17 +235,15 @@ export function unmountCompose() { }; }; -export function changeComposeSensitivity(checked) { +export function changeComposeSensitivity() { return { type: COMPOSE_SENSITIVITY_CHANGE, - checked }; }; -export function changeComposeSpoilerness(checked) { +export function changeComposeSpoilerness() { return { - type: COMPOSE_SPOILERNESS_CHANGE, - checked + type: COMPOSE_SPOILERNESS_CHANGE }; }; @@ -252,17 +254,10 @@ export function changeComposeSpoilerText(text) { }; }; -export function changeComposeVisibility(checked) { +export function changeComposeVisibility(value) { return { type: COMPOSE_VISIBILITY_CHANGE, - checked - }; -}; - -export function changeComposeListability(checked) { - return { - type: COMPOSE_LISTABILITY_CHANGE, - checked + value }; }; diff --git a/app/assets/javascripts/components/components/icon_button.jsx b/app/assets/javascripts/components/components/icon_button.jsx index f9b6192c0..a08b1159b 100644 --- a/app/assets/javascripts/components/components/icon_button.jsx +++ b/app/assets/javascripts/components/components/icon_button.jsx @@ -12,6 +12,7 @@ const IconButton = React.createClass({ style: React.PropTypes.object, activeStyle: React.PropTypes.object, disabled: React.PropTypes.bool, + inverted: React.PropTypes.bool, animate: React.PropTypes.bool }, @@ -36,10 +37,6 @@ const IconButton = React.createClass({ render () { let style = { - display: 'inline-block', - border: 'none', - padding: '0', - background: 'transparent', fontSize: `${this.props.size}px`, width: `${this.props.size * 1.28571429}px`, height: `${this.props.size}px`, @@ -57,7 +54,7 @@ const IconButton = React.createClass({