save using ctrl+s

This commit is contained in:
Jan Prochazka
2020-12-07 19:49:37 +01:00
parent fd2747d166
commit fc6355126f
7 changed files with 41 additions and 12 deletions

View File

@@ -19,7 +19,7 @@ export default function SaveFileModal({ data, folder, format, modalState, name,
<ModalHeader modalState={modalState}>Save file</ModalHeader>
<FormProvider initialValues={{ name }}>
<ModalContent>
<FormTextField label="File name" name="name" />
<FormTextField label="File name" name="name" focused/>
</ModalContent>
<ModalFooter>
<FormSubmit value="Save" onClick={handleSubmit} />

View File

@@ -1,15 +1,35 @@
import React from 'react';
import { changeTab } from '../utility/common';
import { useOpenedTabs, useSetOpenedTabs } from '../utility/globalState';
import keycodes from '../utility/keycodes';
import SaveFileModal from './SaveFileModal';
export default function SaveTabModal({ data, folder, format, modalState, tabid }) {
export default function SaveTabModal({ data, folder, format, modalState, tabid, tabVisible }) {
const setOpenedTabs = useSetOpenedTabs();
const openedTabs = useOpenedTabs();
const name = openedTabs.find((x) => x.tabid == tabid).title;
const onSave = (name) => changeTab(tabid, setOpenedTabs, (tab) => ({ ...tab, title: name }));
const handleKeyboard = React.useCallback(
(e) => {
if (e.keyCode == keycodes.s && e.ctrlKey) {
e.preventDefault();
modalState.open();
}
},
[modalState]
);
React.useEffect(() => {
if (tabVisible) {
document.addEventListener('keydown', handleKeyboard);
return () => {
document.removeEventListener('keydown', handleKeyboard);
};
}
}, [tabVisible, handleKeyboard]);
return (
<SaveFileModal data={data} folder={folder} format={format} modalState={modalState} name={name} onSave={onSave} />
);