Commit Graph

15 Commits

Author SHA1 Message Date
Erik Sundell
b648ce3acf
Plugin extensions: Introduce new registry for added components (#91877)
* add added component registry

* fix broken test

* add tests for usePluginComponents hook

* readd expose components

* add type assertion exceptions to betterer results

* use new addedComponent registry in legacy endpoints

* remove unused code

* cleanup

* revert test code

* remove commented code

* wrap in try catch

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

* add base registry and exposed components registry

* refactor usePluginComponent hook

* change type name

* fix hook

* remove comments

* fix broken tests

* add more tests

* remove link and component related changes

* use right id format

* add title prop

* remove comments

* rename registry

* make exportedComponentsConfigs required

* fix broken test

* cleanup tests

* fix prop name

* remove capability related code

* rename exported to exposed

* refactor(extensions): make registry types generic

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

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

* fix levitate error

---------

Co-authored-by: Levente Balogh <balogh.levente.hu@gmail.com>
2024-08-19 08:43:11 +02:00
Ashley Harrison
47f8717149
React: Use new JSX transform (#88802)
* update eslint, tsconfig + esbuild to handle new jsx transform

* remove thing that breaks the new jsx transform

* remove react imports

* adjust grafana-icons build

* is this the correct syntax?

* try this

* well this was much easier than expected...

* change grafana-plugin-configs webpack config

* fixes

* fix lockfile

* fix 2 more violations

* use path.resolve instead of require.resolve

* remove react import

* fix react imports

* more fixes

* remove React import

* remove import React from docs

* remove another react import
2024-06-25 12:43:47 +01:00
Levente Balogh
ebe42e1ada
Plugins: Allow apps to expose components. Update the extensions API. (#87236)
* feat: introduce exposable components and update the public APIs

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

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

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

* fix: typo

---------

Co-authored-by: Marcus Andersson <marcus.andersson@grafana.com>
2024-06-07 18:05:00 +02:00
Dominik Prokop
6e4418ffd2
DashboardScene: Show plugin extensions in panel menu (#78702)
* DashboardScene: Show plugin extensions in panel menu

* FIx test

* Nits

* Nit

* Review nits
2023-11-28 03:26:09 -08:00
Levente Balogh
12c245720c
Plugins: Share plugin context with the component-type extensions (#78111)
feat: wrap component type extension with plugin context
2023-11-20 14:43:11 +02:00
Levente Balogh
ea2b493937
Plugins: Share the plugin context with apps and ui-extensions (#77933)
* feat: share the plugin context with app plugins

* feat: share the plugin context ui-extension modals

* feat: pre-fetch the app plugin settings

* feat: expose more utility hooks for plugins

* fix: use `location.pathname` directly

Previously it was referenced by `pluginRoot.props.path`, which stops
working in case the `pluginRoot` element is wrapped with anything.
2023-11-14 08:35:40 +01:00
Marcus Andersson
b65aa6afec
PluginExtensions: Returns a clone of moment objects in context (#77238)
* Fixed so we always return momentjs as UTC iso string.

* Creating a clone of the moment object instead of returing a string.

* fixed linting issue.
2023-10-31 11:17:06 +01:00
Marcus Andersson
f012b75a3a
PluginExtensions: Made it possible to control modal size from extension (#76232)
* Added possibility to change modal size from UI extension.

* added tests for openModal.

* fixed typings.

* added test to verify default modal size.
2023-10-12 10:56:08 +02:00
Marcus Andersson
f1529997f2
Explore: Make toolbar action extendable by plugins (#65524)
* Cleaned up solution and starting to make it work properly.

* will disable add button if no queries available.

* Changed so 'add to dashboard' is registered as an extension in explore.

* moved utility function to utils

* hides button if insufficent permissions.

* Fixed ts issue.

* cleaned up the code and change to using the 'getPluginLinkExtensions'

* Added values to explore context.

* truncating title in menu.

* added tests to verify explore extension point.

* fixed failing tests in explore.

* made excludeModal optional.

* removed temporary fix to force old button.

* reverted generated files.

* fixed according to feedback.

* Update public/app/features/explore/extensions/ToolbarExtensionPoint.test.tsx

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

* Update public/app/features/explore/extensions/ToolbarExtensionPoint.test.tsx

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

* added tests suggested in reviews.

* fixed failing tests after sync with main.

* replaced exploreId type with stirng.

* cleaned up code a bit more.

---------

Co-authored-by: Levente Balogh <balogh.levente.hu@gmail.com>
2023-06-28 15:42:41 +02:00
Levente Balogh
a91033c025
Plugins: Add a new UI Extension type (#68600)
* feat: add a new UI extension type: component

* tests: add tests for checking if it is a react component

* fix: remove reference to not existing type

* chore: update betterer results

* review: remove unnecessary override function for components

* review: use a single type notation in import

* review: stop exporting `PluginExtensionBase`

* refactor: make extension config types more explicit

By using some repetition now these types are much easier to oversee.
2023-05-31 09:26:37 +02:00
Marcus Andersson
b8336fe910
PluginExtensions: Make context read only with a proxy instead of object freeze (#67781)
* quick poc on how we could use proxies instead of object freeze for the extension context.

* wip

* wip

* added tests for readOnlyProxy.

* Changed so we use the read only proxy for the context instead of the frozen object.

* updated names according to feedback.
2023-05-05 15:50:40 +02:00
Levente Balogh
1380fa54d6
UI Extensions: Rename placement to extensionPointId (#65841)
* UI Extensions: Rename `placement` to `extensionPointId`

* Fix tests.

* Fix conflicts and review notes

* Remove `placement` from some other places
2023-04-03 18:59:54 +03:00
Marcus Andersson
8b738d770c
PluginExtensions: Added onClick to link as a replacement for the command type (#65837)
* Added onClick to the link and made path optional.

* Added type to the import.

* revert(plugin-extensions): put back isPromise utility function

* Minor update to the isPromise function.

* added onClick in the panel menu item.

---------

Co-authored-by: Jack Westbrook <jack.westbrook@gmail.com>
Co-authored-by: Levente Balogh <balogh.levente.hu@gmail.com>
2023-04-03 17:27:55 +02:00
Levente Balogh
34f3878d26
UI extensions: Refactor the registry and remove the "command" type (#65327)
* Wip

* Wip

* Wip

* Wip

* Wip
2023-04-03 10:42:15 +02:00