Healing process flow integration 53/48653/4
authorsvishnev <shlomo-stanisla.vishnevetskiy@amdocs.com>
Thu, 24 May 2018 10:20:51 +0000 (13:20 +0300)
committerEinav Keidar <einavw@amdocs.com>
Thu, 24 May 2018 12:01:09 +0000 (12:01 +0000)
Issue-ID: SDC-1360
Change-Id: I4d786b53b4357901d10e041c31145b7b1b065725
Signed-off-by: svishnev <shlomo-stanisla.vishnevetskiy@amdocs.com>
16 files changed:
openecomp-ui/package.json
openecomp-ui/resources/scss/onboarding.scss
openecomp-ui/src/nfvo-components/notification/Notifications.js [new file with mode: 0644]
openecomp-ui/src/nfvo-components/notification/NotificationsConstants.js [new file with mode: 0644]
openecomp-ui/src/nfvo-components/notification/NotificationsMiddleware.js [new file with mode: 0644]
openecomp-ui/src/nfvo-components/notification/NotificationsReducer.js [new file with mode: 0644]
openecomp-ui/src/nfvo-utils/i18n/en.json
openecomp-ui/src/sdc-app/AppStore.js
openecomp-ui/src/sdc-app/Application.jsx
openecomp-ui/src/sdc-app/Reducers.js
openecomp-ui/src/sdc-app/onboarding/OnboardingActionHelper.js
openecomp-ui/src/sdc-app/onboarding/softwareProduct/SoftwareProduct.js
openecomp-ui/src/sdc-app/onboarding/softwareProduct/attachments/SoftwareProductAttachments.js
openecomp-ui/src/sdc-app/onboarding/softwareProduct/landingPage/SoftwareProductLandingPage.js
openecomp-ui/src/sdc-app/onboarding/softwareProduct/landingPage/SoftwareProductLandingPageView.jsx
openecomp-ui/yarn.lock

index 824a814..28b6b52 100644 (file)
         "static-keys-bundle": "gulp static-keys-bundle",
         "check-keys-against-bundles": "gulp static-keys-bundle-with-report",
         "test": "jest",
-        "test-failedTestReport":
-            "jest --json | node test-utils/failedTestReport.js",
+        "test-failedTestReport": "jest --json | node test-utils/failedTestReport.js",
         "test-dev": "jest --watch",
-        "test-coverage":
-            "jest --coverage && start ./coverage/lcov-report/index.html",
+        "test-coverage": "jest --coverage && start ./coverage/lcov-report/index.html",
         "test-build": "jest --coverage",
-        "storybook":
-            "start-storybook -p 9090 -c .storybook -s .storybook/fonts",
+        "storybook": "start-storybook -p 9090 -c .storybook -s .storybook/fonts",
         "storyshots": "jest storyshots.test.js",
