Skip to content

Commit 5a5cc41

Browse files
authored
Merge pull request #437 from data-driven-forms/add-testing-guide-to-docs
Added new examples package with renderer test.
2 parents 0f32950 + 2c1a850 commit 5a5cc41

File tree

17 files changed

+878
-1
lines changed

17 files changed

+878
-1
lines changed

packages/examples/.gitignore

Lines changed: 68 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,68 @@
1+
# Logs
2+
logs
3+
*.log
4+
npm-debug.log*
5+
yarn-debug.log*
6+
yarn-error.log*
7+
8+
# Runtime data
9+
pids
10+
*.pid
11+
*.seed
12+
*.pid.lock
13+
.vscode
14+
15+
# Directory for instrumented libs generated by jscoverage/JSCover
16+
lib-cov
17+
18+
# Coverage directory used by tools like istanbul
19+
coverage
20+
21+
# nyc test coverage
22+
.nyc_output
23+
24+
# Grunt intermediate storage (http://gruntjs.com/creating-plugins#storing-task-files)
25+
.grunt
26+
27+
# Bower dependency directory (https://bower.io/)
28+
bower_components
29+
30+
# node-waf configuration
31+
.lock-wscript
32+
33+
# Compiled binary addons (https://nodejs.org/api/addons.html)
34+
build/Release
35+
36+
# Dependency directories
37+
node_modules/
38+
jspm_packages/
39+
40+
# TypeScript v1 declaration files
41+
typings/
42+
43+
# Optional npm cache directory
44+
.npm
45+
46+
# Optional eslint cache
47+
.eslintcache
48+
49+
# Optional REPL history
50+
.node_repl_history
51+
52+
# Output of 'npm pack'
53+
*.tgz
54+
55+
# Yarn files
56+
.yarn-integrity
57+
yarn.lock
58+
59+
# dotenv environment variables file
60+
.env
61+
62+
# next.js build output
63+
.next
64+
65+
# build output
66+
dist
67+
public
68+
vendor

packages/examples/LICENSE

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
../../LICENSE

packages/examples/README.md

