Compare commits

...

13 Commits

Author SHA1 Message Date
Jacob Valdez 92f1fba9b4 docs: reorder whats new posts and include plugin translation (#111482) (#111485) 2025-09-23 16:40:24 +02:00
grafana-delivery-bot[bot] 563ca4aa39 Release: Bump version to 12.2.0 (#111346)
bump version 12.2.0

Co-authored-by: grafana-delivery-bot[bot] <grafana-delivery-bot[bot]@users.noreply.github.com>
2025-09-23 09:09:40 -05:00
Jacob Valdez f1d4c6433b backporting What's New in Grafana 12.2.0 (#111471) 2025-09-23 13:55:37 +02:00
grafana-delivery-bot[bot] ccf0c5b40e Release: Bump version to 12.2.0 (#111414)
bump version 12.2.0

Co-authored-by: grafana-delivery-bot[bot] <grafana-delivery-bot[bot]@users.noreply.github.com>
2025-09-19 13:59:49 -05:00
Josh Hunt 6569f64267 [release-12.2.0] CI: Backport release-npm.yml (#111395)
backport release-npm.yml from main
2025-09-19 18:31:45 +01:00
Josh Hunt 1cc2a4cbe7 [release-12.2.0] CI: Fix NPM workflow inputs (#111352)
Fix referring to inputs (#111345)

(cherry picked from commit 1d6c1da94f)
2025-09-18 23:26:53 +01:00
Kevin Minehart 93c9887bc4 [release-12.2.0] backport bump-version.yml and release-build.yml (#111340)
* [release-12.2.0] backport bump-version.yml and release-build.yml

* add release-npm.yml
2025-09-18 16:57:26 -05:00
Ashley Harrison 66d8379061 [release-12.2.0] Chore: bump axios to a version without CVE (#111113)
Chore: bump `axios` to a version without CVE (#111076)

bump axios to a version without CVE

(cherry picked from commit 7bba151416)
2025-09-15 16:25:59 +01:00
Adela Almasan 7e708e5976 [release-12.2.0] Actions: Add permission check to missing panels (#111115) 2025-09-15 09:55:11 -05:00
Luminessa Starlight a9f59cf340 [release-12.2.0]: Accessibility: enable responsive reflow of variables in dashboard edit (#111032)
Accessibility: enable responsive reflow of variables in dashboard edit (#110967)

enable responsive reflow of variables in dashboard edit
2025-09-15 10:46:52 -04:00
Ashley Harrison 02fadf48fc Geomap: Only prefix with grafana public path if relative url (#111081) (#111108)
only prefix with grafana public path if relative url
2025-09-15 15:42:53 +01:00
grafana-delivery-bot[bot] 496911e716 [release-12.2.0] Table: Restore previous footer behavior of reducers applying to filtered data (#111050)
Table: Restore previous footer behavior of reducers applying to filtered data (#111041)

* Table: Restore previous footer behavior of reducers applying to filtered data

* update e2e to match new behavior

(cherry picked from commit f258d8a417)

Co-authored-by: Paul Marbach <paul.marbach@grafana.com>
2025-09-12 19:10:29 -04:00
grafana-delivery-bot[bot] 6d8ad119bf [release-12.2.0] Table: Fix logic to calculate footer height (#111049)
Table: Fix logic to calculate footer height (#110954)

* Table: Fix logic to calculate footer height

* add non-numeric footer case to gdev

* Update packages/grafana-ui/src/components/Table/TableNG/utils.ts



* Update packages/grafana-ui/src/components/Table/TableNG/TableNG.tsx



---------


(cherry picked from commit cb37539ed7)

Co-authored-by: Paul Marbach <paul.marbach@grafana.com>
Co-authored-by: Leon Sorokin <leeoniya@gmail.com>
2025-09-12 17:51:37 -04:00
76 changed files with 700 additions and 303 deletions
+2 -2
View File
@@ -31,9 +31,9 @@ jobs:
app_id: ${{ vars.DELIVERY_BOT_APP_ID }}
private_key: ${{ env.GRAFANA_DELIVERY_BOT_APP_PEM }}
repositories: '["grafana"]'
permissions: '{"contents": "write", "pull_requests": "write"}'
permissions: '{"contents": "write", "pull_requests": "write", "workflows": "write"}'
- name: Checkout Grafana
uses: actions/checkout@v4
uses: actions/checkout@v5
with:
token: ${{ steps.generate_token.outputs.token }}
- name: Update package.json versions
+70 -3
View File
@@ -56,7 +56,7 @@ jobs:
permissions:
contents: read
steps:
- uses: actions/checkout@v4
- uses: actions/checkout@v5
with:
persist-credentials: false
- name: Set up version (Release Branches)
@@ -140,7 +140,7 @@ jobs:
# The downside to this is that the frontend will be built for each one when it could be reused for all of them.
# This could be a future improvement.
include:
- name: linux-amd64
- name: linux-amd64 # publish-npm relies on this step building npm packages
artifacts: targz:grafana:linux/amd64,deb:grafana:linux/amd64,rpm:grafana:linux/amd64,docker:grafana:linux/amd64,docker:grafana:linux/amd64:ubuntu,npm:grafana,storybook
verify: true
- name: linux-arm64
@@ -169,7 +169,7 @@ jobs:
verify: true
steps:
- uses: grafana/shared-workflows/actions/dockerhub-login@dockerhub-login/v1.0.2
- uses: actions/checkout@v4
- uses: actions/checkout@v5
with:
persist-credentials: false
- name: Set up QEMU
@@ -197,6 +197,7 @@ jobs:
name: artifacts-${{ matrix.name }}
path: ${{ steps.build.outputs.dist-dir }}
retention-days: 1
publish-artifacts:
name: Upload artifacts
uses: grafana/grafana/.github/workflows/publish-artifact.yml@main
@@ -211,6 +212,7 @@ jobs:
run-id: ${{ github.run_id }}
bucket-path: ${{ needs.setup.outputs.version }}_${{ github.run_id }}
environment: prod
publish-dockerhub:
if: github.ref_name == 'main'
permissions:
@@ -268,3 +270,68 @@ jobs:
docker manifest push grafana/grafana:main-ubuntu
docker manifest push "grafana/grafana-dev:${VERSION}"
docker manifest push "grafana/grafana-dev:${VERSION}-ubuntu"
publish-npm-canaries:
if: github.ref_name == 'main'
name: Publish NPM canaries
uses: ./.github/workflows/release-npm.yml
permissions:
contents: read
id-token: write
needs:
- setup
- build
with:
grafana_commit: ${{ needs.setup.outputs.grafana-commit }}
version: ${{ needs.setup.outputs.version }}
build_id: ${{ github.run_id }}
version_type: "canary"
# notify-pr creates (or updates) a comment in a pull request to link to this workflow where the release artifacts are
# being built.
notify-pr:
runs-on: ubuntu-x64-small
permissions:
contents: read
id-token: write
needs:
- setup
steps:
- id: vault-secrets
uses: grafana/shared-workflows/actions/get-vault-secrets@main
with:
repo_secrets: |
GRAFANA_DELIVERY_BOT_APP_PEM=delivery-bot-app:PRIVATE_KEY
- name: Generate token
id: generate_token
uses: tibdex/github-app-token@3beb63f4bd073e61482598c45c71c1019b59b73a
with:
app_id: ${{ vars.DELIVERY_BOT_APP_ID }}
private_key: ${{ env.GRAFANA_DELIVERY_BOT_APP_PEM }}
repositories: '["grafana"]'
permissions: '{"issues": "write", "pull_requests": "write", "contents": "read"}'
- name: Find PR
env:
GITHUB_TOKEN: ${{ steps.generate_token.outputs.token }}
GRAFANA_COMMIT: ${{ needs.setup.outputs.grafana-commit }}
run: echo "ISSUE_NUMBER=$(gh api "/repos/grafana/grafana/commits/${GRAFANA_COMMIT}/pulls" | jq -r '.[0].number')" >> "$GITHUB_ENV"
- name: Find Comment
uses: peter-evans/find-comment@3eae4d37986fb5a8592848f6a574fdf654e61f9e # v3
id: fc
with:
issue-number: ${{ env.ISSUE_NUMBER }}
comment-author: 'grafana-delivery-bot[bot]'
body-includes: GitHub Actions Build
token: ${{ steps.generate_token.outputs.token }}
- name: Create or update comment
uses: peter-evans/create-or-update-comment@71345be0265236311c031f5c7866368bd1eff043 # v4
with:
token: ${{ steps.generate_token.outputs.token }}
comment-id: ${{ steps.fc.outputs.comment-id }}
issue-number: ${{ env.ISSUE_NUMBER }}
body: |
:rocket: Your submission is now being built and packaged.
- [GitHub Actions Build](https://github.com/grafana/grafana/actions/runs/${{ github.run_id }})
- Version: ${{ needs.setup.outputs.version }}
edit-mode: replace
+149
View File
@@ -0,0 +1,149 @@
name: Release NPM packages
run-name: Publish NPM ${{ inputs.version_type }} ${{ inputs.version }}
on:
workflow_call:
inputs:
grafana_commit:
description: 'Grafana commit SHA to build against'
required: true
type: string
version:
description: 'Version to publish as'
required: true
type: string
build_id:
description: 'Run ID from the original release-build workflow'
required: true
type: string
version_type:
description: 'Version type (canary, nightly, stable)'
required: true
type: string
workflow_dispatch:
inputs:
grafana_commit:
description: 'Grafana commit SHA to build against'
required: true
version:
description: 'Version to publish as'
required: true
build_id:
description: 'Run ID from the original release-build workflow'
required: true
version_type:
description: 'Version type (canary, nightly, stable)'
required: true
permissions: {}
jobs:
# If called with version_type 'canary' or 'stable', build + publish to NPM
# If called with version_type 'nightly', just tag the given version with nightly tag. It was already published by the canary build.
publish:
name: Publish NPM packages
runs-on: github-hosted-ubuntu-x64-small
if: inputs.version_type == 'canary' || inputs.version_type == 'stable'
permissions:
contents: read
id-token: write
steps:
- name: Info
env:
GITHUB_REF: ${{ github.ref }}
GRAFANA_COMMIT: ${{ inputs.grafana_commit }}
run: |
echo "GRAFANA_COMMIT: $GRAFANA_COMMIT"
echo "github.ref: $GITHUB_REF"
- name: Checkout workflow ref
uses: actions/checkout@v4
with:
persist-credentials: false
fetch-depth: 100
fetch-tags: false
# this will fail with "{commit} is not a valid commit" if the commit is valid but
# not in the last 100 commits.
- name: Verify commit is in workflow HEAD
env:
GIT_COMMIT: ${{ inputs.grafana_commit }}
run: ./.github/workflows/scripts/validate-commit-in-head.sh
shell: bash
- name: Map version type to NPM tag
id: npm-tag
env:
VERSION: ${{ inputs.version }}
VERSION_TYPE: ${{ inputs.version_type }}
REFERENCE_PKG: "@grafana/runtime"
run: |
TAG=$(./.github/workflows/scripts/determine-npm-tag.sh)
echo "NPM_TAG=$TAG" >> "$GITHUB_OUTPUT"
shell: bash
- name: Checkout build commit
uses: actions/checkout@v4
with:
persist-credentials: false
ref: ${{ inputs.grafana_commit }}
- name: Setup Node
uses: ./.github/actions/setup-node
# Trusted Publishing is only available in npm v11.5.1 and later
- name: Update npm
run: npm install -g npm@^11.5.1
- name: Install dependencies
run: yarn install --immutable
- name: Typecheck packages
run: yarn run packages:typecheck
- name: Version, build, and pack packages
env:
VERSION: ${{ inputs.version }}
run: |
yarn run packages:build
yarn lerna version "$VERSION" \
--exact \
--no-git-tag-version \
--no-push \
--force-publish \
--yes
yarn run packages:pack
- name: Debug packed files
run: tree -a ./npm-artifacts
- name: Validate packages
run: ./scripts/validate-npm-packages.sh
- name: Debug OIDC Claims
uses: github/actions-oidc-debugger@2e9ba5d3f4bebaad1f91a2cede055115738b7ae8
with:
audience: '${{ github.server_url }}/${{ github.repository_owner }}'
- name: Publish packages
env:
NPM_TAG: ${{ steps.npm-tag.outputs.NPM_TAG }}
run: ./scripts/publish-npm-packages.sh --dist-tag "$NPM_TAG" --registry 'https://registry.npmjs.org/'
# TODO: finish this step
tag-nightly:
name: Tag nightly release
runs-on: github-hosted-ubuntu-x64-small
needs: publish
if: inputs.version_type == 'nightly'
steps:
- name: Checkout workflow ref
uses: actions/checkout@v4
with:
persist-credentials: false
# TODO: tag the given release with nightly
@@ -1442,6 +1442,67 @@
}
],
"type": "table"
},
{
"datasource": {
"type": "grafana-testdata-datasource"
},
"fieldConfig": {
"defaults": {
"color": {
"mode": "thresholds"
},
"custom": {
"align": "auto",
"cellOptions": {
"type": "auto"
},
"footer": {
"reducers": ["lastNotNull", "countAll"]
},
"inspect": false
},
"mappings": [],
"thresholds": {
"mode": "absolute",
"steps": [
{
"color": "green",
"value": 0
},
{
"color": "red",
"value": 80
}
]
}
},
"overrides": []
},
"gridPos": {
"h": 6,
"w": 12,
"x": 0,
"y": 24
},
"id": 9,
"options": {
"cellHeight": "sm",
"showHeader": true
},
"pluginVersion": "12.2.0-pre",
"targets": [
{
"csvContent": "a,b\nfoo,bar\nbaz,bim\nbop,boop",
"datasource": {
"type": "grafana-testdata-datasource"
},
"refId": "A",
"scenarioId": "csv_content"
}
],
"title": "No numeric fields",
"type": "table"
}
],
"preload": false,
@@ -0,0 +1,20 @@
---
description: Guide for upgrading to Grafana v12.2
keywords:
- grafana
- configuration
- documentation
- upgrade
- '12.2'
title: Upgrade to Grafana v12.2
menuTitle: Upgrade to v12.2
weight: 498
---
# Upgrade to Grafana v12.2
{{< docs/shared lookup="upgrade/intro_2.md" source="grafana" version="<GRAFANA_VERSION>" >}}
{{< docs/shared lookup="back-up/back-up-grafana.md" source="grafana" version="<GRAFANA_VERSION>" leveloffset="+1" >}}
{{< docs/shared lookup="upgrade/upgrade-common-tasks.md" source="grafana" version="<GRAFANA_VERSION>" >}}
+1
View File
@@ -192,6 +192,7 @@ For a complete list of every change, with links to pull requests and related iss
## Grafana 12
- [What's new in 12.2](https://grafana.com/docs/grafana/<GRAFANA_VERSION>/whatsnew/whats-new-in-v12-2)
- [What's new in 12.1](https://grafana.com/docs/grafana/<GRAFANA_VERSION>/whatsnew/whats-new-in-v12-1)
- [What's new in 12.0](https://grafana.com/docs/grafana/<GRAFANA_VERSION>/whatsnew/whats-new-in-v12-0)
@@ -0,0 +1,72 @@
---
description: Feature and improvement highlights for Grafana v12.2
keywords:
- grafana
- new
- documentation
- '12.2'
- release notes
labels:
products:
- cloud
- enterprise
- oss
title: What's new in Grafana v12.2
posts:
- title: SQL expressions
items:
- whats-new/2025-09-05-sql-expressions.md
- title: Dashboards and visualizations
items:
- whats-new/2025-08-22-new-table-visualization-is-generally-available.md
- whats-new/2025-08-27-generate-tooltips-from-table-fields.md
- whats-new/2025-08-27-improved-footer-for-table-visualization.md
- whats-new/2025-07-17-disable-tooltips-in-canvas-visualizations.md
- whats-new/2025-07-14-static-options-for-query-variable.md
- whats-new/2025-07-24-dynamic-connection-direction-in-canvas.md
- whats-new/2025-08-04-canvas-pan-zoom-improvements.md
- whats-new/2025-09-01-actions-authentication-via-infinity-datasource.md
- whats-new/2025-09-02-enhanced-ad-hoc-filter-support.md
- whats-new/2025-09-02-new-dashboard-apis-now-enabled-by-default.md
- title: Reporting
items:
- whats-new/2025-05-27-new-and-improved-reporting.md
- title: Data sources
items:
- whats-new/2025-08-12-jenkins-enterprise-data-source-for-grafana.md
- whats-new/2025-07-16-google-sheets-data-source-now-supports-template-variables.md
- whats-new/2025-09-04-azure-monitor-resource-picker-filtering-and-recent-resources.md
- title: Explore
items:
- whats-new/2025-07-08-saved-queries-in-dashboards-and-explore.md
- title: Logs Drilldown
items:
- whats-new/2025-08-29-json-log-line-viewer-in-logs-drilldown-is-now-generally-available.md
- title: Metrics Drilldown
items:
- whats-new/2025-08-07-grafana-metrics-drilldown-entry-point-from-alerting-rule.md
- title: Plugins
items:
- whats-new/2025-09-11-translate-your-plugin.md
- title: Authentication and authorization
items:
- whats-new/2025-09-10-scim-configuration-ui.md
whats_new_grafana_version: 12.2
weight: -51
---
# Whats new in Grafana v12.2
Welcome to Grafana 12.2! This release focuses on making it easier to gain insights from your data.
We're excited to announce several features are now GA. Enhanced ad hoc filtering transforms your dashboards into true command centers, allowing you to slice and dice datasets on the fly. The redesigned table visualization offers improved performance and visual aids for quick pattern and anomaly identification, helping you make faster decisions. The Logs Drilldown JSON viewer makes intimidating log structures organized and explorable. Metrics Drilldown now integrates with alert creation in Grafana, so you can explore Prometheus data with intuitive point-and-click interactions, find the right visualization, and easily use its query in your alert rule.
We're also collecting feedback on some new public preview features. AI-powered SQL expressions eliminate the barrier between questions and answers by generating SQL queries from natural language and providing instant explanations for existing queries. Our enhanced Canvas Pan and Zoom experience lets you design complex dashboards exactly as you envision them.
Keep reading to learn more about everything 12.2 has in store.
{{< youtube id=-7A_tePidEM >}}
For even more detail about all the changes in this release, refer to the [changelog](https://github.com/grafana/grafana/blob/main/CHANGELOG.md). For the specific steps we recommend when you upgrade to v12.2, check out our [Upgrade Guide](https://grafana.com/docs/grafana/<GRAFANA_VERSION>/upgrade-guide/upgrade-v12.2/).
{{< docs/whats-new >}}
@@ -11,7 +11,7 @@ const waitForTableLoad = async (loc: Page | Locator) => {
};
test.describe('Panels test: Table - Footer', { tag: ['@panels', '@table'] }, () => {
test('Footer unaffected by filtering', async ({ gotoDashboardPage, selectors, page }) => {
test('Footer affected by filtering', async ({ gotoDashboardPage, selectors, page }) => {
const dashboardPage = await gotoDashboardPage({
uid: DASHBOARD_UID,
queryParams: new URLSearchParams({ editPanel: '4' }),
@@ -51,7 +51,7 @@ test.describe('Panels test: Table - Footer', { tag: ['@panels', '@table'] }, ()
dashboardPage
.getByGrafanaSelector(selectors.components.Panels.Visualization.TableNG.Footer.Value)
.nth(minColumnIdx)
).toHaveText(minReducerValue);
).not.toHaveText(minReducerValue);
});
test('Footer unaffected by sorting', async ({ gotoDashboardPage, selectors, page }) => {
@@ -1,6 +1,6 @@
{
"name": "@test-plugins/extensions-test-app",
"version": "12.2.0-pre",
"version": "12.2.0",
"private": true,
"scripts": {
"build": "NODE_OPTIONS='--experimental-strip-types --no-warnings=ExperimentalWarning' webpack -c ./webpack.config.ts --env production",
@@ -1,6 +1,6 @@
{
"name": "@test-plugins/grafana-e2etest-datasource",
"version": "12.2.0-pre",
"version": "12.2.0",
"private": true,
"scripts": {
"build": "NODE_OPTIONS='--experimental-strip-types --no-warnings=ExperimentalWarning' webpack -c ./webpack.config.ts --env production",
+1 -1
View File
@@ -1,5 +1,5 @@
{
"$schema": "node_modules/lerna/schemas/lerna-schema.json",
"npmClient": "yarn",
"version": "12.2.0-pre"
"version": "12.2.0"
}
+1 -1
View File
@@ -3,7 +3,7 @@
"license": "AGPL-3.0-only",
"private": true,
"name": "grafana",
"version": "12.2.0-pre",
"version": "12.2.0",
"repository": "github:grafana/grafana",
"scripts": {
"predev": "./scripts/check-frontend-dev.sh",
+1 -1
View File
@@ -2,7 +2,7 @@
"author": "Grafana Labs",
"license": "Apache-2.0",
"name": "@grafana/alerting",
"version": "12.2.0-pre",
"version": "12.2.0",
"description": "Grafana Alerting Library Build vertical integrations on top of the industry-leading alerting solution",
"keywords": [
"typescript",
+3 -3
View File
@@ -2,7 +2,7 @@
"author": "Grafana Labs",
"license": "Apache-2.0",
"name": "@grafana/data",
"version": "12.2.0-pre",
"version": "12.2.0",
"description": "Grafana Data Library",
"keywords": [
"typescript"
@@ -56,8 +56,8 @@
},
"dependencies": {
"@braintree/sanitize-url": "7.0.1",
"@grafana/i18n": "12.2.0-pre",
"@grafana/schema": "12.2.0-pre",
"@grafana/i18n": "12.2.0",
"@grafana/schema": "12.2.0",
"@leeoniya/ufuzzy": "1.0.18",
"@types/d3-interpolate": "^3.0.0",
"@types/string-hash": "1.1.3",
+1 -1
View File
@@ -2,7 +2,7 @@
"author": "Grafana Labs",
"license": "Apache-2.0",
"name": "@grafana/e2e-selectors",
"version": "12.2.0-pre",
"version": "12.2.0",
"description": "Grafana End-to-End Test Selectors Library",
"keywords": [
"cli",
+1 -1
View File
@@ -1,7 +1,7 @@
{
"name": "@grafana/eslint-plugin",
"description": "ESLint rules for use within the Grafana repo. Not suitable (or supported) for external use.",
"version": "12.2.0-pre",
"version": "12.2.0",
"main": "./index.cjs",
"author": "Grafana Labs",
"license": "Apache-2.0",
+3 -3
View File
@@ -2,7 +2,7 @@
"author": "Grafana Labs",
"license": "Apache-2.0",
"name": "@grafana/flamegraph",
"version": "12.2.0-pre",
"version": "12.2.0",
"description": "Grafana flamegraph visualization component",
"keywords": [
"grafana",
@@ -44,8 +44,8 @@
],
"dependencies": {
"@emotion/css": "11.13.5",
"@grafana/data": "12.2.0-pre",
"@grafana/ui": "12.2.0-pre",
"@grafana/data": "12.2.0",
"@grafana/ui": "12.2.0",
"@leeoniya/ufuzzy": "1.0.18",
"d3": "^7.8.5",
"lodash": "4.17.21",
+1 -1
View File
@@ -2,7 +2,7 @@
"author": "Grafana Labs",
"license": "Apache-2.0",
"name": "@grafana/i18n",
"version": "12.2.0-pre",
"version": "12.2.0",
"description": "Grafana Internationalization Library",
"keywords": [
"grafana",
@@ -3,7 +3,7 @@
"license": "AGPL-3.0-only",
"name": "@grafana/o11y-ds-frontend",
"private": true,
"version": "12.2.0-pre",
"version": "12.2.0",
"description": "Library to manage traces in Grafana.",
"sideEffects": false,
"repository": {
@@ -18,12 +18,12 @@
},
"dependencies": {
"@emotion/css": "11.13.5",
"@grafana/data": "12.2.0-pre",
"@grafana/e2e-selectors": "12.2.0-pre",
"@grafana/data": "12.2.0",
"@grafana/e2e-selectors": "12.2.0",
"@grafana/plugin-ui": "^0.10.10",
"@grafana/runtime": "12.2.0-pre",
"@grafana/schema": "12.2.0-pre",
"@grafana/ui": "12.2.0-pre",
"@grafana/runtime": "12.2.0",
"@grafana/schema": "12.2.0",
"@grafana/ui": "12.2.0",
"react-select": "5.10.2",
"react-use": "17.6.0",
"rxjs": "7.8.2",
+1 -1
View File
@@ -2,7 +2,7 @@
"name": "@grafana/plugin-configs",
"description": "Shared dependencies and files for core plugins",
"private": true,
"version": "12.2.0-pre",
"version": "12.2.0",
"dependencies": {
"tslib": "2.8.1"
},
+7 -7
View File
@@ -2,7 +2,7 @@
"author": "Grafana Labs",
"license": "AGPL-3.0-only",
"name": "@grafana/prometheus",
"version": "12.2.0-pre",
"version": "12.2.0",
"description": "Grafana Prometheus Library",
"keywords": [
"typescript",
@@ -41,13 +41,13 @@
"dependencies": {
"@emotion/css": "11.13.5",
"@floating-ui/react": "0.27.16",
"@grafana/data": "12.2.0-pre",
"@grafana/e2e-selectors": "12.2.0-pre",
"@grafana/i18n": "12.2.0-pre",
"@grafana/data": "12.2.0",
"@grafana/e2e-selectors": "12.2.0",
"@grafana/i18n": "12.2.0",
"@grafana/plugin-ui": "^0.10.10",
"@grafana/runtime": "12.2.0-pre",
"@grafana/schema": "12.2.0-pre",
"@grafana/ui": "12.2.0-pre",
"@grafana/runtime": "12.2.0",
"@grafana/schema": "12.2.0",
"@grafana/ui": "12.2.0",
"@hello-pangea/dnd": "18.0.1",
"@leeoniya/ufuzzy": "1.0.18",
"@lezer/common": "1.2.3",
+5 -5
View File
@@ -2,7 +2,7 @@
"author": "Grafana Labs",
"license": "Apache-2.0",
"name": "@grafana/runtime",
"version": "12.2.0-pre",
"version": "12.2.0",
"description": "Grafana Runtime Library",
"keywords": [
"grafana",
@@ -53,11 +53,11 @@
"postpack": "mv package.json.bak package.json && rimraf ./unstable"
},
"dependencies": {
"@grafana/data": "12.2.0-pre",
"@grafana/e2e-selectors": "12.2.0-pre",
"@grafana/data": "12.2.0",
"@grafana/e2e-selectors": "12.2.0",
"@grafana/faro-web-sdk": "^1.13.2",
"@grafana/schema": "12.2.0-pre",
"@grafana/ui": "12.2.0-pre",
"@grafana/schema": "12.2.0",
"@grafana/ui": "12.2.0",
"@types/systemjs": "6.15.3",
"history": "4.10.1",
"lodash": "4.17.21",
+1 -1
View File
@@ -2,7 +2,7 @@
"author": "Grafana Labs",
"license": "Apache-2.0",
"name": "@grafana/schema",
"version": "12.2.0-pre",
"version": "12.2.0",
"description": "Grafana Schema Library",
"keywords": [
"typescript"
@@ -8,7 +8,7 @@
//
// Run 'make gen-cue' from repository root to regenerate.
export const pluginVersion = "12.2.0-pre";
export const pluginVersion = "12.2.0";
export interface Options {
limit: number;
@@ -10,7 +10,7 @@
import * as common from '@grafana/schema';
export const pluginVersion = "12.2.0-pre";
export const pluginVersion = "12.2.0";
export interface Options extends common.OptionsWithLegend, common.OptionsWithTooltip, common.OptionsWithTextFormatting {
/**
@@ -10,7 +10,7 @@
import * as common from '@grafana/schema';
export const pluginVersion = "12.2.0-pre";
export const pluginVersion = "12.2.0";
export interface Options extends common.OptionsWithLegend, common.SingleStatBaseOptions {
displayMode: common.BarGaugeDisplayMode;
@@ -10,7 +10,7 @@
import * as common from '@grafana/schema';
export const pluginVersion = "12.2.0-pre";
export const pluginVersion = "12.2.0";
export enum VizDisplayMode {
Candles = 'candles',
@@ -10,7 +10,7 @@
import * as ui from '@grafana/schema';
export const pluginVersion = "12.2.0-pre";
export const pluginVersion = "12.2.0";
export enum HorizontalConstraint {
Center = 'center',
@@ -10,7 +10,7 @@
import * as common from '@grafana/schema';
export const pluginVersion = "12.2.0-pre";
export const pluginVersion = "12.2.0";
export interface MetricStat {
/**
@@ -8,7 +8,7 @@
//
// Run 'make gen-cue' from repository root to regenerate.
export const pluginVersion = "12.2.0-pre";
export const pluginVersion = "12.2.0";
export interface Options {
/**
@@ -8,7 +8,7 @@
//
// Run 'make gen-cue' from repository root to regenerate.
export const pluginVersion = "12.2.0-pre";
export const pluginVersion = "12.2.0";
export interface Options {
selectedSeries: number;
@@ -8,7 +8,7 @@
//
// Run 'make gen-cue' from repository root to regenerate.
export const pluginVersion = "12.2.0-pre";
export const pluginVersion = "12.2.0";
export type UpdateConfig = {
render: boolean,
@@ -10,7 +10,7 @@
import * as common from '@grafana/schema';
export const pluginVersion = "12.2.0-pre";
export const pluginVersion = "12.2.0";
export type BucketAggregation = (DateHistogram | Histogram | Terms | Filters | GeoHashGrid | Nested);
@@ -10,7 +10,7 @@
import * as common from '@grafana/schema';
export const pluginVersion = "12.2.0-pre";
export const pluginVersion = "12.2.0";
export interface Options extends common.SingleStatBaseOptions {
minVizHeight: number;
@@ -10,7 +10,7 @@
import * as ui from '@grafana/schema';
export const pluginVersion = "12.2.0-pre";
export const pluginVersion = "12.2.0";
export interface Options {
basemap: ui.MapLayerOptions;
@@ -10,7 +10,7 @@
import * as ui from '@grafana/schema';
export const pluginVersion = "12.2.0-pre";
export const pluginVersion = "12.2.0";
/**
* Controls the color mode of the heatmap
@@ -10,7 +10,7 @@
import * as common from '@grafana/schema';
export const pluginVersion = "12.2.0-pre";
export const pluginVersion = "12.2.0";
export interface Options extends common.OptionsWithLegend, common.OptionsWithTooltip {
/**
@@ -10,7 +10,7 @@
import * as common from '@grafana/schema';
export const pluginVersion = "12.2.0-pre";
export const pluginVersion = "12.2.0";
export interface Options {
controlsStorageKey?: string;
@@ -8,7 +8,7 @@
//
// Run 'make gen-cue' from repository root to regenerate.
export const pluginVersion = "12.2.0-pre";
export const pluginVersion = "12.2.0";
export interface Options {
/**
@@ -8,7 +8,7 @@
//
// Run 'make gen-cue' from repository root to regenerate.
export const pluginVersion = "12.2.0-pre";
export const pluginVersion = "12.2.0";
export interface ArcOption {
/**
@@ -10,7 +10,7 @@
import * as common from '@grafana/schema';
export const pluginVersion = "12.2.0-pre";
export const pluginVersion = "12.2.0";
/**
* Select the pie chart display style.
@@ -10,7 +10,7 @@
import * as common from '@grafana/schema';
export const pluginVersion = "12.2.0-pre";
export const pluginVersion = "12.2.0";
export interface Options extends common.SingleStatBaseOptions {
colorMode: common.BigValueColorMode;
@@ -10,7 +10,7 @@
import * as ui from '@grafana/schema';
export const pluginVersion = "12.2.0-pre";
export const pluginVersion = "12.2.0";
export interface Options extends ui.OptionsWithLegend, ui.OptionsWithTooltip, ui.OptionsWithTimezones {
/**
@@ -10,7 +10,7 @@
import * as ui from '@grafana/schema';
export const pluginVersion = "12.2.0-pre";
export const pluginVersion = "12.2.0";
export interface Options extends ui.OptionsWithLegend, ui.OptionsWithTooltip, ui.OptionsWithTimezones {
/**
@@ -10,7 +10,7 @@
import * as ui from '@grafana/schema';
export const pluginVersion = "12.2.0-pre";
export const pluginVersion = "12.2.0";
export interface Options {
/**
@@ -8,7 +8,7 @@
//
// Run 'make gen-cue' from repository root to regenerate.
export const pluginVersion = "12.2.0-pre";
export const pluginVersion = "12.2.0";
export enum TextMode {
Code = 'code',
@@ -10,7 +10,7 @@
import * as common from '@grafana/schema';
export const pluginVersion = "12.2.0-pre";
export const pluginVersion = "12.2.0";
export interface Options extends common.OptionsWithTimezones {
legend: common.VizLegendOptions;
@@ -10,7 +10,7 @@
import * as common from '@grafana/schema';
export const pluginVersion = "12.2.0-pre";
export const pluginVersion = "12.2.0";
/**
* Identical to timeseries... except it does not have timezone settings
@@ -10,7 +10,7 @@
import * as common from '@grafana/schema';
export const pluginVersion = "12.2.0-pre";
export const pluginVersion = "12.2.0";
export enum PointShape {
Circle = 'circle',
+6 -6
View File
@@ -3,7 +3,7 @@
"license": "AGPL-3.0-only",
"private": true,
"name": "@grafana/sql",
"version": "12.2.0-pre",
"version": "12.2.0",
"repository": {
"type": "git",
"url": "http://github.com/grafana/grafana.git",
@@ -16,12 +16,12 @@
},
"dependencies": {
"@emotion/css": "11.13.5",
"@grafana/data": "12.2.0-pre",
"@grafana/e2e-selectors": "12.2.0-pre",
"@grafana/i18n": "12.2.0-pre",
"@grafana/data": "12.2.0",
"@grafana/e2e-selectors": "12.2.0",
"@grafana/i18n": "12.2.0",
"@grafana/plugin-ui": "^0.10.10",
"@grafana/runtime": "12.2.0-pre",
"@grafana/ui": "12.2.0-pre",
"@grafana/runtime": "12.2.0",
"@grafana/ui": "12.2.0",
"@react-awesome-query-builder/ui": "6.6.15",
"immutable": "5.1.3",
"lodash": "4.17.21",
+1 -1
View File
@@ -2,7 +2,7 @@
"author": "Grafana Labs",
"license": "Apache-2.0",
"name": "@grafana/test-utils",
"version": "12.2.0-pre",
"version": "12.2.0",
"private": true,
"description": "Grafana test utils & Mock API",
"keywords": [
+5 -5
View File
@@ -2,7 +2,7 @@
"author": "Grafana Labs",
"license": "Apache-2.0",
"name": "@grafana/ui",
"version": "12.2.0-pre",
"version": "12.2.0",
"description": "Grafana Components Library",
"keywords": [
"grafana",
@@ -67,11 +67,11 @@
"@emotion/react": "11.14.0",
"@emotion/serialize": "1.3.3",
"@floating-ui/react": "0.27.16",
"@grafana/data": "12.2.0-pre",
"@grafana/e2e-selectors": "12.2.0-pre",
"@grafana/data": "12.2.0",
"@grafana/e2e-selectors": "12.2.0",
"@grafana/faro-web-sdk": "^1.13.2",
"@grafana/i18n": "12.2.0-pre",
"@grafana/schema": "12.2.0-pre",
"@grafana/i18n": "12.2.0",
"@grafana/schema": "12.2.0",
"@hello-pangea/dnd": "18.0.1",
"@monaco-editor/react": "4.7.0",
"@popperjs/core": "2.11.8",
@@ -108,7 +108,6 @@ export function TableNG(props: TableNGProps) {
enablePagination = false,
enableSharedCrosshair = false,
enableVirtualization,
fieldConfig,
frozenColumns = 0,
getActions = () => [],
height,
@@ -125,12 +124,6 @@ export function TableNG(props: TableNGProps) {
width,
} = props;
const hasFooter = useMemo(
() => data.fields.some((field) => field.config?.custom?.footer?.reducers?.length ?? false),
[data.fields]
);
const footerHeight = hasFooter ? calculateFooterHeight(data, fieldConfig) : 0;
const theme = useTheme2();
const styles = useStyles2(getGridStyles, enablePagination, transparent);
const panelContext = usePanelContext();
@@ -146,7 +139,16 @@ export function TableNG(props: TableNGProps) {
[getActions, data, userCanExecuteActions]
);
const visibleFields = useMemo(() => getVisibleFields(data.fields), [data.fields]);
const hasHeader = !noHeader;
const hasFooter = useMemo(
() => visibleFields.some((field) => Boolean(field.config.custom?.footer?.reducers?.length)),
[visibleFields]
);
const footerHeight = useMemo(
() => (hasFooter ? calculateFooterHeight(visibleFields) : 0),
[hasFooter, visibleFields]
);
const resizeHandler = useColumnResize(onColumnResize);
@@ -173,7 +175,7 @@ export function TableNG(props: TableNGProps) {
const [expandedRows, setExpandedRows] = useState(() => new Set<number>());
// vt scrollbar accounting for column auto-sizing
const visibleFields = useMemo(() => getVisibleFields(data.fields), [data.fields]);
const defaultRowHeight = useMemo(
() => getDefaultRowHeight(theme, visibleFields, cellHeight),
[theme, visibleFields, cellHeight]
@@ -677,7 +679,7 @@ export function TableNG(props: TableNGProps) {
),
renderSummaryCell: () => (
<SummaryCell
rows={rows}
rows={sortedRows}
footers={footers}
field={field}
colIdx={i}
@@ -707,10 +709,11 @@ export function TableNG(props: TableNGProps) {
maxRowHeight,
numFrozenColsFullyInView,
onCellFilterAdded,
rows,
rowHeight,
rowHeightFn,
rows,
setFilter,
sortedRows,
showTypeIcons,
theme,
timeRange,
@@ -46,6 +46,7 @@ import {
getDefaultRowHeight,
getDisplayName,
predicateByName,
calculateFooterHeight,
} from './utils';
describe('TableNG utils', () => {
@@ -1380,6 +1381,35 @@ describe('TableNG utils', () => {
});
});
describe('calculateFooterHeight', () => {
it('should return 0 if no footer is present', () => {
const frame = createDataFrame({
fields: [
{ name: 'time', values: [1, 1, 2], nanos: [100, 99, 0] },
{ name: 'value', values: [10, 20, 30] },
],
});
expect(calculateFooterHeight(frame.fields)).toBe(0);
});
it('should return the height in pixels for the max reducers on a given field', () => {
const frame = createDataFrame({
fields: [
{
name: 'time',
values: [1, 1, 2],
nanos: [100, 99, 0],
config: { custom: { footer: { reducers: ['min', 'max', 'count'] } } },
},
{ name: 'value', values: [10, 20, 30], config: { custom: { footer: { reducers: ['min'] } } } },
],
});
expect(calculateFooterHeight(frame.fields)).toBe(78); // 3 reducers * 22px line height + 12px padding
});
});
describe('getDisplayName', () => {
it('should return the display name if set', () => {
const field: Field = {
@@ -8,7 +8,6 @@ import { Count, varPreLine } from 'uwrap';
import {
FieldType,
Field,
FieldConfigSource,
formattedValueToString,
GrafanaTheme2,
DisplayValue,
@@ -842,55 +841,18 @@ export const processNestedTableRows = (
return result;
};
/**
* @internal
* Get the maximum number of reducers across all fields
*/
const getMaxReducerCount = (dataFrame: DataFrame, fieldConfig?: FieldConfigSource): number => {
// Filter to only numeric fields that can have reducers
const numericFields = dataFrame.fields.filter(({ type }) => type === FieldType.number);
// If there are no numeric fields, return 0
if (numericFields.length === 0) {
return 0;
}
// Map each field to its reducer count (direct config or override)
const reducerCounts = numericFields.map((field) => {
// Get the direct reducer count from the field config
const directReducers = field.config?.custom?.footer?.reducers ?? [];
let reducerCount = directReducers.length;
// Check for overrides if field config is available
if (fieldConfig?.overrides) {
// Find override that matches this field
const override = fieldConfig.overrides.find(
({ matcher: { id, options } }) => id === 'byName' && options === getDisplayName(field)
);
// Check if there's a footer reducer property in the override
const footerProperty = override?.properties?.find(({ id }) => id === 'custom.footer.reducers');
if (footerProperty?.value && Array.isArray(footerProperty.value)) {
// If override exists, it takes precedence over direct config
reducerCount = footerProperty.value.length;
}
}
return reducerCount;
});
// Return the maximum count or 0 if no reducers found
return reducerCounts.length > 0 ? Math.max(...reducerCounts) : 0;
};
/**
* @internal
* Calculate the footer height based on the maximum reducer count
*/
export const calculateFooterHeight = (dataFrame: DataFrame, fieldConfig?: FieldConfigSource) => {
const maxReducerCount = getMaxReducerCount(dataFrame, fieldConfig);
export const calculateFooterHeight = (fields: Field[]): number => {
let maxReducerCount = 0;
for (const field of fields) {
maxReducerCount = Math.max(maxReducerCount, field.config.custom?.footer?.reducers?.length ?? 0);
}
// Base height (+ padding) + height per reducer
return maxReducerCount * TABLE.LINE_HEIGHT + TABLE.CELL_PADDING * 2;
return maxReducerCount > 0 ? maxReducerCount * TABLE.LINE_HEIGHT + TABLE.CELL_PADDING * 2 : 0;
};
/**
@@ -147,10 +147,10 @@ function DashboardControlsRenderer({ model }: SceneComponentProps<DashboardContr
{editPanel && <PanelEditControls panelEditor={editPanel} />}
</Stack>
{!hideTimeControls && (
<Stack justifyContent="flex-end">
<div className={cx(styles.timeControls, editPanel && styles.timeControlsWrap)}>
<timePicker.Component model={timePicker} />
<refreshPicker.Component model={refreshPicker} />
</Stack>
</div>
)}
<Stack>
<DropdownVariableControls dashboard={dashboard} />
@@ -191,6 +191,7 @@ function getStyles(theme: GrafanaTheme2) {
},
}),
controlsPanelEdit: css({
flexWrap: 'wrap-reverse',
// In panel edit we do not need any right padding as the splitter is providing it
paddingRight: 0,
}),
@@ -198,5 +199,14 @@ function getStyles(theme: GrafanaTheme2) {
background: 'unset',
position: 'unset',
}),
timeControls: css({
display: 'flex',
justifyContent: 'flex-end',
gap: theme.spacing(1),
}),
timeControlsWrap: css({
flexWrap: 'wrap',
marginLeft: 'auto',
}),
};
}
@@ -2,15 +2,15 @@
"name": "@grafana-plugins/grafana-azure-monitor-datasource",
"description": "Grafana data source for Azure Monitor",
"private": true,
"version": "12.2.0-pre",
"version": "12.2.0",
"dependencies": {
"@emotion/css": "11.13.5",
"@grafana/data": "12.2.0-pre",
"@grafana/i18n": "12.2.0-pre",
"@grafana/data": "12.2.0",
"@grafana/i18n": "12.2.0",
"@grafana/plugin-ui": "^0.10.10",
"@grafana/runtime": "12.2.0-pre",
"@grafana/schema": "12.2.0-pre",
"@grafana/ui": "12.2.0-pre",
"@grafana/runtime": "12.2.0",
"@grafana/schema": "12.2.0",
"@grafana/ui": "12.2.0",
"@kusto/monaco-kusto": "^10.0.0",
"fast-deep-equal": "^3.1.3",
"i18next": "^25.0.0",
@@ -26,8 +26,8 @@
"tslib": "2.8.1"
},
"devDependencies": {
"@grafana/e2e-selectors": "12.2.0-pre",
"@grafana/plugin-configs": "12.2.0-pre",
"@grafana/e2e-selectors": "12.2.0",
"@grafana/plugin-configs": "12.2.0",
"@testing-library/dom": "10.4.1",
"@testing-library/jest-dom": "6.6.4",
"@testing-library/react": "16.3.0",
@@ -2,15 +2,15 @@
"name": "@grafana-plugins/stackdriver",
"description": "Grafana data source for Google Cloud Monitoring",
"private": true,
"version": "12.2.0-pre",
"version": "12.2.0",
"dependencies": {
"@emotion/css": "11.13.5",
"@grafana/data": "12.2.0-pre",
"@grafana/data": "12.2.0",
"@grafana/google-sdk": "0.3.4",
"@grafana/plugin-ui": "^0.10.10",
"@grafana/runtime": "12.2.0-pre",
"@grafana/schema": "12.2.0-pre",
"@grafana/ui": "12.2.0-pre",
"@grafana/runtime": "12.2.0",
"@grafana/schema": "12.2.0",
"@grafana/ui": "12.2.0",
"debounce-promise": "3.1.2",
"fast-deep-equal": "^3.1.3",
"i18next": "^25.0.0",
@@ -26,8 +26,8 @@
"tslib": "2.8.1"
},
"devDependencies": {
"@grafana/e2e-selectors": "12.2.0-pre",
"@grafana/plugin-configs": "12.2.0-pre",
"@grafana/e2e-selectors": "12.2.0",
"@grafana/plugin-configs": "12.2.0",
"@testing-library/dom": "10.4.1",
"@testing-library/jest-dom": "6.6.4",
"@testing-library/react": "16.3.0",
@@ -2,22 +2,22 @@
"name": "@grafana-plugins/grafana-postgresql-datasource",
"description": "PostgreSQL data source plugin",
"private": true,
"version": "12.2.0-pre",
"version": "12.2.0",
"dependencies": {
"@emotion/css": "11.13.5",
"@grafana/data": "12.2.0-pre",
"@grafana/data": "12.2.0",
"@grafana/plugin-ui": "^0.10.10",
"@grafana/runtime": "12.2.0-pre",
"@grafana/sql": "12.2.0-pre",
"@grafana/ui": "12.2.0-pre",
"@grafana/runtime": "12.2.0",
"@grafana/sql": "12.2.0",
"@grafana/ui": "12.2.0",
"lodash": "4.17.21",
"react": "18.3.1",
"rxjs": "7.8.2",
"tslib": "2.8.1"
},
"devDependencies": {
"@grafana/e2e-selectors": "12.2.0-pre",
"@grafana/plugin-configs": "12.2.0-pre",
"@grafana/e2e-selectors": "12.2.0",
"@grafana/plugin-configs": "12.2.0",
"@testing-library/dom": "10.4.1",
"@testing-library/react": "16.3.0",
"@testing-library/user-event": "14.6.1",
@@ -2,13 +2,13 @@
"name": "@grafana-plugins/grafana-pyroscope-datasource",
"description": "Continuous profiling for analysis of CPU and memory usage, down to the line number and throughout time. Saving infrastructure cost, improving performance, and increasing reliability.",
"private": true,
"version": "12.2.0-pre",
"version": "12.2.0",
"dependencies": {
"@emotion/css": "11.13.5",
"@grafana/data": "12.2.0-pre",
"@grafana/runtime": "12.2.0-pre",
"@grafana/schema": "12.2.0-pre",
"@grafana/ui": "12.2.0-pre",
"@grafana/data": "12.2.0",
"@grafana/runtime": "12.2.0",
"@grafana/schema": "12.2.0",
"@grafana/ui": "12.2.0",
"fast-deep-equal": "^3.1.3",
"lodash": "4.17.21",
"monaco-editor": "0.34.1",
@@ -20,7 +20,7 @@
"tslib": "2.8.1"
},
"devDependencies": {
"@grafana/plugin-configs": "12.2.0-pre",
"@grafana/plugin-configs": "12.2.0",
"@testing-library/dom": "10.4.1",
"@testing-library/jest-dom": "6.6.4",
"@testing-library/react": "16.3.0",
@@ -2,13 +2,13 @@
"name": "@grafana-plugins/grafana-testdata-datasource",
"description": "Generates test data in different forms",
"private": true,
"version": "12.2.0-pre",
"version": "12.2.0",
"dependencies": {
"@emotion/css": "11.13.5",
"@grafana/data": "12.2.0-pre",
"@grafana/runtime": "12.2.0-pre",
"@grafana/schema": "12.2.0-pre",
"@grafana/ui": "12.2.0-pre",
"@grafana/data": "12.2.0",
"@grafana/runtime": "12.2.0",
"@grafana/schema": "12.2.0",
"@grafana/ui": "12.2.0",
"d3-random": "^3.0.1",
"lodash": "4.17.21",
"micro-memoize": "^4.1.2",
@@ -21,8 +21,8 @@
"uuid": "11.1.0"
},
"devDependencies": {
"@grafana/e2e-selectors": "12.2.0-pre",
"@grafana/plugin-configs": "12.2.0-pre",
"@grafana/e2e-selectors": "12.2.0",
"@grafana/plugin-configs": "12.2.0",
"@testing-library/dom": "10.4.1",
"@testing-library/jest-dom": "6.6.4",
"@testing-library/react": "16.3.0",
@@ -2,7 +2,7 @@
"name": "@grafana-plugins/jaeger",
"description": "Jaeger plugin for Grafana",
"private": true,
"version": "12.2.0-pre",
"version": "12.2.0",
"dependencies": {
"@emotion/css": "11.13.5",
"@grafana/data": "workspace:*",
@@ -2,16 +2,16 @@
"name": "@grafana-plugins/loki",
"description": "Loki data source plugin for Grafana",
"private": true,
"version": "12.2.0-pre",
"version": "12.2.0",
"dependencies": {
"@emotion/css": "11.13.5",
"@grafana/data": "12.2.0-pre",
"@grafana/data": "12.2.0",
"@grafana/lezer-logql": "0.2.8",
"@grafana/llm": "0.22.1",
"@grafana/monaco-logql": "^0.0.8",
"@grafana/runtime": "12.2.0-pre",
"@grafana/schema": "12.2.0-pre",
"@grafana/ui": "12.2.0-pre",
"@grafana/runtime": "12.2.0",
"@grafana/schema": "12.2.0",
"@grafana/ui": "12.2.0",
"d3-random": "^3.0.1",
"lodash": "4.17.21",
"micro-memoize": "^4.1.2",
@@ -24,8 +24,8 @@
"uuid": "11.1.0"
},
"devDependencies": {
"@grafana/e2e-selectors": "12.2.0-pre",
"@grafana/plugin-configs": "12.2.0-pre",
"@grafana/e2e-selectors": "12.2.0",
"@grafana/plugin-configs": "12.2.0",
"@testing-library/dom": "10.4.1",
"@testing-library/jest-dom": "6.6.4",
"@testing-library/react": "16.3.0",
@@ -2,23 +2,23 @@
"name": "@grafana-plugins/mssql",
"description": "MSSQL data source plugin",
"private": true,
"version": "12.2.0-pre",
"version": "12.2.0",
"dependencies": {
"@emotion/css": "11.13.5",
"@grafana/data": "12.2.0-pre",
"@grafana/i18n": "12.2.0-pre",
"@grafana/data": "12.2.0",
"@grafana/i18n": "12.2.0",
"@grafana/plugin-ui": "^0.10.10",
"@grafana/runtime": "12.2.0-pre",
"@grafana/sql": "12.2.0-pre",
"@grafana/ui": "12.2.0-pre",
"@grafana/runtime": "12.2.0",
"@grafana/sql": "12.2.0",
"@grafana/ui": "12.2.0",
"lodash": "4.17.21",
"react": "18.3.1",
"rxjs": "7.8.2",
"tslib": "2.8.1"
},
"devDependencies": {
"@grafana/e2e-selectors": "12.2.0-pre",
"@grafana/plugin-configs": "12.2.0-pre",
"@grafana/e2e-selectors": "12.2.0",
"@grafana/plugin-configs": "12.2.0",
"@testing-library/dom": "10.4.1",
"@testing-library/react": "16.3.0",
"@testing-library/user-event": "14.6.1",
@@ -2,22 +2,22 @@
"name": "@grafana-plugins/mysql",
"description": "MySQL data source plugin",
"private": true,
"version": "12.2.0-pre",
"version": "12.2.0",
"dependencies": {
"@emotion/css": "11.13.5",
"@grafana/data": "12.2.0-pre",
"@grafana/data": "12.2.0",
"@grafana/plugin-ui": "^0.10.10",
"@grafana/runtime": "12.2.0-pre",
"@grafana/sql": "12.2.0-pre",
"@grafana/ui": "12.2.0-pre",
"@grafana/runtime": "12.2.0",
"@grafana/sql": "12.2.0",
"@grafana/ui": "12.2.0",
"lodash": "4.17.21",
"react": "18.3.1",
"rxjs": "7.8.2",
"tslib": "2.8.1"
},
"devDependencies": {
"@grafana/e2e-selectors": "12.2.0-pre",
"@grafana/plugin-configs": "12.2.0-pre",
"@grafana/e2e-selectors": "12.2.0",
"@grafana/plugin-configs": "12.2.0",
"@testing-library/dom": "10.4.1",
"@testing-library/react": "16.3.0",
"@testing-library/user-event": "14.6.1",
@@ -2,13 +2,13 @@
"name": "@grafana-plugins/parca",
"description": "Continuous profiling for analysis of CPU and memory usage, down to the line number and throughout time. Saving infrastructure cost, improving performance, and increasing reliability.",
"private": true,
"version": "12.2.0-pre",
"version": "12.2.0",
"dependencies": {
"@emotion/css": "11.13.5",
"@grafana/data": "12.2.0-pre",
"@grafana/runtime": "12.2.0-pre",
"@grafana/schema": "12.2.0-pre",
"@grafana/ui": "12.2.0-pre",
"@grafana/data": "12.2.0",
"@grafana/runtime": "12.2.0",
"@grafana/schema": "12.2.0",
"@grafana/ui": "12.2.0",
"lodash": "4.17.21",
"monaco-editor": "0.34.1",
"react": "18.3.1",
@@ -18,7 +18,7 @@
"tslib": "2.8.1"
},
"devDependencies": {
"@grafana/plugin-configs": "12.2.0-pre",
"@grafana/plugin-configs": "12.2.0",
"@testing-library/dom": "10.4.1",
"@testing-library/react": "16.3.0",
"@testing-library/user-event": "14.6.1",
@@ -2,7 +2,7 @@
"name": "@grafana-plugins/tempo",
"description": "Grafana plugin for the Tempo data source.",
"private": true,
"version": "12.2.0-pre",
"version": "12.2.0",
"dependencies": {
"@emotion/css": "11.13.5",
"@grafana/data": "workspace:*",
@@ -38,7 +38,7 @@
"uuid": "11.1.0"
},
"devDependencies": {
"@grafana/plugin-configs": "12.2.0-pre",
"@grafana/plugin-configs": "12.2.0",
"@testing-library/dom": "10.4.1",
"@testing-library/jest-dom": "6.6.4",
"@testing-library/react": "16.3.0",
@@ -2,7 +2,7 @@
"name": "@grafana-plugins/zipkin",
"description": "Zipkin plugin for Grafana",
"private": true,
"version": "12.2.0-pre",
"version": "12.2.0",
"dependencies": {
"@emotion/css": "11.13.5",
"@grafana/data": "workspace:*",
@@ -31,7 +31,9 @@ export const BarChartPanel = (props: PanelProps<Options>) => {
// const { dataLinkPostProcessor } = usePanelContext();
const theme = useTheme2();
const { onAddAdHocFilter } = usePanelContext();
const { onAddAdHocFilter, canExecuteActions } = usePanelContext();
const userCanExecuteActions = useMemo(() => canExecuteActions?.() ?? false, [canExecuteActions]);
const {
barWidth,
@@ -210,6 +212,7 @@ export const BarChartPanel = (props: PanelProps<Options>) => {
dataLinks={dataLinks}
adHocFilters={adHocFilters}
hideZeros={options.tooltip.hideZeros}
canExecuteActions={userCanExecuteActions}
/>
);
}}
@@ -78,9 +78,11 @@ export const geojsonLayer: MapLayerRegistryItem<GeoJSONMapperConfig> = {
// Interpolate variables in the URL
const interpolatedUrl = getTemplateSrv().replace(config.src || '');
const isAbsoluteUrl = interpolatedUrl.startsWith('http');
const layerUrl = isAbsoluteUrl ? interpolatedUrl : `${window.__grafana_public_path__}${interpolatedUrl.replace(/^(public\/)/, '')}`;
const source = new VectorSource({
url: `${window.__grafana_public_path__}build/${interpolatedUrl.replace(/^(public\/)/, '')}`,
url: layerUrl,
format: new GeoJSON(),
});
@@ -45,9 +45,11 @@ export const HeatmapPanel = ({
}: HeatmapPanelProps) => {
const theme = useTheme2();
const styles = useStyles2(getStyles);
const { sync, eventsScope, canAddAnnotations, onSelectRange } = usePanelContext();
const { sync, eventsScope, canAddAnnotations, onSelectRange, canExecuteActions } = usePanelContext();
const cursorSync = sync?.() ?? DashboardCursorSync.Off;
const userCanExecuteActions = useMemo(() => canExecuteActions?.() ?? false, [canExecuteActions]);
// temp range set for adding new annotation set by TooltipPlugin2, consumed by AnnotationPlugin2
const [newAnnotationRange, setNewAnnotationRange] = useState<TimeRange2 | null>(null);
@@ -220,6 +222,7 @@ export const HeatmapPanel = ({
maxHeight={options.tooltip.maxHeight}
maxWidth={options.tooltip.maxWidth}
replaceVariables={replaceVariables}
canExecuteActions={userCanExecuteActions}
/>
);
}}
@@ -48,10 +48,12 @@ export const StatusHistoryPanel = ({
// temp range set for adding new annotation set by TooltipPlugin2, consumed by AnnotationPlugin2
const [newAnnotationRange, setNewAnnotationRange] = useState<TimeRange2 | null>(null);
const { sync, eventsScope, canAddAnnotations, dataLinkPostProcessor, eventBus } = usePanelContext();
const { sync, eventsScope, canAddAnnotations, dataLinkPostProcessor, eventBus, canExecuteActions } =
usePanelContext();
const cursorSync = sync?.() ?? DashboardCursorSync.Off;
const enableAnnotationCreation = Boolean(canAddAnnotations && canAddAnnotations());
const userCanExecuteActions = useMemo(() => canExecuteActions?.() ?? false, [canExecuteActions]);
const { frames, warn } = useMemo(
() => prepareTimelineFields(data.series, false, timeRange, theme),
@@ -152,6 +154,7 @@ export const StatusHistoryPanel = ({
maxHeight={options.tooltip.maxHeight}
replaceVariables={replaceVariables}
dataLinks={dataLinks}
canExecuteActions={userCanExecuteActions}
/>
);
}}
@@ -33,7 +33,10 @@ export const TrendPanel = ({
replaceVariables,
id,
}: PanelProps<Options>) => {
const { dataLinkPostProcessor } = usePanelContext();
const { dataLinkPostProcessor, canExecuteActions } = usePanelContext();
const userCanExecuteActions = useMemo(() => canExecuteActions?.() ?? false, [canExecuteActions]);
// Need to fallback to first number field if no xField is set in options otherwise panel crashes 😬
const trendXFieldName =
options.xField ?? data.series[0]?.fields.find((field) => field.type === FieldType.number)?.name;
@@ -142,6 +145,7 @@ export const TrendPanel = ({
replaceVariables={replaceVariables}
dataLinks={dataLinks}
hideZeros={options.tooltip.hideZeros}
canExecuteActions={userCanExecuteActions}
/>
);
}}
@@ -12,6 +12,7 @@ import {
VizLegendItem,
useStyles2,
useTheme2,
usePanelContext,
} from '@grafana/ui';
import { getDisplayValuesForCalcs, TooltipHoverMode } from '@grafana/ui/internal';
@@ -28,6 +29,9 @@ export const XYChartPanel2 = (props: Props2) => {
const styles = useStyles2(getStyles);
const theme = useTheme2();
const { canExecuteActions } = usePanelContext();
const userCanExecuteActions = useMemo(() => canExecuteActions?.() ?? false, [canExecuteActions]);
let { mapping, series: mappedSeries } = props.options;
// regenerate series schema when mappings or data changes
@@ -128,6 +132,7 @@ export const XYChartPanel2 = (props: Props2) => {
seriesIdx={seriesIdx!}
replaceVariables={props.replaceVariables}
dataLinks={dataLinks}
canExecuteActions={userCanExecuteActions}
/>
);
}}
@@ -24,6 +24,7 @@ export interface Props {
xySeries: XYSeries[];
replaceVariables: InterpolateFunction;
dataLinks: LinkModel[];
canExecuteActions?: boolean;
}
function stripSeriesName(fieldName: string, seriesName: string) {
@@ -51,6 +52,7 @@ export const XYChartTooltip = ({
isPinned,
replaceVariables,
dataLinks,
canExecuteActions,
}: Props) => {
const rowIndex = dataIdxs.find((idx) => idx !== null)!;
@@ -130,7 +132,7 @@ export const XYChartTooltip = ({
if (isPinned || hasOneClickLink) {
const yFieldFrame = data.find((frame) => frame.fields.includes(yField))!;
const actions = getFieldActions(yFieldFrame, yField, replaceVariables, rowIndex);
const actions = canExecuteActions ? getFieldActions(yFieldFrame, yField, replaceVariables, rowIndex) : [];
footer = <VizTooltipFooter dataLinks={dataLinks} actions={actions} />;
}
+94 -94
View File
@@ -2426,14 +2426,14 @@ __metadata:
resolution: "@grafana-plugins/grafana-azure-monitor-datasource@workspace:public/app/plugins/datasource/azuremonitor"
dependencies:
"@emotion/css": "npm:11.13.5"
"@grafana/data": "npm:12.2.0-pre"
"@grafana/e2e-selectors": "npm:12.2.0-pre"
"@grafana/i18n": "npm:12.2.0-pre"
"@grafana/plugin-configs": "npm:12.2.0-pre"
"@grafana/data": "npm:12.2.0"
"@grafana/e2e-selectors": "npm:12.2.0"
"@grafana/i18n": "npm:12.2.0"
"@grafana/plugin-configs": "npm:12.2.0"
"@grafana/plugin-ui": "npm:^0.10.10"
"@grafana/runtime": "npm:12.2.0-pre"
"@grafana/schema": "npm:12.2.0-pre"
"@grafana/ui": "npm:12.2.0-pre"
"@grafana/runtime": "npm:12.2.0"
"@grafana/schema": "npm:12.2.0"
"@grafana/ui": "npm:12.2.0"
"@kusto/monaco-kusto": "npm:^10.0.0"
"@testing-library/dom": "npm:10.4.1"
"@testing-library/jest-dom": "npm:6.6.4"
@@ -2473,13 +2473,13 @@ __metadata:
resolution: "@grafana-plugins/grafana-postgresql-datasource@workspace:public/app/plugins/datasource/grafana-postgresql-datasource"
dependencies:
"@emotion/css": "npm:11.13.5"
"@grafana/data": "npm:12.2.0-pre"
"@grafana/e2e-selectors": "npm:12.2.0-pre"
"@grafana/plugin-configs": "npm:12.2.0-pre"
"@grafana/data": "npm:12.2.0"
"@grafana/e2e-selectors": "npm:12.2.0"
"@grafana/plugin-configs": "npm:12.2.0"
"@grafana/plugin-ui": "npm:^0.10.10"
"@grafana/runtime": "npm:12.2.0-pre"
"@grafana/sql": "npm:12.2.0-pre"
"@grafana/ui": "npm:12.2.0-pre"
"@grafana/runtime": "npm:12.2.0"
"@grafana/sql": "npm:12.2.0"
"@grafana/ui": "npm:12.2.0"
"@testing-library/dom": "npm:10.4.1"
"@testing-library/react": "npm:16.3.0"
"@testing-library/user-event": "npm:14.6.1"
@@ -2505,11 +2505,11 @@ __metadata:
resolution: "@grafana-plugins/grafana-pyroscope-datasource@workspace:public/app/plugins/datasource/grafana-pyroscope-datasource"
dependencies:
"@emotion/css": "npm:11.13.5"
"@grafana/data": "npm:12.2.0-pre"
"@grafana/plugin-configs": "npm:12.2.0-pre"
"@grafana/runtime": "npm:12.2.0-pre"
"@grafana/schema": "npm:12.2.0-pre"
"@grafana/ui": "npm:12.2.0-pre"
"@grafana/data": "npm:12.2.0"
"@grafana/plugin-configs": "npm:12.2.0"
"@grafana/runtime": "npm:12.2.0"
"@grafana/schema": "npm:12.2.0"
"@grafana/ui": "npm:12.2.0"
"@testing-library/dom": "npm:10.4.1"
"@testing-library/jest-dom": "npm:6.6.4"
"@testing-library/react": "npm:16.3.0"
@@ -2546,12 +2546,12 @@ __metadata:
resolution: "@grafana-plugins/grafana-testdata-datasource@workspace:public/app/plugins/datasource/grafana-testdata-datasource"
dependencies:
"@emotion/css": "npm:11.13.5"
"@grafana/data": "npm:12.2.0-pre"
"@grafana/e2e-selectors": "npm:12.2.0-pre"
"@grafana/plugin-configs": "npm:12.2.0-pre"
"@grafana/runtime": "npm:12.2.0-pre"
"@grafana/schema": "npm:12.2.0-pre"
"@grafana/ui": "npm:12.2.0-pre"
"@grafana/data": "npm:12.2.0"
"@grafana/e2e-selectors": "npm:12.2.0"
"@grafana/plugin-configs": "npm:12.2.0"
"@grafana/runtime": "npm:12.2.0"
"@grafana/schema": "npm:12.2.0"
"@grafana/ui": "npm:12.2.0"
"@testing-library/dom": "npm:10.4.1"
"@testing-library/jest-dom": "npm:6.6.4"
"@testing-library/react": "npm:16.3.0"
@@ -2630,15 +2630,15 @@ __metadata:
resolution: "@grafana-plugins/loki@workspace:public/app/plugins/datasource/loki"
dependencies:
"@emotion/css": "npm:11.13.5"
"@grafana/data": "npm:12.2.0-pre"
"@grafana/e2e-selectors": "npm:12.2.0-pre"
"@grafana/data": "npm:12.2.0"
"@grafana/e2e-selectors": "npm:12.2.0"
"@grafana/lezer-logql": "npm:0.2.8"
"@grafana/llm": "npm:0.22.1"
"@grafana/monaco-logql": "npm:^0.0.8"
"@grafana/plugin-configs": "npm:12.2.0-pre"
"@grafana/runtime": "npm:12.2.0-pre"
"@grafana/schema": "npm:12.2.0-pre"
"@grafana/ui": "npm:12.2.0-pre"
"@grafana/plugin-configs": "npm:12.2.0"
"@grafana/runtime": "npm:12.2.0"
"@grafana/schema": "npm:12.2.0"
"@grafana/ui": "npm:12.2.0"
"@testing-library/dom": "npm:10.4.1"
"@testing-library/jest-dom": "npm:6.6.4"
"@testing-library/react": "npm:16.3.0"
@@ -2674,14 +2674,14 @@ __metadata:
resolution: "@grafana-plugins/mssql@workspace:public/app/plugins/datasource/mssql"
dependencies:
"@emotion/css": "npm:11.13.5"
"@grafana/data": "npm:12.2.0-pre"
"@grafana/e2e-selectors": "npm:12.2.0-pre"
"@grafana/i18n": "npm:12.2.0-pre"
"@grafana/plugin-configs": "npm:12.2.0-pre"
"@grafana/data": "npm:12.2.0"
"@grafana/e2e-selectors": "npm:12.2.0"
"@grafana/i18n": "npm:12.2.0"
"@grafana/plugin-configs": "npm:12.2.0"
"@grafana/plugin-ui": "npm:^0.10.10"
"@grafana/runtime": "npm:12.2.0-pre"
"@grafana/sql": "npm:12.2.0-pre"
"@grafana/ui": "npm:12.2.0-pre"
"@grafana/runtime": "npm:12.2.0"
"@grafana/sql": "npm:12.2.0"
"@grafana/ui": "npm:12.2.0"
"@testing-library/dom": "npm:10.4.1"
"@testing-library/react": "npm:16.3.0"
"@testing-library/user-event": "npm:14.6.1"
@@ -2707,13 +2707,13 @@ __metadata:
resolution: "@grafana-plugins/mysql@workspace:public/app/plugins/datasource/mysql"
dependencies:
"@emotion/css": "npm:11.13.5"
"@grafana/data": "npm:12.2.0-pre"
"@grafana/e2e-selectors": "npm:12.2.0-pre"
"@grafana/plugin-configs": "npm:12.2.0-pre"
"@grafana/data": "npm:12.2.0"
"@grafana/e2e-selectors": "npm:12.2.0"
"@grafana/plugin-configs": "npm:12.2.0"
"@grafana/plugin-ui": "npm:^0.10.10"
"@grafana/runtime": "npm:12.2.0-pre"
"@grafana/sql": "npm:12.2.0-pre"
"@grafana/ui": "npm:12.2.0-pre"
"@grafana/runtime": "npm:12.2.0"
"@grafana/sql": "npm:12.2.0"
"@grafana/ui": "npm:12.2.0"
"@testing-library/dom": "npm:10.4.1"
"@testing-library/react": "npm:16.3.0"
"@testing-library/user-event": "npm:14.6.1"
@@ -2739,11 +2739,11 @@ __metadata:
resolution: "@grafana-plugins/parca@workspace:public/app/plugins/datasource/parca"
dependencies:
"@emotion/css": "npm:11.13.5"
"@grafana/data": "npm:12.2.0-pre"
"@grafana/plugin-configs": "npm:12.2.0-pre"
"@grafana/runtime": "npm:12.2.0-pre"
"@grafana/schema": "npm:12.2.0-pre"
"@grafana/ui": "npm:12.2.0-pre"
"@grafana/data": "npm:12.2.0"
"@grafana/plugin-configs": "npm:12.2.0"
"@grafana/runtime": "npm:12.2.0"
"@grafana/schema": "npm:12.2.0"
"@grafana/ui": "npm:12.2.0"
"@testing-library/dom": "npm:10.4.1"
"@testing-library/react": "npm:16.3.0"
"@testing-library/user-event": "npm:14.6.1"
@@ -2772,14 +2772,14 @@ __metadata:
resolution: "@grafana-plugins/stackdriver@workspace:public/app/plugins/datasource/cloud-monitoring"
dependencies:
"@emotion/css": "npm:11.13.5"
"@grafana/data": "npm:12.2.0-pre"
"@grafana/e2e-selectors": "npm:12.2.0-pre"
"@grafana/data": "npm:12.2.0"
"@grafana/e2e-selectors": "npm:12.2.0"
"@grafana/google-sdk": "npm:0.3.4"
"@grafana/plugin-configs": "npm:12.2.0-pre"
"@grafana/plugin-configs": "npm:12.2.0"
"@grafana/plugin-ui": "npm:^0.10.10"
"@grafana/runtime": "npm:12.2.0-pre"
"@grafana/schema": "npm:12.2.0-pre"
"@grafana/ui": "npm:12.2.0-pre"
"@grafana/runtime": "npm:12.2.0"
"@grafana/schema": "npm:12.2.0"
"@grafana/ui": "npm:12.2.0"
"@testing-library/dom": "npm:10.4.1"
"@testing-library/jest-dom": "npm:6.6.4"
"@testing-library/react": "npm:16.3.0"
@@ -2824,7 +2824,7 @@ __metadata:
"@grafana/lezer-traceql": "npm:0.0.23"
"@grafana/monaco-logql": "npm:^0.0.8"
"@grafana/o11y-ds-frontend": "workspace:*"
"@grafana/plugin-configs": "npm:12.2.0-pre"
"@grafana/plugin-configs": "npm:12.2.0"
"@grafana/plugin-ui": "npm:^0.10.10"
"@grafana/runtime": "workspace:*"
"@grafana/schema": "workspace:*"
@@ -2989,13 +2989,13 @@ __metadata:
languageName: node
linkType: hard
"@grafana/data@npm:12.2.0-pre, @grafana/data@workspace:*, @grafana/data@workspace:packages/grafana-data":
"@grafana/data@npm:12.2.0, @grafana/data@workspace:*, @grafana/data@workspace:packages/grafana-data":
version: 0.0.0-use.local
resolution: "@grafana/data@workspace:packages/grafana-data"
dependencies:
"@braintree/sanitize-url": "npm:7.0.1"
"@grafana/i18n": "npm:12.2.0-pre"
"@grafana/schema": "npm:12.2.0-pre"
"@grafana/i18n": "npm:12.2.0"
"@grafana/schema": "npm:12.2.0"
"@leeoniya/ufuzzy": "npm:1.0.18"
"@rollup/plugin-node-resolve": "npm:16.0.1"
"@types/d3-interpolate": "npm:^3.0.0"
@@ -3042,7 +3042,7 @@ __metadata:
languageName: unknown
linkType: soft
"@grafana/e2e-selectors@npm:12.2.0-pre, @grafana/e2e-selectors@workspace:*, @grafana/e2e-selectors@workspace:packages/grafana-e2e-selectors":
"@grafana/e2e-selectors@npm:12.2.0, @grafana/e2e-selectors@workspace:*, @grafana/e2e-selectors@workspace:packages/grafana-e2e-selectors":
version: 0.0.0-use.local
resolution: "@grafana/e2e-selectors@workspace:packages/grafana-e2e-selectors"
dependencies:
@@ -3142,8 +3142,8 @@ __metadata:
"@babel/preset-env": "npm:7.28.0"
"@babel/preset-react": "npm:7.27.1"
"@emotion/css": "npm:11.13.5"
"@grafana/data": "npm:12.2.0-pre"
"@grafana/ui": "npm:12.2.0-pre"
"@grafana/data": "npm:12.2.0"
"@grafana/ui": "npm:12.2.0"
"@leeoniya/ufuzzy": "npm:1.0.18"
"@rollup/plugin-node-resolve": "npm:16.0.1"
"@testing-library/dom": "npm:10.4.1"
@@ -3193,7 +3193,7 @@ __metadata:
languageName: node
linkType: hard
"@grafana/i18n@npm:12.2.0-pre, @grafana/i18n@workspace:*, @grafana/i18n@workspace:packages/grafana-i18n":
"@grafana/i18n@npm:12.2.0, @grafana/i18n@workspace:*, @grafana/i18n@workspace:packages/grafana-i18n":
version: 0.0.0-use.local
resolution: "@grafana/i18n@workspace:packages/grafana-i18n"
dependencies:
@@ -3263,12 +3263,12 @@ __metadata:
resolution: "@grafana/o11y-ds-frontend@workspace:packages/grafana-o11y-ds-frontend"
dependencies:
"@emotion/css": "npm:11.13.5"
"@grafana/data": "npm:12.2.0-pre"
"@grafana/e2e-selectors": "npm:12.2.0-pre"
"@grafana/data": "npm:12.2.0"
"@grafana/e2e-selectors": "npm:12.2.0"
"@grafana/plugin-ui": "npm:^0.10.10"
"@grafana/runtime": "npm:12.2.0-pre"
"@grafana/schema": "npm:12.2.0-pre"
"@grafana/ui": "npm:12.2.0-pre"
"@grafana/runtime": "npm:12.2.0"
"@grafana/schema": "npm:12.2.0"
"@grafana/ui": "npm:12.2.0"
"@testing-library/dom": "npm:10.4.1"
"@testing-library/jest-dom": "npm:^6.1.2"
"@testing-library/react": "npm:16.3.0"
@@ -3292,7 +3292,7 @@ __metadata:
languageName: unknown
linkType: soft
"@grafana/plugin-configs@npm:12.2.0-pre, @grafana/plugin-configs@workspace:*, @grafana/plugin-configs@workspace:packages/grafana-plugin-configs":
"@grafana/plugin-configs@npm:12.2.0, @grafana/plugin-configs@workspace:*, @grafana/plugin-configs@workspace:packages/grafana-plugin-configs":
version: 0.0.0-use.local
resolution: "@grafana/plugin-configs@workspace:packages/grafana-plugin-configs"
dependencies:
@@ -3369,13 +3369,13 @@ __metadata:
dependencies:
"@emotion/css": "npm:11.13.5"
"@floating-ui/react": "npm:0.27.16"
"@grafana/data": "npm:12.2.0-pre"
"@grafana/e2e-selectors": "npm:12.2.0-pre"
"@grafana/i18n": "npm:12.2.0-pre"
"@grafana/data": "npm:12.2.0"
"@grafana/e2e-selectors": "npm:12.2.0"
"@grafana/i18n": "npm:12.2.0"
"@grafana/plugin-ui": "npm:^0.10.10"
"@grafana/runtime": "npm:12.2.0-pre"
"@grafana/schema": "npm:12.2.0-pre"
"@grafana/ui": "npm:12.2.0-pre"
"@grafana/runtime": "npm:12.2.0"
"@grafana/schema": "npm:12.2.0"
"@grafana/ui": "npm:12.2.0"
"@hello-pangea/dnd": "npm:18.0.1"
"@leeoniya/ufuzzy": "npm:1.0.18"
"@lezer/common": "npm:1.2.3"
@@ -3434,15 +3434,15 @@ __metadata:
languageName: unknown
linkType: soft
"@grafana/runtime@npm:12.2.0-pre, @grafana/runtime@workspace:*, @grafana/runtime@workspace:packages/grafana-runtime":
"@grafana/runtime@npm:12.2.0, @grafana/runtime@workspace:*, @grafana/runtime@workspace:packages/grafana-runtime":
version: 0.0.0-use.local
resolution: "@grafana/runtime@workspace:packages/grafana-runtime"
dependencies:
"@grafana/data": "npm:12.2.0-pre"
"@grafana/e2e-selectors": "npm:12.2.0-pre"
"@grafana/data": "npm:12.2.0"
"@grafana/e2e-selectors": "npm:12.2.0"
"@grafana/faro-web-sdk": "npm:^1.13.2"
"@grafana/schema": "npm:12.2.0-pre"
"@grafana/ui": "npm:12.2.0-pre"
"@grafana/schema": "npm:12.2.0"
"@grafana/ui": "npm:12.2.0"
"@rollup/plugin-node-resolve": "npm:16.0.1"
"@rollup/plugin-terser": "npm:0.4.4"
"@testing-library/dom": "npm:10.4.1"
@@ -3521,7 +3521,7 @@ __metadata:
languageName: node
linkType: hard
"@grafana/schema@npm:12.2.0-pre, @grafana/schema@workspace:*, @grafana/schema@workspace:packages/grafana-schema":
"@grafana/schema@npm:12.2.0, @grafana/schema@workspace:*, @grafana/schema@workspace:packages/grafana-schema":
version: 0.0.0-use.local
resolution: "@grafana/schema@workspace:packages/grafana-schema"
dependencies:
@@ -3537,17 +3537,17 @@ __metadata:
languageName: unknown
linkType: soft
"@grafana/sql@npm:12.2.0-pre, @grafana/sql@workspace:*, @grafana/sql@workspace:packages/grafana-sql":
"@grafana/sql@npm:12.2.0, @grafana/sql@workspace:*, @grafana/sql@workspace:packages/grafana-sql":
version: 0.0.0-use.local
resolution: "@grafana/sql@workspace:packages/grafana-sql"
dependencies:
"@emotion/css": "npm:11.13.5"
"@grafana/data": "npm:12.2.0-pre"
"@grafana/e2e-selectors": "npm:12.2.0-pre"
"@grafana/i18n": "npm:12.2.0-pre"
"@grafana/data": "npm:12.2.0"
"@grafana/e2e-selectors": "npm:12.2.0"
"@grafana/i18n": "npm:12.2.0"
"@grafana/plugin-ui": "npm:^0.10.10"
"@grafana/runtime": "npm:12.2.0-pre"
"@grafana/ui": "npm:12.2.0-pre"
"@grafana/runtime": "npm:12.2.0"
"@grafana/ui": "npm:12.2.0"
"@react-awesome-query-builder/ui": "npm:6.6.15"
"@testing-library/dom": "npm:10.4.1"
"@testing-library/jest-dom": "npm:^6.1.2"
@@ -3603,7 +3603,7 @@ __metadata:
languageName: node
linkType: hard
"@grafana/ui@npm:12.2.0-pre, @grafana/ui@workspace:*, @grafana/ui@workspace:packages/grafana-ui":
"@grafana/ui@npm:12.2.0, @grafana/ui@workspace:*, @grafana/ui@workspace:packages/grafana-ui":
version: 0.0.0-use.local
resolution: "@grafana/ui@workspace:packages/grafana-ui"
dependencies:
@@ -3613,11 +3613,11 @@ __metadata:
"@emotion/serialize": "npm:1.3.3"
"@faker-js/faker": "npm:^9.0.0"
"@floating-ui/react": "npm:0.27.16"
"@grafana/data": "npm:12.2.0-pre"
"@grafana/e2e-selectors": "npm:12.2.0-pre"
"@grafana/data": "npm:12.2.0"
"@grafana/e2e-selectors": "npm:12.2.0"
"@grafana/faro-web-sdk": "npm:^1.13.2"
"@grafana/i18n": "npm:12.2.0-pre"
"@grafana/schema": "npm:12.2.0-pre"
"@grafana/i18n": "npm:12.2.0"
"@grafana/schema": "npm:12.2.0"
"@hello-pangea/dnd": "npm:18.0.1"
"@monaco-editor/react": "npm:4.7.0"
"@popperjs/core": "npm:2.11.8"
@@ -11678,13 +11678,13 @@ __metadata:
linkType: hard
"axios@npm:^1, axios@npm:^1.10.0, axios@npm:^1.6.1, axios@npm:^1.8.3, axios@npm:^1.9.0":
version: 1.11.0
resolution: "axios@npm:1.11.0"
version: 1.12.2
resolution: "axios@npm:1.12.2"
dependencies:
follow-redirects: "npm:^1.15.6"
form-data: "npm:^4.0.4"
proxy-from-env: "npm:^1.1.0"
checksum: 10/232df4af7a4e4e07baa84621b9cc4b0c518a757b4eacc7f635c0eb3642cb98dff347326739f24b891b3b4481b7b838c79a3a0c4819c9fbc1fc40232431b9c5dc
checksum: 10/886a79770594eaad76493fecf90344b567bd956240609b5dcd09bd0afe8d3e6f1ad6d3257a93a483b6192b409d4b673d9515a34619e3e3ed1b2c0ec2a83b20ba
languageName: node
linkType: hard