Skip to content
Snippets Groups Projects
Unverified Commit d2e3e44d authored by Jed Fox's avatar Jed Fox Committed by GitHub
Browse files

Move the “…” menu to the budget name (#459)

parent be0078e4
No related branches found
No related tags found
No related merge requests found
import React, { useState, useEffect } from 'react'; import React, { useState, useEffect } from 'react';
import { connect } from 'react-redux'; import { connect } from 'react-redux';
import { withRouter } from 'react-router-dom'; import { useDispatch } from 'react-redux';
import { withRouter, useHistory } from 'react-router';
import { bindActionCreators } from 'redux'; import { bindActionCreators } from 'redux';
import * as actions from 'loot-core/src/client/actions'; import * as actions from 'loot-core/src/client/actions';
import { closeBudget } from 'loot-core/src/client/actions/budgets';
import Platform from 'loot-core/src/client/platform';
import * as queries from 'loot-core/src/client/queries'; import * as queries from 'loot-core/src/client/queries';
import { send } from 'loot-core/src/platform/client/fetch'; import { send } from 'loot-core/src/platform/client/fetch';
import { import {
Button, Button,
Input, Input,
InitialFocus, InitialFocus,
Text Text,
Tooltip,
Menu
} from 'loot-design/src/components/common'; } from 'loot-design/src/components/common';
import { Sidebar } from 'loot-design/src/components/sidebar'; import { Sidebar } from 'loot-design/src/components/sidebar';
import { styles, colors } from 'loot-design/src/style'; import { styles, colors } from 'loot-design/src/style';
import ExpandArrow from 'loot-design/src/svg/ExpandArrow';
function EditableBudgetName({ prefs, savePrefs }) { function EditableBudgetName({ prefs, savePrefs }) {
let dispatch = useDispatch();
let history = useHistory();
const [editing, setEditing] = useState(false); const [editing, setEditing] = useState(false);
const [menuOpen, setMenuOpen] = useState(false);
function onMenuSelect(type) {
setMenuOpen(false);
switch (type) {
case 'rename':
setEditing(true);
break;
case 'settings':
history.push('/settings');
break;
case 'help':
window.open('https://actualbudget.github.io/docs', '_blank');
break;
case 'close':
dispatch(closeBudget());
break;
default:
}
}
let items = [
{ name: 'rename', text: 'Rename Budget' },
{ name: 'settings', text: 'Settings' },
...(Platform.isBrowser ? [{ name: 'help', text: 'Help' }] : []),
{ name: 'close', text: 'Close File' }
];
if (editing) { if (editing) {
return ( return (
...@@ -53,11 +89,25 @@ function EditableBudgetName({ prefs, savePrefs }) { ...@@ -53,11 +89,25 @@ function EditableBudgetName({ prefs, savePrefs }) {
marginLeft: -5, marginLeft: -5,
flex: '0 auto' flex: '0 auto'
}} }}
onClick={() => setEditing(true)} onClick={() => setMenuOpen(true)}
> >
<Text style={{ whiteSpace: 'nowrap', overflow: 'hidden' }}> <Text style={{ whiteSpace: 'nowrap', overflow: 'hidden' }}>
{prefs.budgetName || 'A budget has no name'} {prefs.budgetName || 'A budget has no name'}
</Text> </Text>
<ExpandArrow
width={7}
height={7}
style={{ color: 'inherit', marginLeft: 5 }}
/>
{menuOpen && (
<Tooltip
position="bottom-left"
style={{ padding: 0 }}
onClose={() => setMenuOpen(false)}
>
<Menu onMenuSelect={onMenuSelect} items={items} />
</Tooltip>
)}
</Button> </Button>
); );
} }
......
...@@ -446,62 +446,6 @@ function ToggleButton({ style, onFloat }) { ...@@ -446,62 +446,6 @@ function ToggleButton({ style, onFloat }) {
); );
} }
const MenuButton = withRouter(function MenuButton({ history }) {
let dispatch = useDispatch();
let [menuOpen, setMenuOpen] = useState(false);
function onMenuSelect(type) {
setMenuOpen(false);
switch (type) {
case 'settings':
history.push('/settings');
break;
case 'help':
window.open('https://actualbudget.github.io/docs', '_blank');
break;
case 'close':
dispatch(closeBudget());
break;
default:
}
}
let items = [
{ name: 'settings', text: 'Settings' },
{ name: 'help', text: 'Help' },
{ name: 'close', text: 'Close File' }
];
return (
<Button
bare
style={{
color: colors.n5,
flexShrink: 0
}}
activeStyle={{ color: colors.p7 }}
onClick={() => setMenuOpen(true)}
aria-label="Menu"
>
<DotsHorizontalTriple
width={15}
height={15}
style={{ color: 'inherit', transform: 'rotateZ(0deg)' }}
/>
{menuOpen && (
<Tooltip
position="bottom-right"
style={{ padding: 0 }}
onClose={() => setMenuOpen(false)}
>
<Menu onMenuSelect={onMenuSelect} items={items} />
</Tooltip>
)}
</Button>
);
});
function Tools() { function Tools() {
let [isOpen, setOpen] = useState(false); let [isOpen, setOpen] = useState(false);
let onToggle = useCallback(() => setOpen(open => !open), []); let onToggle = useCallback(() => setOpen(open => !open), []);
...@@ -638,7 +582,6 @@ export function Sidebar({ ...@@ -638,7 +582,6 @@ export function Sidebar({
<View style={{ flex: 1, flexDirection: 'row' }} /> <View style={{ flex: 1, flexDirection: 'row' }} />
{!hasWindowButtons && <ToggleButton onFloat={onFloat} />} {!hasWindowButtons && <ToggleButton onFloat={onFloat} />}
{Platform.isBrowser && <MenuButton />}
</View> </View>
<View style={{ overflow: 'auto' }}> <View style={{ overflow: 'auto' }}>
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment