Commit Graph

203 Commits

Author SHA1 Message Date
Josh Hunt e1af2e15cb
I18n: Import Scenes translations (#106852)
* wip

* use initScenesTranslations

* comment

* use just plain resource loaded from scenes lib

* update to the published scenes version

* rename loadPluginResources to loadNamespacedResources
2025-06-24 10:00:41 +01:00
Luminessa Starlight 09e8484bac
i18n: rename locale to regionalFormat (#106585)
* locale -> regionalFormat, mirroring #102233

* set up regionalFormat to replace locale entirely

* replace locale with regionalFormat

* update reportInteraction arguments
2025-06-16 21:53:55 +02:00
Hugo Häggmark 81ad16f25f
i18n: cleans up exports and imports (#105669) 2025-05-20 15:31:53 +03:00
Laura Fernández 23ecb9d904
i18n: Use `grafana/i18n` to init the `locale` and manage the `regionalFormat` (#105281) 2025-05-19 13:24:33 +02:00
Hugo Häggmark 119d5897ea
i18n: imports use @grafana/i18n (#105177)
* i18n: everything should target @grafana/i18n

* wip

* chore: updates after PR feedback

* Trigger build

* Trigger build

* Trigger build

* chore: skip flaky tests

* chore: skip flaky tests

* chore: skip flaky tests

* chore: skip flaky tests

* chore: skip flaky tests

* chore: skip flaky tests

* chore: revert all flaky tests

* chore: some incorrect usages of useTranslate
2025-05-15 09:17:14 +02:00
Alex Khomenko a9b6d098e9
Chore: Add eslint no-restricted-globals rule (#104519)
* Chore: Add no-restricted-globals eslint rule

* Fix eslint warnings

* Revert some changes

* Update

* Feedback
2025-05-12 12:38:26 +03:00
Tom Ratcliffe 1716696175
Chore: Improve how mock API is enabled/disabled (#104675) 2025-05-08 20:03:51 +03:00
Laura Fernández 3607356f65
i18n: Update `internationalization/dates.ts` to use `locale` (#103731) 2025-04-11 11:24:40 +02:00
Torkel Ödegaard 24474dcb9c
AppChrome: Improved responsive use of vertical space (#103488)
* Progress

* Progress

* Update

* Update

* Update

* Update

* Responsive improvements

* Update

* Update

* Update

* Revert height change

* Update

* add missing testid

* update

* Fixes

* update

* Refactoring

* fix bug in app chrome service

* Fixed e2e tests

* fix

* fix

* Update

* Update

* fix bookmarks e2e

* Update

* improve responsiveness on small screens for breadcrumbs

* Always use two levels when menu is docked

* Adding kiosk toggle button to dashboards only

* update

* Update

* Update

* when menu is docked and no actions use 1 level

* removed formatting change that caused unnessary diff in PR

* remove extra separator line after merge with main

* Fix double separators

* Update

* remove temp change

* Update
2025-04-09 14:51:22 +02:00
Levente Balogh 39dcff23f9
Plugin Extensions: Clean up the deprecated APIs (#102102)
* PanelMenuBehaviour: stop using the deprecated `getPluginLinkExtensions()` API

* Wip

* grafana-runtime: remove deprecated APIs `usePluginExtensions()`, `usePluginLinkExtensions()` and `usePluginComponentExtensions()`

* Wip

* Wip

* wip

* wip

* Chore: removed PluginExtensionLinkConfig

* Chore: removed PluginExtensionComponentConfig

* Chore: fixed grafana-pyroscope-datasource QueryEditor test

* Chore: fixed PublicDashboardScenePage.test.tsx

* Chore: fix PanelDataQueriesTab test

* Chore: fix PanelMenuBehavior test

* Chore: fix transformSceneToSaveModel test

* Chore: fix last type errors

* Chore: fix alerting/unified/testSetup/plugins.ts

* Chore: break out types to separate file

* feat(Extensions): expose an observable API for added links and components

* chore: prettier fixes

* Revert "chore: prettier fixes"

This reverts commit 53aa767664.

* Revert "feat(Extensions): expose an observable API for added links and components"

This reverts commit bdc588250e.

---------

Co-authored-by: Hugo Häggmark <hugo.haggmark@gmail.com>
2025-04-09 10:24:29 +02:00
Levente Balogh 9eb5ed5db9
Extensions: Expose new observable APIs for accessing components and links (#103063)
* feat(Extensions): expose an observable API for added links and components

* refactor: make `getObservablePluginExtensions()` more RxJS style

* refactor(getPluginExtensions): remove unnecessary types

* fix(getPluginExtensions): remove unused imports

* Apply suggestions from code review

Co-authored-by: Hugo Häggmark <hugo.haggmark@gmail.com>

* refactor(getPluginExtensions): stop using `shareReply()`

* fix(grafana-runtime/extensions): typo in error messages

---------

Co-authored-by: Hugo Häggmark <hugo.haggmark@gmail.com>
2025-04-01 10:07:44 +03:00
Jack Westbrook 6822805c32
Grafana Runtime: Use package.json exports for internal code (#102100)
* refactor(frontend): update runtime import paths for grafana/runtime/src -> grafana/runtime

* feat(runtime): introduce internal api entrypoint and exports property

* refactor(frontend): update runtime imports to use internal entrypoint

* chore(betterer): update results file

* refactor(bookmarks): update runtime/unstable import

* chore(betterer): update results file

* test(frontend): fix failing tests due to mocking nested runtime imports

* test(datasourcesrv): fix failing tests due to mocks

* chore(alerting): clean up redundant import

* fix(packages): fix default require export pointing to types declaration file

* docs(packages): update readme related to exports

* chore(internationalization): fix import paths

* chore(betterer): update results file
2025-03-27 08:59:57 +01:00
Hugo Häggmark 6f2a9abc03
i18n: consolidate i18n types & runtime services (#102535)
* i18n: consolidate i18n types & runtime services

* Chore: updates after PR feedback

* Chore: updates after feedback

* Chore: updates after feedback

* Chore: updates after PR feedback

* Chore: fix i18n

* Chore: updates after PR feedback
2025-03-24 13:20:00 +01:00
Josh Hunt 50ff1ae69b
I18n: Add useT hook for plugin translation API (#102033)
* Create placeholder useT function

* expose useT() in @grafana/runtime

* fix setting useT correctly

* example usage of useT

* rename hook to useTranslate

* fix rename

* remove comment
2025-03-13 13:54:57 +02:00
Bogdan Matei 312d80e0e1
Scopes: Refactor scopes to plain React and move it to runtime (#97176)
* Scopes: Refactor scopes

* Scopes: Refactor scopes

* Scopes: Refactor scopes

* Revert data changes

* Refactorings

* Refactorings

* Refactorings

* Remove unused

* Refactorings

* Refactors

* Fixes

* Update scenes

* Rebase

* Update .betterer.results

* Fix tests

* Move scopes selector to appchrome

* More fixes

* Fix tests

* Remove ScopesFacade

* use latest canary scenes version to pass tests

* Make fields private

* Update scenes version

---------

Co-authored-by: Tobias Skarhed <tobias.skarhed@gmail.com>
Co-authored-by: Victor Marin <victor.marin@grafana.com>
Co-authored-by: Andrej Ocenas <mr.ocenas@gmail.com>
2025-03-11 11:34:33 +01:00
David Kim (DK) 4a713bd9ed
Plugin: expose nested folder component from core grafana (#97765)
* expose nested folder component from core grafana

* prettier

* import order

* remove unused commented code

* remove unneeded file

* make a LazyFolderPicker

* fix types, change permission to string

* comment

* reset some changes back to main

* no need to log

---------

Co-authored-by: Joe Blubaugh <joe.blubaugh@grafana.com>
Co-authored-by: joshhunt <josh@trtr.co>
Co-authored-by: joshhunt <josh.hunt@grafana.com>
2025-03-10 10:50:42 +00:00
Agnès Toulet 608d974585
Rendering: Stop preloading apps for rendering requests (#100221)
* Rendering: stop preloading apps

* add feature toggle

* add comment

* add const

* fix linter

* rename feature toggle

* delete old ff

* update toggles_gen.json
2025-02-24 15:43:06 +01:00
Jack Westbrook 1c7a758127
Frontend: Lazy load Echo Backends (#100345)
feat(app): lazy load echo backends depending on config. Move lodash to sharedDependencies
2025-02-13 12:11:41 +01:00
Misi 5a6d2f2e49
Auth: Add early return if `auth_token` is in the URL for JWT auth (#100539)
* Add early return

* Update public/app/app.ts

Co-authored-by: Victor Cinaglia <victor@grafana.com>

---------

Co-authored-by: Victor Cinaglia <victor@grafana.com>
2025-02-13 10:46:19 +01:00
Dominik Süß 8a8e47fcea
PluginExtensions: Added support for sharing functions (#98888)
* feat: add generic plugin extension functions

* updated betterer.

* Fixed type issues after sync with main.

* Remved extensions from datasource and panel.

* Added validation for extension function registry.

* Added tests and validation logic for function extensions registry.

* removed prop already existing on base.

* fixed lint error.

---------

Co-authored-by: Marcus Andersson <marcus.andersson@grafana.com>
2025-02-13 10:18:55 +01:00
Misi acc1521929
Auth: Fix redirect with JWT auth URL login (#100295)
fix
2025-02-10 10:48:35 +01:00
Jack Westbrook 514da10f46
Revert "Bug: Fix broken ui components when angular is disabled" (#99730)
Revert "Bug: Fix broken ui components when angular is disabled (#78208)"

This reverts commit 1112e9006b.
2025-01-29 14:22:23 +01:00
Edvard Falkskär e45eb95812
Correlations: Expose correlations logic through correlations service (#98124)
* Correlations: Expose correlations logic through correlations service

* Resolve remaining todos

* Marked new items as @alpha
2025-01-14 13:27:13 +02:00
Ashley Harrison b34fd6b6a1
Chore: update `react-inlinesvg` and use new icon caching mechanism (#97725)
* Update dependency react-inlinesvg to v4

* attempt to use new icon caching

* remove unicons chunk

* fix layout shift

* update snapshot

* parameterise cache by commit hash and clear old caches

* remove icon caching in storybook

---------

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-12-12 13:35:28 +00:00
Levente Balogh cce943b3af
Plugin Extensions: Only load app plugins when necessary (#86624)
* feat(plugins): automatically preload plugins

This PR enables auto-preloading for plugins when they are used
by an extension or extension-point. Once this change is merged plugins
that were only using "preload: true" in their plugin.json for using extensions
can remove it.

* fix: remove unused types

* fix: call `setComponentsFromLegacyExports()` after meta is initialised
2024-11-29 14:05:55 +01:00
Piotr Jamróz 3a6858cf26
Frontend o11y: Report browser crashes to Faro (#95772)
* Report browser crashes to Faro

* Fix linting

* Change context log context prefix

* Update types

* Update crash detection library to report stale tabs

* Post merge fixes
2024-11-12 16:07:27 +01:00
Josh Hunt 189802d3c3
EchoSrv: Add BrowserConsoleBackend to log analytics events (#95554)
* EchoSrv: Add BrowserConsoleBackend to log analytics events

* rename config name

* warn on non-scalar property values
2024-10-29 18:20:54 +00:00
Tobias Skarhed c9984cbb7a
Frontend Traces: Ignore Faro tracking of Google Analytics and Rudderstack (#95322)
* Ignore Faro tracking of Google Analytics and Rudderstack

* Fix test

* Fancy it up Tom style
2024-10-28 13:44:52 +01:00
Misi 2b320b0f9e
Auth: Only apply redirection if the user is signed in (session storage redirection) (#94279)
Fix: do not redirect if the user is not signed in
2024-10-04 20:06:06 +03:00
Misi d3d5735098
Auth; Fix shourt url redirect when useSessionStorageForRedirection is enabled (#94163)
Fix shourt url redirect
2024-10-02 18:25:47 +02:00
Misi d411ce2664
Auth: Use sessionStorage instead of cookie for automatic redirection (#92759)
* WIP: working as expected, has to be tested

* Rename query param, small changes

* Remove unused code

* Address feedback

* Cleanup

* Use the feature toggle to control the behaviour

* Use the toggle on the FE too

* Prevent the extra redirect/reload

 Co-authored-by: Josh Hunt <joshhunt@users.noreply.github.com>

* Return to login if user is not authenticated

* Add tracking issue

* Align BE redirect constructor to locationSvc
2024-09-24 18:38:09 +02:00
Levente Balogh 831493278f
UI Extensions: Share the registries using a React context (#92014)
* feat: add a context for the extension registries

* feat: add a provider for registries to `AppWrapper`

* feat(extensions): add a read-only registry version

* feat: share the registry for exposed components using the context

* fix: tests

* feat: share the registry for added components using the context

* feat: share the addedLinks registry using react context

* use read-only registry versions
2024-09-10 10:42:07 +02:00
Jack Westbrook e7d7ed5406
Chore: Remove side-effect import from app (#92650)
* chore(frontend): remove stray side-effect features import that brings the whole jungle

* chore(app): delete features/all.ts and its friends

* chore(codeowners): remove public/app/features/all.ts from file
2024-09-03 13:43:13 +03:00
Erik Sundell db0cc24f2b
Plugin extensions: Introduce new registry for added links (#92343)
* add added component registry

* fix broken test

* add tests for usePluginComponents hook

* readd expose components

* add type assertion exceptions to betterer results

* use new addedComponent registry in legacy endpoints

* remove unused code

* cleanup

* revert test code

* remove commented code

* initial commit

* refactor sync method and hook

* fix tests

* subscribe to the correct registry

* remove old registry

* cleanup types

* add use usePluginLinks hook

* add more tests

* fix import order

* fix typo

* fix and temporarly skip failing tests

* wip

* add hook tests

* add more tests

* remove old hook

* fix versioning

* add version to all extension point ids

* remove cleanup

* remove unused imports

* revert touched file

* fix test

* test: remove hook creation

* catch init error

* send error to faro

* fix broken hook

* comment out call hook initialization

* use the right import ofr isString

* remove unused import

* remove registryState type

* pr feedback

* Update public/app/features/plugins/extensions/validators.test.tsx

Co-authored-by: Levente Balogh <balogh.levente.hu@gmail.com>

* Update public/app/features/plugins/extensions/validators.test.tsx

Co-authored-by: Levente Balogh <balogh.levente.hu@gmail.com>

* remove no longer relevant comment

* fix broken tests

* Fixed test to verify that the memotization works properly.

* simplify hooks

---------

Co-authored-by: Levente Balogh <balogh.levente.hu@gmail.com>
Co-authored-by: Marcus Andersson <marcus.andersson@grafana.com>
2024-08-30 10:09:01 +02:00
Erik Sundell b648ce3acf
Plugin extensions: Introduce new registry for added components (#91877)
* add added component registry

* fix broken test

* add tests for usePluginComponents hook

* readd expose components

* add type assertion exceptions to betterer results

* use new addedComponent registry in legacy endpoints

* remove unused code

* cleanup

* revert test code

* remove commented code

* wrap in try catch

* pr feedback
2024-08-27 11:14:04 +02:00
Erik Sundell 134467fc4a
Plugin Extensions: Introduce new registry for exposed components (#91748)
* refactor app plugin internals

* add base registry and exposed components registry

* refactor usePluginComponent hook

* change type name

* fix hook

* remove comments

* fix broken tests

* add more tests

* remove link and component related changes

* use right id format

* add title prop

* remove comments

* rename registry

* make exportedComponentsConfigs required

* fix broken test

* cleanup tests

* fix prop name

* remove capability related code

* rename exported to exposed

* refactor(extensions): make registry types generic

* Update public/app/features/plugins/extensions/registry/ExportedComponentsRegistry.test.ts

Co-authored-by: Levente Balogh <balogh.levente.hu@gmail.com>

* fix levitate error

---------

Co-authored-by: Levente Balogh <balogh.levente.hu@gmail.com>
2024-08-19 08:43:11 +02:00
Bogdan Matei 3303900c09
Scopes: Lift scopes at global level (#90136) 2024-08-12 14:11:50 +03:00
Ashley Harrison 334657e1cb
Navigation: Move scroll behaviour to body (#89921)
* initial attempt at body scrolling

* fix login layout

* minor fixes

* "fix" some fixed position stuff

* remember scroll position in dashboard page

* fix unit tests

* expose chrome header height in runtime and fix connections sticky header

* fix panel edit in scenes

* fix unit tests

* make useChromeHeaderHeight backwards compatible, fix plugin details double scrollbar

* fix sticky behaviour in explore metrics

* handle when undefined

* deprecate scrollRef/scrollTop

* fix extra overflow on firefox
2024-07-17 13:48:47 +01:00
Jack Westbrook 40207c53ae
Plugins: Expose functions to plugins for checking RBAC permissions (#89047)
* feat(grafana-data): create rbac functions for checking permissions

* feat(grafana-runtime): pass current user to runtime

* feat(grafana-runtime): expose rbac functions to check permissions against current user

* refactor(contextsrv): use functions from grafana/data to check rbac permissions against user

* Apply suggestions from code review

Co-authored-by: Marcus Andersson <marcus.andersson@grafana.com>

* chore(rbac): fix missing types imports

* refactor(rbac): make exposed functions return boolean

---------

Co-authored-by: Marcus Andersson <marcus.andersson@grafana.com>
2024-06-26 17:29:17 +02:00
Ashley Harrison 47f8717149
React: Use new JSX transform (#88802)
* update eslint, tsconfig + esbuild to handle new jsx transform

* remove thing that breaks the new jsx transform

* remove react imports

* adjust grafana-icons build

* is this the correct syntax?

* try this

* well this was much easier than expected...

* change grafana-plugin-configs webpack config

* fixes

* fix lockfile

* fix 2 more violations

* use path.resolve instead of require.resolve

* remove react import

* fix react imports

* more fixes

* remove React import

* remove import React from docs

* remove another react import
2024-06-25 12:43:47 +01:00
Ashley Harrison 50dd95c09b
Chore: Remove `betterPageScrolling` toggle (#89339)
* remove betterPageScrolling toggle

* add scrollTo test shim
2024-06-18 14:33:08 +01:00
Levente Balogh ebe42e1ada
Plugins: Allow apps to expose components. Update the extensions API. (#87236)
* feat: introduce exposable components and update the public APIs

Co-authored-by: Marcus Andersson <marcus.andersson@grafana.com>

* tests: fix the tests for `usePluginComponent()`

I broke them when I wrapped the component with the PluginContextProvider which fetches the plugin metadata.

* fix: typo

---------

Co-authored-by: Marcus Andersson <marcus.andersson@grafana.com>
2024-06-07 18:05:00 +02:00
Levente Balogh 17a3ec52b6
Plugin preloading: Fix performance measurement (#86855)
fix: measuring plugin preload performance
2024-04-24 15:37:22 +02:00
Marcus Andersson 804c726413
PluginExtensions: Make the extensions registry reactive (#83085)
* 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>
2024-04-24 09:33:16 +02:00
Torkel Ödegaard e90b87589f
ModalsContext: Unify modals context and manager (#84916)
* ModalsContext: Unify modals context and manager

* Clear on location change

* fixes

* Update

* use generics to avoid anys

---------

Co-authored-by: joshhunt <josh@trtr.co>
2024-03-28 13:26:57 +01:00
Josh Hunt ed3bdf5502
I18n: Expose current UI language in @grafana/runtime config (#84457)
* I18n: Expose current UI language in Grafana config

* fix
2024-03-18 11:00:43 +00:00
Josh Hunt 6a4e0c692a
Page: Use browser native scrollbars for the main page content (#82919)
* remove custom scroll bars from Page component

* make flagged scroller the actual scrolling element,

* enable feature flag by default

* re-enable the scroll props in Page

* rename feature toggle

* fix css

* only update when deleted

* set .scrollbar-view on our scrolling wrapper

---------

Co-authored-by: Ryan McKinley <ryantxu@gmail.com>
2024-03-06 15:06:47 +00:00
Jack Westbrook 0dcdfc261b
Monaco Editor: Load via ESM (#78261)
* chore(monaco): bump monaco-editor to latest version

* feat(codeeditor): use esm to load monaco editor

* revert(monaco): put back previous version

* feat(monaco): setup MonacoEnvironment when bootstrapping app

* feat(monaco): load monaco languages from registry as workers

* feat(webpack): clean up warnings, remove need to copy monaco into lib

* fix(plugins): wip - remove amd loader workaround in systemjs hooks

* chore(azure): clean up so QueryField passes typecheck

* test(jest): update config to fix failing tests due to missing monaco-editor

* test(jest): update config to work with monaco-editor and kusto

* test(jest): prevent message eventlistener in nodeGraph/layout.worker tripping up monaco tests

* test(plugins): wip - remove amd related tests from systemjs hooks

* test(alerting): prefer clearAllMocks to prevent monaco editor failing due to missing matchMedia

* test(parca): fix failing test due to undefined backendSrv

* chore: move monacoEnv to app/core

* test: increase testing-lib timeout to 2secs, fix parca test to assert dom element

* feat(plugins): share kusto via systemjs

* test(e2e): increase timeout for checking monaco editor in exemplars spec

* test(e2e): assert monaco has loaded by checking the spinner is gone and window.monaco exists

* test(e2e): check for monaco editor textarea

* test(e2e): check monaco editor is loaded before assertions

* test(e2e): add waitForMonacoToLoad util to reduce duplication

* test(e2e): fix failing mysql spec

* chore(jest): add comment to setupTests explaining need to incresae default timeout

* chore(nodegraph): improve comment in layout.worker.utils to better explain the need for file
2024-02-22 12:31:40 +01:00
Laura Fernández 8ee7b1e00c
ReturnToPrevious : Add logic to show the new component in `AppChrome` behind the new toggle (#81035) 2024-01-30 13:34:59 +01:00
Konrad Lalik 26e71953a4
Alerting: Improve integration with dashboards (#80201)
* Add filtering by dashboard UID annotation

* Update the inline doc for search

* Add AlertRulesDrawer to the dashboards toolbar

* Use DashboardPicker as a filter on the alert rules page

* Fix accessibility errors

* Update drawer subtitle

* Display Alerting toolbar button only if there are linked alert rules

* Change toolbar rendering method, prevent displaying when no linked rules

* Improve text

* Use React.lazy to load the Alert rule toolbar button and drawer when needed
2024-01-29 16:09:10 +01:00