Describe the bug
keyBindingFn events are not fired for plugins in Draftail (unless I'm doing something wrong here :)
Which terms did you search for in the documentation and issue tracker?
I've found limited evidence in all three issue trackers (Draft, Draftail and Draft plugins). I did see one issue in Draftail referring to up/down arrows not working in the emoji plugin. I verified the same behaviour.
I suspect draft-js-plugins/issues/1117 could be the cause, meaning that your behaviour.js shortcuts take precedence and some handling is required for subsequent plugins to work?
I can confirm that when I use the draft-js-plugins-editor both of the following key events will fire:
const plugins = [
{
keyBindingFn: () => console.log("First"),
}, {
keyBindingFn: () => console.log("Other")
}
];
Environment
Latest Draftail and Draft JS Plugins dependencies. Per Draftail installation I am using 0.10.5 version of Draft.
Steps to reproduce
Here's a sample plugin editor component that will log out key events:
import React, {Component} from 'react';
import Editor from 'draft-js-plugins-editor';
import {EditorState} from 'draft-js';
const plugins = [
{
keyBindingFn: (e) => console.log(e),
handleReturn: (e) => console.log("Return!!!")
}
];
export default class TextEditor extends Component {
state = {
editorState: EditorState.createEmpty(),
};
onChange = (editorState) => {
this.setState({
editorState,
});
};
render() {
return (
<Editor
editorState={this.state.editorState}
onChange={this.onChange}
plugins={plugins}
/>
);
}
}
Whereas this snippet of code will not:
import React, {Component} from 'react';
import {DraftailEditor} from "draftail"
import {EditorState} from 'draft-js';
const plugins = [
{
keyBindingFn: (e) => console.log(e),
handleReturn: (e) => console.log("Return!!!")
}
];
export default class TextEditor extends Component {
state = {
editorState: EditorState.createEmpty(),
};
onChange = (editorState) => {
this.setState({
editorState,
});
};
render() {
return (
<DraftailEditor
editorState={this.state.editorState}
onChange={this.onChange}
plugins={plugins}
/>
);
}
}
Actual behavior
Here are the two corresponding console dumps:


Reproducible demo
https://github.com/mrolafsson/draft-js-plugins-vs-draftail-keyboard-bug
Thank you for a great project though! Very thoughtful and elegant. Makes Draft much easier to work with.
Describe the bug
keyBindingFnevents are not fired for plugins in Draftail (unless I'm doing something wrong here :)Which terms did you search for in the documentation and issue tracker?
I've found limited evidence in all three issue trackers (Draft, Draftail and Draft plugins). I did see one issue in Draftail referring to up/down arrows not working in the emoji plugin. I verified the same behaviour.
I suspect draft-js-plugins/issues/1117 could be the cause, meaning that your
behaviour.jsshortcuts take precedence and some handling is required for subsequent plugins to work?I can confirm that when I use the
draft-js-plugins-editorboth of the following key events will fire:Environment
Latest Draftail and Draft JS Plugins dependencies. Per Draftail installation I am using 0.10.5 version of Draft.
Steps to reproduce
Here's a sample plugin editor component that will log out key events:
Whereas this snippet of code will not:
Actual behavior
Here are the two corresponding console dumps:
Reproducible demo
https://github.com/mrolafsson/draft-js-plugins-vs-draftail-keyboard-bug
Thank you for a great project though! Very thoughtful and elegant. Makes Draft much easier to work with.