* fix: prevent Intl.DateTimeFormat crash with invalid locales like 'c'
- Add locale validation utilities to prevent crashes when LANG=c is set
- Filter out invalid locales from navigator.languages before creating DateTimeFormat
- Add fallback handling to use browser defaults when all locales are invalid
- Fixes issue #110494 where Grafana crashes with 'RangeError: Incorrect locale information provided'
- Maintains backward compatibility for valid locales
Signed-off-by: Akhil Singh <singhakhil69@gmail.com>
* refactor: simplify locale fix to use direct try-catch approach
- Remove locale-utils.ts and locale-utils.test.ts files
- Use simple try-catch in dates.ts files: try locale, fallback to 'en-US'
- Use Laura's suggested approach in formats.ts with explicit variable declaration
- Remove unused utility exports from index.ts
- Maintains same functionality with cleaner, simpler code
- Avoids adding to public API while still preventing crashes with invalid locales like 'c'
Signed-off-by: Akhil Singh <singhakhil69@gmail.com>
* style: run prettier to fix linting issues
- Format code according to project prettier configuration
- Fixes failing Lint Frontend check
Signed-off-by: Akhil Singh <singhakhil69@gmail.com>
---------
Signed-off-by: Akhil Singh <singhakhil69@gmail.com>
* mark up units
* remaining category markup
* prometheus translations...
* load prom resources in core
* more prom markup
* don't load prometheus resources directly in core
* isolate @grafana/data import in jest-setup to prevent side effects in tests
* directly use tz
* Fix incorrect country for Asia/Singapore timezone
* Add test
* link to gh issue
* skip test
---------
Co-authored-by: joshhunt <josh.hunt@grafana.com>
* TimeRangePicker: allow to customize quick ranges per dashboard
* TimeRangePicker: show selected custom time range using its name
* rangeutil: add tests for describeTextRange + quickRanges
* Fix up tests, and add an extra case for hidden time ranges
* Don't construct an object to find options, add findRangeInOptions util
* fix type errors detected by TypeScript
---------
Co-authored-by: joshhunt <josh@trtr.co>
* Update scenes to v5.35.0
* update test to mock console.warn
* use updateLocale
---------
Co-authored-by: Ashley Harrison <ashley.harrison@grafana.com>
* Add failing tests for timezone handling
* Fix `DateTimePicker.tsx` timezone handling
- Resolves `onBlur` issue
- Resolve Calendar and TimeOfDay issues
- Update test to cover different timezone
* Handle `console.warn` in test
* Handle `console.warn` in test #2
* Better handling of invalid date
When parsing date string with `dateTime`, adding a second `formatInput` aids in both parsing the actual string and avoid `console.warn` when `moment` reverts to be using `Date`.
* add more test cases
* Ash/proposed changes (#86854)
* simplify
* only need this change
* formatting
* const > let
* add test to ensure calendar is always showing the matching day
* separate state
* undo story changes
* update util function comments
* fix for selecting date in the calendar
---------
Co-authored-by: Ashley Harrison <ashley.harrison@grafana.com>
* grafana/data: Add time range zoom out util
* Add keybindings for time range zoom out
* TimeRangePicker: change the way absolute time range is detected
* Depend on dashboard scene tructure rather
* Revert "grafana/data: Add time range zoom out util"
This reverts commit bc1602db57.
* Lint
* Lint
* dashboardSceneGraph tests
* chore(node): update node version to 20
* chore(node): bump to 20.8.0, update drone variables
* chore(drone): update yaml config
* chore(yarn): bump yarn to latest to fix building binaries ERR_IMPORT_ASSERTION_TYPE_MISSING errors
* test(grafana-data): update whitespace in time formats for node 20 (18.13+)
* chore(node): move to LTS 20.8.1
* chore(node): bump to LTS 20.9.0
* Fixed so we will return default timeZone to extensions if empty is provided.
* Update public/app/features/dashboard/utils/getPanelMenu.test.ts
Co-authored-by: Dominik Prokop <dominik.prokop@grafana.com>
---------
Co-authored-by: Dominik Prokop <dominik.prokop@grafana.com>
* various type fixes
* candlestick panel type fixes
* few more fixes
* some fixes
* more :)
* moar!
* undo change to SilencesFilter
* undo change to configureStore
* Datetime: Added more tests to the files in the datetime folder
* Updated tests suites according to feedback received
* Corrected the lint error
* Removed repetitive code
* fix any's in tests
* fix more any's in tests
* more test type fixes
* fixing any's in tests part 3
* more test type fixes
* fixing test any's p5
* some tidy up
* fix template_srv
* Revert "Chore: Bump terser to fix security vulnerability (#53052)"
This reverts commit 7ae74d2a18.
* feat: use tsc and rollup directly with esbuild and publishConfig, files props
* refactor(grafana-data): fix isolatedModules re-export type error
* refactor(grafana-data): import paths from src not package name
* refactor(rollup): fix dts output.file
* chore(grafana-schema): delete dashboard_experimental.gen.ts - cannot work with isolatedModules
* refactor(grafana-e2e-selectors): fix export types isolatedModules error
* refactor(grafana-runtime): fix isolatedModules re-export type error
* refactor(grafana-ui): fix isolatedModules re-export type error
* feat(grafana-ui): use named imports for treeshaking
* refactor(grafana-ui): use named imports for treeshaking
* feat: react and react-dom as peerDeps for packages
* feat(grafana-ui): emotion packages as peerDeps
* feat(grafana-e2e): use tsc, rollup, esbuild for bundling
* chore(packages): clean up redundant dependencies
* chore(toolkit): deprecate unused package:build task
* chore(schema): put back dashboard_experimental and exclude to prevent isolatedModules error
* docs(packages): update readme
* chore(storybook): disable isolatedModules for builds
* chore: relax peerDeps for emotion and react
* revert(grafana-ui): put @emotion dependencies back
* refactor: replace relative package imports with package name
* build(packages): set emitDeclaration false for typecheck scripts to work
* test(publicdashboarddatasource): move test next to implementation. try to appease the betterer gods
* chore(storybook): override ts-node config for storybook compilation
* refactor(grafana-data): use ternary so babel doesnt complain about expecting flow types
* chore(toolkit): prefer files and publishConfig package.json props over copying
* build(npm): remove --contents dist arg from publishing commands
* chore(packages): introduce sideEffects prop to package.json to hint package can be treeshaken
* chore(packages): remove redundant index.js files
* feat(packages): set publishConfig.access to public
* feat(packages): use yarn berry and npm for packaging and publishing
* refactor(packages): simplify rollup configs
* chore(schema): add comment explaining need to exclude dashboard_experimental
* revert(toolkit): put back clean to prevent cli failures
* ci(packages): run packages:pack before a canary publish
* chore(gitignore): add npm-artifacts directory to ignore list
* test(publicdashboarddatasource): fix module mocking
* chore(packages): delete package.tgz when running clean
* chore(grafana-data): move dependencies from devDeps to prevent build resolution errors