-        "build-storybook":
-            "build-storybook -c .storybook -o .storybook-dist && gulp copy-storybook-fonts",
+        "build-storybook": "build-storybook -c .storybook -o .storybook-dist && gulp copy-storybook-fonts",
         "lint-fix": "eslint --fix  --ext .js --ext .jsx src"
     },
     "dependencies": {
@@ -52,8 +48,9 @@
         "react-select": "1.2.1",
         "react-show-more": "^1.1.1",
         "react-sortable": "^1.2.0",
+        "react-transition-group": "^2.3.1",
         "redux": "^3.7.2",
-        "sdc-ui": "1.6.32",
+        "sdc-ui": "1.6.43",
         "uuid-js": "^0.7.5",
         "validator": "^4.3.0"
     },
     },
     "jest": {
         "moduleNameMapper": {
-            "\\.(jpg|jpeg|png|gif|eot|otf|webp|svg|ttf|woff|woff2|mp4|webm|wav|mp3|m4a|aac|oga)$":
-                "<rootDir>/test-utils/fileMock.js",
+            "\\.(jpg|jpeg|png|gif|eot|otf|webp|svg|ttf|woff|woff2|mp4|webm|wav|mp3|m4a|aac|oga)$": "<rootDir>/test-utils/fileMock.js",
             "\\.(css|scss)$": "<rootDir>/test-utils/styleMock.js",
             "^nfvo-utils/RestAPIUtil.js$": "<rootDir>/test-utils/MockRest.js",
-            "^sdc-ui/lib/react/SVGIcon.js$":
-                "<rootDir>/test-utils/MockSVGIcon.js",
+            "^sdc-ui/lib/react/SVGIcon.js$": "<rootDir>/test-utils/MockSVGIcon.js",
             "^react-show-more$": "<rootDir>/test-utils/ShowMore.js",
             "^nfvo-utils(.*)$": "<rootDir>/src/nfvo-utils$1",
             "^nfvo-components(.*)$": "<rootDir>/src/nfvo-components$1",
         "globals": {
             "DEBUG": false
         },
-        "setupFiles": ["<rootDir>/test-utils/test-env-setup.js"],
+        "setupFiles": [
+            "<rootDir>/test-utils/test-env-setup.js"
+        ],
         "setupTestFrameworkScriptFile": "<rootDir>/test-utils/test-setup.js",
         "testPathIgnorePatterns": [
             "<rootDir>/node_modules/",
             "<rootDir>/test/nfvo-components/storyshots.test.js"
         ],
-        "collectCoverageFrom": ["src/**/*.{js,jsx}"],
-        "coveragePathIgnorePatterns": ["/node_modules/", "(.)*.stories.js"],
-        "coverageReporters": ["lcov"]
+        "collectCoverageFrom": [
+            "src/**/*.{js,jsx}"
+        ],
+        "coveragePathIgnorePatterns": [
+            "/node_modules/",
+            "(.)*.stories.js"
+        ],
+        "coverageReporters": [
+            "lcov"
+        ]
     }
 }
index 7748b07..d44674f 100644 (file)
@@ -210,3 +210,12 @@ div[data-reactroot].tooltip {
     }
   }
 }
