mirror of
https://github.com/bigcapitalhq/bigcapital.git
synced 2026-02-17 13:20:31 +00:00
81 lines
1.9 KiB
TypeScript
81 lines
1.9 KiB
TypeScript
// @ts-nocheck
|
|
import React from 'react';
|
|
import { useHotkeys } from 'react-hotkeys-hook';
|
|
import { useHistory } from 'react-router-dom';
|
|
import { getDashboardRoutes } from '@/routes/dashboard';
|
|
import { withDashboardActions } from '@/containers/Dashboard/withDashboardActions';
|
|
import { withDialogActions } from '@/containers/Dialog/withDialogActions';
|
|
import { withUniversalSearchActions } from '@/containers/UniversalSearch/withUniversalSearchActions';
|
|
|
|
import { compose } from '@/utils';
|
|
|
|
// Toggle dark/light mode by toggling 'bp4-dark' class on body
|
|
const handleToggleDarkMode = () => {
|
|
const body = document.body;
|
|
|
|
if (body.classList.contains('bp4-dark')) {
|
|
body.classList.remove('bp4-dark');
|
|
} else {
|
|
body.classList.add('bp4-dark');
|
|
}
|
|
};
|
|
|
|
function GlobalHotkeys({
|
|
// #withDashboardActions
|
|
toggleSidebarExpand,
|
|
|
|
// withUniversalSearchActions
|
|
openGlobalSearch,
|
|
|
|
// #withDialogActions
|
|
openDialog,
|
|
}) {
|
|
const history = useHistory();
|
|
const routes = getDashboardRoutes();
|
|
|
|
const globalHotkeys = routes
|
|
.filter(({ hotkey }) => hotkey)
|
|
.map(({ hotkey }) => hotkey)
|
|
.toString();
|
|
|
|
const handleSidebarToggleBtn = () => {
|
|
toggleSidebarExpand();
|
|
};
|
|
useHotkeys(
|
|
globalHotkeys,
|
|
(event, handle) => {
|
|
routes.map(({ path, hotkey }) => {
|
|
if (handle.key === hotkey) {
|
|
history.push(path);
|
|
}
|
|
});
|
|
},
|
|
[history],
|
|
);
|
|
useHotkeys('ctrl+/', () => {
|
|
handleSidebarToggleBtn();
|
|
});
|
|
useHotkeys('shift+d', () => {
|
|
openDialog('money-in', {});
|
|
});
|
|
useHotkeys('shift+q', () => {
|
|
openDialog('money-out', {});
|
|
});
|
|
useHotkeys('/', () => {
|
|
setTimeout(() => {
|
|
openGlobalSearch();
|
|
}, 0);
|
|
});
|
|
useHotkeys('shift+h', () => {
|
|
handleToggleDarkMode();
|
|
});
|
|
|
|
return <div></div>;
|
|
}
|
|
|
|
export default compose(
|
|
withDashboardActions,
|
|
withDialogActions,
|
|
withUniversalSearchActions,
|
|
)(GlobalHotkeys);
|