Skip to content

Commit 1aa4b69

Browse files
committedMay 22, 2020
fix: CCollapse: fix component
1 parent f8c1a8b commit 1aa4b69

File tree

1 file changed

+29
-50
lines changed

1 file changed

+29
-50
lines changed
 

‎src/collapse/CCollapse.js

+29-50
Original file line numberDiff line numberDiff line change
@@ -1,27 +1,15 @@
1-
import React, {useState} from 'react'
1+
import React, { useState } from 'react'
22
import PropTypes from 'prop-types'
33
import classNames from 'classnames'
4-
import { omitByKeys } from '@coreui/utils/src'
5-
import { TransitionPropTypeKeys } from '../utils/helper.js'
64
import { 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-
2513
const 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

10085
CCollapse.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

11397
CCollapse.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

122101
export default CCollapse

0 commit comments

Comments
 (0)
Please sign in to comment.