From 3df7a1b6f4c3a64f5876dcf946d0815a561fbb3a Mon Sep 17 00:00:00 2001 From: Surinna Curtis Date: Mon, 3 Jul 2017 21:51:00 -0500 Subject: [PATCH] Move layout override into app settings modal Squashed commit of the following: commit 3842f879865818a3299f8283f8ed1b43c5566500 Author: Surinna Curtis Date: Mon Jul 3 19:57:39 2017 -0500 Fix some style issues commit 08628a0234392ecac90e869a1272f429de0b6db2 Author: Surinna Curtis Date: Mon Jul 3 19:35:22 2017 -0500 Improved styling and layout of select app settings commit 1787a7c20f2bf7101c6d6830450564178314a737 Author: Surinna Curtis Date: Mon Jul 3 17:13:53 2017 -0500 remove the layout selector ui from the drawer commit 7d93b180b1e615e2c36210ad6f119fe80a2778d8 Author: Surinna Curtis Date: Mon Jul 3 17:01:51 2017 -0500 Add layout setting to app settings modal --- .../mastodon/features/compose/index.js | 49 +----------- .../features/ui/components/settings_modal.js | 79 +++++++++++++++---- .../ui/containers/settings_modal_container.js | 3 + app/javascript/styles/components.scss | 23 +----- 4 files changed, 75 insertions(+), 79 deletions(-) diff --git a/app/javascript/mastodon/features/compose/index.js b/app/javascript/mastodon/features/compose/index.js index 843dcc96c0..537e425d97 100644 --- a/app/javascript/mastodon/features/compose/index.js +++ b/app/javascript/mastodon/features/compose/index.js @@ -7,7 +7,7 @@ import { mountCompose, unmountCompose } from '../../actions/compose'; import { openModal } from '../../actions/modal'; import { changeLocalSetting } from '../../actions/local_settings'; import Link from 'react-router-dom/Link'; -import { injectIntl, defineMessages, FormattedMessage } from 'react-intl'; +import { injectIntl, defineMessages } from 'react-intl'; import SearchContainer from './containers/search_container'; import Motion from 'react-motion/lib/Motion'; import spring from 'react-motion/lib/spring'; @@ -23,7 +23,6 @@ const messages = defineMessages({ const mapStateToProps = state => ({ showSearch: state.getIn(['search', 'submitted']) && !state.getIn(['search', 'hidden']), - layout: state.getIn(['local_settings', 'layout']), }); @connect(mapStateToProps) @@ -35,7 +34,6 @@ export default class Compose extends React.PureComponent { multiColumn: PropTypes.bool, showSearch: PropTypes.bool, intl: PropTypes.object.isRequired, - layout: PropTypes.string, }; componentDidMount () { @@ -57,7 +55,7 @@ export default class Compose extends React.PureComponent { } render () { - const { multiColumn, showSearch, intl, layout } = this.props; + const { multiColumn, showSearch, intl } = this.props; let header = ''; @@ -73,46 +71,7 @@ export default class Compose extends React.PureComponent { ); } - let layoutContent = ''; - - switch (layout) { - case 'single': - layoutContent = ( -
-

- -

-

- -

-
- ); - break; - case 'multiple': - layoutContent = ( -
-

- -

-

- -

-
- ); - break; - default: - layoutContent = ( -
-

- -

-

- -

-
- ); - break; - } + return (
@@ -135,8 +94,6 @@ export default class Compose extends React.PureComponent {
- {layoutContent} - ); } diff --git a/app/javascript/mastodon/features/ui/components/settings_modal.js b/app/javascript/mastodon/features/ui/components/settings_modal.js index 70c004a637..2049b05fe9 100644 --- a/app/javascript/mastodon/features/ui/components/settings_modal.js +++ b/app/javascript/mastodon/features/ui/components/settings_modal.js @@ -1,18 +1,30 @@ import React from 'react'; import PropTypes from 'prop-types'; import ImmutablePropTypes from 'react-immutable-proptypes'; -import { FormattedMessage } from 'react-intl'; +import { FormattedMessage, injectIntl, defineMessages } from 'react-intl'; +const messages = defineMessages({ + layout_auto: { id: 'layout.auto', defaultMessage: 'Auto' }, + layout_desktop: { id: 'layout.desktop', defaultMessage: 'Desktop' }, + layout_mobile: { id: 'layout.single', defaultMessage: 'Mobile' }, +}); + +@injectIntl class SettingsItem extends React.PureComponent { static propTypes = { settings: ImmutablePropTypes.map.isRequired, item: PropTypes.array.isRequired, id: PropTypes.string.isRequired, + options: PropTypes.arrayOf(PropTypes.shape({ + value: PropTypes.string.isRequired, + message: PropTypes.object.isRequired, + })), dependsOn: PropTypes.array, dependsOnNot: PropTypes.array, children: PropTypes.element.isRequired, onChange: PropTypes.func.isRequired, + intl: PropTypes.object.isRequired, }; handleChange = (e) => { @@ -21,7 +33,7 @@ class SettingsItem extends React.PureComponent { } render () { - const { settings, item, id, children, dependsOn, dependsOnNot } = this.props; + const { settings, item, id, options, children, dependsOn, dependsOnNot, intl } = this.props; let enabled = true; if (dependsOn) { @@ -35,18 +47,41 @@ class SettingsItem extends React.PureComponent { } } - return ( - - ); + if (options && options.length > 0) { + const currentValue = settings.getIn(item); + const optionElems = options && options.length > 0 && options.map((opt) => ( + + )); + return ( + + ); + } else { + return ( + + ); + } } } @@ -56,6 +91,7 @@ export default class SettingsModal extends React.PureComponent { static propTypes = { settings: ImmutablePropTypes.map.isRequired, toggleSetting: PropTypes.func.isRequired, + changeSetting: PropTypes.func.isRequired, onClose: PropTypes.func.isRequired, }; @@ -67,6 +103,20 @@ export default class SettingsModal extends React.PureComponent { return (

+ + + + +
); } diff --git a/app/javascript/mastodon/features/ui/containers/settings_modal_container.js b/app/javascript/mastodon/features/ui/containers/settings_modal_container.js index 83565c4b9f..571f028ed3 100644 --- a/app/javascript/mastodon/features/ui/containers/settings_modal_container.js +++ b/app/javascript/mastodon/features/ui/containers/settings_modal_container.js @@ -11,6 +11,9 @@ const mapDispatchToProps = dispatch => ({ toggleSetting (setting, e) { dispatch(changeLocalSetting(setting, e.target.checked)); }, + changeSetting (setting, e) { + dispatch(changeLocalSetting(setting, e.target.value)); + }, onClose () { dispatch(closeModal()); }, diff --git a/app/javascript/styles/components.scss b/app/javascript/styles/components.scss index 10e8578656..ac72f37c5a 100644 --- a/app/javascript/styles/components.scss +++ b/app/javascript/styles/components.scss @@ -1545,25 +1545,6 @@ } } -.layout__selector { - margin-top: 20px; - - a { - text-decoration: underline; - cursor: pointer; - color: lighten($ui-base-color, 26%); - } - - b { - font-weight: bold; - } - - p { - font-size: 13px; - color: $ui-secondary-color; - } -} - .tabs-bar { display: flex; background: lighten($ui-base-color, 8%); @@ -3428,6 +3409,10 @@ button.icon-button.active i.fa-retweet { padding: 15px 20px 15px 20px; width: 360px; overflow-y: auto; + + select { + margin-bottom: 5px; + } } .onboard-sliders {