diff --git a/packages/grafana-ui/src/components/Alert/Alert.mdx b/packages/grafana-ui/src/components/Alert/Alert.mdx
index 0c9a1ada63a..9f8ecba65a8 100644
--- a/packages/grafana-ui/src/components/Alert/Alert.mdx
+++ b/packages/grafana-ui/src/components/Alert/Alert.mdx
@@ -1,4 +1,4 @@
-import { Meta, Story, Preview, Props } from '@storybook/addon-docs/blocks';
+import { Meta, Props } from '@storybook/addon-docs/blocks';
import { Alert } from './Alert';
diff --git a/packages/grafana-ui/src/components/ClickOutsideWrapper/ClickOutsideWrapper.mdx b/packages/grafana-ui/src/components/ClickOutsideWrapper/ClickOutsideWrapper.mdx
new file mode 100644
index 00000000000..720098c0591
--- /dev/null
+++ b/packages/grafana-ui/src/components/ClickOutsideWrapper/ClickOutsideWrapper.mdx
@@ -0,0 +1,18 @@
+import { Meta, Props } from '@storybook/addon-docs/blocks';
+import { ClickOutsideWrapper } from './ClickOutsideWrapper';
+
+
+
+# ClickOutsideWrapper
+
+A wrapper component that detects clicks outside of the elements by attaching event listener to `window` or `document` objects.
+Useful for components that require an action being triggered when a click outside has occurred, for example closing an overlay or popup.
+
+# Usage
+
+```jsx
+ console.log('Clicked outside')}>
+ Container
+
+````
+
diff --git a/packages/grafana-ui/src/components/ClickOutsideWrapper/ClickOutsideWrapper.story.tsx b/packages/grafana-ui/src/components/ClickOutsideWrapper/ClickOutsideWrapper.story.tsx
new file mode 100644
index 00000000000..8746e6b2904
--- /dev/null
+++ b/packages/grafana-ui/src/components/ClickOutsideWrapper/ClickOutsideWrapper.story.tsx
@@ -0,0 +1,24 @@
+import React from 'react';
+import { action } from '@storybook/addon-actions';
+import { ClickOutsideWrapper } from './ClickOutsideWrapper';
+import { withCenteredStory } from '../../utils/storybook/withCenteredStory';
+import mdx from './ClickOutsideWrapper.mdx';
+
+export default {
+ title: 'Layout/ClickOutsideWrapper',
+ component: ClickOutsideWrapper,
+ decorators: [withCenteredStory],
+ parameters: {
+ docs: {
+ page: mdx,
+ },
+ },
+};
+
+export const basic = () => {
+ return (
+
+ Container
+
+ );
+};
diff --git a/packages/grafana-ui/src/components/ClickOutsideWrapper/ClickOutsideWrapper.tsx b/packages/grafana-ui/src/components/ClickOutsideWrapper/ClickOutsideWrapper.tsx
index abd35792d46..227058a4530 100644
--- a/packages/grafana-ui/src/components/ClickOutsideWrapper/ClickOutsideWrapper.tsx
+++ b/packages/grafana-ui/src/components/ClickOutsideWrapper/ClickOutsideWrapper.tsx
@@ -3,15 +3,15 @@ import ReactDOM from 'react-dom';
export interface Props {
/**
- * When clicking outside of current element
+ * Callback to trigger when clicking outside of current element occurs.
*/
onClick: () => void;
/**
* Runs the 'onClick' function when pressing a key outside of the current element. Defaults to true.
*/
includeButtonPress: boolean;
+ /** Object to attach the click event listener to. */
parent: Window | Document;
-
/**
* https://developer.mozilla.org/en-US/docs/Web/API/EventTarget/addEventListener. Defaults to false.
*/
@@ -35,7 +35,7 @@ export class ClickOutsideWrapper extends PureComponent {
componentDidMount() {
this.props.parent.addEventListener('click', this.onOutsideClick, this.props.useCapture);
if (this.props.includeButtonPress) {
- // Use keyup since keydown already has an eventlistener on window
+ // Use keyup since keydown already has an event listener on window
this.props.parent.addEventListener('keyup', this.onOutsideClick, this.props.useCapture);
}
}