Skip to content

Commit b438d2d

Browse files
authored
feat: add offsetX to renderFn (#269)
* feat: add offsetX to renderFn * test: add case
1 parent 37ed992 commit b438d2d

File tree

4 files changed

+18
-2
lines changed

4 files changed

+18
-2
lines changed

src/List.tsx

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -504,6 +504,7 @@ export function RawList<T>(props: ListProps<T>, ref: React.Ref<ListRef>) {
504504
start,
505505
end,
506506
scrollWidth,
507+
offsetLeft,
507508
setInstanceRef,
508509
children,
509510
sharedConfig,

src/hooks/useChildren.tsx

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,13 @@
11
import * as React from 'react';
2-
import type { SharedConfig, RenderFunc } from '../interface';
2+
import type { RenderFunc, SharedConfig } from '../interface';
33
import { Item } from '../Item';
44

55
export default function useChildren<T>(
66
list: T[],
77
startIndex: number,
88
endIndex: number,
99
scrollWidth: number,
10+
offsetX: number,
1011
setNodeRef: (item: T, element: HTMLElement) => void,
1112
renderFunc: RenderFunc<T>,
1213
{ getKey }: SharedConfig<T>,
@@ -17,6 +18,7 @@ export default function useChildren<T>(
1718
style: {
1819
width: scrollWidth,
1920
},
21+
offsetX,
2022
}) as React.ReactElement;
2123

2224
const key = getKey(item);

src/interface.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
export type RenderFunc<T> = (
22
item: T,
33
index: number,
4-
props: { style?: React.CSSProperties },
4+
props: { style: React.CSSProperties; offsetX: number },
55
) => React.ReactNode;
66

77
export interface SharedConfig<T> {

tests/props.test.js

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -40,4 +40,17 @@ describe('Props', () => {
4040

4141
expect(wrapper.find('.prefix-holder-inner').length).toBeTruthy();
4242
});
43+
44+
it('offsetX in renderFn', () => {
45+
let scrollLeft;
46+
mount(
47+
<List data={[0]} itemKey={id => id} prefixCls="prefix">
48+
{(id, _, { offsetX }) => {
49+
scrollLeft = offsetX;
50+
return <div>{id}</div>}}
51+
</List>,
52+
);
53+
54+
expect(scrollLeft).toEqual(0);
55+
});
4356
});

0 commit comments

Comments
 (0)