1717 <img src="https://custom-icon-badges.demolab.com/badge/typescript-%23007ACC.svg?logo=typescript&logoColor=white" />
1818 </a >
1919 <a href =" https://www.npmjs.com/package/@better-hooks/window " >
20- <img src="https://custom-icon-badges.demolab.com/bundlephobia/min /@better-hooks/window?color=64BC4B&logo=package " />
20+ <img src="https://custom-icon-badges.demolab.com/npm/v /@better-hooks/window.svg?logo=npm&color=E10098 " />
2121 </a >
2222 <a href =" https://www.npmjs.com/package/@better-hooks/window " >
23- <img src="https://custom-icon-badges.demolab.com/npm/v/@better-hooks/window.svg?logo=npm&color=E10098" />
23+ <img src="https://custom-icon-badges.demolab.com/bundlephobia/minzip/@better-hooks/window?color=blueviolet&logo=package" />
24+ </a >
25+ <a href =" https://www.npmjs.com/package/@better-hooks/window " >
26+ <img src="https://custom-icon-badges.demolab.com/npm/dm/@better-hooks/window?logoColor=fff&logo=trending-up" />
2427 </a >
2528</p >
2629
@@ -34,10 +37,18 @@ Handle window events and observe window size
3437
3538🚀 ** Fast and light**
3639
37- ✨ ** Lifecycle window events**
40+ ✨ ** Lifecycle Window events**
41+
42+ 💎 ** Lifecycle Document events**
3843
3944🎯 ** Window size**
4045
46+ 🪄 ** Window scroll position**
47+
48+ 💡 ** Window focus**
49+
50+ 🎊 ** SSR Support**
51+
4152## Installation
4253
4354``` bash
@@ -62,6 +73,14 @@ import { useWindowEvent } from "@better-hooks/window";
6273
6374const MyComponent: React .FC = () => {
6475 // Unmounts event with component lifecycle
76+ useWindowEvent (" scroll" , () => {
77+ // ... Do something
78+ });
79+
80+ useWindowEvent (" wheel" , () => {
81+ // ... Do something
82+ });
83+
6584 useWindowEvent (" resize" , () => {
6685 // ... Do something
6786 });
@@ -73,21 +92,21 @@ const MyComponent: React.FC = () => {
7392
7493```
7594
95+ ---
96+
97+ #### useDocumentEvent
98+
7699``` tsx
77100import React from " react" ;
78- import { useWindowEvent } from " @better-hooks/window" ;
101+ import { useDocumentEvent } from " @better-hooks/window" ;
79102
80103const MyComponent: React .FC = () => {
81104 // Unmounts event with component lifecycle
82- useWindowEvent ( " scroll " , () => {
105+ useDocumentEvent ( " visibilitychange " , () => {
83106 // ... Do something
84107 });
85108
86- useWindowEvent (" wheel" , () => {
87- // ... Do something
88- });
89-
90- useWindowEvent (" resize" , () => {
109+ useDocumentEvent (" scroll" , () => {
91110 // ... Do something
92111 });
93112
@@ -116,3 +135,49 @@ const MyComponent: React.FC = () => {
116135}
117136
118137```
138+
139+ ---
140+
141+ #### useWindowScroll
142+
143+ ``` tsx
144+ import React from " react" ;
145+ import { useWindowScroll } from " @better-hooks/window" ;
146+
147+ const MyComponent: React .FC = () => {
148+ // Updates when scrolling
149+ const [x, y] = useWindowScroll ()
150+
151+ return (
152+ // ...
153+ )
154+ }
155+
156+ ```
157+
158+ ---
159+
160+ #### useWindowFocus
161+
162+ ``` tsx
163+ import React from " react" ;
164+ import { useWindowFocus } from " @better-hooks/window" ;
165+
166+ const MyComponent: React .FC = () => {
167+ // Updates when user leave our page
168+ const focus = useWindowFocus ()
169+
170+ useEffect (() => {
171+ if (focus ) {
172+ // User is using our page
173+ } else {
174+ // User has minimized window or leaved our page to different tab
175+ }
176+ }, [focus ])
177+
178+ return (
179+ // ...
180+ )
181+ }
182+
183+ ```
0 commit comments