✨ React with ant.design Admin Components ✨''
Prerequisite
- Add local npm registry
npm set registry http://188.166.184.174:4873
npm adduser --registry http://188.166.184.174:4873
- SCSS webpack loader
npm install --save-dev sass-loader node-sass
- Add to your webpack module loaders
{
test: /\.scss$/,
loaders: [
'style',
'css?modules&importLoaders=1&localIdentName=[path]___[name]__[local]___[hash:base64:5]',
'resolve-url',
'sass'
}
- LESS webpack loader
npm install --save-dev less less-loader
- Add to your webpack module loaders
{
test: /\.less$/,
loader: ExtractTextPlugin.extract('style-loader', 'css-loader!less-loader')
}
- Import less file to your main app
import 'antd/dist/antd.less'
Installation
npm install --save local-admin
This will get package from local npm registry
Components
BREADCRUMB
API
Property |
Type |
Required |
path |
Path Array |
true |
Path Array
[
{
name: 'Home',
path: '/'
},
{
name: 'User',
path: '/users'
},
{
name: 'John Cena',
path: '/users/JohnCena1988'
}
]
CONTAINER
Example
<Container
Sidebar={Sidebar}
Header={Header}>
{this.props.chilrden}
</Container>
API
Property |
Type |
Required |
Sidebar |
Sidebar Component |
false |
Header |
Header Component |
false |
CROPPER
This is simple cropping image build on top of react-cropper
API
Property |
Description |
Type |
Required |
width |
Width of cropper preview |
Number |
Optional |
height |
Height of cropper preview |
Number |
Optional |
handleCrop |
Handle cropping image return preview blob url and blob file |
(preview, file) => |
Required |
Cropper will calculate ratio from width and height default is square
HEADER
API
Property |
Type |
Required |
Default |
logoImg |
string or image |
false |
placeholder |
logoPosition |
'center' or 'left' |
false |
'left' |
menu |
Menu Object |
true |
[ ] |
user |
User Object |
true |
{} |
User Object
Property |
Type |
Required |
Default |
username |
string |
false |
null |
first_name |
string |
false |
null |
last_name |
string |
false |
null |
img |
string |
false |
placeholder |
User can add more Property this for example only
{
username: 'Jonh Cean 1988',
first_name: 'Jonh',
last_name: 'Cena',
img: 'http://files.gamebanana.com/img/ico/sprays/5627f56c99b3a.png'
}
Menu Object
Menu object is an array that contains menu context wrap by Menu from antd package
[
<Menu key="nav">
<Menu.Item key="home">
<Link to='/'>
HOME
</Link>
</Menu.Item>
<Menu.Item key="alert">
<div onClick={() => alert('You can see me!')}>
Alert
</div>
</Menu.Item>
</Menu>
];
SIDEBAR
Example
<Sidebar menu={sidebarMenu} location={this.props.location} />
API
Property |
Type |
Required |
menu |
Menu Object |
true |
location |
location Object |
true |
Menu Object
Menu object is an array of object contain simple path and name
const sidebarMenu = [
{
path: '/',
name: 'Home'
},
{
path: '/users',
name: 'User'
},
{
path: '/projects',
name: 'Project'
},
{
name: 'Setting',
subMenu: [
{
path: '/user',
name: 'User'
}
]
}
]
TABLE
API
Property |
Type |
Required |
columns |
Array of column object |
Require |
data |
array |
Optional |
isLoading |
Boolean |
Optional |
empty |
view |
Optional |
Column Object
Property |
Description |
Type |
Required |
title |
Header title |
String |
Require |
dataIndex |
Data field to map with |
String |
Require |
key |
Data field key |
String |
Require |
render |
Render to the shape you want |
(text, record) => (...) |
Optional |
sorter |
Sort data in the table |
(a, b) => (...) |
Optional |
[
{
title: 'Name',
dataIndex: 'name',
key: 'name',
},
{
title: 'Age',
dataIndex: 'age',
key: 'age',
sorter: (a, b) => b.age - a.age, // return boolean
}
]
Utility
handleChange
This will setState for your component
import { handleChange } from 'local-admin/lib/Utility'
constructor(props) {
super(props)
this.handleChange = handleChange.bind(this)
}
Reference