(
>
(
'Drawer--right': position === 'right'
})}
aria-hidden={!open || undefined}
+ aria-modal={isModal ? true : undefined}
+ aria-labelledby={headingId}
style={{
visibility: !open && !isTransitioning ? 'hidden' : undefined,
...style
@@ -142,7 +171,9 @@ const Drawer = forwardRef(
tabIndex={open ? -1 : undefined}
{...props}
>
- {children}
+
+ {children}
+
@@ -156,4 +187,31 @@ const Drawer = forwardRef(
Drawer.displayName = 'Drawer';
+export interface DrawerHeadingProps extends React.HTMLAttributes {
+ children: React.ReactNode;
+ className?: string;
+ level?: number;
+}
+
+const DrawerHeading = ({
+ children,
+ className,
+ level = 2,
+ ...other
+}: DrawerHeadingProps) => {
+ const { headingId } = useDrawerContext();
+ const HeadingLevel = `h${level}` as 'h1';
+ return (
+
+ {children}
+
+ );
+};
+DrawerHeading.displayName = 'DrawerHeading';
+
export default Drawer;
+export { Drawer, DrawerHeading };
diff --git a/packages/react/src/index.ts b/packages/react/src/index.ts
index 91f03e754..0991702aa 100644
--- a/packages/react/src/index.ts
+++ b/packages/react/src/index.ts
@@ -140,7 +140,7 @@ export { default as Popover } from './components/Popover';
export { default as Timeline, TimelineItem } from './components/Timeline';
export { default as TextEllipsis } from './components/TextEllipsis';
export { default as CopyButton } from './components/CopyButton';
-export { default as Drawer } from './components/Drawer';
+export { default as Drawer, DrawerHeading } from './components/Drawer';
export { default as BottomSheet } from './components/BottomSheet';
export { default as AnchoredOverlay } from './components/AnchoredOverlay';
export { default as FieldGroup } from './components/FieldGroup';