From d78bf868511c9921bca11a3b9ad2c17fa895bca3 Mon Sep 17 00:00:00 2001 From: cristianghita24 <61056777+cristianghita24@users.noreply.github.com> Date: Thu, 1 Feb 2024 08:09:46 +0200 Subject: [PATCH] [@mantine/hooks] use-debounced-state: Fix incorrect type definition (#5665) --- .../src/use-debounced-state/use-debounced-state.test.ts | 6 ++++++ .../hooks/src/use-debounced-state/use-debounced-state.ts | 4 ++-- 2 files changed, 8 insertions(+), 2 deletions(-) diff --git a/packages/@mantine/hooks/src/use-debounced-state/use-debounced-state.test.ts b/packages/@mantine/hooks/src/use-debounced-state/use-debounced-state.test.ts index 5af3a9db361..1a81aa1c00b 100644 --- a/packages/@mantine/hooks/src/use-debounced-state/use-debounced-state.test.ts +++ b/packages/@mantine/hooks/src/use-debounced-state/use-debounced-state.test.ts @@ -40,6 +40,12 @@ describe('use-debounced-state', () => { act(() => timeoutCallback()); expect(hook.result.current[0]).toEqual('test3'); + act(() => hook.result.current[1]((prev) => `${prev}0`)); + expect(hook.result.current[0]).toEqual('test3'); + + act(() => timeoutCallback()); + expect(hook.result.current[0]).toEqual('test30'); + clearTimeout.mockReset(); expect(clearTimeout).toHaveBeenCalledTimes(0); act(() => hook.unmount()); diff --git a/packages/@mantine/hooks/src/use-debounced-state/use-debounced-state.ts b/packages/@mantine/hooks/src/use-debounced-state/use-debounced-state.ts index ceb8b85957e..3c8d9aac1ef 100644 --- a/packages/@mantine/hooks/src/use-debounced-state/use-debounced-state.ts +++ b/packages/@mantine/hooks/src/use-debounced-state/use-debounced-state.ts @@ -1,4 +1,4 @@ -import { useCallback, useEffect, useRef, useState } from 'react'; +import { SetStateAction, useCallback, useEffect, useRef, useState } from 'react'; export function useDebouncedState( defaultValue: T, @@ -13,7 +13,7 @@ export function useDebouncedState( useEffect(() => clearTimeout, []); const debouncedSetValue = useCallback( - (newValue: T) => { + (newValue: SetStateAction) => { clearTimeout(); if (leadingRef.current && options.leading) { setValue(newValue);