accounts-frontend/src/pages/auth/AuthPage.jsx

84 lines
2.8 KiB
React
Raw Normal View History

2016-01-04 02:48:42 +05:30
import React, { Component } from 'react';
import { connect } from 'react-redux';
import { TransitionMotion, spring } from 'react-motion';
2016-01-04 02:48:42 +05:30
import AppInfo from 'components/auth/AppInfo';
import styles from './auth.scss';
const springConfig = [200, 20];
class AuthPage extends Component {
displayName = 'AuthPage';
2016-01-04 02:48:42 +05:30
render() {
var appInfo = {
name: 'TLauncher',
description: `Лучший альтернативный лаунчер для Minecraft с большим количеством версий и их модификаций, а также возмоностью входа как с лицензионным аккаунтом, так и без него.`
2016-01-04 02:48:42 +05:30
};
var { path, children } = this.props;
2016-01-04 02:48:42 +05:30
return (
<div>
<div className={styles.sidebar}>
<AppInfo {...appInfo} />
</div>
<div className={styles.content}>
<TransitionMotion
willEnter={this.willEnter}
willLeave={this.willLeave}
styles={{
[path]: {
children,
x: spring(0, springConfig)
}
}}
>
{(items) => (
<div style={{position: 'relative', overflow: 'hidden', width: '100%', height: '600px'}}>
{Object.keys(items).map((path) => {
const {children, x} = items[path];
const style = {
position: 'absolute',
top: 0,
left: 0,
width: '100%',
transform: `translateX(${x}%)`
};
return (
<div key={path} style={style}>
{children}
</div>
);
})}
</div>
)}
</TransitionMotion>
2016-01-04 02:48:42 +05:30
</div>
</div>
);
}
willEnter(key, styles) {
return {
...styles,
x: spring(100, springConfig)
};
}
willLeave(key, styles) {
return {
...styles,
x: spring(-100, springConfig)
};
}
2016-01-04 02:48:42 +05:30
}
export default connect((state) => ({
path: state.routing.location.pathname
}))(AuthPage);