2525 Commits

Author SHA1 Message Date
c94f930950 Update dependency prettier to v3.6.2 (#108689)
* Update dependency prettier to v3.6.2

* run prettier

---------

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: Ashley Harrison <ashley.harrison@grafana.com>
2025-07-25 17:47:44 +01:00
838391cd31 I18n: Prepare locale format for preview (#108501)
* Promote toggle to public preview

* disable RTL locales

* update badge on prefs page to preview
2025-07-23 09:41:22 +00:00
ca63c8015d FS: Frontend redirect to /login (#108225)
* Add frontend redirect to login

* Make Login topnav link do a page transition to login page

* Force AppChromeState update when route changes to get new isChromeless state

* Add base url to SignInLink, and add tests

* wrap login page in <Page />

* comment, test

* fix loginPage test

* rejigger signin check, remove chrome from deps
2025-07-21 10:48:53 +00:00
3c18add70b ExtensionSidebar: Make sure sidebar will not render more than max width (#108374)
ExtensionSidebar: Make sure sidebar will not render more than max
2025-07-21 10:24:26 +00:00
554e92c408 Invite User: Add invite user button to top nav for admins (#108159)
* reimplement original design

* update button with responsive design that matches other elements in top bar; add comprehensive unit tests

* add a basic call out in docs for new button

* remove doc changes
2025-07-18 18:21:23 -07:00
43280a6dab Internationalisation: More markup following manual review (#108232)
* mark up NestedFolderPiker root item

* mark up fieldsbyframerefid

* mark up time picker options

* mark up field types
2025-07-18 09:40:57 +01:00
4588c6c11c ExtensionSidebar: Pass closeSidebar to plugin helpers (#108171)
* ExtensionSidebar: Add `CloseExtensionSidebarEvent`

* ExtensionSidebar: Use `CloseExtensionSidebarEvent` in provider

* ExtensionSidebar: Pass `closeSidebar` to plugin helpers
2025-07-16 11:35:15 +00:00
75a6aa7838 Plugin Extensions: Update extension-point ID validation (#107959)
* feat(extensions): don't allow core grafana extension point ids in plugins

* feat(extensions): log more specific errors if extension point id validation fails

* chore: move the ExtensionSidebar ext. point id to grafana-data

* review: remove type assertion
2025-07-14 10:18:21 +02:00
fccda2440e ExtensionSidebar: Render multiple sidebar buttons in topnav (#107875)
* feat: modified toolbar item so buttons render invidually

* added icon for investigations

* Update public/app/core/components/AppChrome/ExtensionSidebar/ExtensionToolbarItem.tsx

Co-authored-by: Sven Grossmann <sven.grossmann@grafana.com>

---------

Co-authored-by: Sven Grossmann <sven.grossmann@grafana.com>
2025-07-10 09:16:47 +00:00
20c700dd52 Chore: reduces barrel files part II (#107688)
* Chore: reduce barrel files

* chore: fixes unit test

* Chore: reduces barrel files part II

* chore: fix import sorting
2025-07-09 06:15:33 +02:00
31b71f79dd Internationalisation: Manual mark up following review (#107625)
* mark up and add confirmText to lint rule

* mark up and add ariaLabel to lint rule

* add confirmText to propertiesToCheck

* mark up and add body to propsToCheck

* mark up latest

* mark up 'Dashboard saved'

* mark up filterbyvalue options

* mark up tooltip options

* mark up and add lint rules for noOptionsMessage/loadingMessage

* mark up 'Convert field type'

* mark up placeholderText/noOptionsMessage

* mark up run query

* mark up variable editor fields

* mark up week start options

* mark up dashboard link options

* mark up prom options

* mark up builder/code toggles

* make CI happy

* kick CI
2025-07-07 16:43:19 +01:00
77f84e494d Plugin Extensions: Add error boundaries (#107515)
* feat(grafana-data): expose PluginContext

This is aimed to be used in the `PluginErrorBoundary` (which is a class component, and cannot use the hook.)

* feat(PluginErrorBoundary): add an error boundary for plugins

* feat(ExtensionsErrorBoundary): add an error boundary for extensions)

* feat(Extensions/Utils): wrap components with error boundaries

* feat(Plugins): wrap root plugin page with an error boundary

* fix: Fallback component should always be visible for onClick() modals

* review: use object arguments instead of positional ones for `renderWithPluginContext()`

* review: update `wrapWithPluginContext()` to receive args as an object

* refactor(AppChromeExtensionPoint): remove the error boundary

We have an error boundary on the extensions-framework level now

* refactor(ExtensionSidebar): remove the ErrorBoundary from the extensions

This is handled on the extensions-framework level now.

* test(ExtensionSidebar): add tests

* chore: translation extraction

* chore: prettier formatting

* fix(PluginErrorBoundary): remove unnecessary type casting
2025-07-07 14:51:04 +02:00
68cbd23916 Chore: reduces barrel files (#107512)
* Chore: reduce barrel files

* chore: fixes unit test

* chore: fix broken path
2025-07-07 09:23:27 +02:00
47e5bd2316 TimeSeries/Trend: Fix infinite loop (#107615) 2025-07-04 09:26:43 +00:00
c7374b6910 Alerting: Add Synthetic and IRM link cards (#107538) 2025-07-04 10:52:43 +02:00
e76f470b44 NestedFolderPicker: Migrate to app platform API (#106926)
* Add /children endpoint

* Update folder client

* Add comment

* Add feature toggle

* Add new version of useFoldersQuery

* Error handling

* Format

* Rename feature toggle

* Remove options and move root folder constant

* Fix feature toggle merge

* Add feature toggle again

* Rename useFoldersQuery files

* Update API spec

* Fix test

* Add test

* Better typings

---------

Co-authored-by: Clarity-89 <homes89@ukr.net>
2025-07-03 16:15:23 +02:00
83396e2080 StateTimeline: Show error when Time type field has invalid values (#107491) 2025-07-02 08:51:20 -05:00
bfd33467fb Tests: removes jest duplicate manual mock warning (#107459)
* Tests: removes jest duplicate manual mock warning

* Trigger build

* Trigger build
2025-07-02 09:25:25 +02:00
79c39e7907 TimeSeries/Trend: Fix sparse points rendering heuristic (#107279) 2025-07-01 15:03:53 -05:00
Jo
86543e0f91 Access: Disable role none option if advanced access control is not enabled (#107378)
* disable role none option if advanced access control is not enabled

* filter out None instead

* fix lint
2025-06-30 16:35:17 +02:00
15293a2ceb Plugins: Adds AppChrome extension point (#106623)
* Plugins: adds basic PopupExtension point

* Simplify the extension point.

* Excluding the app chrome extension to be rendered on login/signup pages.

* Added feature toggle to be able to disable the app chrome extensions.

* Adding an error boundary around the extension point.

* Changed the way we use the feature toggle.

* moved to use the helper function instead of filtering.

* removed duplace info.

* chore: remove leftover useMemo

---------

Co-authored-by: Marcus Andersson <marcus.andersson@grafana.com>
2025-06-30 06:32:08 +02:00
ee6cbd0efc BarChart/StateTimeline: Use noValue setting for error message when data is empty (#107147)
* fix: use fieldConfig.defaults.noValue in barchart and statetimeline

* change name of test

* remove todo comment

* lean on PanelDataErrorView in the case where no fields are present

* update StateTimeline and StatusHistory to use PanelDataErrorView

* fix test

* self-review cleanup
2025-06-27 08:28:13 -05:00
f1a22a8ea9 Enterprise: Links that inform about enterprise auth options (#106627)
* Enterprise: Links that inform about enterprise auth options

* Update

* fix¨

* Update links

* brand color badge

* update language

* Update

* Update
2025-06-27 11:40:03 +02:00
d3bd3175af ProvisionedFolder: Delete folder drawer (#107089)
* ProvisionedFolder: delete flow set up

---------

Co-authored-by: Alex Khomenko <Clarity-89@users.noreply.github.com>
2025-06-25 11:13:42 -04:00
dcfb079856 StateTimeline: Display false and empty string values (#107059)
* Support boolean false value mappings

* Support empty string value mapping
2025-06-24 12:07:13 -04:00
10b6dd97f8 Allow the docs plugin to use the sidebar (#106905) 2025-06-24 15:10:28 +01:00
38fc06a6ff Internationalisation: Mark up panel edit options (#107051)
* markup timeseries panel edit

* mark up matchers ui

* mark up bar chart

* mark up stat panel

* mark up gauge

* mark up bar gauge

* mark up table component

* mark up pie chart

* mark up state timeline

* mark up heatmap

* mark up status history

* mark up histogram

* mark up text panel

* mark up alert list

* mark up dashboard list

* mark up news panel

* mark up annolist

* mark up logs panel

* mark up node-graph

* mark up traces

* mark up trend

* mark up xychart

* fix build
2025-06-24 12:55:55 +01:00
5d3a1f07c8 Theme: Make viz colors configurable by the theme input (#106974)
* make viz colors configurable when creating the theme

* fix bug with palette not showing last color

* attempt to constrain the types better

* better generics

* remove reverseMap

* ensure there's an empty options default
2025-06-20 16:13:24 +01:00
7070da073e Drawer: Include divider and close button when passing a custom title element (#106896)
* make drawer title behaviour more consistent

* fix linting errors
2025-06-18 12:52:32 +01:00
e49c73533b I18n: Allow pseudo-locale to be enabled in production builds (#106738)
* I18n: Allow pseudo-locale to be enabled in production builds

* fix tests now that pseudo is around

* remove psuedo locale from i18n package

* load en-us from plugin resources for pseudo

* fix tests + remove 'hidden' option

---------

Co-authored-by: Ashley Harrison <ashley.harrison@grafana.com>
2025-06-17 10:55:15 +01:00
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
1e41c07920 StateTimeline: Support NaN and null value mappings (#105638)
* fix(#92944): add StateTimeline Null+NaN handling

* chore: remove console.warns from debugging

* test: initialize a couple of simple tests

* test: more tests for hasMappedNaN and hasMappedNull

* chore: revert some of the let-const syntax cleanup for a later PR

* chore: rename should draw method

* chore: fix comment typo

* refactor(timeline-chart-utils): un-nest hasSpecialMappedValue() helper

* test(timeline-chart-utils): unit test hasSpecialMappedValue() helper

* chore: fix code comment typos in changed files

* refactor(timeline-chart): reduce helper DRY-ness for better performance

* fix(timeline-chart): check Y value for truthiness, not if it is finite

* test(state-timeline): additional gdev test panels with null + NN values

* fix(timeline-chart): allow Y value of zero in checks

---------

Co-authored-by: Jesse David Peterson <jesdavpet@users.noreply.github.com>
Co-authored-by: Adela Almasan <adela.almasan@grafana.com>
2025-06-12 15:13:25 -04:00
3c6da3f241 i18n: removes useTranslate from ESLint rules (#106597)
* i18n: removes useTranslate from eslint rules

* chore: remove some more useTranslate
2025-06-12 13:30:54 +02:00
2b8c74de2e i18n: removes useTranslate hook (#106556)
* i18n: removes useTranslate hook

* chore: fix duplicate imports

* chore: fix import sorting and hook dependencies
2025-06-12 11:03:52 +02:00
44e7be134d TimeSeries: Fix rendering of sparse points with null gaps at outer edges (#106507) 2025-06-11 15:43:54 -05:00
66f79e53e5 Dashboards: Pass id prop to Switch component for bool inputs (#106438) 2025-06-11 12:45:14 +01:00
cbb828202a FolderPicker: Remove old folder picker (#105374)
* Remove newFolderPicker toggle

* Remove usage of the old folder picker

* fix some tests

* remove old test
2025-06-10 16:01:48 +02:00
40164cb09e Authorization: Fix/provisioned permission display (#106179)
* add isProvisioned flag to permission DTO

* handle provisioned permissions explicitly

* lint

* swagger

* simplify logic to always show non-managed permissions first; remove unnecessary isProvisioned

* fix docs

* oops

* actually just generate the docs
2025-06-03 11:21:42 -05:00
abb885c585 I18n: Move eslint rule to package (#105860) 2025-05-29 16:11:59 +02:00
64f321e430 Shortcuts: Update panel shortcuts modal (#106161) 2025-05-28 12:39:41 -03:00
98d1821948 Extension sidebar: Fix incorrect rendering of menu buttons (#106145)
* fix(ui): use component render instead of usecallback to render button

* add and fix component tests
2025-05-28 16:39:23 +02:00
8b6103fc67 TimePickerWithHistory: Improve type handling when reading history from localStorage (#105859)
* TimePickerWithHistory: Improve migrateHistory type safety handling and validation
2025-05-27 14:00:47 -04:00
c7cd06d5f5 i18n: exports TFunction from @grafana/i18n package (#105921) 2025-05-23 10:34:35 +02:00
43e2bf5e38 NestedFolderPicker: Fix scroll jumps back to top (#105567)
refactor selector to output a stable value
2025-05-21 11:02:42 -04:00
546f0c2675 Chore: Remove extraThemes feature toggle (#105623)
remove extraThemes feature toggle
2025-05-20 09:18:08 +01:00
98c9bc5028 Preferences: Disable the save button whilst saving preferences (#105605)
* disable the save button whilst saving preferences

* use .finally to always reset state of submit button

* fix unit tests
2025-05-19 12:42:44 +01:00
808b371225 Themes: Prevent duplicated API call in drawer (#105602)
refactor to separate component, stop propagating radio button event + unit test
2025-05-19 12:42:36 +01:00
6343a9caf8 Extension Sidebar: Set max width to 2/3 of page width (#105497) 2025-05-16 08:31:20 +02:00
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
46f437db06 Extension Sidebar: Change aiassistant-app to assistant-app (#105239) 2025-05-12 14:23:32 +03:00