Lines changed: 33 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,33 @@
1+
[![Data Driven Form logo](images/logo.png)](https://data-driven-forms.org/)
2+
3+
# `@data-driven-forms/common` - common code shared by multiple `@data-driven-forms/*` packages
4+
5+
This package exists to share code used by more than one data-driven-forms package, such as:
6+
7+
* shared interfaces - propTypes
8+
* common mapper code - `condition` implementation
9+
10+
11+
## Usage
12+
13+
```
14+
const common = require('@data-driven-forms/common');
15+
16+
// shared props
17+
function MyComponent() {...}
18+
19+
MyComponent.propTypes = {
20+
...common.children.propTypes,
21+
isMulti: PropTypes.bool.isRequired,
22+
};
23+
24+
MyComponent.defaultProps = {
25+
...common.children.defaultProps,
26+
};
27+
28+
// condition code
29+
common.condition.evaluate({
30+
when: "field",
31+
in: ["foo", "bar"],
32+
}, { field: "baz" }); // false
33+
```

packages/examples/babel.config.js

Lines changed: 172 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,172 @@
1+
require.extensions['.css'] = () => undefined;
2+
const path = require('path');
3+
const glob = require('glob');
4+
5+
const mapper = {
6+
TextVariants: 'Text',
7+
ButtonVariant: 'Button',
8+
DropdownPosition: 'dropdownConstants',
9+
TextListVariants: 'TextList',
10+
TextListItemVariants: 'TextListItem'
11+
};
12+
13+
module.exports = {
14+
extends: '../../babel.config.js',
15+
env: {
16+
cjs: {
17+
plugins: [
18+
[
19+
'transform-imports',
20+
{
21+
'@patternfly/react-core': {
22+
transform: (importName) => {
23+
let res;
24+
const files = glob.sync(
25+
path.resolve(__dirname, `../../node_modules/@patternfly/react-core/dist/js/**/${mapper[importName] || importName}.js`)
26+
);
27+
if (files.length > 0) {
28+
res = files[0];
29+
} else {
30+
throw new Error(`File with importName ${importName} does not exist`);
31+
}
32+
33+
res = res.replace(path.resolve(__dirname, '../../node_modules/'), '');
34+
res = res.replace(/^\//, '');
35+
return res;
36+
},
37+
preventFullImport: false,
38+
skipDefaultConversion: true
39+
}
40+
},
41+
'react-core-CJS'
42+
],
43+
[
44+
'transform-imports',
45+
{
46+
'@patternfly/react-icons': {
47+
transform: (importName) =>
48+
`@patternfly/react-icons/dist/js/icons/${importName
49+
.split(/(?=[A-Z])/)
50+
.join('-')
51+
.toLowerCase()}`,
52+
preventFullImport: true
53+
}
54+
},
55+
'react-icons-CJS'
56+
],
57+
[
58+
'transform-imports',
59+
{
60+
'patternfly-react': {
61+
transform: (importName) => {
62+
let res;
63+
const files = glob.sync(path.resolve(__dirname, `../../node_modules/patternfly-react/dist/js/**/${importName}.js`));
64+
if (files.length > 0) {
65+
res = files[0];
66+
} else {
67+
throw new Error(`File with importName ${importName} does not exist`);
68+
}
69+
70+
res = res.replace(path.resolve(__dirname, '../../node_modules/'), '');
71+
res = res.replace(/^\//, '');
72+
return res;
73+
},
74+
preventFullImport: false,
75+
skipDefaultConversion: false
76+
}
77+
},
78+
'pf3-react-CJS'
79+
],
80+
[
81+
'transform-imports',
82+
{
83+
'@material-ui/core': {
84+
transform: (importName) => `@material-ui/core/${importName}`,
85+
preventFullImport: false,
86+
skipDefaultConversion: false
87+
}
88+
},
89+
'MUI-CJS'
90+
]
91+
]
92+
},
93+
esm: {
94+
plugins: [
95+
[
96+
'transform-imports',
97+
{
98+
'@patternfly/react-core': {
99+
transform: (importName) => {
100+
let res;
101+
const files = glob.sync(
102+
path.resolve(__dirname, `../../node_modules/@patternfly/react-core/dist/esm/**/${mapper[importName] || importName}.js`)
103+
);
104+
if (files.length > 0) {
105+
res = files[0];
106+
} else {
107+
throw new Error(`File with importName ${importName} does not exist`);
108+
}
109+
110+
res = res.replace(path.resolve(__dirname, '../../node_modules/'), '');
111+
res = res.replace(/^\//, '');
112+
return res;
113+
},
114+
preventFullImport: false,
115+
skipDefaultConversion: true
116+
}
117+
},
118+
'react-core-ESM'
119+
],
120+
121+
[
122+
'transform-imports',
123+
{
124+
'@patternfly/react-icons': {
125+
transform: (importName) =>
126+
`@patternfly/react-icons/dist/esm/icons/${importName
127+
.split(/(?=[A-Z])/)
128+
.join('-')
129+
.toLowerCase()}`,
130+
preventFullImport: true
131+
}
132+
},
133+
'react-icons-ESM'
134+
],
135+
[
136+
'transform-imports',
137+
{
138+
'patternfly-react': {
139+
transform: (importName) => {
140+
let res;
141+
const files = glob.sync(path.resolve(__dirname, `../../node_modules/patternfly-react/dist/esm/**/${importName}.js`));
142+
if (files.length > 0) {
143+
res = files[0];
144+
} else {
145+
throw new Error(`File with importName ${importName} does not exist`);
146+
}
147+
148+
res = res.replace(path.resolve(__dirname, '../../node_modules/'), '');
149+
res = res.replace(/^\//, '');
150+
return res;
151+
},
152+
preventFullImport: false,
153+
skipDefaultConversion: false
154+
}
155+
},
156+
'pf3-react-ESM'
157+
],
158+
[
159+
'transform-imports',
160+
{
161+
'@material-ui/core': {
162+
transform: (importName) => `@material-ui/core/esm/${importName}`,
163+
preventFullImport: false,
164+
skipDefaultConversion: false
165+
}
166+
},
167+
'MUI-ESM'
168+
]
169+
]
170+
}
171+
}
172+
};
Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
import { configure } from 'enzyme';
2+
import Adapter from 'enzyme-adapter-react-16';
3+
4+
configure({ adapter: new Adapter() });

packages/examples/package.json

Lines changed: 54 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,54 @@
1+
{
2+
"name": "@data-driven-forms/examples",
3+
"version": "1.0.0",
4+
"description": "code examples for tests and docs",
5+
"license": "Apache-2.0",
6+
"main": "index.js",
7+
"scripts": {},
8+
"private": true,
9+
"repository": "[email protected]:data-driven-forms/react-forms.git",
10+
"devDependencies": {
11+
"@babel/core": "^7.2.2",
12+
"@babel/plugin-syntax-dynamic-import": "^7.0.0",
13+
"@babel/preset-env": "^7.1.6",
14+
"@babel/preset-react": "^7.0.0",
15+
"babel-core": "^7.0.0-bridge.0",
16+
"babel-eslint": "9.x",
17+
"babel-jest": "^23.6.0",
18+
"babel-loader": "^8.0.4",
19+
"babel-plugin-lodash": "^3.3.4",
20+
"css-loader": "^1.0.1",
21+
"enzyme": "^3.7.0",
22+
"enzyme-adapter-react-16": "^1.7.0",
23+
"enzyme-to-json": "^3.3.4",
24+
"html-webpack-plugin": "^3.2.0",
25+
"mini-css-extract-plugin": "^0.4.4",
26+
"node-sass": "^4.10.0",
27+
"prop-types": "^15.6.2",
28+
"react": "^16.13.0",
29+
"react-dom": "^16.13.0",
30+
"regenerator-runtime": "^0.12.1",
31+
"resolve-url-loader": "^3.0.0",
32+
"sass-loader": "^7.1.0",
33+
"semantic-release": "15.12.0",
34+
"style-loader": "^0.23.1",
35+
"url-loader": "^1.1.2",
36+
"webpack": "^4.25.1",
37+
"webpack-cli": "^3.1.2",
38+
"webpack-dev-server": "^3.1.10",
39+
"webpack-merge": "^4.1.4"
40+
},
41+
"dependencies": {
42+
"@babel/plugin-proposal-class-properties": "^7.1.0",
43+
"@data-driven-forms/react-form-renderer": "*",
44+
"@data-driven-forms/mui-component-mapper": "*",
45+
"awesome-debounce-promise": "^2.1.0",
46+
"clsx": "^1.0.4",
47+
"lodash": "^4.17.15",
48+
"react-select": "^3.0.8"
49+
},
50+
"peerDependencies": {
51+
"react": "^16.13.0",
52+
"react-dom": "^16.13.0"
53+
}
54+
}

packages/examples/src/tests/.eslintrc

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
{
2+
"env": {
3+
"jasmine": true
4+
},
5+
"rules": {
6+
"react/prop-types": "off"
7+
}
8+
}

0 commit comments

Comments
 (0)