+ {presets.length ? (
+ presets.map((preset) => {
+ let logo =
;
+ if (preset.logo in logoCoors) {
+ logo =
;
+ } else if (preset.logo in webhookPresetIcons) {
+ logo = webhookPresetIcons[preset.logo]();
+ }
+ return (
+
onBlockClick(preset)} key={preset.id} className={cx('card')}>
+ {logo}
+
+
+
+
+ {preset.name}
+
+
+
+ {preset.description}
+
+
+
+
+ );
+ })
+ ) : (
+
Could not find anything matching your query
+ )}
+
+ );
+};
+
export default OutgoingWebhookForm;
diff --git a/grafana-plugin/src/containers/OutgoingWebhookForm/WebhookPresetIcons.config.tsx b/grafana-plugin/src/containers/OutgoingWebhookForm/WebhookPresetIcons.config.tsx
new file mode 100644
index 00000000..b266f402
--- /dev/null
+++ b/grafana-plugin/src/containers/OutgoingWebhookForm/WebhookPresetIcons.config.tsx
@@ -0,0 +1,5 @@
+import { ReactElement } from 'react';
+
+import { commonWebhookPresetIconsConfig } from './CommonWebhookPresetIcons.config';
+
+export const webhookPresetIcons: { [id: string]: () => ReactElement } = commonWebhookPresetIconsConfig;
diff --git a/grafana-plugin/src/models/outgoing_webhook/outgoing_webhook.ts b/grafana-plugin/src/models/outgoing_webhook/outgoing_webhook.ts
index 7668d1e1..296771de 100644
--- a/grafana-plugin/src/models/outgoing_webhook/outgoing_webhook.ts
+++ b/grafana-plugin/src/models/outgoing_webhook/outgoing_webhook.ts
@@ -4,7 +4,7 @@ import BaseStore from 'models/base_store';
import { makeRequest } from 'network';
import { RootStore } from 'state';
-import { OutgoingWebhook } from './outgoing_webhook.types';
+import { OutgoingWebhook, OutgoingWebhookPreset } from './outgoing_webhook.types';
export class OutgoingWebhookStore extends BaseStore {
@observable.shallow
@@ -13,6 +13,9 @@ export class OutgoingWebhookStore extends BaseStore {
@observable.shallow
searchResult: { [key: string]: Array