1- import React , { useState } from 'react'
1+ import React , { useState } from 'react'
22import PropTypes from 'prop-types'
33import classNames from 'classnames'
4- import { omitByKeys } from '@coreui/utils/src'
5- import { TransitionPropTypeKeys } from '../utils/helper.js'
64import { Transition } from 'react-transition-group'
75
8- const transitionStatusToClassHash = {
9- entering : 'collapsing' ,
10- entered : 'collapse show' ,
11- exiting : 'collapsing' ,
12- exited : 'collapse'
13- } ;
14-
15- const getTransitionClass = status => {
16- return transitionStatusToClassHash [ status ] || 'collapse'
17- }
18-
19- const getHeight = node => {
20- return node . scrollHeight ;
6+ const getTransitionClass = s => {
7+ return s === 'entering' ? 'collapsing' :
8+ s === 'entered' ? 'collapse show' :
9+ s === 'exiting' ? 'collapsing' : 'collapse'
2110}
2211
2312//component - CoreUI / CCollapse
24-
2513const CCollapse = props => {
2614
2715 const {
@@ -31,43 +19,40 @@ const CCollapse = props => {
3119 innerRef,
3220 show,
3321 navbar,
34- ...rest
35- } = props ;
22+ ...attributes
23+ } = props
3624
37- const [ height , setHeight ] = useState ( null ) ;
25+ const [ height , setHeight ] = useState ( )
3826
39- const onEntering = ( node , isAppearing ) => {
40- setHeight ( getHeight ( node ) ) ;
41- props . onEntering ( node , isAppearing ) ;
27+ const onEntering = node => {
28+ setHeight ( node . scrollHeight )
4229 }
4330
44- const onEntered = ( node , isAppearing ) => {
45- setHeight ( null ) ;
46- props . onEntered ( node , isAppearing ) ;
31+ const onEntered = ( ) => {
32+ setHeight ( null )
4733 }
4834
49- const onExit = node => {
50- setHeight ( getHeight ( node ) ) ;
51- props . onExit ( node ) ;
35+ const onExit = node => {
36+ setHeight ( node . scrollHeight )
5237 }
5338
54- const onExiting = node => {
55- const _unused = node . offsetHeight ; // eslint-disable-line no-unused-vars
56- setHeight ( 0 ) ;
57- props . onExiting ( node ) ;
39+ const onExiting = node => {
40+ const _unused = node . offsetHeight // eslint-disable-line no-unused-vars
41+ setHeight ( 0 )
5842 }
5943
60- const onExited = node => {
61- setHeight ( null ) ;
62- props . onExited ( node ) ;
44+ const onExited = ( ) => {
45+ setHeight ( null )
6346 }
6447
6548 //render
66- const childProps = omitByKeys ( rest , TransitionPropTypeKeys )
67-
6849 return (
6950 < Transition
7051 in = { show }
52+ timeout = { 350 }
53+ appear = { false }
54+ enter = { true }
55+ exit = { true }
7156 onEntering = { onEntering }
7257 onEntered = { onEntered }
7358 onExit = { onExit }
@@ -80,12 +65,12 @@ const CCollapse = props => {
8065 className ,
8166 collapseClass ,
8267 navbar && 'navbar-collapse'
83- ) ;
68+ )
8469 const style = height === null ? null : { height }
8570 return (
8671 < div
87- { ...childProps }
88- style = { { ...childProps . style , ...style } }
72+ { ...attributes }
73+ style = { { ...attributes . style , ...style } }
8974 className = { classes }
9075 ref = { innerRef }
9176 >
@@ -98,7 +83,6 @@ const CCollapse = props => {
9883}
9984
10085CCollapse . propTypes = {
101- ...Transition . propTypes ,
10286 children : PropTypes . oneOfType ( [
10387 PropTypes . arrayOf ( PropTypes . node ) ,
10488 PropTypes . node
@@ -108,15 +92,10 @@ CCollapse.propTypes = {
10892 innerRef : PropTypes . oneOfType ( [ PropTypes . object , PropTypes . func , PropTypes . string ] ) ,
10993 show : PropTypes . bool ,
11094 navbar : PropTypes . bool
111- } ;
95+ }
11296
11397CCollapse . defaultProps = {
114- ...Transition . defaultProps ,
115- show : false ,
116- appear : false ,
117- enter : true ,
118- exit : true ,
119- timeout : 350 ,
120- } ;
98+ show : false
99+ }
121100
122101export default CCollapse
0 commit comments