11import React , { useState , useEffect } from 'react'
22import PropTypes from 'prop-types'
33import classNames from 'classnames'
4- import CFade from '../fade/CFade '
4+ import { Transition } from 'react-transition-group '
55
66export const Context = React . createContext ( { } )
77
8+ const getTransitionClass = s => {
9+ return s === 'entering' ? 'd-block' :
10+ s === 'entered' ? 'show d-block' :
11+ s === 'exiting' ? 'd-block' : ''
12+ }
13+
814//component - CoreUI / CModal
915const CModal = props => {
1016
1117 const {
12- //
1318 innerRef,
1419 show,
1520 centered,
@@ -43,15 +48,8 @@ const CModal = props => {
4348
4449 const onExited = ( ) => onClosed && onClosed ( )
4550
46- const transitionProps = {
47- baseClass : fade ? 'fade d-block' : '' ,
48- baseClassActive : 'show' ,
49- timeout : fade ? 150 : 0 ,
50- unmountOnExit : true
51- }
52-
5351 const modalClasses = classNames (
54- 'modal overflow-auto' , {
52+ 'modal overflow-auto fade ' , {
5553 [ `modal-${ color } ` ] : color
5654 }
5755 )
@@ -78,28 +76,41 @@ const CModal = props => {
7876
7977 return (
8078 < div onClick = { modalClick } >
81- < CFade
82- { ...transitionProps }
79+ < Transition
8380 in = { Boolean ( isOpen ) }
8481 onEntered = { onEntered }
8582 onExited = { onExited }
86- tabIndex = "-1"
87- role = "dialog"
88- className = { modalClasses }
89- data-modal = { true }
83+ timeout = { fade ? 150 : 0 }
9084 >
91- < div className = { dialogClasses } role = "document" >
92- < div
93- { ...attributes }
94- className = { contentClasses }
95- ref = { innerRef }
96- >
97- < Context . Provider value = { { close} } >
98- { props . children }
99- </ Context . Provider >
100- </ div >
101- </ div >
102- </ CFade >
85+ { ( status ) => {
86+ let transitionClass = getTransitionClass ( status )
87+ const classes = classNames (
88+ modalClasses ,
89+ transitionClass
90+ )
91+ return (
92+ < div
93+ tabIndex = "-1"
94+ role = "dialog"
95+ className = { classes }
96+ data-modal = { true }
97+ >
98+ < div className = { dialogClasses } role = "document" >
99+ < div
100+ { ...attributes }
101+ className = { contentClasses }
102+ ref = { innerRef }
103+ >
104+ < Context . Provider value = { { close} } >
105+ { props . children }
106+ </ Context . Provider >
107+ </ div >
108+ </ div >
109+ </ div >
110+ )
111+ } }
112+
113+ </ Transition >
103114 { backdrop && isOpen && < div className = { backdropClasses } > </ div > }
104115 </ div >
105116 )
0 commit comments