organization-chart-react
Version:
A react component to display organization chart
209 lines (183 loc) • 4.31 kB
Markdown
# Organization-Chart-React
[DEMO](https://leejams.github.io/Organization-Chart-React/) |
[](https://www.npmjs.com/package/organization-chart-react)
> A React component to display organization chart
<img src="./src/assets/logo.png" style="width: 400px" />
## Install
```bash
npm i organization-chart-react --save
```
## Usage
in template:
```html
<OrganizationChart data="{orgData}" onClickNode="{onClickNode}" />
```
in script:
```js
import OrganizationChart from "organization-chart-react";
import "organization-chart-react/dist/style.css";
function App() {
const [orgData, setOrgData] = useState({
...
});
const onClickNode = (data) => {
...
}
return (
<>
<OrganizationChart
data={orgData}
onClickNode={onClickNode}
/>
</>
);
}
```
## Event
### Click (node)
```text
Click on the node triggered, receive the current node data as a parameter
If click on the node, you can get all the data of the node.
```
## Prop
### data
Component data to support those field:
```text
- title[String] to display a organization title
- member[String] to display a organization member
- name[String] to display a organization member name
- add[String] to display a organization member additional info
- image_url[String] to display a organization member image
- children[Array] to display a organization children
- titleClass[String, Array<String>] to input organization title class
- contentClass[String, Array<String>] to input organization content class
```
Example:
```js
const orgData = {
title: "CEO",
member: [
{
name: "Oliver",
image_url:
"https://github.com/LeeJams/LeeJams.github.io/blob/master/assets/img/user.jpg?raw=true",
},
],
children: [
{
title: "MANAGEMENT",
member: [
{
name: "Jake",
add: "Junior Staff",
image_url:
"https://github.com/LeeJams/LeeJams.github.io/blob/master/assets/img/user.jpg?raw=true",
},
{
name: "Noah",
add: "Senior Staff",
image_url:
"https://github.com/LeeJams/LeeJams.github.io/blob/master/assets/img/user.jpg?raw=true",
},
{
name: "James",
add: "Senior Manager",
image_url:
"https://github.com/LeeJams/LeeJams.github.io/blob/master/assets/img/user.jpg?raw=true",
},
],
},
{
title: "DEVELOPMENT",
member: [
{
name: "Emma",
add: "CTO",
image_url:
"https://github.com/LeeJams/LeeJams.github.io/blob/master/assets/img/user.jpg?raw=true",
},
],
children: [
{
title: "FRONTEND",
titleClass: "frontend-title",
contentClass: "frontend-content",
member: [
{
name: "David",
add: "Senior Staff",
},
{
name: "Ava",
add: "Senior Staff",
},
{
name: "Sophia",
add: "Senior Staff",
},
],
},
{
title: "BACKEND",
titleClass: "backend-title",
contentClass: "backend-content",
member: [
{
name: "Kyle",
add: "Senior Staff",
},
{
name: "Richard",
add: "Senior Staff",
},
{
name: "Daniel",
add: "Senior Staff",
},
],
},
],
},
{
title: "DESIGN",
member: [
{
name: "Jacob",
add: "Senior Staff",
},
],
},
{
title: "MARKETING",
},
{
title: "SALES",
children: [
{
title: "SALES A TEAM",
},
{
title: "SALES B TEAM",
},
],
},
],
};
```
```css
.backend-title {
background-color: #66abd3;
color: #fff;
}
.backend-content {
text-align: center;
}
.frontend-title {
background-color: #333;
color: #fff;
}
.frontend-content {
text-align: center;
}
```
Copyright (c) 2023-present, [LeeJam](https://leejams.github.io/)