allow enter to remove current block if its empty useful for lists

Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
This commit is contained in:
Michael Telatynski 2018-07-17 13:29:40 +01:00
parent 8d4cead105
commit 688776bc10
No known key found for this signature in database
GPG key ID: 3F879DA5AD802A5E

View file

@ -992,24 +992,25 @@ export default class MessageComposerInput extends React.Component {
const editorState = this.state.editorState; const editorState = this.state.editorState;
let inBlock = false; const lastBlock = editorState.blocks.last();
let inEmptyBlock = false; if (['code', 'block-quote', 'list-item'].includes(lastBlock.type)) {
const text = lastBlock.text;
for (const block of editorState.blocks) { if (text === '') {
if (['code', 'block-quote', 'list-item'].includes(block.type)) {
inBlock = true;
if (block.text === '') {
inEmptyBlock = true;
}
break;
}
}
if (inEmptyBlock) {
// allow the user to cancel empty block by hitting return, useful in conjunction with below `inBlock` // allow the user to cancel empty block by hitting return, useful in conjunction with below `inBlock`
return change.setBlocks(DEFAULT_NODE); return change
} else if (inBlock) { .setBlocks(DEFAULT_NODE)
// allow the user to terminate blocks by hitting return rather than sending a msg .unwrapBlock('bulleted-list')
.unwrapBlock('numbered-list');
}
// TODO strip trailing lines from blockquotes/list entries
// the below code seemingly works but doesn't account for edge cases like return with caret not at end
/* const trailingNewlines = text.match(/\n*$/);
if (trailingNewlines && trailingNewlines[0]) {
remove trailing newlines at the end of this block before making a new one
return change.deleteBackward(trailingNewlines[0].length);
}*/
return; return;
} }