From 796bf9c8443934324ac283dd140ca9b024bb3645 Mon Sep 17 00:00:00 2001 From: Sean King Date: Sun, 19 Jul 2020 15:50:16 -0600 Subject: [PATCH 1/4] Change design of toggle button --- .../components/setting_toggle.js | 16 +++++++++++----- .../features/ui/components/tabs_bar.js | 19 ++++++------------- app/styles/components/tabs-bar.scss | 19 +++++++++++++++++++ 3 files changed, 36 insertions(+), 18 deletions(-) diff --git a/app/soapbox/features/notifications/components/setting_toggle.js b/app/soapbox/features/notifications/components/setting_toggle.js index b9adbedd5..145e2b03a 100644 --- a/app/soapbox/features/notifications/components/setting_toggle.js +++ b/app/soapbox/features/notifications/components/setting_toggle.js @@ -9,8 +9,14 @@ export default class SettingToggle extends React.PureComponent { prefix: PropTypes.string, settings: ImmutablePropTypes.map.isRequired, settingPath: PropTypes.array.isRequired, - label: PropTypes.node.isRequired, + label: PropTypes.node, onChange: PropTypes.func.isRequired, + icons: PropTypes.oneOfType([ + PropTypes.bool, + PropTypes.object, + ]), + condition: PropTypes.string, + ariaLabel: PropTypes.string, } onChange = ({ target }) => { @@ -18,13 +24,13 @@ export default class SettingToggle extends React.PureComponent { } render() { - const { prefix, settings, settingPath, label } = this.props; + const { prefix, settings, settingPath, label, icons, condition, ariaLabel } = this.props; const id = ['setting-toggle', prefix, ...settingPath].filter(Boolean).join('-'); return ( -
- - +
+ + {label && ()}
); } diff --git a/app/soapbox/features/ui/components/tabs_bar.js b/app/soapbox/features/ui/components/tabs_bar.js index 0801bb7bd..8442c5cb1 100644 --- a/app/soapbox/features/ui/components/tabs_bar.js +++ b/app/soapbox/features/ui/components/tabs_bar.js @@ -13,6 +13,7 @@ import { openModal } from '../../../actions/modal'; import { openSidebar } from '../../../actions/sidebar'; import Icon from '../../../components/icon'; import { changeSetting, getSettings } from 'soapbox/actions/settings'; +import SettingToggle from '../../notifications/components/setting_toggle'; const messages = defineMessages({ post: { id: 'tabs_bar.post', defaultMessage: 'Post' }, @@ -31,7 +32,7 @@ class TabsBar extends React.PureComponent { toggleTheme: PropTypes.func, logo: PropTypes.string, account: ImmutablePropTypes.map, - themeMode: PropTypes.string, + settings: ImmutablePropTypes.map.isRequired, } state = { @@ -83,18 +84,12 @@ class TabsBar extends React.PureComponent { })); } - getNewThemeValue() { - if (this.props.themeMode === 'light') return 'dark'; - - return 'light'; - } - handleToggleTheme = () => { - this.props.toggleTheme(this.getNewThemeValue()); + this.props.toggleTheme(this.props.settings.get('themeMode') === 'light' ? 'dark' : 'light'); } render() { - const { account, onOpenCompose, onOpenSidebar, intl, themeMode } = this.props; + const { account, onOpenCompose, onOpenSidebar, intl, settings } = this.props; const { collapsed } = this.state; const classes = classNames('tabs-bar', { @@ -113,9 +108,7 @@ class TabsBar extends React.PureComponent {
{ account &&
- + , unchecked: }} ariaLabel={settings.get('themeMode') === 'light' ? intl.formatMessage(messages.switchToDark) : intl.formatMessage(messages.switchToLight)} />
+
+ +
+
+ +
{intl.formatMessage(messages.profile)} diff --git a/app/soapbox/features/ui/components/tabs_bar.js b/app/soapbox/features/ui/components/tabs_bar.js index 8442c5cb1..de1864a7d 100644 --- a/app/soapbox/features/ui/components/tabs_bar.js +++ b/app/soapbox/features/ui/components/tabs_bar.js @@ -12,13 +12,10 @@ import ActionBar from 'soapbox/features/compose/components/action_bar'; import { openModal } from '../../../actions/modal'; import { openSidebar } from '../../../actions/sidebar'; import Icon from '../../../components/icon'; -import { changeSetting, getSettings } from 'soapbox/actions/settings'; -import SettingToggle from '../../notifications/components/setting_toggle'; +import ThemeToggle from '../../ui/components/theme_toggle'; const messages = defineMessages({ post: { id: 'tabs_bar.post', defaultMessage: 'Post' }, - switchToLight: { id: 'tabs_bar.theme_toggle_light', defaultMessage: 'Switch to light theme' }, - switchToDark: { id: 'tabs_bar.theme_toggle_dark', defaultMessage: 'Switch to dark theme' }, }); @withRouter @@ -29,10 +26,8 @@ class TabsBar extends React.PureComponent { history: PropTypes.object.isRequired, onOpenCompose: PropTypes.func, onOpenSidebar: PropTypes.func.isRequired, - toggleTheme: PropTypes.func, logo: PropTypes.string, account: ImmutablePropTypes.map, - settings: ImmutablePropTypes.map.isRequired, } state = { @@ -84,12 +79,8 @@ class TabsBar extends React.PureComponent { })); } - handleToggleTheme = () => { - this.props.toggleTheme(this.props.settings.get('themeMode') === 'light' ? 'dark' : 'light'); - } - render() { - const { account, onOpenCompose, onOpenSidebar, intl, settings } = this.props; + const { account, onOpenCompose, onOpenSidebar, intl } = this.props; const { collapsed } = this.state; const classes = classNames('tabs-bar', { @@ -108,7 +99,7 @@ class TabsBar extends React.PureComponent {
{ account &&
- , unchecked: }} ariaLabel={settings.get('themeMode') === 'light' ? intl.formatMessage(messages.switchToDark) : intl.formatMessage(messages.switchToLight)} /> +
); } - + }