about summary refs log tree commit diff
path: root/src/state/shell/composer
diff options
context:
space:
mode:
authorEric Bailey <git@esb.lol>2024-12-20 13:59:33 -0600
committerGitHub <noreply@github.com>2024-12-20 19:59:33 +0000
commit8116d12c15495fa192e92f5bfb75cb561bb16402 (patch)
treed8291bc888d6423ccb7f242877c9293283156e83 /src/state/shell/composer
parent8a3dfcb9d0860eb8f8112a84dcf32ae522f77069 (diff)
downloadvoidsky-8116d12c15495fa192e92f5bfb75cb561bb16402.tar.zst
Fix Emoji picker focus (#7217)
* Only portal the emoji picker where needed

* Add optional portal prop to emoji picker

* Use FocusScope to our advantage

* Pare back, add guards, fix focus trap

* Don't return focus to emoji button

* Set DM input position on emoji insert

* Let the caller determine next focus node

---------

Co-authored-by: Dan Abramov <dan.abramov@gmail.com>
Diffstat (limited to 'src/state/shell/composer')
-rw-r--r--src/state/shell/composer/index.tsx3
1 files changed, 2 insertions, 1 deletions
diff --git a/src/state/shell/composer/index.tsx b/src/state/shell/composer/index.tsx
index 7138945f4..f1ea41c64 100644
--- a/src/state/shell/composer/index.tsx
+++ b/src/state/shell/composer/index.tsx
@@ -13,6 +13,7 @@ import {useNonReactiveCallback} from '#/lib/hooks/useNonReactiveCallback'
 import {postUriToRelativePath, toBskyAppUrl} from '#/lib/strings/url-helpers'
 import {purgeTemporaryImageFiles} from '#/state/gallery'
 import {precacheResolveLinkQuery} from '#/state/queries/resolve-link'
+import type {EmojiPickerPosition} from '#/view/com/composer/text-input/web/EmojiPicker.web'
 import * as Toast from '#/view/com/util/Toast'
 
 export interface ComposerOptsPostRef {
@@ -29,7 +30,7 @@ export interface ComposerOpts {
   onPost?: (postUri: string | undefined) => void
   quote?: AppBskyFeedDefs.PostView
   mention?: string // handle of user to mention
-  openEmojiPicker?: (pos: DOMRect | undefined) => void
+  openEmojiPicker?: (pos: EmojiPickerPosition | undefined) => void
   text?: string
   imageUris?: {uri: string; width: number; height: number; altText?: string}[]
   videoUri?: {uri: string; width: number; height: number}