* make cfg private in sqlstore
* fix db init in tests
* fix case
* fix folder test init
* fix imports
* make another Cfg private
* remove another Cfg
* remove unused variable
* use store cfg, it has side-effects
* fix mutated cfg in tests
* Create basic feature toggle
* Rename context to reflect it contains query history and query library
* Update icons and variants
* Rename hooks
* Update tests
* Fix mock
* Add tracking
* Turn button into a toggle
* Make dropdown active as well
This is required to have better UI and an indication of selected state in split view
* Update Query Library icon
This is to make it consistent with the toolbar button
* Hide query history button when query library is available
This is to avoid confusing UX with 2 button triggering the drawer but with slightly different behavior
* Make the drawer bigger for query library
To avoid confusion for current users and test it internally a bit more it's behind a feature toggle. Bigger drawer may obstruct the view and add more friction in the UX.
* Fix tests
The test was failing because queryLibraryAvailable was set to true for tests. This change makes it more explicit what use case is being tested
* Remove active state underline from the dropdown
* Allow closing Query Library drawer from the toolbar
* Simplify dropdown design
* feat: add a reactive extension registry
Co-authored-by: Marcus Andersson <marcus.andersson@grafana.com>
* feat: add hooks to work with the reactive registry
Co-authored-by: Marcus Andersson <marcus.andersson@grafana.com>
* feat: start using the reactive registry
Co-authored-by: Marcus Andersson <marcus.andersson@grafana.com>
* feat: update the "command palette" extension point to use the hook
* feat: update the "alerting" extension point to use the hooks
Co-authored-by: Marcus Andersson <marcus.andersson@grafana.com>
* feat: update the "explore" extension point to use the hooks
Co-authored-by: Marcus Andersson <marcus.andersson@grafana.com>
* feat: update the "datasources config" extension point to use the hooks
Co-authored-by: Marcus Andersson <marcus.andersson@grafana.com>
* feat: update the "panel menu" extension point to use the hooks
Co-authored-by: Marcus Andersson <marcus.andersson@grafana.com>
* feat: update the "pyroscope datasource" extension point to use the hooks
Co-authored-by: Marcus Andersson <marcus.andersson@grafana.com>
* feat: update the "user profile page" extension point to use the hooks
* chore: update betterer
* fix: update the hooks to not re-render unnecessarily
* chore: remove the old `createPluginExtensionRegistry` impementation
* chore: add "TODO" for `PanelMenuBehaviour` extension point
* feat: update the return value of the hooks to contain a `{ isLoading }` param
* tests: add more tests for the usePluginExtensions() hook
* fix: exclude the cloud-home-app from being non-awaited
* refactor: use uuidv4() for random ID generation (for the registry object)
* fix: linting issue
* feat: use the hooks for the new alerting extension point
* feat: use `useMemo()` for `AlertInstanceAction` extension point context
---------
Co-authored-by: Levente Balogh <balogh.levente.hu@gmail.com>
* Fix issue
* Prettier
* codeincarnate/image-table-fix/ lint
* Make linter happy by using div with role of button + improve a11y
---------
Co-authored-by: jev forsberg <jev.forsberg@grafana.com>
Co-authored-by: nmarrs <nathanielmarrs@gmail.com>
* Alerting: Implement SaveAndApplyConfiguration in the forked Alertmanager struct
* call SaveAndApplyConfig on the remote first, log errors for the internal
* add comments explaining why we ignore errors in the internal AM
* restore go.work.sum
This splits the request handlers into two functions, one which is the actual
handler and one which is independent from the Grafana `ReqContext` object. This
is to make it easier to reuse the implementation in other code.
Part of the refactoring changes the functions which get query parameters from
the request to operate on a `url.Values` instead of the request object.
The change also makes the code consistently use `req.Form` instead of a
combination of `req.URL.Query()` and `req.Form`, though I have left
`api_ruler` as-is to avoid this PR growing too large.
* Show list of labels on the alert rule form in a more visual way, and use a modal for managing them
* fix test
* Fix more tests
* Show orange badge when no labels are selected
* Remove unused datasource property in LabelsField
* Remove unused div and add comment
* Use button instead of icon for editing labels
* Use subform for labels
* Move logic fetching labels from different places in a separate hook
* Fix tests
* remove unused getLabelInput const in test
* Add ellispis and tooltip for long labels and move labels list in modal to the bottom
* Use text instead of badge when no using labels
* Fix tests after adding ellipsis and tooltip to the labels
* simplify styles
* Fix fetching values from gops when new key is used
* Address pr review comments
* Address pr review comments part2
* Fix tag on rtkq
* Remove color for no labels selected text
* Disable already used keys in the labels sub form
* Fix typo
* use the UseFieldArrayRemove type from react-hook-form
* Update some styles and text in the labels modal
* Address some review comments (nits)
* Address review comments part1
* Move logic getting labels in useCombinedLabels hook
---------
Co-authored-by: Gilles De Mey <gilles.de.mey@gmail.com>
* implement SaveAndApplyConfig in the remote Alertmanager struct
* remove ID from CreateGrafanaAlertmanagerConfig call
* decrypt, test that we decrypt, refactor
* fix duplicated declaration in test
* rephrase comment, remove unnecessary conversion to slice of bytes
* fix test
* Alerting: Implement SaveAndApplyDefaultConfig in the forked Alertmanager (remote primary)
* log the error for the internal AM instead of returning it
* FE Sandbox: Fix worker post message not handling proxy objects correctly
* use expect error instead of ignore
* use assertion instead of ignore
* Fix formatting
* Render current MegaMenu link as `aria-current=page`
* Add overrides capability for mega menu links
* Pass pageNav into getActiveItem so we can use override capability
* Test MegaMenu special cases for starred & dashboards
* Test that overrides for megamenu util works correctly
* Alpha-sort megamenu overrides
* Refactor util for getting active item for megamenu
Update parameters to getActiveItem
Update tests for getActiveItem
* Fix test for starred dashboard and remove query param test
Query param case happens differently in real app and is fiddly to test here
* handle edge cases
* restore handling home page test
* fix dashboard settings
* handle starring properly
---------
Co-authored-by: Ashley Harrison <ashley.harrison@grafana.com>
* Add timezone selector to Storybook toolbar
So that it's possible to preview how components that are using date functions, behave when timezone differs from browser/client.
* Re-order imports