Skip to content

Commit 7740fce

Browse files
committed
fix: CModal: fix animations
1 parent 6d8b59b commit 7740fce

File tree

1 file changed

+39
-28
lines changed

1 file changed

+39
-28
lines changed

src/modal/CModal.js

+39-28
Original file line numberDiff line numberDiff line change
@@ -1,15 +1,20 @@
11
import React, { useState, useEffect } from 'react'
22
import PropTypes from 'prop-types'
33
import classNames from 'classnames'
4-
import CFade from '../fade/CFade'
4+
import { Transition } from 'react-transition-group'
55

66
export 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
915
const 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

Comments
 (0)