@carbon/charts-react 0.59.0-beta.0 → 1.0.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +61 -275
- package/LICENSE.md +201 -0
- package/README.md +5 -1
- package/{dist/alluvial-chart.d.ts → alluvial-chart.d.ts} +0 -0
- package/{dist/alluvial-chart.js → alluvial-chart.js} +0 -0
- package/{dist/area-chart-stacked.d.ts → area-chart-stacked.d.ts} +0 -0
- package/{dist/area-chart-stacked.js → area-chart-stacked.js} +0 -0
- package/{dist/area-chart.d.ts → area-chart.d.ts} +0 -0
- package/{dist/area-chart.js → area-chart.js} +0 -0
- package/{dist/bar-chart-grouped.d.ts → bar-chart-grouped.d.ts} +0 -0
- package/{dist/bar-chart-grouped.js → bar-chart-grouped.js} +0 -0
- package/{dist/bar-chart-simple.d.ts → bar-chart-simple.d.ts} +0 -0
- package/{dist/bar-chart-simple.js → bar-chart-simple.js} +0 -0
- package/{dist/bar-chart-stacked.d.ts → bar-chart-stacked.d.ts} +0 -0
- package/{dist/bar-chart-stacked.js → bar-chart-stacked.js} +0 -0
- package/{dist/base-chart.d.ts → base-chart.d.ts} +0 -0
- package/{dist/base-chart.js → base-chart.js} +0 -0
- package/{dist/boxplot-chart.d.ts → boxplot-chart.d.ts} +0 -0
- package/{dist/boxplot-chart.js → boxplot-chart.js} +0 -0
- package/{dist/bubble-chart.d.ts → bubble-chart.d.ts} +0 -0
- package/{dist/bubble-chart.js → bubble-chart.js} +0 -0
- package/{dist/bullet-chart.d.ts → bullet-chart.d.ts} +0 -0
- package/{dist/bullet-chart.js → bullet-chart.js} +0 -0
- package/{dist/bundle.js → bundle.js} +0 -0
- package/{dist/circle-pack-chart.d.ts → circle-pack-chart.d.ts} +0 -0
- package/{dist/circle-pack-chart.js → circle-pack-chart.js} +0 -0
- package/{dist/combo-chart.d.ts → combo-chart.d.ts} +0 -0
- package/{dist/combo-chart.js → combo-chart.js} +0 -0
- package/{dist/diagrams → diagrams}/CardNode/CardNode.d.ts +0 -0
- package/{dist/diagrams → diagrams}/CardNode/CardNode.js +0 -0
- package/{dist/diagrams → diagrams}/CardNode/CardNodeColumn.d.ts +0 -0
- package/{dist/diagrams → diagrams}/CardNode/CardNodeColumn.js +0 -0
- package/{dist/diagrams → diagrams}/CardNode/CardNodeLabel.d.ts +0 -0
- package/{dist/diagrams → diagrams}/CardNode/CardNodeLabel.js +0 -0
- package/{dist/diagrams → diagrams}/CardNode/CardNodeSubtitle.d.ts +0 -0
- package/{dist/diagrams → diagrams}/CardNode/CardNodeSubtitle.js +0 -0
- package/{dist/diagrams → diagrams}/CardNode/CardNodeTitle.d.ts +0 -0
- package/{dist/diagrams → diagrams}/CardNode/CardNodeTitle.js +0 -0
- package/{dist/diagrams → diagrams}/CardNode/index.d.ts +0 -0
- package/{dist/diagrams → diagrams}/CardNode/index.js +0 -0
- package/{dist/diagrams → diagrams}/Edge/Edge.d.ts +0 -0
- package/{dist/diagrams → diagrams}/Edge/Edge.js +0 -0
- package/{dist/diagrams → diagrams}/Edge/index.d.ts +0 -0
- package/{dist/diagrams → diagrams}/Edge/index.js +0 -0
- package/{dist/diagrams → diagrams}/Marker/Marker.d.ts +0 -0
- package/{dist/diagrams → diagrams}/Marker/Marker.js +0 -0
- package/{dist/diagrams → diagrams}/Marker/index.d.ts +0 -0
- package/{dist/diagrams → diagrams}/Marker/index.js +0 -0
- package/{dist/diagrams → diagrams}/ShapeNode/ShapeNode.d.ts +0 -0
- package/{dist/diagrams → diagrams}/ShapeNode/ShapeNode.js +0 -0
- package/{dist/diagrams → diagrams}/ShapeNode/index.d.ts +0 -0
- package/{dist/diagrams → diagrams}/ShapeNode/index.js +0 -0
- package/{dist/diagrams → diagrams}/configs.d.ts +0 -0
- package/{dist/diagrams → diagrams}/configs.js +0 -0
- package/{dist/donut-chart.d.ts → donut-chart.d.ts} +0 -0
- package/{dist/donut-chart.js → donut-chart.js} +0 -0
- package/{dist/gauge-chart.d.ts → gauge-chart.d.ts} +0 -0
- package/{dist/gauge-chart.js → gauge-chart.js} +0 -0
- package/{dist/heatmap-chart.d.ts → heatmap-chart.d.ts} +0 -0
- package/{dist/heatmap-chart.js → heatmap-chart.js} +0 -0
- package/{dist/histogram-chart.d.ts → histogram-chart.d.ts} +0 -0
- package/{dist/histogram-chart.js → histogram-chart.js} +0 -0
- package/{dist/index.d.ts → index.d.ts} +0 -0
- package/{dist/index.js → index.js} +0 -0
- package/{dist/line-chart.d.ts → line-chart.d.ts} +0 -0
- package/{dist/line-chart.js → line-chart.js} +0 -0
- package/{dist/lollipop-chart.d.ts → lollipop-chart.d.ts} +0 -0
- package/{dist/lollipop-chart.js → lollipop-chart.js} +0 -0
- package/{dist/meter-chart.d.ts → meter-chart.d.ts} +0 -0
- package/{dist/meter-chart.js → meter-chart.js} +0 -0
- package/package.json +106 -106
- package/{dist/pie-chart.d.ts → pie-chart.d.ts} +0 -0
- package/{dist/pie-chart.js → pie-chart.js} +0 -0
- package/{dist/radar-chart.d.ts → radar-chart.d.ts} +0 -0
- package/{dist/radar-chart.js → radar-chart.js} +0 -0
- package/{dist/scatter-chart.d.ts → scatter-chart.d.ts} +0 -0
- package/{dist/scatter-chart.js → scatter-chart.js} +0 -0
- package/{dist/tree-chart.d.ts → tree-chart.d.ts} +0 -0
- package/{dist/tree-chart.js → tree-chart.js} +0 -0
- package/{dist/treemap-chart.d.ts → treemap-chart.d.ts} +0 -0
- package/{dist/treemap-chart.js → treemap-chart.js} +0 -0
- package/{dist/utils.d.ts → utils.d.ts} +0 -0
- package/{dist/utils.js → utils.js} +0 -0
- package/{dist/wordcloud-chart.d.ts → wordcloud-chart.d.ts} +0 -0
- package/{dist/wordcloud-chart.js → wordcloud-chart.js} +0 -0
- package/.babelrc +0 -4
- package/.prettierignore +0 -1
- package/.storybook/addons.js +0 -2
- package/.storybook/assets/logo.svg +0 -1
- package/.storybook/assets/share.png +0 -0
- package/.storybook/assets/welcome.png +0 -0
- package/.storybook/config.js +0 -22
- package/.storybook/main.js +0 -24
- package/.storybook/manager-head.html +0 -42
- package/.storybook/preview-head.html +0 -10
- package/build.sh +0 -20
- package/carbon.yml +0 -275
- package/carbon__charts-react-tests.tsx +0 -83
- package/demo/bundle/favicon.ico +0 -0
- package/demo/bundle/index.html +0 -22
- package/demo/bundle/logo.svg +0 -1
- package/demo/bundle/main.4a87b5852cddf04c8e9a.bundle.js +0 -1
- package/demo/bundle/runtime~main.6b70b35614cf83eab770.bundle.js +0 -1
- package/demo/bundle/sb_dll/storybook_ui-manifest.json +0 -1
- package/demo/bundle/sb_dll/storybook_ui_dll.LICENCE +0 -113
- package/demo/bundle/sb_dll/storybook_ui_dll.js +0 -2
- package/demo/bundle/share.png +0 -0
- package/demo/bundle/vendors~main.9ceec0efe2f3ef413ade.bundle.js +0 -111
- package/demo/bundle/welcome.png +0 -0
- package/dist/CHANGELOG.md +0 -2150
- package/dist/README.md +0 -56
- package/dist/package.json +0 -107
- package/helpers/commons.js +0 -30
- package/rollup.config.js +0 -18
- package/src/alluvial-chart.tsx +0 -30
- package/src/area-chart-stacked.tsx +0 -33
- package/src/area-chart.tsx +0 -30
- package/src/bar-chart-grouped.tsx +0 -30
- package/src/bar-chart-simple.tsx +0 -30
- package/src/bar-chart-stacked.tsx +0 -30
- package/src/base-chart.tsx +0 -45
- package/src/boxplot-chart.tsx +0 -30
- package/src/bubble-chart.tsx +0 -30
- package/src/bullet-chart.tsx +0 -30
- package/src/circle-pack-chart.tsx +0 -30
- package/src/combo-chart.tsx +0 -30
- package/src/diagrams/CardNode/CardNode.tsx +0 -121
- package/src/diagrams/CardNode/CardNodeColumn.tsx +0 -38
- package/src/diagrams/CardNode/CardNodeLabel.tsx +0 -32
- package/src/diagrams/CardNode/CardNodeSubtitle.tsx +0 -32
- package/src/diagrams/CardNode/CardNodeTitle.tsx +0 -32
- package/src/diagrams/CardNode/index.tsx +0 -13
- package/src/diagrams/Edge/Edge.tsx +0 -137
- package/src/diagrams/Edge/index.tsx +0 -2
- package/src/diagrams/Marker/Marker.tsx +0 -121
- package/src/diagrams/Marker/index.tsx +0 -9
- package/src/diagrams/ShapeNode/ShapeNode.tsx +0 -153
- package/src/diagrams/ShapeNode/index.tsx +0 -2
- package/src/diagrams/configs.ts +0 -1
- package/src/donut-chart.tsx +0 -30
- package/src/gauge-chart.tsx +0 -30
- package/src/heatmap-chart.tsx +0 -30
- package/src/histogram-chart.tsx +0 -30
- package/src/index.ts +0 -51
- package/src/line-chart.tsx +0 -30
- package/src/lollipop-chart.tsx +0 -30
- package/src/meter-chart.tsx +0 -30
- package/src/pie-chart.tsx +0 -30
- package/src/radar-chart.tsx +0 -30
- package/src/scatter-chart.tsx +0 -30
- package/src/tree-chart.tsx +0 -30
- package/src/treemap-chart.tsx +0 -30
- package/src/utils.ts +0 -7
- package/src/wordcloud-chart.tsx +0 -30
- package/stories/0_intro.stories.js +0 -60
- package/stories/1_gettingStarted.stories.js +0 -74
- package/stories/1_gettingStarted_content.js +0 -121
- package/stories/all.stories.js +0 -110
- package/stories/diagrams/0_Diagrams.stories.js +0 -259
- package/stories/diagrams/CardNode.stories.js +0 -106
- package/stories/diagrams/Edge.stories.js +0 -94
- package/stories/diagrams/Marker.stories.js +0 -95
- package/stories/diagrams/ShapeNode.stories.js +0 -42
- package/tsconfig.json +0 -20
|
@@ -1,121 +0,0 @@
|
|
|
1
|
-
import marked from 'marked';
|
|
2
|
-
|
|
3
|
-
export const reactGettingStartedTutorial = {
|
|
4
|
-
name: 'React',
|
|
5
|
-
type: 'getting-started',
|
|
6
|
-
content: marked(`
|
|
7
|
-
# Carbon Charts - React
|
|
8
|
-
|
|
9
|
-
The Carbon Charts library provides a collection of reusable charting components to
|
|
10
|
-
build websites and user interfaces.
|
|
11
|
-
|
|
12
|
-
Adopting the library enables developers to use
|
|
13
|
-
consistent markup, styles, and behavior in prototype and production work.
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
## Install
|
|
17
|
-
|
|
18
|
-
**with yarn:**
|
|
19
|
-
\`\`\`bash
|
|
20
|
-
yarn add @carbon/charts-react d3
|
|
21
|
-
\`\`\`
|
|
22
|
-
|
|
23
|
-
**with npm:**
|
|
24
|
-
\`\`\`bash
|
|
25
|
-
npm install --save @carbon/charts-react d3
|
|
26
|
-
\`\`\`
|
|
27
|
-
|
|
28
|
-
**Note:** you'd also need to install \`carbon-components\` if you're not using a bundled version of the library.
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
## Getting started
|
|
32
|
-
|
|
33
|
-
To start using the \`StackedBarChart\` component, try the example below:
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
\`\`\`ts
|
|
38
|
-
import React from "react";
|
|
39
|
-
|
|
40
|
-
import { StackedBarChart } from "@carbon/charts-react";
|
|
41
|
-
import "@carbon/charts/styles.css";
|
|
42
|
-
// Or
|
|
43
|
-
// import '@carbon/charts/styles/styles.scss';
|
|
44
|
-
|
|
45
|
-
function App() {
|
|
46
|
-
const [stackedBarData, setStackedBarData] = React.useState([
|
|
47
|
-
// refer to tabular data format tutorial
|
|
48
|
-
]);
|
|
49
|
-
|
|
50
|
-
const [stackedBarOptions, setStackedBarOptions] = React.useState([
|
|
51
|
-
// refer to chart specific options
|
|
52
|
-
]);
|
|
53
|
-
|
|
54
|
-
return (
|
|
55
|
-
<div className="App">
|
|
56
|
-
<StackedBarChart
|
|
57
|
-
data={stackedBarData}
|
|
58
|
-
options={stackedBarOptions}
|
|
59
|
-
/>
|
|
60
|
-
</div>
|
|
61
|
-
);
|
|
62
|
-
}
|
|
63
|
-
|
|
64
|
-
// ...
|
|
65
|
-
\`\`\`
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
## Data
|
|
69
|
-
Data follows almost the same model in all charts.
|
|
70
|
-
See tutorial on tabular data format for more information on chart data.
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
## Options
|
|
74
|
-
|
|
75
|
-
You can see the options for all charts
|
|
76
|
-
[here](https://charts.carbondesignsystem.com/documentation/modules/_interfaces_charts_.html).
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
## Demos and Examples
|
|
80
|
-
+ **[Storybook - Story Sources](https://github.com/carbon-design-system/carbon-charts/tree/master/packages/react/stories)**
|
|
81
|
-
+ **[Storybook - Data & options used](https://github.com/carbon-design-system/carbon-charts/tree/master/packages/core/demo/data)**
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
## Guidance
|
|
85
|
-
|
|
86
|
-
Please refer to the
|
|
87
|
-
[Carbon Design Systems guidance](https://www.carbondesignsystem.com/data-visualization/chart-types)
|
|
88
|
-
on using the different charts available in this library.
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
## Development
|
|
92
|
-
Please refer to the
|
|
93
|
-
[Contribution Guidelines](https://github.com/carbon-design-system/carbon-charts/blob/master/CONTRIBUTING.md)
|
|
94
|
-
before starting any work.
|
|
95
|
-
|
|
96
|
-
#### Using the server
|
|
97
|
-
We recommend the use of [React Storybook](https://github.com/storybookjs/storybook/tree/next/app/react)
|
|
98
|
-
for developing components.
|
|
99
|
-
|
|
100
|
-
**Start the server:**
|
|
101
|
-
\`\`\`bash
|
|
102
|
-
cd packages/react
|
|
103
|
-
yarn run storybook
|
|
104
|
-
\`\`\`
|
|
105
|
-
|
|
106
|
-
Open browser to \`http://localhost:9006/\`.
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
## List of available components
|
|
110
|
-
View available components [here](https://github.com/carbon-design-system/carbon-charts#component-status)
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
## Troubleshoot
|
|
114
|
-
|
|
115
|
-
If you experience any issues while getting set up with Carbon Charts, please head over to
|
|
116
|
-
the [GitHub repo](https://github.com/carbon-design-system/carbon-charts)
|
|
117
|
-
for more guidelines and support.
|
|
118
|
-
Please [create an issue](https://github.com/carbon-design-system/carbon-charts/issues)
|
|
119
|
-
if your issue does not already exist.
|
|
120
|
-
`),
|
|
121
|
-
};
|
package/stories/all.stories.js
DELETED
|
@@ -1,110 +0,0 @@
|
|
|
1
|
-
import React from 'react';
|
|
2
|
-
import { storiesOf } from '@storybook/react';
|
|
3
|
-
import { withKnobs, object } from '@storybook/addon-knobs';
|
|
4
|
-
|
|
5
|
-
import * as ChartComponents from '../dist/index';
|
|
6
|
-
import * as storyUtils from '@carbon/charts/demo/utils';
|
|
7
|
-
|
|
8
|
-
import { storybookDemoGroups } from '@carbon/charts/demo/data';
|
|
9
|
-
import * as Configuration from '@carbon/charts/configuration';
|
|
10
|
-
const colorPairingOptions = Configuration.color.pairingOptions;
|
|
11
|
-
|
|
12
|
-
// Loop through all demo groups
|
|
13
|
-
storybookDemoGroups.forEach((demoGroup) => {
|
|
14
|
-
// Create story group for each demo group
|
|
15
|
-
const groupStories = storiesOf(
|
|
16
|
-
`${demoGroup.storyGroupTitle}|${demoGroup.title}`,
|
|
17
|
-
module
|
|
18
|
-
).addDecorator(withKnobs({ escapeHTML: false }));
|
|
19
|
-
|
|
20
|
-
// Loop through the demos for the group
|
|
21
|
-
demoGroup.demos.forEach((demo) => {
|
|
22
|
-
if (demo.isHighScale) {
|
|
23
|
-
return;
|
|
24
|
-
}
|
|
25
|
-
const DemoComponent = ChartComponents[demo.chartType.vanilla];
|
|
26
|
-
groupStories.add(demo.title, () => {
|
|
27
|
-
/* Storybook seems to be skipping re-render when chartRef starts
|
|
28
|
-
* populating, adding this as a quick hack */
|
|
29
|
-
const [update, setUpdate] = React.useState(false);
|
|
30
|
-
|
|
31
|
-
const demoRef = React.useRef(null);
|
|
32
|
-
const chartRef = React.useRef(null);
|
|
33
|
-
|
|
34
|
-
if (demoRef.current && chartRef.current) {
|
|
35
|
-
const container = demoRef.current;
|
|
36
|
-
const chart = chartRef.current.chart;
|
|
37
|
-
|
|
38
|
-
storyUtils.addControls(container, demoGroup, chart, {
|
|
39
|
-
colorPairingOptions,
|
|
40
|
-
});
|
|
41
|
-
|
|
42
|
-
storyUtils.addOtherVersions(container, demoGroup, demo, {
|
|
43
|
-
currentVersion: 'react',
|
|
44
|
-
});
|
|
45
|
-
}
|
|
46
|
-
|
|
47
|
-
React.useEffect(() => {
|
|
48
|
-
setUpdate(!update);
|
|
49
|
-
}, [demoRef, chartRef]);
|
|
50
|
-
|
|
51
|
-
return (
|
|
52
|
-
<div className="container theme--g100" ref={demoRef}>
|
|
53
|
-
<div className="v10-banner">
|
|
54
|
-
This version relies on <b>Carbon v11</b>. If you're
|
|
55
|
-
using Carbon v10,{' '}
|
|
56
|
-
<a
|
|
57
|
-
href="https://carbon-charts-0x.netlify.app"
|
|
58
|
-
target="_blank"
|
|
59
|
-
rel="noreferrer">
|
|
60
|
-
see the legacy demo site
|
|
61
|
-
</a>
|
|
62
|
-
</div>
|
|
63
|
-
|
|
64
|
-
<h3>
|
|
65
|
-
<b>Component:</b>
|
|
66
|
-
<span className="cds--tag cds--tag--green component-name">{`<${demo.chartType.vanilla} />`}</span>
|
|
67
|
-
</h3>
|
|
68
|
-
|
|
69
|
-
<p className="props">
|
|
70
|
-
<b>Props:</b>{' '}
|
|
71
|
-
<a href="/?path=/story/docs-tutorials--tabular-data-format">
|
|
72
|
-
data
|
|
73
|
-
</a>
|
|
74
|
-
,{' '}
|
|
75
|
-
<a
|
|
76
|
-
href="https://carbon-design-system.github.io/carbon-charts/documentation/modules/_interfaces_charts_.html"
|
|
77
|
-
target="_blank">
|
|
78
|
-
options
|
|
79
|
-
</a>
|
|
80
|
-
</p>
|
|
81
|
-
|
|
82
|
-
<div id="charting-controls"></div>
|
|
83
|
-
|
|
84
|
-
<div className="marginTop-30" id="chart-demo">
|
|
85
|
-
<DemoComponent
|
|
86
|
-
data={object('Data', demo.data)}
|
|
87
|
-
options={object('Options', demo.options)}
|
|
88
|
-
ref={chartRef}
|
|
89
|
-
/>
|
|
90
|
-
</div>
|
|
91
|
-
|
|
92
|
-
<h3 className="marginTop-30">Code sample</h3>
|
|
93
|
-
<a href={demo.codesandbox.react} target="_blank">
|
|
94
|
-
<img
|
|
95
|
-
src="https://codesandbox.io/static/img/play-codesandbox.svg"
|
|
96
|
-
className="marginTop"
|
|
97
|
-
alt="Edit on Codesandbox"
|
|
98
|
-
/>
|
|
99
|
-
</a>
|
|
100
|
-
|
|
101
|
-
<h3 class="marginTop-45">Other versions</h3>
|
|
102
|
-
<p style={{ opacity: 0.75 }}>
|
|
103
|
-
(currently on <strong>React</strong>)
|
|
104
|
-
</p>
|
|
105
|
-
<div id="other-versions"></div>
|
|
106
|
-
</div>
|
|
107
|
-
);
|
|
108
|
-
});
|
|
109
|
-
});
|
|
110
|
-
});
|
|
@@ -1,259 +0,0 @@
|
|
|
1
|
-
import React from 'react';
|
|
2
|
-
import { storiesOf } from '@storybook/react';
|
|
3
|
-
|
|
4
|
-
import { User20, Wikis20, Debug20 } from '@carbon/icons-react';
|
|
5
|
-
import { buildElbowPathString } from '@carbon/charts/components/diagrams/buildPaths';
|
|
6
|
-
|
|
7
|
-
import CardNode, {
|
|
8
|
-
CardNodeColumn,
|
|
9
|
-
CardNodeTitle,
|
|
10
|
-
CardNodeSubtitle,
|
|
11
|
-
} from '../../dist/diagrams/CardNode';
|
|
12
|
-
import Edge from '../../dist/diagrams/Edge';
|
|
13
|
-
import ShapeNode from '../../dist/diagrams/ShapeNode';
|
|
14
|
-
import { ArrowRightMarker } from '../../dist/diagrams/Marker';
|
|
15
|
-
|
|
16
|
-
const nodeHeight = 64;
|
|
17
|
-
const nodeWidth = 200;
|
|
18
|
-
const ShapeNodeSize = 64;
|
|
19
|
-
|
|
20
|
-
const stories = storiesOf('Diagrams/', module);
|
|
21
|
-
stories.addDecorator((story) => (
|
|
22
|
-
<div className="container theme--white">{story()}</div>
|
|
23
|
-
));
|
|
24
|
-
|
|
25
|
-
stories.add('Start here', () => {
|
|
26
|
-
const paragraphStyle = {
|
|
27
|
-
style: {
|
|
28
|
-
maxWidth: 600,
|
|
29
|
-
fontSize: '1rem',
|
|
30
|
-
fontWeight: 400,
|
|
31
|
-
lineHeight: 1.5,
|
|
32
|
-
letterSpacing: 0,
|
|
33
|
-
},
|
|
34
|
-
};
|
|
35
|
-
|
|
36
|
-
const h3Style = {
|
|
37
|
-
style: {
|
|
38
|
-
paddingTop: '1rem',
|
|
39
|
-
},
|
|
40
|
-
};
|
|
41
|
-
|
|
42
|
-
const h2Style = {
|
|
43
|
-
style: {
|
|
44
|
-
paddingTop: '2rem',
|
|
45
|
-
},
|
|
46
|
-
};
|
|
47
|
-
|
|
48
|
-
return (
|
|
49
|
-
<div>
|
|
50
|
-
<h1>Diagrams</h1>
|
|
51
|
-
|
|
52
|
-
<p {...paragraphStyle}>
|
|
53
|
-
React components for building diagram experiences, using the
|
|
54
|
-
Carbon Design System.
|
|
55
|
-
</p>
|
|
56
|
-
|
|
57
|
-
<p {...paragraphStyle}>
|
|
58
|
-
<b>
|
|
59
|
-
Note that Carbon Charts does not provide layouts for
|
|
60
|
-
diagrams. You can utilize these components alongside
|
|
61
|
-
graphing libraries, or by composing your own layouts (see
|
|
62
|
-
section 3).
|
|
63
|
-
</b>
|
|
64
|
-
</p>
|
|
65
|
-
|
|
66
|
-
<h2 {...h2Style}>Examples</h2>
|
|
67
|
-
|
|
68
|
-
<h3 {...h3Style}>1. Simple static layout</h3>
|
|
69
|
-
|
|
70
|
-
<p {...paragraphStyle}>
|
|
71
|
-
A simple composed diagram, using statically defined x and y
|
|
72
|
-
coordinates.{' '}
|
|
73
|
-
<a href="https://github.com/carbon-design-system/carbon-charts/tree/master/packages/react/stories/diagrams/0_Diagrams.stories.js">
|
|
74
|
-
View source
|
|
75
|
-
</a>
|
|
76
|
-
</p>
|
|
77
|
-
|
|
78
|
-
<SimpleStatic />
|
|
79
|
-
|
|
80
|
-
<h3 {...h3Style}>2. Programmatic static layout</h3>
|
|
81
|
-
|
|
82
|
-
<p {...paragraphStyle}>
|
|
83
|
-
A composed diagram, rendered using arrays of statically defined
|
|
84
|
-
x and y coordinates.{' '}
|
|
85
|
-
<a href="https://github.com/carbon-design-system/carbon-charts/tree/master/packages/react/stories/diagrams/0_Diagrams.stories.js">
|
|
86
|
-
View source
|
|
87
|
-
</a>
|
|
88
|
-
</p>
|
|
89
|
-
|
|
90
|
-
<ProgrammaticStatic />
|
|
91
|
-
|
|
92
|
-
<h3 {...h3Style}>3. Layouts using external dependencies</h3>
|
|
93
|
-
|
|
94
|
-
<p>
|
|
95
|
-
Here's an example using <b>elkjs</b> in react
|
|
96
|
-
</p>
|
|
97
|
-
|
|
98
|
-
<iframe
|
|
99
|
-
src="https://codesandbox.io/embed/carbon-charts-react-elkjs-diagram-b9xyp?fontsize=14&hidenavigation=1&theme=dark&view=preview"
|
|
100
|
-
style={{
|
|
101
|
-
width: '100%',
|
|
102
|
-
height: '500px',
|
|
103
|
-
marginTop: '2em',
|
|
104
|
-
border: 0,
|
|
105
|
-
borderRadius: '4px',
|
|
106
|
-
overflow: 'hidden',
|
|
107
|
-
}}
|
|
108
|
-
title="carbon-charts-react-elkjs-diagram"
|
|
109
|
-
allow="accelerometer; ambient-light-sensor; camera; encrypted-media; geolocation; gyroscope; hid; microphone; midi; payment; usb; vr; xr-spatial-tracking"
|
|
110
|
-
sandbox="allow-forms allow-modals allow-popups allow-presentation allow-same-origin allow-scripts"></iframe>
|
|
111
|
-
</div>
|
|
112
|
-
);
|
|
113
|
-
});
|
|
114
|
-
|
|
115
|
-
const DesktopOnlyMessage = () => (
|
|
116
|
-
<div className="cp-message">This is a desktop-only example</div>
|
|
117
|
-
);
|
|
118
|
-
|
|
119
|
-
const SimpleStatic = () => (
|
|
120
|
-
<div className="demo-desktop-only">
|
|
121
|
-
<DesktopOnlyMessage />
|
|
122
|
-
|
|
123
|
-
<svg height="124" width="600" style={{ marginTop: '1em' }}>
|
|
124
|
-
<defs>
|
|
125
|
-
<ArrowRightMarker id={'marker'} />
|
|
126
|
-
</defs>
|
|
127
|
-
|
|
128
|
-
<Edge
|
|
129
|
-
source={{ x: 0, y: 48 }}
|
|
130
|
-
target={{ x: 396, y: 48 }}
|
|
131
|
-
markerEnd={'marker'}
|
|
132
|
-
variant={'dash-sm'}
|
|
133
|
-
/>
|
|
134
|
-
|
|
135
|
-
<foreignObject
|
|
136
|
-
style={{ overflow: 'visible' }}
|
|
137
|
-
transform={`translate(0, 16)`}
|
|
138
|
-
height={nodeHeight}
|
|
139
|
-
width={nodeWidth}>
|
|
140
|
-
<CardNode onClick={() => {}}>
|
|
141
|
-
<CardNodeColumn>
|
|
142
|
-
<User20 />
|
|
143
|
-
</CardNodeColumn>
|
|
144
|
-
<CardNodeColumn>
|
|
145
|
-
<CardNodeTitle>Title</CardNodeTitle>
|
|
146
|
-
<CardNodeSubtitle>Description</CardNodeSubtitle>
|
|
147
|
-
</CardNodeColumn>
|
|
148
|
-
</CardNode>
|
|
149
|
-
</foreignObject>
|
|
150
|
-
|
|
151
|
-
<foreignObject
|
|
152
|
-
style={{ overflow: 'visible' }}
|
|
153
|
-
transform={`translate(400, 16)`}>
|
|
154
|
-
<ShapeNode
|
|
155
|
-
title={'Title'}
|
|
156
|
-
size={ShapeNodeSize}
|
|
157
|
-
onClick={() => {}}
|
|
158
|
-
renderIcon={<Wikis20 />}
|
|
159
|
-
/>
|
|
160
|
-
</foreignObject>
|
|
161
|
-
</svg>
|
|
162
|
-
</div>
|
|
163
|
-
);
|
|
164
|
-
|
|
165
|
-
const ProgrammaticStatic = () => {
|
|
166
|
-
const nodeData = [
|
|
167
|
-
{ id: 'a', x: 0, y: 16, icon: <User20 />, nodeWidth, nodeHeight },
|
|
168
|
-
{ id: 'b', x: 250, y: 16, icon: <Wikis20 />, nodeWidth, nodeHeight },
|
|
169
|
-
{
|
|
170
|
-
id: 'c',
|
|
171
|
-
x: 600,
|
|
172
|
-
y: 200,
|
|
173
|
-
icon: <Debug20 />,
|
|
174
|
-
ShapeNode: true,
|
|
175
|
-
nodeWidth: ShapeNodeSize,
|
|
176
|
-
nodeHeight: ShapeNodeSize,
|
|
177
|
-
},
|
|
178
|
-
{ id: 'd', x: 0, y: 150, icon: <Wikis20 />, nodeWidth, nodeHeight },
|
|
179
|
-
];
|
|
180
|
-
|
|
181
|
-
const edgeData = [
|
|
182
|
-
{ source: 'a', target: 'b', variant: 'dash-md' },
|
|
183
|
-
{
|
|
184
|
-
source: 'c',
|
|
185
|
-
target: 'b',
|
|
186
|
-
path: (source, target) => buildElbowPathString(source, target),
|
|
187
|
-
},
|
|
188
|
-
{
|
|
189
|
-
source: 'd',
|
|
190
|
-
target: 'c',
|
|
191
|
-
path: (source, target) => buildElbowPathString(source, target),
|
|
192
|
-
variant: 'tunnel',
|
|
193
|
-
},
|
|
194
|
-
];
|
|
195
|
-
|
|
196
|
-
const edgeMapped = edgeData.map((link) => {
|
|
197
|
-
const sourceNode = nodeData.find((node) => node.id === link.source);
|
|
198
|
-
const targetNode = nodeData.find((node) => node.id === link.target);
|
|
199
|
-
|
|
200
|
-
return {
|
|
201
|
-
...link,
|
|
202
|
-
source: {
|
|
203
|
-
x: sourceNode.x + sourceNode.nodeWidth / 2,
|
|
204
|
-
y: sourceNode.y + sourceNode.nodeHeight / 2,
|
|
205
|
-
},
|
|
206
|
-
target: {
|
|
207
|
-
x: targetNode.x + targetNode.nodeWidth / 2,
|
|
208
|
-
y: targetNode.y + targetNode.nodeHeight / 2,
|
|
209
|
-
},
|
|
210
|
-
};
|
|
211
|
-
});
|
|
212
|
-
|
|
213
|
-
const nodes = nodeData.map((node, i) => (
|
|
214
|
-
<foreignObject
|
|
215
|
-
style={{ overflow: 'visible' }}
|
|
216
|
-
key={`node_${i}`}
|
|
217
|
-
transform={`translate(${node.x}, ${node.y})`}
|
|
218
|
-
height={node.nodeHeight}
|
|
219
|
-
width={node.nodeWidth}>
|
|
220
|
-
{node.ShapeNode ? (
|
|
221
|
-
<ShapeNode
|
|
222
|
-
onClick={() => {}}
|
|
223
|
-
title={'Title'}
|
|
224
|
-
size={ShapeNodeSize}
|
|
225
|
-
description={'Description'}
|
|
226
|
-
renderIcon={node.icon}
|
|
227
|
-
/>
|
|
228
|
-
) : (
|
|
229
|
-
<CardNode onClick={() => {}}>
|
|
230
|
-
<CardNodeColumn>{node.icon}</CardNodeColumn>
|
|
231
|
-
<CardNodeColumn>
|
|
232
|
-
<CardNodeTitle>Title</CardNodeTitle>
|
|
233
|
-
<CardNodeSubtitle>Description</CardNodeSubtitle>
|
|
234
|
-
</CardNodeColumn>
|
|
235
|
-
</CardNode>
|
|
236
|
-
)}
|
|
237
|
-
</foreignObject>
|
|
238
|
-
));
|
|
239
|
-
const edges = edgeMapped.map((edge, i) => (
|
|
240
|
-
<Edge
|
|
241
|
-
key={`link_${i}`}
|
|
242
|
-
source={edge.source}
|
|
243
|
-
target={edge.target}
|
|
244
|
-
path={edge.path && edge.path(edge.source, edge.target)}
|
|
245
|
-
variant={edge.variant}
|
|
246
|
-
/>
|
|
247
|
-
));
|
|
248
|
-
|
|
249
|
-
return (
|
|
250
|
-
<div className="demo-desktop-only">
|
|
251
|
-
<DesktopOnlyMessage />
|
|
252
|
-
|
|
253
|
-
<svg height="300" width="800" style={{ marginTop: '1.5em' }}>
|
|
254
|
-
{edges}
|
|
255
|
-
{nodes}
|
|
256
|
-
</svg>
|
|
257
|
-
</div>
|
|
258
|
-
);
|
|
259
|
-
};
|
|
@@ -1,106 +0,0 @@
|
|
|
1
|
-
import React from 'react';
|
|
2
|
-
import { storiesOf } from '@storybook/react';
|
|
3
|
-
|
|
4
|
-
import CardNode, {
|
|
5
|
-
CardNodeColumn,
|
|
6
|
-
CardNodeSubtitle,
|
|
7
|
-
CardNodeLabel,
|
|
8
|
-
CardNodeTitle,
|
|
9
|
-
} from '../../dist/diagrams/CardNode';
|
|
10
|
-
|
|
11
|
-
import { User20, ChevronDown20 } from '@carbon/icons-react';
|
|
12
|
-
|
|
13
|
-
const stories = storiesOf('Diagrams|Nodes/Card', module);
|
|
14
|
-
stories.addDecorator((story) => (
|
|
15
|
-
<div className="container theme--white" style={{ maxWidth: 400 }}>
|
|
16
|
-
{story()}
|
|
17
|
-
</div>
|
|
18
|
-
));
|
|
19
|
-
|
|
20
|
-
stories.add('Default', () => (
|
|
21
|
-
<CardNode>
|
|
22
|
-
<CardNodeColumn>
|
|
23
|
-
<CardNodeTitle>Title</CardNodeTitle>
|
|
24
|
-
<CardNodeSubtitle>Description</CardNodeSubtitle>
|
|
25
|
-
</CardNodeColumn>
|
|
26
|
-
</CardNode>
|
|
27
|
-
));
|
|
28
|
-
|
|
29
|
-
stories.add('Stacked', () => (
|
|
30
|
-
<CardNode stacked>
|
|
31
|
-
<CardNodeColumn>
|
|
32
|
-
<CardNodeTitle>Title</CardNodeTitle>
|
|
33
|
-
<CardNodeSubtitle>Description</CardNodeSubtitle>
|
|
34
|
-
</CardNodeColumn>
|
|
35
|
-
</CardNode>
|
|
36
|
-
));
|
|
37
|
-
|
|
38
|
-
stories.add('Color', () => (
|
|
39
|
-
<CardNode color={'#8a3ffc'}>
|
|
40
|
-
<CardNodeColumn>
|
|
41
|
-
<CardNodeTitle>Title</CardNodeTitle>
|
|
42
|
-
<CardNodeSubtitle>Description</CardNodeSubtitle>
|
|
43
|
-
</CardNodeColumn>
|
|
44
|
-
</CardNode>
|
|
45
|
-
));
|
|
46
|
-
|
|
47
|
-
stories.add('With icon', () => (
|
|
48
|
-
<CardNode>
|
|
49
|
-
<CardNodeColumn>
|
|
50
|
-
<User20 />
|
|
51
|
-
</CardNodeColumn>
|
|
52
|
-
<CardNodeColumn>
|
|
53
|
-
<CardNodeTitle>Title</CardNodeTitle>
|
|
54
|
-
<CardNodeSubtitle>Description</CardNodeSubtitle>
|
|
55
|
-
</CardNodeColumn>
|
|
56
|
-
</CardNode>
|
|
57
|
-
));
|
|
58
|
-
|
|
59
|
-
stories.add('As button', () => (
|
|
60
|
-
<CardNode onClick={() => {}}>
|
|
61
|
-
<CardNodeColumn>
|
|
62
|
-
<User20 />
|
|
63
|
-
</CardNodeColumn>
|
|
64
|
-
<CardNodeColumn>
|
|
65
|
-
<CardNodeTitle>Title</CardNodeTitle>
|
|
66
|
-
<CardNodeSubtitle>Description</CardNodeSubtitle>
|
|
67
|
-
</CardNodeColumn>
|
|
68
|
-
</CardNode>
|
|
69
|
-
));
|
|
70
|
-
|
|
71
|
-
stories.add('As link', () => (
|
|
72
|
-
<CardNode href="#">
|
|
73
|
-
<CardNodeColumn>
|
|
74
|
-
<User20 />
|
|
75
|
-
</CardNodeColumn>
|
|
76
|
-
<CardNodeColumn>
|
|
77
|
-
<CardNodeTitle>Title</CardNodeTitle>
|
|
78
|
-
<CardNodeSubtitle>Description</CardNodeSubtitle>
|
|
79
|
-
</CardNodeColumn>
|
|
80
|
-
</CardNode>
|
|
81
|
-
));
|
|
82
|
-
|
|
83
|
-
stories.add('With label', () => (
|
|
84
|
-
<CardNode>
|
|
85
|
-
<CardNodeColumn>
|
|
86
|
-
<CardNodeTitle>Title</CardNodeTitle>
|
|
87
|
-
<CardNodeSubtitle>Description</CardNodeSubtitle>
|
|
88
|
-
<CardNodeLabel>Label</CardNodeLabel>
|
|
89
|
-
</CardNodeColumn>
|
|
90
|
-
</CardNode>
|
|
91
|
-
));
|
|
92
|
-
|
|
93
|
-
stories.add('With third column', () => (
|
|
94
|
-
<CardNode>
|
|
95
|
-
<CardNodeColumn>
|
|
96
|
-
<User20 />
|
|
97
|
-
</CardNodeColumn>
|
|
98
|
-
<CardNodeColumn>
|
|
99
|
-
<CardNodeTitle>Title</CardNodeTitle>
|
|
100
|
-
<CardNodeSubtitle>Description</CardNodeSubtitle>
|
|
101
|
-
</CardNodeColumn>
|
|
102
|
-
<CardNodeColumn farsideColumn>
|
|
103
|
-
<ChevronDown20 />
|
|
104
|
-
</CardNodeColumn>
|
|
105
|
-
</CardNode>
|
|
106
|
-
));
|
|
@@ -1,94 +0,0 @@
|
|
|
1
|
-
import React from 'react';
|
|
2
|
-
import { storiesOf } from '@storybook/react';
|
|
3
|
-
|
|
4
|
-
import Edge from '../../dist/diagrams/Edge';
|
|
5
|
-
import {
|
|
6
|
-
buildBezierPathString,
|
|
7
|
-
buildElbowPathString,
|
|
8
|
-
} from '@carbon/charts/components/diagrams/buildPaths';
|
|
9
|
-
|
|
10
|
-
const linkSource = { x: 0, y: 0 };
|
|
11
|
-
const linkTarget = { x: 400, y: 0 };
|
|
12
|
-
const linkTargetCurve = { x: 400, y: 200 };
|
|
13
|
-
|
|
14
|
-
const stories = storiesOf('Diagrams|Edges', module);
|
|
15
|
-
stories.addDecorator((story) => (
|
|
16
|
-
<div className="container theme--white">{story()}</div>
|
|
17
|
-
));
|
|
18
|
-
|
|
19
|
-
stories.add('Default', () => (
|
|
20
|
-
<svg height="800" width="800">
|
|
21
|
-
<g transform="translate(16,16)">
|
|
22
|
-
<Edge source={linkSource} target={linkTarget} />
|
|
23
|
-
</g>
|
|
24
|
-
</svg>
|
|
25
|
-
));
|
|
26
|
-
|
|
27
|
-
stories.add('Color', () => (
|
|
28
|
-
<svg height="800" width="800">
|
|
29
|
-
<g transform="translate(16,16)">
|
|
30
|
-
<Edge source={linkSource} target={linkTarget} color={'#FB4B53'} />
|
|
31
|
-
</g>
|
|
32
|
-
</svg>
|
|
33
|
-
));
|
|
34
|
-
|
|
35
|
-
stories.add('Dashed', () => (
|
|
36
|
-
<svg height="800" width="800">
|
|
37
|
-
<g transform="translate(16,16)">
|
|
38
|
-
<Edge source={linkSource} target={linkTarget} variant={'dash-sm'} />
|
|
39
|
-
</g>
|
|
40
|
-
|
|
41
|
-
<g transform="translate(16,32)">
|
|
42
|
-
<Edge source={linkSource} target={linkTarget} variant={'dash-md'} />
|
|
43
|
-
</g>
|
|
44
|
-
|
|
45
|
-
<g transform="translate(16,48)">
|
|
46
|
-
<Edge source={linkSource} target={linkTarget} variant={'dash-lg'} />
|
|
47
|
-
</g>
|
|
48
|
-
|
|
49
|
-
<g transform="translate(16,64)">
|
|
50
|
-
<Edge source={linkSource} target={linkTarget} variant={'dash-xl'} />
|
|
51
|
-
</g>
|
|
52
|
-
</svg>
|
|
53
|
-
));
|
|
54
|
-
|
|
55
|
-
stories.add('Double', () => (
|
|
56
|
-
<svg height="800" width="800">
|
|
57
|
-
<g transform="translate(16,16)">
|
|
58
|
-
<Edge source={linkSource} target={linkTarget} variant={'double'} />
|
|
59
|
-
</g>
|
|
60
|
-
</svg>
|
|
61
|
-
));
|
|
62
|
-
|
|
63
|
-
stories.add('Tunnel', () => (
|
|
64
|
-
<svg height="800" width="800">
|
|
65
|
-
<g transform="translate(16,16)">
|
|
66
|
-
<Edge source={linkSource} target={linkTarget} variant={'tunnel'} />
|
|
67
|
-
</g>
|
|
68
|
-
</svg>
|
|
69
|
-
));
|
|
70
|
-
|
|
71
|
-
stories.add('Elbow', () => (
|
|
72
|
-
<svg height="800" width="800">
|
|
73
|
-
<g transform="translate(16,16)">
|
|
74
|
-
<Edge path={buildElbowPathString(linkSource, linkTargetCurve)} />
|
|
75
|
-
</g>
|
|
76
|
-
</svg>
|
|
77
|
-
));
|
|
78
|
-
|
|
79
|
-
stories.add('Bezier', () => (
|
|
80
|
-
<svg height="800" width="800">
|
|
81
|
-
<g transform="translate(16,16)">
|
|
82
|
-
<Edge
|
|
83
|
-
path={buildBezierPathString(
|
|
84
|
-
linkSource,
|
|
85
|
-
linkTargetCurve,
|
|
86
|
-
150,
|
|
87
|
-
280,
|
|
88
|
-
150,
|
|
89
|
-
30
|
|
90
|
-
)}
|
|
91
|
-
/>
|
|
92
|
-
</g>
|
|
93
|
-
</svg>
|
|
94
|
-
));
|