@wangcheng051/plugin-kit 0.1.1 → 0.2.0
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/CHANGELOG.md +52 -0
- package/README.md +34 -11
- package/dist/index.cjs +332 -2
- package/dist/index.d.ts +5 -1
- package/dist/index.js +38306 -598
- package/dist/index.umd.cjs +332 -2
- package/dist/style.css +1 -1
- package/package.json +7 -3
- package/dist/index.cjs.map +0 -1
- package/dist/index.js.map +0 -1
- package/dist/index.umd.cjs.map +0 -1
package/CHANGELOG.md
ADDED
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
# 更新日志
|
|
2
|
+
|
|
3
|
+
版本号遵循 [语义化版本](https://semver.org/lang/zh-CN/)。
|
|
4
|
+
|
|
5
|
+
## [0.2.0] - 2026-11-09
|
|
6
|
+
|
|
7
|
+
本版本的核心变化:**ag-grid 完全内置并做样式隔离**。宿主项目不需要安装 `ag-grid-community` /
|
|
8
|
+
`ag-grid-react`,无论它自己装的是 25、31、32 还是完全不装,插件的表格都能正常工作,
|
|
9
|
+
宿主已有的 ag-grid 表格也不受插件影响。
|
|
10
|
+
|
|
11
|
+
### 破坏性变更
|
|
12
|
+
|
|
13
|
+
- 表格容器类名由 `ag-theme-alpine` 改为 `pk-ag-grid`;`agGridClass()` 的返回值同步改为
|
|
14
|
+
`pk-ag-grid`,不再返回主题类名。
|
|
15
|
+
- `ag-grid-community`、`ag-grid-react` 从 `peerDependencies` 移入 `dependencies`,
|
|
16
|
+
宿主无需再安装,也不再受宿主版本约束。
|
|
17
|
+
- 只内置 `alpine` 浅色主题,`balham` / `material` / `quartz` / `classic` 不再提供。
|
|
18
|
+
`agGridClass('balham')` 不会报错,但返回的仍是 `pk-ag-grid`。
|
|
19
|
+
|
|
20
|
+
### 新增
|
|
21
|
+
|
|
22
|
+
- 内置 ag-grid 31 的 JS 实现,`dist/index.js` 从 55 KB 增至 1.45 MB(gzip 17.5 KB → 342 KB)。
|
|
23
|
+
- 样式作用域隔离:构建期把 ag-grid 两个样式文件的全部选择器改写为 `.pk-ag-grid ...`,
|
|
24
|
+
宿主 `.ag-theme-alpine .ag-xxx` 规则不会命中插件表格,插件规则也不会漏到宿主表格上。
|
|
25
|
+
- 图标字体改名为 `pkAgGridAlpine`,避免与宿主同名 `@font-face` 互相覆盖。
|
|
26
|
+
- 暗色 / 自动暗色变体映射到不存在的类名,系统处于暗色模式时不会把表格染黑。
|
|
27
|
+
- 新增导出 `AG_GRID_SCOPE_CLASS`(值为 `pk-ag-grid`)。
|
|
28
|
+
- `dist/style.css` 内含 ag-grid 结构样式与 alpine 主题(288 KB / gzip 37.6 KB),
|
|
29
|
+
宿主只需 `import '@wangcheng051/plugin-kit/style.css'`。
|
|
30
|
+
|
|
31
|
+
### 校验
|
|
32
|
+
|
|
33
|
+
- `scripts/verify-dist.mjs` 增加断言:ag-grid 已内联且不在 peer 中、JS 产物无 ag-grid
|
|
34
|
+
样式子路径引用、`dist/style.css` 规则全部限定在 `.pk-ag-grid` 下、图标字体已改名。
|
|
35
|
+
- `scripts/smoke-render.mjs` 容器断言同步为 `pk-ag-grid`。
|
|
36
|
+
|
|
37
|
+
### 迁移指南
|
|
38
|
+
|
|
39
|
+
1. 卸载 `ag-grid-community` / `ag-grid-react`(保留也不影响,插件不会使用它)。
|
|
40
|
+
2. 删除插件相关的 ag-grid CSS 引入;宿主**自己**的 ag-grid 表格仍按原样引自己的样式。
|
|
41
|
+
3. 业务中针对插件表格写的覆盖样式,选择器由 `.ag-theme-alpine .ag-xxx` 改为
|
|
42
|
+
`.pk-ag-grid .ag-xxx`。
|
|
43
|
+
4. 若首屏体积敏感,改为懒加载:`const { TableList } = await import('@wangcheng051/plugin-kit')`。
|
|
44
|
+
|
|
45
|
+
## [0.1.1]
|
|
46
|
+
|
|
47
|
+
- 首个发布版本。
|
|
48
|
+
- `TableList`:基于 ag-grid 31 + antd 5 的表格封装,支持列配置、字典渲染、分页、
|
|
49
|
+
自定义表头 `CustomHeader`(排序 + 列显示/隐藏)。
|
|
50
|
+
- 主题与工具:`agGridClass`、`AG_GRID_THEMES`、`DEFAULT_AG_GRID_THEME`、`ROW_HEIGHT_PRESETS`
|
|
51
|
+
及 `formatMoney` / `formatPercent` 等格式化函数。
|
|
52
|
+
- 产物形态:ESM / CJS / UMD 三格式,`react` / `react-dom` / `antd` / `react-redux` 保持 external。
|
package/README.md
CHANGED
|
@@ -10,35 +10,58 @@ CRM 后台 React 插件包,基于 **React 17 + antd 5 + ag-grid 31**。
|
|
|
10
10
|
| --- | --- | --- |
|
|
11
11
|
| react / react-dom | `^17.0.2` | React 17 无 `createRoot`,需使用 `ReactDOM.render` |
|
|
12
12
|
| antd | `^5.21.6` | 二次封装基于 antd 5 API |
|
|
13
|
-
| ag-grid-react / ag-grid-community | `^31.0.1` | 社区版,无列工具面板 / SetFilter |
|
|
14
|
-
| @ant-design/icons | `^5.5.1` | 由 antd 引入,通常已随 antd 安装 |
|
|
15
13
|
| react-redux | `^7.2.4` | 可选 peer;`TableList` 表头会读 `state.controller.language` |
|
|
16
14
|
|
|
15
|
+
ag-grid 31、`@ant-design/icons` 均已**打包内置**,宿主无需安装:
|
|
16
|
+
|
|
17
|
+
| 内置依赖 | 说明 |
|
|
18
|
+
| --- | --- |
|
|
19
|
+
| ag-grid-community / ag-grid-react 31 | JS 与样式都打进产物,样式限定在 `.pk-ag-grid` 作用域 |
|
|
20
|
+
| @ant-design/icons | 只用两个图标,tree-shaking 后增量很小 |
|
|
21
|
+
|
|
22
|
+
> 为什么 ag-grid 可以内置而 react / antd 不行:react / antd 一旦打包两份,
|
|
23
|
+
> hooks 报错、`ConfigProvider` 主题与 locale 上下文都会断,必须共用宿主实例;
|
|
24
|
+
> ag-grid 是自包含的,做成自带反而能摆脱宿主的版本约束。
|
|
25
|
+
|
|
17
26
|
## 安装
|
|
18
27
|
|
|
19
28
|
```bash
|
|
20
29
|
npm i @wangcheng051/plugin-kit
|
|
21
30
|
```
|
|
22
31
|
|
|
23
|
-
`react` / `react-dom` / `antd`
|
|
24
|
-
|
|
32
|
+
宿主只需要 `react` / `react-dom` / `antd`(`react-redux` 可选,使用 `TableList` 时
|
|
33
|
+
需确保应用被 `<Provider>` 包裹)。宿主项目里已有的 ag-grid 无论什么版本都不影响本包。
|
|
25
34
|
|
|
26
35
|
## 使用
|
|
27
36
|
|
|
28
|
-
###
|
|
37
|
+
### 引入样式
|
|
29
38
|
|
|
30
39
|
```js
|
|
31
|
-
//
|
|
40
|
+
// 必须引入:本包组件样式 + 内置的 ag-grid 31 基础样式与 alpine 主题
|
|
32
41
|
import '@wangcheng051/plugin-kit/style.css';
|
|
33
42
|
|
|
34
|
-
//
|
|
35
|
-
import 'ag-grid-community/styles/ag-grid.css';
|
|
36
|
-
import 'ag-grid-community/styles/ag-theme-alpine.css';
|
|
43
|
+
// antd 重置样式按宿主项目原有约定引入即可
|
|
37
44
|
import 'antd/dist/reset.css';
|
|
38
45
|
```
|
|
39
46
|
|
|
40
|
-
|
|
41
|
-
|
|
47
|
+
`dist/style.css` 已包含 `ag-grid.css` 与 `ag-theme-alpine.css`,宿主**不需要**再
|
|
48
|
+
单独 import ag-grid 的样式,也不需要在页面里额外挂 `ag-theme-alpine` 类。
|
|
49
|
+
|
|
50
|
+
### 与宿主 ag-grid 版本共存
|
|
51
|
+
|
|
52
|
+
内置样式在构建期被改写到 `.pk-ag-grid` 作用域下,容器只挂这个类:
|
|
53
|
+
|
|
54
|
+
- 宿主的 `.ag-theme-alpine .ag-xxx` 规则不会命中插件表格;
|
|
55
|
+
- 插件规则也不会漏到宿主自己的 ag-grid 表格上(含 `ag-row-odd` 等覆盖样式);
|
|
56
|
+
- 图标字体改名为 `pkAgGridAlpine`,不会与宿主的 `agGridAlpine` 互相覆盖。
|
|
57
|
+
|
|
58
|
+
因此宿主可以是 ag-grid 25 / 31 / 32,甚至完全不装,插件都能正常渲染。
|
|
59
|
+
|
|
60
|
+
**代价**:`dist/index.js` 从 55 kB 增至约 1.4 MB(gzip 从 17 kB 增至约 340 kB),
|
|
61
|
+
这是把 ag-grid 完整打进产物的必然结果。介意体积时可在业务层按需 `import()` 懒加载表格。
|
|
62
|
+
|
|
63
|
+
> 只内置 alpine 浅色主题。`agGridClass('balham')` 这类调用不会报错,但返回的仍是
|
|
64
|
+
> `.pk-ag-grid`,不会切换到对应主题的视觉效果。
|
|
42
65
|
|
|
43
66
|
### TableList
|
|
44
67
|
|