Add: component <Header>

This commit is contained in:
Jason 2018-09-17 00:34:36 +08:00
parent 39fdf2ff2c
commit c5fcba3444
14 changed files with 103 additions and 3 deletions

5
package-lock.json generated
View File

@ -2263,6 +2263,11 @@
}
}
},
"classnames": {
"version": "2.2.6",
"resolved": "https://registry.npmjs.org/classnames/-/classnames-2.2.6.tgz",
"integrity": "sha512-JR/iSQOSt+LQIWwrwEzJ9uk0xfN3mTVYMwt1Ir5mUcSN6pU+V4zQFFaJsclJbPuAUQH+yfWef6tm7l1quW3C8Q=="
},
"clean-css": {
"version": "4.2.1",
"resolved": "https://registry.npmjs.org/clean-css/-/clean-css-4.2.1.tgz",

View File

@ -58,6 +58,7 @@
"webpack-merge": "^4.1.4"
},
"dependencies": {
"classnames": "^2.2.6",
"i18next": "^11.9.0",
"i18next-browser-languagedetector": "^2.2.3",
"ini": "^1.3.5",

View File

@ -0,0 +1,20 @@
import * as React from 'react'
import { BaseComponentProps } from '@models/BaseProps'
import classnames from 'classnames'
import './style.scss'
interface HeaderProps extends BaseComponentProps {
// header title
title: string
}
export class Header extends React.Component<HeaderProps, {}> {
render () {
const { title, children, className, style } = this.props
return <header className={classnames('header', className)} style={style}>
<h1>{title}</h1>
<div className="operations">{children}</div>
</header>
}
}

View File

@ -0,0 +1,18 @@
@import '~@styles/variables';
.header {
width: 100%;
display: flex;
flex-direction: row;
align-items: center;
justify-content: space-between;
> h1 {
flex-shrink: 0;
font-size: 30px;
color: $color-primary-dark;
font-weight: 500;
text-shadow: 0 2px 6px rgba($color: $color-primary-dark, $alpha: 0.4);
user-select: none;
}
}

1
src/components/index.ts Normal file
View File

@ -0,0 +1 @@
export * from './Header'

View File

@ -0,0 +1,12 @@
import * as React from 'react'
import { Header } from '@components'
export default class Proxies extends React.Component<{}, {}> {
render () {
return <div className="container">
<Header title="代理" >
</Header>
</div>
}
}

View File

@ -0,0 +1 @@
@import '~@styles/variables';

View File

@ -0,0 +1,10 @@
import * as React from 'react'
import { Header } from '@components'
export default class ProxyGroup extends React.Component<{}, {}> {
render () {
return <div className="container">
<Header title="策略组" />
</div>
}
}

View File

@ -0,0 +1 @@
@import '~@styles/variables';

View File

@ -4,6 +4,7 @@
display: flex;
flex-direction: column;
align-items: center;
flex-shrink: 0;
width: 120px;
}

View File

@ -1,3 +1,4 @@
import { CSSProperties } from 'react'
import { RouteComponentProps } from 'react-router'
import { RouterStore, ConfigStore } from '@stores'
@ -10,8 +11,13 @@ export interface BaseRouterProps extends RouteComponentProps<any>, BaseProps {}
/**
* use when component is inject by mobx
*/
export interface BaseProps {
export interface BaseProps extends BaseComponentProps {
styles?: any
router?: RouterStore
config?: ConfigStore
}
export interface BaseComponentProps {
className?: string
style?: CSSProperties
}

View File

@ -24,3 +24,20 @@ body {
min-height: 100vh;
font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Helvetica, Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol";
}
.page-container {
width: 100%;
}
.page {
padding: 10px 35px;
width: 100%;
max-width: 1200px;
margin: 0 auto;
display: flex;
flex-direction: column;
}
.container {
margin: 20px 0;
}

View File

@ -27,7 +27,7 @@ export default class App extends React.Component<AppProps, {}> {
return (
<div className="app">
<SlideBar routes={routes} />
<div>
<div className="page-container">
{
routes.map(
route => <Route exact={!!route.exact} path={route.path} component={route.component}/>

View File

@ -1,7 +1,14 @@
import * as React from 'react'
// containers
import ProxiesContainer from '@containers/Proxies'
import ProxyGroupContainer from '@containers/ProxyGroup'
export default class Proxies extends React.Component<{}, {}> {
render () {
return 'Proxies'
return <div className="page">
<ProxiesContainer />
<ProxyGroupContainer />
</div>
}
}