react-vant-nova 1.0.5 → 1.0.7-test
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.
Potentially problematic release.
This version of react-vant-nova might be problematic. Click here for more details.
- package/bundle/index.css +74 -0
- package/bundle/index.min.css +1 -1
- package/bundle/react-vant-nova.es.js +766 -620
- package/bundle/react-vant-nova.js +770 -623
- package/bundle/react-vant-nova.min.js +2 -2
- package/es/dialog/method.js +1 -1
- package/es/index.d.ts +1 -0
- package/es/index.js +2 -1
- package/es/table/PropsType.d.ts +32 -0
- package/es/table/PropsType.js +1 -0
- package/es/table/Table.d.ts +4 -0
- package/es/table/Table.js +186 -0
- package/es/table/index.d.ts +5 -0
- package/es/table/index.js +4 -0
- package/es/table/style/index.css +74 -0
- package/es/toast/Toast.js +37 -30
- package/lib/dialog/method.js +1 -1
- package/lib/index.css +74 -0
- package/lib/index.d.ts +1 -0
- package/lib/index.js +12 -0
- package/lib/index.min.css +1 -1
- package/lib/table/PropsType.d.ts +32 -0
- package/lib/table/PropsType.js +6 -0
- package/lib/table/Table.d.ts +4 -0
- package/lib/table/Table.js +218 -0
- package/lib/table/index.d.ts +5 -0
- package/lib/table/index.js +16 -0
- package/lib/table/style/index.css +74 -0
- package/lib/toast/Toast.js +37 -30
- package/package.json +4 -4
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
import { BaseTypeProps } from '../utils';
|
|
3
|
+
export interface TableColumn {
|
|
4
|
+
/** 列标题 */
|
|
5
|
+
title: React.ReactNode;
|
|
6
|
+
/** 列数据对应的字段名 */
|
|
7
|
+
dataIndex: string;
|
|
8
|
+
/** 列宽度 */
|
|
9
|
+
width?: string | number;
|
|
10
|
+
/** 列对齐方式 */
|
|
11
|
+
align?: 'left' | 'center' | 'right';
|
|
12
|
+
/** 自定义单元格渲染函数 */
|
|
13
|
+
render?: (text: any, record: any, index: number) => React.ReactNode;
|
|
14
|
+
/** 自定义表头渲染函数 */
|
|
15
|
+
titleRender?: (column: TableColumn) => React.ReactNode;
|
|
16
|
+
}
|
|
17
|
+
export interface TableProps<T = any> extends BaseTypeProps {
|
|
18
|
+
/** 表格数据 */
|
|
19
|
+
dataSource: T[];
|
|
20
|
+
/** 列配置 */
|
|
21
|
+
columns: TableColumn[];
|
|
22
|
+
/** 表格行Key的取值字段 */
|
|
23
|
+
rowKey?: string | ((record: T, index: number) => string);
|
|
24
|
+
/** 是否显示边框 */
|
|
25
|
+
bordered?: boolean;
|
|
26
|
+
/** 是否显示表头 */
|
|
27
|
+
showHeader?: boolean;
|
|
28
|
+
/** 空数据时显示的内容 */
|
|
29
|
+
emptyText?: React.ReactNode;
|
|
30
|
+
/** 空数据时显示的图片 */
|
|
31
|
+
emptyImage?: string;
|
|
32
|
+
}
|
|
@@ -0,0 +1,218 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.default = void 0;
|
|
7
|
+
function _react() {
|
|
8
|
+
const data = _interopRequireWildcard(require("react"));
|
|
9
|
+
_react = function () {
|
|
10
|
+
return data;
|
|
11
|
+
};
|
|
12
|
+
return data;
|
|
13
|
+
}
|
|
14
|
+
function _tslib() {
|
|
15
|
+
const data = require("tslib");
|
|
16
|
+
_tslib = function () {
|
|
17
|
+
return data;
|
|
18
|
+
};
|
|
19
|
+
return data;
|
|
20
|
+
}
|
|
21
|
+
function _jsxRuntime() {
|
|
22
|
+
const data = require("react/jsx-runtime");
|
|
23
|
+
_jsxRuntime = function () {
|
|
24
|
+
return data;
|
|
25
|
+
};
|
|
26
|
+
return data;
|
|
27
|
+
}
|
|
28
|
+
function _clsx() {
|
|
29
|
+
const data = _interopRequireDefault(require("clsx"));
|
|
30
|
+
_clsx = function () {
|
|
31
|
+
return data;
|
|
32
|
+
};
|
|
33
|
+
return data;
|
|
34
|
+
}
|
|
35
|
+
var _utils = require("../utils");
|
|
36
|
+
function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
|
|
37
|
+
function _interopRequireWildcard(e, t) { if ("function" == typeof WeakMap) var r = new WeakMap(), n = new WeakMap(); return (_interopRequireWildcard = function (e, t) { if (!t && e && e.__esModule) return e; var o, i, f = { __proto__: null, default: e }; if (null === e || "object" != typeof e && "function" != typeof e) return f; if (o = t ? n : r) { if (o.has(e)) return o.get(e); o.set(e, f); } for (const t in e) "default" !== t && {}.hasOwnProperty.call(e, t) && ((i = (o = Object.defineProperty) && Object.getOwnPropertyDescriptor(e, t)) && (i.get || i.set) ? o(f, t, i) : f[t] = e[t]); return f; })(e, t); }
|
|
38
|
+
const [bem] = (0, _utils.createNamespace)('table');
|
|
39
|
+
const Table = props => {
|
|
40
|
+
const containerRef = (0, _react().useRef)(null);
|
|
41
|
+
const [containerWidth, setContainerWidth] = (0, _react().useState)(0);
|
|
42
|
+
// 监听容器尺寸变化(适配窗口缩放/响应式)
|
|
43
|
+
(0, _react().useEffect)(() => {
|
|
44
|
+
const container = containerRef.current;
|
|
45
|
+
if (!container) return;
|
|
46
|
+
// 初始化宽度
|
|
47
|
+
const updateWidth = () => {
|
|
48
|
+
setContainerWidth(container.clientWidth);
|
|
49
|
+
};
|
|
50
|
+
updateWidth();
|
|
51
|
+
// 监听窗口缩放
|
|
52
|
+
const resizeObserver = new ResizeObserver(updateWidth);
|
|
53
|
+
resizeObserver.observe(container);
|
|
54
|
+
return () => {
|
|
55
|
+
resizeObserver.unobserve(container);
|
|
56
|
+
};
|
|
57
|
+
}, []);
|
|
58
|
+
const {
|
|
59
|
+
className,
|
|
60
|
+
style,
|
|
61
|
+
dataSource = [],
|
|
62
|
+
columns = [],
|
|
63
|
+
rowKey = 'id',
|
|
64
|
+
bordered = false,
|
|
65
|
+
showHeader = true,
|
|
66
|
+
emptyText = '暂无数据',
|
|
67
|
+
emptyImage
|
|
68
|
+
} = props,
|
|
69
|
+
restProps = (0, _tslib().__rest)(props
|
|
70
|
+
// 检查是否有列设置了宽度
|
|
71
|
+
, ["className", "style", "dataSource", "columns", "rowKey", "bordered", "showHeader", "emptyText", "emptyImage"]);
|
|
72
|
+
// 检查是否有列设置了宽度
|
|
73
|
+
const hasColumnWithWidth = (0, _react().useMemo)(() => {
|
|
74
|
+
return columns.some(col => col.width);
|
|
75
|
+
}, [columns]);
|
|
76
|
+
// 核心:计算每列的最终宽度
|
|
77
|
+
const columnStyles = (0, _react().useMemo)(() => {
|
|
78
|
+
if (!hasColumnWithWidth) return columns.map(() => ({
|
|
79
|
+
width: '0px'
|
|
80
|
+
}));
|
|
81
|
+
if (containerWidth === 0) return columns.map(() => ({
|
|
82
|
+
width: '0px'
|
|
83
|
+
}));
|
|
84
|
+
let fixedWidthTotal = 0; // 已配置列宽总和(像素)
|
|
85
|
+
const flexibleColumns = []; // 未配置宽度的列索引
|
|
86
|
+
const finalWidths = [];
|
|
87
|
+
// 第一步:解析用户配置的宽度(转像素)
|
|
88
|
+
columns.forEach((col, index) => {
|
|
89
|
+
if (col.width) {
|
|
90
|
+
let widthPx = 0;
|
|
91
|
+
const width = col.width.toString();
|
|
92
|
+
// 处理百分比宽度:容器宽度 × 百分比
|
|
93
|
+
if (width.endsWith('%')) {
|
|
94
|
+
const percent = parseFloat(width) / 100;
|
|
95
|
+
widthPx = containerWidth * percent;
|
|
96
|
+
}
|
|
97
|
+
// 处理像素宽度:数字/px字符串
|
|
98
|
+
else if (width.endsWith('px')) {
|
|
99
|
+
widthPx = parseFloat(width);
|
|
100
|
+
}
|
|
101
|
+
// 纯数字(默认px)
|
|
102
|
+
else {
|
|
103
|
+
widthPx = parseFloat(width);
|
|
104
|
+
}
|
|
105
|
+
fixedWidthTotal += widthPx;
|
|
106
|
+
finalWidths.push(widthPx);
|
|
107
|
+
} else {
|
|
108
|
+
// 未配置宽度的列,先占位,后续均分
|
|
109
|
+
flexibleColumns.push(index);
|
|
110
|
+
finalWidths.push(0);
|
|
111
|
+
}
|
|
112
|
+
});
|
|
113
|
+
// 第二步:给未配置宽度的列均分剩余宽度
|
|
114
|
+
const flexCount = flexibleColumns.length;
|
|
115
|
+
if (flexCount > 0) {
|
|
116
|
+
// 剩余宽度 = 容器宽度 - 已配置宽度总和(最小为0)
|
|
117
|
+
const remainingWidth = Math.max(0, containerWidth - fixedWidthTotal);
|
|
118
|
+
const flexWidthPerCol = remainingWidth / flexCount;
|
|
119
|
+
// 赋值给未配置宽度的列
|
|
120
|
+
flexibleColumns.forEach(index => {
|
|
121
|
+
finalWidths[index] = flexWidthPerCol > 70 ? flexWidthPerCol : 70;
|
|
122
|
+
});
|
|
123
|
+
}
|
|
124
|
+
// 转成样式对象(px)
|
|
125
|
+
return finalWidths.map(width => ({
|
|
126
|
+
width: `${width}px`,
|
|
127
|
+
minWidth: `${width}px` // 关键:防止列宽被压缩
|
|
128
|
+
}));
|
|
129
|
+
}, [columns, containerWidth]);
|
|
130
|
+
// 获取行的key值
|
|
131
|
+
const getRowKey = (record, index) => {
|
|
132
|
+
if (typeof rowKey === 'function') {
|
|
133
|
+
return rowKey(record, index);
|
|
134
|
+
}
|
|
135
|
+
return String(record[rowKey] || index);
|
|
136
|
+
};
|
|
137
|
+
// 渲染表头
|
|
138
|
+
const renderHeader = () => {
|
|
139
|
+
if (!showHeader) return null;
|
|
140
|
+
return (0, _jsxRuntime().jsx)("thead", Object.assign({
|
|
141
|
+
className: (0, _clsx().default)(bem('header'))
|
|
142
|
+
}, {
|
|
143
|
+
children: (0, _jsxRuntime().jsx)("tr", {
|
|
144
|
+
children: columns.map((column, index) =>
|
|
145
|
+
// 渲染表头时
|
|
146
|
+
(0, _jsxRuntime().jsx)("th", Object.assign({
|
|
147
|
+
className: (0, _clsx().default)(bem('header-cell')),
|
|
148
|
+
style: Object.assign(Object.assign({}, columnStyles[index]), {
|
|
149
|
+
textAlign: column.align || 'left'
|
|
150
|
+
})
|
|
151
|
+
}, {
|
|
152
|
+
children: column.titleRender ? column.titleRender(column) : column.title
|
|
153
|
+
}), column.dataIndex || index))
|
|
154
|
+
})
|
|
155
|
+
}));
|
|
156
|
+
};
|
|
157
|
+
// 渲染表格内容
|
|
158
|
+
const renderBody = () => {
|
|
159
|
+
if (dataSource.length === 0) {
|
|
160
|
+
return (0, _jsxRuntime().jsx)("tbody", Object.assign({
|
|
161
|
+
className: (0, _clsx().default)(bem('body'))
|
|
162
|
+
}, {
|
|
163
|
+
children: (0, _jsxRuntime().jsx)("tr", {
|
|
164
|
+
children: (0, _jsxRuntime().jsxs)("td", Object.assign({
|
|
165
|
+
colSpan: columns.length,
|
|
166
|
+
className: (0, _clsx().default)(bem('empty-cell'))
|
|
167
|
+
}, {
|
|
168
|
+
children: [(0, _jsxRuntime().jsx)("div", Object.assign({
|
|
169
|
+
className: (0, _clsx().default)(bem('empty-image'))
|
|
170
|
+
}, {
|
|
171
|
+
children: emptyImage && (0, _jsxRuntime().jsx)("img", {
|
|
172
|
+
src: emptyImage
|
|
173
|
+
})
|
|
174
|
+
})), (0, _jsxRuntime().jsx)("div", {
|
|
175
|
+
children: emptyText
|
|
176
|
+
})]
|
|
177
|
+
}))
|
|
178
|
+
})
|
|
179
|
+
}));
|
|
180
|
+
}
|
|
181
|
+
return (0, _jsxRuntime().jsx)("tbody", Object.assign({
|
|
182
|
+
className: (0, _clsx().default)(bem('body'))
|
|
183
|
+
}, {
|
|
184
|
+
children: dataSource.map((record, rowIndex) => (0, _jsxRuntime().jsx)("tr", Object.assign({
|
|
185
|
+
className: (0, _clsx().default)(bem('row'))
|
|
186
|
+
}, {
|
|
187
|
+
children: columns.map((column, colIndex) => {
|
|
188
|
+
const text = record[column.dataIndex];
|
|
189
|
+
return (0, _jsxRuntime().jsx)("td", Object.assign({
|
|
190
|
+
className: (0, _clsx().default)(bem('cell')),
|
|
191
|
+
style: Object.assign(Object.assign({}, columnStyles[colIndex]), {
|
|
192
|
+
textAlign: column.align || 'left'
|
|
193
|
+
})
|
|
194
|
+
}, {
|
|
195
|
+
children: column.render ? column.render(text, record, rowIndex) : text
|
|
196
|
+
}), column.dataIndex || colIndex);
|
|
197
|
+
})
|
|
198
|
+
}), getRowKey(record, rowIndex)))
|
|
199
|
+
}));
|
|
200
|
+
};
|
|
201
|
+
const classes = (0, _clsx().default)(className, bem([{
|
|
202
|
+
bordered
|
|
203
|
+
}]));
|
|
204
|
+
return (0, _jsxRuntime().jsx)("div", Object.assign({
|
|
205
|
+
className: (0, _clsx().default)(bem('wrapper')),
|
|
206
|
+
ref: containerRef
|
|
207
|
+
}, {
|
|
208
|
+
children: (0, _jsxRuntime().jsxs)("table", Object.assign({
|
|
209
|
+
className: classes,
|
|
210
|
+
style: Object.assign(Object.assign({}, style), !hasColumnWithWidth && {
|
|
211
|
+
tableLayout: 'auto'
|
|
212
|
+
})
|
|
213
|
+
}, restProps, {
|
|
214
|
+
children: [renderHeader(), renderBody()]
|
|
215
|
+
}))
|
|
216
|
+
}));
|
|
217
|
+
};
|
|
218
|
+
var _default = exports.default = Table;
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
Object.defineProperty(exports, "Table", {
|
|
7
|
+
enumerable: true,
|
|
8
|
+
get: function () {
|
|
9
|
+
return _Table.default;
|
|
10
|
+
}
|
|
11
|
+
});
|
|
12
|
+
exports.default = void 0;
|
|
13
|
+
require("./style/index.css");
|
|
14
|
+
var _Table = _interopRequireDefault(require("./Table"));
|
|
15
|
+
function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
|
|
16
|
+
var _default = exports.default = _Table.default;
|
|
@@ -0,0 +1,74 @@
|
|
|
1
|
+
.rv-table__wrapper {
|
|
2
|
+
overflow-x: auto;
|
|
3
|
+
width: 100%;
|
|
4
|
+
position: relative;
|
|
5
|
+
scrollbar-width: thin;
|
|
6
|
+
scrollbar-color: #e5e7eb #f9fafb;
|
|
7
|
+
}
|
|
8
|
+
.rv-table {
|
|
9
|
+
width: 100%;
|
|
10
|
+
table-layout: fixed;
|
|
11
|
+
/* 添加这一行 */
|
|
12
|
+
border-spacing: 0;
|
|
13
|
+
font-size: 14px;
|
|
14
|
+
color: var(--rv-gray-8);
|
|
15
|
+
min-width: fit-content;
|
|
16
|
+
word-break: break-word;
|
|
17
|
+
/* 关键!列宽总和超容器时,表格宽度自适应,触发滚动 */
|
|
18
|
+
border-collapse: collapse;
|
|
19
|
+
/* 合并边框,避免间隙 */
|
|
20
|
+
}
|
|
21
|
+
.rv-table--bordered {
|
|
22
|
+
border: 1px solid var(--rv-gray-3);
|
|
23
|
+
}
|
|
24
|
+
.rv-table__header {
|
|
25
|
+
background-color: #fafafa;
|
|
26
|
+
}
|
|
27
|
+
.rv-table__header-cell {
|
|
28
|
+
padding: 8px 12px;
|
|
29
|
+
text-align: left;
|
|
30
|
+
font-weight: 500;
|
|
31
|
+
border-bottom: 1px solid var(--rv-gray-3);
|
|
32
|
+
}
|
|
33
|
+
.rv-table__row:last-child .rv-table__cell {
|
|
34
|
+
border-bottom: none;
|
|
35
|
+
}
|
|
36
|
+
.rv-table__cell {
|
|
37
|
+
padding: 10px 12px;
|
|
38
|
+
border-bottom: 1px solid var(--rv-gray-3);
|
|
39
|
+
}
|
|
40
|
+
.rv-table__empty-cell {
|
|
41
|
+
padding: 24px;
|
|
42
|
+
text-align: center;
|
|
43
|
+
color: #969799;
|
|
44
|
+
}
|
|
45
|
+
.rv-table--bordered .rv-table__header-cell,
|
|
46
|
+
.rv-table--bordered .rv-table__cell {
|
|
47
|
+
border-right: 1px solid var(--rv-gray-3);
|
|
48
|
+
box-sizing: border-box;
|
|
49
|
+
}
|
|
50
|
+
.rv-table--bordered .rv-table__header-cell:last-child,
|
|
51
|
+
.rv-table--bordered .rv-table__cell:last-child {
|
|
52
|
+
border-right: none;
|
|
53
|
+
}
|
|
54
|
+
.rv-table--bordered .rv-table__empty-cell {
|
|
55
|
+
border-right: 1px solid var(--rv-gray-3);
|
|
56
|
+
}
|
|
57
|
+
.rv-table--bordered .rv-table__empty-cell:last-child {
|
|
58
|
+
border-right: none;
|
|
59
|
+
}
|
|
60
|
+
.rv-table__empty-cell {
|
|
61
|
+
padding: 48px 24px;
|
|
62
|
+
text-align: center;
|
|
63
|
+
color: #969799;
|
|
64
|
+
background-color: #fff;
|
|
65
|
+
}
|
|
66
|
+
.rv-table__empty-image {
|
|
67
|
+
margin: 0 auto 12px;
|
|
68
|
+
width: 90px;
|
|
69
|
+
height: 90px;
|
|
70
|
+
}
|
|
71
|
+
.rv-table__empty-image img {
|
|
72
|
+
width: 100%;
|
|
73
|
+
height: 100%;
|
|
74
|
+
}
|
package/lib/toast/Toast.js
CHANGED
|
@@ -82,6 +82,7 @@ const Toast = p => {
|
|
|
82
82
|
});
|
|
83
83
|
}
|
|
84
84
|
if (type === 'loading') {
|
|
85
|
+
// @ts-ignore
|
|
85
86
|
return (0, _jsxRuntime().jsx)(_loading.default, {
|
|
86
87
|
className: (0, _clsx().default)(bem('loading')),
|
|
87
88
|
type: loadingType
|
|
@@ -90,36 +91,42 @@ const Toast = p => {
|
|
|
90
91
|
return null;
|
|
91
92
|
};
|
|
92
93
|
const renderMessage = () => {
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
94
|
+
// 调试用加延时
|
|
95
|
+
setTimeout(() => {
|
|
96
|
+
const {
|
|
97
|
+
message
|
|
98
|
+
} = props;
|
|
99
|
+
if ((0, _utils.isDef)(message) && message !== '') {
|
|
100
|
+
return (0, _jsxRuntime().jsx)("div", Object.assign({
|
|
101
|
+
className: (0, _clsx().default)(bem('info'))
|
|
102
|
+
}, {
|
|
103
|
+
children: message
|
|
104
|
+
}));
|
|
105
|
+
}
|
|
106
|
+
return null;
|
|
107
|
+
}, 100);
|
|
104
108
|
};
|
|
105
|
-
return (
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
109
|
+
return (
|
|
110
|
+
// @ts-ignore
|
|
111
|
+
(0, _jsxRuntime().jsxs)(_popup.default, Object.assign({
|
|
112
|
+
className: (0, _clsx().default)([bem([props.position, {
|
|
113
|
+
[props.type]: !props.icon
|
|
114
|
+
}]), props.className]),
|
|
115
|
+
visible: props.visible,
|
|
116
|
+
overlay: props.overlay,
|
|
117
|
+
transition: props.transition,
|
|
118
|
+
overlayClass: props.overlayClass,
|
|
119
|
+
overlayStyle: props.overlayStyle,
|
|
120
|
+
closeOnClickOverlay: props.closeOnClickOverlay,
|
|
121
|
+
lockScroll: false,
|
|
122
|
+
onClick: onClick,
|
|
123
|
+
onClose: props.onClose,
|
|
124
|
+
onClosed: props.onClosed,
|
|
125
|
+
onOpened: props.onOpened,
|
|
126
|
+
teleport: props.teleport
|
|
127
|
+
}, {
|
|
128
|
+
children: [renderIcon(), renderMessage()]
|
|
129
|
+
}))
|
|
130
|
+
);
|
|
124
131
|
};
|
|
125
132
|
var _default = exports.default = Toast;
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "react-vant-nova",
|
|
3
|
-
"version": "1.0.
|
|
4
|
-
"description": "
|
|
3
|
+
"version": "1.0.7test",
|
|
4
|
+
"description": "React Mobile UI Components based on Vant UI (兼容 React 19+,新增轻量 Table 组件)",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"ui",
|
|
7
7
|
"react",
|
|
@@ -16,12 +16,12 @@
|
|
|
16
16
|
"homepage": "https://react-vant.fenewbee.com/",
|
|
17
17
|
"repository": {
|
|
18
18
|
"type": "git",
|
|
19
|
-
"url": "
|
|
19
|
+
"url": "https://github.com/prayone/react-vant-nova",
|
|
20
20
|
"branch": "main",
|
|
21
21
|
"package": "./packages/react-vant"
|
|
22
22
|
},
|
|
23
23
|
"license": "MIT",
|
|
24
|
-
"author": "
|
|
24
|
+
"author": "wx: wpp_rvn",
|
|
25
25
|
"sideEffects": [
|
|
26
26
|
"**/*.css",
|
|
27
27
|
"**/*.less",
|