From ceb44ab206d3d86308f17f999695570df849cdc9 Mon Sep 17 00:00:00 2001 From: Mikhail Mikheev Date: Tue, 17 Sep 2019 15:19:39 +0400 Subject: [PATCH] make sidebar toggleable --- src/components/EtherscanLink/index.jsx | 2 +- src/components/Header/component/Layout.jsx | 4 +- .../Header/component/SafeListHeader/index.jsx | 60 +++++++++++++++++++ src/components/Root/index.js | 2 - src/components/Sidebar/index.jsx | 28 +++++---- src/components/layout/Divider/index.js | 2 +- src/components/layout/PageFrame/index.jsx | 11 ++-- src/routes/safeList/store/selectors/index.js | 5 ++ src/theme/mui.js | 5 ++ 9 files changed, 100 insertions(+), 19 deletions(-) create mode 100644 src/components/Header/component/SafeListHeader/index.jsx diff --git a/src/components/EtherscanLink/index.jsx b/src/components/EtherscanLink/index.jsx index 1e1e743e..f824f6e9 100644 --- a/src/components/EtherscanLink/index.jsx +++ b/src/components/EtherscanLink/index.jsx @@ -26,6 +26,6 @@ const EtherscanLink = ({ type, value, currentNetwork }: EtherscanLinkProps) => ( ) export default connect( - state => ({ currentNetwork: networkSelector(state) }), + (state) => ({ currentNetwork: networkSelector(state) }), null, )(EtherscanLink) diff --git a/src/components/Header/component/Layout.jsx b/src/components/Header/component/Layout.jsx index 732170a8..6973b105 100644 --- a/src/components/Header/component/Layout.jsx +++ b/src/components/Header/component/Layout.jsx @@ -14,6 +14,7 @@ import Row from '~/components/layout/Row' import Spacer from '~/components/Spacer' import { border, sm, md } from '~/theme/variables' import Provider from './Provider' +import SafeListHeader from './SafeListHeader' const logo = require('../assets/gnosis-safe-logo.svg') @@ -58,8 +59,9 @@ const Layout = openHoc(({ - + + {(providerRef) => ( diff --git a/src/components/Header/component/SafeListHeader/index.jsx b/src/components/Header/component/SafeListHeader/index.jsx new file mode 100644 index 00000000..3e673471 --- /dev/null +++ b/src/components/Header/component/SafeListHeader/index.jsx @@ -0,0 +1,60 @@ +// @flow +import * as React from 'react' +import { connect } from 'react-redux' +import { makeStyles } from '@material-ui/core/styles' +import IconButton from '@material-ui/core/IconButton' +import ExpandMoreIcon from '@material-ui/icons/ExpandMore' +import Paragraph from '~/components/layout/Paragraph' +import Col from '~/components/layout/Col' +import { + xs, sm, md, border, +} from '~/theme/variables' +import { safesCountSelector } from '~/routes/safeList/store/selectors' +import { SidebarContext } from '~/components/Sidebar' + +const useStyles = makeStyles({ + container: { + flexGrow: 0, + padding: `0 ${md}`, + }, + counter: { + background: border, + padding: xs, + borderRadius: '3px', + marginLeft: sm, + lineHeight: 'normal', + }, + icon: { + marginLeft: sm, + }, +}) + +type Props = { + safesCount: number, +} + +const { useContext } = React + +const SafeListHeader = ({ safesCount }: Props) => { + const classes = useStyles() + const { toggleSidebar } = useContext(SidebarContext) + + return ( + + Safes + {' '} + + {safesCount} + + + + + + ) +} + +export default connect( + // $FlowFixMe + (state) => ({ safesCount: safesCountSelector(state) }), + null, +)(SafeListHeader) diff --git a/src/components/Root/index.js b/src/components/Root/index.js index 4ea68572..8cfba635 100644 --- a/src/components/Root/index.js +++ b/src/components/Root/index.js @@ -6,7 +6,6 @@ import React, { Suspense } from 'react' import { Provider } from 'react-redux' import { ConnectedRouter } from 'connected-react-router' import { hot } from 'react-hot-loader/root' -import Sidebar from '~/components/Sidebar' import PageFrame from '../layout/PageFrame' import Loader from '../Loader' import { history, store } from '~/store' @@ -22,7 +21,6 @@ const Root = () => ( }> - diff --git a/src/components/Sidebar/index.jsx b/src/components/Sidebar/index.jsx index b63c0c04..2204344b 100644 --- a/src/components/Sidebar/index.jsx +++ b/src/components/Sidebar/index.jsx @@ -3,7 +3,12 @@ import React, { useState } from 'react' import Drawer from '@material-ui/core/Drawer' import useSidebarStyles from './style' -const Sidebar = () => { +export const SidebarContext = React.createContext({ + isOpen: false, + toggleSidebar: () => {}, +}) + +const Sidebar = ({ children }) => { const [isOpen, setIsOpen] = useState(true) const classes = useSidebarStyles() @@ -12,15 +17,18 @@ const Sidebar = () => { } return ( - -
- Wop - + + +
+ Wop + + {children} + ) } diff --git a/src/components/layout/Divider/index.js b/src/components/layout/Divider/index.js index 0d81c3f7..3dca7fde 100644 --- a/src/components/layout/Divider/index.js +++ b/src/components/layout/Divider/index.js @@ -4,7 +4,7 @@ import { border } from '~/theme/variables' const style = { height: '100%', - borderRight: `solid 1px ${border}`, + borderRight: `solid 2px ${border}`, } const Divider = () =>
diff --git a/src/components/layout/PageFrame/index.jsx b/src/components/layout/PageFrame/index.jsx index 4b260890..7ae223ec 100644 --- a/src/components/layout/PageFrame/index.jsx +++ b/src/components/layout/PageFrame/index.jsx @@ -1,7 +1,8 @@ // @flow -import React from 'react' +import * as React from 'react' import Footer from '~/components/Footer' import Header from '~/components/Header' +import SidebarProvider from '~/components/Sidebar' import { SharedSnackbarProvider } from '~/components/SharedSnackBar' import styles from './index.scss' @@ -12,9 +13,11 @@ type Props = { const PageFrame = ({ children }: Props) => (
-
- {children} -
+ +
+ {children} +
+
) diff --git a/src/routes/safeList/store/selectors/index.js b/src/routes/safeList/store/selectors/index.js index b9247ec0..623e76a1 100644 --- a/src/routes/safeList/store/selectors/index.js +++ b/src/routes/safeList/store/selectors/index.js @@ -11,3 +11,8 @@ export const safesListSelector: Selector> = createSe safesMapSelector, (safes: Map): List => safes.toList(), ) + +export const safesCountSelector: Selector = createSelector( + safesMapSelector, + (safes: Map): number => safes.size, +) \ No newline at end of file diff --git a/src/theme/mui.js b/src/theme/mui.js index 1cf13754..96dba5ad 100644 --- a/src/theme/mui.js +++ b/src/theme/mui.js @@ -206,6 +206,11 @@ export default createMuiTheme({ color: primary, }, }, + MuiSvgIcon: { + colorSecondary: { + color: secondaryText, + } + }, MuiTab: { root: { fontFamily: 'Averta, monospace',