* 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>
* feat: make it possible to specify prop types for component extensions
* Update packages/grafana-runtime/src/services/pluginExtensions/getPluginExtensions.ts
* chore: adapted test case
* chore: update betterer
* feat: update types for configureComponentExtension()
* fix: remove type specifics for `configureExtensionComponent`
* Update betterer config
---------
Co-authored-by: Darren Janeczek <38694490+darrenjaneczek@users.noreply.github.com>
Co-authored-by: Darren Janeczek <darren.janeczek@grafana.com>
* add drawer for auth settings
* add StrongPasswordField component
* Add style to different behaviours
* update style for component
* add componenet to ChangePasswordForm
* pass the event handlers to the child component
* add style for label container
* expose strong password policy config option to front end
* enforce password validation with config option
* add grafana/user/profile/settings
plugin extension point
* changes to support plugins having their
own settings tabs
* WIP
* add comment
* add unit tests
* allow setting open tab based on tab query param
* update name of extension point
* add some more unit tests
* address PR comments
* PR comments
* update react 18 related deps
* fix some types
* make sure we're on react-router-dom >= 5.3.3
* Use new root API
* Remove StrictMode for now - react 18 double rendering causes issues
* fix + ignore some @grafana/ui types
* fix some more types
* use renderHook from @testing-library/react in almost all cases
* fix storybook types
* rewrite useDashboardSave to not use useEffect
* make props optional
* only render if props are provided
* add correct type for useCallback
* make resourcepicker tests more robust
* fix ModalManager rendering
* fix some more unit tests
* store the click coordinates in a ref as setState is NOT synchronous
* fix remaining e2e tests
* rewrite dashboardpage tests to avoid act warnings
* undo lint ignores
* fix ExpanderCell types
* set SymbolCell type correctly
* fix QueryAndExpressionsStep
* looks like the types were actually wrong instead :D
* undo this for now...
* remove spinner waits
* more robust tests
* rewrite errorboundary test to not explicitly count the number of renders
* make urlParam expect async
* increase timeout in waitFor
* revert ExplorePage test changes
* Update public/app/features/dashboard/containers/DashboardPage.test.tsx
Co-authored-by: Alex Khomenko <Clarity-89@users.noreply.github.com>
* Update public/app/features/dashboard/containers/PublicDashboardPage.test.tsx
Co-authored-by: Alex Khomenko <Clarity-89@users.noreply.github.com>
* Update public/app/features/dashboard/containers/PublicDashboardPage.test.tsx
Co-authored-by: Alex Khomenko <Clarity-89@users.noreply.github.com>
* Update public/app/features/dashboard/containers/PublicDashboardPage.test.tsx
Co-authored-by: Alex Khomenko <Clarity-89@users.noreply.github.com>
* skip fakeTimer test, ignore table types for now + other review comments
* update package peerDeps
* small tweak to resourcepicker test
* update lockfile...
* increase timeout in sharepublicdashboard tests
* ensure ExplorePaneContainer passes correct queries to initializeExplore
* fix LokiContextUI test
* fix unit tests
* make importDashboard flow more consistent
* wait for dashboard name before continuing
* more test fixes
* readd dashboard name to variable e2e tests
* wait for switches to be enabled before clicking
* fix modal rendering
* don't use @testing-library/dom directly
* quick fix for rendering of panels in firefox
* make PromQueryField test more robust
* don't wait for chartData - in react 18 this can happen before the wait code even gets executed
---------
Co-authored-by: kay delaney <kay@grafana.com>
Co-authored-by: Alex Khomenko <Clarity-89@users.noreply.github.com>
* 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
* Keybindings: No global keybindings on chromeless pages
* simplify condition
* Refactoring
* Align name and file
* Move logic into AppChrome
* minor fix
* Update Page.tsx
* Fixing test
* Fixed tests
* More fixes
* Fixed more tests
* Fixing final test
* Fixed search in old nav
* Changed 'Edit profile' to 'Profile'
The profile is not always editable, e.g. when it is synec via OAuth,
and all the other sections of the preferences are titled without a
verb.
* Fix frontend test
* simplify usePageTitle logic a bit
* use buildBreadcrumbs logic in usePageTitle
* always add home item to navTree, fix some tests
* fix remaining unit tests
* Switch from lingui from i18next
* Change lingui messages to i18next messages
* Change lingui messages to i18next messages (grafana-ui)
* Init i18n for tests
* First stab at new page layouts behind feature toggle
* Simplifying PageHeader
* Progress on a new model that can more easily support new and old page layouts
* Progress
* rename folder
* Progress
* Minor change
* fixes
* Fixing tests
* Make breadcrumbs work
* Add tests for old Page component
* Adding tests for new Page component and behavior
* fixing page header test
* Fixed test
* AppChrome outside route
* Renaming folder
* Minor fix
* Updated
* Fixing StoragePage
* Fix for banners
Co-authored-by: Ashley Harrison <ashley.harrison@grafana.com>
* Add a test assertion function to make testing a little bit easier
* Add tests for SharedPreferences
* Remove some tests from UserProfileEditPage because we're testing SharedPreferences directly now
* Update dependency @testing-library/user-event to v14
* everything is async...
* everything is async pt.2
* Fix cascader tests
* hack the yarn.lock file to remove the old version of @testing-library/dom
* some more fixes!
* MOAR FIXES
* more fixes
* remove a bunch of places where we're wrapping in act()
* down to 7 failing tests...
* Fix arrow tests
* Fix rest of NavBarItem tests
* Fix last tests
* Use {Enter} instead of {enter}
* Revert "Use {Enter} instead of {enter}"
This reverts commit e72453bb52.
* remove some unused act imports
* Fix LibraryPanelsSearch tests
* more stable test
* More consistent test...
Co-authored-by: Renovate Bot <bot@renovateapp.com>
* Expose option to disable help menu
* Expose option to disable profile menu
* Add Profile FeatureTogglePage
* Update public/app/features/profile/FeatureTogglePage.tsx
Uptake PR wording suggestion.
Co-authored-by: achatterjee-grafana <70489351+achatterjee-grafana@users.noreply.github.com>
* Fix front end lint issue
* Fix back end lint issue
Co-authored-by: achatterjee-grafana <70489351+achatterjee-grafana@users.noreply.github.com>
* Mark up User profile page for translation
* Extract new messages
* updated selectors
* update selectors
* wip TestProvider
* update tests
* fix field labels
* extract new messages
* don't store date objects in redux state
* don't store date objects in redux state
* I18N: Add Core Lingui framework for translating the UI
* Make FieldSet accept ReactNode for the label, so it can be translated
* Translate a phrase in the User profile edit form
* Translate phrase
* run lingui compile before webpack builds
* init i18n more lazily
* i1n:compile in drone lint step
* wip for getting tests to work
* Use mock lingui/macros because its too hard to use the real macros in Jest...
* mock messages for tests
* use specific lingui version
* add comment for test helper
* we actually don't need the i18n setup in tests because we mock out <Trans />
* update package.json
* remove unneded imports
* revert back babel core version
* Create a I18nProvider wrapper
* Chore: moves alert to test-id
* Chore: moves Dashboard navigation to test-id
* Chore: moves Bar gauge value to data-testid
* Chore move Folder picker select container to data-testid
* Chore: moves Time zone picker select container to data-testid
* Chore: moves Choose starting day of the week to data-testid
* Chore: change tabIndex on search input
* Chore: moves various search related aria-lables to data-testid
* Chore: connects label to select input on alerting page
* Chore: connects TimeZonePicker and WeekStartPicker with labels
* Chore: moves CallToActionButton to data-testid
* Chore: move user home preferences select to data-testid
* Chore: lower all thresholds
* Add global week start option to shared preferences
* Add default_week_start to configuration docs
* Add week start option to dashboards
* Add week start argument to tsdb time range parser
* Fix strict check issues
* Add tests for week start
* Change wording on default_week_start documentation
Co-authored-by: achatterjee-grafana <70489351+achatterjee-grafana@users.noreply.github.com>
* Update week_start column to be a nullable field
Co-authored-by: Emil Tullstedt <emil.tullstedt@grafana.com>
* Update configuration to include browser option
* Update WeekStartPicker container selector
Co-authored-by: Hugo Häggmark <hugo.haggmark@grafana.com>
* Add menuShouldPortal to WeekStartPicker to remove deprecation warning
Co-authored-by: Alex Khomenko <Clarity-89@users.noreply.github.com>
* Add inputId to WeekStartPicker
* Use e2e selector on WeekStartPicker aria-label
* Simplify WeekStartPicker onChange condition
* Specify value type on WeekStartPicker weekStarts
* Remove setWeekStart side effect from reducer
* Fix updateLocale failing to reset week start
* Store week start as string to handle empty values
Co-authored-by: achatterjee-grafana <70489351+achatterjee-grafana@users.noreply.github.com>
Co-authored-by: Emil Tullstedt <emil.tullstedt@grafana.com>
Co-authored-by: Hugo Häggmark <hugo.haggmark@grafana.com>
Co-authored-by: Alex Khomenko <Clarity-89@users.noreply.github.com>
* build(webpack): bump to v5 and successful yarn start compilation
* build(webpack): update postcss dependencies
* build(webpack): silence warnings about hash renamed to fullhash
* build(webpack): enable persistent cache to store generated webpack modules / chunks
* build(webpack): prefer eslintWebpackPlugin over tschecker so eslint doesn't block typechecking
* chore(yarn): run yarn-deduplicate to clean up dependencies
* chore(yarn): refresh lock file after clean install
* build(webpack): prefer output.clean over CleanWebpackPlugin
* build(webpack): prefer esbuild over babel-loader for dev config
* build(babel): turn off cache compression to improve build performance
* build(webpack): get production builds working
* build(webpack): remove phantomJS (removed from grafana in v7) specific loader
* build(webpack): put back babel for dev builds no performance gain in using esbuild in webpack
* build(webpack): prefer terser and optimise css plugins for prod. slower but smaller bundles
* build(webpack): clean up redundant code. inform postcss about node_modules
* build(webpack): remove deprecation warnings flag
* build(webpack): bump packages, dev performance optimisations, attempt to get hot working
* chore(storybook): use webpack 5 for dev and production builds
* build(storybook): speed up dev build
* chore(yarn): refresh lock file
* chore(webpack): bump webpack and related deps to latest
* refactor(webpack): put back inline-source-map, move start scripts out of grafana toolkit
* feat(webpack): prefer react-refresh over react-hot-loader
* build(webpack): update webpack.hot to use react-refresh
* chore: remove react-hot-loader from codebase
* refactor(queryeditorrow): fix circular dependency causing react-fast-refresh errors
* revert(webpack): remove stats.errorDetails from common config
* build(webpack): bump to v5 and successful yarn start compilation
* build(webpack): update postcss dependencies
* build(webpack): silence warnings about hash renamed to fullhash
* build(webpack): enable persistent cache to store generated webpack modules / chunks
* build(webpack): prefer eslintWebpackPlugin over tschecker so eslint doesn't block typechecking
* chore(yarn): run yarn-deduplicate to clean up dependencies
* chore(yarn): refresh lock file after clean install
* build(webpack): prefer output.clean over CleanWebpackPlugin
* build(webpack): prefer esbuild over babel-loader for dev config
* build(babel): turn off cache compression to improve build performance
* build(webpack): get production builds working
* build(webpack): remove phantomJS (removed from grafana in v7) specific loader
* build(webpack): put back babel for dev builds no performance gain in using esbuild in webpack
* build(webpack): prefer terser and optimise css plugins for prod. slower but smaller bundles
* build(webpack): clean up redundant code. inform postcss about node_modules
* build(webpack): remove deprecation warnings flag
* build(webpack): bump packages, dev performance optimisations, attempt to get hot working
* chore(storybook): use webpack 5 for dev and production builds
* build(storybook): speed up dev build
* chore(yarn): refresh lock file
* chore(webpack): bump webpack and related deps to latest
* refactor(webpack): put back inline-source-map, move start scripts out of grafana toolkit
* feat(webpack): prefer react-refresh over react-hot-loader
* build(webpack): update webpack.hot to use react-refresh
* chore: remove react-hot-loader from codebase
* refactor(queryeditorrow): fix circular dependency causing react-fast-refresh errors
* revert(webpack): remove stats.errorDetails from common config
* revert(webpack): remove include from babel-loader so symlinks (enterprise) work as before
* refactor(webpack): fix deprecation warnings in prod builds
* fix(storybook): fix failing builds due to replacing css-optimise webpack plugin
* fix(storybook): use raw-loader for svg icons
* build(webpack): fix dev script colors error
* chore(webpack): bump css-loader and react-refresh-webpack-plugin to latest versions
Co-authored-by: Torkel Ödegaard <torkel@grafana.com>
* added tests for changePassword and forgotPassword component
* added tests for ChangePassword screen in user profile section
* addressed review changes