Send message when pressing enter in the emoji picker
This commit is contained in:
parent
0a16c905b9
commit
d23efc6717
3 changed files with 30 additions and 6 deletions
|
@ -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];
|
||||||
|
|
|
@ -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}
|
||||||
|
|
|
@ -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}
|
||||||
>
|
>
|
||||||
|
|
Loading…
Reference in a new issue