diff --git a/src/packages/searchbar/__tests__/searchbar.spec.tsx b/src/packages/searchbar/__tests__/searchbar.spec.tsx index a0958e0859..0ed6bf7f3a 100644 --- a/src/packages/searchbar/__tests__/searchbar.spec.tsx +++ b/src/packages/searchbar/__tests__/searchbar.spec.tsx @@ -1,10 +1,10 @@ import * as React from 'react' -import { render } from '@testing-library/react' +import { fireEvent, render } from '@testing-library/react' import '@testing-library/jest-dom' -import Searchbar from '@/packages/searchbar' +import SearchBar from '@/packages/searchbar' test('basic usage', () => { - const { container } = render() + const { container } = render() expect(container.querySelector('.nut-searchbar-input')).toHaveAttribute( 'placeholder', '请输入文字' @@ -12,7 +12,7 @@ test('basic usage', () => { }) test('should limit maxlength of input value when using maxlength prop', () => { - const { container } = render() + const { container } = render() expect(container.querySelector('.nut-searchbar-input')).toHaveAttribute( 'maxlength', '5' @@ -23,9 +23,22 @@ test('should limit maxlength of input value when using maxlength prop', () => { }) test('Search box text settings', () => { - const { container } = render() + const { container } = render() expect(container.querySelector('.nut-searchbar-left')?.innerHTML).toBe('文本') expect(container.querySelector('.nut-searchbar-right')?.innerHTML).toBe( '确定' ) }) + +test('Search clear & change', () => { + const change = vi.fn() + const { container } = render( + + ) + const input = container.querySelector('.nut-searchbar-input') + expect(input?.getAttribute('value')).toBe('123') + const clear = container.querySelector('.nut-searchbar-clear') + fireEvent.click(clear as Element) + expect(change).toBeCalledWith('') + expect(input?.getAttribute('value')).toBe('') +}) diff --git a/src/packages/searchbar/demos/h5/demo7.tsx b/src/packages/searchbar/demos/h5/demo7.tsx index fd56a7c864..7fa543d515 100644 --- a/src/packages/searchbar/demos/h5/demo7.tsx +++ b/src/packages/searchbar/demos/h5/demo7.tsx @@ -3,17 +3,9 @@ import { SearchBar } from '../../searchbar' const Demo7 = () => { const [value, setValue] = useState('') - const change = (val: string, e: React.ChangeEvent) => { - setValue(val) - } return ( <> - ) => - change(val, e) - } - maxLength={10} - /> + setValue(val)} maxLength={10} />
{ const [value, setValue] = useState('') - const change = (val: string, e: React.ChangeEvent) => { - setValue(val) - } return ( <> - ) => - change(val, e) - } - maxLength={10} - /> + setValue(val)} maxLength={10} />
void /** 输入框内容变化时触发 */ - onChange?: (value: string, event: ChangeEvent) => void + onChange?: (value: string, event?: ChangeEvent) => void /** 输入框获得焦点时触发 */ onFocus?: (value: string, event: FocusEvent) => void /** 输入框失去焦点时触发 */ @@ -190,6 +190,7 @@ export const SearchBar: FunctionComponent< } setValue('') forceFocus() + onChange && onChange?.('') onClear && onClear(event) } const onKeypress = (e: any) => { diff --git a/src/packages/searchbar/searchbar.tsx b/src/packages/searchbar/searchbar.tsx index 1a79af092e..81822e56de 100644 --- a/src/packages/searchbar/searchbar.tsx +++ b/src/packages/searchbar/searchbar.tsx @@ -29,7 +29,7 @@ export interface SearchBarProps extends BasicComponent { /** 确定搜索时触发 */ onSearch?: (val: string) => void /** 输入框内容变化时触发 */ - onChange?: (value: string, event: ChangeEvent) => void + onChange?: (value: string, event?: ChangeEvent) => void /** 输入框获得焦点时触发 */ onFocus?: (value: string, event: FocusEvent) => void /** 输入框失去焦点时触发 */ @@ -193,6 +193,7 @@ export const SearchBar: FunctionComponent< return } setValue('') + onChange && onChange?.('') onClear && onClear(event) forceFocus() }