diff --git a/.changeset/late-plants-bet.md b/.changeset/late-plants-bet.md new file mode 100644 index 00000000..0d91b058 --- /dev/null +++ b/.changeset/late-plants-bet.md @@ -0,0 +1,5 @@ +--- +"@devup-ui/components": patch +--- + +Add onClear prop in input component diff --git a/packages/components/src/components/Input/__tests__/index.browser.test.tsx b/packages/components/src/components/Input/__tests__/index.browser.test.tsx index 87da4497..63a8dee8 100644 --- a/packages/components/src/components/Input/__tests__/index.browser.test.tsx +++ b/packages/components/src/components/Input/__tests__/index.browser.test.tsx @@ -155,6 +155,16 @@ describe('Input', () => { }) expect(onChange).toHaveBeenCalledWith(expect.any(Object)) }) + + it('should call onClear props when click clear button', () => { + const onClear = vi.fn() + const { container } = render() + fireEvent.change(container.querySelector('input')!, { + target: { value: 'test' }, + }) + fireEvent.click(container.querySelector('[aria-label="clear-button"]')!) + expect(onClear).toHaveBeenCalled() + }) }) describe('Controlled Input', () => { diff --git a/packages/components/src/components/Input/index.tsx b/packages/components/src/components/Input/index.tsx index 661a448d..8da3f738 100644 --- a/packages/components/src/components/Input/index.tsx +++ b/packages/components/src/components/Input/index.tsx @@ -21,6 +21,7 @@ interface InputProps extends Omit, 'type'> { icon?: string errorMessage?: string } + onClear?: () => void colors?: { primary?: string error?: string @@ -49,6 +50,7 @@ export function Input({ className, classNames, ref, + onClear, ...props }: InputProps) { const [value, setValue] = useState(defaultValue || '') @@ -58,6 +60,7 @@ export function Input({ } const handleClear = () => { setValue('') + onClear?.() } const clearButtonVisible = value && !disabled && allowClear