@@ -47,6 +47,10 @@ export interface ModalProps extends HTMLAttributes<HTMLDivElement> {
47
47
* Modal does not have a max width.
48
48
*/
49
49
fullWidth ?: boolean ;
50
+ /**
51
+ * Class for the outermost wrapper
52
+ */
53
+ wrapperClassName ?: string ;
50
54
/**
51
55
* Provide alongside `onClose` for localized accessibility.
52
56
* @default "Close"
@@ -67,6 +71,7 @@ export const Modal: FC<ModalProps> = ({
67
71
open,
68
72
onClose,
69
73
fullWidth,
74
+ wrapperClassName,
70
75
closeLabel = 'Close' ,
71
76
children,
72
77
buttonGroup,
@@ -93,10 +98,14 @@ export const Modal: FC<ModalProps> = ({
93
98
94
99
const backgroundIsButton = ! ! ( closeOnBackgroundClick && onClose ) ;
95
100
96
- const modalWrapperClass = classnames ( 'ui__base ui__modal__wrapper' , {
97
- 'ui__modal__wrapper--closed' : ! open ,
98
- 'ui__modal__wrapper--fullWidth' : fullWidth ,
99
- } ) ;
101
+ const modalWrapperClass = classnames (
102
+ 'ui__base ui__modal__wrapper' ,
103
+ {
104
+ 'ui__modal__wrapper--closed' : ! open ,
105
+ 'ui__modal__wrapper--fullWidth' : fullWidth ,
106
+ } ,
107
+ wrapperClassName ,
108
+ ) ;
100
109
101
110
const modalClass = classnames ( 'ui__modal' , className ) ;
102
111
@@ -112,8 +121,8 @@ export const Modal: FC<ModalProps> = ({
112
121
onClick = { backgroundIsButton ? onClose : undefined }
113
122
>
114
123
{ mounted ? (
115
- < FocusTrap focusLastOnUnlock locked >
116
- < div className = "ui__modal__paddingFix" >
124
+ < div className = "ui__modal__paddingFix" >
125
+ < FocusTrap focusLastOnUnlock locked >
117
126
< div
118
127
aria-labelledby = { heading ? headingId : undefined }
119
128
aria-describedby = { bodyId }
@@ -139,8 +148,8 @@ export const Modal: FC<ModalProps> = ({
139
148
</ div >
140
149
{ buttonGroup ? < ButtonGroup className = "ui__modal__buttonGroup" > { buttonGroup } </ ButtonGroup > : undefined }
141
150
</ div >
142
- </ div >
143
- </ FocusTrap >
151
+ </ FocusTrap >
152
+ </ div >
144
153
) : (
145
154
undefined
146
155
) }
0 commit comments