@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.
Files changed (53) hide show
  1. package/cjs/sticky/sticky.d.ts.map +1 -1
  2. package/cjs/sticky/sticky.js +6 -0
  3. package/cjs/table/table.d.ts.map +1 -1
  4. package/cjs/table/table.js +45 -105
  5. package/cjs/table/table.type.d.ts +1 -1
  6. package/cjs/table/table.type.d.ts.map +1 -1
  7. package/cjs/table/tbody.d.ts.map +1 -1
  8. package/cjs/table/tbody.js +0 -3
  9. package/cjs/table/tbody.type.d.ts +0 -1
  10. package/cjs/table/tbody.type.d.ts.map +1 -1
  11. package/cjs/table/tfoot.d.ts.map +1 -1
  12. package/cjs/table/tfoot.js +0 -10
  13. package/cjs/table/tfoot.type.d.ts +0 -1
  14. package/cjs/table/tfoot.type.d.ts.map +1 -1
  15. package/cjs/table/thead.d.ts.map +1 -1
  16. package/cjs/table/thead.js +7 -19
  17. package/cjs/table/thead.type.d.ts +0 -1
  18. package/cjs/table/thead.type.d.ts.map +1 -1
  19. package/cjs/table/tr.d.ts +1 -2
  20. package/cjs/table/tr.d.ts.map +1 -1
  21. package/cjs/table/tr.js +15 -15
  22. package/cjs/virtual-scroll/scroll-table.d.ts +28 -0
  23. package/cjs/virtual-scroll/scroll-table.d.ts.map +1 -0
  24. package/cjs/virtual-scroll/scroll-table.js +152 -0
  25. package/cjs/virtual-scroll/scroll.d.ts.map +1 -1
  26. package/cjs/virtual-scroll/scroll.js +4 -4
  27. package/esm/sticky/sticky.d.ts.map +1 -1
  28. package/esm/sticky/sticky.js +7 -1
  29. package/esm/table/table.d.ts.map +1 -1
  30. package/esm/table/table.js +45 -105
  31. package/esm/table/table.type.d.ts +1 -1
  32. package/esm/table/table.type.d.ts.map +1 -1
  33. package/esm/table/tbody.d.ts.map +1 -1
  34. package/esm/table/tbody.js +0 -3
  35. package/esm/table/tbody.type.d.ts +0 -1
  36. package/esm/table/tbody.type.d.ts.map +1 -1
  37. package/esm/table/tfoot.d.ts.map +1 -1
  38. package/esm/table/tfoot.js +0 -10
  39. package/esm/table/tfoot.type.d.ts +0 -1
  40. package/esm/table/tfoot.type.d.ts.map +1 -1
  41. package/esm/table/thead.d.ts.map +1 -1
  42. package/esm/table/thead.js +7 -19
  43. package/esm/table/thead.type.d.ts +0 -1
  44. package/esm/table/thead.type.d.ts.map +1 -1
  45. package/esm/table/tr.d.ts +1 -2
  46. package/esm/table/tr.d.ts.map +1 -1
  47. package/esm/table/tr.js +15 -15
  48. package/esm/virtual-scroll/scroll-table.d.ts +28 -0
  49. package/esm/virtual-scroll/scroll-table.d.ts.map +1 -0
  50. package/esm/virtual-scroll/scroll-table.js +145 -0
  51. package/esm/virtual-scroll/scroll.d.ts.map +1 -1
  52. package/esm/virtual-scroll/scroll.js +4 -4
  53. package/package.json +2 -2
@@ -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: context.trHeights[level - 1] || 0,
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: context.trHeights[level - 1] || 0,
175
+ top: top,
186
176
  position: 'sticky'
187
177
  };
188
178
  }
189
-
190
- // 这是base table场景下的非fixed th样式
191
179
  return {
192
- top: context.trHeights[level - 1] || 0,
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,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,eAAe,EAAE,MAAM,GAAG,SAAS,CAAC;CACrC"}
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' | 'virtual' | 'striped' | 'radio' | 'onRowClick' | 'rowClickAttr' | 'rowEvents' | 'bodyScrollWidth' | 'resizeFlag' | 'treeCheckAll' | 'onCellClick'> {
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'];
@@ -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,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,WAAW,EAAE,iBAAiB,CAAC,aAAa,CAAC,CAAC;IAC9C,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,4CAuazB,CAAC;AAEF,eAAe,EAAE,CAAC"}
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: props.hover && hasSiblingRowSpan || isRowSpanTd ? function () {
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: props.hover && hasSiblingRowSpan || isRowSpanTd ? function () {
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), props.hoverIndex.has(props.rowIndex) && (tableClasses === null || tableClasses === void 0 ? void 0 : tableClasses.cellHover), isRowSpanTd && props.isCellHover(props.rowIndex, data[i].rowSpan) && (tableClasses === null || tableClasses === void 0 ? void 0 : tableClasses.cellHover)),
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,4CAkIjC,CAAC;AAEF,eAAe,MAAM,CAAC"}
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 = _defineProperty(_defineProperty({
43
+ var containerStyle = {
44
44
  height: '100%',
45
45
  width: '100%',
46
46
  display: 'inline-flex',
47
- overflow: 'hidden',
48
- position: 'sticky'
49
- }, isRtl ? 'right' : 'left', 0), "top", 0);
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.2",
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.2",
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"