@@ -25,6 +25,7 @@ export type ModalProps = PropsWithChildren<{
2525 style ?: CSSProperties ;
2626 noPadding ?: boolean ;
2727 targetElement ?: Element ;
28+ backdropDismiss ?: boolean ; // モーダルの背景をクリックして閉じるかどうか
2829} > ;
2930
3031export const ModalRow : FC <
@@ -39,6 +40,7 @@ export const ModalRow: FC<
3940 onSubmit,
4041 style,
4142 noPadding = false ,
43+ backdropDismiss,
4244} ) => {
4345 const { open, isOpen : isOpenHandler , dismiss } = useModal ( ) ;
4446
@@ -64,7 +66,7 @@ export const ModalRow: FC<
6466 aria-labelledby = "modal-label"
6567 aria-hidden = "false"
6668 aria-modal = "true"
67- onClick = { ( ) => isOpenHandler ( false ) }
69+ onClick = { ( ) => backdropDismiss && isOpenHandler ( false ) }
6870 style = { style }
6971 >
7072 < div
@@ -97,6 +99,7 @@ export const Modal: FC<ModalProps> = ({
9799 dismiss = false ,
98100 setOpen,
99101 targetElement,
102+ backdropDismiss = true , // デフォルト値をtrueに設定
100103 ...props
101104} ) => {
102105 const [ _isOpen , _setIsOpen ] = useState ( open || false ) ;
@@ -122,7 +125,7 @@ export const Modal: FC<ModalProps> = ({
122125 dismiss,
123126 } }
124127 >
125- < ModalRow { ...props } />
128+ < ModalRow { ...props } backdropDismiss = { backdropDismiss } />
126129 </ ModalContext . Provider > ,
127130 targetElement
128131 ) ;
@@ -136,7 +139,7 @@ export const Modal: FC<ModalProps> = ({
136139 dismiss,
137140 } }
138141 >
139- < ModalRow { ...props } />
142+ < ModalRow { ...props } backdropDismiss = { backdropDismiss } />
140143 </ ModalContext . Provider >
141144 ) ;
142145} ;
0 commit comments