* Upgrade @testing-library/user-event from v13 to v14
Migrate all test files to the v14 API:
- Add `await` to all userEvent calls (v14 returns promises)
- Replace `paste(element, text)` with `paste(text)` or fireEvent
- Replace `{selectall}` in type() with clear() + type()
- Remove `{ ctrlKey: true }` from click(), use keyboard modifiers
- Remove redundant act() wrappers (v14 handles act internally)
- Add `userEvent.setup({ advanceTimers })` for fake timer tests
- Use fireEvent.change() for number/spinbutton controlled inputs
- Fix selectEvent.ts fake timer detection for Jest 30
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
* Remove unused fireEvent import in InputSetupWizard.StartInput.test
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
* Fix lint errors from user-event v14 upgrade
- Fix import group ordering in AggregationWizard test files
- Move setupUser definition before first usage in SavedSearchForm.test
- Add eslint-disable for intentional fireEvent usage on controlled inputs
- Fix eslint issues in selectEvent helper and rename createUser to setup
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
---------
Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
Co-authored-by: Linus Pahl <linus.pahl@graylog.com>
* Migrate MetricsStore and GlobalThroughputStore from Reflux to React Query
Replace the Reflux-based MetricsStore and GlobalThroughputStore with a
shared MetricsProvider context that batches all metric subscriptions into
a single react-query POST to /cluster/metrics/multiple. This eliminates
Reflux from the metrics subsystem entirely.
New infrastructure:
- src/types/metrics.ts: shared metric type definitions
- src/contexts/MetricsProvider.tsx: batching context with ref-counted
subscriptions, 2s refetchInterval, fetchPeriodically
- src/hooks/useMetrics.ts: useMetrics, useNodeMetrics, useMetricsNames,
useGlobalThroughput hooks
Migrated 22 consumer files from useStore(MetricsStore) + MetricsActions
add/remove pattern to the new hooks. Deleted MetricsStore,
GlobalThroughputStore, and GlobalThroughputStore.test.ts.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
* Fix MetricsContext singleton for cross-bundle compatibility
The MetricsContext was created with plain createContext(), causing
enterprise plugin bundles to get a separate context instance. Use the
singleton pattern (matching NodesContext, StreamsContext, etc.) so the
same context instance is shared across all bundles.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
* Fix remaining MetricsStore type import in InputThroughputUtils
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
* Add MetricsProvider to test WrappingContainer
Tests rendering components that use useMetrics (e.g. Navigation with
GlobalThroughput) need MetricsProvider in the test wrapper, matching
how it's provided in the app via LoggedInPage.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
* Add useMetric and useNodeMetric convenience hooks for single metrics
Avoids the repetitive `useMemo(() => [name], [name])` wrapper pattern
when subscribing to a single metric name.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
* Use asMock helper in PipelineProcessingErrors test
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
* Fix type errors in PipelineProcessingErrors test mock data
Add missing `full_name` and `name` properties to mock meter metrics
to satisfy the `BaseMetric<MeterMetric>` type requirements.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
---------
Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
Co-authored-by: Ousmane SAMBA <ousmane@graylog.com>
* Render DefaultQueryParamProvider by default in wrappedTestingLibrary and remove redundant test wrappers.
* Fix `WidgetFocusProvider.test`.
* Fixing linter hints
* Fixing test
* Remove perspectives switch from navigation.
* Remove no longer needed filtering of navigation items, based on active perspective.
* Route to default welcome page instead of perspective specific page on start page.
* Remove action to switch perspective from quick jump modal.
* Remove perspective info from telemetry events.
* Remove not needed imports
* Remove perspectives context.
* Remove mocking of perspectives in tests.
* Cleanup
* Fixing tests
* Adding changelog.
* Extend `UPGRADING.md`.
* Update tests
* Cleanup
* Improve changelog
* Fixing Quick Jump for API Browser.
* Adding test.
* Restoring exports, but making them explicit.
* Adding missing exports.
* Using cleaner type.
* Exporting `cleanup` as well.
* Add dynamic Event Title field to event definition
* processor unit tests
* changelog
* optional -> nullable for consistency
* Add new field to fixtures
* Fix test finding multiple components
* Rename Event Title to Event Summary Template
* Address PR feedback
* Add event definition fields to filter event templated fields
* Install `@tanstack/react-table`.
* Implement tanstack table for core functionality of `EntityDataTable`.
* Reimplement sorting.
* Include bulk select column in tanstack table columns.
* Cleanup code
* Further cleanup code
* Create seperate component for `TableRow` again to be able to use `React.memo`.
* Cleanup `onSortChange` handler.
* Create separate hook to create react table object.
* Create separate hook for column definition generation.
* Move `useElementsWidth` hook into separate file.
* Start making use of tanstac table for row selection logic.
* Only create accessor columns for columns which exist as attributes in the entities.
* Fix linter hints
* Maintain column visibility in tanstack table.
* Use row id which does not include row index.
* Improve memorization of table rows. Fix issue where table row did not update after changing column visibility.
* Fixing tests
* Make use of tanstack table for logic related to selected entities.
* Align actions to the right.
* Fix name of `useColumnsWidth` hook.
* Add `indeterminate` prop for `Checkbox` component.
* Simplify bulk select col header.
* Remove errorprone `TableRow` memorization.
* Simplify `renderCell` usage.
* Avoid unnessecary unmounts of cell and header components.
* Extending entity list preferences with ability to hide columns + ordering.
* Adding tests.
* Do not return absent values.
* Improve naming of column related variables.
* Cleanup code
* Use only one array for information about column order and visibility. Before the arrays contained redundant information.
* Get rid of small `TableRow` component.
* Reverting accidental change.
* Restructure column definition creation.
* Migrating to JUnit6, fixing `ObjectMapper`.
* Properly type column definition meta.
* Injecting `MongoCollections` directly.
* Reverting accidental change.
* Fix column renderes for lookup table overview.
* Fixing finder query.
* Fix check if entity is selectable.
* Use stable refernece for `renderActions` functions, to fix tests.
* Fixing sort icon description
* Remove not needed file.
* Fix linter hints
* Cleanup code
* Fix issue with absent actions col.
* Update frontend implementation of user table preferences regarding API changes.
* Revert naming `EntityDataTable` prop `visibleColumns` to `visibleColumnOrder`
* Replace `visibleColumns` array prop in `EntityDataTable` for new `columnPreferences` object.
The `columnPreferences` also include information about hidden columns and custom column width.
With this change newly intorduced columns will be displayed by default.
* Update tests.
* Fixing type.
* Update style guide examples
* Remove no longer needed `BulkSelectHead`.
* Only update user column visibility preference for columns which have been explicitly hidden or shown.
* Fixing merge conflicts.
* Remove not needed file.
---------
Co-authored-by: Dennis Oelkers <dennis@graylog.com>
* Simplify react-select usage in tests.
* Fixing TS error
* Fixing test
* Allow using `within` in new selectors.
* Cleanup
* Simplify finding an option.
* Remove not needed `matchProp` props from select component.
* Properly stringify labels in custom filter
* Remove not needed import
* Implement select helper methods for furhter cases.
* Fix selecting an option when input already has a value.
* Improve naming of custom methods.
* Implement new custom methods for further cases.
* Fixing test
* Simplify implementation
* Implement `selectEvent.chooseOption` for `AggregationConditionExpression.test.tsx`.
* Add "Valid" annotation to CreateEntityRequest#entity (#22820)
Enables cascading validations.
* Expose MongoCollection#findOneAndUpdate method with update pipeline (#22820)
This is required to use update aggregation pipelines.
* Add more helper methods to PluginModule (#22820)
- addGRNTypeProvider
- addCapabilityPermissions
- addSyncedEntitiesResolver
* Map USERS_READ and USERS_EDIT to capabilities (#22820)
This makes it possible to create working grants for users/teams.
* Expose another ObjectMapper constructor for testing (#22820)
We need to be able to customize the GRN registry.
* Fix TestUserService#loadByIds method (#22820)
The given IDs must be converted to ObjectIDs.
* checkpoint
* add collections to create request
* license header
* use utility methods
* adjust stream create to new api
* adjust eventDefinition create to new endpoint
- add create event definition hook
* adjust event definition types
* adjust Notication create to new api
* adjust view endpoint to new API
* fix linter
* use pluggable entitshare form group
* add hook
* add license
- renaming
* update test
* adjust label
* rename hook
* add collection binding for backend test
* fix test
* adjust tests for modified entity creation request
* fix merge conflict
* adjust more backend tests to modified signature
* check for selected_grantee_capabilities
* cleanup merge
* upgrading.md and remove unneeded default implementation
---------
Co-authored-by: Bernd Ahlers <bernd@graylog.com>
Co-authored-by: Bernd Ahlers <bernd@users.noreply.github.com>
Co-authored-by: Othello Maurer <othello@graylog.com>
Co-authored-by: patrickmann <patrick.mann@graylog.com>
Co-authored-by: Patrick Mann <patrickmann@users.noreply.github.com>
Co-authored-by: Laura Bergenthal-Grotlüschen <laura.bergenthalgrotlueschen@graylog.com>
Co-authored-by: Anton Ebel <anton.ebel@graylog.com>
* Migrating test for `RequirementsProvided`.
* Migrating `WidgetGrid` test.
* Migrating `WidgetColorContext` test.
* Migrating `MessageTable` test.
* Migrating `ContentPackConstraints` test.
* Migrating `Input` test.
* Migrating test for `ContentPackDetails` component.
* Migrating test for `ContentPackInstall` component.
* Fixing linter hints, adding types.
* Migrating `DataTableEntry` test.
* Migrating `DataAdapterCreate` test.
* Migrating `DataTable` test.
* Migrating `ActionHandler` test.
* Migrating `Headers` test.
* Removing obsolete snapshots.
* Migrating `ContentPackSelection` test.
* Fixing linter hints.
* Migrating test for `AutoFontSizer`.
* Migrating test for `NumberVisualization`.
* Migrating test for `AreaVisualization`.
* Migrating test for `HeatmapVisualization`.
* Migrating test for `WorldMapVisualization`.
* Migrating test for `DataTable`.
* Typing test for `AggregationBuilder`.
* Migrating test for `AggregationBuilder`.
* Migrating test for `GenericPlot`.
* Fixing types in test due to better typing.
* Migrating test for `ContentPackEditParameter`.
* Migrating test for `DrilldownContextProvider`.
* Migrating test for `NumberRefExpression`.
* Fixing linter hints.
* Removing unused import.
* Fixing obsolete usage of type.
* Fixing recent changes.
* prepare share without entity
* allow null entity
* optional share request for stream creation
* clone grants when cloning stream
* event definition share request
* share request for notifications
* fix types
* share request for views
* break circular dependency
* fix illegal API warning
* missing license header
* extract grantee selector form group into component
* use create share endpoint when GRN is not provided
* add EntityShare form group
* add entityShare to stream creation
* refactor with generic entity create request
* remove unneeded interface
* refactor to eliminate optional method parameters
* use new endpoint for stream with share_request
* unit test
* filter seleted grantee from available
* remove formik context and use callback prop for share
* add views update with sharing request
* add share options to saveSearch firm
* fix GRN types
* update tests
* show share only on create strea
* move form element to CapabilitySelect
* extract shared components
* revert form to CapabilitySelect and fix lint
* fix linter
* use CreateGranteesListItem when creating
- add test
* disable add Collaborator when none is selected
* add test cases for sharing
* fix reviews
* use correct type for eventdef creation
* fix import
* fix test
* decrease z-index of Popover to fix select
* handle update sharing on saveSearch
* fix lint
* reorder field
---------
Co-authored-by: patrickmann <patrickmann@hotmail.com>
Co-authored-by: Patrick Mann <patrickmann@users.noreply.github.com>
Co-authored-by: Maxwell <98284293+kodjo-anipah@users.noreply.github.com>
* Always use `document.body` as `menuPortalTarget` for `Select` component.
* Remove no longer needed usage of `menuPortalTarget` prop.
* Create abstraction for `react-select-event` and consider menu portal.
* Update select test.
* Remove no longer needed JSX file.
* Fixing linter hints
* remove field that was added by error from group_by for event replay
* adding changelog
* casting unknown to string array
* fixed field order in test
* fixed type
* fixed type
* adding missing types
* fixing summary widget
* removing unnecessary code
* removing unnecessary code
* Move StreamCategory resolution to SearchExecutor from SearchBackend
* Add logic to populate queries with streamcategories with streamIds
* Move streamcategory mapping from CommandFactory to MessagesResource
* Replace StreamCategoryFilters with StreamFilters in place instead of at top level
* Move StreamCategory to StreamFilter logic and address other feedback
* Add stream categories to SearchBar and WidgetQueryControls (#20226)
* Add stream categories to SearchBar and WidgetQueryControls
* Add query validation and stream_categories to Widgets
* feat: Hide stream categories dropdown if no categories
* account for categories for search types
* Map stream categories before adding all streams to queries without streams
---------
Co-authored-by: Ezequiel Lopez <ezequiel.lopez@graylog.com>
Co-authored-by: Ryan Carroll <ryan.carroll@graylog.com>
* Alpha version of cancel time config and usage for Maksym, so that he can start experimenting
* Cancellation after defined time works on ES as well, though has a more coarse-grained behavior. Custom error for aborted search types.
* Add cancel_after_seconds interval timeout to search configuration on FE
* More FE improvements
* Fixed import
* add cancel_after_seconds to search config tests
* add cancel_after_seconds to search config tests
* Unused import removed
* fix behaviour when user clear field
* Some FE refactoring
* Fixed json prop. name
---------
Co-authored-by: Maksym Yadlovskyi <maksym.yadlovskyi@graylog.com>
* Only fetch event definitions in events widget, when user has required permissions.
* Only offer replay search action when user has permissions for related event definition.
* Adding changelog.
* Improve naming
* Adding tests
* Unify event definition type.
* Remove redundant event definition type.
* Create component for event definition form buttons.
* Make event definition form controls pluggable.
* Fixing linter hint.
* Default to first step when in security mode
* Fix duplicate in event definition form (#18722)
* register event definition export globally
- EventDefinitionsBindings, EventNotificationsBindings, FieldValueProvidersBindings
* fix types
* Fix search query being erased while typing
* fix test
* fix types
* Make initial step configurable.
* Only set URL query param `step` when necessary.
* Refactor from controls.
* Update props:
* Reimplement `onChange` in `FilterForm` to fix problem with params.
* make embryonic only constrained to FilterForm
* Fixing linter hints.
---------
Co-authored-by: Simon Huang <simon.huang@graylog.com>
Co-authored-by: Ousmane SAMBA <ousmane@graylog.com>
Co-authored-by: Ousmane Samba <ousmanesamba@gmail.com>
* Implement foundation for security widgets.
* Migrate `AddWidgetButton` to functional component.
* Make creator condition a hook.
* Add widget creator.
* Cleanup code.
* Refactor `WithDispatch` in `AddWidgetButton`.
* Create `TableHead` component.
* Make effective time range for search type execution optional.
* Display loading indicator when changing data table sort.
* Fixing world map test.
* Create type for select ref.
* Create abstraction for types from react-beautiful-dnd.
* Implement foundation for events widget.
* Create shared components for widget configuration.
* Adding more filters.
* Implement action icons
* Fixing table styles
* Add event details.
* Reformat code.
* Fixing TS errors.
* Implement owner filter.
* Implement type filter.
* Fixing pagination for evens widget.
* Fix events in aggregations.
* Always display time range info for events widget.
* Fixing event type filter.
* Do not display event definition name as link in filters overview.
* implement event widget actions.
* Disable sort for event description.
* Onl allow defining one date filter.
* Change default columns for events widget.
* Display default event definitions details for core.
* Add further event attributes.
* Display info for unknown columns
* Fixing date filter
* Hide widget query controls for widgets with fixed filters.
* Remove timestamp filter.
* Do not display execution info for widgets with fixed filters.
* Improve styling.
* Fixing linter hints
* Add missing license header
* Fixing test
* Remove feature flag
* Make attribute sort icon reusable.
* Cleanup code.
* Fixing label of selected sort.
* Add priority filter for events widget.
* Add missing import.
* Add search explain endpoint
The data tiering feature needs a way to indicate to the user
that a search request will be reaching into indices that
are stored in the warm tier.
Those requests are possibly slow and expensive, so we want
to inform the user about this fact.
This new endpoint can be queried from the UI with a regular search request,
before it is executed.
It returns which indices will be used for the search and whether
those indices are stored in the warm tier or not.
Furthermore it contains the timerange info for each index, so the
frontend can give the user suggestions on how to shorten the query so it
does not reach the warm tiered indices.
This kind of functionality fits perfectly into a more generic "explain"
endpoint.
So instead of a adding a special endpoint for just the warm tier index
range info, we decided to build a more generic version which also
contains a preview of the generated OS/ES query and a list of search
validation errors.
Example response:
```
{
"search_id": "647f0565d060431199a12e96",
"search": {
"queries": {
"a1647eb6-a064-4fe6-b459-1e4267d3f659": {
"search_types": {
"22249f29-f042-4bd8-b745-252b00a35891": {
"query_string": "{\"from\":0,\"size\":0,\"query\":{\"bool\":{\"must\":[{\"bool\":{\"filter\":[{\"match_all\":{\"boost\":1.0}},{\"bool\":{\"adjust_pure_negative\":true,\"boost\":1.0}}],\"adjust_pure_negative\":true,\"boost\":1.0}},{\"range\":{\"timestamp\":{\"from\":\"2023-09-11 20:55:50.185\",\"to\":\"2024-01-18 14:49:10.185\",\"include_lower\":true,\"include_upper\":false,\"boost\":1.0}}},{\"terms\":{\"streams\":[\"63d6d52ebf9c684b3da2deb3\",\"63a5ab32e71520111ed3ce06\",\"000000000000000000000001\"],\"boost\":1.0}}],\"adjust_pure_negative\":true,\"boost\":1.0}},\"track_total_hits\":2147483647,\"aggregations\":{\"agg\":{\"filters\":{\"filters\":[{\"bool\":{\"should\":[{\"exists\":{\"field\":\"source\",\"boost\":1.0}}],\"adjust_pure_negative\":true,\"boost\":1.0}}],\"other_bucket\":true,\"other_bucket_key\":\"_other_\"},\"aggregations\":{\"agg\":{\"terms\":{\"script\":{\"source\":\"(doc.containsKey('source') && doc['source'].size() > 0\\n? doc['source'].size() > 1\\n ? doc['source']\\n : String.valueOf(doc['source'].value)\\n: \\\"(Empty Value)\\\")\\n\",\"lang\":\"painless\"},\"size\":10,\"min_doc_count\":1,\"shard_min_doc_count\":0,\"show_term_doc_count_error\":false,\"order\":[{\"_count\":\"desc\"},{\"_key\":\"asc\"}]}}}},\"timestamp-min\":{\"min\":{\"field\":\"timestamp\"}},\"timestamp-max\":{\"max\":{\"field\":\"timestamp\"}}}}",
"searched_index_ranges": [
{
"index_name": "graylog_0",
"begin": 0,
"end": 0,
"is_warm_tiered": false
},
{
"index_name": "bar_1512",
"begin": 1705589036047,
"end": 1705589284808,
"is_warm_tiered": false
},
{
"index_name": "bar_1513",
"begin": 0,
"end": 0,
"is_warm_tiered": false
},
{
"index_name": "bar_warm_1511",
"begin": 1705588785906,
"end": 1705589035782,
"is_warm_tiered": true
}
]
},
"5e9a9bfe-7a97-4835-86fd-896f40b20531": {
"query_string": "{\"from\":0,\"size\":0,\"query\":{\"bool\":{\"must\":[{\"bool\":{\"filter\":[{\"match_all\":{\"boost\":1.0}},{\"bool\":{\"adjust_pure_negative\":true,\"boost\":1.0}}],\"adjust_pure_negative\":true,\"boost\":1.0}},{\"range\":{\"timestamp\":{\"from\":\"2023-09-11 20:55:50.185\",\"to\":\"2024-01-18 14:49:10.185\",\"include_lower\":true,\"include_upper\":false,\"boost\":1.0}}},{\"terms\":{\"streams\":[\"63d6d52ebf9c684b3da2deb3\",\"63a5ab32e71520111ed3ce06\",\"000000000000000000000001\"],\"boost\":1.0}}],\"adjust_pure_negative\":true,\"boost\":1.0}},\"track_total_hits\":2147483647,\"aggregations\":{\"agg\":{\"filters\":{\"filters\":[{\"bool\":{\"should\":[{\"exists\":{\"field\":\"source\",\"boost\":1.0}}],\"adjust_pure_negative\":true,\"boost\":1.0}}],\"other_bucket\":true,\"other_bucket_key\":\"_other_\"},\"aggregations\":{\"agg\":{\"terms\":{\"script\":{\"source\":\"(doc.containsKey('source') && doc['source'].size() > 0\\n? doc['source'].size() > 1\\n ? doc['source']\\n : String.valueOf(doc['source'].value)\\n: \\\"(Empty Value)\\\")\\n\",\"lang\":\"painless\"},\"size\":15,\"min_doc_count\":1,\"shard_min_doc_count\":0,\"show_term_doc_count_error\":false,\"order\":[{\"_count\":\"desc\"},{\"_key\":\"asc\"}]}}}},\"timestamp-min\":{\"min\":{\"field\":\"timestamp\"}},\"timestamp-max\":{\"max\":{\"field\":\"timestamp\"}}}}",
"searched_index_ranges": [
{
"index_name": "graylog_0",
"begin": 0,
"end": 0,
"is_warm_tiered": false
}
]
}
}
}
}
},
"search_errors": [
]
}
```
Use uniqe class names for Search API
The API generator cannot handle identical class names under the same
endpoint.
The resulting code will fail with errors like:
```
[INFO] $ /home/marco/code/graylog-project-repos/graylog2-server/graylog2-web-interface/node_modules/.bin/tsc
[INFO] target/api/Search.ts(153,11): error TS6196: 'IndexRangeResult' is declared but never used.
```
* cleanup
* add index range results to search validation response
* Add context for search explain and info for warm tier widgets
* Add test for SearchExplainContextProvider
* Only show warm tier info on dashboards
* Also call explain when overriding dashboard and after widget update
* Refetch Search explain when states update, but only for created dashboard
* Check for warm tier indices on query validation
* set status to warning if query validation contains warm indices
* Fix spelling
* Add tests
* Update copy
* fix compile error in ElasticsearchBackendTest
* fix compile error in OpenSearchBackendTest
* Extract warm tier validation logic into own components
* Only show widget info for non edit view
* Address review comments
* Remove obsolete function in bindings
* fix review findings: remove code duplication
* Add warning for event definition with Warm Tier (#18591)
---------
Co-authored-by: Anton Ebel <anton.ebel@graylog.com>
Co-authored-by: Laura Bergenthal-Grotlüschen <laura.bergenthalgrotlueschen@graylog.com>
Co-authored-by: Laura <grotlue@users.noreply.github.com>
* Add useSelectedEntitiesData
* add test
* merge fixes and change log
* fix tsc
* add clearable select to index set form for profile
* rename var
* use cache to get selected field type data
* Returning index field types when creating/resetting field type mapping.
* changes for e2e
* fix with problem empty string profile id on editing index set
* Safe-guarding against missing types for index set.
* Return original bulk response as well.
* Fixing up retrieval of field types by index names.
* Refactoring. Change selected item collecting approach. Fixes
* add aria label
* add telemetry to profile creation from selected items
* Add close to end
* refactoring
---------
Co-authored-by: Dennis Oelkers <dennis@graylog.com>
* Add search filter support in MoreSearch and Event Definitions
Adds search filter support in Filter and Aggregation event definitions. Note that similar to the main Search page, the search filters may only be used in valid Enterprise installations.
* Fix AggregationEventProcessorTest
* feat: Add Search Filters component to the UI
* Add missing ES filters usage
* Add tests
* feat: Add filters to event preview and summary
* Add support for refreshing search filters for events
* Create separate plugin entity for search components in event definitions form.
* Remove hook from class component.
* Remove not needed import
* Complete support for refreshing saved filters
* Filter/Aggregation filters in content packs
* Consolidate search API methods
Add List<UsedSearchFilter> filters param to existing methods and adjusts existing constructors.
* feat: New shared searchfilters component to use on forms
* feat: Add filters to initial Aggregation filter config
* feat: Fix Show and Hide filter banner
* feat: Fix all failing tests
* feat: Add filters to event definition replay view
* feat: Update mocks and fix compile errors
* feat: Add extendedTimeout to failing tests
---------
Co-authored-by: Ezequiel Lopez <ezequiel.lopez@graylog.com>
Co-authored-by: Linus Pahl <linus@graylog.com>
Co-authored-by: Ezequiel Lopez <105670363+zeeklop@users.noreply.github.com>
* Improve test reliability in preparation of React 18.
* Improving more tests.
* Updating `react-select-event`.
* Improving more tests.
* Improving test.
* Using `act` when needed.
* Migrate `connect` test to testing-library.
* Make sure enzyme types are present.