Skip to content

Commit 75b3aaa

Browse files
committed
add transition group
1 parent 135c9aa commit 75b3aaa

File tree

6 files changed

+150
-18
lines changed

6 files changed

+150
-18
lines changed

package-lock.json

Lines changed: 34 additions & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

package.json

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -80,6 +80,7 @@
8080
"react-dom": "^16.6.0",
8181
"react-redux": "^6.0.0",
8282
"react-svg-inline": "^2.1.1",
83+
"react-transition-group": "^1.2.1",
8384
"recursive-readdir": "^2.2.2",
8485
"redux-thunk": "^2.3.0",
8586
"reflect-metadata": "^0.1.12",

src/client/App.js

Lines changed: 36 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
import React from 'react';
22
import { connect } from 'react-redux';
3+
import { CSSTransitionGroup } from 'react-transition-group';
34

45
import { showLoadingMessage, showErrorMessage, hideLoadingMessage, getErrorMessage } from './components/Store/Actions.js';
56

@@ -9,6 +10,8 @@ import MessageComp from './components/MessageComp/MessageComp';
910
import SettingsBar from './components/SettingsBar/SettingsBar';
1011

1112
import styles from './styles/App.scss';
13+
import fade from './styles/transitions/fade.scss';
14+
import scale from './styles/transitions/scale.scss';
1215

1316
const mapStateToProps = state => {
1417
return {
@@ -160,21 +163,45 @@ class ConnectedApp extends React.Component {
160163
onSaveButtonClick={() => this.handleSettingsSaveButtonClick()}
161164
/>
162165
</div>
163-
{ showLoadingMessage &&
164-
<MessageComp message='Loading...' />
165-
}
166-
{ showErrorMessage &&
167-
<MessageComp
168-
message={errorMessage}
169-
onMessageButtonClick={() => this.handleMessageButtonClick()}
170-
/>
171-
}
166+
<CSSTransitionGroup
167+
transitionName={fade}
168+
transitionAppear={true}
169+
transitionAppearTimeout={300}
170+
trnasitionEnterTimeout={300}
171+
transitionLeaveTimeout={300}
172+
>
173+
{ showLoadingMessage &&
174+
<MessageComp message='Loading...' />
175+
}
176+
</CSSTransitionGroup>
177+
<CSSTransitionGroup
178+
transitionName={fade}
179+
transitionAppear={true}
180+
transitionAppearTimeout={300}
181+
trnasitionEnterTimeout={300}
182+
transitionLeaveTimeout={300}
183+
>
184+
{ showErrorMessage &&
185+
<MessageComp
186+
message={errorMessage}
187+
onMessageButtonClick={() => this.handleMessageButtonClick()}
188+
/>
189+
}
190+
</CSSTransitionGroup>
172191
<div className={styles['app__tabs']}>
192+
<CSSTransitionGroup
193+
transitionName={scale}
194+
transitionAppear={true}
195+
transitionAppearTimeout={300}
196+
trnasitionEnterTimeout={300}
197+
transitionLeaveTimeout={300}
198+
>
173199
{fetchRequestStatus === 'success' &&
174200
<Tab data={contracts} onMenuItemIconClick={this.handleMenuItemIconClick}>
175201
{children}
176202
</Tab>
177203
}
204+
</CSSTransitionGroup>
178205
</div>
179206
</div>
180207
);

src/client/components/Tab/TabPanel/TabPanel.js

Lines changed: 18 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
import React from 'react';
22
import { connect } from 'react-redux';
3+
import { CSSTransitionGroup } from 'react-transition-group';
34

45
import { showLoadingMessage, hideLoadingMessage, showErrorMessage, getErrorMessage } from '../../Store/Actions.js';
56

@@ -13,6 +14,7 @@ import EVMTabPanel from '../../EVMTab/EVMTabPanel';
1314
import EVMState from '../../EVMState/EVMState';
1415

1516
import styles from './TabPanel.scss';
17+
import fade from '../../../styles/transitions/fade.scss';
1618

1719
import classnames from 'classnames/bind';
1820

@@ -299,14 +301,22 @@ class ConnectedTabPanel extends React.Component {
299301
{children}
300302
</InnerTab>
301303
</div>
302-
{
303-
modalOpen &&
304-
<Modal
305-
onInputChange={(e) => this.handleInputChange(e)}
306-
onInputSubmit={() => this.handleInputSubmit()}
307-
onIconClick={() => this.handleModalIconClick()}
308-
/>
309-
}
304+
<CSSTransitionGroup
305+
transitionName={fade}
306+
transitionAppear={true}
307+
transitionAppearTimeout={300}
308+
trnasitionEnterTimeout={300}
309+
transitionLeaveTimeout={300}
310+
>
311+
{
312+
modalOpen &&
313+
<Modal
314+
onInputChange={(e) => this.handleInputChange(e)}
315+
onInputSubmit={() => this.handleInputSubmit()}
316+
onIconClick={() => this.handleModalIconClick()}
317+
/>
318+
}
319+
</CSSTransitionGroup>
310320
</div>
311321
)
312322
}
Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,27 @@
1+
//fade
2+
.enter {
3+
opacity: 0.01;
4+
5+
&.enterActive {
6+
transition: opacity 0.3s ease-in;
7+
opacity: 1;
8+
}
9+
}
10+
11+
.leave {
12+
opacity: 1;
13+
14+
&.leaveActive {
15+
transition: opacity 0.3s ease-in;
16+
opacity: 0.01;
17+
}
18+
}
19+
20+
.appear {
21+
opacity: 0.01;
22+
23+
&.appearActive {
24+
transition: opacity 0.3s ease-in;
25+
opacity: 1;
26+
}
27+
}
Lines changed: 34 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,34 @@
1+
//scale
2+
.enter {
3+
opacity: 0.01;
4+
transform: scale(0);
5+
6+
&.enterActive {
7+
transition: opacity 0.4s ease-in, transform 0.3s ease-in-out;
8+
opacity: 1;
9+
transform: scale(1);
10+
}
11+
}
12+
13+
.leave {
14+
opacity: 1;
15+
transform: scale(1);
16+
17+
&.leaveActive {
18+
transition: opacity 0.4s ease-in, transform 0.3s ease-in-out;
19+
opacity: 0.01;
20+
transform: scale(0);
21+
}
22+
}
23+
24+
.appear {
25+
opacity: 0.01;
26+
transform: scale(0);
27+
28+
29+
&.appearActive {
30+
transition: opacity 0.4s ease-in, transform 0.3s ease-in-out;
31+
opacity: 1;
32+
transform: scale(1);
33+
}
34+
}

0 commit comments

Comments
 (0)