Send message when pressing enter in the emoji picker

This commit is contained in:
Ken Powers 2019-05-31 17:58:53 -04:00 committed by Scott Nonnenberg
parent 0a16c905b9
commit d23efc6717
3 changed files with 30 additions and 6 deletions

View file

@ -318,6 +318,9 @@
setupEmojiPickerButton() { setupEmojiPickerButton() {
const props = { const props = {
onForceSend: () => {
this.sendMessage({});
},
onPickEmoji: e => this.insertEmoji(e), onPickEmoji: e => this.insertEmoji(e),
onClose: () => { onClose: () => {
const textarea = this.$messageField[0]; const textarea = this.$messageField[0];

View file

@ -13,13 +13,19 @@ export type OwnProps = {
export type Props = OwnProps & export type Props = OwnProps &
Pick< Pick<
EmojiPickerProps, EmojiPickerProps,
'onClose' | 'onPickEmoji' | 'skinTone' | 'onSetSkinTone' | 'recentEmojis' | 'onClose'
| 'onForceSend'
| 'onPickEmoji'
| 'skinTone'
| 'onSetSkinTone'
| 'recentEmojis'
>; >;
export const EmojiButton = React.memo( export const EmojiButton = React.memo(
({ ({
i18n, i18n,
onClose, onClose,
onForceSend,
onPickEmoji, onPickEmoji,
skinTone, skinTone,
onSetSkinTone, onSetSkinTone,
@ -98,6 +104,7 @@ export const EmojiButton = React.memo(
i18n={i18n} i18n={i18n}
style={style} style={style}
onPickEmoji={onPickEmoji} onPickEmoji={onPickEmoji}
onForceSend={onForceSend}
onClose={handleClose} onClose={handleClose}
skinTone={skinTone} skinTone={skinTone}
onSetSkinTone={onSetSkinTone} onSetSkinTone={onSetSkinTone}

View file

@ -22,6 +22,7 @@ import { LocalizerType } from '../../types/Util';
export type OwnProps = { export type OwnProps = {
readonly i18n: LocalizerType; readonly i18n: LocalizerType;
readonly onPickEmoji: (o: { skinTone: number; shortName: string }) => unknown; readonly onPickEmoji: (o: { skinTone: number; shortName: string }) => unknown;
readonly onForceSend: () => unknown;
readonly skinTone: number; readonly skinTone: number;
readonly onSetSkinTone: (tone: number) => unknown; readonly onSetSkinTone: (tone: number) => unknown;
readonly recentEmojis: Array<string>; readonly recentEmojis: Array<string>;
@ -56,6 +57,7 @@ export const EmojiPicker = React.memo(
( (
{ {
i18n, i18n,
onForceSend,
onPickEmoji, onPickEmoji,
skinTone = 0, skinTone = 0,
onSetSkinTone, onSetSkinTone,
@ -113,13 +115,24 @@ export const EmojiPicker = React.memo(
); );
const handlePickEmoji = React.useCallback( const handlePickEmoji = React.useCallback(
(e: React.MouseEvent<HTMLButtonElement>) => { (
const { shortName } = e.currentTarget.dataset; e:
if (shortName) { | React.MouseEvent<HTMLButtonElement>
onPickEmoji({ skinTone: selectedTone, shortName }); | React.KeyboardEvent<HTMLButtonElement>
) => {
if ('key' in e) {
if (e.key === 'Enter') {
e.preventDefault();
onForceSend();
}
} else {
const { shortName } = e.currentTarget.dataset;
if (shortName) {
onPickEmoji({ skinTone: selectedTone, shortName });
}
} }
}, },
[onClose, onPickEmoji, selectedTone] [onClose, onForceSend, onPickEmoji, selectedTone]
); );
// Handle escape key // Handle escape key
@ -229,6 +242,7 @@ export const EmojiPicker = React.memo(
<button <button
className="module-emoji-picker__button" className="module-emoji-picker__button"
onClick={handlePickEmoji} onClick={handlePickEmoji}
onKeyDown={handlePickEmoji}
data-short-name={shortName} data-short-name={shortName}
title={shortName} title={shortName}
> >