Commit 5eb3c290 by rtclub11140

add component button

1 parent 1614c5fb
...@@ -6,6 +6,7 @@ const Login = require('./routes/login') ...@@ -6,6 +6,7 @@ const Login = require('./routes/login')
const Logout = require('./routes/logout') const Logout = require('./routes/logout')
const Menu = require('./routes/menu') const Menu = require('./routes/menu')
const SytemName = require('./routes/systemInfo') const SytemName = require('./routes/systemInfo')
const ButtonType = require('./routes/button/buttonType')
const ButtonIcon = require('./routes/button/buttonIcon') const ButtonIcon = require('./routes/button/buttonIcon')
app.use(bodyParser.json()) app.use(bodyParser.json())
...@@ -17,6 +18,7 @@ new Login(app) ...@@ -17,6 +18,7 @@ new Login(app)
new Logout(app) new Logout(app)
new SytemName(app) new SytemName(app)
new Menu(app) new Menu(app)
new ButtonType(app)
new ButtonIcon(app) new ButtonIcon(app)
app.listen('8000', () => console.log('listen on port 8000')) app.listen('8000', () => console.log('listen on port 8000'))
[
{ "value": "Button Type", "type": "primary", "disabled": false, "id": "1" },
{ "value": "Button Type", "type": "default", "disabled": false, "id": "2" },
{ "value": "Button Type", "type": "dashed", "disabled": false, "id": "3" },
{ "value": "Button Type", "type": "danger", "disabled": false, "id": "4" },
{ "value": "Button Type", "type": "default", "disabled": true, "id": "5" }
]
...@@ -15,12 +15,12 @@ ...@@ -15,12 +15,12 @@
"default": false, "default": false,
"submenuList": [ "submenuList": [
{ {
"pageTitle": "Button Type", "pageTitle": "Type",
"path": "/buttonType", "path": "/buttonType",
"default": false "default": false
}, },
{ {
"pageTitle": "Button Icon", "pageTitle": "Icon",
"path": "/buttonIcon", "path": "/buttonIcon",
"default": false "default": false
} }
......
const buttonType = require('../../json/button/buttonType.json')
class ButtonType {
constructor(app) {
app.post('/button/getButtonType', (req, res) => {
res.send(buttonType)
})
}
}
module.exports = ButtonType
...@@ -4,11 +4,11 @@ import PropTypes from 'prop-types' ...@@ -4,11 +4,11 @@ import PropTypes from 'prop-types'
export default class ButtonIcon extends Component { export default class ButtonIcon extends Component {
render() { render() {
let { buttonTitle } = this.props let { buttonProperty } = this.props
return ( return (
<Fragment> <Fragment>
{buttonTitle && {buttonProperty &&
buttonTitle.map(title => { buttonProperty.map(title => {
return ( return (
<Button <Button
key={title.id} key={title.id}
...@@ -28,10 +28,10 @@ export default class ButtonIcon extends Component { ...@@ -28,10 +28,10 @@ export default class ButtonIcon extends Component {
} }
ButtonIcon.propTypes = { ButtonIcon.propTypes = {
titleMenuItem: PropTypes.array.isRequired buttonProperty: PropTypes.array.isRequired
} }
// Default values for props // Default values for props
ButtonIcon.defaultProps = { ButtonIcon.defaultProps = {
titleMenuItem: [] buttonProperty: []
} }
import React, { Component, Fragment } from 'react' import React, { Component, Fragment } from 'react'
import { Button } from 'antd'; import { Button } from 'antd'
import PropTypes from 'prop-types' import PropTypes from 'prop-types'
export default class ButtonType extends Component { export default class ButtonType extends Component {
render() { render() {
let { buttonTitle } = this.props let { buttonProperty } = this.props
return ( return (
<Fragment> <Fragment>
{buttonTitle && {buttonProperty &&
buttonTitle.map(title => { buttonProperty.map(title => {
return ( return (
<Button type={title.type} disabled={title.disabled} href={title.href}> <Button
key={title.id}
type={title.type}
disabled={title.disabled}
href={title.href}
>
{title.value} {title.value}
</Button> </Button>
) )
})} })}
</Fragment> </Fragment>
); )
} }
} }
ButtonType.propTypes = { ButtonType.propTypes = {
titleMenuItem: PropTypes.array.isRequired, buttonProperty: PropTypes.array.isRequired
} }
// Default values for props
ButtonType.defaultProps = {
titleMenuItem: [],
}
// Default values for props
ButtonType.defaultProps = {
buttonProperty: []
}
import React, { Component, Fragment } from 'react' import React, { Component, Fragment } from 'react'
import ButtonIcon from '../../../components/Button/ButtonIcon' import ButtonIconCmp from '../../../components/button/icon/ButtonIcon'
import ButtonIconMd from './resources/md/ButtonIcon.md' import ButtonIconMd from './resources/md/ButtonIcon.md'
import ReactMarkdown from 'react-markdown' import ReactMarkdown from 'react-markdown'
import Axios from 'axios' import Axios from 'axios'
import * as UrlConstants from '../../../resources/js/constants/urlConstants' import * as UrlConstants from '../../../resources/js/constants/urlConstants'
export default class Button extends Component { export default class ButtonIcon extends Component {
state = { state = {
buttonTitle: [], buttonProperty: [],
terms: null terms: null
} }
...@@ -17,14 +17,13 @@ export default class Button extends Component { ...@@ -17,14 +17,13 @@ export default class Button extends Component {
_requestButtonIcon = async () => { _requestButtonIcon = async () => {
await Axios.post(UrlConstants.URL_GET_BUTTON_ICON).then(response => { await Axios.post(UrlConstants.URL_GET_BUTTON_ICON).then(response => {
this.setState({ buttonTitle: response.data }) this.setState({ buttonProperty: response.data })
}) })
await Axios({ await Axios({
method: 'get', method: 'get',
url: ButtonIconMd, url: ButtonIconMd,
responseType: 'text' responseType: 'text'
}).then(res => { }).then(res => {
console.log(res)
this.setState({ terms: res.data }) this.setState({ terms: res.data })
}) })
} }
...@@ -32,7 +31,7 @@ export default class Button extends Component { ...@@ -32,7 +31,7 @@ export default class Button extends Component {
render() { render() {
return ( return (
<Fragment> <Fragment>
<ButtonIcon buttonTitle={this.state.buttonTitle} /> <ButtonIconCmp buttonProperty={this.state.buttonProperty} />
<ReactMarkdown source={this.state.terms} className={'markdown-body'} /> <ReactMarkdown source={this.state.terms} className={'markdown-body'} />
</Fragment> </Fragment>
) )
......
import React, { Component, Fragment } from 'react'
import ButtonTypeCmp from '../../../components/button/type/ButtonType'
import ButtonIconMd from './resources/md/ButtonType.md'
import ReactMarkdown from 'react-markdown'
import Axios from 'axios'
import * as UrlConstants from '../../../resources/js/constants/urlConstants'
export default class ButtonType extends Component {
state = {
buttonProperty: [],
terms: null
}
componentDidMount() {
this._requestButtonType()
}
_requestButtonType = async () => {
await Axios.post(UrlConstants.URL_GET_BUTTON_TYPE).then(response => {
this.setState({ buttonProperty: response.data })
})
await Axios({
method: 'get',
url: ButtonIconMd,
responseType: 'text'
}).then(res => {
this.setState({ terms: res.data })
})
}
render() {
return (
<Fragment>
<ButtonTypeCmp buttonProperty={this.state.buttonProperty} />
<ReactMarkdown source={this.state.terms} className={'markdown-body'} />
</Fragment>
)
}
}
## React ## Icon
- Official : `https://github.com/facebook/create-react-app` `Button` components can contain an `Icon.` This is done by setting the `icon` property or placing an `Icon` component within the `Button`
- version : `16.8.1`
- Installation : If you want specific control over the positioning and placement of the `Icon`, then that should be done by placing the `Icon` component within the `Button` rather than using the `icon` property.
``` - Edit Online : `https://codesandbox.io/s/1o624ny0k7`
npx create-react-app my-app
cd my-app ```js
npm start import { Button } from 'antd'
```
ReactDOM.render(
![](https://cdn.rawgit.com/facebook/create-react-app/27b42ac/screencast.svg) <div>
<Button type="primary" shape="circle" icon="search" />
## React Redux <Button type="primary" icon="search">
Search
React Redux requires **React 16.4 or later**. </Button>
<Button shape="circle" icon="search" />
- Official : `https://github.com/reduxjs/react-redux` <Button icon="search">Search</Button>
- version : `6.0.1` <br />
- Installation : <Button shape="circle" icon="search" />
<Button icon="search">Search</Button>
``` <Button type="dashed" shape="circle" icon="search" />
npm install --save react-redux <Button type="dashed" icon="search">
``` Search
</Button>
## React Router </div>,
mountNode
- Official : `https://reacttraining.com/react-router/web/guides/quick-start` )
- version : `6.0.1` ```
- Installation :
| Property | Description | Type | Deault |
``` | -------- | ------------------------------------------------------------------------------------ | ------ | ------- |
npm install --save react-router-dom | type | can be set to primary ghost dashed danger(added in 2.7) or omitted (meaning default) | string | default |
```
## Ant Design of React
- official : `https://github.com/ant-design/ant-design/`
- version : `3.13.6`
- Installation :
```
npm install antd
```
```
yarn add antd
```
##
## Type
There are `primary` button, `default` button, `dashed` button and `danger` button in antd.
- Edit Online : `https://codesandbox.io/s/y0425p669z`
```js
import { Button } from 'antd'
ReactDOM.render(
<div>
<Button type="primary">Primary</Button>
<Button>Default</Button>
<Button type="dashed">Dashed</Button>
<Button type="danger">Danger</Button>
</div>,
mountNode
)
```
| Property | Description | Type | Deault |
| -------- | ------------------------------------------------------------------------------------ | ------- | --------- |
| type | can be set to primary ghost dashed danger(added in 2.7) or omitted (meaning default) | string | `default` |
| disabled | disabled state of button | boolean | `false` |
| size | can be set to `small` `large` or omitted | string | `default` |
import React, { Component, Fragment } from 'react' import React, { Component, Fragment } from 'react'
import Axios from 'axios'
import IntroductionMd from './resources/md/IntroductionMd.md' import IntroductionMd from './resources/md/IntroductionMd.md'
import ReactMarkdown from 'react-markdown' import ReactMarkdown from 'react-markdown'
...@@ -8,12 +9,19 @@ export default class Introduction extends Component { ...@@ -8,12 +9,19 @@ export default class Introduction extends Component {
} }
componentDidMount() { componentDidMount() {
fetch(IntroductionMd) this._requestIntroduction()
.then(response => response.text()) }
.then(text => {
this.setState({ terms: text }) _requestIntroduction = async () => {
await Axios({
method: 'get',
url: IntroductionMd,
responseType: 'text'
}).then(res => {
this.setState({ terms: res.data })
}) })
} }
render() { render() {
return ( return (
<Fragment> <Fragment>
......
...@@ -8,3 +8,4 @@ export const URL_GET_SYSTEM_INFO = URI + 'getSystemInfo' ...@@ -8,3 +8,4 @@ export const URL_GET_SYSTEM_INFO = URI + 'getSystemInfo'
// button // button
export const URL_GET_BUTTON_ICON = URI + 'button/getButtonIcon' export const URL_GET_BUTTON_ICON = URI + 'button/getButtonIcon'
export const URL_GET_BUTTON_TYPE = URI + 'button/getButtonType'
...@@ -2,13 +2,15 @@ import React from 'react' ...@@ -2,13 +2,15 @@ import React from 'react'
import { Switch, Route } from 'react-router-dom' import { Switch, Route } from 'react-router-dom'
import ButtonIcon from '../pages/content/button/ButtonIcon' import ButtonIcon from '../pages/content/button/ButtonIcon'
import ButtonType from '../pages/content/button/ButtonType'
import Submenu1 from '../pages/content/Submenu1' import Submenu1 from '../pages/content/Submenu1'
import Submenu2 from '../pages/content/Submenu2' import Submenu2 from '../pages/content/Submenu2'
export default ({ match }) => { export default ({ match }) => {
return ( return (
<Switch> <Switch>
<Route path={`${match.url}/button/buttonType`} component={ButtonIcon} /> <Route path={`${match.url}/button/buttonType`} component={ButtonType} />
<Route path={`${match.url}/button/buttonIcon`} component={ButtonIcon} />
<Route path={`${match.url}/menu/submenu1`} component={Submenu1} /> <Route path={`${match.url}/menu/submenu1`} component={Submenu1} />
<Route path={`${match.url}/menu/submenu2`} component={Submenu2} /> <Route path={`${match.url}/menu/submenu2`} component={Submenu2} />
</Switch> </Switch>
......
Markdown is supported
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!