Skip to content
Draft
Show file tree
Hide file tree
Changes from 1 commit
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion src/components/picker/__tests__/index.spec.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -114,7 +114,7 @@ describe('Picker', () => {
expect(driver.isOpen()).toBeTruthy();
driver.cancel();
expect(driver.isOpen()).toBeFalsy();
expect(onDismiss).toHaveBeenCalledTimes(2); // TODO: this should be 1
expect(onDismiss).toHaveBeenCalledTimes(1);
});

// TODO: this test is not passing yet
Expand Down
23 changes: 19 additions & 4 deletions src/incubator/expandableOverlay/index.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,12 @@ import DialogOld from '../../components/dialog';
import DialogNew, {DialogMigrationProps} from '../dialog';
import {Colors} from 'style';

enum DismissState {
IDLE = 'idle',
DISMISSING = 'dismissing',
DISMISSED = 'dismissed'
}

export interface ExpandableOverlayMethods {
openExpandable: () => void;
closeExpandable: () => void;
Expand Down Expand Up @@ -69,6 +75,7 @@ const ExpandableOverlay = (props: ExpandableOverlayProps, ref: any) => {
} = props;
const [visible, setExpandableVisible] = useState(false);
const containerRef = useRef(null);
const [dismissState, setDismissState] = useState<DismissState>(DismissState.IDLE);

const focusAccessibility = useCallback(() => {
const reactTag = findNodeHandle(containerRef.current);
Expand All @@ -79,14 +86,22 @@ const ExpandableOverlay = (props: ExpandableOverlayProps, ref: any) => {

const openExpandable = useCallback(() => {
setExpandableVisible(true);
setDismissState(DismissState.IDLE);
onPress?.(props);
}, [onPress, customValue]);

const closeExpandable = useCallback(() => {
setExpandableVisible(false);
focusAccessibility();
useDialog ? dialogProps?.onDismiss?.() : modalProps?.onDismiss?.();
}, [useDialog, dialogProps?.onDismiss, modalProps?.onDismiss, focusAccessibility]);
if (dismissState === DismissState.IDLE) {
setDismissState(DismissState.DISMISSING);
setExpandableVisible(false);
focusAccessibility();
useDialog ? dialogProps?.onDismiss?.() : modalProps?.onDismiss?.();
setDismissState(DismissState.DISMISSED);
} else if (dismissState === DismissState.DISMISSING) {
setExpandableVisible(false);
focusAccessibility();
}
}, [dismissState, useDialog, dialogProps?.onDismiss, modalProps?.onDismiss, focusAccessibility]);

const toggleExpandable = useCallback(() => (visible ? closeExpandable() : openExpandable()),
[visible, openExpandable, closeExpandable]);
Expand Down