Skip to content

Commit 2bb55dc

Browse files
committed
[fix] invalid Navigator links & Stage-2.7 badge color
[optimize] simplify models based on MobX-RESTful 1.0 [optimize] update Upstream packages
1 parent df02902 commit 2bb55dc

File tree

8 files changed

+206
-143
lines changed

8 files changed

+206
-143
lines changed

package.json

+5-4
Original file line numberDiff line numberDiff line change
@@ -14,16 +14,17 @@
1414
"pack-dist": "npm run clean && parcel build source/index.html --public-url .",
1515
"pack-sw": "rm -f dist/sw.js.map && workbox generateSW",
1616
"start": "npm run clean && parcel source/index.html --open",
17-
"test": "lint-staged"
17+
"test": "lint-staged && tsc --noEmit"
1818
},
1919
"dependencies": {
2020
"boot-cell": "^2.0.0-beta.29",
2121
"browser-unhandled-rejection": "^1.0.2",
22-
"cell-router": "^3.0.0-rc.7",
22+
"cell-router": "^3.0.0-rc.8",
2323
"classnames": "^2.5.1",
2424
"dom-renderer": "^2.1.8",
2525
"koajax": "^1.1.2",
2626
"mobx": "^6.12.4",
27+
"mobx-restful": "^1.0.0",
2728
"web-cell": "^3.0.0-rc.16",
2829
"web-utility": "^4.4.0"
2930
},
@@ -33,14 +34,14 @@
3334
"@parcel/transformer-less": "2.12.0",
3435
"@parcel/transformer-typescript-tsc": "~2.12.0",
3536
"@parcel/transformer-webmanifest": "~2.12.0",
36-
"@types/node": "^18.19.36",
37+
"@types/node": "^18.19.37",
3738
"husky": "^9.0.11",
3839
"lint-staged": "^15.2.7",
3940
"parcel": "~2.12.0",
4041
"postcss": "^8.4.38",
4142
"postcss-modules": "^4.3.1",
4243
"prettier": "^3.3.2",
43-
"typescript": "~5.4.5",
44+
"typescript": "~5.5.2",
4445
"workbox-cli": "^7.1.0"
4546
}
4647
}

pnpm-lock.yaml

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

source/data/navigator-menu.ts

