diff --git a/packages/react/src/hooks/useIonModal.ts b/packages/react/src/hooks/useIonModal.ts index aee3ea40e4..bc46f7c26b 100644 --- a/packages/react/src/hooks/useIonModal.ts +++ b/packages/react/src/hooks/useIonModal.ts @@ -8,14 +8,18 @@ import type { ReactComponentOrElement } from '../models/ReactComponentOrElement' import type { HookOverlayOptions } from './HookOverlayOptions'; import { useOverlay } from './useOverlay'; -// TODO(FW-2959): types - /** * A hook for presenting/dismissing an IonModal component * @param component The component that the modal will show. Can be a React Component, a functional component, or a JSX Element * @param componentProps The props that will be passed to the component, if required * @returns Returns the present and dismiss methods in an array */ +export function useIonModal(component: JSX.Element, componentProps?: any): UseIonModalResult; +export function useIonModal

(component: React.ComponentClass

| React.FC

): UseIonModalResult; +export function useIonModal

>( + component: React.ComponentClass

| React.FC

+): UseIonModalResult; +export function useIonModal

(component: React.ComponentClass

| React.FC

, componentProps: P): UseIonModalResult; export function useIonModal(component: ReactComponentOrElement, componentProps?: any): UseIonModalResult { const controller = useOverlay( 'IonModal', diff --git a/packages/react/src/hooks/useIonPopover.ts b/packages/react/src/hooks/useIonPopover.ts index c63df7b26e..fdc03cbb05 100644 --- a/packages/react/src/hooks/useIonPopover.ts +++ b/packages/react/src/hooks/useIonPopover.ts @@ -8,14 +8,23 @@ import type { ReactComponentOrElement } from '../models/ReactComponentOrElement' import type { HookOverlayOptions } from './HookOverlayOptions'; import { useOverlay } from './useOverlay'; -// TODO(FW-2959): types - /** * A hook for presenting/dismissing an IonPicker component * @param component The component that the popover will show. Can be a React Component, a functional component, or a JSX Element * @param componentProps The props that will be passed to the component, if required * @returns Returns the present and dismiss methods in an array */ +export function useIonPopover(component: JSX.Element, componentProps?: any): UseIonPopoverResult; +export function useIonPopover

( + component: React.ComponentClass

| React.FC

+): UseIonPopoverResult; +export function useIonPopover

>( + component: React.ComponentClass

| React.FC

+): UseIonPopoverResult; +export function useIonPopover

( + component: React.ComponentClass

| React.FC

, + componentProps: P +): UseIonPopoverResult; export function useIonPopover(component: ReactComponentOrElement, componentProps?: any): UseIonPopoverResult { const controller = useOverlay( 'IonPopover', diff --git a/packages/react/test/base/src/pages/overlay-hooks/ModalHook.tsx b/packages/react/test/base/src/pages/overlay-hooks/ModalHook.tsx index fe3dfd0c28..240e22fbb8 100644 --- a/packages/react/test/base/src/pages/overlay-hooks/ModalHook.tsx +++ b/packages/react/test/base/src/pages/overlay-hooks/ModalHook.tsx @@ -11,10 +11,10 @@ import { import { useContext } from 'react'; const Body: React.FC<{ - type: string; - count: number; + type?: string; + count?: number; onDismiss: (data?: any, role?: string) => void; - onIncrement: () => void; + onIncrement?: () => void; }> = ({ count, onDismiss, onIncrement, type }) => ( @@ -24,7 +24,7 @@ const Body: React.FC<{ Count in modal: {count} - onIncrement()}> + onIncrement?.()}> Increment Count onDismiss({ test: true }, 'close')}> @@ -51,7 +51,7 @@ const ModalHook: React.FC = () => { setCount(count + 1); }, [count, setCount]); - const handleDismissWithComponent = useCallback((data: any, role: string) => { + const handleDismissWithComponent = useCallback((data?: any, role?: string) => { dismissWithComponent(data, role); // eslint-disable-next-line react-hooks/exhaustive-deps }, []);