fix strikethough & code, improve shift-return & backspace

pull/21833/head
Matthew Hodgson 2018-05-19 21:36:22 +01:00
parent 58670cc3e5
commit d426c3474f
1 changed files with 19 additions and 10 deletions

View File

@ -551,9 +551,9 @@ export default class MessageComposerInput extends React.Component {
switch (ev.keyCode) {
case KeyCode.ENTER:
return this.handleReturn(ev);
return this.handleReturn(ev, change);
case KeyCode.BACKSPACE:
return this.onBackspace(ev);
return this.onBackspace(ev, change);
case KeyCode.UP:
return this.onVerticalArrow(ev, true);
case KeyCode.DOWN:
@ -568,19 +568,27 @@ export default class MessageComposerInput extends React.Component {
}
};
onBackspace = (ev: Event): boolean => {
onBackspace = (ev: Event, change: Change): Change => {
if (this.state.isRichtextEnabled) {
// let backspace exit lists
const isList = this.hasBlock('list-item');
const { editorState } = this.state;
if (isList && editorState.anchorOffset == 0) {
const change = editorState.change();
change
.setBlocks(DEFAULT_NODE)
.unwrapBlock('bulleted-list')
.unwrapBlock('numbered-list');
this.onChange(change);
return true;
return change;
}
else if (editorState.anchorOffset == 0 &&
(this.hasBlock('block-quote') ||
this.hasBlock('heading-one') ||
this.hasBlock('heading-two') ||
this.hasBlock('heading-three') ||
this.hasBlock('code-block')))
{
return change.setBlocks(DEFAULT_NODE);
}
}
return;
@ -770,12 +778,13 @@ export default class MessageComposerInput extends React.Component {
return true;
};
*/
handleReturn = (ev) => {
handleReturn = (ev, change) => {
if (ev.shiftKey) {
// FIXME: we should insert a <br/> equivalent rather than letting Slate
// split the current block, otherwise <p> will be split into two paragraphs
// and it'll look like a double line-break.
return;
return change.insertText('\n');
}
if (this.state.editorState.blocks.some(
@ -1235,11 +1244,11 @@ export default class MessageComposerInput extends React.Component {
e.preventDefault(); // don't steal focus from the editor!
const command = {
code: 'code-block',
// code: 'code-block', // let's have the button do inline code for now
quote: 'block-quote',
bullet: 'bulleted-list',
numbullet: 'numbered-list',
strike: 'strike-through',
strike: 'strikethrough',
}[name] || name;
this.handleKeyCommand(command);
};