+6-2
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@ export const topMenu: NavMenu[] = [
1010
{
1111
title: '中文讨论',
1212
target: '_blank',
13-
href: 'https://github.com/JSCIG/es-discuss/discussions',
13+
href: 'https://github.com/orgs/JSCIG/discussions',
1414
},
1515
{ title: '开放组织', target: '_blank', href: 'https://github.com/JSCIG' },
1616
{
@@ -43,7 +43,11 @@ export const topMenu: NavMenu[] = [
4343
target: '_blank',
4444
href: 'https://compat-table.github.io/compat-table/es6/',
4545
},
46-
{ title: 'ES 6 学习', target: '_blank', href: 'http://es6-features.org/' },
46+
{
47+
title: 'ES 6 学习',
48+
target: '_blank',
49+
href: 'https://rse.github.io/es6-features/',
50+
},
4751
{ title: '技术委员会', target: '_blank', href: 'https://tc39.es/' },
4852
{
4953
title: '标准补丁',

source/model/Member.ts

+3-8
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
import { observable } from 'mobx';
2+
import { BaseModel, toggle } from 'mobx-restful';
23

34
import { service } from './service';
45

@@ -8,21 +9,15 @@ export type Member = Record<
89
> &
910
Partial<Record<'bio' | 'location' | 'company', string>>;
1011

11-
export class MemberModel {
12-
@observable
13-
accessor loading = false;
14-
12+
export class MemberModel extends BaseModel {
1513
@observable
1614
accessor list: Member[] = [];
1715

16+
@toggle('downloading')
1817
async getList() {
19-
this.loading = true;
20-
2118
const { body } = await service.get<Member[]>(
2219
'https://jscig.github.io/dataset/members-jscig.json',
2320
);
24-
this.loading = false;
25-
2621
return (this.list = body);
2722
}
2823
}

source/model/Proposal.ts

+6-9
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
import { observable, reaction } from 'mobx';
2+
import { BaseModel, toggle } from 'mobx-restful';
23

34
import { service } from './service';
45
import { Member } from './Member';
@@ -34,29 +35,27 @@ export type ProposalSortKey =
3435
| `${'stargazers' | 'open_issues'}_count`
3536
| 'meeting_at';
3637

37-
export class ProposalModel {
38-
@observable
39-
accessor loading = false;
40-
38+
export class ProposalModel extends BaseModel {
4139
@observable
4240
accessor list: Proposal[] = [];
4341

4442
@observable
45-
accessor sortKey: ProposalSortKey;
43+
accessor sortKey: ProposalSortKey | undefined;
4644

4745
@observable
4846
accessor finishedList: Proposal[] = [];
4947

5048
constructor() {
49+
super();
50+
5151
reaction(
5252
() => this.sortKey,
5353
key => this.sortBy(key),
5454
);
5555
}
5656

57+
@toggle('downloading')
5758
async getList() {
58-
this.loading = true;
59-
6059
const { body } = await service.get<Proposal[]>(
6160
'dataset/proposals.min.json',
6261
);
@@ -77,8 +76,6 @@ export class ProposalModel {
7776
[[], []] as Proposal[][],
7877
);
7978

80-
this.loading = false;
81-
8279
return (this.finishedList = finished), (this.list = processing);
8380
}
8481

source/page/Main.tsx

+2-2
Original file line numberDiff line numberDiff line change
@@ -193,13 +193,13 @@ export class MainPage extends HTMLElement {
193193

194194
<h2 className="my-5 text-center">JSCIG 成员</h2>
195195

196-
<SpinnerBox className="row" cover={member.loading}>
196+
<SpinnerBox className="row" cover={member.downloading > 0}>
197197
{member.list.map(this.renderMember)}
198198
</SpinnerBox>
199199

200200
<h2 className="my-5 text-center">TC39 既成提案</h2>
201201

202-
<SpinnerBox className="row" cover={proposal.loading}>
202+
<SpinnerBox className="row" cover={proposal.downloading > 0}>
203203
{proposal.finishedList.map(this.renderProposal)}
204204
</SpinnerBox>
205205
</>

source/page/Proposal.tsx

+3-4
Original file line numberDiff line numberDiff line change
@@ -179,7 +179,7 @@ export class ProposalPage extends HTMLElement {
179179
className="stretched-link"
180180
type="badge"
181181
// @ts-ignore
182-
bg={StageMap[stage + 1]}
182+
bg={StageMap[stage + 1] || 'dark'}
183183
path="proposals"
184184
filter="stage"
185185
value={stage}
@@ -232,14 +232,13 @@ export class ProposalPage extends HTMLElement {
232232
);
233233

234234
render() {
235-
const { stage, author, champion, data } = this,
236-
{ loading } = proposal;
235+
const { stage, author, champion, data } = this;
237236

238237
return (
239238
<>
240239
<h1 className="text-center py-3">ECMAScript 标准提案</h1>
241240

242-
<SpinnerBox className={style.box} cover={loading}>
241+
<SpinnerBox className={style.box} cover={proposal.downloading > 0}>
243242
<p className="text-center text-muted">
244243
{stage != null ? `处于 Stage ${stage} 的` : null}
245244
{author && `${author} 提交的`}

tsconfig.json

+2-1
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@
1010
"jsx": "react-jsx",
1111
"jsxImportSource": "dom-renderer",
1212
"lib": ["ES2023", "DOM"],
13+
"skipLibCheck": true
1314
},
14-
"include": ["source/**/*"],
15+
"include": ["source/**/*"]
1516
}

0 commit comments

Comments
 (0)