kibana/docs/extend/uiactions-plugin.md
Colleen McGinnis 52381cb9bc
[docs] Remove jsx from typescript code blocks (#213955)
In https://github.com/elastic/docs-builder/pull/699, we added the
ability to pass arguments to code blocks. In this repo, there are a few
code blocks that list two languages (`typescript jsx`). The docs-builder
interprets the second language `jsx` as an argument, but `jsx` is not a
valid argument so it throws an error. This should fix the `docs-build`
check.

cc @elastic/docs-engineering
2025-03-11 15:48:24 +00:00

63 lines
2.5 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

---
mapped_pages:
- https://www.elastic.co/guide/en/kibana/current/uiactions-plugin.html
---
# UI Actions [uiactions-plugin]
UI Actions plugins provides API to manage **triggers** and **actions**.
**Trigger** is an abstract description of users intent to perform an action (like user clicking on a value inside chart). It allows us to do runtime binding between code from different plugins. For, example one such trigger is when somebody applies filters on dashboard; another one is when somebody opens a Dashboard panel context menu.
**Actions** are pieces of code that execute in response to a trigger. For example, to the dashboard filtering trigger multiple actions can be attached. Once a user filters on the dashboard all possible actions are displayed to the user in a popup menu and the user has to chose one.
In general this plugin provides:
* Creating custom functionality (actions).
* Creating custom user interaction events (triggers).
* Attaching and detaching actions to triggers.
* Emitting trigger events.
* Executing actions attached to a given trigger.
* Exposing a context menu for the user to choose the appropriate action when there are multiple actions attached to a single trigger.
## Basic usage [_basic_usage]
To get started, first you need to know a trigger you will attach your actions to. You can either pick an existing one, or register your own one:
```typescript
plugins.uiActions.registerTrigger({
id: 'MY_APP_PIE_CHART_CLICK',
title: 'Pie chart click',
description: 'When user clicks on a pie chart slice.',
});
```
Now, when user clicks on a pie slice you need to "trigger" your trigger and provide some context data:
```typescript
plugins.uiActions.getTrigger('MY_APP_PIE_CHART_CLICK').exec({
/* Custom context data. */
});
```
Finally, your code or developers from other plugins can register UI actions that listen for the above trigger and execute some code when the trigger is triggered.
```typescript
plugins.uiActions.registerAction({
id: 'DO_SOMETHING',
isCompatible: async (context) => true,
execute: async (context) => {
// Do something.
},
});
plugins.uiActions.attachAction('MY_APP_PIE_CHART_CLICK', 'DO_SOMETHING');
```
Now your `DO_SOMETHING` action will automatically execute when `MY_APP_PIE_CHART_CLICK` trigger is triggered; or, if more than one compatible action is attached to that trigger, user will be presented with a context menu popup to select one action to execute.
## Examples [_examples_9]
[ui_action examples](https://github.com/elastic/kibana/blob/main/examples/ui_action_examples/README.md)