Skip to content
This repository was archived by the owner on Oct 16, 2024. It is now read-only.

Commit 434c1f0

Browse files
authored
Merge pull request #209 from agile-ts/outsource-react-hooks
Outsource react hooks
2 parents b15ce74 + 00954b4 commit 434c1f0

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

81 files changed

+1283
-900
lines changed

examples/react/develop/functional-component-ts/src/App.tsx

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
import React, { useEffect } from 'react';
22
import './App.css';
3-
import { useAgile, useWatcher, useProxy, useSelector } from '@agile-ts/react';
3+
import { useAgile, useWatcher, useSelector } from '@agile-ts/react';
4+
import { useProxy, useEvent } from '@agile-ts/react';
45
import {
56
COUNTUP,
67
externalCreatedItem,
@@ -14,7 +15,6 @@ import {
1415
} from './core';
1516
import { generateId } from '@agile-ts/utils';
1617
import { globalBind } from '@agile-ts/core';
17-
import { useEvent } from '@agile-ts/event';
1818

1919
let rerenderCount = 0;
2020
let rerenderCountInCountupView = 0;

examples/react/develop/functional-component-ts/yarn.lock

Lines changed: 19 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -3,41 +3,36 @@
33

44

55
"@agile-ts/api@file:.yalc/@agile-ts/api":
6-
version "0.0.21"
6+
version "0.0.23"
77
dependencies:
8-
"@agile-ts/utils" "^0.0.7"
8+
"@agile-ts/utils" "^0.0.9"
99

1010
"@agile-ts/core@file:.yalc/@agile-ts/core":
11-
version "0.2.0"
11+
version "0.2.5"
1212
dependencies:
13-
"@agile-ts/utils" "^0.0.8"
13+
"@agile-ts/utils" "^0.0.9"
1414

1515
"@agile-ts/event@file:.yalc/@agile-ts/event":
16-
version "0.0.10"
16+
version "0.0.12"
1717

1818
"@agile-ts/logger@file:.yalc/@agile-ts/logger":
19-
version "0.0.7"
19+
version "0.0.9"
2020
dependencies:
21-
"@agile-ts/utils" "^0.0.7"
21+
"@agile-ts/utils" "^0.0.9"
2222

2323
"@agile-ts/multieditor@file:.yalc/@agile-ts/multieditor":
24-
version "0.0.20"
24+
version "0.0.22"
2525

2626
"@agile-ts/proxytree@file:.yalc/@agile-ts/proxytree":
27-
version "0.0.5"
27+
version "0.0.7"
2828

2929
"@agile-ts/react@file:.yalc/@agile-ts/react":
30-
version "0.2.0"
30+
version "0.2.1"
3131

32-
"@agile-ts/utils@^0.0.7":
33-
version "0.0.7"
34-
resolved "https://registry.yarnpkg.com/@agile-ts/utils/-/utils-0.0.7.tgz#3dd1add6b9f63d0a5bf35e71f54ac46448ae047f"
35-
integrity sha512-OviTDC+ZbfyiUx8Gy8veS6YymC/tT6UeP23nT8V0EQV4F2MmuWqZ2yiKk+AYxZx8h74Ey8BVEUX6/ntpxhSNPw==
36-
37-
"@agile-ts/utils@^0.0.8":
38-
version "0.0.8"
39-
resolved "https://registry.yarnpkg.com/@agile-ts/utils/-/utils-0.0.8.tgz#ab9e1eeaddf282340936bddeb74421a2f77de804"
40-
integrity sha512-ex19gPIS5imgV+rzs5HE2CNAIkQ162hPWH5u3HKNZnHiVU6FX62sikH5tG2oQocbDb7FkeB16D7v9ihQeuKYug==
32+
"@agile-ts/utils@^0.0.9":
33+
version "0.0.9"
34+
resolved "https://registry.yarnpkg.com/@agile-ts/utils/-/utils-0.0.9.tgz#b20d03cc450d1a916bb7d8836c3451cb06cc882c"
35+
integrity sha512-M9/QQjX+I5r11MwztfK371/kfInmJS7kLlAKmG8ZkgqG/x8LdCxD7tOTwqMa9Dc1p1ZJqSvNzL/Y8l7boi/3IQ==
4136

4237
"@babel/code-frame@7.8.3":
4338
version "7.8.3"
@@ -1221,6 +1216,11 @@
12211216
dependencies:
12221217
"@hapi/hoek" "^8.3.0"
12231218

1219+
"@hookform/resolvers@^2.8.1":
1220+
version "2.8.1"
1221+
resolved "https://registry.yarnpkg.com/@hookform/resolvers/-/resolvers-2.8.1.tgz#0d4fdd25bdeb4b98bf4e177c63fc4efa173454dd"
1222+
integrity sha512-U5lgaCkvD+0e5X8iQmCHiF+jOqjTX6OHUA7zPdeIHI6xdAOoi3rH9MKNuwMwv5Hly2LL6XtDgDkS/k+YG9hOew==
1223+
12241224
"@jest/console@^24.7.1", "@jest/console@^24.9.0":
12251225
version "24.9.0"
12261226
resolved "https://registry.yarnpkg.com/@jest/console/-/console-24.9.0.tgz#79b1bc06fb74a8cfb01cbdedf945584b1b9707f0"

examples/react/develop/multieditor-ts/package.json

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -7,20 +7,20 @@
77
"@agile-ts/multieditor": "file:.yalc/@agile-ts/multieditor",
88
"@agile-ts/react": "file:.yalc/@agile-ts/react",
99
"material-ui": "^0.20.2",
10-
"react": "^16.13.1",
11-
"react-dom": "^16.13.1",
10+
"react": "^17.0.2",
11+
"react-dom": "^17.0.2",
1212
"react-router-dom": "^5.2.0",
1313
"react-scripts": "3.4.3",
14-
"typescript": "^3.9.7",
14+
"typescript": "^4.4.3",
1515
"yup": "^0.32.9"
1616
},
1717
"devDependencies": {
1818
"@testing-library/react": "^9.3.2",
1919
"@testing-library/user-event": "^7.1.2",
20-
"@types/node": "^12.0.0",
21-
"@types/react": "^16.9.0",
22-
"@types/react-dom": "^16.9.0",
23-
"@types/react-router-dom": "^5.1.5",
20+
"@types/node": "^16.10.1",
21+
"@types/react": "^17.0.24",
22+
"@types/react-dom": "^17.0.9",
23+
"@types/react-router-dom": "^5.3.0",
2424
"source-map-explorer": "^2.5.2"
2525
},
2626
"scripts": {

examples/react/develop/multieditor-ts/src/App.css

Lines changed: 4 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
body {
2-
background: #0e101c;
2+
background: #202026;
33
font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", "Roboto", "Oxygen",
44
"Ubuntu", "Cantarell", "Fira Sans", "Droid Sans", "Helvetica Neue",
55
sans-serif;
@@ -22,12 +22,6 @@ p {
2222
color: white;
2323
}
2424

25-
.form {
26-
background: #0e101c;
27-
max-width: 400px;
28-
margin: 0 auto;
29-
}
30-
3125
.error {
3226
color: #bf1650;
3327
}
@@ -60,16 +54,13 @@ label {
6054
font-weight: 200;
6155
}
6256

63-
.App {
64-
max-width: 600px;
65-
margin: 0 auto;
66-
}
67-
57+
input[type="submit"],
6858
button {
59+
background: #8481af;
6960
display: block;
7061
appearance: none;
7162
margin-top: 40px;
72-
border: 1px solid #333;
63+
border: 1px solid #4a4872;
7364
margin-bottom: 20px;
7465
text-transform: uppercase;
7566
padding: 10px 20px;

examples/react/develop/multieditor-ts/src/App.tsx

Lines changed: 25 additions & 56 deletions
Original file line numberDiff line numberDiff line change
@@ -1,38 +1,31 @@
11
import React from 'react';
22
import './App.css';
33
import ErrorMessage from './components/ErrorMessage';
4-
import { useAgile } from '@agile-ts/react';
4+
import { useMultieditor } from '@agile-ts/react';
55
import { signUpEditor } from './core/signUpEditor';
66
import { generateColor, generateId } from './core/utils';
77

88
let renderCount = 0;
99

1010
const App = () => {
11-
useAgile(signUpEditor.deps);
11+
const { submit, status, insertItem } = useMultieditor(signUpEditor);
1212

1313
renderCount++;
1414

1515
return (
16-
<form>
16+
<form
17+
onSubmit={(event) => {
18+
event.preventDefault();
19+
submit();
20+
}}>
1721
<h1>Sign Up</h1>
1822
<label>First Name:</label>
19-
<input
20-
onChange={(e) => signUpEditor.setValue('firstName', e.target.value)}
21-
defaultValue={signUpEditor.getItemInitialValue('firstName')}
22-
/>
23-
<ErrorMessage error={signUpEditor.getStatus('firstName')?.message} />
23+
<input {...insertItem('firstName')} />
24+
<ErrorMessage error={status('firstName')?.message} />
2425

2526
<label>Last Name:</label>
26-
<input
27-
onChange={(e) =>
28-
signUpEditor.setValue('lastName', e.target.value, {
29-
background: false,
30-
})
31-
}
32-
defaultValue={signUpEditor.getItemInitialValue('lastName')}
33-
value={signUpEditor.getItemValue('lastName')}
34-
/>
35-
<ErrorMessage error={signUpEditor.getStatus('lastName')?.message} />
27+
<input {...insertItem('lastName')} />
28+
<ErrorMessage error={status('lastName')?.message} />
3629

3730
<label>Image</label>
3831
<div
@@ -48,6 +41,7 @@ const App = () => {
4841
<button
4942
style={{ marginLeft: 50 }}
5043
onClick={(event) => {
44+
event.preventDefault();
5145
signUpEditor.setValue(
5246
'image',
5347
{
@@ -56,63 +50,38 @@ const App = () => {
5650
},
5751
{ background: false }
5852
);
59-
event.preventDefault();
6053
}}>
6154
Reset Image
6255
</button>
6356
</div>
64-
<ErrorMessage error={signUpEditor.getStatus('image')?.message} />
57+
<ErrorMessage error={status('image')?.message} />
6558

6659
<label>Gender</label>
67-
<select
68-
defaultValue={''}
69-
onChange={(e) => signUpEditor.setValue('gender', e.target.value)}>
60+
<select {...insertItem('gender')}>
7061
<option value={''}>Select...</option>
7162
<option value="male">Male</option>
7263
<option value="female">Female</option>
7364
</select>
74-
<ErrorMessage error={signUpEditor.getStatus('gender')?.message} />
65+
<ErrorMessage error={status('gender')?.message} />
7566

7667
<label>Username</label>
77-
<input
78-
onChange={(e) => signUpEditor.setValue('userName', e.target.value)}
79-
defaultValue={signUpEditor.getItemInitialValue('userName')}
80-
/>
81-
<ErrorMessage error={signUpEditor.getStatus('userName')?.message} />
68+
<input {...insertItem('userName')} />
69+
<ErrorMessage error={status('userName')?.message} />
8270

8371
<label>Email</label>
84-
<input
85-
onChange={(e) => signUpEditor.setValue('email', e.target.value)}
86-
defaultValue={signUpEditor.getItemInitialValue('email')}
87-
/>
88-
<ErrorMessage error={signUpEditor.getStatus('email')?.message} />
72+
<input {...insertItem('email')} />
73+
<ErrorMessage error={status('email')?.message} />
8974

9075
<label>Age</label>
91-
<input
92-
onChange={(e) =>
93-
signUpEditor.setValue('age', e.target.value, { background: false })
94-
}
95-
defaultValue={signUpEditor.getItemInitialValue('age')}
96-
value={signUpEditor.getItemValue('age')}
97-
/>
98-
<ErrorMessage error={signUpEditor.getStatus('age')?.message} />
76+
<input {...insertItem('age')} />
77+
<ErrorMessage error={status('age')?.message} />
9978

10079
<label>About you</label>
101-
<textarea
102-
onChange={(e) => signUpEditor.setValue('aboutYou', e.target.value)}
103-
defaultValue={signUpEditor.getItemInitialValue('aboutYou')}
104-
/>
105-
<ErrorMessage error={signUpEditor.getStatus('aboutYou')?.message} />
80+
<textarea {...insertItem('aboutYou')} />
81+
<ErrorMessage error={status('aboutYou')?.message} />
82+
83+
<input type="submit" />
10684

107-
<button
108-
style={{ marginLeft: 50 }}
109-
onClick={async (event) => {
110-
event.preventDefault();
111-
console.log(signUpEditor);
112-
await signUpEditor.submit();
113-
}}>
114-
Submit
115-
</button>
11685
<p>Is Modified: {signUpEditor.isModified.toString()}</p>
11786
<p>Is Valid: {signUpEditor.isValid.toString()}</p>
11887
<p>Render Count: {renderCount}</p>

examples/react/develop/multieditor-ts/src/core/signUpEditor.ts

Lines changed: 17 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,22 @@ export const isValidNameValidator = agileResolver(
2727
matchesRegex(/^([^0-9]*)$/, 'No Numbers allowed!')
2828
);
2929

30-
export const signUpEditor = createMultieditor((editor) => ({
30+
export interface InitialDataInterface {
31+
id: string;
32+
firstName: string;
33+
lastName: string;
34+
gender: string | undefined;
35+
userName: string;
36+
email: string;
37+
age: number | undefined;
38+
aboutYou: string;
39+
image: {
40+
id: string;
41+
color: string;
42+
};
43+
}
44+
45+
export const signUpEditor = createMultieditor<InitialDataInterface>({
3146
initialData: {
3247
id: 'myCoolId',
3348
firstName: 'Jeff',
@@ -103,7 +118,7 @@ export const signUpEditor = createMultieditor((editor) => ({
103118
},
104119
fixedProperties: ['id'],
105120
reValidateMode: 'onChange',
106-
}));
121+
});
107122

108123
// For better debugging
109124
globalBind('__core__', { signUpEditor });

0 commit comments

Comments
 (0)