agentcss 0.11.14 → 0.11.16
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/02-primitives/combobox/combobox.js +1 -1
- package/02-primitives/date-range/date-range.js +1 -1
- package/02-primitives/popover/demo.html +1 -1
- package/02-primitives/popover/popover.js +1 -1
- package/02-primitives/select/select.js +1 -1
- package/03-patterns/accordion/accordion.js +25 -5
- package/03-patterns/drawer/drawer.js +1 -1
- package/03-patterns/dropdown/dropdown.js +1 -1
- package/03-patterns/list/flip.js +1 -1
- package/03-patterns/nav/nav.js +6 -3
- package/03-patterns/nav/toc.js +1 -1
- package/03-patterns/overlay/overlay.js +1 -1
- package/03-patterns/pagination/demo.html +1 -1
- package/03-patterns/pagination/pagination.js +9 -3
- package/03-patterns/reveal/reveal.js +4 -1
- package/03-patterns/tabs/tabs.js +12 -3
- package/03-patterns/tooltip/tooltip.js +1 -1
- package/03-patterns/tree/tree.js +1 -1
- package/04-recipes/report/demo.html +2 -2
- package/09-assets/echarts-adapter/demo.html +5 -5
- package/09-assets/model-viewer/demo.html +2 -2
- package/API.md +37 -3
- package/CHANGELOG.md +221 -0
- package/CONTRIBUTING.md +2 -1
- package/README.zh-CN.md +1 -1
- package/START-HERE.md +5 -5
- package/ai/components.json +8 -4
- package/ai/deprecations.schema.json +2 -2
- package/dist/02-primitives/combobox/combobox.js +1 -1
- package/dist/02-primitives/date-range/date-range.js +1 -1
- package/dist/02-primitives/popover/popover.js +1 -1
- package/dist/02-primitives/select/select.js +1 -1
- package/dist/03-patterns/accordion/accordion.js +10 -4
- package/dist/03-patterns/drawer/drawer.js +1 -1
- package/dist/03-patterns/dropdown/dropdown.js +1 -1
- package/dist/03-patterns/list/flip.js +1 -1
- package/dist/03-patterns/nav/nav.js +4 -3
- package/dist/03-patterns/nav/toc.js +1 -1
- package/dist/03-patterns/overlay/overlay.js +1 -1
- package/dist/03-patterns/pagination/pagination.js +4 -3
- package/dist/03-patterns/reveal/reveal.js +2 -1
- package/dist/03-patterns/tabs/tabs.js +8 -3
- package/dist/03-patterns/tooltip/tooltip.js +1 -1
- package/dist/03-patterns/tree/tree.js +1 -1
- package/dist/COSTS.md +10 -10
- package/docs/ACCESSIBILITY.md +3 -3
- package/docs/DEPRECATIONS.md +128 -0
- package/esm/accordion.mjs +7 -0
- package/esm/combobox.mjs +7 -0
- package/esm/date-range.mjs +7 -0
- package/esm/drawer.mjs +7 -0
- package/esm/dropdown.mjs +7 -0
- package/esm/flip.mjs +7 -0
- package/esm/index.mjs +38 -0
- package/esm/nav.mjs +7 -0
- package/esm/overlay.mjs +7 -0
- package/esm/pagination.mjs +7 -0
- package/esm/popover.mjs +7 -0
- package/esm/reveal.mjs +7 -0
- package/esm/select.mjs +7 -0
- package/esm/tabs.mjs +7 -0
- package/esm/toc.mjs +7 -0
- package/esm/tooltip.mjs +7 -0
- package/esm/tree.mjs +7 -0
- package/index.html +1 -1
- package/package.json +10 -3
- package/types/index.d.ts +131 -1
|
@@ -0,0 +1,128 @@
|
|
|
1
|
+
# 弃用与移除
|
|
2
|
+
|
|
3
|
+
**一句话:我们删掉任何一个公开名字之前,它必须先在这个文件里出现过。**
|
|
4
|
+
|
|
5
|
+
这不是态度声明,是可以被机器验证的:登记册在 `ai/deprecations.json`,
|
|
6
|
+
本文的两个表格由 `05-audit/deprecation-doc-gate.py` 与登记册**双向比对** ——
|
|
7
|
+
少写一行、多写一行、版本号写错一个数字,门禁都红。
|
|
8
|
+
|
|
9
|
+
---
|
|
10
|
+
|
|
11
|
+
## 一 · 你会遇到的两件事
|
|
12
|
+
|
|
13
|
+
| 现象 | 含义 | 你该做什么 |
|
|
14
|
+
|---|---|---|
|
|
15
|
+
| 某个名字被列进下面的「表 A」 | 它**还能用**,但有一个明确的消失版本 | 在到那个版本之前换掉,或者钉住版本 |
|
|
16
|
+
| 某个名字在代码里没了 | 它必须在「表 B」里查得到 | 查不到 ⇒ 我们违约了,请开 issue |
|
|
17
|
+
|
|
18
|
+
「表 B」就是承诺的账本。它的存在本身就是约束:**没有登记就不能删**。
|
|
19
|
+
|
|
20
|
+
---
|
|
21
|
+
|
|
22
|
+
## 二 · 迁移窗口有多长
|
|
23
|
+
|
|
24
|
+
**至少跨一个次版本。**
|
|
25
|
+
|
|
26
|
+
具体说:`0.7.x` 里标为弃用的名字,最早到 `0.8.0` 才允许从代码里消失。
|
|
27
|
+
同一次版本内的修订号**不算窗口** —— 本库一天可能发好几个修订号,
|
|
28
|
+
用「修订号个数」当窗口等于没有窗口。
|
|
29
|
+
|
|
30
|
+
| 你看到的 | 它意味着 |
|
|
31
|
+
|---|---|
|
|
32
|
+
| `deprecatedIn: 0.7.7` · `removeIn: 0.8.0` | 从 0.7.7 起有替代方案;0.8.0 起原名字会消失 |
|
|
33
|
+
| 只有 `deprecatedIn`、没有 `removeIn` | 不会发生 —— 登记册要求两个都写,写不出 `removeIn` 就不许标弃用 |
|
|
34
|
+
|
|
35
|
+
> ⚠️ **诚实边界**:我们没有 codemod,也没有运行时告警(组件脚本不打印
|
|
36
|
+
> `console.warn` —— 在移动端 WebView 里那是纯噪音)。
|
|
37
|
+
> 所以这个窗口是**版本号承诺**,不是技术阻断。你能依赖的是
|
|
38
|
+
> 「在这个版本之前它不会消失」,不能依赖「用了会被警告」。
|
|
39
|
+
|
|
40
|
+
---
|
|
41
|
+
|
|
42
|
+
## 三 · 现在登记在案的
|
|
43
|
+
|
|
44
|
+
### 表 A · 迁窗中(还能用,但有截止版本)
|
|
45
|
+
|
|
46
|
+
| 名字 | 类型 | 弃用于 | 最早移除于 | 替代 | 说明 |
|
|
47
|
+
|---|---|---|---|---|---|
|
|
48
|
+
| (无) | | | | | 当前没有名字处于迁移窗口中 |
|
|
49
|
+
|
|
50
|
+
> 这张表是**空的**,而且它是真的空 —— 不是"还没整理"。
|
|
51
|
+
> 上一个走完流程的名字是 `state--delayed`,它已经按承诺在 `0.8.0` 消失,
|
|
52
|
+
> 所以现在躺在表 B 里。
|
|
53
|
+
|
|
54
|
+
### 表 B · 已移除
|
|
55
|
+
|
|
56
|
+
| 名字 | 类型 | 移除于 | 替代 | 说明 |
|
|
57
|
+
|---|---|---|---|---|
|
|
58
|
+
| `state--delayed` | class | 0.8.0 | —— | 这个类承诺了一个"延迟显现"的机制,但全库没有任何 JS 会去设置它依赖的 `data-state="shown"`,文档也没写。它读起来像本库已经实现了 —— 这类名字最危险:误会发生在读者脑子里,代码不会报错。想要延迟显现,自己给元素加 `data-state="shown"` 即可。 |
|
|
59
|
+
| `--measure` | token | 0.7.4 | `--measure-page` / `--measure-prose` | 这次移除发生在治理流程建立**之前**。补登在这里是为了让它不从历史里消失,不是把它洗成"走过流程" —— 那次就是没走。 |
|
|
60
|
+
|
|
61
|
+
---
|
|
62
|
+
|
|
63
|
+
## 四 · 我们管得住哪些名字,管不住哪些
|
|
64
|
+
|
|
65
|
+
名字分四类进基线。每类的取法都写在 `05-audit/deprecation-gate.py` 文件头,
|
|
66
|
+
这里只说你该关心什么:
|
|
67
|
+
|
|
68
|
+
| 类型 | 例子 | 抓得到 | 抓不到 |
|
|
69
|
+
|---|---|---|---|
|
|
70
|
+
| `token` | `--accent`、`--sp-3` | 删令牌、改名 | 令牌**默认值**变化(那不是"名字消失") |
|
|
71
|
+
| `class` | `.btn`、`btn--ghost`、`.accordion__item` | 删根类 / 变体 / 槽位 | 类名的**样式行为**变化 |
|
|
72
|
+
| `api` | `Select`、`Select.open`、`AccordionOptions.duration` | 删全局、删成员、删参数对象的字段 | 参数**语义**变化(同名不同类型) |
|
|
73
|
+
| `event` | `fl-change`、`fl-select` | 删/改事件名字面量 | `detail` 里字段的变化 |
|
|
74
|
+
|
|
75
|
+
**没进基线的(这是"没做",不是"量不了")**:
|
|
76
|
+
|
|
77
|
+
- `data-*` 属性名(`data-select-btn` 这类)。删它同样会让调用方静默失效,
|
|
78
|
+
但它们现在只被 `wiring` / `api-form` 这类**接线**门禁看着,不在废弃基线里。
|
|
79
|
+
- `detail` 里的字段、回调选项的**语义**、CSS 变量的**默认值**。
|
|
80
|
+
- 组件实例上的私有成员、闭包里的函数。
|
|
81
|
+
|
|
82
|
+
> 写这一节的目的不是免责,是把「我们承诺什么」的边界划清楚 ——
|
|
83
|
+
> 上表第四列写「抓不到」的,就是真的抓不到,不要按"应该没问题"理解。
|
|
84
|
+
|
|
85
|
+
---
|
|
86
|
+
|
|
87
|
+
## 五 · 如果我们要删一个名字,走这五步
|
|
88
|
+
|
|
89
|
+
1. **登记**:在 `ai/deprecations.json` 的 `planned` 里加一条,
|
|
90
|
+
写清 `deprecatedIn` / `removeIn` / `reason`。
|
|
91
|
+
`reason` 要回答「为什么它不该继续存在」,不是「我们要重构」。
|
|
92
|
+
2. **给替代**:能给就给 `replacement`。写不出替代方案的名字,
|
|
93
|
+
多半也不该急着删。
|
|
94
|
+
3. **写进本文的表 A**:一行,人读得懂的那种。
|
|
95
|
+
4. **到版本再删**:`VERSION` 推进到 `removeIn` 之后,才允许从代码里消失。
|
|
96
|
+
提前删会被判「提前删了」;到期不删会被判「承诺了却没删」。
|
|
97
|
+
5. **挪进表 B**:删完把这一行从表 A 移到表 B,保留 `removedIn`。
|
|
98
|
+
历史账不销毁 —— 基线(`ai/surface.baseline.json`)也是只增不减。
|
|
99
|
+
|
|
100
|
+
`reason` 写得含糊不算过关,但门禁**不判理由对不对**,只判它存不存在。
|
|
101
|
+
这部分靠 review,不假装自动化。
|
|
102
|
+
|
|
103
|
+
---
|
|
104
|
+
|
|
105
|
+
## 六 · 你自己怎么核
|
|
106
|
+
|
|
107
|
+
```bash
|
|
108
|
+
python 05-audit/deprecation-gate.py # 登记册与公开面是否自洽
|
|
109
|
+
python 05-audit/deprecation-gate.py --selftest # 判据本身抓不抓得到问题
|
|
110
|
+
python 05-audit/deprecation-doc-gate.py # 本文与登记册是否一致
|
|
111
|
+
```
|
|
112
|
+
|
|
113
|
+
三条都不需要浏览器,秒级返回。
|
|
114
|
+
|
|
115
|
+
---
|
|
116
|
+
|
|
117
|
+
## 七 · 为什么不索性承诺「0.x 期间一律不删」
|
|
118
|
+
|
|
119
|
+
因为那是空话。`0.x` 按 semver 本来就允许破坏性变更,写一句"绝不破坏"
|
|
120
|
+
只会让人以为可以长期依赖,然后在某次 `0.8.0` 里被打断 ——
|
|
121
|
+
比一开始就说清更伤人。
|
|
122
|
+
|
|
123
|
+
我们的承诺比 semver 严一档、比"绝不破坏"诚实一档:
|
|
124
|
+
|
|
125
|
+
- 公开**名字**的消失,必须先登记、必须跨一个次版本、必须给替代或说明为什么没有;
|
|
126
|
+
- 其余变化(样式、默认值、语义)仍可能在小版本里调整,那部分看 `CHANGELOG.md`。
|
|
127
|
+
|
|
128
|
+
到 `1.0.0` 之后这条政策不变,只是 `1.0` 之前的破坏性变更会整批在此结清。
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
/* ⚠️ 生成物,勿手改 —— 由 05-audit/gen-esm.py 从源码的 `global.X = …` 生成。
|
|
2
|
+
改源码后跑 `python3 05-audit/gen-esm.py` 重新生成,`--check` 会拦住漂移。 */
|
|
3
|
+
import '../03-patterns/accordion/accordion.js';
|
|
4
|
+
|
|
5
|
+
const g = typeof window !== 'undefined' ? window : globalThis;
|
|
6
|
+
export const Accordion = g.Accordion;
|
|
7
|
+
export default Accordion;
|
package/esm/combobox.mjs
ADDED
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
/* ⚠️ 生成物,勿手改 —— 由 05-audit/gen-esm.py 从源码的 `global.X = …` 生成。
|
|
2
|
+
改源码后跑 `python3 05-audit/gen-esm.py` 重新生成,`--check` 会拦住漂移。 */
|
|
3
|
+
import '../02-primitives/combobox/combobox.js';
|
|
4
|
+
|
|
5
|
+
const g = typeof window !== 'undefined' ? window : globalThis;
|
|
6
|
+
export const Combobox = g.Combobox;
|
|
7
|
+
export default Combobox;
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
/* ⚠️ 生成物,勿手改 —— 由 05-audit/gen-esm.py 从源码的 `global.X = …` 生成。
|
|
2
|
+
改源码后跑 `python3 05-audit/gen-esm.py` 重新生成,`--check` 会拦住漂移。 */
|
|
3
|
+
import '../02-primitives/date-range/date-range.js';
|
|
4
|
+
|
|
5
|
+
const g = typeof window !== 'undefined' ? window : globalThis;
|
|
6
|
+
export const DateRange = g.DateRange;
|
|
7
|
+
export default DateRange;
|
package/esm/drawer.mjs
ADDED
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
/* ⚠️ 生成物,勿手改 —— 由 05-audit/gen-esm.py 从源码的 `global.X = …` 生成。
|
|
2
|
+
改源码后跑 `python3 05-audit/gen-esm.py` 重新生成,`--check` 会拦住漂移。 */
|
|
3
|
+
import '../03-patterns/drawer/drawer.js';
|
|
4
|
+
|
|
5
|
+
const g = typeof window !== 'undefined' ? window : globalThis;
|
|
6
|
+
export const Drawer = g.Drawer;
|
|
7
|
+
export default Drawer;
|
package/esm/dropdown.mjs
ADDED
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
/* ⚠️ 生成物,勿手改 —— 由 05-audit/gen-esm.py 从源码的 `global.X = …` 生成。
|
|
2
|
+
改源码后跑 `python3 05-audit/gen-esm.py` 重新生成,`--check` 会拦住漂移。 */
|
|
3
|
+
import '../03-patterns/dropdown/dropdown.js';
|
|
4
|
+
|
|
5
|
+
const g = typeof window !== 'undefined' ? window : globalThis;
|
|
6
|
+
export const Dropdown = g.Dropdown;
|
|
7
|
+
export default Dropdown;
|
package/esm/flip.mjs
ADDED
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
/* ⚠️ 生成物,勿手改 —— 由 05-audit/gen-esm.py 从源码的 `global.X = …` 生成。
|
|
2
|
+
改源码后跑 `python3 05-audit/gen-esm.py` 重新生成,`--check` 会拦住漂移。 */
|
|
3
|
+
import '../03-patterns/list/flip.js';
|
|
4
|
+
|
|
5
|
+
const g = typeof window !== 'undefined' ? window : globalThis;
|
|
6
|
+
export const FLIP = g.FLIP;
|
|
7
|
+
export default FLIP;
|
package/esm/index.mjs
ADDED
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
/* ⚠️ 生成物,勿手改 —— 由 05-audit/gen-esm.py 从源码的 `global.X = …` 生成。
|
|
2
|
+
改源码后跑 `python3 05-audit/gen-esm.py` 重新生成,`--check` 会拦住漂移。 */
|
|
3
|
+
/* 全部组件的汇总入口。只要其中一两个时,直接引对应的单文件更省体积。 */
|
|
4
|
+
import '../02-primitives/combobox/combobox.js';
|
|
5
|
+
import '../02-primitives/date-range/date-range.js';
|
|
6
|
+
import '../02-primitives/popover/popover.js';
|
|
7
|
+
import '../02-primitives/select/select.js';
|
|
8
|
+
import '../03-patterns/accordion/accordion.js';
|
|
9
|
+
import '../03-patterns/drawer/drawer.js';
|
|
10
|
+
import '../03-patterns/dropdown/dropdown.js';
|
|
11
|
+
import '../03-patterns/list/flip.js';
|
|
12
|
+
import '../03-patterns/nav/nav.js';
|
|
13
|
+
import '../03-patterns/nav/toc.js';
|
|
14
|
+
import '../03-patterns/overlay/overlay.js';
|
|
15
|
+
import '../03-patterns/pagination/pagination.js';
|
|
16
|
+
import '../03-patterns/reveal/reveal.js';
|
|
17
|
+
import '../03-patterns/tabs/tabs.js';
|
|
18
|
+
import '../03-patterns/tooltip/tooltip.js';
|
|
19
|
+
import '../03-patterns/tree/tree.js';
|
|
20
|
+
|
|
21
|
+
const g = typeof window !== 'undefined' ? window : globalThis;
|
|
22
|
+
|
|
23
|
+
export const Combobox = g.Combobox;
|
|
24
|
+
export const DateRange = g.DateRange;
|
|
25
|
+
export const Popover = g.Popover;
|
|
26
|
+
export const Select = g.Select;
|
|
27
|
+
export const Accordion = g.Accordion;
|
|
28
|
+
export const Drawer = g.Drawer;
|
|
29
|
+
export const Dropdown = g.Dropdown;
|
|
30
|
+
export const FLIP = g.FLIP;
|
|
31
|
+
export const Nav = g.Nav;
|
|
32
|
+
export const Toc = g.Toc;
|
|
33
|
+
export const Overlay = g.Overlay;
|
|
34
|
+
export const Pagination = g.Pagination;
|
|
35
|
+
export const Reveal = g.Reveal;
|
|
36
|
+
export const Tabs = g.Tabs;
|
|
37
|
+
export const Tooltip = g.Tooltip;
|
|
38
|
+
export const Tree = g.Tree;
|
package/esm/nav.mjs
ADDED
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
/* ⚠️ 生成物,勿手改 —— 由 05-audit/gen-esm.py 从源码的 `global.X = …` 生成。
|
|
2
|
+
改源码后跑 `python3 05-audit/gen-esm.py` 重新生成,`--check` 会拦住漂移。 */
|
|
3
|
+
import '../03-patterns/nav/nav.js';
|
|
4
|
+
|
|
5
|
+
const g = typeof window !== 'undefined' ? window : globalThis;
|
|
6
|
+
export const Nav = g.Nav;
|
|
7
|
+
export default Nav;
|
package/esm/overlay.mjs
ADDED
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
/* ⚠️ 生成物,勿手改 —— 由 05-audit/gen-esm.py 从源码的 `global.X = …` 生成。
|
|
2
|
+
改源码后跑 `python3 05-audit/gen-esm.py` 重新生成,`--check` 会拦住漂移。 */
|
|
3
|
+
import '../03-patterns/overlay/overlay.js';
|
|
4
|
+
|
|
5
|
+
const g = typeof window !== 'undefined' ? window : globalThis;
|
|
6
|
+
export const Overlay = g.Overlay;
|
|
7
|
+
export default Overlay;
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
/* ⚠️ 生成物,勿手改 —— 由 05-audit/gen-esm.py 从源码的 `global.X = …` 生成。
|
|
2
|
+
改源码后跑 `python3 05-audit/gen-esm.py` 重新生成,`--check` 会拦住漂移。 */
|
|
3
|
+
import '../03-patterns/pagination/pagination.js';
|
|
4
|
+
|
|
5
|
+
const g = typeof window !== 'undefined' ? window : globalThis;
|
|
6
|
+
export const Pagination = g.Pagination;
|
|
7
|
+
export default Pagination;
|
package/esm/popover.mjs
ADDED
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
/* ⚠️ 生成物,勿手改 —— 由 05-audit/gen-esm.py 从源码的 `global.X = …` 生成。
|
|
2
|
+
改源码后跑 `python3 05-audit/gen-esm.py` 重新生成,`--check` 会拦住漂移。 */
|
|
3
|
+
import '../02-primitives/popover/popover.js';
|
|
4
|
+
|
|
5
|
+
const g = typeof window !== 'undefined' ? window : globalThis;
|
|
6
|
+
export const Popover = g.Popover;
|
|
7
|
+
export default Popover;
|
package/esm/reveal.mjs
ADDED
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
/* ⚠️ 生成物,勿手改 —— 由 05-audit/gen-esm.py 从源码的 `global.X = …` 生成。
|
|
2
|
+
改源码后跑 `python3 05-audit/gen-esm.py` 重新生成,`--check` 会拦住漂移。 */
|
|
3
|
+
import '../03-patterns/reveal/reveal.js';
|
|
4
|
+
|
|
5
|
+
const g = typeof window !== 'undefined' ? window : globalThis;
|
|
6
|
+
export const Reveal = g.Reveal;
|
|
7
|
+
export default Reveal;
|
package/esm/select.mjs
ADDED
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
/* ⚠️ 生成物,勿手改 —— 由 05-audit/gen-esm.py 从源码的 `global.X = …` 生成。
|
|
2
|
+
改源码后跑 `python3 05-audit/gen-esm.py` 重新生成,`--check` 会拦住漂移。 */
|
|
3
|
+
import '../02-primitives/select/select.js';
|
|
4
|
+
|
|
5
|
+
const g = typeof window !== 'undefined' ? window : globalThis;
|
|
6
|
+
export const Select = g.Select;
|
|
7
|
+
export default Select;
|
package/esm/tabs.mjs
ADDED
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
/* ⚠️ 生成物,勿手改 —— 由 05-audit/gen-esm.py 从源码的 `global.X = …` 生成。
|
|
2
|
+
改源码后跑 `python3 05-audit/gen-esm.py` 重新生成,`--check` 会拦住漂移。 */
|
|
3
|
+
import '../03-patterns/tabs/tabs.js';
|
|
4
|
+
|
|
5
|
+
const g = typeof window !== 'undefined' ? window : globalThis;
|
|
6
|
+
export const Tabs = g.Tabs;
|
|
7
|
+
export default Tabs;
|
package/esm/toc.mjs
ADDED
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
/* ⚠️ 生成物,勿手改 —— 由 05-audit/gen-esm.py 从源码的 `global.X = …` 生成。
|
|
2
|
+
改源码后跑 `python3 05-audit/gen-esm.py` 重新生成,`--check` 会拦住漂移。 */
|
|
3
|
+
import '../03-patterns/nav/toc.js';
|
|
4
|
+
|
|
5
|
+
const g = typeof window !== 'undefined' ? window : globalThis;
|
|
6
|
+
export const Toc = g.Toc;
|
|
7
|
+
export default Toc;
|
package/esm/tooltip.mjs
ADDED
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
/* ⚠️ 生成物,勿手改 —— 由 05-audit/gen-esm.py 从源码的 `global.X = …` 生成。
|
|
2
|
+
改源码后跑 `python3 05-audit/gen-esm.py` 重新生成,`--check` 会拦住漂移。 */
|
|
3
|
+
import '../03-patterns/tooltip/tooltip.js';
|
|
4
|
+
|
|
5
|
+
const g = typeof window !== 'undefined' ? window : globalThis;
|
|
6
|
+
export const Tooltip = g.Tooltip;
|
|
7
|
+
export default Tooltip;
|
package/esm/tree.mjs
ADDED
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
/* ⚠️ 生成物,勿手改 —— 由 05-audit/gen-esm.py 从源码的 `global.X = …` 生成。
|
|
2
|
+
改源码后跑 `python3 05-audit/gen-esm.py` 重新生成,`--check` 会拦住漂移。 */
|
|
3
|
+
import '../03-patterns/tree/tree.js';
|
|
4
|
+
|
|
5
|
+
const g = typeof window !== 'undefined' ? window : globalThis;
|
|
6
|
+
export const Tree = g.Tree;
|
|
7
|
+
export default Tree;
|
package/index.html
CHANGED
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "agentcss",
|
|
3
|
-
"version": "0.11.
|
|
3
|
+
"version": "0.11.16",
|
|
4
4
|
"description": "移动 Web 组件库:CSS + 可选行为脚本,零第三方运行时依赖。样式用 bundler 引入,交互行为用 script 标签引入。",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"css",
|
|
@@ -25,6 +25,11 @@
|
|
|
25
25
|
"./tokens.css": "./dist/01-tokens/tokens.css",
|
|
26
26
|
"./typography.css": "./dist/01-tokens/typography.css",
|
|
27
27
|
"./page.css": "./dist/01-tokens/page.css",
|
|
28
|
+
"./esm": {
|
|
29
|
+
"types": "./types/index.d.ts",
|
|
30
|
+
"default": "./esm/index.mjs"
|
|
31
|
+
},
|
|
32
|
+
"./esm/*": "./esm/*.mjs",
|
|
28
33
|
"./primitives/*": "./dist/02-primitives/*",
|
|
29
34
|
"./patterns/*": "./dist/03-patterns/*",
|
|
30
35
|
"./recipes/*": "./dist/04-recipes/*",
|
|
@@ -39,6 +44,7 @@
|
|
|
39
44
|
"!ai/surface.baseline.json",
|
|
40
45
|
"adapters/",
|
|
41
46
|
"!adapters/presentation/fixtures",
|
|
47
|
+
"esm/",
|
|
42
48
|
"types/",
|
|
43
49
|
"dist/",
|
|
44
50
|
"!dist/manifest.json",
|
|
@@ -63,8 +69,9 @@
|
|
|
63
69
|
"index.html"
|
|
64
70
|
],
|
|
65
71
|
"sideEffects": [
|
|
66
|
-
"
|
|
67
|
-
"
|
|
72
|
+
"**/*.css",
|
|
73
|
+
"**/*.js",
|
|
74
|
+
"**/*.mjs"
|
|
68
75
|
],
|
|
69
76
|
"scripts": {
|
|
70
77
|
"test": "node --test 05-audit/unit.test.mjs 05-audit/behavior-cores.test.mjs",
|
package/types/index.d.ts
CHANGED
|
@@ -287,6 +287,109 @@ export interface Tree {
|
|
|
287
287
|
destroy(): void;
|
|
288
288
|
}
|
|
289
289
|
|
|
290
|
+
/* ============================================================================
|
|
291
|
+
* 另外 11 个组件(0.11.15 补)
|
|
292
|
+
* ---------------------------------------------------------------------------
|
|
293
|
+
* 🔴 之前本文件只声明了 5 个组件(Select / Combobox / DateRange / Dropdown /
|
|
294
|
+
* Tree),而 API.md 的「全部全局对象」表列了 22 个。
|
|
295
|
+
* 于是 `import { Accordion } from 'agentcss'` 在 TS 里直接报错,
|
|
296
|
+
* 使用者只能写 `(window as any).Accordion` —— 类型层等于不存在。
|
|
297
|
+
*
|
|
298
|
+
* ⭐ 下面每一条都对照过源码里的真实赋值(`global.X = …`)与原型方法名,
|
|
299
|
+
* **不是照 README 猜的**。参数形状只在源码可确证的地方收窄;
|
|
300
|
+
* 收不窄的写 `object` 并在注释里说明 —— 宁可不精确,也不给假签名。
|
|
301
|
+
* ========================================================================== */
|
|
302
|
+
|
|
303
|
+
/** `new Accordion(root, opts)` —— construct 形态(注意是 `new`)。 */
|
|
304
|
+
export interface AccordionOptions {
|
|
305
|
+
/** 展开/收起动画时长 ms;默认 240(源码里写进 `--acc-dur`) */
|
|
306
|
+
duration?: number;
|
|
307
|
+
}
|
|
308
|
+
|
|
309
|
+
export interface AccordionInstance {
|
|
310
|
+
readonly root: HTMLElement;
|
|
311
|
+
/** 面板项(`.accordion__item`),不是 trigger */
|
|
312
|
+
readonly items: HTMLElement[];
|
|
313
|
+
/** 切换一项。item 是 `.accordion__item`,**不是** trigger。 */
|
|
314
|
+
toggle(item: HTMLElement): void;
|
|
315
|
+
set(item: HTMLElement, open: boolean): void;
|
|
316
|
+
/** trigger → 它所属的 `.accordion__item`;找不到返回 null */
|
|
317
|
+
itemOf(trigger: Element): HTMLElement | null;
|
|
318
|
+
}
|
|
319
|
+
|
|
320
|
+
/** `new Tabs(root, opts)` —— construct 形态。 */
|
|
321
|
+
export interface TabsInstance {
|
|
322
|
+
readonly root: HTMLElement;
|
|
323
|
+
readonly tabs: HTMLElement[];
|
|
324
|
+
readonly panels: HTMLElement[];
|
|
325
|
+
/** 选中某个 tab(`aria-disabled="true"` 的会被忽略) */
|
|
326
|
+
select(tab: HTMLElement, focusIt?: boolean): void;
|
|
327
|
+
enabled(tab: HTMLElement): boolean;
|
|
328
|
+
/** 当前可聚焦(未 disabled)的 tab 列表 */
|
|
329
|
+
focusables(): HTMLElement[];
|
|
330
|
+
}
|
|
331
|
+
|
|
332
|
+
export interface NavInstance {
|
|
333
|
+
open(): void;
|
|
334
|
+
close(): void;
|
|
335
|
+
isOpen(): boolean;
|
|
336
|
+
destroy(): void;
|
|
337
|
+
}
|
|
338
|
+
|
|
339
|
+
export interface PaginationApi {
|
|
340
|
+
/** 为一个 `[data-pagination]` 节点建实例;同一节点重复调用返回同一个。
|
|
341
|
+
* ⚠️ 实例成员未在本文件收窄(源码里只挂了内部状态),需要时读
|
|
342
|
+
* `03-patterns/pagination/README.md`。 */
|
|
343
|
+
create(node: HTMLElement): object | null;
|
|
344
|
+
/** 扫描并初始化(默认整个 document) */
|
|
345
|
+
update(root?: HTMLElement): void;
|
|
346
|
+
/** 总条数 ÷ 每页条数 → 页数(至少 1) */
|
|
347
|
+
pagesOf(total: number, pageSize?: number): number;
|
|
348
|
+
}
|
|
349
|
+
|
|
350
|
+
/** `Drawer.open()` / `Overlay.dialog()` 的返回值:能编程关闭 */
|
|
351
|
+
export interface DismissableOverlay {
|
|
352
|
+
el: HTMLElement;
|
|
353
|
+
close(): void;
|
|
354
|
+
}
|
|
355
|
+
|
|
356
|
+
export interface OverlayApi {
|
|
357
|
+
/** 顶部提示条。参数形状见 `03-patterns/overlay/README.md` */
|
|
358
|
+
toast(opts: object): void;
|
|
359
|
+
/** 模态对话框 —— 返回句柄,可编程关闭 */
|
|
360
|
+
dialog(opts: object): DismissableOverlay;
|
|
361
|
+
}
|
|
362
|
+
|
|
363
|
+
export interface TooltipApi {
|
|
364
|
+
/** 给元素挂一个提示。`place` 决定方向(源码默认值以 README 为准) */
|
|
365
|
+
attach(el: HTMLElement, text: string, place?: string): void;
|
|
366
|
+
}
|
|
367
|
+
|
|
368
|
+
export interface PopoverApi {
|
|
369
|
+
attach(trigger: HTMLElement, opts?: object): void;
|
|
370
|
+
closeAll(): void;
|
|
371
|
+
readonly current: unknown;
|
|
372
|
+
}
|
|
373
|
+
|
|
374
|
+
export interface TocApi {
|
|
375
|
+
/** 绑定目录与正文的联动。参数形状见 `03-patterns/nav/README.md` */
|
|
376
|
+
init(opts?: object): void;
|
|
377
|
+
}
|
|
378
|
+
|
|
379
|
+
export interface RevealApi {
|
|
380
|
+
/** 开启入场动效(默认**不**接管) */
|
|
381
|
+
enable(): void;
|
|
382
|
+
disable(): void;
|
|
383
|
+
replay(): void;
|
|
384
|
+
}
|
|
385
|
+
|
|
386
|
+
export interface FlipApi {
|
|
387
|
+
/** 记录前后布局并做过渡;`mutate` 里改 DOM */
|
|
388
|
+
flip(container: HTMLElement, mutate: () => void, opts?: object): void;
|
|
389
|
+
/** 带过渡地移除一个元素 */
|
|
390
|
+
remove(container: HTMLElement, el: HTMLElement, done?: () => void): void;
|
|
391
|
+
}
|
|
392
|
+
|
|
290
393
|
/* ============================================================================
|
|
291
394
|
* 全局命名空间(组件脚本是 IIFE,挂到 window)
|
|
292
395
|
* ========================================================================== */
|
|
@@ -296,6 +399,19 @@ export interface FrontendLibGlobal {
|
|
|
296
399
|
Combobox: { create(root: HTMLElement, opt: ComboboxOptions): Combobox };
|
|
297
400
|
Dropdown: { create(root: HTMLElement, opt?: object): Dropdown };
|
|
298
401
|
Tree: { create(root: HTMLElement, opt?: TreeOptions): Tree };
|
|
402
|
+
/** construct 形态:`new window.Accordion(root, opts)` */
|
|
403
|
+
Accordion: new (root: HTMLElement, opts?: AccordionOptions) => AccordionInstance;
|
|
404
|
+
/** construct 形态:`new window.Tabs(root, opts)` */
|
|
405
|
+
Tabs: new (root: HTMLElement, opts?: object) => TabsInstance;
|
|
406
|
+
Nav: { attach(root: HTMLElement, opts?: object): NavInstance };
|
|
407
|
+
Pagination: PaginationApi;
|
|
408
|
+
Drawer: { open(opt?: object): DismissableOverlay };
|
|
409
|
+
Overlay: OverlayApi;
|
|
410
|
+
Tooltip: TooltipApi;
|
|
411
|
+
Popover: PopoverApi;
|
|
412
|
+
Toc: TocApi;
|
|
413
|
+
Reveal: RevealApi;
|
|
414
|
+
FLIP: FlipApi;
|
|
299
415
|
}
|
|
300
416
|
|
|
301
417
|
declare global {
|
|
@@ -307,4 +423,18 @@ export declare const Select: FrontendLibGlobal['Select'];
|
|
|
307
423
|
export declare const Combobox: FrontendLibGlobal['Combobox'];
|
|
308
424
|
export declare const DateRange: DateRangeStatics;
|
|
309
425
|
export declare const Dropdown: FrontendLibGlobal['Dropdown'];
|
|
310
|
-
export declare const Tree: FrontendLibGlobal['Tree'];
|
|
426
|
+
export declare const Tree: FrontendLibGlobal['Tree'];
|
|
427
|
+
/* 与 `global.X = …` 一一对应(16 个行为脚本全部覆盖)。
|
|
428
|
+
证据:`esm/` 下的 16 个 .mjs 由 `05-audit/gen-esm.py` 从源码生成,
|
|
429
|
+
`behavior-api` 门禁核对「源码导出 / esm 入口 / 本文件声明」三者集合相等。 */
|
|
430
|
+
export declare const Accordion: FrontendLibGlobal['Accordion'];
|
|
431
|
+
export declare const Tabs: FrontendLibGlobal['Tabs'];
|
|
432
|
+
export declare const Nav: FrontendLibGlobal['Nav'];
|
|
433
|
+
export declare const Pagination: PaginationApi;
|
|
434
|
+
export declare const Drawer: FrontendLibGlobal['Drawer'];
|
|
435
|
+
export declare const Overlay: OverlayApi;
|
|
436
|
+
export declare const Tooltip: TooltipApi;
|
|
437
|
+
export declare const Popover: PopoverApi;
|
|
438
|
+
export declare const Toc: TocApi;
|
|
439
|
+
export declare const Reveal: RevealApi;
|
|
440
|
+
export declare const FLIP: FlipApi;
|