Skip to content

Commit e5776c5

Browse files
committed
feat: typescript migration
1 parent e2a07d5 commit e5776c5

File tree

10 files changed

+32
-15
lines changed

10 files changed

+32
-15
lines changed
File renamed without changes.
File renamed without changes.

src/lib/ScrollToTop/ScrollToTop.jsx renamed to src/components/ScrollToTop/ScrollToTop.tsx

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,13 +2,17 @@ import React from "react";
22
import { useScrollToTop } from "./ScrollToTop.hook";
33
import "./ScrollToTop.styles.css";
44

5-
export const ScrollToTop = ({ children, style }) => {
5+
export interface ScrollToTopProps {
6+
children: React.ReactNode;
7+
style: React.CSSProperties;
8+
}
9+
10+
export const ScrollToTop = ({ children, style }: ScrollToTopProps) => {
611
const { isVisible, onClick } = useScrollToTop();
712

813
return (
914
<div
1015
className={`ScrollToTop ${isVisible ? "visible" : ""}`}
11-
isVisible={isVisible}
1216
onClick={onClick}
1317
style={style}
1418
>

src/lib/VirtualScroll/VirtualScroll.hook.js renamed to src/components/VirtualScroll/VirtualScroll.hook.ts

Lines changed: 12 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,16 @@
11
import { useEffect, useMemo, useRef, useState } from "react";
22

3-
export const useVirtualScroll = ({ list, onItemSelected }) => {
3+
interface useVirtualScrollProps {
4+
list: string[];
5+
onItemSelected: (item: string) => void;
6+
}
7+
8+
export const useVirtualScroll = ({
9+
list,
10+
onItemSelected,
11+
}: useVirtualScrollProps) => {
412
const scrollList = useMemo(() => [null, null, ...list, null, null], [list]);
5-
const scrollRef = useRef(null);
13+
const scrollRef = useRef<HTMLDivElement>(null);
614
const [centerIndex, setCenterIndex] = useState(0);
715

816
useEffect(() => {
@@ -18,7 +26,7 @@ export const useVirtualScroll = ({ list, onItemSelected }) => {
1826
);
1927
setCenterIndex(centerItemIndex);
2028

21-
onItemSelected(scrollList[centerItemIndex]);
29+
onItemSelected(scrollList[centerItemIndex] as string);
2230
};
2331
scrollContainer.addEventListener("scroll", updateCenterItemWithRef);
2432

@@ -28,6 +36,7 @@ export const useVirtualScroll = ({ list, onItemSelected }) => {
2836
scrollContainer.removeEventListener("scroll", updateCenterItemWithRef);
2937
};
3038
}
39+
return () => {};
3140
}, [scrollList, onItemSelected]);
3241

3342
return {
File renamed without changes.

src/lib/VirtualScroll/VirtualScroll.jsx renamed to src/components/VirtualScroll/VirtualScroll.tsx

Lines changed: 12 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -2,14 +2,23 @@ import React from "react";
22
import { useVirtualScroll } from "./VirtualScroll.hook";
33
import "./VirtualScroll.styles.css";
44

5+
export default interface VirtualScrollProps {
6+
list: string[];
7+
onItemSelected: (item: string) => void;
8+
containerItemStyle: React.CSSProperties;
9+
listStyle: React.CSSProperties;
10+
centerItemStyle: React.CSSProperties;
11+
itemStyle: React.CSSProperties;
12+
}
13+
514
export const VirtualScroll = ({
615
list,
716
onItemSelected,
8-
width,
17+
containerItemStyle,
918
listStyle,
1019
centerItemStyle,
1120
itemStyle,
12-
}) => {
21+
}: VirtualScrollProps) => {
1322
const {
1423
state: { scrollList, scrollRef, centerIndex },
1524
} = useVirtualScroll({
@@ -18,7 +27,7 @@ export const VirtualScroll = ({
1827
});
1928

2029
return (
21-
<div ref={scrollRef} width={width} className="Container">
30+
<div ref={scrollRef} style={containerItemStyle} className="Container">
2231
<div className="List">
2332
{scrollList.map((item, index) => (
2433
<div key={index} style={listStyle}>

β€Žsrc/index.jsβ€Ž

Lines changed: 0 additions & 7 deletions
This file was deleted.

β€Žsrc/index.tsβ€Ž

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,2 @@
1+
export { VirtualScroll } from "./components/VirtualScroll";
2+
export { ScrollToTop } from "./components/ScrollToTop";

0 commit comments

Comments
Β (0)