1
1
import React , { useState , useEffect } from 'react'
2
2
import PropTypes from 'prop-types'
3
3
import classNames from 'classnames'
4
- import CFade from '../fade/CFade '
4
+ import { Transition } from 'react-transition-group '
5
5
6
6
export const Context = React . createContext ( { } )
7
7
8
+ const getTransitionClass = s => {
9
+ return s === 'entering' ? 'd-block' :
10
+ s === 'entered' ? 'show d-block' :
11
+ s === 'exiting' ? 'd-block' : ''
12
+ }
13
+
8
14
//component - CoreUI / CModal
9
15
const CModal = props => {
10
16
11
17
const {
12
- //
13
18
innerRef,
14
19
show,
15
20
centered,
@@ -43,15 +48,8 @@ const CModal = props => {
43
48
44
49
const onExited = ( ) => onClosed && onClosed ( )
45
50
46
- const transitionProps = {
47
- baseClass : fade ? 'fade d-block' : '' ,
48
- baseClassActive : 'show' ,
49
- timeout : fade ? 150 : 0 ,
50
- unmountOnExit : true
51
- }
52
-
53
51
const modalClasses = classNames (
54
- 'modal overflow-auto' , {
52
+ 'modal overflow-auto fade ' , {
55
53
[ `modal-${ color } ` ] : color
56
54
}
57
55
)
@@ -78,28 +76,41 @@ const CModal = props => {
78
76
79
77
return (
80
78
< div onClick = { modalClick } >
81
- < CFade
82
- { ...transitionProps }
79
+ < Transition
83
80
in = { Boolean ( isOpen ) }
84
81
onEntered = { onEntered }
85
82
onExited = { onExited }
86
- tabIndex = "-1"
87
- role = "dialog"
88
- className = { modalClasses }
89
- data-modal = { true }
83
+ timeout = { fade ? 150 : 0 }
90
84
>
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 >
103
114
{ backdrop && isOpen && < div className = { backdropClasses } > </ div > }
104
115
</ div >
105
116
)
0 commit comments