Fix StickerButton

Co-authored-by: Fedor Indutny <79877362+indutny-signal@users.noreply.github.com>
This commit is contained in:
Scott Nonnenberg 2022-06-08 14:40:08 -07:00
parent f1b05afe62
commit 79c52847cd
3 changed files with 44 additions and 28 deletions

View File

@ -61,7 +61,12 @@ export class MainHeader extends React.Component<PropsType, StateType> {
}
};
public showAvatarPopup = (): void => {
public showAvatarPopup = (
event: React.MouseEvent<HTMLButtonElement, MouseEvent>
): void => {
event.preventDefault();
event.stopPropagation();
const popperRoot = document.createElement('div');
document.body.appendChild(popperRoot);

View File

@ -44,13 +44,18 @@ export const EmojiButton = React.memo(
null
);
const handleClickButton = React.useCallback(() => {
if (popperRoot) {
setOpen(false);
} else {
setOpen(true);
}
}, [popperRoot, setOpen]);
const handleClickButton = React.useCallback(
(event: React.MouseEvent<HTMLButtonElement, MouseEvent>) => {
event.preventDefault();
event.stopPropagation();
if (popperRoot) {
setOpen(false);
} else {
setOpen(true);
}
},
[popperRoot, setOpen]
);
const handleClose = React.useCallback(() => {
setOpen(false);

View File

@ -67,27 +67,33 @@ export const StickerButton = React.memo(
null
);
const handleClickButton = React.useCallback(() => {
// Clear tooltip state
clearInstalledStickerPack();
clearShowIntroduction();
const handleClickButton = React.useCallback(
(event: React.MouseEvent<HTMLButtonElement, MouseEvent>) => {
event.preventDefault();
event.stopPropagation();
// Handle button click
if (installedPacks.length === 0) {
onClickAddPack?.();
} else if (popperRoot) {
setOpen(false);
} else {
setOpen(true);
}
}, [
clearInstalledStickerPack,
clearShowIntroduction,
installedPacks,
onClickAddPack,
popperRoot,
setOpen,
]);
// Clear tooltip state
clearInstalledStickerPack();
clearShowIntroduction();
// Handle button click
if (installedPacks.length === 0) {
onClickAddPack?.();
} else if (popperRoot) {
setOpen(false);
} else {
setOpen(true);
}
},
[
clearInstalledStickerPack,
clearShowIntroduction,
installedPacks,
onClickAddPack,
popperRoot,
setOpen,
]
);
const handlePickSticker = React.useCallback(
(packId: string, stickerId: number, url: string) => {