@sheinx/base 3.7.0-beta.2 → 3.7.0-beta.4
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/cjs/sticky/sticky.d.ts.map +1 -1
- package/cjs/sticky/sticky.js +6 -0
- package/cjs/table/table.d.ts.map +1 -1
- package/cjs/table/table.js +45 -105
- package/cjs/table/table.type.d.ts +1 -1
- package/cjs/table/table.type.d.ts.map +1 -1
- package/cjs/table/tbody.d.ts.map +1 -1
- package/cjs/table/tbody.js +0 -3
- package/cjs/table/tbody.type.d.ts +0 -1
- package/cjs/table/tbody.type.d.ts.map +1 -1
- package/cjs/table/tfoot.d.ts.map +1 -1
- package/cjs/table/tfoot.js +0 -10
- package/cjs/table/tfoot.type.d.ts +0 -1
- package/cjs/table/tfoot.type.d.ts.map +1 -1
- package/cjs/table/thead.d.ts.map +1 -1
- package/cjs/table/thead.js +7 -19
- package/cjs/table/thead.type.d.ts +0 -1
- package/cjs/table/thead.type.d.ts.map +1 -1
- package/cjs/table/tr.d.ts +1 -2
- package/cjs/table/tr.d.ts.map +1 -1
- package/cjs/table/tr.js +15 -15
- package/cjs/virtual-scroll/scroll-table.d.ts +28 -0
- package/cjs/virtual-scroll/scroll-table.d.ts.map +1 -0
- package/cjs/virtual-scroll/scroll-table.js +152 -0
- package/cjs/virtual-scroll/scroll.d.ts.map +1 -1
- package/cjs/virtual-scroll/scroll.js +4 -4
- package/esm/sticky/sticky.d.ts.map +1 -1
- package/esm/sticky/sticky.js +7 -1
- package/esm/table/table.d.ts.map +1 -1
- package/esm/table/table.js +45 -105
- package/esm/table/table.type.d.ts +1 -1
- package/esm/table/table.type.d.ts.map +1 -1
- package/esm/table/tbody.d.ts.map +1 -1
- package/esm/table/tbody.js +0 -3
- package/esm/table/tbody.type.d.ts +0 -1
- package/esm/table/tbody.type.d.ts.map +1 -1
- package/esm/table/tfoot.d.ts.map +1 -1
- package/esm/table/tfoot.js +0 -10
- package/esm/table/tfoot.type.d.ts +0 -1
- package/esm/table/tfoot.type.d.ts.map +1 -1
- package/esm/table/thead.d.ts.map +1 -1
- package/esm/table/thead.js +7 -19
- package/esm/table/thead.type.d.ts +0 -1
- package/esm/table/thead.type.d.ts.map +1 -1
- package/esm/table/tr.d.ts +1 -2
- package/esm/table/tr.d.ts.map +1 -1
- package/esm/table/tr.js +15 -15
- package/esm/virtual-scroll/scroll-table.d.ts +28 -0
- package/esm/virtual-scroll/scroll-table.d.ts.map +1 -0
- package/esm/virtual-scroll/scroll-table.js +145 -0
- package/esm/virtual-scroll/scroll.d.ts.map +1 -1
- package/esm/virtual-scroll/scroll.js +4 -4
- package/package.json +2 -2
package/esm/table/thead.js
CHANGED
|
@@ -152,44 +152,32 @@ export default (function (props) {
|
|
|
152
152
|
});
|
|
153
153
|
};
|
|
154
154
|
var getFixedStyle = function getFixedStyle(fixed, index, colSpan, level) {
|
|
155
|
+
// 累加level 至 0 的所有高度
|
|
156
|
+
var top = context.trHeights.slice(0, level).reduce(function (a, b) {
|
|
157
|
+
return toNum(a) + toNum(b);
|
|
158
|
+
}, 0);
|
|
155
159
|
if (fixed === 'left') {
|
|
156
|
-
if (props.virtual) {
|
|
157
|
-
// 这是virtual table场景下的th样式
|
|
158
|
-
return {
|
|
159
|
-
transform: "translate3d(var(--virtual-fixed-left, 0), 0, 0)"
|
|
160
|
-
};
|
|
161
|
-
}
|
|
162
160
|
var left = colgroup.slice(0, index).reduce(function (a, b) {
|
|
163
161
|
return toNum(a) + toNum(b);
|
|
164
162
|
}, 0);
|
|
165
|
-
// 这是base table场景下的th样式
|
|
166
163
|
return {
|
|
167
164
|
left: left,
|
|
168
|
-
top:
|
|
165
|
+
top: top,
|
|
169
166
|
position: 'sticky'
|
|
170
167
|
};
|
|
171
168
|
}
|
|
172
169
|
if (fixed === 'right') {
|
|
173
|
-
if (props.virtual) {
|
|
174
|
-
// 这是virtual table场景下的th样式
|
|
175
|
-
return {
|
|
176
|
-
transform: "translate3d(var(--virtual-fixed-right, 0), 0, 0)"
|
|
177
|
-
};
|
|
178
|
-
}
|
|
179
170
|
var right = colgroup.slice(index + colSpan).reduce(function (a, b) {
|
|
180
171
|
return toNum(a) + toNum(b);
|
|
181
172
|
}, 0);
|
|
182
|
-
// 这是base table场景下的th样式
|
|
183
173
|
return {
|
|
184
174
|
right: right,
|
|
185
|
-
top:
|
|
175
|
+
top: top,
|
|
186
176
|
position: 'sticky'
|
|
187
177
|
};
|
|
188
178
|
}
|
|
189
|
-
|
|
190
|
-
// 这是base table场景下的非fixed th样式
|
|
191
179
|
return {
|
|
192
|
-
top:
|
|
180
|
+
top: top,
|
|
193
181
|
position: 'sticky'
|
|
194
182
|
};
|
|
195
183
|
};
|
|
@@ -8,7 +8,6 @@ export interface TheadProps extends Pick<OptionalToRequired<TableProps<any, any>
|
|
|
8
8
|
bordered?: boolean;
|
|
9
9
|
colgroup: (number | string | undefined)[];
|
|
10
10
|
datum: ListDatum;
|
|
11
|
-
virtual?: boolean;
|
|
12
11
|
treeColumnsName: string | undefined;
|
|
13
12
|
}
|
|
14
13
|
//# sourceMappingURL=thead.type.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"thead.type.d.ts","sourceRoot":"","sources":["thead.type.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AACrD,OAAO,EAAE,YAAY,EAAE,cAAc,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AAC7E,OAAO,KAAK,EAAE,iBAAiB,EAAE,kBAAkB,EAAE,MAAM,eAAe,CAAC;AAE3E,MAAM,MAAM,wBAAwB,GAAG,UAAU,CAAC,OAAO,cAAc,CAAC,CAAC,MAAM,CAAC,CAAC;AAEjF,MAAM,WAAW,UACf,SAAQ,IAAI,CACR,kBAAkB,CAAC,UAAU,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC,EACtC,MAAM,GACN,UAAU,GACV,gBAAgB,GAChB,iBAAiB,GACjB,eAAe,GACf,cAAc,GACd,OAAO,GACP,UAAU,GACV,cAAc,GACd,gBAAgB,CACnB,EACD,IAAI,CAAC,UAAU,CAAC,OAAO,YAAY,CAAC,GAAG,CAAC,CAAC,EAAE,UAAU,GAAG,gBAAgB,CAAC,EACzE,IAAI,CAAC,UAAU,CAAC,OAAO,cAAc,CAAC,GAAG,CAAC,CAAC,EAAE,YAAY,GAAG,gBAAgB,CAAC,EAC7E,IAAI,CAAC,wBAAwB,EAAE,SAAS,GAAG,WAAW,CAAC;IACzD,OAAO,EAAE,iBAAiB,CAAC,GAAG,CAAC,EAAE,CAAC;IAClC,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,QAAQ,EAAE,CAAC,MAAM,GAAG,MAAM,GAAG,SAAS,CAAC,EAAE,CAAC;IAC1C,KAAK,EAAE,SAAS,CAAC;IACjB,
|
|
1
|
+
{"version":3,"file":"thead.type.d.ts","sourceRoot":"","sources":["thead.type.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AACrD,OAAO,EAAE,YAAY,EAAE,cAAc,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AAC7E,OAAO,KAAK,EAAE,iBAAiB,EAAE,kBAAkB,EAAE,MAAM,eAAe,CAAC;AAE3E,MAAM,MAAM,wBAAwB,GAAG,UAAU,CAAC,OAAO,cAAc,CAAC,CAAC,MAAM,CAAC,CAAC;AAEjF,MAAM,WAAW,UACf,SAAQ,IAAI,CACR,kBAAkB,CAAC,UAAU,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC,EACtC,MAAM,GACN,UAAU,GACV,gBAAgB,GAChB,iBAAiB,GACjB,eAAe,GACf,cAAc,GACd,OAAO,GACP,UAAU,GACV,cAAc,GACd,gBAAgB,CACnB,EACD,IAAI,CAAC,UAAU,CAAC,OAAO,YAAY,CAAC,GAAG,CAAC,CAAC,EAAE,UAAU,GAAG,gBAAgB,CAAC,EACzE,IAAI,CAAC,UAAU,CAAC,OAAO,cAAc,CAAC,GAAG,CAAC,CAAC,EAAE,YAAY,GAAG,gBAAgB,CAAC,EAC7E,IAAI,CAAC,wBAAwB,EAAE,SAAS,GAAG,WAAW,CAAC;IACzD,OAAO,EAAE,iBAAiB,CAAC,GAAG,CAAC,EAAE,CAAC;IAClC,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,QAAQ,EAAE,CAAC,MAAM,GAAG,MAAM,GAAG,SAAS,CAAC,EAAE,CAAC;IAC1C,KAAK,EAAE,SAAS,CAAC;IACjB,eAAe,EAAE,MAAM,GAAG,SAAS,CAAC;CACrC"}
|
package/esm/table/tr.d.ts
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import type { TableFormatColumn } from '@sheinx/hooks';
|
|
2
2
|
import { TbodyProps, UseTableRowResult } from './tbody.type';
|
|
3
|
-
interface TrProps extends Pick<TbodyProps, 'jssStyle' | 'rowClassName' | 'datum' | 'treeFunc' | 'treeExpandLevel' | 'treeEmptyExpand' | 'expandIcon' | 'treeExpandIcon' | 'loader' | 'isEmptyTree' | 'setRowHeight' | '
|
|
3
|
+
interface TrProps extends Pick<TbodyProps, 'jssStyle' | 'rowClassName' | 'datum' | 'treeFunc' | 'treeExpandLevel' | 'treeEmptyExpand' | 'expandIcon' | 'treeExpandIcon' | 'loader' | 'isEmptyTree' | 'setRowHeight' | 'striped' | 'radio' | 'onRowClick' | 'rowClickAttr' | 'rowEvents' | 'bodyScrollWidth' | 'resizeFlag' | 'treeCheckAll' | 'onCellClick'> {
|
|
4
4
|
row: {
|
|
5
5
|
data: any[];
|
|
6
6
|
colSpan: number;
|
|
@@ -17,7 +17,6 @@ interface TrProps extends Pick<TbodyProps, 'jssStyle' | 'rowClassName' | 'datum'
|
|
|
17
17
|
handleExpandClick: (col: TableFormatColumn<any>, data: any, index: number) => void;
|
|
18
18
|
treeColumnsName?: string;
|
|
19
19
|
originKey: string | number;
|
|
20
|
-
isCellHover: UseTableRowResult['isCellHover'];
|
|
21
20
|
hover?: boolean;
|
|
22
21
|
handleCellHover: UseTableRowResult['handleCellHover'];
|
|
23
22
|
hoverIndex: UseTableRowResult['hoverIndex'];
|
package/esm/table/tr.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tr.d.ts","sourceRoot":"","sources":["tr.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,eAAe,CAAC;AAQvD,OAAO,EAAE,UAAU,EAAE,iBAAiB,EAAE,MAAM,cAAc,CAAC;AAI7D,UAAU,OACR,SAAQ,IAAI,CACV,UAAU,EACR,UAAU,GACV,cAAc,GACd,OAAO,GACP,UAAU,GACV,iBAAiB,GACjB,iBAAiB,GACjB,YAAY,GACZ,gBAAgB,GAChB,QAAQ,GACR,aAAa,GACb,cAAc,GACd,SAAS,GACT,
|
|
1
|
+
{"version":3,"file":"tr.d.ts","sourceRoot":"","sources":["tr.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,eAAe,CAAC;AAQvD,OAAO,EAAE,UAAU,EAAE,iBAAiB,EAAE,MAAM,cAAc,CAAC;AAI7D,UAAU,OACR,SAAQ,IAAI,CACV,UAAU,EACR,UAAU,GACV,cAAc,GACd,OAAO,GACP,UAAU,GACV,iBAAiB,GACjB,iBAAiB,GACjB,YAAY,GACZ,gBAAgB,GAChB,QAAQ,GACR,aAAa,GACb,cAAc,GACd,SAAS,GACT,OAAO,GACP,YAAY,GACZ,cAAc,GACd,WAAW,GACX,iBAAiB,GACjB,YAAY,GACZ,cAAc,GACd,aAAa,CAChB;IACD,GAAG,EAAE;QACH,IAAI,EAAE,GAAG,EAAE,CAAC;QACZ,OAAO,EAAE,MAAM,CAAC;QAChB,OAAO,EAAE,MAAM,CAAC;KACjB,EAAE,CAAC;IACJ,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,EAAE,iBAAiB,CAAC,GAAG,CAAC,EAAE,CAAC;IAClC,SAAS,EAAE,OAAO,CAAC;IACnB,QAAQ,EAAE,CAAC,MAAM,GAAG,MAAM,GAAG,SAAS,CAAC,EAAE,CAAC;IAC1C,OAAO,EAAE,GAAG,CAAC;IACb,QAAQ,EAAE,OAAO,CAAC;IAClB,SAAS,EAAE,UAAU,CAAC,eAAe,CAAC,GAAG,SAAS,CAAC;IACnD,cAAc,EAAE,OAAO,CAAC;IACxB,iBAAiB,EAAE,CAAC,GAAG,EAAE,iBAAiB,CAAC,GAAG,CAAC,EAAE,IAAI,EAAE,GAAG,EAAE,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IACnF,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,SAAS,EAAE,MAAM,GAAG,MAAM,CAAC;IAC3B,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,eAAe,EAAE,iBAAiB,CAAC,iBAAiB,CAAC,CAAC;IACtD,UAAU,EAAE,iBAAiB,CAAC,YAAY,CAAC,CAAC;IAC5C,QAAQ,EAAE,OAAO,CAAC;IAClB,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB;AAED,QAAA,MAAM,EAAE,UAAW,OAAO,4CAgazB,CAAC;AAEF,eAAe,EAAE,CAAC"}
|
package/esm/table/tr.js
CHANGED
|
@@ -39,11 +39,6 @@ var Tr = function Tr(props) {
|
|
|
39
39
|
var getFixedStyle = function getFixedStyle(fixed, index, colSpan) {
|
|
40
40
|
if (!props.isScrollX) return;
|
|
41
41
|
if (fixed === 'left') {
|
|
42
|
-
if (props.virtual) {
|
|
43
|
-
return {
|
|
44
|
-
transform: "translate3d(var(--virtual-fixed-left, 0), 0, 0)"
|
|
45
|
-
};
|
|
46
|
-
}
|
|
47
42
|
var left = props.colgroup.slice(0, index).reduce(function (a, b) {
|
|
48
43
|
return toNum(a) + toNum(b);
|
|
49
44
|
}, 0);
|
|
@@ -53,11 +48,6 @@ var Tr = function Tr(props) {
|
|
|
53
48
|
};
|
|
54
49
|
}
|
|
55
50
|
if (fixed === 'right') {
|
|
56
|
-
if (props.virtual) {
|
|
57
|
-
return {
|
|
58
|
-
transform: "translate3d(var(--virtual-fixed-right, 0), 0, 0)"
|
|
59
|
-
};
|
|
60
|
-
}
|
|
61
51
|
var right = props.colgroup.slice(index + colSpan).reduce(function (a, b) {
|
|
62
52
|
return toNum(a) + toNum(b);
|
|
63
53
|
}, 0);
|
|
@@ -272,18 +262,28 @@ var Tr = function Tr(props) {
|
|
|
272
262
|
if (data[i]) {
|
|
273
263
|
var last = cols[i + (data[i].colSpan || 1) - 1] || {};
|
|
274
264
|
var isRowSpanTd = data[i].rowSpan > 1;
|
|
265
|
+
var shouldBindMouseEvent = props.hover && hasSiblingRowSpan || isRowSpanTd;
|
|
266
|
+
var showCellHover = props.hoverIndex.has(props.rowIndex);
|
|
267
|
+
if (!showCellHover && data[i].rowSpan > 1) {
|
|
268
|
+
for (var j = 0; j < data[i].rowSpan; j++) {
|
|
269
|
+
if (props.hoverIndex.has(props.rowIndex + j)) {
|
|
270
|
+
showCellHover = true;
|
|
271
|
+
break;
|
|
272
|
+
}
|
|
273
|
+
}
|
|
274
|
+
}
|
|
275
275
|
var td = /*#__PURE__*/_jsx(Td, {
|
|
276
276
|
col: col,
|
|
277
277
|
data: data[i].data,
|
|
278
278
|
colSpan: data[i].colSpan,
|
|
279
279
|
rowSpan: data[i].rowSpan,
|
|
280
|
-
onMouseEnter:
|
|
281
|
-
props.handleCellHover(props.rowIndex, data[i].rowSpan);
|
|
280
|
+
onMouseEnter: shouldBindMouseEvent ? function () {
|
|
281
|
+
return props.handleCellHover(props.rowIndex, data[i].rowSpan);
|
|
282
282
|
} : undefined,
|
|
283
|
-
onMouseLeave:
|
|
284
|
-
props.handleCellHover(-1, 0);
|
|
283
|
+
onMouseLeave: shouldBindMouseEvent ? function () {
|
|
284
|
+
return props.handleCellHover(-1, 0);
|
|
285
285
|
} : undefined,
|
|
286
|
-
className: classNames(col.className, col.type === 'checkbox' && (tableClasses === null || tableClasses === void 0 ? void 0 : tableClasses.cellCheckbox), col.fixed === 'left' && (tableClasses === null || tableClasses === void 0 ? void 0 : tableClasses.cellFixedLeft), col.fixed === 'right' && (tableClasses === null || tableClasses === void 0 ? void 0 : tableClasses.cellFixedRight), col.align === 'center' && (tableClasses === null || tableClasses === void 0 ? void 0 : tableClasses.cellAlignCenter), col.align === 'right' && (tableClasses === null || tableClasses === void 0 ? void 0 : tableClasses.cellAlignRight), (col.lastFixed || col.firstFixed || last.lastFixed) && (tableClasses === null || tableClasses === void 0 ? void 0 : tableClasses.cellFixedLast), lastRowIndex === i && (tableClasses === null || tableClasses === void 0 ? void 0 : tableClasses.cellIgnoreBorder),
|
|
286
|
+
className: classNames(col.className, col.type === 'checkbox' && (tableClasses === null || tableClasses === void 0 ? void 0 : tableClasses.cellCheckbox), col.fixed === 'left' && (tableClasses === null || tableClasses === void 0 ? void 0 : tableClasses.cellFixedLeft), col.fixed === 'right' && (tableClasses === null || tableClasses === void 0 ? void 0 : tableClasses.cellFixedRight), col.align === 'center' && (tableClasses === null || tableClasses === void 0 ? void 0 : tableClasses.cellAlignCenter), col.align === 'right' && (tableClasses === null || tableClasses === void 0 ? void 0 : tableClasses.cellAlignRight), (col.lastFixed || col.firstFixed || last.lastFixed) && (tableClasses === null || tableClasses === void 0 ? void 0 : tableClasses.cellFixedLast), lastRowIndex === i && (tableClasses === null || tableClasses === void 0 ? void 0 : tableClasses.cellIgnoreBorder), showCellHover && (tableClasses === null || tableClasses === void 0 ? void 0 : tableClasses.cellHover)),
|
|
287
287
|
style: getTdStyle(col, data[i].colSpan),
|
|
288
288
|
direction: config.direction,
|
|
289
289
|
"data-role": col.type === 'checkbox' ? 'checkbox' : undefined,
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
interface scrollProps {
|
|
3
|
+
scrollHeight: number;
|
|
4
|
+
scrollWidth: number | string;
|
|
5
|
+
height?: number | string;
|
|
6
|
+
children: React.ReactNode;
|
|
7
|
+
keepScrollTop?: boolean;
|
|
8
|
+
wrapperRef?: React.RefObject<HTMLDivElement>;
|
|
9
|
+
tbodyRef?: React.RefObject<HTMLTableElement>;
|
|
10
|
+
onScroll?: (info: {
|
|
11
|
+
scrollLeft: number;
|
|
12
|
+
scrollTop: number;
|
|
13
|
+
x: number;
|
|
14
|
+
y: number;
|
|
15
|
+
fromDrag: boolean;
|
|
16
|
+
height: number;
|
|
17
|
+
width: number;
|
|
18
|
+
}) => void;
|
|
19
|
+
onScrollToBottom?: (options?: any) => void;
|
|
20
|
+
className?: string;
|
|
21
|
+
childrenStyle?: React.CSSProperties;
|
|
22
|
+
defaultHeight?: number;
|
|
23
|
+
isScrollY?: boolean;
|
|
24
|
+
isEmptyContent?: boolean;
|
|
25
|
+
}
|
|
26
|
+
declare const Scroll: (props: scrollProps) => import("react/jsx-runtime").JSX.Element;
|
|
27
|
+
export default Scroll;
|
|
28
|
+
//# sourceMappingURL=scroll-table.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"scroll-table.d.ts","sourceRoot":"","sources":["scroll-table.tsx"],"names":[],"mappings":"AAAA,OAAO,KAA0B,MAAM,OAAO,CAAC;AAI/C,UAAU,WAAW;IACnB,YAAY,EAAE,MAAM,CAAC;IACrB,WAAW,EAAE,MAAM,GAAG,MAAM,CAAC;IAC7B,MAAM,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;IACzB,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAC;IAC1B,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,UAAU,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC,cAAc,CAAC,CAAC;IAC7C,QAAQ,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC,gBAAgB,CAAC,CAAC;IAC7C,QAAQ,CAAC,EAAE,CAAC,IAAI,EAAE;QAChB,UAAU,EAAE,MAAM,CAAC;QACnB,SAAS,EAAE,MAAM,CAAC;QAClB,CAAC,EAAE,MAAM,CAAC;QACV,CAAC,EAAE,MAAM,CAAC;QACV,QAAQ,EAAE,OAAO,CAAC;QAClB,MAAM,EAAE,MAAM,CAAC;QACf,KAAK,EAAE,MAAM,CAAC;KACf,KAAK,IAAI,CAAC;IACX,gBAAgB,CAAC,EAAE,CAAC,OAAO,CAAC,EAAE,GAAG,KAAK,IAAI,CAAC;IAC3C,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,aAAa,CAAC,EAAE,KAAK,CAAC,aAAa,CAAC;IACpC,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,cAAc,CAAC,EAAE,OAAO,CAAC;CAC1B;AAWD,QAAA,MAAM,MAAM,UAAW,WAAW,4CA0HjC,CAAC;AAEF,eAAe,MAAM,CAAC"}
|
|
@@ -0,0 +1,145 @@
|
|
|
1
|
+
function _typeof(o) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && "function" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? "symbol" : typeof o; }, _typeof(o); }
|
|
2
|
+
function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
|
|
3
|
+
function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
|
|
4
|
+
function _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
|
|
5
|
+
function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == _typeof(i) ? i : String(i); }
|
|
6
|
+
function _toPrimitive(t, r) { if ("object" != _typeof(t) || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || "default"); if ("object" != _typeof(i)) return i; throw new TypeError("@@toPrimitive must return a primitive value."); } return ("string" === r ? String : Number)(t); }
|
|
7
|
+
import React, { useMemo, useRef } from 'react';
|
|
8
|
+
import { useForkRef, usePersistFn, useResize, util } from '@sheinx/hooks';
|
|
9
|
+
import { useConfig } from "../config";
|
|
10
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
11
|
+
import { jsxs as _jsxs } from "react/jsx-runtime";
|
|
12
|
+
var extractHeightValue = function extractHeightValue(num) {
|
|
13
|
+
if (util.isNumber(num)) return num;
|
|
14
|
+
var match = num.match(/(\d+)/);
|
|
15
|
+
if (match) {
|
|
16
|
+
return parseInt(match[0], 10);
|
|
17
|
+
}
|
|
18
|
+
return undefined;
|
|
19
|
+
};
|
|
20
|
+
var Scroll = function Scroll(props) {
|
|
21
|
+
var containerRef = useRef(null);
|
|
22
|
+
var scrollRef = useRef(null);
|
|
23
|
+
var wrapperRef = useForkRef(scrollRef, props.wrapperRef);
|
|
24
|
+
var _useRef = useRef({
|
|
25
|
+
timer: null,
|
|
26
|
+
isMouseDown: false
|
|
27
|
+
}),
|
|
28
|
+
context = _useRef.current;
|
|
29
|
+
// TODO: keepScrollTop考虑做成Table的新feat?
|
|
30
|
+
var _props$scrollHeight = props.scrollHeight,
|
|
31
|
+
scrollHeight = _props$scrollHeight === void 0 ? 0 : _props$scrollHeight,
|
|
32
|
+
_props$scrollWidth = props.scrollWidth,
|
|
33
|
+
scrollWidth = _props$scrollWidth === void 0 ? 0 : _props$scrollWidth,
|
|
34
|
+
_props$defaultHeight = props.defaultHeight,
|
|
35
|
+
defaultHeight = _props$defaultHeight === void 0 ? 0 : _props$defaultHeight,
|
|
36
|
+
_props$keepScrollTop = props.keepScrollTop,
|
|
37
|
+
keepScrollTop = _props$keepScrollTop === void 0 ? false : _props$keepScrollTop;
|
|
38
|
+
var _useResize = useResize({
|
|
39
|
+
targetRef: containerRef,
|
|
40
|
+
timer: 100
|
|
41
|
+
}),
|
|
42
|
+
width = _useResize.width,
|
|
43
|
+
h = _useResize.height;
|
|
44
|
+
var height = h || defaultHeight;
|
|
45
|
+
var config = useConfig();
|
|
46
|
+
var isRtl = config.direction === 'rtl';
|
|
47
|
+
var scrollerStyle = {
|
|
48
|
+
flex: 1,
|
|
49
|
+
minWidth: 0,
|
|
50
|
+
minHeight: 0,
|
|
51
|
+
overflow: props.isEmptyContent ? 'hidden' : 'auto',
|
|
52
|
+
width: '100%'
|
|
53
|
+
};
|
|
54
|
+
var containerStyle = {
|
|
55
|
+
height: '100%',
|
|
56
|
+
width: '100%',
|
|
57
|
+
display: 'flex',
|
|
58
|
+
position: 'sticky',
|
|
59
|
+
flexDirection: 'column',
|
|
60
|
+
top: 0,
|
|
61
|
+
overflow: props.isEmptyContent ? 'auto' : undefined
|
|
62
|
+
};
|
|
63
|
+
|
|
64
|
+
// 当滚动容器的高度为 0 时,paddingTop 为 0,避免滚动条抖动现象
|
|
65
|
+
var paddingTop = useMemo(function () {
|
|
66
|
+
if (keepScrollTop) return Math.max(0, Math.floor(scrollHeight - height));
|
|
67
|
+
return height === 0 ? 0 : Math.max(0, Math.floor(scrollHeight - height));
|
|
68
|
+
}, [scrollHeight, height]);
|
|
69
|
+
var placeStyle = {
|
|
70
|
+
paddingTop: paddingTop,
|
|
71
|
+
width: scrollWidth,
|
|
72
|
+
overflow: props.isScrollY ? 'hidden' : 'auto hidden',
|
|
73
|
+
height: props.isScrollY ? 0 : 1,
|
|
74
|
+
marginTop: props.isScrollY ? 0 : -1,
|
|
75
|
+
lineHeight: 0
|
|
76
|
+
};
|
|
77
|
+
var handleScroll = usePersistFn(function (e) {
|
|
78
|
+
var onScrollToBottom = props.onScrollToBottom;
|
|
79
|
+
var target = e.currentTarget;
|
|
80
|
+
var scrollLeft = target.scrollLeft,
|
|
81
|
+
scrollTop = target.scrollTop;
|
|
82
|
+
if (props.height && onScrollToBottom) {
|
|
83
|
+
var realHeight = extractHeightValue(props.height);
|
|
84
|
+
if (realHeight !== undefined) {
|
|
85
|
+
var touchBottom = target.scrollHeight === scrollTop + realHeight;
|
|
86
|
+
if (touchBottom) onScrollToBottom();
|
|
87
|
+
}
|
|
88
|
+
}
|
|
89
|
+
var maxY = target.scrollHeight - target.clientHeight;
|
|
90
|
+
var maxX = target.scrollWidth - target.clientWidth;
|
|
91
|
+
if (!isRtl) {
|
|
92
|
+
// 解决浏览器缩放以后导致滚动条长度出现小数
|
|
93
|
+
if (maxX - scrollLeft < 0 || maxX - scrollLeft < 1) scrollLeft = maxX;
|
|
94
|
+
if (scrollLeft < 0) scrollLeft = 0;
|
|
95
|
+
} else {
|
|
96
|
+
if (maxX + scrollLeft < 0 || maxX + scrollLeft < 1) scrollLeft = 0 - maxX;
|
|
97
|
+
if (scrollLeft > 0) scrollLeft = 0;
|
|
98
|
+
}
|
|
99
|
+
if (scrollTop > maxY || maxY - scrollTop < 1) scrollTop = maxY;
|
|
100
|
+
if (scrollTop < 0) scrollTop = 0;
|
|
101
|
+
var x = maxX === 0 ? 0 : Math.min(Math.abs(scrollLeft) / maxX, 1);
|
|
102
|
+
var y = maxY === 0 ? 0 : Math.min(scrollTop / maxY, 1);
|
|
103
|
+
if (props.onScroll) props.onScroll({
|
|
104
|
+
scrollLeft: scrollLeft,
|
|
105
|
+
scrollTop: scrollTop,
|
|
106
|
+
x: x,
|
|
107
|
+
y: y,
|
|
108
|
+
height: height,
|
|
109
|
+
width: width,
|
|
110
|
+
fromDrag: context.isMouseDown
|
|
111
|
+
});
|
|
112
|
+
});
|
|
113
|
+
var handleInnerScroll = usePersistFn(function (e) {
|
|
114
|
+
var scrollTop = e.currentTarget.scrollTop;
|
|
115
|
+
if (scrollRef.current) {
|
|
116
|
+
e.currentTarget.scrollTop = 0;
|
|
117
|
+
scrollRef.current.scrollTop += scrollTop;
|
|
118
|
+
}
|
|
119
|
+
});
|
|
120
|
+
return /*#__PURE__*/_jsxs("div", _objectSpread(_objectSpread({}, util.getDataAttribute({
|
|
121
|
+
role: 'scroll'
|
|
122
|
+
})), {}, {
|
|
123
|
+
style: scrollerStyle,
|
|
124
|
+
onScroll: handleScroll,
|
|
125
|
+
ref: wrapperRef,
|
|
126
|
+
onMouseDown: function onMouseDown() {
|
|
127
|
+
context.isMouseDown = true;
|
|
128
|
+
},
|
|
129
|
+
onMouseUp: function onMouseUp() {
|
|
130
|
+
context.isMouseDown = false;
|
|
131
|
+
},
|
|
132
|
+
children: [/*#__PURE__*/_jsx("div", _objectSpread(_objectSpread({}, util.getDataAttribute({
|
|
133
|
+
role: 'scroll-container'
|
|
134
|
+
})), {}, {
|
|
135
|
+
style: containerStyle,
|
|
136
|
+
ref: containerRef,
|
|
137
|
+
onScroll: handleInnerScroll,
|
|
138
|
+
children: props.children
|
|
139
|
+
})), /*#__PURE__*/_jsx("div", {
|
|
140
|
+
style: placeStyle,
|
|
141
|
+
children: "\xA0"
|
|
142
|
+
})]
|
|
143
|
+
}));
|
|
144
|
+
};
|
|
145
|
+
export default Scroll;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"scroll.d.ts","sourceRoot":"","sources":["scroll.tsx"],"names":[],"mappings":"AAAA,OAAO,KAA0B,MAAM,OAAO,CAAC;AAI/C,UAAU,WAAW;IACnB,YAAY,EAAE,MAAM,CAAC;IACrB,WAAW,EAAE,MAAM,GAAG,MAAM,CAAC;IAC7B,MAAM,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;IACzB,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAC;IAC1B,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,UAAU,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC,cAAc,CAAC,CAAC;IAC7C,QAAQ,CAAC,EAAE,CAAC,IAAI,EAAE;QAChB,UAAU,EAAE,MAAM,CAAC;QACnB,SAAS,EAAE,MAAM,CAAC;QAClB,CAAC,EAAE,MAAM,CAAC;QACV,CAAC,EAAE,MAAM,CAAC;QACV,QAAQ,EAAE,OAAO,CAAC;QAClB,MAAM,EAAE,MAAM,CAAC;QACf,KAAK,EAAE,MAAM,CAAC;KACf,KAAK,IAAI,CAAC;IACX,gBAAgB,CAAC,EAAE,CAAC,OAAO,CAAC,EAAE,GAAG,KAAK,IAAI,CAAC;IAC3C,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,KAAK,CAAC,EAAE,KAAK,CAAC,aAAa,CAAC;IAC5B,aAAa,CAAC,EAAE,KAAK,CAAC,aAAa,CAAC;IACpC,aAAa,CAAC,EAAE,KAAK,CAAC,aAAa,CAAC;IACpC,WAAW,CAAC,EAAE,MAAM,IAAI,CAAC;IACzB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,SAAS,CAAC,EAAE,OAAO,CAAC;CACrB;AAED,QAAA,MAAM,MAAM,UAAW,WAAW,
|
|
1
|
+
{"version":3,"file":"scroll.d.ts","sourceRoot":"","sources":["scroll.tsx"],"names":[],"mappings":"AAAA,OAAO,KAA0B,MAAM,OAAO,CAAC;AAI/C,UAAU,WAAW;IACnB,YAAY,EAAE,MAAM,CAAC;IACrB,WAAW,EAAE,MAAM,GAAG,MAAM,CAAC;IAC7B,MAAM,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;IACzB,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAC;IAC1B,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,UAAU,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC,cAAc,CAAC,CAAC;IAC7C,QAAQ,CAAC,EAAE,CAAC,IAAI,EAAE;QAChB,UAAU,EAAE,MAAM,CAAC;QACnB,SAAS,EAAE,MAAM,CAAC;QAClB,CAAC,EAAE,MAAM,CAAC;QACV,CAAC,EAAE,MAAM,CAAC;QACV,QAAQ,EAAE,OAAO,CAAC;QAClB,MAAM,EAAE,MAAM,CAAC;QACf,KAAK,EAAE,MAAM,CAAC;KACf,KAAK,IAAI,CAAC;IACX,gBAAgB,CAAC,EAAE,CAAC,OAAO,CAAC,EAAE,GAAG,KAAK,IAAI,CAAC;IAC3C,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,KAAK,CAAC,EAAE,KAAK,CAAC,aAAa,CAAC;IAC5B,aAAa,CAAC,EAAE,KAAK,CAAC,aAAa,CAAC;IACpC,aAAa,CAAC,EAAE,KAAK,CAAC,aAAa,CAAC;IACpC,WAAW,CAAC,EAAE,MAAM,IAAI,CAAC;IACzB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,SAAS,CAAC,EAAE,OAAO,CAAC;CACrB;AAED,QAAA,MAAM,MAAM,UAAW,WAAW,4CAgIjC,CAAC;AAEF,eAAe,MAAM,CAAC"}
|
|
@@ -40,13 +40,13 @@ var Scroll = function Scroll(props) {
|
|
|
40
40
|
width: '100%',
|
|
41
41
|
overflow: 'auto'
|
|
42
42
|
};
|
|
43
|
-
var containerStyle =
|
|
43
|
+
var containerStyle = {
|
|
44
44
|
height: '100%',
|
|
45
45
|
width: '100%',
|
|
46
46
|
display: 'inline-flex',
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
}
|
|
47
|
+
position: 'sticky',
|
|
48
|
+
top: 0
|
|
49
|
+
};
|
|
50
50
|
|
|
51
51
|
// 当滚动容器的高度为 0 时,paddingTop 为 0,避免滚动条抖动现象
|
|
52
52
|
var paddingTop = useMemo(function () {
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@sheinx/base",
|
|
3
|
-
"version": "3.7.0-beta.
|
|
3
|
+
"version": "3.7.0-beta.4",
|
|
4
4
|
"description": "",
|
|
5
5
|
"keywords": [],
|
|
6
6
|
"license": "MIT",
|
|
@@ -10,7 +10,7 @@
|
|
|
10
10
|
"module": "./esm/index.js",
|
|
11
11
|
"typings": "./cjs/index.d.ts",
|
|
12
12
|
"dependencies": {
|
|
13
|
-
"@sheinx/hooks": "3.7.0-beta.
|
|
13
|
+
"@sheinx/hooks": "3.7.0-beta.4",
|
|
14
14
|
"immer": "^10.0.0",
|
|
15
15
|
"classnames": "^2.0.0",
|
|
16
16
|
"@shined/reactive": "^0.1.3-alpha.0"
|