diff --git a/.changeset/cool-humans-reflect.md b/.changeset/cool-humans-reflect.md new file mode 100644 index 0000000000..880f3b40a6 --- /dev/null +++ b/.changeset/cool-humans-reflect.md @@ -0,0 +1,10 @@ +--- +'@gluestack-ui/alert-dialog': patch +'@gluestack-ui/actionsheet': patch +'@gluestack-ui/popover': patch +'@gluestack-ui/tooltip': patch +'@gluestack-ui/modal': patch +'@gluestack-ui/menu': patch +--- + +Added experimentalOverlay flag for internal usecase diff --git a/packages/actionsheet/package.json b/packages/actionsheet/package.json index 3624e78eaa..07555fdec6 100644 --- a/packages/actionsheet/package.json +++ b/packages/actionsheet/package.json @@ -15,7 +15,7 @@ "ios", "nextjs" ], - "version": "0.2.12", + "version": "0.2.13-alpha.0", "main": "lib/commonjs/index", "module": "lib/module/index", "types": "lib/typescript/index.d.ts", diff --git a/packages/actionsheet/src/Actionsheet.tsx b/packages/actionsheet/src/Actionsheet.tsx index c68647815a..8173933832 100644 --- a/packages/actionsheet/src/Actionsheet.tsx +++ b/packages/actionsheet/src/Actionsheet.tsx @@ -22,6 +22,8 @@ export function Actionsheet(StyledActionsheet: React.ComponentType) { initialFocusRef, finalFocusRef, unmountOnExit = true, + // @ts-ignore + _experimentalOverlay = true, ...props }: T & IActionsheetProps, ref?: any @@ -73,6 +75,20 @@ export function Actionsheet(StyledActionsheet: React.ComponentType) { finalFocusRef, ]); + if (!_experimentalOverlay) { + return ( + + + {children} + + + ); + } + return ( (StyledAlertDialog: React.ComponentType) => isKeyboardDismissable = true, animationPreset = 'fade', unmountOnExit = true, + // @ts-ignore + _experimentalOverlay = true, ...props }: T & IAlertDialogProps, ref?: any @@ -72,6 +74,17 @@ export const AlertDialog = (StyledAlertDialog: React.ComponentType) => visible, ]); + if (!_experimentalOverlay) { + return ( + + + {children} + {avoidKeyboard ? avoidKeyboardSpacer : null} + + + ); + } + return ( + {updatedTrigger()} + + state.close()} + StyledMenu={StyledMenu} + StyledMenuItem={StyledMenuItem} + closeOnSelect={closeOnSelect} + ref={ref} + /> + + ); + } + return ( {updatedTrigger()} diff --git a/packages/menu/src/MenuPopover/Popover.tsx b/packages/menu/src/MenuPopover/Popover.tsx index dfc818c74e..8a013cacf0 100644 --- a/packages/menu/src/MenuPopover/Popover.tsx +++ b/packages/menu/src/MenuPopover/Popover.tsx @@ -27,6 +27,8 @@ export const Popover = forwardRef( shouldFlip, focusScope = true, StyledBackdrop, + // @ts-ignore + _experimentalOverlay = true, ...props }: any, ref: any @@ -82,6 +84,55 @@ export const Popover = forwardRef( const targetRefTemp = React.useRef(null); const targetRef = triggerRef || targetRefTemp; + + if (!_experimentalOverlay) { + return ( + <> + {updatedTrigger(targetRef)} + + + + + + {children} + + + + + + ); + } return ( <> {updatedTrigger(targetRef)} diff --git a/packages/menu/src/MenuPopover/Popover.web.tsx b/packages/menu/src/MenuPopover/Popover.web.tsx index 0c8169d46a..0758a76b86 100644 --- a/packages/menu/src/MenuPopover/Popover.web.tsx +++ b/packages/menu/src/MenuPopover/Popover.web.tsx @@ -2,7 +2,11 @@ import React from 'react'; import { View } from 'react-native'; import { usePopover, DismissButton, Overlay } from '@react-aria/overlays'; import { MenuContext } from '../MenuContext'; -export function Popover({ StyledBackdrop, ...props }: any) { +export function Popover({ + StyledBackdrop, // @ts-ignore + _experimentalOverlay = true, + ...props +}: any) { const ref = React.useRef(null); const { state, children } = props; const { onClose } = React.useContext(MenuContext); @@ -19,6 +23,16 @@ export function Popover({ StyledBackdrop, ...props }: any) { return null; } + if (!_experimentalOverlay) { + return ( + // @ts-ignore + + + {children} + + + ); + } return ( closeOnOverlayClick = true, isKeyboardDismissable = true, unmountOnExit = true, + _experimentalOverlay = true, ...props }: any, ref?: any @@ -72,6 +73,17 @@ const Modal = (StyledModal: any) => visible, ]); + if (!_experimentalOverlay) { + return ( + + + {children} + {avoidKeyboard ? avoidKeyboardSpacer : null} + + + ); + } + return ( offset, isKeyboardDismissable = true, shouldFlip, + // @ts-ignore + _experimentalOverlay = true, ...props }: any, ref?: any @@ -125,6 +127,19 @@ export const Popover = (StyledPopover: any) => shouldFlip, ]); + if (!_experimentalOverlay) { + return ( + <> + {updatedTrigger(targetRef)} + + + {children} + + + + ); + } + return ( <> {updatedTrigger(targetRef)} diff --git a/packages/tooltip/package.json b/packages/tooltip/package.json index 274762578d..97f0684cbf 100644 --- a/packages/tooltip/package.json +++ b/packages/tooltip/package.json @@ -1,7 +1,7 @@ { "name": "@gluestack-ui/tooltip", "description": "A universal headless tooltip component for React Native, Next.js & React", - "version": "0.1.12", + "version": "0.1.13-alpha.0", "main": "lib/commonjs/index", "module": "lib/module/index", "types": "lib/typescript/index.d.ts", diff --git a/packages/tooltip/src/Tooltip.tsx b/packages/tooltip/src/Tooltip.tsx index 394809ed73..603996e3b7 100644 --- a/packages/tooltip/src/Tooltip.tsx +++ b/packages/tooltip/src/Tooltip.tsx @@ -29,6 +29,8 @@ function Tooltip( offset = 10, shouldOverlapWithTrigger = false, shouldFlip = true, + // @ts-ignore + _experimentalOverlay = true, ...props }: ITooltipProps, ref?: any @@ -119,6 +121,38 @@ function Tooltip( callback: () => setIsOpen(false), }); + if (!_experimentalOverlay) { + return ( + <> + {updatedTrigger(targetRef)} + + + {children} + + + + ); + } + return ( <> {updatedTrigger(targetRef)}