Skip to content

Commit fa7d35c

Browse files
committed
Add a button to generate code sandbox
1 parent 0c95c1a commit fa7d35c

File tree

3 files changed

+613
-55
lines changed

3 files changed

+613
-55
lines changed

packages/react-renderer-demo/package.json

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -36,6 +36,7 @@
3636
"@patternfly/react-tokens": "^2.5.1",
3737
"brace": "^0.11.1",
3838
"clsx": "^1.0.4",
39+
"codesandbox": "2.1.14",
3940
"firebase-admin": "^8.5.0",
4041
"firebase-functions": "^2.1.0",
4142
"markdown-to-jsx": "^6.10.3",

packages/react-renderer-demo/src/app/src/components/code-example.js

Lines changed: 43 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@ import ExpansionPanelDetails from '@material-ui/core/ExpansionPanelDetails';
1313
import Paper from '@material-ui/core/Paper';
1414
import clsx from 'clsx';
1515
import grey from '@material-ui/core/colors/grey';
16+
import { getParameters } from 'codesandbox/lib/api/define';
1617

1718
import GhIcon from './common/gh-svg-icon';
1819

@@ -53,6 +54,44 @@ const useStyles = makeStyles((theme) => ({
5354
}
5455
}));
5556

57+
const payload = getParameters({
58+
files: {
59+
'public/index.html': {
60+
content:
61+
'<!DOCTYPE html>\n<html lang="en">\n <head>\n <meta charset="utf-8" />\n <meta\n name="viewport"\n content="width=device-width, initial-scale=1, shrink-to-fit=no"\n />\n <meta name="theme-color" content="#000000" />\n <link rel="manifest" href="%PUBLIC_URL%/manifest.json" />\n <link rel="shortcut icon" href="%PUBLIC_URL%/favicon.ico" />\n <title>Data driven forms example</title>\n\n <!--<link rel="stylesheet" href="https://fonts.googleapis.com/css?family=Roboto:300,400,500">-->\n\n <!--<link rel="stylesheet" type="text/css" href="https://unpkg.com/@patternfly/[email protected]/patternfly-base.css"/>-->\n <!--<link rel="stylesheet" type="text/css" href="https://unpkg.com/@patternfly/[email protected]/patternfly-addons.css"/>-->\n </head>\n\n <body>\n <noscript>\n You need to enable JavaScript to run this app.\n </noscript>\n <div id="root"></div>\n </body>\n</html>\n'
62+
},
63+
'package.json': {
64+
content: {
65+
name: 'data-driven-forms-example',
66+
version: '1.0.0',
67+
description: '',
68+
keywords: [],
69+
main: 'src/index.js',
70+
dependencies: {
71+
'@data-driven-forms/mui-component-mapper': '2.1.2',
72+
'@data-driven-forms/pf4-component-mapper': '2.1.2',
73+
'@data-driven-forms/react-form-renderer': '2.1.2',
74+
react: '16.12.0',
75+
'react-dom': '16.12.0',
76+
'react-scripts': '3.0.1'
77+
},
78+
devDependencies: { typescript: '3.8.3' },
79+
scripts: { start: 'react-scripts start', build: 'react-scripts build', test: 'react-scripts test --env=jsdom', eject: 'react-scripts eject' },
80+
browserslist: ['>0.2%', 'not dead', 'not ie <= 11', 'not op_mini all']
81+
}
82+
},
83+
'src/index.js': {
84+
content:
85+
'import React from "react";\nimport ReactDOM from "react-dom";\n\nimport App from "./App";\n\nconst rootElement = document.getElementById("root");\nReactDOM.render(\n <React.StrictMode>\n <App />\n </React.StrictMode>,\n rootElement\n);\n'
86+
},
87+
'src/App.js': {
88+
content: 'import React from "react";\n\nexport default function App() {\n return <div>there will be dragons</div>;\n}\n'
89+
}
90+
}
91+
});
92+
93+
console.log(payload);
94+
5695
const CodeExample = ({ source, mode }) => {
5796
const classes = useStyles();
5897
const codeSource = reqSource(`./${source}.js`).default;
@@ -67,6 +106,10 @@ const CodeExample = ({ source, mode }) => {
67106
<ExpansionPanelSummary className={classes.expansionPanelSummary} expandIcon={<CodeIcon />}>
68107
{Component && <Typography className={classes.heading}>{Component.name}</Typography>}
69108
<Box display="flex">
109+
<form action="https://codesandbox.io/api/v1/sandboxes/define" method="POST" target="_blank">
110+
<input type="hidden" name="parameters" value={payload} />
111+
<input type="submit" value="Open in sandbox" />
112+
</form>
70113
<Link
71114
href={`https://github.com/data-driven-forms/react-forms/tree/master/packages/react-renderer-demo/src/app/examples/${source}.js`}
72115
target="_blank"

0 commit comments

Comments
 (0)