Merge pull request #1237 from matrix-org/luke/fix-rte-colon-parity
Implement old composer feature that inserts ': ' or ' '
This commit is contained in:
commit
199b771051
2 changed files with 9 additions and 2 deletions
|
@ -55,6 +55,7 @@ export default class UserProvider extends AutocompleteProvider {
|
|||
const displayName = (user.name || user.userId || '').replace(' (IRC)', ''); // FIXME when groups are done
|
||||
return {
|
||||
completion: displayName,
|
||||
suffix: range.start === 0 ? ': ' : ' ',
|
||||
entity: {
|
||||
type: 'LINK',
|
||||
mutability: 'IMMUTABLE',
|
||||
|
|
|
@ -928,7 +928,7 @@ export default class MessageComposerInput extends React.Component {
|
|||
return false;
|
||||
}
|
||||
|
||||
const {range = {}, completion = '', entity = null} = displayedCompletion;
|
||||
const {range = {}, completion = '', entity = null, suffix = ''} = displayedCompletion;
|
||||
let entityKey;
|
||||
if (entity) {
|
||||
entityKey = Entity.create(
|
||||
|
@ -938,7 +938,7 @@ export default class MessageComposerInput extends React.Component {
|
|||
);
|
||||
}
|
||||
|
||||
const contentState = Modifier.replaceText(
|
||||
let contentState = Modifier.replaceText(
|
||||
activeEditorState.getCurrentContent(),
|
||||
RichText.textOffsetsToSelectionState(
|
||||
range, activeEditorState.getCurrentContent().getBlocksAsArray(),
|
||||
|
@ -948,6 +948,12 @@ export default class MessageComposerInput extends React.Component {
|
|||
entityKey,
|
||||
);
|
||||
|
||||
// Move the selection to the end of the block
|
||||
const afterSelection = contentState.getSelectionAfter();
|
||||
if (suffix) {
|
||||
contentState = Modifier.replaceText(contentState, afterSelection, suffix);
|
||||
}
|
||||
|
||||
let editorState = EditorState.push(activeEditorState, contentState, 'insert-characters');
|
||||
editorState = EditorState.forceSelection(editorState, contentState.getSelectionAfter());
|
||||
this.setState({editorState, originalEditorState: activeEditorState});
|
||||
|
|
Loading…
Reference in a new issue