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