diff --git a/src/client/graphics/layers/EmojiTable.ts b/src/client/graphics/layers/EmojiTable.ts index ca87f009b..ef2745280 100644 --- a/src/client/graphics/layers/EmojiTable.ts +++ b/src/client/graphics/layers/EmojiTable.ts @@ -57,6 +57,15 @@ export class EmojiTable extends LitElement { private onEmojiClicked: (emoji: string) => void = () => {}; + private handleBackdropClick = (e: MouseEvent) => { + const panelContent = this.querySelector( + 'div[class*="bg-zinc-900"]', + ) as HTMLElement; + if (panelContent && !panelContent.contains(e.target as Node)) { + this.hideTable(); + } + }; + render() { if (!this.isVisible) { return null; @@ -64,43 +73,51 @@ export class EmojiTable extends LitElement { return html`
e.preventDefault()} - @wheel=${(e: WheelEvent) => e.stopPropagation()} + class="fixed inset-0 bg-black/15 backdrop-brightness-110 flex items-center justify-center z-[9998]" + @click=${this.handleBackdropClick} > - -
e.preventDefault()} + @wheel=${(e: WheelEvent) => e.stopPropagation()} + @click=${(e: MouseEvent) => e.stopPropagation()} > - ${emojiTable.map( - (row) => html` -
- ${row.map( - (emoji) => html` - - `, - )} -
- `, - )} + + +
+ ${emojiTable.map( + (row) => html` +
+ ${row.map( + (emoji) => html` + + `, + )} +
+ `, + )} +
`;