diff --git a/openecomp-ui/src/nfvo-components/clickOutsideWrapper/ClickOutsideWrapper.jsx b/openecomp-ui/src/nfvo-components/clickOutsideWrapper/ClickOutsideWrapper.jsx
new file mode 100644
index 0000000..386ec92f
--- /dev/null
+++ b/openecomp-ui/src/nfvo-components/clickOutsideWrapper/ClickOutsideWrapper.jsx
@@ -0,0 +1,34 @@
+/*!
+ * Copyright © 2016-2018 European Support Limited
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express
+ * or implied. See the License for the specific language governing
+ * permissions and limitations under the License.
+ */
+
+import React from 'react';
+import PropTypes from 'prop-types';
+import enhanceWithClickOutside from 'react-click-outside';
+
+class ClickOutsideWrapper extends React.Component {
+    static propTypes = {
+        onClose: PropTypes.func
+    };
+
+    handleClickOutside() {
+        this.props.onClose();
+    }
+    render() {
+        return <div>{this.props.children}</div>;
+    }
+}
+
+export default enhanceWithClickOutside(ClickOutsideWrapper);
diff --git a/openecomp-ui/src/nfvo-components/panel/versionController/components/ActionButtons.jsx b/openecomp-ui/src/nfvo-components/panel/versionController/components/ActionButtons.jsx
index 4dfa117..8905aa3 100644
--- a/openecomp-ui/src/nfvo-components/panel/versionController/components/ActionButtons.jsx
+++ b/openecomp-ui/src/nfvo-components/panel/versionController/components/ActionButtons.jsx
@@ -13,27 +13,14 @@
  * or implied. See the License for the specific language governing
  * permissions and limitations under the License.
  */
-import React, { Component } from 'react';
+import React from 'react';
 import PropTypes from 'prop-types';
-import enhanceWithClickOutside from 'react-click-outside';
 import i18n from 'nfvo-utils/i18n/i18n.js';
+import ClickOutsideWrapper from 'nfvo-components/clickOutsideWrapper/ClickOutsideWrapper.jsx';
 import SVGIcon from 'sdc-ui/lib/react/SVGIcon.js';
 import Overlay from 'nfvo-components/overlay/Overlay.jsx';
 import Permissions from './Permissions.jsx';
 
-class ClickOutsideWrapper extends Component {
-    handleClickOutside() {
-        this.props.onClose();
-    }
-    render() {
-        return <div>{this.props.children}</div>;
-    }
-}
-
-const EnhancedClickOutsideWrapper = enhanceWithClickOutside(
-    ClickOutsideWrapper
-);
-
 const VCButton = ({ name, tooltipText, disabled, onClick, dataTestId }) => {
     let onClickAction = disabled ? () => {} : onClick;
     return (
@@ -95,7 +82,7 @@
     }
 }) => (
     <div className="action-buttons">
-        <EnhancedClickOutsideWrapper onClose={onClosePermissions}>
+        <ClickOutsideWrapper onClose={onClosePermissions}>
             <VCButton
                 disabled={isManual}
                 dataTestId="vc-permission-btn"
@@ -113,7 +100,7 @@
                     />
                 </Overlay>
             )}
-        </EnhancedClickOutsideWrapper>
+        </ClickOutsideWrapper>
         {isCollaborator &&
             !isArchived && (
                 <div className="collaborator-action-buttons">
