## Summary
This PR introduces a number of changes and improvements to saved query
management:
- Add server side pagination (5 queries per page) and search
functionality to the "Load query" list, which improves UX and
performance by no longer requesting all queries at once.
- Redesign the "Load query" list to improve the UX and a11y, making it
possible for keyboard users to effectively navigate the list and
load/delete queries.
- Add an "Active" badge to the "Load query" list to indicate which list
entry represents the currently loaded query, and hoist the entry to the
top of the first page for better visibility when no search term exists.
- Deprecate the saved query `/_all` endpoint and update it to return
only the first 100 queries instead of loading them all into memory at
once.
- Add a new `titleKeyword` field to the saved query SO, which allows
sorting queries alphabetically by title when displaying them in the
"Load query" list.
- Improve the performance of the "has saved queries" check when Unified
Search is mounted to no longer request actual queries, and instead just
request the count.
- Update the saved query duplicate title check to no longer rely on
fetching all queries at once, and instead asynchronously check for
duplicates by title on save.
- Add server side duplicate title validation to the create and update
saved query endpoints.
- Various small fixes and cleanups throughout saved query management.
43328aea-0f7b-4b7a-a5fb-e33ed822f317
Resolves#172044.
Resolves#176427.
## Testing
To generate saved queries for testing, run the script below and replace
`{KIBANA_REQUEST_COOKIE}` with the cookie header value from an API
request of a Kibana user with an active session:
```shell
for i in {1..100}; do curl 'http://localhost:5601/internal/saved_query/_create' \
-H 'Accept: */*' \
-H 'Accept-Language: en-US,en;q=0.9,az;q=0.8,es;q=0.7' \
-H 'Cache-Control: no-cache' \
-H 'Connection: keep-alive' \
-H 'Content-Type: application/json' \
-H 'Cookie: {KIBANA_REQUEST_COOKIE}' \
-H 'elastic-api-version: 1' \
-H 'kbn-build-number: 9007199254740991' \
-H 'kbn-version: 8.13.0' \
-H 'x-elastic-internal-origin: Kibana' \
--data-raw '{"title":"query '"$(echo $(($i - 1)) | tr '[0-9]' '[a-j]')"'","description":"","query":{"query":"bytes > 500","language":"kuery"},"filters":[]}' \
--compressed; done
```
### Checklist
- [x] Any text added follows [EUI's writing
guidelines](https://elastic.github.io/eui/#/guidelines/writing), uses
sentence case text and includes [i18n
support](https://github.com/elastic/kibana/blob/main/packages/kbn-i18n/README.md)
- [ ]
[Documentation](https://www.elastic.co/guide/en/kibana/master/development-documentation.html)
was added for features that require explanation or tutorials
- [x] [Unit or functional
tests](https://www.elastic.co/guide/en/kibana/master/development-tests.html)
were updated or added to match the most common scenarios
- [x] Any UI touched in this PR is usable by keyboard only (learn more
about [keyboard accessibility](https://webaim.org/techniques/keyboard/))
- [x] Any UI touched in this PR does not create any new axe failures
(run axe in browser:
[FF](https://addons.mozilla.org/en-US/firefox/addon/axe-devtools/),
[Chrome](https://chrome.google.com/webstore/detail/axe-web-accessibility-tes/lhdoppojpmngadmnindnejefpokejbdd?hl=en-US))
- [ ] If a plugin configuration key changed, check if it needs to be
allowlisted in the cloud and added to the [docker
list](https://github.com/elastic/kibana/blob/main/src/dev/build/tasks/os_packages/docker_generator/resources/base/bin/kibana-docker)
- [x] This renders correctly on smaller devices using a responsive
layout. (You can test this [in your
browser](https://www.browserstack.com/guide/responsive-testing-on-local-server))
- [x] This was checked for [cross-browser
compatibility](https://www.elastic.co/support/matrix#matrix_browsers)
### For maintainers
- [ ] This was checked for breaking API changes and was [labeled
appropriately](https://www.elastic.co/guide/en/kibana/master/contributing.html#kibana-release-notes-process)
---------
Co-authored-by: kibanamachine <42973632+kibanamachine@users.noreply.github.com>
Co-authored-by: Stratoula Kalafateli <efstratia.kalafateli@elastic.co>
* [Unified search] Moves dataview picker to the search bar (#126560)
* [Unified search] Moves dataview picker to the search bar
* alter texts
* Remove unused file
* [ChangeDataView] Design cleanup
* Fix services mock failure
* Show newly created datavuew on the list
* Keep dataview picker in discover in mobile view
* Cleanup
* Cleanup translations
* Fix some discover FTs
* Fix management FTs
* More test fixes
* Added a dismissible tour
* Pulled the selectabl list into a new component
… for reuse
Called `DataViewsList`. I then changed Lens’ config panel’s own EuiSelectableList to use this new component instead.
*Didn’t do any test updates*
* Fix broken jest test
* Use the same picker component on Discover mobile view
* Apply some CI fixes
* Fix more functional tests
* More FTs fixes
* Close the tour popover for lens tests
* More FTs fixes
* Fix lens FTs
* Using new `styles.ts` pattern for custom styles and allowing for `fullWidth` buttons
* Better tour text and i18n
* Update copy
* No exclamation point
* Cleanup
* Fixes on discover tests
* Fixes on Lens Fts - create runtime fields
* Fixes on edit permission of add field in discover and some FTs fixes
* Further Fts fixes
* More FTs fixes
* Made tour opt-in with `showNewMenuTour`
* Refactor the OSS FTs to change less files
* Further cleanup on the FTs
* Remove unecessary action
* Fix dataview creation bug
* Add a unit test to the new component
* More fixes
* Fix OSS a11y tests
* Adds another unit test for Lens permissions
* Make a change to stabilize the tests
* Clear flyout prop as it is not used anymore
* Deisgn fixes for mobile view
* Address PR comments WIP
* Update the layrpanl dataview list when a new dataview is created
Co-authored-by: Kibana Machine <42973632+kibanamachine@users.noreply.github.com>
Co-authored-by: cchaos <caroline.horn@elastic.co>
Co-authored-by: Caroline Horn <549577+cchaos@users.noreply.github.com>
* fix test
* Fix CI
* Fix i18n checks
* [Unified search] Redesign search bar (#126566)
* [Unified search] Redesign search bar
* Changes to the saved queries design
* Remove `globalQueryBar` from nested under `.kbnTopNavMenu__wrapper`
* [Security Solution] Removing overrides of `.globaQueryBar`
* Cleanup of `.globalQueryBar` styles and variants
* General layout fixes/adjustments
* More general layout fixes and better defaults
* Enable Clear all button if saved query is applied
* Clear should be enabled if searched query is applied but not the save as new
* fix some bugs on enabling and disabling the menu options
* [design] Working on Load Filter set menu
* Indicate selection even before the user clicks apply
* prettify the time text
* Add delete saved qquery confirmation modal
* Some cleaning up
* Fix the manage saved queries link
* Enable load filter set if saved query is created for the first time
* Some fixes on linting and on translations
* Clanup scss
* Make some fixes
* Fix navigatation unit test
* Fix translations check
* Fix rest jest tests
* Fix some functional tests
* Fix checks
* Fixes the appearance of the searchbar components depending on the flags
* Fix OSS tests
* Fixes on tests and query bar logic
* Fix the OSS ally tests
* Fix graph and lens KQL bar display problems, apply saveQuery flag correctly
* Fix more tests
* Fix security solution test
* Undo tweaks for graph
* Better fix for Graph
- Emulate new look, not old
- Uses same context menu panel as the new one
- Provides the same button type (filter button)
* Fix checks and jest test
* Further fixes
* Fix language switcher test
* Hopefully fixes the rest of the solution tests
* Cleanup
* Fixes on maps filtering
* Fix Discover padding
* [Discover] Added New Field button to bottom of fields list
* Simple responsive behavior
* Quick filter updates
* CI fixes
* area-label fix
* 18n translate the add filed btn in discover
* Fix lens functional test
* fix functional tests
* Refactor and add unit test for the add filter button
* Add unit test to the saved management list component
* Stabilize lens test
* Second try to solve the flakiness
* Fix panels depending on the flags
* Fix jest tests
* Fix double menu when only the queryInput is on
* Add storybook for the different layouts of the unified search bar
* Fix ci checks
* Removee hooks comment
* Fix flakiness
* Fix problem with lens dataview change
* Fix checks
* Ensure that the query is submitted
* Fixes oon CI
* Fixes flakiness
* Fix checks CI
* Update texts
* Cleanup
* Fix unskipped funtional test
* Fix FT
* Update src/plugins/unified_search/public/saved_query_form/save_query_form.tsx
Co-authored-by: gchaps <33642766+gchaps@users.noreply.github.com>
* Fix eslint
* Fix checks
Co-authored-by: Kibana Machine <42973632+kibanamachine@users.noreply.github.com>
Co-authored-by: cchaos <caroline.horn@elastic.co>
Co-authored-by: Caroline Horn <549577+cchaos@users.noreply.github.com>
Co-authored-by: gchaps <33642766+gchaps@users.noreply.github.com>
* Fix jest
* Fix jest tests
* Stabilize discover security tests
* [Unified search] Further enhancements (#129877)
* [Unified search] Redesign search bar
* Changes to the saved queries design
* Remove `globalQueryBar` from nested under `.kbnTopNavMenu__wrapper`
* [Security Solution] Removing overrides of `.globaQueryBar`
* Cleanup of `.globalQueryBar` styles and variants
* General layout fixes/adjustments
* More general layout fixes and better defaults
* Enable Clear all button if saved query is applied
* Clear should be enabled if searched query is applied but not the save as new
* fix some bugs on enabling and disabling the menu options
* [design] Working on Load Filter set menu
* Indicate selection even before the user clicks apply
* prettify the time text
* Add delete saved qquery confirmation modal
* Some cleaning up
* Fix the manage saved queries link
* Enable load filter set if saved query is created for the first time
* Some fixes on linting and on translations
* Clanup scss
* Make some fixes
* Fix navigatation unit test
* Fix translations check
* Fix rest jest tests
* Fix some functional tests
* Fix checks
* Fixes the appearance of the searchbar components depending on the flags
* Fix OSS tests
* Fixes on tests and query bar logic
* Fix the OSS ally tests
* Fix graph and lens KQL bar display problems, apply saveQuery flag correctly
* Fix more tests
* Fix security solution test
* Undo tweaks for graph
* Better fix for Graph
- Emulate new look, not old
- Uses same context menu panel as the new one
- Provides the same button type (filter button)
* Fix checks and jest test
* Further fixes
* Fix language switcher test
* Hopefully fixes the rest of the solution tests
* Cleanup
* Fixes on maps filtering
* Fix Discover padding
* [Discover] Added New Field button to bottom of fields list
* Simple responsive behavior
* Quick filter updates
* CI fixes
* area-label fix
* 18n translate the add filed btn in discover
* Fix lens functional test
* fix functional tests
* Refactor and add unit test for the add filter button
* Add unit test to the saved management list component
* Stabilize lens test
* Second try to solve the flakiness
* Fix panels depending on the flags
* Fix jest tests
* Fix double menu when only the queryInput is on
* Add storybook for the different layouts of the unified search bar
* Fix ci checks
* Removee hooks comment
* Fix flakiness
* Fix problem with lens dataview change
* Fix checks
* Ensure that the query is submitted
* Fixes oon CI
* Fixes flakiness
* Fix checks CI
* Update texts
* Cleanup
* Fix unskipped funtional test
* Fix FT
* Fixes filter bar responsiveness
* Add filter button option to the main menu
* Filter form design pass
- Added tooltip around “Add filter” icon button
- Fixed padding
- Stubbed in “Add” vs “Edit” labels
* Query menu icon button tooltip
* ‘Update’ not ‘Edit’ button label
* Apply different strings for adding filter mode vs edit
* Hide Manage SO link if the user donesnt have the permissions
* Fix the wrapping of the badges and datepicker badge
* Minor props naming fix
* Fix checks
* Fix mobile
* Cleanup
* Fix checks
* Faux button group
* Changes on the search input placeholder
* Fix CI
Co-authored-by: Kibana Machine <42973632+kibanamachine@users.noreply.github.com>
Co-authored-by: cchaos <caroline.horn@elastic.co>
Co-authored-by: Caroline Horn <549577+cchaos@users.noreply.github.com>
* Fix translations
* Fix security solution add filter bug
* Filter bar / items: Reduce to only necessary wrappers and styles
- Switch to Emotion for styling
- Rename `FilterBadgesWrapper` to `FilterItems`
- Move `FilterItems` and `FilterItem` so own folder `filter_item/`
# Conflicts:
# src/plugins/unified_search/public/filter_bar/filter_bar.tsx
# src/plugins/unified_search/public/filter_bar/filter_editor/lib/filter_label.tsx
# src/plugins/unified_search/public/filter_bar/filter_item/filter_item.tsx
# src/plugins/unified_search/public/filter_bar/filter_item/filter_items.tsx
# src/plugins/unified_search/public/filter_bar/filter_view/index.tsx
# src/plugins/unified_search/public/query_string_input/filter_editor_wrapper.tsx
# src/plugins/unified_search/public/search_bar/search_bar.tsx
* Fix styles by removing styled-components
Also added prop `afterQueryBar` to signify that it needs the top margin
# Conflicts:
# packages/kbn-babel-preset/styled_components_files.js
* Refactor `SearchBar` and `QueryBarTopRow` a bit
- Added `showSubmitButton` to explicitely hide the submit button (defaults to true)
- SearchBar always renders the `QueryBarTopRow` which now fully controls visibility of the pieces
- Renamed class with new `uni` prefix
- Tried and failed to use Emotion
* Update usages
# Conflicts:
# x-pack/plugins/security_solution/public/common/components/query_bar/index.tsx
* Fix a test
* Fix jest test
* Attaches filter menu when no add button and better dropdown styles
* Fix lint errors
* Clearing the query and filters of a saved query should unload the saved query
* Do not allow to update the loaded saved query if no filters or no query
* Fix Graph by creating reusable `KibanaFilterButtonGroup`
* Use EuiTheme for SearchBar styles
Updated `displayStyle` for Lens & Discover
* Fix displayStyle prop problem
* Correct alignment of data visualizer
* Super nit comment
* Data visualizer improvements
* Apply useMemo in editPermission cont in Discover
* Fix translations checks
* Fix translations checks
* Fix filter badge popover bug
* [Submit button] Changed to EuiSuperUpdateButton
- Quickly adds tooltip content and filled state for more prominence when dirty
- Fixed 18n
* Fix tests
* Align the position with the other tolltips and check that functional tests succeed
* Give some time to the tooltip to disappear
* Fix tests
* Fix CI checks
* Address PR comments
* Move constants outside render
* Apply PR comments
* Fix dataview picker glich
* lovercase emotion function
* Fix a11y problem on dataview picker
* Lowercase rest of emotion style functions
* Clean up
Co-authored-by: Kibana Machine <42973632+kibanamachine@users.noreply.github.com>
Co-authored-by: cchaos <caroline.horn@elastic.co>
Co-authored-by: Caroline Horn <549577+cchaos@users.noreply.github.com>
Co-authored-by: gchaps <33642766+gchaps@users.noreply.github.com>
* Attempt at deangularization, nr.2
* Remove padding in fullscreen
* Fixing failing functional test
* Fixing remaining functional test
* Fixing typescript errors
* Fixing filter bar not being visible in fullscreen
* Fixing filter bar not being visible in fullscreen
* Rebasing against master
* Fixing a small leftover
* Fix order of functions
* Fixing linting error
* Changing noPadding to a custom class
* Use filterManagers to handle filters
* Rename class
* Attempt at deangularization, nr.2
* Remove padding in fullscreen
* Fixing failing functional test
* Fixing remaining functional test
* Fixing typescript errors
* Fixing filter bar not being visible in fullscreen
* Fixing filter bar not being visible in fullscreen
* Rebasing against master
* Fixing a small leftover
* Fix order of functions
* Fixing linting error
* [APM] Agent config select box doesn't work on IE (#63236)
* adding value property to select options
* fixing test
* Use globe icon for "ext" span type on service map (#63205)
Both "external" and "ext" can be returned and should have the same icon.
* Move shared vislib components into Charts plugin (#62957)
* Closes#56310
Move shared vislib components into Charts plugin
* Fixed imports in tests
* Changed i18n IDs to match charts namespace
* Renamed ColorSchemaVislibParams to ColorSchemaParams, added enums and got rid of useValidation function
* Renamed ColorSchemaVislibParams to ColorSchemaParams and got rid of useValidation function
* Fixed merge conflict
* Replaced enums with objects again
* Make uptime alert flyout test a little more resilient (#62702)
* [SIEM] [Cases] Unit tests for case UI components (#63005)
* Endpoint: Remove unused `lib` module (#63248)
* [Lens] Fix error in query from generated suggestion (#63018)
* [Lens] Fix error in query from generated suggestion
* Update from review comments
* Fix test
Co-authored-by: Elastic Machine <elasticmachine@users.noreply.github.com>
* Resolver/node svg 2 html (#62958)
* Remove some SVG in Resolver nodes and replace with HTML
* [Reporting] convert all server unit tests to TypeScript (#62873)
* [Reporting] convert all server unit tests to TypeScript
* fix ts
* revert unrelated change
* [SIEM] Link ML Rule card CTA to license_management (#63210)
* Link ML Rule card CTA to license_management
Taking the user directly to the license management page within kibana
(where they could immediately start a trial subscription) is much more
actionable than taking them to the subscriptions marketing page.
* Revert translation key change
Neither of these is totally accurate, and there've already been
translations written for the old one.
* Correctly type ILM's optional dependencies as optional (#63255)
And guard against their absence.
* [Telemetry] use prod keys (#63263)
* update chromedriver dependency to 81.0.0 (#63266)
* task/mac-eventing-form (#62999)
adds mac events form for endpoint policy details
Co-authored-by: oatkiller <robert.austin@elastic.co>
* bc6 rule import april 9 (#63152)
* bc6 rule import april 9
Increased the lookback of the ML rules
* re-import
with LF chars
Co-authored-by: Elastic Machine <elasticmachine@users.noreply.github.com>
* Added UI for pre-configured connectors. (#63074)
* Added UI for pre-configured connectors.
* fixed due to comments
* Fixed jest tests
* Fixed due to comments and added some functional tests
* test fix
* Fixed failed checks
* Fixed functional tests failing
* TaskManager tasks scheduled without attempting to run (#62078)
* TaskManager tasks scheduled without attempting to run
* Removing unused import
Co-authored-by: Elastic Machine <elasticmachine@users.noreply.github.com>
* Changed alerting wrong param name for help xpack.encrypted_saved_objects.encryptionKey to xpack.encryptedSavedObjects.encryptionKey (#63307)
* fix ScopedHistory.createHref to prepend location with scoped history basePath (#62407)
* fix createHref to prepend with scoped history basePath + add option to exclude it.
* fix prependBasePath behavior
* fix test plugins urls
* add pathname to endpoint url builder methods
* Revert "add pathname to endpoint url builder methods"
This reverts commit 7604932b
* adapt createHref instead of prependBasePath
* use object options for createHref
* update generated doc
* fixing custom link popover size and hiding scroll (#63240)
* Changing noPadding to a custom class
* Use filterManagers to handle filters
* Rename class
* Applying some changes
* Reverting search_bar code changes
* Removing some stuff that was causing functional tests to fail
* Removing refresh dashboard container which was causing errors during navigation
* Do not destroy dashboardContainer
* Adding updateSavedQueryId method
Co-authored-by: Elastic Machine <elasticmachine@users.noreply.github.com>
Co-authored-by: Cauê Marcondes <55978943+cauemarcondes@users.noreply.github.com>
Co-authored-by: Nathan L Smith <nathan.smith@elastic.co>
Co-authored-by: DianaDerevyankina <54894989+DianaDerevyankina@users.noreply.github.com>
Co-authored-by: Brian Seeders <brian.seeders@elastic.co>
Co-authored-by: Steph Milovic <stephanie.milovic@elastic.co>
Co-authored-by: Robert Austin <robert.austin@elastic.co>
Co-authored-by: Wylie Conlon <william.conlon@elastic.co>
Co-authored-by: Brent Kimmel <bkimmel@users.noreply.github.com>
Co-authored-by: Tim Sullivan <tsullivan@users.noreply.github.com>
Co-authored-by: Ryland Herrick <ryalnd@gmail.com>
Co-authored-by: CJ Cenizal <cj@cenizal.com>
Co-authored-by: Ahmad Bamieh <ahmadbamieh@gmail.com>
Co-authored-by: Dmitry Lemeshko <dzmitry.lemechko@elastic.co>
Co-authored-by: Candace Park <56409205+parkiino@users.noreply.github.com>
Co-authored-by: The SpaceCake Project <randomuserid@users.noreply.github.com>
Co-authored-by: Yuliia Naumenko <jo.naumenko@gmail.com>
Co-authored-by: Brandon Kobel <brandon.kobel@elastic.co>
Co-authored-by: Pierre Gayvallet <pierre.gayvallet@elastic.co>