+
+/* Out of namespace context for notifications */
+.onboarding-notifications-container {
+  position: absolute;
+  &.position-top-right {
+    right: 30px;
+    top: 50px;
+  }
+}
diff --git a/openecomp-ui/src/nfvo-components/notification/Notifications.js b/openecomp-ui/src/nfvo-components/notification/Notifications.js
new file mode 100644 (file)
index 0000000..046412a
--- /dev/null
@@ -0,0 +1,68 @@
+/*
+ * 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 { Portal, Notification } from 'sdc-ui/lib/react/';
+import { connect } from 'react-redux';
+import { removeNotification } from './NotificationsConstants.js';
+import { CSSTransition, TransitionGroup } from 'react-transition-group';
+
+export const mapStateToProps = ({ popupNotifications = [] }) => {
+    return {
+        notifications: popupNotifications
+    };
+};
+
+const mapActionToProps = dispatch => {
+    return {
+        onClick: item => {
+            dispatch(removeNotification(item));
+        }
+    };
+};
+
+class Notifications extends React.Component {
+    render() {
+        const { notifications, onClick } = this.props;
+
+        return (
+            <Portal>
+                <div className="onboarding-notifications-container position-top-right">
+                    <TransitionGroup>
+                        {notifications.map(item => (
+                            <CSSTransition
+                                in={true}
+                                timeout={500}
+                                unmountOnExit
+                                classNames="react-transition"
+                                key={`notification-transition-${item.id}`}>
+                                <Notification
+                                    key={item.id}
+                                    type={item.type}
+                                    title={item.title}
+                                    message={item.message}
+                                    onClick={() => onClick(item)}
+                                />
+                            </CSSTransition>
+                        ))}
+                    </TransitionGroup>
+                </div>
+            </Portal>
+        );
+    }
+}
+
+export default connect(mapStateToProps, mapActionToProps, null)(Notifications);
diff --git a/openecomp-ui/src/nfvo-components/notification/NotificationsConstants.js b/openecomp-ui/src/nfvo-components/notification/NotificationsConstants.js
new file mode 100644 (file)
index 0000000..329c557
--- /dev/null
@@ -0,0 +1,66 @@
+/*
+ * 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 UUID from 'uuid-js';
+
+export const actionTypes = {
+    ADD_NOTIFICATION: 'ADD_NOTIFICATION',
+    REMOVE_NOTIFICATION: 'REMOVE_NOTIFICATION'
+};
+
+export const notificationActions = {
+    showNotification: item => ({
+        type: actionTypes.ADD_NOTIFICATION,
+        payload: {
+            ...item,
+            id: UUID.create().toString()
+        }
+    }),
+
+    showSuccess: ({ title, message, timeout }) =>
+        notificationActions.showNotification({
+            title,
+            message,
+            timeout,
+            type: 'success'
+        }),
+    showInfo: ({ title, message, timeout }) =>
+        notificationActions.showNotification({
+            title,
+            message,
+            timeout,
+            type: 'info'
+        }),
+    showWarning: ({ title, message, timeout }) =>
+        notificationActions.showNotification({
+            title,
+            message,
+            timeout,
+            type: 'warning'
+        }),
+    showError: ({ title, message, timeout }) =>
+        notificationActions.showNotification({
+            title,
+            message,
+            timeout,
+            type: 'error'
+        }),
+    removeNotification: item => ({
+        type: actionTypes.REMOVE_NOTIFICATION,
+        payload: item
+    })
+};
+
+export const notificationTimeout = 4000;
diff --git a/openecomp-ui/src/nfvo-components/notification/NotificationsMiddleware.js b/openecomp-ui/src/nfvo-components/notification/NotificationsMiddleware.js
new file mode 100644 (file)
index 0000000..f32f20b
--- /dev/null
@@ -0,0 +1,33 @@
+/*
+ * 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 {
+    actionTypes,
+    notificationActions,
+    notificationTimeout
+} from './NotificationsConstants.js';
+
+const notifications = store => next => action => {
+    if (action.type === actionTypes.ADD_NOTIFICATION) {
+        const { timeout, ...data } = action.payload;
+        const interval = timeout || notificationTimeout;
+        setTimeout(() => {
+            store.dispatch(notificationActions.removeNotification(data));
+        }, interval);
+    }
+    return next(action);
+};
+
+export default notifications;
diff --git a/openecomp-ui/src/nfvo-components/notification/NotificationsReducer.js b/openecomp-ui/src/nfvo-components/notification/NotificationsReducer.js
new file mode 100644 (file)
index 0000000..9b97381
--- /dev/null
@@ -0,0 +1,28 @@
+/*
+ * 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 { actionTypes } from './NotificationsConstants';
+
+export default (state = [], action) => {
+    switch (action.type) {
+        case actionTypes.ADD_NOTIFICATION:
+            return [...state, action.payload];
+
+        case actionTypes.REMOVE_NOTIFICATION:
+            return state.filter(item => item.id !== action.payload.id);
+        default:
+            return state;
+    }
+};
index 10ddb42..d02904d 100644 (file)
   "Contributor": "Contributor",
   "Active Items": "Active Items",
   "Archived Items": "Archived Items",
-
+  "This is the current version of the VSP, as a result of healing": "This is the current version of the VSP, as a result of healing",
+  
   "VendorSoftwareProduct": "VSP",
   "VendorSoftwareProduct/category": "Category",
   "VendorSoftwareProduct/description": "Description",
index 5cab6ae..db47650 100644 (file)
@@ -1,5 +1,5 @@
 /*
- * Copyright © 2016-2017 European Support Limited
+ * 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.
@@ -17,6 +17,7 @@
 import { createStore, applyMiddleware, compose } from 'redux';
 import Reducers from './Reducers.js';
 import filterUpdater from 'sdc-app/onboarding/onboard/filter/FilterMiddleware.js';
+import notifications from 'nfvo-components/notification/NotificationsMiddleware.js';
 
 const thunk = store => next => action =>
     typeof action === 'function'
@@ -29,7 +30,7 @@ export const storeCreator = initialState =>
     createStore(
         Reducers,
         initialState,
-        composeEnhancers(applyMiddleware(thunk, filterUpdater))
+        composeEnhancers(applyMiddleware(thunk, filterUpdater, notifications))
     );
 
 const store = storeCreator();
index abebb6d..f96bd73 100644 (file)
@@ -1,5 +1,5 @@
 /*!
- * Copyright © 2016-2017 European Support Limited
+ * 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.
@@ -17,6 +17,7 @@ import React from 'react';
 import PropTypes from 'prop-types';
 import { Provider } from 'react-redux';
 import GlobalModal from 'nfvo-components/modal/GlobalModal.js';
+import Notifications from 'nfvo-components/notification/Notifications.js';
 import Loader from 'nfvo-components/loader/Loader.jsx';
 import WebSocketUtil from 'nfvo-utils/WebSocketUtil.js';
 import UserNotificationsActionHelper from 'sdc-app/onboarding/userNotifications/UserNotificationsActionHelper.js';
@@ -44,6 +45,7 @@ class Application extends React.Component {
             <Provider store={store}>
                 <div>
                     <GlobalModal />
+                    <Notifications />
                     {this.props.children}
                     <Loader />
                 </div>
index 9f42423..684c20c 100644 (file)
@@ -1,5 +1,5 @@
 /*
- * Copyright © 2016-2017 European Support Limited
+ * 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.
@@ -20,7 +20,7 @@ import flowsReducersMap from './flows/FlowsReducersMap.js';
 import loaderReducer from 'nfvo-components/loader/LoaderReducer.js';
 import globalModalReducer from 'nfvo-components/modal/GlobalModalReducer.js';
 import notificationsReducer from 'sdc-app/onboarding/userNotifications/NotificationsReducer.js';
-
+import { default as popupNotifications } from 'nfvo-components/notification/NotificationsReducer.js';
 export default combineReducers({
     // on-boarding reducers
     ...onBoardingReducersMap,
@@ -29,5 +29,6 @@ export default combineReducers({
     ...flowsReducersMap,
     modal: globalModalReducer,
     loader: loaderReducer,
-    notifications: notificationsReducer
+    notifications: notificationsReducer,
+    popupNotifications
 });
index b8ce714..b9ffdc3 100644 (file)
@@ -1,5 +1,5 @@
 /*
- * Copyright © 2016-2017 European Support Limited
+ * 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.
@@ -47,6 +47,8 @@ import { tabsMapping as attachmentsTabsMapping } from 'sdc-app/onboarding/softwa
 import SoftwareProductAttachmentsActionHelper from 'sdc-app/onboarding/softwareProduct/attachments/SoftwareProductAttachmentsActionHelper.js';
 import { actionTypes as filterActionTypes } from './onboard/filter/FilterConstants.js';
 import FeaturesActionHelper from 'sdc-app/features/FeaturesActionHelper.js';
+import { notificationActions } from 'nfvo-components/notification/NotificationsConstants.js';
+import i18n from 'nfvo-utils/i18n/i18n.js';
 
 function setCurrentScreen(dispatch, screen, props = {}) {
     dispatch({
@@ -208,37 +210,82 @@ const OnboardingActionHelper = {
             status
         });
     },
+    async getUpdatedSoftwareProduct(dispatch, { softwareProductId, version }) {
+        const response = await SoftwareProductActionHelper.fetchSoftwareProduct(
+            dispatch,
+            {
+                softwareProductId,
+                version
+            }
+        );
+        let newResponse = false;
+        let newVersion = false;
+        // checking if there was healing and a new version should be open
+        if (response[0].version !== version.id) {
+            newResponse = await SoftwareProductActionHelper.fetchSoftwareProduct(
+                dispatch,
+                {
+                    softwareProductId,
+                    version: { ...version, id: response[0].version }
+                }
+            );
+            newVersion = await ItemsHelper.fetchVersion({
+                itemId: softwareProductId,
+                versionId: response[0].version
+            });
 
-    navigateToSoftwareProductLandingPage(
+            dispatch(
+                notificationActions.showInfo({
+                    message: i18n(
+                        'This is the current version of the VSP, as a result of healing'
+                    )
+                })
+            );
+        }
+        return Promise.resolve(
+            newResponse
+                ? { softwareProduct: newResponse[0], newVersion }
+                : { softwareProduct: response[0], newVersion: version }
+        );
+    },
+    async navigateToSoftwareProductLandingPage(
         dispatch,
         { softwareProductId, version, status }
     ) {
         SoftwareProductComponentsActionHelper.clearComponentsStore(dispatch);
+        /**
+         * TODO remove when Filter toggle will be removed
+         */
         LicenseModelActionHelper.fetchFinalizedLicenseModels(dispatch);
