feat: Add keyboard shortcut to publish document

closes #1073
This commit is contained in:
Tom Moor
2019-10-27 18:04:35 -07:00
parent 98cd93c99c
commit 9ef9c75c6b
3 changed files with 33 additions and 7 deletions

View File

@ -155,6 +155,14 @@ class DocumentScene extends React.Component<Props> {
} }
} }
@keydown('meta+shift+p')
onPublish(ev) {
ev.preventDefault();
if (!this.document) return;
if (this.document.publishedAt) return;
this.onSave({ publish: true, done: true });
}
loadDocument = async props => { loadDocument = async props => {
const { shareId, revisionId } = props.match.params; const { shareId, revisionId } = props.match.params;
@ -409,6 +417,7 @@ class DocumentScene extends React.Component<Props> {
onSearchLink={this.onSearchLink} onSearchLink={this.onSearchLink}
onChange={this.onChange} onChange={this.onChange}
onSave={this.onSave} onSave={this.onSave}
onPublish={this.onPublish}
onCancel={this.onDiscard} onCancel={this.onDiscard}
readOnly={!this.isEditing || document.isArchived} readOnly={!this.isEditing || document.isArchived}
toc={!revision} toc={!revision}

View File

@ -189,14 +189,21 @@ class Header extends React.Component<Props> {
{can.update && {can.update &&
isDraft && ( isDraft && (
<Action> <Action>
<Button <Tooltip
onClick={this.handlePublish} tooltip="Publish"
title="Publish document" shortcut={`${meta}+shift+p`}
disabled={publishingIsDisabled} delay={500}
small placement="bottom"
> >
{isPublishing ? 'Publishing…' : 'Publish'} <Button
</Button> onClick={this.handlePublish}
title="Publish document"
disabled={publishingIsDisabled}
small
>
{isPublishing ? 'Publishing…' : 'Publish'}
</Button>
</Tooltip>
</Action> </Action>
)} )}
{canEdit && ( {canEdit && (

View File

@ -1,6 +1,7 @@
// @flow // @flow
import { Node, Editor } from 'slate'; import { Node, Editor } from 'slate';
import Placeholder from 'rich-markdown-editor/lib/plugins/Placeholder'; import Placeholder from 'rich-markdown-editor/lib/plugins/Placeholder';
import isModKey from 'rich-markdown-editor/lib/lib/isModKey';
export default [ export default [
Placeholder({ Placeholder({
@ -25,4 +26,13 @@ export default [
return true; return true;
}, },
}), }),
{
onKeyDown(ev: SyntheticKeyboardEvent<>, editor: Editor, next: Function) {
if (ev.key === 'p' && ev.shiftKey && isModKey(ev)) {
return editor.props.onPublish(ev);
}
return next();
},
},
]; ];