diff --git a/app/scenes/Document/Document.js b/app/scenes/Document/Document.js index 04e02e570..fddeb555f 100644 --- a/app/scenes/Document/Document.js +++ b/app/scenes/Document/Document.js @@ -155,6 +155,14 @@ class DocumentScene extends React.Component { } } + @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 => { const { shareId, revisionId } = props.match.params; @@ -409,6 +417,7 @@ class DocumentScene extends React.Component { onSearchLink={this.onSearchLink} onChange={this.onChange} onSave={this.onSave} + onPublish={this.onPublish} onCancel={this.onDiscard} readOnly={!this.isEditing || document.isArchived} toc={!revision} diff --git a/app/scenes/Document/components/Header.js b/app/scenes/Document/components/Header.js index cab833cfd..60921ede6 100644 --- a/app/scenes/Document/components/Header.js +++ b/app/scenes/Document/components/Header.js @@ -189,14 +189,21 @@ class Header extends React.Component { {can.update && isDraft && ( - + + )} {canEdit && ( diff --git a/app/scenes/Document/components/plugins.js b/app/scenes/Document/components/plugins.js index 4be25e972..613d5b02a 100644 --- a/app/scenes/Document/components/plugins.js +++ b/app/scenes/Document/components/plugins.js @@ -1,6 +1,7 @@ // @flow import { Node, Editor } from 'slate'; import Placeholder from 'rich-markdown-editor/lib/plugins/Placeholder'; +import isModKey from 'rich-markdown-editor/lib/lib/isModKey'; export default [ Placeholder({ @@ -25,4 +26,13 @@ export default [ return true; }, }), + { + onKeyDown(ev: SyntheticKeyboardEvent<>, editor: Editor, next: Function) { + if (ev.key === 'p' && ev.shiftKey && isModKey(ev)) { + return editor.props.onPublish(ev); + } + + return next(); + }, + }, ];