Skip to content

Commit e7b266f

Browse files
authored
forgo/forgo#59: Updated for the final release of the new component API (#5)
Co-authored-by: spiffytech <[email protected]>
1 parent 1b1e4c2 commit e7b266f

12 files changed

+114
-118
lines changed

routing/package-lock.json

+17-31
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

routing/package.json

+2-2
Original file line numberDiff line numberDiff line change
@@ -2,8 +2,8 @@
22
"name": "forgo-examples",
33
"private": true,
44
"dependencies": {
5-
"forgo": "^3.1.0",
6-
"forgo-router": "1.0.0"
5+
"forgo": "^3.2.0-beta.0",
6+
"forgo-router": "1.3.0-beta.0"
77
},
88
"devDependencies": {
99
"@babel/core": "^7.12.10",

routing/src/index.tsx

+33-29
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,7 @@
1-
import { mount } from "forgo";
1+
import * as forgo from "forgo";
2+
import { mount, Component } from "forgo";
23
import { Router, matchUrl, matchExactUrl, Link } from "forgo-router";
4+
import type { ForgoNewComponentCtor } from "forgo";
35

46
type Customer = {
57
id: number;
@@ -13,8 +15,8 @@ const customers = [
1315
{ id: 3, name: "Deepsta", age: 42 },
1416
];
1517

16-
function App() {
17-
return {
18+
const App: ForgoNewComponentCtor = () => {
19+
return new Component({
1820
render() {
1921
return (
2022
<Router>
@@ -25,11 +27,11 @@ function App() {
2527
</Router>
2628
);
2729
},
28-
};
29-
}
30+
});
31+
};
3032

31-
function Home() {
32-
return {
33+
const Home: ForgoNewComponentCtor = () => {
34+
return new Component({
3335
render() {
3436
return (
3537
<div>
@@ -46,11 +48,11 @@ function Home() {
4648
</div>
4749
);
4850
},
49-
};
50-
}
51+
});
52+
};
5153

52-
function Customers() {
53-
return {
54+
const Customers: ForgoNewComponentCtor = () => {
55+
return new Component({
5456
render() {
5557
return (
5658
<div>
@@ -66,15 +68,15 @@ function Customers() {
6668
</div>
6769
);
6870
},
69-
};
70-
}
71+
});
72+
};
7173

72-
type CustomersProps = {
74+
interface CustomersProps {
7375
customers: Customer[];
74-
};
76+
}
7577

76-
export function CustomerList(props: CustomersProps) {
77-
return {
78+
export const CustomerList: ForgoNewComponentCtor<CustomersProps> = () => {
79+
return new Component({
7880
render(props: CustomersProps) {
7981
return (
8082
<div>
@@ -91,15 +93,17 @@ export function CustomerList(props: CustomersProps) {
9193
</div>
9294
);
9395
},
94-
};
95-
}
96+
});
97+
};
9698

97-
type CustomerDetailsProps = {
99+
interface CustomerDetailsProps {
98100
id: string;
99-
};
101+
}
100102

101-
export function CustomerDetails(props: CustomerDetailsProps) {
102-
return {
103+
export const CustomerDetails: ForgoNewComponentCtor<CustomerDetailsProps> = (
104+
props
105+
) => {
106+
return new Component({
103107
render(props: CustomerDetailsProps) {
104108
const customer = customers.find((c) => c.id.toString() === props.id);
105109
return (
@@ -116,11 +120,11 @@ export function CustomerDetails(props: CustomerDetailsProps) {
116120
</div>
117121
);
118122
},
119-
};
120-
}
123+
});
124+
};
121125

122-
export function AboutPage() {
123-
return {
126+
export const AboutPage: ForgoNewComponentCtor = () => {
127+
return new Component({
124128
render() {
125129
return (
126130
<div>
@@ -129,8 +133,8 @@ export function AboutPage() {
129133
</div>
130134
);
131135
},
132-
};
133-
}
136+
});
137+
};
134138

135139
function ready(fn: any) {
136140
if (document.readyState != "loading") {

routing/tsconfig.json

+3-2
Original file line numberDiff line numberDiff line change
@@ -9,8 +9,9 @@
99
"allowSyntheticDefaultImports": true,
1010
"sourceMap": true,
1111
"strict": true,
12-
"jsx": "react-jsx",
13-
"jsxImportSource": "forgo"
12+
"jsx": "react",
13+
"jsxFactory": "forgo.createElement",
14+
"jsxFragmentFactory": "forgo.Fragment"
1415
},
1516
"include": ["src/**/*.ts", "src/**/*.tsx"]
1617
}

timer/package-lock.json

+7-7
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

timer/package.json

+1-1
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22
"name": "forgo-examples",
33
"private": true,
44
"dependencies": {
5-
"forgo": "^3.1.0"
5+
"forgo": "^3.2.0-beta.0"
66
},
77
"devDependencies": {
88
"@babel/core": "^7.12.10",

timer/src/index.tsx

+9-8
Original file line numberDiff line numberDiff line change
@@ -1,23 +1,24 @@
1-
import { mount, rerender, ForgoRenderArgs } from "forgo";
1+
import * as forgo from "forgo";
2+
import { mount, rerender, Component } from "forgo";
3+
import type { ForgoNewComponentCtor } from "forgo";
24

35
/*
46
A timer component
57
*/
6-
export function Timer() {
8+
export const Timer: ForgoNewComponentCtor = () => {
79
let seconds = 0;
810

9-
return {
10-
render(props: any, args: ForgoRenderArgs) {
11+
return new Component({
12+
render(_props, component) {
1113
setTimeout(() => {
1214
seconds++;
13-
rerender(args.element);
15+
component.update();
1416
}, 1000);
1517

1618
return <div>{seconds} secs have elapsed...</div>;
1719
},
18-
};
19-
}
20-
20+
});
21+
};
2122

2223
window.addEventListener("load", () => {
2324
mount(<Timer />, document.getElementById("root"));

timer/tsconfig.json

+3-2
Original file line numberDiff line numberDiff line change
@@ -9,8 +9,9 @@
99
"allowSyntheticDefaultImports": true,
1010
"sourceMap": true,
1111
"strict": true,
12-
"jsx": "react-jsx",
13-
"jsxImportSource": "forgo"
12+
"jsx": "react",
13+
"jsxFactory": "forgo.createElement",
14+
"jsxFragmentFactory": "forgo.Fragment"
1415
},
1516
"include": ["src/**/*.ts", "src/**/*.tsx"]
1617
}

todos/package-lock.json

+7-7
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

todos/package.json

+1-1
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22
"name": "forgo-examples",
33
"private": true,
44
"dependencies": {
5-
"forgo": "^3.1.0"
5+
"forgo": "^3.2.0-beta.0"
66
},
77
"devDependencies": {
88
"@babel/core": "^7.12.10",

0 commit comments

Comments
 (0)