From c29d8a7c655ba9585b6442d75094b9a24626dfe7 Mon Sep 17 00:00:00 2001 From: Arturo Castillo Delgado Date: Tue, 2 Dec 2025 11:54:46 +0100 Subject: [PATCH 1/6] [EuiSearchBar] Make onChange args type simple, as before this is reverting a change introduced in #9142 for EuiSearchBarOnChangeArgs, where the query prop could be null also when there was no error, requiring additional checks in consumer code --- .../components/basic_table/in_memory_table.tsx | 10 ++++++++-- .../eui/src/components/search_bar/search_bar.tsx | 15 +-------------- 2 files changed, 9 insertions(+), 16 deletions(-) diff --git a/packages/eui/src/components/basic_table/in_memory_table.tsx b/packages/eui/src/components/basic_table/in_memory_table.tsx index 584a6162f471..fa5ec1a26c60 100644 --- a/packages/eui/src/components/basic_table/in_memory_table.tsx +++ b/packages/eui/src/components/basic_table/in_memory_table.tsx @@ -47,13 +47,19 @@ interface onChangeArgument { error: Error | null; } +// allows `query: null` in the onChange callback when using `searchFormat="text"` +interface EuiInMemoryTableSearchBarProps + extends Omit { + onChange?: (args: onChangeArgument) => void | boolean; +} + function isEuiSearchBarProps( x: EuiInMemoryTableProps['search'] -): x is EuiSearchBarProps { +): x is EuiInMemoryTableSearchBarProps { return typeof x !== 'boolean'; } -export type Search = boolean | EuiSearchBarProps; +export type Search = boolean | EuiInMemoryTableSearchBarProps; interface PaginationOptions extends EuiTablePaginationProps { pageSizeOptions?: number[]; diff --git a/packages/eui/src/components/search_bar/search_bar.tsx b/packages/eui/src/components/search_bar/search_bar.tsx index c57ce764fd2c..da798a106ddb 100644 --- a/packages/eui/src/components/search_bar/search_bar.tsx +++ b/packages/eui/src/components/search_bar/search_bar.tsx @@ -34,16 +34,6 @@ interface ArgsWithQuery { error: null; } -/** - * When `searchFormat` is 'text', `query` is null and the search is performed - * on the `queryText` directly without EQL parsing - */ -interface ArgsWithPlainText { - query: null; - queryText: string; - error: null; -} - interface ArgsWithError { query: null; queryText: string; @@ -58,10 +48,7 @@ export interface SchemaType { recognizedFields?: string[]; } -export type EuiSearchBarOnChangeArgs = - | ArgsWithQuery - | ArgsWithPlainText - | ArgsWithError; +export type EuiSearchBarOnChangeArgs = ArgsWithQuery | ArgsWithError; type HintPopOverProps = Partial< Pick< From efa7c1cf63525898af8ece171349218b2df4faac Mon Sep 17 00:00:00 2001 From: Arturo Castillo Delgado Date: Tue, 2 Dec 2025 12:19:49 +0100 Subject: [PATCH 2/6] Changelog --- packages/eui/changelogs/upcoming/9253.md | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 packages/eui/changelogs/upcoming/9253.md diff --git a/packages/eui/changelogs/upcoming/9253.md b/packages/eui/changelogs/upcoming/9253.md new file mode 100644 index 000000000000..b86ecfed3498 --- /dev/null +++ b/packages/eui/changelogs/upcoming/9253.md @@ -0,0 +1,4 @@ +**Bug fixes** + +- Fixed `EuiSearchBarOnChangeArgs` type to restore proper type narrowing when checking for `error` (regression from #9142), decoupling `searchFormat="text"` behavior in `EuiInMemoryTable` from `EuiSearchBar` + From 2fcb133747dec79271cd06a14b95c1a3120d4f1f Mon Sep 17 00:00:00 2001 From: Arturo Castillo Delgado Date: Tue, 2 Dec 2025 14:21:33 +0100 Subject: [PATCH 3/6] [EuiInMemoryTable] Export EuiInMemoryTableSearchBarProps interface --- packages/eui/src/components/basic_table/in_memory_table.tsx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/eui/src/components/basic_table/in_memory_table.tsx b/packages/eui/src/components/basic_table/in_memory_table.tsx index fa5ec1a26c60..babcf3ad7e8f 100644 --- a/packages/eui/src/components/basic_table/in_memory_table.tsx +++ b/packages/eui/src/components/basic_table/in_memory_table.tsx @@ -48,7 +48,7 @@ interface onChangeArgument { } // allows `query: null` in the onChange callback when using `searchFormat="text"` -interface EuiInMemoryTableSearchBarProps +export interface EuiInMemoryTableSearchBarProps extends Omit { onChange?: (args: onChangeArgument) => void | boolean; } From beb9a50fb3ced62c96ae26786de3593016b76dca Mon Sep 17 00:00:00 2001 From: Arturo Castillo Delgado Date: Tue, 2 Dec 2025 14:40:36 +0100 Subject: [PATCH 4/6] [EuiInMemoryTable] Export types for real --- .../eui/src/components/basic_table/in_memory_table.tsx | 6 +++--- packages/eui/src/components/basic_table/index.ts | 7 ++++++- 2 files changed, 9 insertions(+), 4 deletions(-) diff --git a/packages/eui/src/components/basic_table/in_memory_table.tsx b/packages/eui/src/components/basic_table/in_memory_table.tsx index babcf3ad7e8f..d375df877b82 100644 --- a/packages/eui/src/components/basic_table/in_memory_table.tsx +++ b/packages/eui/src/components/basic_table/in_memory_table.tsx @@ -41,7 +41,7 @@ import { EuiComponentDefaults, } from '../provider/component_defaults'; -interface onChangeArgument { +export interface EuiInMemoryTableSearchBarOnChangeArgs { query: Query | null; queryText: string; error: Error | null; @@ -50,7 +50,7 @@ interface onChangeArgument { // allows `query: null` in the onChange callback when using `searchFormat="text"` export interface EuiInMemoryTableSearchBarProps extends Omit { - onChange?: (args: onChangeArgument) => void | boolean; + onChange?: (args: EuiInMemoryTableSearchBarOnChangeArgs) => void | boolean; } function isEuiSearchBarProps( @@ -526,7 +526,7 @@ export class EuiInMemoryTable extends Component< }); }; - onQueryChange = ({ query, queryText, error }: onChangeArgument) => { + onQueryChange = ({ query, queryText, error }: EuiInMemoryTableSearchBarOnChangeArgs) => { const { search } = this.props; if (isEuiSearchBarProps(search)) { if (search.onChange) { diff --git a/packages/eui/src/components/basic_table/index.ts b/packages/eui/src/components/basic_table/index.ts index 4bf94ae0f56a..7c10db455ad9 100644 --- a/packages/eui/src/components/basic_table/index.ts +++ b/packages/eui/src/components/basic_table/index.ts @@ -13,7 +13,12 @@ export type { CriteriaWithPagination, } from './basic_table'; export { EuiBasicTable } from './basic_table'; -export type { EuiInMemoryTableProps, Search } from './in_memory_table'; +export type { + EuiInMemoryTableProps, + EuiInMemoryTableSearchBarOnChangeArgs, + EuiInMemoryTableSearchBarProps, + Search, +} from './in_memory_table'; export { EuiInMemoryTable } from './in_memory_table'; export type { EuiTableDataType, From 7a775f2f3ad8ee52692cf32632ba7657b9a634b0 Mon Sep 17 00:00:00 2001 From: Arturo Castillo Delgado Date: Tue, 2 Dec 2025 14:43:15 +0100 Subject: [PATCH 5/6] Lint --- packages/eui/src/components/basic_table/in_memory_table.tsx | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/packages/eui/src/components/basic_table/in_memory_table.tsx b/packages/eui/src/components/basic_table/in_memory_table.tsx index d375df877b82..95414ce07e37 100644 --- a/packages/eui/src/components/basic_table/in_memory_table.tsx +++ b/packages/eui/src/components/basic_table/in_memory_table.tsx @@ -526,7 +526,11 @@ export class EuiInMemoryTable extends Component< }); }; - onQueryChange = ({ query, queryText, error }: EuiInMemoryTableSearchBarOnChangeArgs) => { + onQueryChange = ({ + query, + queryText, + error, + }: EuiInMemoryTableSearchBarOnChangeArgs) => { const { search } = this.props; if (isEuiSearchBarProps(search)) { if (search.onChange) { From 08d6dc6ca2297f7732490736e7c19922ff78cecd Mon Sep 17 00:00:00 2001 From: Arturo Castillo Delgado Date: Wed, 3 Dec 2025 11:49:38 +0100 Subject: [PATCH 6/6] Update changelog --- packages/eui/changelogs/upcoming/9253.md | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/packages/eui/changelogs/upcoming/9253.md b/packages/eui/changelogs/upcoming/9253.md index b86ecfed3498..28ab4384a3c9 100644 --- a/packages/eui/changelogs/upcoming/9253.md +++ b/packages/eui/changelogs/upcoming/9253.md @@ -1,4 +1,2 @@ -**Bug fixes** - -- Fixed `EuiSearchBarOnChangeArgs` type to restore proper type narrowing when checking for `error` (regression from #9142), decoupling `searchFormat="text"` behavior in `EuiInMemoryTable` from `EuiSearchBar` - +- Updated `EuiSearchBarOnChangeArgs` to restore proper type narrowing when checking for `error` (regression from #9142), decoupling `searchFormat="text"` behavior in `EuiInMemoryTable` from `EuiSearchBar` +- Export new `EuiInMemoryTableSearchBarProps` type