GlobalEventsHandlerProvider
GlobalEventsHandlerProvider is a React context provider that allows sharing global event handlers with consuming components.
Props
Variants
GlobalEventsHandlerProvider in SheetMobile
GlobalEventsHandlerProvider has one prop for each component subscribing to the provider.
GlobalEventsHandlerProvider's sheetMobileHandlers
props only subscribes SheetMobile and those adaptive components that use SheetMobile in their mobile UI (Modal, Dropdown.)
In the example below, SheetMobile's logs when opens and closes.
import { useCallback, useMemo, useState } from 'react'; import { Flex, Layer, SheetMobile, Box, DeviceTypeProvider, Button, FixedZIndex, CompositeZIndex, GlobalEventsHandlerProvider, } from 'gestalt'; export default function Example() { const [showComponent, setShowComponent] = useState(true); const PAGE_HEADER_ZINDEX = new FixedZIndex(10); const ABOVE_PAGE_HEADER_ZINDEX = new CompositeZIndex([PAGE_HEADER_ZINDEX]); const sheetMobileOnOpen = useCallback( () => console.log('On open handler'), [] ); const sheetMobileOnClose = useCallback( () => console.log('On close handler'), [] ); const sheetMobileHandlers = useMemo( () => ({ onOpen: sheetMobileOnOpen, onClose: sheetMobileOnClose }), [sheetMobileOnOpen, sheetMobileOnClose] ); return ( <GlobalEventsHandlerProvider sheetMobileHandlers={sheetMobileHandlers}> <DeviceTypeProvider deviceType="mobile"> {showComponent ? ( <Layer zIndex={ABOVE_PAGE_HEADER_ZINDEX}> <SheetMobile heading="Heading" onDismiss={() => setShowComponent(false)} size="auto" > <SheetMobile.DismissingElement> {({ onDismissStart }) => ( <Flex justifyContent="center" alignItems="center" height="100%" > <Button color="gray" text="Close" onClick={onDismissStart} /> </Flex> )} </SheetMobile.DismissingElement> </SheetMobile> </Layer> ) : null} <Box padding={2}> <Button accessibilityLabel="Show SheetMobile" color="red" text="Show SheetMobile" size="lg" onClick={() => setShowComponent(true)} /> </Box> </DeviceTypeProvider> </GlobalEventsHandlerProvider> ); }