-        SoftwareProductActionHelper.fetchSoftwareProduct(dispatch, {
+
+        const {
+            softwareProduct,
+            newVersion
+        } = await this.getUpdatedSoftwareProduct(dispatch, {
             softwareProductId,
             version
-        }).then(response => {
-            let { vendorId: licenseModelId, licensingVersion } = response[0];
-            SoftwareProductActionHelper.loadSoftwareProductDetailsData(
-                dispatch,
-                { licenseModelId, licensingVersion }
-            );
-            SoftwareProductComponentsActionHelper.fetchSoftwareProductComponents(
-                dispatch,
-                { softwareProductId, version: version }
-            );
-            if (response[0].onboardingOrigin === onboardingOriginTypes.ZIP) {
-                SoftwareProductActionHelper.loadSoftwareProductHeatCandidate(
-                    dispatch,
-                    { softwareProductId, version: version }
-                );
-            }
-            setCurrentScreen(
+        });
+
+        let { vendorId: licenseModelId, licensingVersion } = softwareProduct;
+        SoftwareProductActionHelper.loadSoftwareProductDetailsData(dispatch, {
+            licenseModelId,
+            licensingVersion
+        });
+        SoftwareProductComponentsActionHelper.fetchSoftwareProductComponents(
+            dispatch,
+            { softwareProductId, version: newVersion }
+        );
+        if (softwareProduct.onboardingOrigin === onboardingOriginTypes.ZIP) {
+            SoftwareProductActionHelper.loadSoftwareProductHeatCandidate(
                 dispatch,
-                enums.SCREEN.SOFTWARE_PRODUCT_LANDING_PAGE,
-                { softwareProductId, licenseModelId, version, status }
+                { softwareProductId, version: newVersion }
             );
+        }
+        setCurrentScreen(dispatch, enums.SCREEN.SOFTWARE_PRODUCT_LANDING_PAGE, {
+            softwareProductId,
+            licenseModelId,
+            version: newVersion,
+            status
         });
     },
 
index db3cc04..d3d7b96 100644 (file)
@@ -127,7 +127,8 @@ const buildNavigationBarProps = ({
     screen,
     componentId,
     componentsList,
-    mapOfExpandedIds
+    mapOfExpandedIds,
+    isCertified
 }) => {
     const {
         softwareProductEditor: { data: currentSoftwareProduct = {} }
@@ -235,7 +236,7 @@ const buildNavigationBarProps = ({
     return {
         activeItemId,
         groups,
-        disabled: !!candidateOnboardingOrigin
+        disabled: !!candidateOnboardingOrigin && !isCertified
     };
 };
 
@@ -268,7 +269,8 @@ const buildVersionControllerProps = ({
         userInfo,
         usersList,
         isManual: onboardingMethod === onboardingMethodType.MANUAL,
-        candidateInProcess: !!candidateOnboardingOrigin
+        candidateInProcess:
+            !!candidateOnboardingOrigin && !itemPermission.isCertified
     };
 };
 
@@ -360,7 +362,8 @@ const mapStateToProps = (
             screen,
             componentId,
             componentsList,
-            mapOfExpandedIds
+            mapOfExpandedIds,
+            isCertified: itemPermission.isCertified
         }),
         meta
     };
index 4d5887b..9b0f681 100644 (file)
@@ -36,7 +36,8 @@ export const mapStateToProps = state => {
                 heatSetupCache,
                 heatValidation: { errorList }
             }
-        }
+        },
+        currentScreen: { itemPermission: { isCertified } }
     } = state;
 
     let { unassigned = [], modules = [] } = heatSetup;
