From dee338a3208b1df25a4a01d915e6366ab60450d1 Mon Sep 17 00:00:00 2001 From: porink0424 Date: Wed, 10 Jul 2024 17:59:21 +0900 Subject: [PATCH] Add Debounce.tsx --- jupyterlab/src/components/Debounce.tsx | 28 ++++++++++++++++++++++++++ 1 file changed, 28 insertions(+) create mode 100644 jupyterlab/src/components/Debounce.tsx diff --git a/jupyterlab/src/components/Debounce.tsx b/jupyterlab/src/components/Debounce.tsx new file mode 100644 index 00000000..d3ff760d --- /dev/null +++ b/jupyterlab/src/components/Debounce.tsx @@ -0,0 +1,28 @@ +import React, { FC, useEffect } from 'react'; +import { TextField, TextFieldProps } from '@mui/material'; + +export const DebouncedInputTextField: FC<{ + onChange: (s: string, valid: boolean) => void; + delay: number; + textFieldProps: TextFieldProps; +}> = ({ onChange, delay, textFieldProps }) => { + const [text, setText] = React.useState(''); + const [valid, setValidity] = React.useState(true); + useEffect(() => { + const timer = setTimeout(() => { + onChange(text, valid); + }, delay); + return () => { + clearTimeout(timer); + }; + }, [text, delay]); + return ( + { + setText(e.target.value); + setValidity(e.target.validity.valid); + }} + {...textFieldProps} + /> + ); +}; \ No newline at end of file