Move Dialogs to Radix (#5648)

* Use Redix FocusTrap (#5638)

* Use Redix FocusTrap

* force resolutions on radix libs

* add focus guards

* use @radix-ui/dismissable-layer for escape handling

* fix banner menu keypress by using `Pressable`

* add menu in dialog example to storybook

---------

Co-authored-by: Samuel Newman <mozzius@protonmail.com>

* use DismissableLayer/FocusScope for composer

* fix storybook dialog

* thread Portal through Prompt and avatar/banner

* fix dialog style regression

* remove tamagui

---------

Co-authored-by: Eric Bailey <git@esb.lol>
This commit is contained in:
Samuel Newman
2024-10-08 20:00:49 +03:00
committed by GitHub
parent efcf8a6ae5
commit fc82d2f6d5
14 changed files with 383 additions and 443 deletions
+6 -3
View File
@@ -18,6 +18,7 @@ import {
ItemTextProps,
TriggerProps,
} from '#/components/Menu/types'
import {PortalComponent} from '#/components/Portal'
import {Text} from '#/components/Typography'
export {
@@ -77,9 +78,11 @@ export function Trigger({children, label}: TriggerProps) {
export function Outer({
children,
showCancel,
Portal,
}: React.PropsWithChildren<{
showCancel?: boolean
style?: StyleProp<ViewStyle>
Portal?: PortalComponent
}>) {
const context = React.useContext(Context)
const {_} = useLingui()
@@ -87,15 +90,15 @@ export function Outer({
return (
<Dialog.Outer
control={context.control}
nativeOptions={{preventExpansion: true}}>
nativeOptions={{preventExpansion: true}}
Portal={Portal}>
<Dialog.Handle />
{/* Re-wrap with context since Dialogs are portal-ed to root */}
<Context.Provider value={context}>
<Dialog.ScrollableInner label={_(msg`Menu`)} style={[a.pt_sm]}>
<Dialog.ScrollableInner label={_(msg`Menu`)} style={[a.py_sm]}>
<View style={[a.gap_lg]}>
{children}
{isNative && showCancel && <Cancel />}
<View style={[{height: a.pb_lg.paddingBottom}]} />
</View>
</Dialog.ScrollableInner>
</Context.Provider>