@@ -61,7 +62,8 @@ export const mapStateToProps = state => {
         version,
         onboardingOrigin,
         activeTab,
-        candidateInProcess: !!currentSoftwareProduct.candidateOnboardingOrigin
+        candidateInProcess:
+            !!currentSoftwareProduct.candidateOnboardingOrigin && !isCertified
     };
 };
 
index f5f3b7e..52a6980 100644 (file)
@@ -25,7 +25,8 @@ import VNFImportActionHelper from '../vnfMarketPlace/VNFImportActionHelper.js';
 
 export const mapStateToProps = ({
     softwareProduct,
-    licenseModel: { licenseAgreement }
+    licenseModel: { licenseAgreement },
+    currentScreen: { itemPermission: { isCertified } }
 }) => {
     let {
         softwareProductEditor: { data: currentSoftwareProduct = {} },
@@ -67,6 +68,7 @@ export const mapStateToProps = ({
             licenseAgreementName,
             fullCategoryDisplayName
         },
+        isCertified,
         componentsList,
         isManual:
             currentSoftwareProduct.onboardingMethod === onboardingMethod.MANUAL
index 00f0c2a..dcc9645 100644 (file)
@@ -65,8 +65,12 @@ class SoftwareProductLandingPageView extends React.Component {
         onAddComponent: PropTypes.func
     };
     componentDidMount() {
-        const { onCandidateInProcess, currentSoftwareProduct } = this.props;
-        if (currentSoftwareProduct.candidateOnboardingOrigin) {
+        const {
+            onCandidateInProcess,
+            currentSoftwareProduct,
+            isCertified
+        } = this.props;
+        if (currentSoftwareProduct.candidateOnboardingOrigin && !isCertified) {
             onCandidateInProcess(currentSoftwareProduct.id);
         }
     }
index 2ef15af..708cfb4 100644 (file)
@@ -3635,7 +3635,7 @@ dom-converter@~0.1:
   dependencies:
     utila "~0.3"
 
-dom-helpers@^3.2.0, dom-helpers@^3.2.1:
+dom-helpers@^3.2.0, dom-helpers@^3.2.1, dom-helpers@^3.3.1:
   version "3.3.1"
   resolved "https://registry.yarnpkg.com/dom-helpers/-/dom-helpers-3.3.1.tgz#fc1a4e15ffdf60ddde03a480a9c0fece821dd4a6"
 
@@ -8384,6 +8384,14 @@ prop-types@^15.5.10, prop-types@^15.5.4, prop-types@^15.5.6, prop-types@^15.5.7,
     loose-envify "^1.3.1"
     object-assign "^4.1.1"
 
+prop-types@^15.6.1:
+  version "15.6.1"
+  resolved "https://registry.yarnpkg.com/prop-types/-/prop-types-15.6.1.tgz#36644453564255ddda391191fb3a125cbdf654ca"
+  dependencies:
+    fbjs "^0.8.16"
+    loose-envify "^1.3.1"
+    object-assign "^4.1.1"
+
 proxy-addr@~2.0.2:
   version "2.0.2"
   resolved "https://registry.yarnpkg.com/proxy-addr/-/proxy-addr-2.0.2.tgz#6571504f47bb988ec8180253f85dd7e14952bdec"
@@ -8881,6 +8889,14 @@ react-transition-group@^2.0.0, react-transition-group@^2.2.0:
     prop-types "^15.5.8"
     warning "^3.0.0"
 
+react-transition-group@^2.3.1:
+  version "2.3.1"
+  resolved "https://registry.yarnpkg.com/react-transition-group/-/react-transition-group-2.3.1.tgz#31d611b33e143a5e0f2d94c348e026a0f3b474b6"
+  dependencies:
+    dom-helpers "^3.3.1"
+    loose-envify "^1.3.1"
+    prop-types "^15.6.1"
+
 react-treebeard@^2.1.0:
   version "2.1.0"
   resolved "https://registry.yarnpkg.com/react-treebeard/-/react-treebeard-2.1.0.tgz#fbd5cf51089b6f09a9b18350ab3bddf736e57800"
@@ -9459,9 +9475,9 @@ scss-tokenizer@^0.2.3:
     js-base64 "^2.1.8"
     source-map "^0.4.2"
 
-sdc-ui@1.6.32:
-  version "1.6.32"
-  resolved "https://registry.yarnpkg.com/sdc-ui/-/sdc-ui-1.6.32.tgz#ce05f10a6923fa5c3865d17e3f34b7751681ee3f"
+sdc-ui@1.6.43:
+  version "1.6.43"
+  resolved "https://registry.yarnpkg.com/sdc-ui/-/sdc-ui-1.6.43.tgz#c069337e977f769e21a237b5e139feed46bc6daa"
   dependencies:
     "@angular/common" "~2.4.8"
     "@angular/core" "~2.4.8"