react 16 upgrade 17/66817/14
authorEinav Weiss Keidar <einavw@amdocs.com>
Mon, 13 Aug 2018 13:19:46 +0000 (16:19 +0300)
committerAvi Gaffa <avi.gaffa@amdocs.com>
Mon, 11 Feb 2019 13:50:22 +0000 (13:50 +0000)
Issue-ID: SDC-1762
Change-Id: I7701f12fc63bb09f8c985c7c893b984701dcbfab
Signed-off-by: Einav Keidar <einavw@amdocs.com>
193 files changed:
dox-sequence-diagram-ui/package.json
dox-sequence-diagram-ui/yarn.lock
openecomp-ui/package.json
openecomp-ui/resources/scss/_common.scss
openecomp-ui/resources/scss/_components.scss
openecomp-ui/resources/scss/_modules.scss
openecomp-ui/resources/scss/bootstrap.scss
openecomp-ui/resources/scss/common/_base.scss
openecomp-ui/resources/scss/common/_layout.scss
openecomp-ui/resources/scss/common/_typography.scss
openecomp-ui/resources/scss/common/_utils.scss
openecomp-ui/resources/scss/common/_variables.scss
openecomp-ui/resources/scss/components/_activityLog.scss
openecomp-ui/resources/scss/components/_commitModal.scss
openecomp-ui/resources/scss/components/_datepicker.scss
openecomp-ui/resources/scss/components/_dropzone.scss
openecomp-ui/resources/scss/components/_dualListBox.scss
openecomp-ui/resources/scss/components/_expandableInput.scss
openecomp-ui/resources/scss/components/_forms.scss
openecomp-ui/resources/scss/components/_grid.scss
openecomp-ui/resources/scss/components/_inputOptions.scss
openecomp-ui/resources/scss/components/_listEditorView.scss
openecomp-ui/resources/scss/components/_loader.scss
openecomp-ui/resources/scss/components/_navigationSideBar.scss
openecomp-ui/resources/scss/components/_notifications.scss [deleted file]
openecomp-ui/resources/scss/components/_overlay.scss
openecomp-ui/resources/scss/components/_progressBar.scss
openecomp-ui/resources/scss/components/_selectActionTable.scss
openecomp-ui/resources/scss/components/_sequenceDiagram.scss
openecomp-ui/resources/scss/components/_submitErrorResponse.scss
openecomp-ui/resources/scss/components/_toggleInput.scss
openecomp-ui/resources/scss/components/_tree.scss
openecomp-ui/resources/scss/components/_userNotifications.scss
openecomp-ui/resources/scss/components/_validationForm.scss
openecomp-ui/resources/scss/components/_versionController.scss
openecomp-ui/resources/scss/components/_vnfBrowse.scss
openecomp-ui/resources/scss/components/_vspDetailsVendorSelect.scss
openecomp-ui/resources/scss/modules/_entitlementPools.scss
openecomp-ui/resources/scss/modules/_featureGroup.scss
openecomp-ui/resources/scss/modules/_licenseAgreement.scss
openecomp-ui/resources/scss/modules/_licenseKeyGroup.scss
openecomp-ui/resources/scss/modules/_licenseModel.scss
openecomp-ui/resources/scss/modules/_licenseModelLimits.scss
openecomp-ui/resources/scss/modules/_licenseModelOverview.scss
openecomp-ui/resources/scss/modules/_mergeEditor.scss
openecomp-ui/resources/scss/modules/_onboardingCatalog.scss
openecomp-ui/resources/scss/modules/_permissions.scss
openecomp-ui/resources/scss/modules/_revisions.scss
openecomp-ui/resources/scss/modules/_softwareProductAttachmentPage.scss
openecomp-ui/resources/scss/modules/_softwareProductComponentCompute.scss
openecomp-ui/resources/scss/modules/_softwareProductComponentGeneral.scss
openecomp-ui/resources/scss/modules/_softwareProductComponentImage.scss
openecomp-ui/resources/scss/modules/_softwareProductComponentNetwork.scss
openecomp-ui/resources/scss/modules/_softwareProductComponentProcessesPage.scss
openecomp-ui/resources/scss/modules/_softwareProductCreatePage.scss
openecomp-ui/resources/scss/modules/_softwareProductDependencies.scss
openecomp-ui/resources/scss/modules/_softwareProductDeployment.scss
openecomp-ui/resources/scss/modules/_softwareProductLandingPage.scss
openecomp-ui/resources/scss/modules/_softwareProductProcessesPage.scss
openecomp-ui/resources/scss/modules/_softwareproductComponentLoadBalancing.scss
openecomp-ui/resources/scss/modules/_uploadScreen.scss
openecomp-ui/resources/scss/modules/_versionsPage.scss
openecomp-ui/resources/scss/modules/_vspComponentCompute.scss [deleted file]
openecomp-ui/resources/scss/modules/_vspComponentMonitoring.scss
openecomp-ui/resources/scss/modules/_vspComponentQuestionnaire.scss
openecomp-ui/resources/scss/modules/_vspHeatSetup.scss
openecomp-ui/resources/scss/modules/_workflows.scss
openecomp-ui/resources/scss/modules/onboardingCatalog/_catalogFilter.scss
openecomp-ui/resources/scss/modules/onboardingCatalog/_catalogHeader.scss
openecomp-ui/resources/scss/modules/onboardingCatalog/_catalogList.scss
openecomp-ui/resources/scss/modules/onboardingCatalog/_catalogTile.scss
openecomp-ui/resources/scss/modules/onboardingCatalog/_createItemTile.scss
openecomp-ui/resources/scss/modules/onboardingCatalog/_onboardHeader.scss
openecomp-ui/resources/scss/modules/onboardingCatalog/_tile.scss
openecomp-ui/resources/scss/modules/onboardingCatalog/_vendorPageHeader.scss
openecomp-ui/resources/scss/modules/onboardingCatalog/_vendorTile.scss
openecomp-ui/resources/scss/modules/onboardingCatalog/_vlmTile.scss [deleted file]
openecomp-ui/resources/scss/modules/onboardingCatalog/_vspOverlay.scss
openecomp-ui/resources/scss/onboarding.scss
openecomp-ui/resources/scss/style.scss
openecomp-ui/src/nfvo-components/datepicker/Datepicker.jsx
openecomp-ui/src/nfvo-components/input/ExpandableInput.jsx
openecomp-ui/src/nfvo-components/input/dualListbox/DualListboxView.jsx
openecomp-ui/src/nfvo-components/input/validation/Form.jsx
openecomp-ui/src/nfvo-components/input/validation/Input.jsx
openecomp-ui/src/nfvo-components/input/validation/ValidationButtons.jsx
openecomp-ui/src/nfvo-components/modal/GlobalModal.js
openecomp-ui/src/nfvo-components/modal/GlobalModalConstants.js
openecomp-ui/src/nfvo-components/modal/GlobalModalReducer.js
openecomp-ui/src/nfvo-components/modal/Modal.jsx [deleted file]
openecomp-ui/src/nfvo-components/panel/NavigationSideBar.jsx
openecomp-ui/src/nfvo-components/panel/versionController/components/CommitCommentModal.jsx
openecomp-ui/src/nfvo-utils/i18n/en.json
openecomp-ui/src/sdc-app/Application.jsx
openecomp-ui/src/sdc-app/common/merge/MergeEditorActionHelper.js
openecomp-ui/src/sdc-app/common/merge/MergeEditorView.jsx
openecomp-ui/src/sdc-app/common/modal/ModalContentMapper.js
openecomp-ui/src/sdc-app/flows/FlowsActions.js
openecomp-ui/src/sdc-app/flows/FlowsEditorModal.js
openecomp-ui/src/sdc-app/flows/FlowsEditorModalView.jsx
openecomp-ui/src/sdc-app/flows/FlowsListEditor.js
openecomp-ui/src/sdc-app/flows/FlowsListEditorView.jsx
openecomp-ui/src/sdc-app/flows/FlowsListReducer.js
openecomp-ui/src/sdc-app/onboarding/licenseModel/components/ModalButtons.jsx
openecomp-ui/src/sdc-app/onboarding/licenseModel/components/UuId.jsx
openecomp-ui/src/sdc-app/onboarding/licenseModel/creation/LicenseModelCreationView.jsx
openecomp-ui/src/sdc-app/onboarding/licenseModel/entitlementPools/EntitlementPoolsActionHelper.js
openecomp-ui/src/sdc-app/onboarding/licenseModel/entitlementPools/EntitlementPoolsEditorView.jsx
openecomp-ui/src/sdc-app/onboarding/licenseModel/entitlementPools/EntitlementPoolsListEditor.js
openecomp-ui/src/sdc-app/onboarding/licenseModel/entitlementPools/EntitlementPoolsListEditorView.jsx
openecomp-ui/src/sdc-app/onboarding/licenseModel/entitlementPools/components/FormContent.jsx
openecomp-ui/src/sdc-app/onboarding/licenseModel/featureGroups/FeatureGroupEditorView.jsx
openecomp-ui/src/sdc-app/onboarding/licenseModel/featureGroups/FeatureGroupListEditor.js
openecomp-ui/src/sdc-app/onboarding/licenseModel/featureGroups/FeatureGroupListEditorView.jsx
openecomp-ui/src/sdc-app/onboarding/licenseModel/featureGroups/FeatureGroupsActionHelper.js
openecomp-ui/src/sdc-app/onboarding/licenseModel/licenseAgreement/LicenseAgreementActionHelper.js
openecomp-ui/src/sdc-app/onboarding/licenseModel/licenseAgreement/LicenseAgreementEditorView.jsx
openecomp-ui/src/sdc-app/onboarding/licenseModel/licenseAgreement/LicenseAgreementListEditor.js
openecomp-ui/src/sdc-app/onboarding/licenseModel/licenseAgreement/LicenseAgreementListEditorView.jsx
openecomp-ui/src/sdc-app/onboarding/licenseModel/licenseKeyGroups/LicenseKeyGroupsActionHelper.js
openecomp-ui/src/sdc-app/onboarding/licenseModel/licenseKeyGroups/LicenseKeyGroupsEditorView.jsx
openecomp-ui/src/sdc-app/onboarding/licenseModel/licenseKeyGroups/LicenseKeyGroupsListEditor.js
openecomp-ui/src/sdc-app/onboarding/licenseModel/licenseKeyGroups/LicenseKeyGroupsListEditorView.jsx
openecomp-ui/src/sdc-app/onboarding/licenseModel/licenseKeyGroups/components/FormContent.jsx
openecomp-ui/src/sdc-app/onboarding/licenseModel/overview/LicenseModelOverviewView.jsx
openecomp-ui/src/sdc-app/onboarding/licenseModel/overview/summary/SummaryCountList.js
openecomp-ui/src/sdc-app/onboarding/onboard/CatalogItemDetails.jsx
openecomp-ui/src/sdc-app/onboarding/onboard/CatalogModal.jsx [deleted file]
openecomp-ui/src/sdc-app/onboarding/onboard/filter/Filter.jsx
openecomp-ui/src/sdc-app/onboarding/onboard/onboardingCatalog/VSPOverlay.jsx
openecomp-ui/src/sdc-app/onboarding/onboard/onboardingCatalog/VendorItem.jsx
openecomp-ui/src/sdc-app/onboarding/permissions/PermissionsManager.jsx
openecomp-ui/src/sdc-app/onboarding/revisions/RevisionsActionHelper.js
openecomp-ui/src/sdc-app/onboarding/revisions/RevisionsView.jsx
openecomp-ui/src/sdc-app/onboarding/softwareProduct/SoftwareProductActionHelper.js
openecomp-ui/src/sdc-app/onboarding/softwareProduct/attachments/setup/HeatSetup.js
openecomp-ui/src/sdc-app/onboarding/softwareProduct/attachments/setup/HeatSetupActionHelper.js
openecomp-ui/src/sdc-app/onboarding/softwareProduct/attachments/setup/HeatSetupConstants.js
openecomp-ui/src/sdc-app/onboarding/softwareProduct/attachments/setup/HeatSetupReducer.js
openecomp-ui/src/sdc-app/onboarding/softwareProduct/attachments/setup/HeatSetupView.jsx
openecomp-ui/src/sdc-app/onboarding/softwareProduct/attachments/setup/components/AddOrDeleteVolumeFiles.js [new file with mode: 0644]
openecomp-ui/src/sdc-app/onboarding/softwareProduct/attachments/setup/components/ArtifactOrNestedFileList.js [new file with mode: 0644]
openecomp-ui/src/sdc-app/onboarding/softwareProduct/attachments/setup/components/EmptyListContent.js [new file with mode: 0644]
openecomp-ui/src/sdc-app/onboarding/softwareProduct/attachments/setup/components/ModuleFile.js [new file with mode: 0644]
openecomp-ui/src/sdc-app/onboarding/softwareProduct/attachments/setup/components/NameEditInput.js [new file with mode: 0644]
openecomp-ui/src/sdc-app/onboarding/softwareProduct/attachments/setup/components/SelectWithFileType.js [new file with mode: 0644]
openecomp-ui/src/sdc-app/onboarding/softwareProduct/attachments/setup/components/SortableListItem.js [new file with mode: 0644]
openecomp-ui/src/sdc-app/onboarding/softwareProduct/attachments/setup/components/SortableModuleFileList.js [new file with mode: 0644]
openecomp-ui/src/sdc-app/onboarding/softwareProduct/attachments/setup/components/UnassignedFile.js [new file with mode: 0644]
openecomp-ui/src/sdc-app/onboarding/softwareProduct/attachments/setup/components/UnassignedFileList.js [new file with mode: 0644]
openecomp-ui/src/sdc-app/onboarding/softwareProduct/components/SoftwareProductComponents.js
openecomp-ui/src/sdc-app/onboarding/softwareProduct/components/compute/ComputeFlavorActionHelper.js
openecomp-ui/src/sdc-app/onboarding/softwareProduct/components/compute/computeComponents/computeFlavor/ComputeFlavorEditorView.jsx
openecomp-ui/src/sdc-app/onboarding/softwareProduct/components/creation/SoftwareProductComponentCreationView.jsx
openecomp-ui/src/sdc-app/onboarding/softwareProduct/components/images/SoftwareProductComponentsImageActionHelper.js
openecomp-ui/src/sdc-app/onboarding/softwareProduct/components/images/SoftwareProductComponentsImageEditorView.jsx
openecomp-ui/src/sdc-app/onboarding/softwareProduct/components/network/NICCreation/NICCreationActionHelper.js
openecomp-ui/src/sdc-app/onboarding/softwareProduct/components/network/NICCreation/NICCreationView.jsx
openecomp-ui/src/sdc-app/onboarding/softwareProduct/components/network/SoftwareProductComponentsNICEditor.js
openecomp-ui/src/sdc-app/onboarding/softwareProduct/components/network/SoftwareProductComponentsNICEditorView.jsx
openecomp-ui/src/sdc-app/onboarding/softwareProduct/components/network/SoftwareProductComponentsNetworkActionHelper.js
openecomp-ui/src/sdc-app/onboarding/softwareProduct/components/network/SoftwareProductComponentsNetworkList.js
openecomp-ui/src/sdc-app/onboarding/softwareProduct/components/network/nicEditorComponents/NameAndPurpose.jsx
openecomp-ui/src/sdc-app/onboarding/softwareProduct/components/network/nicEditorComponents/Network.jsx
openecomp-ui/src/sdc-app/onboarding/softwareProduct/components/network/nicEditorComponents/PacketsBytes.jsx
openecomp-ui/src/sdc-app/onboarding/softwareProduct/components/network/nicEditorComponents/Protocols.jsx
openecomp-ui/src/sdc-app/onboarding/softwareProduct/components/processes/SoftwareProductComponentProcessesActionHelper.js
openecomp-ui/src/sdc-app/onboarding/softwareProduct/components/processes/SoftwareProductComponentProcessesList.js
openecomp-ui/src/sdc-app/onboarding/softwareProduct/components/processes/SoftwareProductComponentsProcessesListView.jsx
openecomp-ui/src/sdc-app/onboarding/softwareProduct/creation/SoftwareProductCreationView.jsx
openecomp-ui/src/sdc-app/onboarding/softwareProduct/deployment/SoftwareProductDeploymentActionHelper.js
openecomp-ui/src/sdc-app/onboarding/softwareProduct/deployment/editor/SoftwareProductDeploymentEditorView.jsx
openecomp-ui/src/sdc-app/onboarding/softwareProduct/processes/SoftwareProductProcessListView.jsx
openecomp-ui/src/sdc-app/onboarding/softwareProduct/processes/SoftwareProductProcesses.js
openecomp-ui/src/sdc-app/onboarding/softwareProduct/processes/SoftwareProductProcessesActionHelper.js
openecomp-ui/src/sdc-app/onboarding/softwareProduct/processes/SoftwareProductProcessesEditorForm.jsx
openecomp-ui/src/sdc-app/onboarding/softwareProduct/processes/SoftwareProductProcessesView.jsx
openecomp-ui/src/sdc-app/onboarding/softwareProduct/vnfMarketPlace/VNFImportView.jsx
openecomp-ui/src/sdc-app/onboarding/versionsPage/VersionsPageActionHelper.js
openecomp-ui/src/sdc-app/onboarding/versionsPage/creation/VersionsPageCreationView.jsx
openecomp-ui/src/sdc-app/sdc.app.jsx
openecomp-ui/test-utils/shim.js [new file with mode: 0644]
openecomp-ui/test-utils/test-setup.js
openecomp-ui/test/activity-log/ActivityLog.test.js
openecomp-ui/test/flows/test.js
openecomp-ui/test/licenseModel/featureGroups/LicenseModelFeatureGroupListEditor.test.js
openecomp-ui/test/licenseModel/test.js
openecomp-ui/test/nfvo-components/editor/TabulatedEditor.test.js
openecomp-ui/test/onboard/filter/filterView.test.js
openecomp-ui/test/softwareProduct/processes/test.js
openecomp-ui/test/softwareProduct/test.js
openecomp-ui/test/utils/errorResponseHandler.test.js
openecomp-ui/yarn.lock

index d56d6b7..f2884eb 100644 (file)
     "dependencies": {
         "d3": "^4.10.0",
         "lodash": "^4.12.0",
-        "prop-types": "^15.6.0",
-        "react": "^15.6.2",
+        "prop-types": "^15.6.2",
+        "react": "^16.4.2",
         "react-dnd": "^2.5.4",
         "react-dnd-html5-backend": "^2.5.4",
-        "react-dom": "^15.6.2",
-        "react-redux": "^5.0.6",
+        "react-dom": "^16.4.2",
+        "react-redux": "^5.0.7",
         "react-select": "1.2.1",
         "redux": "^3.7.2"
     },
index 015eb8d..2e83951 100644 (file)
 # yarn lockfile v1
 
 
-"@babel/code-frame@7.0.0-beta.36":
-  version "7.0.0-beta.36"
-  resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.0.0-beta.36.tgz#2349d7ec04b3a06945ae173280ef8579b63728e4"
+"@babel/code-frame@7.0.0-beta.44":
+  version "7.0.0-beta.44"
+  resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.0.0-beta.44.tgz#2a02643368de80916162be70865c97774f3adbd9"
   dependencies:
-    chalk "^2.0.0"
-    esutils "^2.0.2"
-    js-tokens "^3.0.0"
+    "@babel/highlight" "7.0.0-beta.44"
 
-"@babel/helper-function-name@7.0.0-beta.36":
-  version "7.0.0-beta.36"
-  resolved "https://registry.yarnpkg.com/@babel/helper-function-name/-/helper-function-name-7.0.0-beta.36.tgz#366e3bc35147721b69009f803907c4d53212e88d"
+"@babel/generator@7.0.0-beta.44":
+  version "7.0.0-beta.44"
+  resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.0.0-beta.44.tgz#c7e67b9b5284afcf69b309b50d7d37f3e5033d42"
   dependencies:
-    "@babel/helper-get-function-arity" "7.0.0-beta.36"
-    "@babel/template" "7.0.0-beta.36"
-    "@babel/types" "7.0.0-beta.36"
+    "@babel/types" "7.0.0-beta.44"
+    jsesc "^2.5.1"
+    lodash "^4.2.0"
+    source-map "^0.5.0"
+    trim-right "^1.0.1"
 
-"@babel/helper-get-function-arity@7.0.0-beta.36":
-  version "7.0.0-beta.36"
-  resolved "https://registry.yarnpkg.com/@babel/helper-get-function-arity/-/helper-get-function-arity-7.0.0-beta.36.tgz#f5383bac9a96b274828b10d98900e84ee43e32b8"
+"@babel/helper-function-name@7.0.0-beta.44":
+  version "7.0.0-beta.44"
+  resolved "https://registry.yarnpkg.com/@babel/helper-function-name/-/helper-function-name-7.0.0-beta.44.tgz#e18552aaae2231100a6e485e03854bc3532d44dd"
   dependencies:
-    "@babel/types" "7.0.0-beta.36"
+    "@babel/helper-get-function-arity" "7.0.0-beta.44"
+    "@babel/template" "7.0.0-beta.44"
+    "@babel/types" "7.0.0-beta.44"
 
-"@babel/template@7.0.0-beta.36":
-  version "7.0.0-beta.36"
-  resolved "https://registry.yarnpkg.com/@babel/template/-/template-7.0.0-beta.36.tgz#02e903de5d68bd7899bce3c5b5447e59529abb00"
+"@babel/helper-get-function-arity@7.0.0-beta.44":
+  version "7.0.0-beta.44"
+  resolved "https://registry.yarnpkg.com/@babel/helper-get-function-arity/-/helper-get-function-arity-7.0.0-beta.44.tgz#d03ca6dd2b9f7b0b1e6b32c56c72836140db3a15"
   dependencies:
-    "@babel/code-frame" "7.0.0-beta.36"
-    "@babel/types" "7.0.0-beta.36"
-    babylon "7.0.0-beta.36"
-    lodash "^4.2.0"
+    "@babel/types" "7.0.0-beta.44"
+
+"@babel/helper-module-imports@^7.0.0-beta.49":
+  version "7.0.0-beta.56"
+  resolved "https://registry.yarnpkg.com/@babel/helper-module-imports/-/helper-module-imports-7.0.0-beta.56.tgz#edf9494ef1f36674bb19cec9ea142b70f186406d"
+  dependencies:
+    "@babel/types" "7.0.0-beta.56"
+    lodash "^4.17.10"
+
+"@babel/helper-split-export-declaration@7.0.0-beta.44":
+  version "7.0.0-beta.44"
+  resolved "https://registry.yarnpkg.com/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.0.0-beta.44.tgz#c0b351735e0fbcb3822c8ad8db4e583b05ebd9dc"
+  dependencies:
+    "@babel/types" "7.0.0-beta.44"
+
+"@babel/highlight@7.0.0-beta.44":
+  version "7.0.0-beta.44"
+  resolved "https://registry.yarnpkg.com/@babel/highlight/-/highlight-7.0.0-beta.44.tgz#18c94ce543916a80553edcdcf681890b200747d5"
+  dependencies:
+    chalk "^2.0.0"
+    esutils "^2.0.2"
+    js-tokens "^3.0.0"
 
-"@babel/traverse@7.0.0-beta.36":
-  version "7.0.0-beta.36"
-  resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.0.0-beta.36.tgz#1dc6f8750e89b6b979de5fe44aa993b1a2192261"
+"@babel/template@7.0.0-beta.44":
+  version "7.0.0-beta.44"
+  resolved "https://registry.yarnpkg.com/@babel/template/-/template-7.0.0-beta.44.tgz#f8832f4fdcee5d59bf515e595fc5106c529b394f"
   dependencies:
-    "@babel/code-frame" "7.0.0-beta.36"
-    "@babel/helper-function-name" "7.0.0-beta.36"
-    "@babel/types" "7.0.0-beta.36"
-    babylon "7.0.0-beta.36"
-    debug "^3.0.1"
+    "@babel/code-frame" "7.0.0-beta.44"
+    "@babel/types" "7.0.0-beta.44"
+    babylon "7.0.0-beta.44"
+    lodash "^4.2.0"
+
+"@babel/traverse@7.0.0-beta.44":
+  version "7.0.0-beta.44"
+  resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.0.0-beta.44.tgz#a970a2c45477ad18017e2e465a0606feee0d2966"
+  dependencies:
+    "@babel/code-frame" "7.0.0-beta.44"
+    "@babel/generator" "7.0.0-beta.44"
+    "@babel/helper-function-name" "7.0.0-beta.44"
+    "@babel/helper-split-export-declaration" "7.0.0-beta.44"
+    "@babel/types" "7.0.0-beta.44"
+    babylon "7.0.0-beta.44"
+    debug "^3.1.0"
     globals "^11.1.0"
     invariant "^2.2.0"
     lodash "^4.2.0"
 
-"@babel/types@7.0.0-beta.36":
-  version "7.0.0-beta.36"
-  resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.0.0-beta.36.tgz#64f2004353de42adb72f9ebb4665fc35b5499d23"
+"@babel/types@7.0.0-beta.44":
+  version "7.0.0-beta.44"
+  resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.0.0-beta.44.tgz#6b1b164591f77dec0a0342aca995f2d046b3a757"
   dependencies:
     esutils "^2.0.2"
     lodash "^4.2.0"
     to-fast-properties "^2.0.0"
 
+"@babel/types@7.0.0-beta.56", "@babel/types@^7.0.0-beta.49":
+  version "7.0.0-beta.56"
+  resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.0.0-beta.56.tgz#df456947a82510ec30361971e566110d89489056"
+  dependencies:
+    esutils "^2.0.2"
+    lodash "^4.17.10"
+    to-fast-properties "^2.0.0"
+
+"@mrmlnc/readdir-enhanced@^2.2.1":
+  version "2.2.1"
+  resolved "https://registry.yarnpkg.com/@mrmlnc/readdir-enhanced/-/readdir-enhanced-2.2.1.tgz#524af240d1a360527b730475ecfa1344aa540dde"
+  dependencies:
+    call-me-maybe "^1.0.1"
+    glob-to-regexp "^0.3.0"
+
+"@nodelib/fs.stat@^1.0.1":
+  version "1.1.0"
+  resolved "https://registry.yarnpkg.com/@nodelib/fs.stat/-/fs.stat-1.1.0.tgz#50c1e2260ac0ed9439a181de3725a0168d59c48a"
+
+"@samverschueren/stream-to-observable@^0.3.0":
+  version "0.3.0"
+  resolved "https://registry.yarnpkg.com/@samverschueren/stream-to-observable/-/stream-to-observable-0.3.0.tgz#ecdf48d532c58ea477acfcab80348424f8d0662f"
+  dependencies:
+    any-observable "^0.3.0"
+
 "@sindresorhus/is@^0.7.0":
   version "0.7.0"
   resolved "https://registry.yarnpkg.com/@sindresorhus/is/-/is-0.7.0.tgz#9a06f4f137ee84d7df0460c1fdb1135ffa6c50fd"
 
+"@webassemblyjs/ast@1.5.13":
+  version "1.5.13"
+  resolved "https://registry.yarnpkg.com/@webassemblyjs/ast/-/ast-1.5.13.tgz#81155a570bd5803a30ec31436bc2c9c0ede38f25"
+  dependencies:
+    "@webassemblyjs/helper-module-context" "1.5.13"
+    "@webassemblyjs/helper-wasm-bytecode" "1.5.13"
+    "@webassemblyjs/wast-parser" "1.5.13"
+    debug "^3.1.0"
+    mamacro "^0.0.3"
+
+"@webassemblyjs/floating-point-hex-parser@1.5.13":
+  version "1.5.13"
+  resolved "https://registry.yarnpkg.com/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.5.13.tgz#29ce0baa97411f70e8cce68ce9c0f9d819a4e298"
+
+"@webassemblyjs/helper-api-error@1.5.13":
+  version "1.5.13"
+  resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-api-error/-/helper-api-error-1.5.13.tgz#e49b051d67ee19a56e29b9aa8bd949b5b4442a59"
+
+"@webassemblyjs/helper-buffer@1.5.13":
+  version "1.5.13"
+  resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-buffer/-/helper-buffer-1.5.13.tgz#873bb0a1b46449231137c1262ddfd05695195a1e"
+  dependencies:
+    debug "^3.1.0"
+
+"@webassemblyjs/helper-code-frame@1.5.13":
+  version "1.5.13"
+  resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-code-frame/-/helper-code-frame-1.5.13.tgz#1bd2181b6a0be14e004f0fe9f5a660d265362b58"
+  dependencies:
+    "@webassemblyjs/wast-printer" "1.5.13"
+
+"@webassemblyjs/helper-fsm@1.5.13":
+  version "1.5.13"
+  resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-fsm/-/helper-fsm-1.5.13.tgz#cdf3d9d33005d543a5c5e5adaabf679ffa8db924"
+
+"@webassemblyjs/helper-module-context@1.5.13":
+  version "1.5.13"
+  resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-module-context/-/helper-module-context-1.5.13.tgz#dc29ddfb51ed657655286f94a5d72d8a489147c5"
+  dependencies:
+    debug "^3.1.0"
+    mamacro "^0.0.3"
+
+"@webassemblyjs/helper-wasm-bytecode@1.5.13":
+  version "1.5.13"
+  resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.5.13.tgz#03245817f0a762382e61733146f5773def15a747"
+
+"@webassemblyjs/helper-wasm-section@1.5.13":
+  version "1.5.13"
+  resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.5.13.tgz#efc76f44a10d3073b584b43c38a179df173d5c7d"
+  dependencies:
+    "@webassemblyjs/ast" "1.5.13"
+    "@webassemblyjs/helper-buffer" "1.5.13"
+    "@webassemblyjs/helper-wasm-bytecode" "1.5.13"
+    "@webassemblyjs/wasm-gen" "1.5.13"
+    debug "^3.1.0"
+
+"@webassemblyjs/ieee754@1.5.13":
+  version "1.5.13"
+  resolved "https://registry.yarnpkg.com/@webassemblyjs/ieee754/-/ieee754-1.5.13.tgz#573e97c8c12e4eebb316ca5fde0203ddd90b0364"
+  dependencies:
+    ieee754 "^1.1.11"
+
+"@webassemblyjs/leb128@1.5.13":
+  version "1.5.13"
+  resolved "https://registry.yarnpkg.com/@webassemblyjs/leb128/-/leb128-1.5.13.tgz#ab52ebab9cec283c1c1897ac1da833a04a3f4cee"
+  dependencies:
+    long "4.0.0"
+
+"@webassemblyjs/utf8@1.5.13":
+  version "1.5.13"
+  resolved "https://registry.yarnpkg.com/@webassemblyjs/utf8/-/utf8-1.5.13.tgz#6b53d2cd861cf94fa99c1f12779dde692fbc2469"
+
+"@webassemblyjs/wasm-edit@1.5.13":
+  version "1.5.13"
+  resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-edit/-/wasm-edit-1.5.13.tgz#c9cef5664c245cf11b3b3a73110c9155831724a8"
+  dependencies:
+    "@webassemblyjs/ast" "1.5.13"
+    "@webassemblyjs/helper-buffer" "1.5.13"
+    "@webassemblyjs/helper-wasm-bytecode" "1.5.13"
+    "@webassemblyjs/helper-wasm-section" "1.5.13"
+    "@webassemblyjs/wasm-gen" "1.5.13"
+    "@webassemblyjs/wasm-opt" "1.5.13"
+    "@webassemblyjs/wasm-parser" "1.5.13"
+    "@webassemblyjs/wast-printer" "1.5.13"
+    debug "^3.1.0"
+
+"@webassemblyjs/wasm-gen@1.5.13":
+  version "1.5.13"
+  resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-gen/-/wasm-gen-1.5.13.tgz#8e6ea113c4b432fa66540189e79b16d7a140700e"
+  dependencies:
+    "@webassemblyjs/ast" "1.5.13"
+    "@webassemblyjs/helper-wasm-bytecode" "1.5.13"
+    "@webassemblyjs/ieee754" "1.5.13"
+    "@webassemblyjs/leb128" "1.5.13"
+    "@webassemblyjs/utf8" "1.5.13"
+
+"@webassemblyjs/wasm-opt@1.5.13":
+  version "1.5.13"
+  resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-opt/-/wasm-opt-1.5.13.tgz#147aad7717a7ee4211c36b21a5f4c30dddf33138"
+  dependencies:
+    "@webassemblyjs/ast" "1.5.13"
+    "@webassemblyjs/helper-buffer" "1.5.13"
+    "@webassemblyjs/wasm-gen" "1.5.13"
+    "@webassemblyjs/wasm-parser" "1.5.13"
+    debug "^3.1.0"
+
+"@webassemblyjs/wasm-parser@1.5.13":
+  version "1.5.13"
+  resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-parser/-/wasm-parser-1.5.13.tgz#6f46516c5bb23904fbdf58009233c2dd8a54c72f"
+  dependencies:
+    "@webassemblyjs/ast" "1.5.13"
+    "@webassemblyjs/helper-api-error" "1.5.13"
+    "@webassemblyjs/helper-wasm-bytecode" "1.5.13"
+    "@webassemblyjs/ieee754" "1.5.13"
+    "@webassemblyjs/leb128" "1.5.13"
+    "@webassemblyjs/utf8" "1.5.13"
+
+"@webassemblyjs/wast-parser@1.5.13":
+  version "1.5.13"
+  resolved "https://registry.yarnpkg.com/@webassemblyjs/wast-parser/-/wast-parser-1.5.13.tgz#5727a705d397ae6a3ae99d7f5460acf2ec646eea"
+  dependencies:
+    "@webassemblyjs/ast" "1.5.13"
+    "@webassemblyjs/floating-point-hex-parser" "1.5.13"
+    "@webassemblyjs/helper-api-error" "1.5.13"
+    "@webassemblyjs/helper-code-frame" "1.5.13"
+    "@webassemblyjs/helper-fsm" "1.5.13"
+    long "^3.2.0"
+    mamacro "^0.0.3"
+
+"@webassemblyjs/wast-printer@1.5.13":
+  version "1.5.13"
+  resolved "https://registry.yarnpkg.com/@webassemblyjs/wast-printer/-/wast-printer-1.5.13.tgz#bb34d528c14b4f579e7ec11e793ec50ad7cd7c95"
+  dependencies:
+    "@webassemblyjs/ast" "1.5.13"
+    "@webassemblyjs/wast-parser" "1.5.13"
+    long "^3.2.0"
+
 abbrev@1:
   version "1.1.1"
   resolved "https://registry.yarnpkg.com/abbrev/-/abbrev-1.1.1.tgz#f8f2c887ad10bf67f634f005b6987fed3179aac8"
 
-accepts@~1.3.4:
-  version "1.3.4"
-  resolved "https://registry.yarnpkg.com/accepts/-/accepts-1.3.4.tgz#86246758c7dd6d21a6474ff084a4740ec05eb21f"
+accepts@~1.3.4, accepts@~1.3.5:
+  version "1.3.5"
+  resolved "https://registry.yarnpkg.com/accepts/-/accepts-1.3.5.tgz#eb777df6011723a3b14e8a72c0805c8e86746bd2"
   dependencies:
-    mime-types "~2.1.16"
+    mime-types "~2.1.18"
     negotiator "0.6.1"
 
 acorn-dynamic-import@^3.0.0:
@@ -85,17 +277,17 @@ acorn@^3.0.4:
   version "3.3.0"
   resolved "https://registry.yarnpkg.com/acorn/-/acorn-3.3.0.tgz#45e37fb39e8da3f25baee3ff5369e2bb5f22017a"
 
-acorn@^5.0.0:
-  version "5.3.0"
-  resolved "https://registry.yarnpkg.com/acorn/-/acorn-5.3.0.tgz#7446d39459c54fb49a80e6ee6478149b940ec822"
+acorn@^5.0.0, acorn@^5.5.0, acorn@^5.6.2:
+  version "5.7.1"
+  resolved "https://registry.yarnpkg.com/acorn/-/acorn-5.7.1.tgz#f095829297706a7c9776958c0afc8930a9b9d9d8"
 
-acorn@^5.4.0:
-  version "5.5.0"
-  resolved "https://registry.yarnpkg.com/acorn/-/acorn-5.5.0.tgz#1abb587fbf051f94e3de20e6b26ef910b1828298"
+ajv-keywords@^2.1.0:
+  version "2.1.1"
+  resolved "https://registry.yarnpkg.com/ajv-keywords/-/ajv-keywords-2.1.1.tgz#617997fc5f60576894c435f940d819e135b80762"
 
-ajv-keywords@^3.0.0, ajv-keywords@^3.1.0:
-  version "3.1.0"
-  resolved "https://registry.yarnpkg.com/ajv-keywords/-/ajv-keywords-3.1.0.tgz#ac2b27939c543e95d2c06e7f7f5c27be4aa543be"
+ajv-keywords@^3.1.0:
+  version "3.2.0"
+  resolved "https://registry.yarnpkg.com/ajv-keywords/-/ajv-keywords-3.2.0.tgz#e86b819c602cf8821ad637413698f1dec021847a"
 
 ajv@^4.9.1:
   version "4.11.8"
@@ -104,7 +296,7 @@ ajv@^4.9.1:
     co "^4.6.0"
     json-stable-stringify "^1.0.1"
 
-ajv@^5.1.0, ajv@^5.3.0:
+ajv@^5.1.0, ajv@^5.2.3, ajv@^5.3.0:
   version "5.5.2"
   resolved "https://registry.yarnpkg.com/ajv/-/ajv-5.5.2.tgz#73b5eeca3fab653e3d3f9422b341ad42205dc965"
   dependencies:
@@ -113,22 +305,14 @@ ajv@^5.1.0, ajv@^5.3.0:
     fast-json-stable-stringify "^2.0.0"
     json-schema-traverse "^0.3.0"
 
-ajv@^6.0.1:
-  version "6.2.0"
-  resolved "https://registry.yarnpkg.com/ajv/-/ajv-6.2.0.tgz#afac295bbaa0152449e522742e4547c1ae9328d2"
-  dependencies:
-    fast-deep-equal "^1.0.0"
-    fast-json-stable-stringify "^2.0.0"
-    json-schema-traverse "^0.3.0"
-
 ajv@^6.1.0:
-  version "6.4.0"
-  resolved "https://registry.yarnpkg.com/ajv/-/ajv-6.4.0.tgz#d3aff78e9277549771daf0164cff48482b754fc6"
+  version "6.5.2"
+  resolved "https://registry.yarnpkg.com/ajv/-/ajv-6.5.2.tgz#678495f9b82f7cca6be248dd92f59bff5e1f4360"
   dependencies:
-    fast-deep-equal "^1.0.0"
+    fast-deep-equal "^2.0.1"
     fast-json-stable-stringify "^2.0.0"
-    json-schema-traverse "^0.3.0"
-    uri-js "^3.0.2"
+    json-schema-traverse "^0.4.1"
+    uri-js "^4.2.1"
 
 alphanum-sort@^1.0.1, alphanum-sort@^1.0.2:
   version "1.0.2"
@@ -143,8 +327,8 @@ ansi-escapes@^1.0.0:
   resolved "https://registry.yarnpkg.com/ansi-escapes/-/ansi-escapes-1.4.0.tgz#d3a8a83b319aa67793662b13e761c7911422306e"
 
 ansi-escapes@^3.0.0:
-  version "3.0.0"
-  resolved "https://registry.yarnpkg.com/ansi-escapes/-/ansi-escapes-3.0.0.tgz#ec3e8b4e9f8064fc02c3ac9b65f1c275bda8ef92"
+  version "3.1.0"
+  resolved "https://registry.yarnpkg.com/ansi-escapes/-/ansi-escapes-3.1.0.tgz#f73207bb81207d75fd6c83f125af26eea378ca30"
 
 ansi-green@^0.1.1:
   version "0.1.1"
@@ -168,12 +352,6 @@ ansi-styles@^2.2.1:
   version "2.2.1"
   resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-2.2.1.tgz#b432dd3358b634cf75e1e4664368240533c1ddbe"
 
-ansi-styles@^3.1.0, ansi-styles@^3.2.0:
-  version "3.2.0"
-  resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-3.2.0.tgz#c159b8d5be0f9e5a6f346dab94f16ce022161b88"
-  dependencies:
-    color-convert "^1.9.0"
-
 ansi-styles@^3.2.1:
   version "3.2.1"
   resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-3.2.1.tgz#41fbb20243e50b12be0f04b8dedbf07520ce841d"
@@ -188,9 +366,9 @@ ansi-wrap@0.1.0:
   version "0.1.0"
   resolved "https://registry.yarnpkg.com/ansi-wrap/-/ansi-wrap-0.1.0.tgz#a82250ddb0015e9a27ca82e82ea603bbfa45efaf"
 
-any-observable@^0.2.0:
-  version "0.2.0"
-  resolved "https://registry.yarnpkg.com/any-observable/-/any-observable-0.2.0.tgz#c67870058003579009083f54ac0abafb5c33d242"
+any-observable@^0.3.0:
+  version "0.3.0"
+  resolved "https://registry.yarnpkg.com/any-observable/-/any-observable-0.3.0.tgz#af933475e5806a67d0d7df090dd5e8bef65d119b"
 
 anymatch@^2.0.0:
   version "2.0.0"
@@ -204,15 +382,15 @@ aproba@^1.0.3, aproba@^1.1.1:
   resolved "https://registry.yarnpkg.com/aproba/-/aproba-1.2.0.tgz#6802e6264efd18c790a1b0d517f0f2627bf2c94a"
 
 are-we-there-yet@~1.1.2:
-  version "1.1.4"
-  resolved "https://registry.yarnpkg.com/are-we-there-yet/-/are-we-there-yet-1.1.4.tgz#bb5dca382bb94f05e15194373d16fd3ba1ca110d"
+  version "1.1.5"
+  resolved "https://registry.yarnpkg.com/are-we-there-yet/-/are-we-there-yet-1.1.5.tgz#4b35c2944f062a8bfcda66410760350fe9ddfc21"
   dependencies:
     delegates "^1.0.0"
     readable-stream "^2.0.6"
 
 argparse@^1.0.7:
-  version "1.0.9"
-  resolved "https://registry.yarnpkg.com/argparse/-/argparse-1.0.9.tgz#73d83bc263f86e97f8cc4f6bae1b0e90a7d22c86"
+  version "1.0.10"
+  resolved "https://registry.yarnpkg.com/argparse/-/argparse-1.0.10.tgz#bcd6791ea5ae09725e17e5ad988134cd40b3d911"
   dependencies:
     sprintf-js "~1.0.2"
 
@@ -275,7 +453,7 @@ array-unique@^0.3.2:
   version "0.3.2"
   resolved "https://registry.yarnpkg.com/array-unique/-/array-unique-0.3.2.tgz#a894b75d4bc4f6cd679ef3244a9fd8f46ae2d428"
 
-arrify@^1.0.0:
+arrify@^1.0.0, arrify@^1.0.1:
   version "1.0.1"
   resolved "https://registry.yarnpkg.com/arrify/-/arrify-1.0.1.tgz#898508da2226f380df904728456849c1501a4b0d"
 
@@ -284,16 +462,18 @@ asap@^2.0.6, asap@~2.0.3:
   resolved "https://registry.yarnpkg.com/asap/-/asap-2.0.6.tgz#e50347611d7e690943208bbdafebcbc2fb866d46"
 
 asn1.js@^4.0.0:
-  version "4.9.2"
-  resolved "https://registry.yarnpkg.com/asn1.js/-/asn1.js-4.9.2.tgz#8117ef4f7ed87cd8f89044b5bff97ac243a16c9a"
+  version "4.10.1"
+  resolved "https://registry.yarnpkg.com/asn1.js/-/asn1.js-4.10.1.tgz#b9c2bf5805f1e64aadeed6df3a2bfafb5a73f5a0"
   dependencies:
     bn.js "^4.0.0"
     inherits "^2.0.1"
     minimalistic-assert "^1.0.0"
 
 asn1@~0.2.3:
-  version "0.2.3"
-  resolved "https://registry.yarnpkg.com/asn1/-/asn1-0.2.3.tgz#dac8787713c9966849fc8180777ebe9c1ddf3b86"
+  version "0.2.4"
+  resolved "https://registry.yarnpkg.com/asn1/-/asn1-0.2.4.tgz#8d2475dfab553bb33e77b54e59e880bb8ce23136"
+  dependencies:
+    safer-buffer "~2.1.0"
 
 assert-plus@1.0.0, assert-plus@^1.0.0:
   version "1.0.0"
@@ -317,9 +497,9 @@ ast-types@0.10.1:
   version "0.10.1"
   resolved "https://registry.yarnpkg.com/ast-types/-/ast-types-0.10.1.tgz#f52fca9715579a14f841d67d7f8d25432ab6a3dd"
 
-ast-types@0.11.3:
-  version "0.11.3"
-  resolved "https://registry.yarnpkg.com/ast-types/-/ast-types-0.11.3.tgz#c20757fe72ee71278ea0ff3d87e5c2ca30d9edf8"
+ast-types@0.11.5:
+  version "0.11.5"
+  resolved "https://registry.yarnpkg.com/ast-types/-/ast-types-0.11.5.tgz#9890825d660c03c28339f315e9fa0a360e31ec28"
 
 async-array-reduce@^0.2.0:
   version "0.2.1"
@@ -338,18 +518,18 @@ async@^1.5.0, async@^1.5.2:
   resolved "https://registry.yarnpkg.com/async/-/async-1.5.2.tgz#ec6a61ae56480c0c3cb241c95618e20892f9672a"
 
 async@^2.6.0:
-  version "2.6.0"
-  resolved "https://registry.yarnpkg.com/async/-/async-2.6.0.tgz#61a29abb6fcc026fea77e56d1c6ec53a795951f4"
+  version "2.6.1"
+  resolved "https://registry.yarnpkg.com/async/-/async-2.6.1.tgz#b245a23ca71930044ec53fa46aa00a3e87c6a610"
   dependencies:
-    lodash "^4.14.0"
+    lodash "^4.17.10"
 
 asynckit@^0.4.0:
   version "0.4.0"
   resolved "https://registry.yarnpkg.com/asynckit/-/asynckit-0.4.0.tgz#c79ed97f7f34cb8f2ba1bc9790bcc366474b4b79"
 
-atob@^2.0.0:
-  version "2.0.3"
-  resolved "https://registry.yarnpkg.com/atob/-/atob-2.0.3.tgz#19c7a760473774468f20b2d2d03372ad7d4cbf5d"
+atob@^2.1.1:
+  version "2.1.1"
+  resolved "https://registry.yarnpkg.com/atob/-/atob-2.1.1.tgz#ae2d5a729477f289d60dd7f96a6314a22dd6c22a"
 
 autoprefixer@^6.3.1:
   version "6.7.7"
@@ -371,8 +551,8 @@ aws-sign2@~0.7.0:
   resolved "https://registry.yarnpkg.com/aws-sign2/-/aws-sign2-0.7.0.tgz#b46e890934a9591f2d2f6f86d7e6a9f1b3fe76a8"
 
 aws4@^1.2.1, aws4@^1.6.0:
-  version "1.6.0"
-  resolved "https://registry.yarnpkg.com/aws4/-/aws4-1.6.0.tgz#83ef5ca860b2b32e4a0deedee8c771b9db57471e"
+  version "1.8.0"
+  resolved "https://registry.yarnpkg.com/aws4/-/aws4-1.8.0.tgz#f0e003d9ca9e7f59c7a508945d7b2ef9a04a542f"
 
 babel-code-frame@^6.22.0, babel-code-frame@^6.26.0:
   version "6.26.0"
@@ -383,8 +563,8 @@ babel-code-frame@^6.22.0, babel-code-frame@^6.26.0:
     js-tokens "^3.0.2"
 
 babel-core@^6.26.0:
-  version "6.26.0"
-  resolved "https://registry.yarnpkg.com/babel-core/-/babel-core-6.26.0.tgz#af32f78b31a6fcef119c87b0fd8d9753f03a0bb8"
+  version "6.26.3"
+  resolved "https://registry.yarnpkg.com/babel-core/-/babel-core-6.26.3.tgz#b2e2f09e342d0f0c88e2f02e067794125e75c207"
   dependencies:
     babel-code-frame "^6.26.0"
     babel-generator "^6.26.0"
@@ -396,30 +576,30 @@ babel-core@^6.26.0:
     babel-traverse "^6.26.0"
     babel-types "^6.26.0"
     babylon "^6.18.0"
-    convert-source-map "^1.5.0"
-    debug "^2.6.8"
+    convert-source-map "^1.5.1"
+    debug "^2.6.9"
     json5 "^0.5.1"
     lodash "^4.17.4"
     minimatch "^3.0.4"
     path-is-absolute "^1.0.1"
-    private "^0.1.7"
+    private "^0.1.8"
     slash "^1.0.0"
-    source-map "^0.5.6"
+    source-map "^0.5.7"
 
 babel-eslint@^8.2.1:
-  version "8.2.1"
-  resolved "https://registry.yarnpkg.com/babel-eslint/-/babel-eslint-8.2.1.tgz#136888f3c109edc65376c23ebf494f36a3e03951"
-  dependencies:
-    "@babel/code-frame" "7.0.0-beta.36"
-    "@babel/traverse" "7.0.0-beta.36"
-    "@babel/types" "7.0.0-beta.36"
-    babylon "7.0.0-beta.36"
-    eslint-scope "~3.7.1"
+  version "8.2.6"
+  resolved "https://registry.yarnpkg.com/babel-eslint/-/babel-eslint-8.2.6.tgz#6270d0c73205628067c0f7ae1693a9e797acefd9"
+  dependencies:
+    "@babel/code-frame" "7.0.0-beta.44"
+    "@babel/traverse" "7.0.0-beta.44"
+    "@babel/types" "7.0.0-beta.44"
+    babylon "7.0.0-beta.44"
+    eslint-scope "3.7.1"
     eslint-visitor-keys "^1.0.0"
 
 babel-generator@^6.26.0:
-  version "6.26.0"
-  resolved "https://registry.yarnpkg.com/babel-generator/-/babel-generator-6.26.0.tgz#ac1ae20070b79f6e3ca1d3269613053774f20dc5"
+  version "6.26.1"
+  resolved "https://registry.yarnpkg.com/babel-generator/-/babel-generator-6.26.1.tgz#1844408d3b8f0d35a404ea7ac180f087a601bd90"
   dependencies:
     babel-messages "^6.23.0"
     babel-runtime "^6.26.0"
@@ -427,7 +607,7 @@ babel-generator@^6.26.0:
     detect-indent "^4.0.0"
     jsesc "^1.3.0"
     lodash "^4.17.4"
-    source-map "^0.5.6"
+    source-map "^0.5.7"
     trim-right "^1.0.1"
 
 babel-helper-bindify-decorators@^6.24.1:
@@ -513,13 +693,6 @@ babel-helper-hoist-variables@^6.24.1:
     babel-runtime "^6.22.0"
     babel-types "^6.24.1"
 
-babel-helper-module-imports@^7.0.0-beta.3:
-  version "7.0.0-beta.3"
-  resolved "https://registry.yarnpkg.com/babel-helper-module-imports/-/babel-helper-module-imports-7.0.0-beta.3.tgz#e15764e3af9c8e11810c09f78f498a2bdc71585a"
-  dependencies:
-    babel-types "7.0.0-beta.3"
-    lodash "^4.2.0"
-
 babel-helper-optimise-call-expression@^6.24.1:
   version "6.24.1"
   resolved "https://registry.yarnpkg.com/babel-helper-optimise-call-expression/-/babel-helper-optimise-call-expression-6.24.1.tgz#f7a13427ba9f73f8f4fa993c54a97882d1244257"
@@ -564,8 +737,8 @@ babel-helpers@^6.24.1:
     babel-template "^6.24.1"
 
 babel-loader@^7.1.4:
-  version "7.1.4"
-  resolved "https://registry.yarnpkg.com/babel-loader/-/babel-loader-7.1.4.tgz#e3463938bd4e6d55d1c174c5485d406a188ed015"
+  version "7.1.5"
+  resolved "https://registry.yarnpkg.com/babel-loader/-/babel-loader-7.1.5.tgz#e3ee0cd7394aa557e013b02d3e492bfd07aa6d68"
   dependencies:
     find-cache-dir "^1.0.0"
     loader-utils "^1.0.2"
@@ -584,13 +757,13 @@ babel-plugin-check-es2015-constants@^6.22.0:
     babel-runtime "^6.22.0"
 
 babel-plugin-lodash@^3.3.2:
-  version "3.3.2"
-  resolved "https://registry.yarnpkg.com/babel-plugin-lodash/-/babel-plugin-lodash-3.3.2.tgz#da3a5b49ba27447f54463f6c4fa81396ccdd463f"
+  version "3.3.4"
+  resolved "https://registry.yarnpkg.com/babel-plugin-lodash/-/babel-plugin-lodash-3.3.4.tgz#4f6844358a1340baed182adbeffa8df9967bc196"
   dependencies:
-    babel-helper-module-imports "^7.0.0-beta.3"
-    babel-types "^6.26.0"
+    "@babel/helper-module-imports" "^7.0.0-beta.49"
+    "@babel/types" "^7.0.0-beta.49"
     glob "^7.1.1"
-    lodash "^4.17.4"
+    lodash "^4.17.10"
     require-package-name "^2.0.1"
 
 babel-plugin-syntax-async-functions@^6.8.0:
@@ -769,8 +942,8 @@ babel-plugin-transform-es2015-modules-amd@^6.22.0, babel-plugin-transform-es2015
     babel-template "^6.24.1"
 
 babel-plugin-transform-es2015-modules-commonjs@^6.23.0, babel-plugin-transform-es2015-modules-commonjs@^6.24.1:
-  version "6.26.0"
-  resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-modules-commonjs/-/babel-plugin-transform-es2015-modules-commonjs-6.26.0.tgz#0d8394029b7dc6abe1a97ef181e00758dd2e5d8a"
+  version "6.26.2"
+  resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-modules-commonjs/-/babel-plugin-transform-es2015-modules-commonjs-6.26.2.tgz#58a793863a9e7ca870bdc5a881117ffac27db6f3"
   dependencies:
     babel-plugin-transform-strict-mode "^6.24.1"
     babel-runtime "^6.26.0"
@@ -923,8 +1096,8 @@ babel-plugin-transform-strict-mode@^6.24.1:
     babel-types "^6.24.1"
 
 babel-preset-env@^1.6.1:
-  version "1.6.1"
-  resolved "https://registry.yarnpkg.com/babel-preset-env/-/babel-preset-env-1.6.1.tgz#a18b564cc9b9afdf4aae57ae3c1b0d99188e6f48"
+  version "1.7.0"
+  resolved "https://registry.yarnpkg.com/babel-preset-env/-/babel-preset-env-1.7.0.tgz#dea79fa4ebeb883cd35dab07e260c1c9c04df77a"
   dependencies:
     babel-plugin-check-es2015-constants "^6.22.0"
     babel-plugin-syntax-trailing-function-commas "^6.22.0"
@@ -953,7 +1126,7 @@ babel-preset-env@^1.6.1:
     babel-plugin-transform-es2015-unicode-regex "^6.22.0"
     babel-plugin-transform-exponentiation-operator "^6.22.0"
     babel-plugin-transform-regenerator "^6.22.0"
-    browserslist "^2.1.2"
+    browserslist "^3.2.6"
     invariant "^2.2.2"
     semver "^5.3.0"
 
@@ -1073,14 +1246,6 @@ babel-traverse@^6.24.1, babel-traverse@^6.26.0:
     invariant "^2.2.2"
     lodash "^4.17.4"
 
-babel-types@7.0.0-beta.3:
-  version "7.0.0-beta.3"
-  resolved "https://registry.yarnpkg.com/babel-types/-/babel-types-7.0.0-beta.3.tgz#cd927ca70e0ae8ab05f4aab83778cfb3e6eb20b4"
-  dependencies:
-    esutils "^2.0.2"
-    lodash "^4.2.0"
-    to-fast-properties "^2.0.0"
-
 babel-types@^6.19.0, babel-types@^6.24.1, babel-types@^6.26.0:
   version "6.26.0"
   resolved "https://registry.yarnpkg.com/babel-types/-/babel-types-6.26.0.tgz#a3b073f94ab49eb6fa55cd65227a334380632497"
@@ -1090,17 +1255,17 @@ babel-types@^6.19.0, babel-types@^6.24.1, babel-types@^6.26.0:
     lodash "^4.17.4"
     to-fast-properties "^1.0.3"
 
-babylon@7.0.0-beta.36:
-  version "7.0.0-beta.36"
-  resolved "https://registry.yarnpkg.com/babylon/-/babylon-7.0.0-beta.36.tgz#3a3683ba6a9a1e02b0aa507c8e63435e39305b9e"
+babylon@7.0.0-beta.44:
+  version "7.0.0-beta.44"
+  resolved "https://registry.yarnpkg.com/babylon/-/babylon-7.0.0-beta.44.tgz#89159e15e6e30c5096e22d738d8c0af8a0e8ca1d"
 
 babylon@^6.17.3, babylon@^6.18.0:
   version "6.18.0"
   resolved "https://registry.yarnpkg.com/babylon/-/babylon-6.18.0.tgz#af2f3b88fa6f5c1e4c634d1a0f8eac4f55b395e3"
 
-babylon@^7.0.0-beta.30:
-  version "7.0.0-beta.44"
-  resolved "https://registry.yarnpkg.com/babylon/-/babylon-7.0.0-beta.44.tgz#89159e15e6e30c5096e22d738d8c0af8a0e8ca1d"
+babylon@^7.0.0-beta.47:
+  version "7.0.0-beta.47"
+  resolved "https://registry.yarnpkg.com/babylon/-/babylon-7.0.0-beta.47.tgz#6d1fa44f0abec41ab7c780481e62fd9aafbdea80"
 
 balanced-match@^0.4.2:
   version "0.4.2"
@@ -1111,8 +1276,8 @@ balanced-match@^1.0.0:
   resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-1.0.0.tgz#89b4d199ab2bee49de164ea02b89ce462d71b767"
 
 base64-js@^1.0.2:
-  version "1.2.1"
-  resolved "https://registry.yarnpkg.com/base64-js/-/base64-js-1.2.1.tgz#a91947da1f4a516ea38e5b4ec0ec3773675e0886"
+  version "1.3.0"
+  resolved "https://registry.yarnpkg.com/base64-js/-/base64-js-1.3.0.tgz#cab1e6118f051095e58b5281aea8c1cd22bfc0e3"
 
 base@^0.11.1:
   version "0.11.2"
@@ -1131,8 +1296,8 @@ batch@0.6.1:
   resolved "https://registry.yarnpkg.com/batch/-/batch-0.6.1.tgz#dc34314f4e679318093fc760272525f94bf25c16"
 
 bcrypt-pbkdf@^1.0.0:
-  version "1.0.1"
-  resolved "https://registry.yarnpkg.com/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.1.tgz#63bc5dcb61331b92bc05fd528953c33462a06f8d"
+  version "1.0.2"
+  resolved "https://registry.yarnpkg.com/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.2.tgz#a4301d389b6a43f9b67ff3ca11a3f6637e360e9e"
   dependencies:
     tweetnacl "^0.14.3"
 
@@ -1194,21 +1359,9 @@ boom@2.x.x:
   dependencies:
     hoek "2.x.x"
 
-boom@4.x.x:
-  version "4.3.1"
-  resolved "https://registry.yarnpkg.com/boom/-/boom-4.3.1.tgz#4f8a3005cb4a7e3889f749030fd25b96e01d2e31"
-  dependencies:
-    hoek "4.x.x"
-
-boom@5.x.x:
-  version "5.2.0"
-  resolved "https://registry.yarnpkg.com/boom/-/boom-5.2.0.tgz#5dd9da6ee3a5f302077436290cb717d3f4a54e02"
-  dependencies:
-    hoek "4.x.x"
-
 brace-expansion@^1.1.7:
-  version "1.1.8"
-  resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-1.1.8.tgz#c07b211c7c952ec1f8efd51a77ef0d1d3990a292"
+  version "1.1.11"
+  resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-1.1.11.tgz#3c7fcbf529d87226f3d2f52b966ff5271eb441dd"
   dependencies:
     balanced-match "^1.0.0"
     concat-map "0.0.1"
@@ -1221,7 +1374,7 @@ braces@^1.8.2:
     preserve "^0.2.0"
     repeat-element "^1.1.2"
 
-braces@^2.2.2, braces@^2.3.1:
+braces@^2.2.2, braces@^2.3.0, braces@^2.3.1:
   version "2.3.2"
   resolved "https://registry.yarnpkg.com/braces/-/braces-2.3.2.tgz#5979fd3f14cd531565e5fa2df1abfff1dfaee729"
   dependencies:
@@ -1236,29 +1389,13 @@ braces@^2.2.2, braces@^2.3.1:
     split-string "^3.0.2"
     to-regex "^3.0.1"
 
-braces@^2.3.0:
-  version "2.3.0"
-  resolved "https://registry.yarnpkg.com/braces/-/braces-2.3.0.tgz#a46941cb5fb492156b3d6a656e06c35364e3e66e"
-  dependencies:
-    arr-flatten "^1.1.0"
-    array-unique "^0.3.2"
-    define-property "^1.0.0"
-    extend-shallow "^2.0.1"
-    fill-range "^4.0.0"
-    isobject "^3.0.1"
-    repeat-element "^1.1.2"
-    snapdragon "^0.8.1"
-    snapdragon-node "^2.0.1"
-    split-string "^3.0.2"
-    to-regex "^3.0.1"
-
 brorand@^1.0.1:
   version "1.1.0"
   resolved "https://registry.yarnpkg.com/brorand/-/brorand-1.1.0.tgz#12c25efe40a45e3c323eb8675a0a0ce57b22371f"
 
 browserify-aes@^1.0.0, browserify-aes@^1.0.4:
-  version "1.1.1"
-  resolved "https://registry.yarnpkg.com/browserify-aes/-/browserify-aes-1.1.1.tgz#38b7ab55edb806ff2dcda1a7f1620773a477c49f"
+  version "1.2.0"
+  resolved "https://registry.yarnpkg.com/browserify-aes/-/browserify-aes-1.2.0.tgz#326734642f403dabc3003209853bb70ad428ef48"
   dependencies:
     buffer-xor "^1.0.3"
     cipher-base "^1.0.0"
@@ -1268,20 +1405,21 @@ browserify-aes@^1.0.0, browserify-aes@^1.0.4:
     safe-buffer "^5.0.1"
 
 browserify-cipher@^1.0.0:
-  version "1.0.0"
-  resolved "https://registry.yarnpkg.com/browserify-cipher/-/browserify-cipher-1.0.0.tgz#9988244874bf5ed4e28da95666dcd66ac8fc363a"
+  version "1.0.1"
+  resolved "https://registry.yarnpkg.com/browserify-cipher/-/browserify-cipher-1.0.1.tgz#8d6474c1b870bfdabcd3bcfcc1934a10e94f15f0"
   dependencies:
     browserify-aes "^1.0.4"
     browserify-des "^1.0.0"
     evp_bytestokey "^1.0.0"
 
 browserify-des@^1.0.0:
-  version "1.0.0"
-  resolved "https://registry.yarnpkg.com/browserify-des/-/browserify-des-1.0.0.tgz#daa277717470922ed2fe18594118a175439721dd"
+  version "1.0.2"
+  resolved "https://registry.yarnpkg.com/browserify-des/-/browserify-des-1.0.2.tgz#3af4f1f59839403572f1c66204375f7a7f703e9c"
   dependencies:
     cipher-base "^1.0.1"
     des.js "^1.0.0"
     inherits "^2.0.1"
+    safe-buffer "^5.1.2"
 
 browserify-rsa@^4.0.0:
   version "4.0.1"
@@ -1315,16 +1453,31 @@ browserslist@^1.3.6, browserslist@^1.5.2, browserslist@^1.7.6:
     caniuse-db "^1.0.30000639"
     electron-to-chromium "^1.2.7"
 
-browserslist@^2.1.2:
-  version "2.11.3"
-  resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-2.11.3.tgz#fe36167aed1bbcde4827ebfe71347a2cc70b99b2"
+browserslist@^3.2.6:
+  version "3.2.8"
+  resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-3.2.8.tgz#b0005361d6471f0f5952797a76fc985f1f978fc6"
   dependencies:
-    caniuse-lite "^1.0.30000792"
-    electron-to-chromium "^1.3.30"
+    caniuse-lite "^1.0.30000844"
+    electron-to-chromium "^1.3.47"
 
-buffer-from@^1.0.0:
+buffer-alloc-unsafe@^1.1.0:
+  version "1.1.0"
+  resolved "https://registry.yarnpkg.com/buffer-alloc-unsafe/-/buffer-alloc-unsafe-1.1.0.tgz#bd7dc26ae2972d0eda253be061dba992349c19f0"
+
+buffer-alloc@^1.2.0:
+  version "1.2.0"
+  resolved "https://registry.yarnpkg.com/buffer-alloc/-/buffer-alloc-1.2.0.tgz#890dd90d923a873e08e10e5fd51a57e5b7cce0ec"
+  dependencies:
+    buffer-alloc-unsafe "^1.1.0"
+    buffer-fill "^1.0.0"
+
+buffer-fill@^1.0.0:
   version "1.0.0"
-  resolved "https://registry.yarnpkg.com/buffer-from/-/buffer-from-1.0.0.tgz#4cb8832d23612589b0406e9e2956c17f06fdf531"
+  resolved "https://registry.yarnpkg.com/buffer-fill/-/buffer-fill-1.0.0.tgz#f8f78b76789888ef39f205cd637f68e702122b2c"
+
+buffer-from@^1.0.0:
+  version "1.1.1"
+  resolved "https://registry.yarnpkg.com/buffer-from/-/buffer-from-1.1.1.tgz#32713bc028f75c02fdb710d7c7bcec1f2c6070ef"
 
 buffer-indexof@^1.0.0:
   version "1.1.1"
@@ -1342,7 +1495,7 @@ buffer@^4.3.0:
     ieee754 "^1.1.4"
     isarray "^1.0.0"
 
-builtin-modules@^1.0.0, builtin-modules@^1.1.1:
+builtin-modules@^1.0.0:
   version "1.1.1"
   resolved "https://registry.yarnpkg.com/builtin-modules/-/builtin-modules-1.1.1.tgz#270f076c5a72c02f5b65a47df94c5fe3a278892f"
 
@@ -1398,6 +1551,10 @@ cacheable-request@^2.1.1:
     normalize-url "2.0.1"
     responselike "1.0.2"
 
+call-me-maybe@^1.0.1:
+  version "1.0.1"
+  resolved "https://registry.yarnpkg.com/call-me-maybe/-/call-me-maybe-1.0.1.tgz#26d208ea89e37b5cbde60250a15f031c16a4d66b"
+
 caller-path@^0.1.0:
   version "0.1.0"
   resolved "https://registry.yarnpkg.com/caller-path/-/caller-path-0.1.0.tgz#94085ef63581ecd3daa92444a8fe94e82577751f"
@@ -1437,16 +1594,12 @@ caniuse-api@^1.5.2:
     lodash.uniq "^4.5.0"
 
 caniuse-db@^1.0.30000529, caniuse-db@^1.0.30000634, caniuse-db@^1.0.30000639:
-  version "1.0.30000795"
-  resolved "https://registry.yarnpkg.com/caniuse-db/-/caniuse-db-1.0.30000795.tgz#644f03fab00dd8bd1693e5e1e70d86b31c5cfece"
-
-caniuse-lite@^1.0.30000792:
-  version "1.0.30000792"
-  resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30000792.tgz#d0cea981f8118f3961471afbb43c9a1e5bbf0332"
+  version "1.0.30000875"
+  resolved "https://registry.yarnpkg.com/caniuse-db/-/caniuse-db-1.0.30000875.tgz#6f904fc89120de4029a9ca0f21d7ac3db89a0dce"
 
-caseless@~0.11.0:
-  version "0.11.0"
-  resolved "https://registry.yarnpkg.com/caseless/-/caseless-0.11.0.tgz#715b96ea9841593cc33067923f5ec60ebda4f7d7"
+caniuse-lite@^1.0.30000844:
+  version "1.0.30000874"
+  resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30000874.tgz#a641b1f1c420d58d9b132920ef6ba87bbdcd2223"
 
 caseless@~0.12.0:
   version "0.12.0"
@@ -1462,30 +1615,14 @@ chalk@^1.0.0, chalk@^1.1.1, chalk@^1.1.3:
     strip-ansi "^3.0.0"
     supports-color "^2.0.0"
 
-chalk@^2.0.0, chalk@^2.3.0:
-  version "2.3.0"
-  resolved "https://registry.yarnpkg.com/chalk/-/chalk-2.3.0.tgz#b5ea48efc9c1793dccc9b4767c93914d3f2d52ba"
-  dependencies:
-    ansi-styles "^3.1.0"
-    escape-string-regexp "^1.0.5"
-    supports-color "^4.0.0"
-
-chalk@^2.0.1, chalk@^2.3.2:
-  version "2.3.2"
-  resolved "https://registry.yarnpkg.com/chalk/-/chalk-2.3.2.tgz#250dc96b07491bfd601e648d66ddf5f60c7a5c65"
+chalk@^2.0.0, chalk@^2.0.1, chalk@^2.1.0, chalk@^2.3.0, chalk@^2.4.1:
+  version "2.4.1"
+  resolved "https://registry.yarnpkg.com/chalk/-/chalk-2.4.1.tgz#18c49ab16a037b6eb0152cc83e3471338215b66e"
   dependencies:
     ansi-styles "^3.2.1"
     escape-string-regexp "^1.0.5"
     supports-color "^5.3.0"
 
-chalk@^2.1.0:
-  version "2.3.1"
-  resolved "https://registry.yarnpkg.com/chalk/-/chalk-2.3.1.tgz#523fe2678aec7b04e8041909292fe8b17059b796"
-  dependencies:
-    ansi-styles "^3.2.0"
-    escape-string-regexp "^1.0.5"
-    supports-color "^5.2.0"
-
 chalk@~0.4.0:
   version "0.4.0"
   resolved "https://registry.yarnpkg.com/chalk/-/chalk-0.4.0.tgz#5199a3ddcd0c1efe23bc08c1b027b06176e0c64f"
@@ -1498,26 +1635,9 @@ chardet@^0.4.0:
   version "0.4.2"
   resolved "https://registry.yarnpkg.com/chardet/-/chardet-0.4.2.tgz#b5473b33dc97c424e5d98dc87d55d4d8a29c8bf2"
 
-chokidar@^2.0.0:
-  version "2.0.0"
-  resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-2.0.0.tgz#6686313c541d3274b2a5c01233342037948c911b"
-  dependencies:
-    anymatch "^2.0.0"
-    async-each "^1.0.0"
-    braces "^2.3.0"
-    glob-parent "^3.1.0"
-    inherits "^2.0.1"
-    is-binary-path "^1.0.0"
-    is-glob "^4.0.0"
-    normalize-path "^2.1.1"
-    path-is-absolute "^1.0.0"
-    readdirp "^2.0.0"
-  optionalDependencies:
-    fsevents "^1.0.0"
-
-chokidar@^2.0.2:
-  version "2.0.3"
-  resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-2.0.3.tgz#dcbd4f6cbb2a55b4799ba8a840ac527e5f4b1176"
+chokidar@^2.0.0, chokidar@^2.0.2:
+  version "2.0.4"
+  resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-2.0.4.tgz#356ff4e2b0e8e43e322d18a372460bbcf3accd26"
   dependencies:
     anymatch "^2.0.0"
     async-each "^1.0.0"
@@ -1526,20 +1646,23 @@ chokidar@^2.0.2:
     inherits "^2.0.1"
     is-binary-path "^1.0.0"
     is-glob "^4.0.0"
+    lodash.debounce "^4.0.8"
     normalize-path "^2.1.1"
     path-is-absolute "^1.0.0"
     readdirp "^2.0.0"
-    upath "^1.0.0"
+    upath "^1.0.5"
   optionalDependencies:
-    fsevents "^1.1.2"
+    fsevents "^1.2.2"
 
 chownr@^1.0.1:
   version "1.0.1"
   resolved "https://registry.yarnpkg.com/chownr/-/chownr-1.0.1.tgz#e2a75042a9551908bebd25b8523d5f9769d79181"
 
-chrome-trace-event@^0.1.1:
-  version "0.1.2"
-  resolved "https://registry.yarnpkg.com/chrome-trace-event/-/chrome-trace-event-0.1.2.tgz#90f36885d5345a50621332f0717b595883d5d982"
+chrome-trace-event@^1.0.0:
+  version "1.0.0"
+  resolved "https://registry.yarnpkg.com/chrome-trace-event/-/chrome-trace-event-1.0.0.tgz#45a91bd2c20c9411f0963b5aaeb9a1b95e09cc48"
+  dependencies:
+    tslib "^1.9.0"
 
 cipher-base@^1.0.0, cipher-base@^1.0.1, cipher-base@^1.0.3:
   version "1.0.4"
@@ -1568,8 +1691,8 @@ class-utils@^0.3.5:
     static-extend "^0.1.1"
 
 classnames@^2.2.4:
-  version "2.2.5"
-  resolved "https://registry.yarnpkg.com/classnames/-/classnames-2.2.5.tgz#fb3801d453467649ef3603c7d61a02bd129bde6d"
+  version "2.2.6"
+  resolved "https://registry.yarnpkg.com/classnames/-/classnames-2.2.6.tgz#43935bffdd291f326dad0a205309b38d00f650ce"
 
 cli-cursor@^1.0.2:
   version "1.0.2"
@@ -1613,8 +1736,8 @@ cliui@^3.2.0:
     wrap-ansi "^2.0.0"
 
 cliui@^4.0.0:
-  version "4.0.0"
-  resolved "https://registry.yarnpkg.com/cliui/-/cliui-4.0.0.tgz#743d4650e05f36d1ed2575b59638d87322bfbbcc"
+  version "4.1.0"
+  resolved "https://registry.yarnpkg.com/cliui/-/cliui-4.1.0.tgz#348422dbe82d800b3022eef4f6ac10bf2e4d1b49"
   dependencies:
     string-width "^2.1.1"
     strip-ansi "^4.0.0"
@@ -1648,8 +1771,8 @@ clone-stats@^1.0.0:
   resolved "https://registry.yarnpkg.com/clone-stats/-/clone-stats-1.0.0.tgz#b3782dff8bb5474e18b9b6bf0fdfe782f8777680"
 
 clone@^1.0.0, clone@^1.0.2:
-  version "1.0.3"
-  resolved "https://registry.yarnpkg.com/clone/-/clone-1.0.3.tgz#298d7e2231660f40c003c2ed3140decf3f53085f"
+  version "1.0.4"
+  resolved "https://registry.yarnpkg.com/clone/-/clone-1.0.4.tgz#da309cc263df15994c688ca902179ca3c7cd7c7e"
 
 clone@^2.1.1:
   version "2.1.2"
@@ -1685,12 +1808,16 @@ collection-visit@^1.0.0:
     object-visit "^1.0.0"
 
 color-convert@^1.3.0, color-convert@^1.9.0:
-  version "1.9.1"
-  resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-1.9.1.tgz#c1261107aeb2f294ebffec9ed9ecad529a6097ed"
+  version "1.9.2"
+  resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-1.9.2.tgz#49881b8fba67df12a96bdf3f56c0aab9e7913147"
   dependencies:
-    color-name "^1.1.1"
+    color-name "1.1.1"
 
-color-name@^1.0.0, color-name@^1.1.1:
+color-name@1.1.1:
+  version "1.1.1"
+  resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.1.tgz#4b1415304cf50028ea81643643bd82ea05803689"
+
+color-name@^1.0.0:
   version "1.1.3"
   resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.3.tgz#a7d0558bd89c42f795dd42328f740831ca53bc25"
 
@@ -1721,20 +1848,24 @@ colors@1.0.3:
   resolved "https://registry.yarnpkg.com/colors/-/colors-1.0.3.tgz#0433f44d809680fdeb60ed260f1b0c262e82a40b"
 
 colors@^1.1.2:
-  version "1.2.1"
-  resolved "https://registry.yarnpkg.com/colors/-/colors-1.2.1.tgz#f4a3d302976aaf042356ba1ade3b1a2c62d9d794"
+  version "1.3.1"
+  resolved "https://registry.yarnpkg.com/colors/-/colors-1.3.1.tgz#4accdb89cf2cabc7f982771925e9468784f32f3d"
 
 colors@~1.1.2:
   version "1.1.2"
   resolved "https://registry.yarnpkg.com/colors/-/colors-1.1.2.tgz#168a4701756b6a7f51a12ce0c97bfa28c084ed63"
 
-combined-stream@^1.0.5, combined-stream@~1.0.5:
-  version "1.0.5"
-  resolved "https://registry.yarnpkg.com/combined-stream/-/combined-stream-1.0.5.tgz#938370a57b4a51dea2c77c15d5c5fdf895164009"
+combined-stream@1.0.6, combined-stream@^1.0.5, combined-stream@~1.0.5:
+  version "1.0.6"
+  resolved "https://registry.yarnpkg.com/combined-stream/-/combined-stream-1.0.6.tgz#723e7df6e801ac5613113a7e445a9b69cb632818"
   dependencies:
     delayed-stream "~1.0.0"
 
-commander@2, commander@^2.9.0, commander@~2.13.0:
+commander@2:
+  version "2.17.1"
+  resolved "https://registry.yarnpkg.com/commander/-/commander-2.17.1.tgz#bd77ab7de6de94205ceacc72f1716d29f20a77bf"
+
+commander@~2.13.0:
   version "2.13.0"
   resolved "https://registry.yarnpkg.com/commander/-/commander-2.13.0.tgz#6964bca67685df7c1f1430c584f07d7597885b9c"
 
@@ -1746,29 +1877,29 @@ component-emitter@^1.2.1:
   version "1.2.1"
   resolved "https://registry.yarnpkg.com/component-emitter/-/component-emitter-1.2.1.tgz#137918d6d78283f7df7a6b7c5a63e140e69425e6"
 
-compressible@~2.0.11:
-  version "2.0.12"
-  resolved "https://registry.yarnpkg.com/compressible/-/compressible-2.0.12.tgz#c59a5c99db76767e9876500e271ef63b3493bd66"
+compressible@~2.0.14:
+  version "2.0.14"
+  resolved "https://registry.yarnpkg.com/compressible/-/compressible-2.0.14.tgz#326c5f507fbb055f54116782b969a81b67a29da7"
   dependencies:
-    mime-db ">= 1.30.0 < 2"
+    mime-db ">= 1.34.0 < 2"
 
 compression@^1.5.2:
-  version "1.7.1"
-  resolved "https://registry.yarnpkg.com/compression/-/compression-1.7.1.tgz#eff2603efc2e22cf86f35d2eb93589f9875373db"
+  version "1.7.3"
+  resolved "https://registry.yarnpkg.com/compression/-/compression-1.7.3.tgz#27e0e176aaf260f7f2c2813c3e440adb9f1993db"
   dependencies:
-    accepts "~1.3.4"
+    accepts "~1.3.5"
     bytes "3.0.0"
-    compressible "~2.0.11"
+    compressible "~2.0.14"
     debug "2.6.9"
     on-headers "~1.0.1"
-    safe-buffer "5.1.1"
+    safe-buffer "5.1.2"
     vary "~1.1.2"
 
 concat-map@0.0.1:
   version "0.0.1"
   resolved "https://registry.yarnpkg.com/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b"
 
-concat-stream@^1.5.0:
+concat-stream@^1.5.0, concat-stream@^1.6.0:
   version "1.6.2"
   resolved "https://registry.yarnpkg.com/concat-stream/-/concat-stream-1.6.2.tgz#904bdf194cd3122fc675c77fc4ac3d4ff0fd1a34"
   dependencies:
@@ -1777,14 +1908,6 @@ concat-stream@^1.5.0:
     readable-stream "^2.2.2"
     typedarray "^0.0.6"
 
-concat-stream@^1.6.0:
-  version "1.6.0"
-  resolved "https://registry.yarnpkg.com/concat-stream/-/concat-stream-1.6.0.tgz#0aac662fd52be78964d5532f694784e70110acf7"
-  dependencies:
-    inherits "^2.0.3"
-    readable-stream "^2.2.2"
-    typedarray "^0.0.6"
-
 connect-history-api-fallback@^1.3.0:
   version "1.5.0"
   resolved "https://registry.yarnpkg.com/connect-history-api-fallback/-/connect-history-api-fallback-1.5.0.tgz#b06873934bc5e344fef611a196a6faae0aee015a"
@@ -1815,7 +1938,7 @@ content-type@~1.0.4:
   version "1.0.4"
   resolved "https://registry.yarnpkg.com/content-type/-/content-type-1.0.4.tgz#e138cc75e040c727b1966fe5e5f8c9aee256fe3b"
 
-convert-source-map@^1.5.0:
+convert-source-map@^1.5.1:
   version "1.5.1"
   resolved "https://registry.yarnpkg.com/convert-source-map/-/convert-source-map-1.5.1.tgz#b8278097b9bc229365de5c62cf5fcaed8b5599e5"
 
@@ -1864,37 +1987,34 @@ core-js@^1.0.0:
   version "1.2.7"
   resolved "https://registry.yarnpkg.com/core-js/-/core-js-1.2.7.tgz#652294c14651db28fa93bd2d5ff2983a4f08c636"
 
-core-js@^2.4.0, core-js@^2.5.0:
-  version "2.5.3"
-  resolved "https://registry.yarnpkg.com/core-js/-/core-js-2.5.3.tgz#8acc38345824f16d8365b7c9b4259168e8ed603e"
-
-core-js@^2.4.1:
-  version "2.5.5"
-  resolved "https://registry.yarnpkg.com/core-js/-/core-js-2.5.5.tgz#b14dde936c640c0579a6b50cabcc132dd6127e3b"
+core-js@^2.4.0, core-js@^2.4.1, core-js@^2.5.0:
+  version "2.5.7"
+  resolved "https://registry.yarnpkg.com/core-js/-/core-js-2.5.7.tgz#f972608ff0cead68b841a16a932d0b183791814e"
 
 core-util-is@1.0.2, core-util-is@~1.0.0:
   version "1.0.2"
   resolved "https://registry.yarnpkg.com/core-util-is/-/core-util-is-1.0.2.tgz#b5fd54220aa2bc5ab57aab7140c940754503c1a7"
 
 create-ecdh@^4.0.0:
-  version "4.0.0"
-  resolved "https://registry.yarnpkg.com/create-ecdh/-/create-ecdh-4.0.0.tgz#888c723596cdf7612f6498233eebd7a35301737d"
+  version "4.0.3"
+  resolved "https://registry.yarnpkg.com/create-ecdh/-/create-ecdh-4.0.3.tgz#c9111b6f33045c4697f144787f9254cdc77c45ff"
   dependencies:
     bn.js "^4.1.0"
     elliptic "^6.0.0"
 
 create-hash@^1.1.0, create-hash@^1.1.2:
-  version "1.1.3"
-  resolved "https://registry.yarnpkg.com/create-hash/-/create-hash-1.1.3.tgz#606042ac8b9262750f483caddab0f5819172d8fd"
+  version "1.2.0"
+  resolved "https://registry.yarnpkg.com/create-hash/-/create-hash-1.2.0.tgz#889078af11a63756bcfb59bd221996be3a9ef196"
   dependencies:
     cipher-base "^1.0.1"
     inherits "^2.0.1"
-    ripemd160 "^2.0.0"
+    md5.js "^1.3.4"
+    ripemd160 "^2.0.1"
     sha.js "^2.4.0"
 
 create-hmac@^1.1.0, create-hmac@^1.1.2, create-hmac@^1.1.4:
-  version "1.1.6"
-  resolved "https://registry.yarnpkg.com/create-hmac/-/create-hmac-1.1.6.tgz#acb9e221a4e17bdb076e90657c42b93e3726cf06"
+  version "1.1.7"
+  resolved "https://registry.yarnpkg.com/create-hmac/-/create-hmac-1.1.7.tgz#69170c78b3ab957147b2b8b04572e47ead2243ff"
   dependencies:
     cipher-base "^1.0.3"
     create-hash "^1.1.0"
@@ -1903,14 +2023,6 @@ create-hmac@^1.1.0, create-hmac@^1.1.2, create-hmac@^1.1.4:
     safe-buffer "^5.0.1"
     sha.js "^2.4.8"
 
-create-react-class@^15.6.0:
-  version "15.6.2"
-  resolved "https://registry.yarnpkg.com/create-react-class/-/create-react-class-15.6.2.tgz#cf1ed15f12aad7f14ef5f2dfe05e6c42f91ef02a"
-  dependencies:
-    fbjs "^0.8.9"
-    loose-envify "^1.3.1"
-    object-assign "^4.1.1"
-
 cross-spawn@^3.0.0:
   version "3.0.1"
   resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-3.0.1.tgz#1256037ecb9f0c5f79e3d6ef135e30770184b982"
@@ -1942,12 +2054,6 @@ cryptiles@2.x.x:
   dependencies:
     boom "2.x.x"
 
-cryptiles@3.x.x:
-  version "3.1.2"
-  resolved "https://registry.yarnpkg.com/cryptiles/-/cryptiles-3.1.2.tgz#a89fbb220f5ce25ec56e8c4aa8a4fd7b5b0d29fe"
-  dependencies:
-    boom "5.x.x"
-
 crypto-browserify@^3.11.0:
   version "3.12.0"
   resolved "https://registry.yarnpkg.com/crypto-browserify/-/crypto-browserify-3.12.0.tgz#396cf9f3137f03e4b8e532c58f698254e00f80ec"
@@ -1969,8 +2075,8 @@ css-color-names@0.0.4:
   resolved "https://registry.yarnpkg.com/css-color-names/-/css-color-names-0.0.4.tgz#808adc2e79cf84738069b646cb20ec27beb629e0"
 
 css-loader@^0.28.7:
-  version "0.28.9"
-  resolved "https://registry.yarnpkg.com/css-loader/-/css-loader-0.28.9.tgz#68064b85f4e271d7ce4c48a58300928e535d1c95"
+  version "0.28.11"
+  resolved "https://registry.yarnpkg.com/css-loader/-/css-loader-0.28.11.tgz#c3f9864a700be2711bb5a2462b2389b1a392dab7"
   dependencies:
     babel-code-frame "^6.26.0"
     css-selector-tokenizer "^0.7.0"
@@ -2082,7 +2188,11 @@ d3-collection@1, d3-collection@1.0.4:
   version "1.0.4"
   resolved "https://registry.yarnpkg.com/d3-collection/-/d3-collection-1.0.4.tgz#342dfd12837c90974f33f1cc0a785aea570dcdc2"
 
-d3-color@1, d3-color@1.0.3:
+d3-color@1:
+  version "1.2.0"
+  resolved "https://registry.yarnpkg.com/d3-color/-/d3-color-1.2.0.tgz#d1ea19db5859c86854586276ec892cf93148459a"
+
+d3-color@1.0.3:
   version "1.0.3"
   resolved "https://registry.yarnpkg.com/d3-color/-/d3-color-1.0.3.tgz#bc7643fca8e53a8347e2fbdaffa236796b58509b"
 
@@ -2118,7 +2228,11 @@ d3-force@1.1.0:
     d3-quadtree "1"
     d3-timer "1"
 
-d3-format@1, d3-format@1.2.2:
+d3-format@1:
+  version "1.3.0"
+  resolved "https://registry.yarnpkg.com/d3-format/-/d3-format-1.3.0.tgz#a3ac44269a2011cdb87c7b5693040c18cddfff11"
+
+d3-format@1.2.2:
   version "1.2.2"
   resolved "https://registry.yarnpkg.com/d3-format/-/d3-format-1.2.2.tgz#1a39c479c8a57fe5051b2e67a3bee27061a74e7a"
 
@@ -2132,7 +2246,13 @@ d3-hierarchy@1.1.5:
   version "1.1.5"
   resolved "https://registry.yarnpkg.com/d3-hierarchy/-/d3-hierarchy-1.1.5.tgz#a1c845c42f84a206bcf1c01c01098ea4ddaa7a26"
 
-d3-interpolate@1, d3-interpolate@1.1.6:
+d3-interpolate@1:
+  version "1.2.0"
+  resolved "https://registry.yarnpkg.com/d3-interpolate/-/d3-interpolate-1.2.0.tgz#40d81bd8e959ff021c5ea7545bc79b8d22331c41"
+  dependencies:
+    d3-color "1"
+
+d3-interpolate@1.1.6:
   version "1.1.6"
   resolved "https://registry.yarnpkg.com/d3-interpolate/-/d3-interpolate-1.1.6.tgz#2cf395ae2381804df08aa1bf766b7f97b5f68fb6"
   dependencies:
@@ -2179,11 +2299,7 @@ d3-scale@1.0.7:
     d3-time "1"
     d3-time-format "2"
 
-d3-selection@1, d3-selection@^1.1.0:
-  version "1.2.0"
-  resolved "https://registry.yarnpkg.com/d3-selection/-/d3-selection-1.2.0.tgz#1b8ec1c7cedadfb691f2ba20a4a3cfbeb71bbc88"
-
-d3-selection@1.3.0:
+d3-selection@1, d3-selection@1.3.0, d3-selection@^1.1.0:
   version "1.3.0"
   resolved "https://registry.yarnpkg.com/d3-selection/-/d3-selection-1.3.0.tgz#d53772382d3dc4f7507bfb28bcd2d6aed2a0ad6d"
 
@@ -2267,6 +2383,12 @@ d3@^4.10.0:
     d3-voronoi "1.1.2"
     d3-zoom "1.7.1"
 
+d@1:
+  version "1.0.0"
+  resolved "https://registry.yarnpkg.com/d/-/d-1.0.0.tgz#754bb5bfe55451da69a58b94d45f4c5b0462d58f"
+  dependencies:
+    es5-ext "^0.10.9"
+
 dargs@^5.1.0:
   version "5.1.0"
   resolved "https://registry.yarnpkg.com/dargs/-/dargs-5.1.0.tgz#ec7ea50c78564cd36c9d5ec18f66329fade27829"
@@ -2285,17 +2407,17 @@ date-now@^0.1.4:
   version "0.1.4"
   resolved "https://registry.yarnpkg.com/date-now/-/date-now-0.1.4.tgz#eaf439fd4d4848ad74e5cc7dbef200672b9e345b"
 
-dateformat@^3.0.2:
+dateformat@^3.0.3:
   version "3.0.3"
   resolved "https://registry.yarnpkg.com/dateformat/-/dateformat-3.0.3.tgz#a6e37499a4d9a9cf85ef5872044d62901c9889ae"
 
-debug@2.6.9, debug@^2.2.0, debug@^2.3.3, debug@^2.6.6, debug@^2.6.8, debug@^2.6.9:
+debug@2.6.9, debug@^2.1.2, debug@^2.2.0, debug@^2.3.3, debug@^2.6.6, debug@^2.6.8, debug@^2.6.9:
   version "2.6.9"
   resolved "https://registry.yarnpkg.com/debug/-/debug-2.6.9.tgz#5d128515df134ff327e90a4c93f4e077a536341f"
   dependencies:
     ms "2.0.0"
 
-debug@^3.0.1, debug@^3.1.0:
+debug@^3.1.0:
   version "3.1.0"
   resolved "https://registry.yarnpkg.com/debug/-/debug-3.1.0.tgz#5bb5a0672628b64149566ba16819e61518c67261"
   dependencies:
@@ -2319,9 +2441,9 @@ deep-equal@^1.0.1:
   version "1.0.1"
   resolved "https://registry.yarnpkg.com/deep-equal/-/deep-equal-1.0.1.tgz#f5d260292b660e084eff4cdbc9f08ad3247448b5"
 
-deep-extend@^0.4.0, deep-extend@~0.4.0:
-  version "0.4.2"
-  resolved "https://registry.yarnpkg.com/deep-extend/-/deep-extend-0.4.2.tgz#48b699c27e334bf89f10892be432f6e4c7d34a7f"
+deep-extend@^0.6.0:
+  version "0.6.0"
+  resolved "https://registry.yarnpkg.com/deep-extend/-/deep-extend-0.6.0.tgz#c4fa7c95404a17a9c3e8ca7e1537312b736330ac"
 
 deep-is@~0.1.3:
   version "0.1.3"
@@ -2396,7 +2518,7 @@ depd@1.1.1:
   version "1.1.1"
   resolved "https://registry.yarnpkg.com/depd/-/depd-1.1.1.tgz#5783b4e1c459f06fa5ca27f991f3d06e7a310359"
 
-depd@~1.1.1:
+depd@~1.1.1, depd@~1.1.2:
   version "1.1.2"
   resolved "https://registry.yarnpkg.com/depd/-/depd-1.1.2.tgz#9bcd52e14c097763e749b274c4346ed2e560b5a9"
 
@@ -2434,20 +2556,27 @@ diff@^3.3.1, diff@^3.5.0:
   resolved "https://registry.yarnpkg.com/diff/-/diff-3.5.0.tgz#800c0dd1e0a8bfbc95835c202ad220fe317e5a12"
 
 diffie-hellman@^5.0.0:
-  version "5.0.2"
-  resolved "https://registry.yarnpkg.com/diffie-hellman/-/diffie-hellman-5.0.2.tgz#b5835739270cfe26acf632099fded2a07f209e5e"
+  version "5.0.3"
+  resolved "https://registry.yarnpkg.com/diffie-hellman/-/diffie-hellman-5.0.3.tgz#40e8ee98f55a2149607146921c63e1ae5f3d2875"
   dependencies:
     bn.js "^4.1.0"
     miller-rabin "^4.0.0"
     randombytes "^2.0.0"
 
+dir-glob@^2.0.0:
+  version "2.0.0"
+  resolved "https://registry.yarnpkg.com/dir-glob/-/dir-glob-2.0.0.tgz#0b205d2b6aef98238ca286598a8204d29d0a0034"
+  dependencies:
+    arrify "^1.0.1"
+    path-type "^3.0.0"
+
 disposables@^1.0.1:
   version "1.0.2"
   resolved "https://registry.yarnpkg.com/disposables/-/disposables-1.0.2.tgz#36c6a674475f55a2d6913567a601444e487b4b6e"
 
-dnd-core@^2.5.4:
-  version "2.5.4"
-  resolved "https://registry.yarnpkg.com/dnd-core/-/dnd-core-2.5.4.tgz#0c70a8dcbb609c0b222e275fcae9fa83e5897397"
+dnd-core@^2.6.0:
+  version "2.6.0"
+  resolved "https://registry.yarnpkg.com/dnd-core/-/dnd-core-2.6.0.tgz#12bad66d58742c6e5f7cf2943fb6859440f809c4"
   dependencies:
     asap "^2.0.6"
     invariant "^2.0.0"
@@ -2458,7 +2587,7 @@ dns-equal@^1.0.0:
   version "1.0.0"
   resolved "https://registry.yarnpkg.com/dns-equal/-/dns-equal-1.0.0.tgz#b39e7f1da6eb0a75ba9c17324b34753c47e0654d"
 
-dns-packet@^1.0.1:
+dns-packet@^1.3.1:
   version "1.3.1"
   resolved "https://registry.yarnpkg.com/dns-packet/-/dns-packet-1.3.1.tgz#12aa426981075be500b910eedcd0b47dd7deda5a"
   dependencies:
@@ -2478,7 +2607,7 @@ doctrine@1.5.0:
     esutils "^2.0.2"
     isarray "^1.0.0"
 
-doctrine@^2.0.2, doctrine@^2.1.0:
+doctrine@^2.1.0:
   version "2.1.0"
   resolved "https://registry.yarnpkg.com/doctrine/-/doctrine-2.1.0.tgz#5cd01fc101621b42c4cd7f5d1a66243716d3f39d"
   dependencies:
@@ -2492,8 +2621,8 @@ dom-serializer@0:
     entities "~1.1.1"
 
 domain-browser@^1.1.1:
-  version "1.1.7"
-  resolved "https://registry.yarnpkg.com/domain-browser/-/domain-browser-1.1.7.tgz#867aa4b093faa05f1de08c06f4d7b21fdf8698bc"
+  version "1.2.0"
+  resolved "https://registry.yarnpkg.com/domain-browser/-/domain-browser-1.2.0.tgz#3d31f50191a6749dd1375a7f522e823d42e54eda"
 
 domelementtype@1, domelementtype@^1.3.0:
   version "1.3.0"
@@ -2504,8 +2633,8 @@ domelementtype@~1.1.1:
   resolved "https://registry.yarnpkg.com/domelementtype/-/domelementtype-1.1.3.tgz#bd28773e2642881aec51544924299c5cd822185b"
 
 domhandler@^2.3.0:
-  version "2.4.1"
-  resolved "https://registry.yarnpkg.com/domhandler/-/domhandler-2.4.1.tgz#892e47000a99be55bbf3774ffea0561d8879c259"
+  version "2.4.2"
+  resolved "https://registry.yarnpkg.com/domhandler/-/domhandler-2.4.2.tgz#8805097e933d65e85546f726d60f5eb88b44f803"
   dependencies:
     domelementtype "1"
 
@@ -2524,9 +2653,9 @@ duplexer3@^0.1.4:
   version "0.1.4"
   resolved "https://registry.yarnpkg.com/duplexer3/-/duplexer3-0.1.4.tgz#ee01dd1cac0ed3cbc7fdbea37dc0a8f1ce002ce2"
 
-duplexify@^3.4.2, duplexify@^3.5.3:
-  version "3.5.4"
-  resolved "https://registry.yarnpkg.com/duplexify/-/duplexify-3.5.4.tgz#4bb46c1796eabebeec4ca9a2e66b808cb7a3d8b4"
+duplexify@^3.4.2, duplexify@^3.6.0:
+  version "3.6.0"
+  resolved "https://registry.yarnpkg.com/duplexify/-/duplexify-3.6.0.tgz#592903f5d80b38d037220541264d69a198fb3410"
   dependencies:
     end-of-stream "^1.0.0"
     inherits "^2.0.1"
@@ -2534,10 +2663,11 @@ duplexify@^3.4.2, duplexify@^3.5.3:
     stream-shift "^1.0.0"
 
 ecc-jsbn@~0.1.1:
-  version "0.1.1"
-  resolved "https://registry.yarnpkg.com/ecc-jsbn/-/ecc-jsbn-0.1.1.tgz#0fc73a9ed5f0d53c38193398523ef7e543777505"
+  version "0.1.2"
+  resolved "https://registry.yarnpkg.com/ecc-jsbn/-/ecc-jsbn-0.1.2.tgz#3a83a904e54353287874c564b7549386849a98c9"
   dependencies:
     jsbn "~0.1.0"
+    safer-buffer "^2.1.0"
 
 editions@^1.3.3:
   version "1.3.4"
@@ -2547,13 +2677,13 @@ ee-first@1.1.1:
   version "1.1.1"
   resolved "https://registry.yarnpkg.com/ee-first/-/ee-first-1.1.1.tgz#590c61156b0ae2f4f0255732a158b266bc56b21d"
 
-ejs@^2.3.1:
-  version "2.5.8"
-  resolved "https://registry.yarnpkg.com/ejs/-/ejs-2.5.8.tgz#2ab6954619f225e6193b7ac5f7c39c48fefe4380"
+ejs@^2.5.9:
+  version "2.6.1"
+  resolved "https://registry.yarnpkg.com/ejs/-/ejs-2.6.1.tgz#498ec0d495655abc6f23cd61868d926464071aa0"
 
-electron-to-chromium@^1.2.7, electron-to-chromium@^1.3.30:
-  version "1.3.31"
-  resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.3.31.tgz#00d832cba9fe2358652b0c48a8816c8e3a037e9f"
+electron-to-chromium@^1.2.7, electron-to-chromium@^1.3.47:
+  version "1.3.55"
+  resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.3.55.tgz#f150e10b20b77d9d41afcca312efe0c3b1a7fdce"
 
 elegant-spinner@^1.0.1:
   version "1.0.1"
@@ -2575,7 +2705,7 @@ emojis-list@^2.0.0:
   version "2.1.0"
   resolved "https://registry.yarnpkg.com/emojis-list/-/emojis-list-2.1.0.tgz#4daa4d9db00f9819880c79fa457ae5b09a1fd389"
 
-encodeurl@~1.0.1:
+encodeurl@~1.0.2:
   version "1.0.2"
   resolved "https://registry.yarnpkg.com/encodeurl/-/encodeurl-1.0.2.tgz#ad3ff4c86ec2d029322f5a02c3a9a606c95b3f59"
 
@@ -2591,9 +2721,9 @@ end-of-stream@^1.0.0, end-of-stream@^1.1.0:
   dependencies:
     once "^1.4.0"
 
-enhanced-resolve@^4.0.0:
-  version "4.0.0"
-  resolved "https://registry.yarnpkg.com/enhanced-resolve/-/enhanced-resolve-4.0.0.tgz#e34a6eaa790f62fccd71d93959f56b2b432db10a"
+enhanced-resolve@^4.0.0, enhanced-resolve@^4.1.0:
+  version "4.1.0"
+  resolved "https://registry.yarnpkg.com/enhanced-resolve/-/enhanced-resolve-4.1.0.tgz#41c7e0bfdfe74ac1ffe1e57ad6a5c6c9f3742a7f"
   dependencies:
     graceful-fs "^4.1.2"
     memory-fs "^0.4.0"
@@ -2603,25 +2733,19 @@ entities@^1.1.1, entities@~1.1.1:
   version "1.1.1"
   resolved "https://registry.yarnpkg.com/entities/-/entities-1.1.1.tgz#6e5c2d0a5621b5dadaecef80b90edfb5cd7772f0"
 
-envinfo@^4.4.2:
-  version "4.4.2"
-  resolved "https://registry.yarnpkg.com/envinfo/-/envinfo-4.4.2.tgz#472c49f3a8b9bca73962641ce7cb692bf623cd1c"
+envinfo@^5.7.0:
+  version "5.10.0"
+  resolved "https://registry.yarnpkg.com/envinfo/-/envinfo-5.10.0.tgz#503a9774ae15b93ea68bdfae2ccd6306624ea6df"
 
-errno@^0.1.3:
-  version "0.1.6"
-  resolved "https://registry.yarnpkg.com/errno/-/errno-0.1.6.tgz#c386ce8a6283f14fc09563b71560908c9bf53026"
-  dependencies:
-    prr "~1.0.1"
-
-errno@~0.1.7:
+errno@^0.1.3, errno@~0.1.7:
   version "0.1.7"
   resolved "https://registry.yarnpkg.com/errno/-/errno-0.1.7.tgz#4684d71779ad39af177e3f007996f7c67c852618"
   dependencies:
     prr "~1.0.1"
 
 error-ex@^1.2.0, error-ex@^1.3.1:
-  version "1.3.1"
-  resolved "https://registry.yarnpkg.com/error-ex/-/error-ex-1.3.1.tgz#f855a86ce61adc4e8621c3cda21e7a7612c3a8dc"
+  version "1.3.2"
+  resolved "https://registry.yarnpkg.com/error-ex/-/error-ex-1.3.2.tgz#b4ac40648107fdcdcfae242f428bea8a14d4f1bf"
   dependencies:
     is-arrayish "^0.2.1"
 
@@ -2633,8 +2757,8 @@ error@^7.0.2:
     xtend "~4.0.0"
 
 es-abstract@^1.7.0:
-  version "1.10.0"
-  resolved "https://registry.yarnpkg.com/es-abstract/-/es-abstract-1.10.0.tgz#1ecb36c197842a00d8ee4c2dfd8646bb97d60864"
+  version "1.12.0"
+  resolved "https://registry.yarnpkg.com/es-abstract/-/es-abstract-1.12.0.tgz#9dbbdd27c6856f0001421ca18782d786bf8a6165"
   dependencies:
     es-to-primitive "^1.1.1"
     function-bind "^1.1.1"
@@ -2650,6 +2774,29 @@ es-to-primitive@^1.1.1:
     is-date-object "^1.0.1"
     is-symbol "^1.0.1"
 
+es5-ext@^0.10.35, es5-ext@^0.10.9, es5-ext@~0.10.14:
+  version "0.10.45"
+  resolved "https://registry.yarnpkg.com/es5-ext/-/es5-ext-0.10.45.tgz#0bfdf7b473da5919d5adf3bd25ceb754fccc3653"
+  dependencies:
+    es6-iterator "~2.0.3"
+    es6-symbol "~3.1.1"
+    next-tick "1"
+
+es6-iterator@~2.0.3:
+  version "2.0.3"
+  resolved "https://registry.yarnpkg.com/es6-iterator/-/es6-iterator-2.0.3.tgz#a7de889141a05a94b0854403b2d0a0fbfa98f3b7"
+  dependencies:
+    d "1"
+    es5-ext "^0.10.35"
+    es6-symbol "^3.1.1"
+
+es6-symbol@^3.1.1, es6-symbol@~3.1.1:
+  version "3.1.1"
+  resolved "https://registry.yarnpkg.com/es6-symbol/-/es6-symbol-3.1.1.tgz#bf00ef4fdab6ba1b46ecb7b629b4c7ed5715cc77"
+  dependencies:
+    d "1"
+    es5-ext "~0.10.14"
+
 escape-html@~1.0.3:
   version "1.0.3"
   resolved "https://registry.yarnpkg.com/escape-html/-/escape-html-1.0.3.tgz#0258eae4d3d0c0974de1c169188ef0051d1d1988"
@@ -2681,58 +2828,72 @@ eslint-loader@^1.9.0:
     object-hash "^1.1.4"
     rimraf "^2.6.1"
 
-eslint-module-utils@^2.1.1:
-  version "2.1.1"
-  resolved "https://registry.yarnpkg.com/eslint-module-utils/-/eslint-module-utils-2.1.1.tgz#abaec824177613b8a95b299639e1b6facf473449"
+eslint-module-utils@^2.2.0:
+  version "2.2.0"
+  resolved "https://registry.yarnpkg.com/eslint-module-utils/-/eslint-module-utils-2.2.0.tgz#b270362cd88b1a48ad308976ce7fa54e98411746"
   dependencies:
     debug "^2.6.8"
     pkg-dir "^1.0.0"
 
 eslint-plugin-import@^2.9.0:
-  version "2.9.0"
-  resolved "https://registry.yarnpkg.com/eslint-plugin-import/-/eslint-plugin-import-2.9.0.tgz#26002efbfca5989b7288ac047508bd24f217b169"
+  version "2.13.0"
+  resolved "https://registry.yarnpkg.com/eslint-plugin-import/-/eslint-plugin-import-2.13.0.tgz#df24f241175e312d91662dc91ca84064caec14ed"
   dependencies:
-    builtin-modules "^1.1.1"
     contains-path "^0.1.0"
     debug "^2.6.8"
     doctrine "1.5.0"
     eslint-import-resolver-node "^0.3.1"
-    eslint-module-utils "^2.1.1"
+    eslint-module-utils "^2.2.0"
     has "^1.0.1"
     lodash "^4.17.4"
     minimatch "^3.0.3"
     read-pkg-up "^2.0.0"
+    resolve "^1.6.0"
 
 eslint-plugin-prettier@^2.6.0:
-  version "2.6.0"
-  resolved "https://registry.yarnpkg.com/eslint-plugin-prettier/-/eslint-plugin-prettier-2.6.0.tgz#33e4e228bdb06142d03c560ce04ec23f6c767dd7"
+  version "2.6.2"
+  resolved "https://registry.yarnpkg.com/eslint-plugin-prettier/-/eslint-plugin-prettier-2.6.2.tgz#71998c60aedfa2141f7bfcbf9d1c459bf98b4fad"
   dependencies:
     fast-diff "^1.1.1"
     jest-docblock "^21.0.0"
 
 eslint-plugin-react@^7.7.0:
-  version "7.7.0"
-  resolved "https://registry.yarnpkg.com/eslint-plugin-react/-/eslint-plugin-react-7.7.0.tgz#f606c719dbd8a1a2b3d25c16299813878cca0160"
+  version "7.10.0"
+  resolved "https://registry.yarnpkg.com/eslint-plugin-react/-/eslint-plugin-react-7.10.0.tgz#af5c1fef31c4704db02098f9be18202993828b50"
   dependencies:
-    doctrine "^2.0.2"
-    has "^1.0.1"
+    doctrine "^2.1.0"
+    has "^1.0.3"
     jsx-ast-utils "^2.0.1"
-    prop-types "^15.6.0"
+    prop-types "^15.6.2"
 
-eslint-scope@^3.7.1, eslint-scope@~3.7.1:
+eslint-scope@3.7.1:
   version "3.7.1"
   resolved "https://registry.yarnpkg.com/eslint-scope/-/eslint-scope-3.7.1.tgz#3d63c3edfda02e06e01a452ad88caacc7cdcb6e8"
   dependencies:
     esrecurse "^4.1.0"
     estraverse "^4.1.1"
 
+eslint-scope@^3.7.1:
+  version "3.7.3"
+  resolved "https://registry.yarnpkg.com/eslint-scope/-/eslint-scope-3.7.3.tgz#bb507200d3d17f60247636160b4826284b108535"
+  dependencies:
+    esrecurse "^4.1.0"
+    estraverse "^4.1.1"
+
+eslint-scope@^4.0.0:
+  version "4.0.0"
+  resolved "https://registry.yarnpkg.com/eslint-scope/-/eslint-scope-4.0.0.tgz#50bf3071e9338bcdc43331794a0cb533f0136172"
+  dependencies:
+    esrecurse "^4.1.0"
+    estraverse "^4.1.1"
+
 eslint-visitor-keys@^1.0.0:
   version "1.0.0"
   resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-1.0.0.tgz#3f3180fb2e291017716acb4c9d6d5b5c34a6a81d"
 
 eslint@^4.18.1:
-  version "4.18.1"
-  resolved "https://registry.yarnpkg.com/eslint/-/eslint-4.18.1.tgz#b9138440cb1e98b2f44a0d578c6ecf8eae6150b0"
+  version "4.19.1"
+  resolved "https://registry.yarnpkg.com/eslint/-/eslint-4.19.1.tgz#32d1d653e1d90408854bfb296f076ec7e186a300"
   dependencies:
     ajv "^5.3.0"
     babel-code-frame "^6.22.0"
@@ -2743,7 +2904,7 @@ eslint@^4.18.1:
     doctrine "^2.1.0"
     eslint-scope "^3.7.1"
     eslint-visitor-keys "^1.0.0"
-    espree "^3.5.2"
+    espree "^3.5.4"
     esquery "^1.0.0"
     esutils "^2.0.2"
     file-entry-cache "^2.0.0"
@@ -2765,18 +2926,19 @@ eslint@^4.18.1:
     path-is-inside "^1.0.2"
     pluralize "^7.0.0"
     progress "^2.0.0"
+    regexpp "^1.0.1"
     require-uncached "^1.0.3"
     semver "^5.3.0"
     strip-ansi "^4.0.0"
     strip-json-comments "~2.0.1"
-    table "^4.0.1"
+    table "4.0.2"
     text-table "~0.2.0"
 
-espree@^3.5.2:
-  version "3.5.3"
-  resolved "https://registry.yarnpkg.com/espree/-/espree-3.5.3.tgz#931e0af64e7fbbed26b050a29daad1fc64799fa6"
+espree@^3.5.4:
+  version "3.5.4"
+  resolved "https://registry.yarnpkg.com/espree/-/espree-3.5.4.tgz#b0f447187c8a8bed944b815a660bddf5deb5d1a7"
   dependencies:
-    acorn "^5.4.0"
+    acorn "^5.5.0"
     acorn-jsx "^3.0.0"
 
 esprima@^2.6.0:
@@ -2784,21 +2946,20 @@ esprima@^2.6.0:
   resolved "https://registry.yarnpkg.com/esprima/-/esprima-2.7.3.tgz#96e3b70d5779f6ad49cd032673d1c312767ba581"
 
 esprima@^4.0.0, esprima@~4.0.0:
-  version "4.0.0"
-  resolved "https://registry.yarnpkg.com/esprima/-/esprima-4.0.0.tgz#4499eddcd1110e0b218bacf2fa7f7f59f55ca804"
+  version "4.0.1"
+  resolved "https://registry.yarnpkg.com/esprima/-/esprima-4.0.1.tgz#13b04cdb3e6c5d19df91ab6987a8695619b0aa71"
 
 esquery@^1.0.0:
-  version "1.0.0"
-  resolved "https://registry.yarnpkg.com/esquery/-/esquery-1.0.0.tgz#cfba8b57d7fba93f17298a8a006a04cda13d80fa"
+  version "1.0.1"
+  resolved "https://registry.yarnpkg.com/esquery/-/esquery-1.0.1.tgz#406c51658b1f5991a5f9b62b1dc25b00e3e5c708"
   dependencies:
     estraverse "^4.0.0"
 
 esrecurse@^4.1.0:
-  version "4.2.0"
-  resolved "https://registry.yarnpkg.com/esrecurse/-/esrecurse-4.2.0.tgz#fa9568d98d3823f9a41d91e902dcab9ea6e5b163"
+  version "4.2.1"
+  resolved "https://registry.yarnpkg.com/esrecurse/-/esrecurse-4.2.1.tgz#007a3b9fdbc2b3bb87e4879ea19c92fdbd3942cf"
   dependencies:
     estraverse "^4.1.0"
-    object-assign "^4.0.1"
 
 estraverse@^4.0.0, estraverse@^4.1.0, estraverse@^4.1.1:
   version "4.2.0"
@@ -2812,9 +2973,9 @@ etag@~1.8.1:
   version "1.8.1"
   resolved "https://registry.yarnpkg.com/etag/-/etag-1.8.1.tgz#41ae2eeb65efa62268aebfea83ac7d79299b0887"
 
-eventemitter3@1.x.x:
-  version "1.2.0"
-  resolved "https://registry.yarnpkg.com/eventemitter3/-/eventemitter3-1.2.0.tgz#1c86991d816ad1e504750e73874224ecf3bec508"
+eventemitter3@^3.0.0:
+  version "3.1.0"
+  resolved "https://registry.yarnpkg.com/eventemitter3/-/eventemitter3-3.1.0.tgz#090b4d6cdbd645ed10bf750d4b5407942d7ba163"
 
 events@^1.0.0:
   version "1.1.1"
@@ -2886,10 +3047,10 @@ expand-tilde@^2.0.0, expand-tilde@^2.0.2:
     homedir-polyfill "^1.0.1"
 
 express@^4.16.2:
-  version "4.16.2"
-  resolved "https://registry.yarnpkg.com/express/-/express-4.16.2.tgz#e35c6dfe2d64b7dca0a5cd4f21781be3299e076c"
+  version "4.16.3"
+  resolved "https://registry.yarnpkg.com/express/-/express-4.16.3.tgz#6af8a502350db3246ecc4becf6b5a34d22f7ed53"
   dependencies:
-    accepts "~1.3.4"
+    accepts "~1.3.5"
     array-flatten "1.1.1"
     body-parser "1.18.2"
     content-disposition "0.5.2"
@@ -2897,26 +3058,26 @@ express@^4.16.2:
     cookie "0.3.1"
     cookie-signature "1.0.6"
     debug "2.6.9"
-    depd "~1.1.1"
-    encodeurl "~1.0.1"
+    depd "~1.1.2"
+    encodeurl "~1.0.2"
     escape-html "~1.0.3"
     etag "~1.8.1"
-    finalhandler "1.1.0"
+    finalhandler "1.1.1"
     fresh "0.5.2"
     merge-descriptors "1.0.1"
     methods "~1.1.2"
     on-finished "~2.3.0"
     parseurl "~1.3.2"
     path-to-regexp "0.1.7"
-    proxy-addr "~2.0.2"
+    proxy-addr "~2.0.3"
     qs "6.5.1"
     range-parser "~1.2.0"
     safe-buffer "5.1.1"
-    send "0.16.1"
-    serve-static "1.13.1"
+    send "0.16.2"
+    serve-static "1.13.2"
     setprototypeof "1.1.0"
-    statuses "~1.3.1"
-    type-is "~1.6.15"
+    statuses "~1.4.0"
+    type-is "~1.6.16"
     utils-merge "1.0.1"
     vary "~1.1.2"
 
@@ -2934,18 +3095,10 @@ extend-shallow@^3.0.0, extend-shallow@^3.0.2:
     is-extendable "^1.0.1"
 
 extend@~3.0.0, extend@~3.0.1:
-  version "3.0.1"
-  resolved "https://registry.yarnpkg.com/extend/-/extend-3.0.1.tgz#a755ea7bc1adfcc5a31ce7e762dbaadc5e636444"
-
-external-editor@^2.0.4:
-  version "2.1.0"
-  resolved "https://registry.yarnpkg.com/external-editor/-/external-editor-2.1.0.tgz#3d026a21b7f95b5726387d4200ac160d372c3b48"
-  dependencies:
-    chardet "^0.4.0"
-    iconv-lite "^0.4.17"
-    tmp "^0.0.33"
+  version "3.0.2"
+  resolved "https://registry.yarnpkg.com/extend/-/extend-3.0.2.tgz#f8b1136b4071fbd8eb140aff858b1019ec2915fa"
 
-external-editor@^2.1.0:
+external-editor@^2.0.4, external-editor@^2.1.0:
   version "2.2.0"
   resolved "https://registry.yarnpkg.com/external-editor/-/external-editor-2.2.0.tgz#045511cfd8d133f3846673d1047c154e214ad3d5"
   dependencies:
@@ -2981,13 +3134,28 @@ extsprintf@^1.2.0:
   resolved "https://registry.yarnpkg.com/extsprintf/-/extsprintf-1.4.0.tgz#e2689f8f356fad62cca65a3a91c5df5f9551692f"
 
 fast-deep-equal@^1.0.0:
-  version "1.0.0"
-  resolved "https://registry.yarnpkg.com/fast-deep-equal/-/fast-deep-equal-1.0.0.tgz#96256a3bc975595eb36d82e9929d060d893439ff"
+  version "1.1.0"
+  resolved "https://registry.yarnpkg.com/fast-deep-equal/-/fast-deep-equal-1.1.0.tgz#c053477817c86b51daa853c81e059b733d023614"
+
+fast-deep-equal@^2.0.1:
+  version "2.0.1"
+  resolved "https://registry.yarnpkg.com/fast-deep-equal/-/fast-deep-equal-2.0.1.tgz#7b05218ddf9667bf7f370bf7fdb2cb15fdd0aa49"
 
 fast-diff@^1.1.1:
   version "1.1.2"
   resolved "https://registry.yarnpkg.com/fast-diff/-/fast-diff-1.1.2.tgz#4b62c42b8e03de3f848460b639079920695d0154"
 
+fast-glob@^2.0.2:
+  version "2.2.2"
+  resolved "https://registry.yarnpkg.com/fast-glob/-/fast-glob-2.2.2.tgz#71723338ac9b4e0e2fff1d6748a2a13d5ed352bf"
+  dependencies:
+    "@mrmlnc/readdir-enhanced" "^2.2.1"
+    "@nodelib/fs.stat" "^1.0.1"
+    glob-parent "^3.1.0"
+    is-glob "^4.0.0"
+    merge2 "^1.2.1"
+    micromatch "^3.1.10"
+
 fast-json-stable-stringify@^2.0.0:
   version "2.0.0"
   resolved "https://registry.yarnpkg.com/fast-json-stable-stringify/-/fast-json-stable-stringify-2.0.0.tgz#d5142c0caee6b1189f87d3a76111064f86c8bbf2"
@@ -3012,9 +3180,9 @@ faye-websocket@~0.11.0:
   dependencies:
     websocket-driver ">=0.5.1"
 
-fbjs@^0.8.16, fbjs@^0.8.9:
-  version "0.8.16"
-  resolved "https://registry.yarnpkg.com/fbjs/-/fbjs-0.8.16.tgz#5e67432f550dc41b572bf55847b8aca64e5337db"
+fbjs@^0.8.16:
+  version "0.8.17"
+  resolved "https://registry.yarnpkg.com/fbjs/-/fbjs-0.8.17.tgz#c4d598ead6949112653d6588b01a5cdcd9f90fdd"
   dependencies:
     core-js "^1.0.0"
     isomorphic-fetch "^2.1.1"
@@ -3022,7 +3190,7 @@ fbjs@^0.8.16, fbjs@^0.8.9:
     object-assign "^4.1.0"
     promise "^7.1.1"
     setimmediate "^1.0.5"
-    ua-parser-js "^0.7.9"
+    ua-parser-js "^0.7.18"
 
 figures@^1.7.0:
   version "1.7.0"
@@ -3102,12 +3270,12 @@ filename-regex@^2.0.0:
   resolved "https://registry.yarnpkg.com/filename-regex/-/filename-regex-2.0.1.tgz#c1c4b9bee3e09725ddb106b75c1e301fe2f18b26"
 
 fill-range@^2.1.0:
-  version "2.2.3"
-  resolved "https://registry.yarnpkg.com/fill-range/-/fill-range-2.2.3.tgz#50b77dfd7e469bc7492470963699fe7a8485a723"
+  version "2.2.4"
+  resolved "https://registry.yarnpkg.com/fill-range/-/fill-range-2.2.4.tgz#eb1e773abb056dcd8df2bfdf6af59b8b3a936565"
   dependencies:
     is-number "^2.1.0"
     isobject "^2.0.0"
-    randomatic "^1.1.3"
+    randomatic "^3.0.0"
     repeat-element "^1.1.2"
     repeat-string "^1.5.2"
 
@@ -3120,16 +3288,16 @@ fill-range@^4.0.0:
     repeat-string "^1.6.1"
     to-regex-range "^2.1.0"
 
-finalhandler@1.1.0:
-  version "1.1.0"
-  resolved "https://registry.yarnpkg.com/finalhandler/-/finalhandler-1.1.0.tgz#ce0b6855b45853e791b2fcc680046d88253dd7f5"
+finalhandler@1.1.1:
+  version "1.1.1"
+  resolved "https://registry.yarnpkg.com/finalhandler/-/finalhandler-1.1.1.tgz#eebf4ed840079c83f4249038c9d703008301b105"
   dependencies:
     debug "2.6.9"
-    encodeurl "~1.0.1"
+    encodeurl "~1.0.2"
     escape-html "~1.0.3"
     on-finished "~2.3.0"
     parseurl "~1.3.2"
-    statuses "~1.3.1"
+    statuses "~1.4.0"
     unpipe "~1.0.0"
 
 find-cache-dir@^0.1.1:
@@ -3181,8 +3349,8 @@ flatten@^1.0.2:
   resolved "https://registry.yarnpkg.com/flatten/-/flatten-1.0.2.tgz#dae46a9d78fbe25292258cc1e780a41d95c03782"
 
 flow-parser@^0.*:
-  version "0.69.0"
-  resolved "https://registry.yarnpkg.com/flow-parser/-/flow-parser-0.69.0.tgz#378b5128d6d0b554a8b2f16a4ca3e1ab9649f00e"
+  version "0.78.0"
+  resolved "https://registry.yarnpkg.com/flow-parser/-/flow-parser-0.78.0.tgz#4ec829a97fa68cff6e97691dfff7b6ddebbc187c"
 
 flush-write-stream@^1.0.0:
   version "1.0.3"
@@ -3191,6 +3359,12 @@ flush-write-stream@^1.0.0:
     inherits "^2.0.1"
     readable-stream "^2.0.4"
 
+follow-redirects@^1.0.0:
+  version "1.5.2"
+  resolved "https://registry.yarnpkg.com/follow-redirects/-/follow-redirects-1.5.2.tgz#5a9d80e0165957e5ef0c1210678fc5c4acb9fb03"
+  dependencies:
+    debug "^3.1.0"
+
 for-in@^0.1.3:
   version "0.1.8"
   resolved "https://registry.yarnpkg.com/for-in/-/for-in-0.1.8.tgz#d8773908e31256109952b1fdb9b3fa867d2775e1"
@@ -3228,11 +3402,11 @@ form-data@~2.1.1:
     mime-types "^2.1.12"
 
 form-data@~2.3.1:
-  version "2.3.1"
-  resolved "https://registry.yarnpkg.com/form-data/-/form-data-2.3.1.tgz#6fb94fbd71885306d73d15cc497fe4cc4ecd44bf"
+  version "2.3.2"
+  resolved "https://registry.yarnpkg.com/form-data/-/form-data-2.3.2.tgz#4970498be604c20c005d4f5c23aecd21d6b49099"
   dependencies:
     asynckit "^0.4.0"
-    combined-stream "^1.0.5"
+    combined-stream "1.0.6"
     mime-types "^2.1.12"
 
 forwarded@~0.1.2:
@@ -3260,6 +3434,12 @@ fs-exists-sync@^0.1.0:
   version "0.1.0"
   resolved "https://registry.yarnpkg.com/fs-exists-sync/-/fs-exists-sync-0.1.0.tgz#982d6893af918e72d08dec9e8673ff2b5a8d6add"
 
+fs-minipass@^1.2.5:
+  version "1.2.5"
+  resolved "https://registry.yarnpkg.com/fs-minipass/-/fs-minipass-1.2.5.tgz#06c277218454ec288df77ada54a03b8702aacb9d"
+  dependencies:
+    minipass "^2.2.1"
+
 fs-write-stream-atomic@^1.0.8:
   version "1.0.10"
   resolved "https://registry.yarnpkg.com/fs-write-stream-atomic/-/fs-write-stream-atomic-1.0.10.tgz#b47df53493ef911df75731e70a9ded0189db40c9"
@@ -3273,22 +3453,14 @@ fs.realpath@^1.0.0:
   version "1.0.0"
   resolved "https://registry.yarnpkg.com/fs.realpath/-/fs.realpath-1.0.0.tgz#1504ad2523158caa40db4a2787cb01411994ea4f"
 
-fsevents@^1.0.0, fsevents@^1.1.2:
-  version "1.1.3"
-  resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-1.1.3.tgz#11f82318f5fe7bb2cd22965a108e9306208216d8"
-  dependencies:
-    nan "^2.3.0"
-    node-pre-gyp "^0.6.39"
-
-fstream-ignore@^1.0.5:
-  version "1.0.5"
-  resolved "https://registry.yarnpkg.com/fstream-ignore/-/fstream-ignore-1.0.5.tgz#9c31dae34767018fe1d249b24dada67d092da105"
+fsevents@^1.2.2:
+  version "1.2.4"
+  resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-1.2.4.tgz#f41dcb1af2582af3692da36fc55cbd8e1041c426"
   dependencies:
-    fstream "^1.0.0"
-    inherits "2"
-    minimatch "^3.0.0"
+    nan "^2.9.2"
+    node-pre-gyp "^0.10.0"
 
-fstream@^1.0.0, fstream@^1.0.10, fstream@^1.0.2:
+fstream@^1.0.0, fstream@^1.0.2:
   version "1.0.11"
   resolved "https://registry.yarnpkg.com/fstream/-/fstream-1.0.11.tgz#5c1fb1f117477114f0632a0eb4b71b3cb0fd3171"
   dependencies:
@@ -3297,7 +3469,7 @@ fstream@^1.0.0, fstream@^1.0.10, fstream@^1.0.2:
     mkdirp ">=0.5 0"
     rimraf "2"
 
-function-bind@^1.0.2, function-bind@^1.1.1:
+function-bind@^1.1.1:
   version "1.1.1"
   resolved "https://registry.yarnpkg.com/function-bind/-/function-bind-1.1.1.tgz#a56899d3ea3c9bab874bb9773b7c5ede92f4895d"
 
@@ -3319,24 +3491,14 @@ gauge@~2.7.3:
     wide-align "^1.1.0"
 
 gaze@^1.0.0:
-  version "1.1.2"
-  resolved "https://registry.yarnpkg.com/gaze/-/gaze-1.1.2.tgz#847224677adb8870d679257ed3388fdb61e40105"
+  version "1.1.3"
+  resolved "https://registry.yarnpkg.com/gaze/-/gaze-1.1.3.tgz#c441733e13b927ac8c0ff0b4c3b033f28812924a"
   dependencies:
     globule "^1.0.0"
 
-generate-function@^2.0.0:
-  version "2.0.0"
-  resolved "https://registry.yarnpkg.com/generate-function/-/generate-function-2.0.0.tgz#6858fe7c0969b7d4e9093337647ac79f60dfbe74"
-
-generate-object-property@^1.1.0:
-  version "1.2.0"
-  resolved "https://registry.yarnpkg.com/generate-object-property/-/generate-object-property-1.2.0.tgz#9c0e1c40308ce804f4783618b937fa88f99d50d0"
-  dependencies:
-    is-property "^1.0.0"
-
 get-caller-file@^1.0.1:
-  version "1.0.2"
-  resolved "https://registry.yarnpkg.com/get-caller-file/-/get-caller-file-1.0.2.tgz#f702e63127e7e231c160a80c1554acb70d5047e5"
+  version "1.0.3"
+  resolved "https://registry.yarnpkg.com/get-caller-file/-/get-caller-file-1.0.3.tgz#f978fa4c90d1dfe7ff2d6beda2a515e713bdcf4a"
 
 get-stdin@^4.0.1:
   version "4.0.1"
@@ -3400,6 +3562,10 @@ glob-parent@^3.1.0:
     is-glob "^3.1.0"
     path-dirname "^1.0.0"
 
+glob-to-regexp@^0.3.0:
+  version "0.3.0"
+  resolved "https://registry.yarnpkg.com/glob-to-regexp/-/glob-to-regexp-0.3.0.tgz#8c5a1494d2066c570cc3bfe4496175acc4d502ab"
+
 glob@^6.0.4:
   version "6.0.4"
   resolved "https://registry.yarnpkg.com/glob/-/glob-6.0.4.tgz#0f08860f6a155127b2fadd4f9ce24b1aab6e4d22"
@@ -3455,13 +3621,9 @@ global-prefix@^1.0.1:
     is-windows "^1.0.1"
     which "^1.2.14"
 
-globals@^11.0.1:
-  version "11.3.0"
-  resolved "https://registry.yarnpkg.com/globals/-/globals-11.3.0.tgz#e04fdb7b9796d8adac9c8f64c14837b2313378b0"
-
-globals@^11.1.0:
-  version "11.1.0"
-  resolved "https://registry.yarnpkg.com/globals/-/globals-11.1.0.tgz#632644457f5f0e3ae711807183700ebf2e4633e4"
+globals@^11.0.1, globals@^11.1.0:
+  version "11.7.0"
+  resolved "https://registry.yarnpkg.com/globals/-/globals-11.7.0.tgz#a583faa43055b1aca771914bf68258e2fc125673"
 
 globals@^9.18.0:
   version "9.18.0"
@@ -3488,12 +3650,35 @@ globby@^6.1.0:
     pify "^2.0.0"
     pinkie-promise "^2.0.0"
 
+globby@^7.1.1:
+  version "7.1.1"
+  resolved "https://registry.yarnpkg.com/globby/-/globby-7.1.1.tgz#fb2ccff9401f8600945dfada97440cca972b8680"
+  dependencies:
+    array-union "^1.0.1"
+    dir-glob "^2.0.0"
+    glob "^7.1.2"
+    ignore "^3.3.5"
+    pify "^3.0.0"
+    slash "^1.0.0"
+
+globby@^8.0.1:
+  version "8.0.1"
+  resolved "https://registry.yarnpkg.com/globby/-/globby-8.0.1.tgz#b5ad48b8aa80b35b814fc1281ecc851f1d2b5b50"
+  dependencies:
+    array-union "^1.0.1"
+    dir-glob "^2.0.0"
+    fast-glob "^2.0.2"
+    glob "^7.1.2"
+    ignore "^3.3.5"
+    pify "^3.0.0"
+    slash "^1.0.0"
+
 globule@^1.0.0:
-  version "1.2.0"
-  resolved "https://registry.yarnpkg.com/globule/-/globule-1.2.0.tgz#1dc49c6822dd9e8a2fa00ba2a295006e8664bd09"
+  version "1.2.1"
+  resolved "https://registry.yarnpkg.com/globule/-/globule-1.2.1.tgz#5dffb1b191f22d20797a9369b49eab4e9839696d"
   dependencies:
     glob "~7.1.1"
-    lodash "~4.17.4"
+    lodash "~4.17.10"
     minimatch "~3.0.2"
 
 got@^7.0.0:
@@ -3515,9 +3700,9 @@ got@^7.0.0:
     url-parse-lax "^1.0.0"
     url-to-options "^1.0.1"
 
-got@^8.2.0:
-  version "8.3.0"
-  resolved "https://registry.yarnpkg.com/got/-/got-8.3.0.tgz#6ba26e75f8a6cc4c6b3eb1fe7ce4fec7abac8533"
+got@^8.3.1:
+  version "8.3.2"
+  resolved "https://registry.yarnpkg.com/got/-/got-8.3.2.tgz#1d23f64390e97f776cac52e5b936e5f514d2e937"
   dependencies:
     "@sindresorhus/is" "^0.7.0"
     cacheable-request "^2.1.1"
@@ -3559,15 +3744,6 @@ har-schema@^2.0.0:
   version "2.0.0"
   resolved "https://registry.yarnpkg.com/har-schema/-/har-schema-2.0.0.tgz#a94c2224ebcac04782a0d9035521f24735b7ec92"
 
-har-validator@~2.0.6:
-  version "2.0.6"
-  resolved "https://registry.yarnpkg.com/har-validator/-/har-validator-2.0.6.tgz#cdcbc08188265ad119b6a5a7c8ab70eecfb5d27d"
-  dependencies:
-    chalk "^1.1.1"
-    commander "^2.9.0"
-    is-my-json-valid "^2.12.4"
-    pinkie-promise "^2.0.0"
-
 har-validator@~4.2.1:
   version "4.2.1"
   resolved "https://registry.yarnpkg.com/har-validator/-/har-validator-4.2.1.tgz#33481d0f1bbff600dd203d75812a6a5fba002e2a"
@@ -3596,10 +3772,6 @@ has-flag@^1.0.0:
   version "1.0.0"
   resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-1.0.0.tgz#9d9e793165ce017a00f00418c43f942a7b1d11fa"
 
-has-flag@^2.0.0:
-  version "2.0.0"
-  resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-2.0.0.tgz#e8207af1cc7b30d446cc70b734b5e8be18f88d51"
-
 has-flag@^3.0.0:
   version "3.0.0"
   resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-3.0.0.tgz#b5d454dc2199ae225699f3467e5a07f3b955bafd"
@@ -3614,6 +3786,10 @@ has-symbol-support-x@^1.4.1:
   version "1.4.2"
   resolved "https://registry.yarnpkg.com/has-symbol-support-x/-/has-symbol-support-x-1.4.2.tgz#1409f98bc00247da45da67cee0a36f282ff26455"
 
+has-symbols@^1.0.0:
+  version "1.0.0"
+  resolved "https://registry.yarnpkg.com/has-symbols/-/has-symbols-1.0.0.tgz#ba1a8f1af2a0fc39650f5c850367704122063b44"
+
 has-to-string-tag-x@^1.2.0:
   version "1.4.1"
   resolved "https://registry.yarnpkg.com/has-to-string-tag-x/-/has-to-string-tag-x-1.4.1.tgz#a045ab383d7b4b2012a00148ab0aa5f290044d4d"
@@ -3651,17 +3827,11 @@ has-values@^1.0.0:
     is-number "^3.0.0"
     kind-of "^4.0.0"
 
-has@^1.0.1:
-  version "1.0.1"
-  resolved "https://registry.yarnpkg.com/has/-/has-1.0.1.tgz#8461733f538b0837c9361e39a9ab9e9704dc2f28"
-  dependencies:
-    function-bind "^1.0.2"
-
-hash-base@^2.0.0:
-  version "2.0.2"
-  resolved "https://registry.yarnpkg.com/hash-base/-/hash-base-2.0.2.tgz#66ea1d856db4e8a5470cadf6fce23ae5244ef2e1"
+has@^1.0.1, has@^1.0.3:
+  version "1.0.3"
+  resolved "https://registry.yarnpkg.com/has/-/has-1.0.3.tgz#722d7cbfc1f6aa8241f16dd814e011e1f41e8796"
   dependencies:
-    inherits "^2.0.1"
+    function-bind "^1.1.1"
 
 hash-base@^3.0.0:
   version "3.0.4"
@@ -3671,13 +3841,13 @@ hash-base@^3.0.0:
     safe-buffer "^5.0.1"
 
 hash.js@^1.0.0, hash.js@^1.0.3:
-  version "1.1.3"
-  resolved "https://registry.yarnpkg.com/hash.js/-/hash.js-1.1.3.tgz#340dedbe6290187151c1ea1d777a3448935df846"
+  version "1.1.5"
+  resolved "https://registry.yarnpkg.com/hash.js/-/hash.js-1.1.5.tgz#e38ab4b85dfb1e0c40fe9265c0e9b54854c23812"
   dependencies:
     inherits "^2.0.3"
-    minimalistic-assert "^1.0.0"
+    minimalistic-assert "^1.0.1"
 
-hawk@3.1.3, hawk@~3.1.3:
+hawk@~3.1.3:
   version "3.1.3"
   resolved "https://registry.yarnpkg.com/hawk/-/hawk-3.1.3.tgz#078444bd7c1640b0fe540d2c9b73d59678e8e1c4"
   dependencies:
@@ -3686,15 +3856,6 @@ hawk@3.1.3, hawk@~3.1.3:
     hoek "2.x.x"
     sntp "1.x.x"
 
-hawk@~6.0.2:
-  version "6.0.2"
-  resolved "https://registry.yarnpkg.com/hawk/-/hawk-6.0.2.tgz#af4d914eb065f9b5ce4d9d11c1cb2126eecc3038"
-  dependencies:
-    boom "4.x.x"
-    cryptiles "3.x.x"
-    hoek "4.x.x"
-    sntp "2.x.x"
-
 he@^1.1.1:
   version "1.1.1"
   resolved "https://registry.yarnpkg.com/he/-/he-1.1.1.tgz#93410fd21b009735151f8868c2f271f3427e23fd"
@@ -3711,13 +3872,9 @@ hoek@2.x.x:
   version "2.16.3"
   resolved "https://registry.yarnpkg.com/hoek/-/hoek-2.16.3.tgz#20bb7403d3cea398e91dc4710a8ff1b8274a25ed"
 
-hoek@4.x.x:
-  version "4.2.0"
-  resolved "https://registry.yarnpkg.com/hoek/-/hoek-4.2.0.tgz#72d9d0754f7fe25ca2d01ad8f8f9a9449a89526d"
-
-hoist-non-react-statics@^2.1.0, hoist-non-react-statics@^2.2.1:
-  version "2.3.1"
-  resolved "https://registry.yarnpkg.com/hoist-non-react-statics/-/hoist-non-react-statics-2.3.1.tgz#343db84c6018c650778898240135a1420ee22ce0"
+hoist-non-react-statics@^2.1.0, hoist-non-react-statics@^2.5.0:
+  version "2.5.5"
+  resolved "https://registry.yarnpkg.com/hoist-non-react-statics/-/hoist-non-react-statics-2.5.5.tgz#c5903cf409c0dfd908f388e619d86b9c1174cb47"
 
 home-or-tmp@^2.0.0:
   version "2.0.0"
@@ -3733,8 +3890,8 @@ homedir-polyfill@^1.0.0, homedir-polyfill@^1.0.1:
     parse-passwd "^1.0.0"
 
 hosted-git-info@^2.1.4:
-  version "2.5.0"
-  resolved "https://registry.yarnpkg.com/hosted-git-info/-/hosted-git-info-2.5.0.tgz#6d60e34b3abbc8313062c3b798ef8d901a07af3c"
+  version "2.7.1"
+  resolved "https://registry.yarnpkg.com/hosted-git-info/-/hosted-git-info-2.7.1.tgz#97f236977bd6e125408930ff6de3eec6281ec047"
 
 hpack.js@^2.1.6:
   version "2.1.6"
@@ -3772,7 +3929,7 @@ http-deceiver@^1.2.7:
   version "1.2.7"
   resolved "https://registry.yarnpkg.com/http-deceiver/-/http-deceiver-1.2.7.tgz#fa7168944ab9a519d337cb0bec7284dc3e723d87"
 
-http-errors@1.6.2, http-errors@~1.6.2:
+http-errors@1.6.2:
   version "1.6.2"
   resolved "https://registry.yarnpkg.com/http-errors/-/http-errors-1.6.2.tgz#0a002cc85707192a7e7946ceedc11155f60ec736"
   dependencies:
@@ -3781,9 +3938,18 @@ http-errors@1.6.2, http-errors@~1.6.2:
     setprototypeof "1.0.3"
     statuses ">= 1.3.1 < 2"
 
+http-errors@~1.6.2:
+  version "1.6.3"
+  resolved "https://registry.yarnpkg.com/http-errors/-/http-errors-1.6.3.tgz#8b55680bb4be283a0b5bf4ea2e38580be1d9320d"
+  dependencies:
+    depd "~1.1.2"
+    inherits "2.0.3"
+    setprototypeof "1.1.0"
+    statuses ">= 1.4.0 < 2"
+
 http-parser-js@>=0.4.0:
-  version "0.4.9"
-  resolved "https://registry.yarnpkg.com/http-parser-js/-/http-parser-js-0.4.9.tgz#ea1a04fb64adff0242e9974f297dd4c3cad271e1"
+  version "0.4.13"
+  resolved "https://registry.yarnpkg.com/http-parser-js/-/http-parser-js-0.4.13.tgz#3bd6d6fde6e3172c9334c3b33b6c193d80fe1137"
 
 http-proxy-middleware@~0.18.0:
   version "0.18.0"
@@ -3795,11 +3961,12 @@ http-proxy-middleware@~0.18.0:
     micromatch "^3.1.9"
 
 http-proxy@^1.16.2:
-  version "1.16.2"
-  resolved "https://registry.yarnpkg.com/http-proxy/-/http-proxy-1.16.2.tgz#06dff292952bf64dbe8471fa9df73066d4f37742"
+  version "1.17.0"
+  resolved "https://registry.yarnpkg.com/http-proxy/-/http-proxy-1.17.0.tgz#7ad38494658f84605e2f6db4436df410f4e5be9a"
   dependencies:
-    eventemitter3 "1.x.x"
-    requires-port "1.x.x"
+    eventemitter3 "^3.0.0"
+    follow-redirects "^1.0.0"
+    requires-port "^1.0.0"
 
 http-signature@~1.1.0:
   version "1.1.1"
@@ -3821,7 +3988,13 @@ https-browserify@^1.0.0:
   version "1.0.0"
   resolved "https://registry.yarnpkg.com/https-browserify/-/https-browserify-1.0.0.tgz#ec06c10e0a34c0f2faf199f7fd7fc78fffd03c73"
 
-iconv-lite@0.4, iconv-lite@0.4.19, iconv-lite@^0.4.17, iconv-lite@~0.4.13:
+iconv-lite@0.4, iconv-lite@^0.4.17, iconv-lite@^0.4.4, iconv-lite@~0.4.13:
+  version "0.4.23"
+  resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.4.23.tgz#297871f63be507adcfbfca715d0cd0eed84e9a63"
+  dependencies:
+    safer-buffer ">= 2.1.2 < 3"
+
+iconv-lite@0.4.19:
   version "0.4.19"
   resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.4.19.tgz#f7468f60135f5e5dad3399c0a81be9a1603a082b"
 
@@ -3835,17 +4008,23 @@ icss-utils@^2.1.0:
   dependencies:
     postcss "^6.0.1"
 
-ieee754@^1.1.4:
-  version "1.1.8"
-  resolved "https://registry.yarnpkg.com/ieee754/-/ieee754-1.1.8.tgz#be33d40ac10ef1926701f6f08a2d86fbfd1ad3e4"
+ieee754@^1.1.11, ieee754@^1.1.4:
+  version "1.1.12"
+  resolved "https://registry.yarnpkg.com/ieee754/-/ieee754-1.1.12.tgz#50bf24e5b9c8bb98af4964c941cdb0918da7b60b"
 
 iferr@^0.1.5:
   version "0.1.5"
   resolved "https://registry.yarnpkg.com/iferr/-/iferr-0.1.5.tgz#c60eed69e6d8fdb6b3104a1fcbca1c192dc5b501"
 
-ignore@^3.3.3:
-  version "3.3.7"
-  resolved "https://registry.yarnpkg.com/ignore/-/ignore-3.3.7.tgz#612289bfb3c220e186a58118618d5be8c1bab021"
+ignore-walk@^3.0.1:
+  version "3.0.1"
+  resolved "https://registry.yarnpkg.com/ignore-walk/-/ignore-walk-3.0.1.tgz#a83e62e7d272ac0e3b551aaa82831a19b69f82f8"
+  dependencies:
+    minimatch "^3.0.4"
+
+ignore@^3.3.3, ignore@^3.3.5:
+  version "3.3.10"
+  resolved "https://registry.yarnpkg.com/ignore/-/ignore-3.3.10.tgz#0a97fb876986e8081c631160f8f9f389157f0043"
 
 image-size@^0.5.1:
   version "0.5.5"
@@ -3903,7 +4082,7 @@ ini@^1.3.4, ini@~1.3.0:
   version "1.3.5"
   resolved "https://registry.yarnpkg.com/ini/-/ini-1.3.5.tgz#eee25f56db1c9ec6085e0c22778083f596abf927"
 
-inquirer@^3.0.6, inquirer@^3.3.0:
+inquirer@^3.0.6:
   version "3.3.0"
   resolved "https://registry.yarnpkg.com/inquirer/-/inquirer-3.3.0.tgz#9dd2f2ad765dcab1ff0443b491442a20ba227dc9"
   dependencies:
@@ -3922,7 +4101,7 @@ inquirer@^3.0.6, inquirer@^3.3.0:
     strip-ansi "^4.0.0"
     through "^2.3.6"
 
-inquirer@^5.1.0:
+inquirer@^5.2.0:
   version "5.2.0"
   resolved "https://registry.yarnpkg.com/inquirer/-/inquirer-5.2.0.tgz#db350c2b73daca77ff1243962e9f22f099685726"
   dependencies:
@@ -3946,7 +4125,7 @@ internal-ip@1.2.0:
   dependencies:
     meow "^3.3.0"
 
-interpret@^1.0.0, interpret@^1.0.4:
+interpret@^1.0.0, interpret@^1.1.0:
   version "1.1.0"
   resolved "https://registry.yarnpkg.com/interpret/-/interpret-1.1.0.tgz#7ed1b1410c6a0e0f78cf95d3b8440c63f78b8614"
 
@@ -3958,8 +4137,8 @@ into-stream@^3.1.0:
     p-is-promise "^1.1.0"
 
 invariant@^2.0.0, invariant@^2.1.0, invariant@^2.2.0, invariant@^2.2.2:
-  version "2.2.2"
-  resolved "https://registry.yarnpkg.com/invariant/-/invariant-2.2.2.tgz#9e1f56ac0acdb6bf303306f338be3b204ae60360"
+  version "2.2.4"
+  resolved "https://registry.yarnpkg.com/invariant/-/invariant-2.2.4.tgz#610f3c92c9359ce1db616e538008d23ff35158e6"
   dependencies:
     loose-envify "^1.0.0"
 
@@ -3971,9 +4150,9 @@ ip@^1.1.0, ip@^1.1.5:
   version "1.1.5"
   resolved "https://registry.yarnpkg.com/ip/-/ip-1.1.5.tgz#bdded70114290828c0a039e72ef25f5aaec4354a"
 
-ipaddr.js@1.5.2:
-  version "1.5.2"
-  resolved "https://registry.yarnpkg.com/ipaddr.js/-/ipaddr.js-1.5.2.tgz#d4b505bde9946987ccf0fc58d9010ff9607e3fa0"
+ipaddr.js@1.8.0:
+  version "1.8.0"
+  resolved "https://registry.yarnpkg.com/ipaddr.js/-/ipaddr.js-1.8.0.tgz#eaa33d6ddd7ace8f7f6fe0c9ca0440e706738b1e"
 
 is-absolute-url@^2.0.0:
   version "2.1.0"
@@ -4012,8 +4191,8 @@ is-builtin-module@^1.0.0:
     builtin-modules "^1.0.0"
 
 is-callable@^1.1.1, is-callable@^1.1.3:
-  version "1.1.3"
-  resolved "https://registry.yarnpkg.com/is-callable/-/is-callable-1.1.3.tgz#86eb75392805ddc33af71c92a0eedf74ee7604b2"
+  version "1.1.4"
+  resolved "https://registry.yarnpkg.com/is-callable/-/is-callable-1.1.4.tgz#1e1adf219e1eeb684d691f9d6a05ff0d30a24d75"
 
 is-data-descriptor@^0.1.4:
   version "0.1.4"
@@ -4109,15 +4288,6 @@ is-glob@^4.0.0:
   dependencies:
     is-extglob "^2.1.1"
 
-is-my-json-valid@^2.12.4:
-  version "2.17.1"
-  resolved "https://registry.yarnpkg.com/is-my-json-valid/-/is-my-json-valid-2.17.1.tgz#3da98914a70a22f0a8563ef1511a246c6fc55471"
-  dependencies:
-    generate-function "^2.0.0"
-    generate-object-property "^1.1.0"
-    jsonpointer "^4.0.0"
-    xtend "^4.0.0"
-
 is-number@^2.1.0:
   version "2.1.0"
   resolved "https://registry.yarnpkg.com/is-number/-/is-number-2.1.0.tgz#01fcbbb393463a548f2f466cce16dece49db908f"
@@ -4138,31 +4308,19 @@ is-object@^1.0.1:
   version "1.0.1"
   resolved "https://registry.yarnpkg.com/is-object/-/is-object-1.0.1.tgz#8952688c5ec2ffd6b03ecc85e769e02903083470"
 
-is-observable@^0.2.0:
-  version "0.2.0"
-  resolved "https://registry.yarnpkg.com/is-observable/-/is-observable-0.2.0.tgz#b361311d83c6e5d726cabf5e250b0237106f5ae2"
-  dependencies:
-    symbol-observable "^0.2.2"
-
-is-odd@^1.0.0:
-  version "1.0.0"
-  resolved "https://registry.yarnpkg.com/is-odd/-/is-odd-1.0.0.tgz#3b8a932eb028b3775c39bb09e91767accdb69088"
-  dependencies:
-    is-number "^3.0.0"
-
-is-odd@^2.0.0:
-  version "2.0.0"
-  resolved "https://registry.yarnpkg.com/is-odd/-/is-odd-2.0.0.tgz#7646624671fd7ea558ccd9a2795182f2958f1b24"
+is-observable@^1.1.0:
+  version "1.1.0"
+  resolved "https://registry.yarnpkg.com/is-observable/-/is-observable-1.1.0.tgz#b3e986c8f44de950867cab5403f5a3465005975e"
   dependencies:
-    is-number "^4.0.0"
+    symbol-observable "^1.1.0"
 
 is-path-cwd@^1.0.0:
   version "1.0.0"
   resolved "https://registry.yarnpkg.com/is-path-cwd/-/is-path-cwd-1.0.0.tgz#d225ec23132e89edd38fda767472e62e65f1106d"
 
 is-path-in-cwd@^1.0.0:
-  version "1.0.0"
-  resolved "https://registry.yarnpkg.com/is-path-in-cwd/-/is-path-in-cwd-1.0.0.tgz#6477582b8214d602346094567003be8a9eac04dc"
+  version "1.0.1"
+  resolved "https://registry.yarnpkg.com/is-path-in-cwd/-/is-path-in-cwd-1.0.1.tgz#5ac48b345ef675339bd6c7a48a912110b241cf52"
   dependencies:
     is-path-inside "^1.0.0"
 
@@ -4194,10 +4352,6 @@ is-promise@^2.1.0:
   version "2.1.0"
   resolved "https://registry.yarnpkg.com/is-promise/-/is-promise-2.1.0.tgz#79a2a9ece7f096e80f36d2b2f3bc16c1ff4bf3fa"
 
-is-property@^1.0.0:
-  version "1.0.2"
-  resolved "https://registry.yarnpkg.com/is-property/-/is-property-1.0.2.tgz#57fe1c4e48474edd65b09911f26b1cd4095dda84"
-
 is-regex@^1.0.4:
   version "1.0.4"
   resolved "https://registry.yarnpkg.com/is-regex/-/is-regex-1.0.4.tgz#5517489b547091b0930e095654ced25ee97e9491"
@@ -4260,6 +4414,12 @@ isarray@1.0.0, isarray@^1.0.0, isarray@~1.0.0:
   version "1.0.0"
   resolved "https://registry.yarnpkg.com/isarray/-/isarray-1.0.0.tgz#bb935d48582cba168c06834957a54a3e07124f11"
 
+isbinaryfile@^3.0.2:
+  version "3.0.3"
+  resolved "https://registry.yarnpkg.com/isbinaryfile/-/isbinaryfile-3.0.3.tgz#5d6def3edebf6e8ca8cae9c30183a804b5f8be80"
+  dependencies:
+    buffer-alloc "^1.2.0"
+
 isexe@^2.0.0:
   version "2.0.0"
   resolved "https://registry.yarnpkg.com/isexe/-/isexe-2.0.0.tgz#e8fbf374dc556ff8947a10dcb0572d633f2cfa10"
@@ -4285,7 +4445,7 @@ isstream@~0.1.2:
   version "0.1.2"
   resolved "https://registry.yarnpkg.com/isstream/-/isstream-0.1.2.tgz#47e63f7af55afa6f92e1500e690eb8b8529c099a"
 
-istextorbinary@^2.1.0:
+istextorbinary@^2.2.1:
   version "2.2.1"
   resolved "https://registry.yarnpkg.com/istextorbinary/-/istextorbinary-2.2.1.tgz#a5231a08ef6dd22b268d0895084cf8d58b5bec53"
   dependencies:
@@ -4305,16 +4465,20 @@ jest-docblock@^21.0.0:
   resolved "https://registry.yarnpkg.com/jest-docblock/-/jest-docblock-21.2.0.tgz#51529c3b30d5fd159da60c27ceedc195faf8d414"
 
 js-base64@^2.1.8, js-base64@^2.1.9:
-  version "2.4.2"
-  resolved "https://registry.yarnpkg.com/js-base64/-/js-base64-2.4.2.tgz#1896da010ef8862f385d8887648e9b6dc4a7a2e9"
+  version "2.4.8"
+  resolved "https://registry.yarnpkg.com/js-base64/-/js-base64-2.4.8.tgz#57a9b130888f956834aa40c5b165ba59c758f033"
 
 js-tokens@^3.0.0, js-tokens@^3.0.2:
   version "3.0.2"
   resolved "https://registry.yarnpkg.com/js-tokens/-/js-tokens-3.0.2.tgz#9866df395102130e38f7f996bceb65443209c25b"
 
+"js-tokens@^3.0.0 || ^4.0.0":
+  version "4.0.0"
+  resolved "https://registry.yarnpkg.com/js-tokens/-/js-tokens-4.0.0.tgz#19203fb59991df98e3a287050d4647cdeaf32499"
+
 js-yaml@^3.9.1:
-  version "3.10.0"
-  resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-3.10.0.tgz#2e78441646bd4682e963f22b6e92823c309c62dc"
+  version "3.12.0"
+  resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-3.12.0.tgz#eaed656ec8344f10f527c6bfa1b6e2244de167d1"
   dependencies:
     argparse "^1.0.7"
     esprima "^4.0.0"
@@ -4351,14 +4515,14 @@ jscodeshift@^0.4.0:
     write-file-atomic "^1.2.0"
 
 jscodeshift@^0.5.0:
-  version "0.5.0"
-  resolved "https://registry.yarnpkg.com/jscodeshift/-/jscodeshift-0.5.0.tgz#bdb7b6cc20dd62c16aa728c3fa2d2fe66ca7c748"
+  version "0.5.1"
+  resolved "https://registry.yarnpkg.com/jscodeshift/-/jscodeshift-0.5.1.tgz#4af6a721648be8638ae1464a190342da52960c33"
   dependencies:
     babel-plugin-transform-flow-strip-types "^6.8.0"
     babel-preset-es2015 "^6.9.0"
     babel-preset-stage-1 "^6.5.0"
     babel-register "^6.9.0"
-    babylon "^7.0.0-beta.30"
+    babylon "^7.0.0-beta.47"
     colors "^1.1.2"
     flow-parser "^0.*"
     lodash "^4.13.1"
@@ -4366,7 +4530,7 @@ jscodeshift@^0.5.0:
     neo-async "^2.5.0"
     node-dir "0.1.8"
     nomnom "^1.8.1"
-    recast "^0.14.1"
+    recast "^0.15.0"
     temp "^0.8.1"
     write-file-atomic "^1.2.0"
 
@@ -4374,6 +4538,10 @@ jsesc@^1.3.0:
   version "1.3.0"
   resolved "https://registry.yarnpkg.com/jsesc/-/jsesc-1.3.0.tgz#46c3fec8c1892b12b0833db9bc7622176dbab34b"
 
+jsesc@^2.5.1:
+  version "2.5.1"
+  resolved "https://registry.yarnpkg.com/jsesc/-/jsesc-2.5.1.tgz#e421a2a8e20d6b0819df28908f782526b96dd1fe"
+
 jsesc@~0.5.0:
   version "0.5.0"
   resolved "https://registry.yarnpkg.com/jsesc/-/jsesc-0.5.0.tgz#e7dee66e35d6fc16f710fe91d5cf69f70f08911d"
@@ -4382,7 +4550,7 @@ json-buffer@3.0.0:
   version "3.0.0"
   resolved "https://registry.yarnpkg.com/json-buffer/-/json-buffer-3.0.0.tgz#5b1f397afc75d677bde8bcfc0e47e1f9a3d9a898"
 
-json-parse-better-errors@^1.0.1:
+json-parse-better-errors@^1.0.1, json-parse-better-errors@^1.0.2:
   version "1.0.2"
   resolved "https://registry.yarnpkg.com/json-parse-better-errors/-/json-parse-better-errors-1.0.2.tgz#bb867cfb3450e69107c131d1c514bab3dc8bcaa9"
 
@@ -4390,6 +4558,10 @@ json-schema-traverse@^0.3.0:
   version "0.3.1"
   resolved "https://registry.yarnpkg.com/json-schema-traverse/-/json-schema-traverse-0.3.1.tgz#349a6d44c53a51de89b40805c5d5e59b417d3340"
 
+json-schema-traverse@^0.4.1:
+  version "0.4.1"
+  resolved "https://registry.yarnpkg.com/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz#69f6a87d9513ab8bb8fe63bdb0979c448e684660"
+
 json-schema@0.2.3:
   version "0.2.3"
   resolved "https://registry.yarnpkg.com/json-schema/-/json-schema-0.2.3.tgz#b480c892e59a2f05954ce727bd3f2a4e882f9e13"
@@ -4420,10 +4592,6 @@ jsonify@~0.0.0:
   version "0.0.0"
   resolved "https://registry.yarnpkg.com/jsonify/-/jsonify-0.0.0.tgz#2c74b6ee41d93ca51b7b5aaee8f503631d252a73"
 
-jsonpointer@^4.0.0:
-  version "4.0.1"
-  resolved "https://registry.yarnpkg.com/jsonpointer/-/jsonpointer-4.0.1.tgz#4fd92cb34e0e9db3c89c8622ecf51f9b978c6cb9"
-
 jsprim@^1.2.2:
   version "1.4.1"
   resolved "https://registry.yarnpkg.com/jsprim/-/jsprim-1.4.1.tgz#313e66bc1e5cc06e438bc1b7499c2e5c56acb6a2"
@@ -4473,7 +4641,7 @@ lazy-cache@^0.2.3:
   version "0.2.7"
   resolved "https://registry.yarnpkg.com/lazy-cache/-/lazy-cache-0.2.7.tgz#7feddf2dcb6edb77d11ef1d117ab5ffdf0ab1b65"
 
-lazy-cache@^2.0.1, lazy-cache@^2.0.2:
+lazy-cache@^2.0.1:
   version "2.0.2"
   resolved "https://registry.yarnpkg.com/lazy-cache/-/lazy-cache-2.0.2.tgz#b9190a4f913354694840859f8a8f7084d8822264"
   dependencies:
@@ -4518,15 +4686,15 @@ listr-verbose-renderer@^0.4.0:
     date-fns "^1.27.2"
     figures "^1.7.0"
 
-listr@^0.13.0:
-  version "0.13.0"
-  resolved "https://registry.yarnpkg.com/listr/-/listr-0.13.0.tgz#20bb0ba30bae660ee84cc0503df4be3d5623887d"
+listr@^0.14.1:
+  version "0.14.1"
+  resolved "https://registry.yarnpkg.com/listr/-/listr-0.14.1.tgz#8a7afa4a7135cee4c921d128e0b7dfc6e522d43d"
   dependencies:
-    chalk "^1.1.3"
+    "@samverschueren/stream-to-observable" "^0.3.0"
     cli-truncate "^0.2.1"
     figures "^1.7.0"
     indent-string "^2.1.0"
-    is-observable "^0.2.0"
+    is-observable "^1.1.0"
     is-promise "^2.1.0"
     is-stream "^1.1.0"
     listr-silent-renderer "^1.1.1"
@@ -4536,8 +4704,7 @@ listr@^0.13.0:
     log-update "^1.0.2"
     ora "^0.2.3"
     p-map "^1.1.1"
-    rxjs "^5.4.2"
-    stream-to-observable "^0.2.0"
+    rxjs "^6.1.0"
     strip-ansi "^3.0.1"
 
 load-json-file@^1.0.0:
@@ -4594,13 +4761,9 @@ locate-path@^2.0.0:
     p-locate "^2.0.0"
     path-exists "^3.0.0"
 
-lodash-es@^4.2.0:
-  version "4.17.5"
-  resolved "https://registry.yarnpkg.com/lodash-es/-/lodash-es-4.17.5.tgz#9fc6e737b1c4d151d8f9cae2247305d552ce748f"
-
-lodash-es@^4.2.1:
-  version "4.17.4"
-  resolved "https://registry.yarnpkg.com/lodash-es/-/lodash-es-4.17.4.tgz#dcc1d7552e150a0640073ba9cb31d70f032950e7"
+lodash-es@^4.17.5, lodash-es@^4.2.1:
+  version "4.17.10"
+  resolved "https://registry.yarnpkg.com/lodash-es/-/lodash-es-4.17.10.tgz#62cd7104cdf5dd87f235a837f0ede0e8e5117e05"
 
 lodash.assign@^4.2.0:
   version "4.2.0"
@@ -4614,13 +4777,17 @@ lodash.clonedeep@^4.3.2:
   version "4.5.0"
   resolved "https://registry.yarnpkg.com/lodash.clonedeep/-/lodash.clonedeep-4.5.0.tgz#e23f3f9c4f8fbdde872529c1071857a086e5ccef"
 
+lodash.debounce@^4.0.8:
+  version "4.0.8"
+  resolved "https://registry.yarnpkg.com/lodash.debounce/-/lodash.debounce-4.0.8.tgz#82d79bff30a67c4005ffd5e2515300ad9ca4d7af"
+
 lodash.memoize@^4.1.2:
   version "4.1.2"
   resolved "https://registry.yarnpkg.com/lodash.memoize/-/lodash.memoize-4.1.2.tgz#bcc6c49a42a2840ed997f323eada5ecd182e0bfe"
 
 lodash.mergewith@^4.6.0:
-  version "4.6.0"
-  resolved "https://registry.yarnpkg.com/lodash.mergewith/-/lodash.mergewith-4.6.0.tgz#150cf0a16791f5903b8891eab154609274bdea55"
+  version "4.6.1"
+  resolved "https://registry.yarnpkg.com/lodash.mergewith/-/lodash.mergewith-4.6.1.tgz#639057e726c3afbdb3e7d42741caa8d6e4335927"
 
 lodash.tail@^4.1.1:
   version "4.1.1"
@@ -4630,13 +4797,9 @@ lodash.uniq@^4.5.0:
   version "4.5.0"
   resolved "https://registry.yarnpkg.com/lodash.uniq/-/lodash.uniq-4.5.0.tgz#d0225373aeb652adc1bc82e4945339a842754773"
 
-lodash@^4.0.0, lodash@^4.12.0, lodash@^4.14.0, lodash@^4.17.2, lodash@^4.17.4, lodash@^4.2.0, lodash@^4.2.1, lodash@^4.3.0, lodash@~4.17.4:
-  version "4.17.4"
-  resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.4.tgz#78203a4d1c328ae1d86dca6460e369b57f4055ae"
-
-lodash@^4.13.1, lodash@^4.17.5:
-  version "4.17.5"
-  resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.5.tgz#99a92d65c0272debe8c96b6057bc8fbfa3bed511"
+lodash@^4.0.0, lodash@^4.12.0, lodash@^4.13.1, lodash@^4.17.10, lodash@^4.17.2, lodash@^4.17.4, lodash@^4.17.5, lodash@^4.2.0, lodash@^4.2.1, lodash@^4.3.0, lodash@~4.17.10:
+  version "4.17.10"
+  resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.10.tgz#1b7793cf7259ea38fb3661d4d38b3260af8ae4e7"
 
 log-ok@^0.1.1:
   version "0.1.1"
@@ -4669,14 +4832,25 @@ loglevel@^1.4.1:
   resolved "https://registry.yarnpkg.com/loglevel/-/loglevel-1.6.1.tgz#e0fc95133b6ef276cdc8887cdaf24aa6f156f8fa"
 
 loglevelnext@^1.0.1:
-  version "1.0.4"
-  resolved "https://registry.yarnpkg.com/loglevelnext/-/loglevelnext-1.0.4.tgz#0d991d9998180991dac8bd81e73a596a8720a645"
+  version "1.0.5"
+  resolved "https://registry.yarnpkg.com/loglevelnext/-/loglevelnext-1.0.5.tgz#36fc4f5996d6640f539ff203ba819641680d75a2"
+  dependencies:
+    es6-symbol "^3.1.1"
+    object.assign "^4.1.0"
+
+long@4.0.0:
+  version "4.0.0"
+  resolved "https://registry.yarnpkg.com/long/-/long-4.0.0.tgz#9a7b71cfb7d361a194ea555241c92f7468d5bf28"
+
+long@^3.2.0:
+  version "3.2.0"
+  resolved "https://registry.yarnpkg.com/long/-/long-3.2.0.tgz#d821b7138ca1cb581c172990ef14db200b5c474b"
 
 loose-envify@^1.0.0, loose-envify@^1.1.0, loose-envify@^1.3.1:
-  version "1.3.1"
-  resolved "https://registry.yarnpkg.com/loose-envify/-/loose-envify-1.3.1.tgz#d1a8ad33fa9ce0e713d65fdd0ac8b748d478c848"
+  version "1.4.0"
+  resolved "https://registry.yarnpkg.com/loose-envify/-/loose-envify-1.4.0.tgz#71ee51fa7be4caec1a63839f7e682d8132d30caf"
   dependencies:
-    js-tokens "^3.0.0"
+    js-tokens "^3.0.0 || ^4.0.0"
 
 loud-rejection@^1.0.0, loud-rejection@^1.6.0:
   version "1.6.0"
@@ -4693,35 +4867,22 @@ lowercase-keys@^1.0.0:
   version "1.0.1"
   resolved "https://registry.yarnpkg.com/lowercase-keys/-/lowercase-keys-1.0.1.tgz#6f9e30b47084d971a7c820ff15a6c5167b74c26f"
 
-lru-cache@^4.0.1:
-  version "4.1.1"
-  resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-4.1.1.tgz#622e32e82488b49279114a4f9ecf45e7cd6bba55"
-  dependencies:
-    pseudomap "^1.0.2"
-    yallist "^2.1.2"
-
-lru-cache@^4.1.1:
-  version "4.1.2"
-  resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-4.1.2.tgz#45234b2e6e2f2b33da125624c4664929a0224c3f"
+lru-cache@^4.0.1, lru-cache@^4.1.1:
+  version "4.1.3"
+  resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-4.1.3.tgz#a1175cf3496dfc8436c156c334b4955992bce69c"
   dependencies:
     pseudomap "^1.0.2"
     yallist "^2.1.2"
 
-macaddress@^0.2.8:
-  version "0.2.8"
-  resolved "https://registry.yarnpkg.com/macaddress/-/macaddress-0.2.8.tgz#5904dc537c39ec6dbefeae902327135fa8511f12"
-
-make-dir@^1.0.0:
-  version "1.1.0"
-  resolved "https://registry.yarnpkg.com/make-dir/-/make-dir-1.1.0.tgz#19b4369fe48c116f53c2af95ad102c0e39e85d51"
+make-dir@^1.0.0, make-dir@^1.1.0:
+  version "1.3.0"
+  resolved "https://registry.yarnpkg.com/make-dir/-/make-dir-1.3.0.tgz#79c1033b80515bd6d24ec9933e860ca75ee27f0c"
   dependencies:
     pify "^3.0.0"
 
-make-dir@^1.1.0:
-  version "1.2.0"
-  resolved "https://registry.yarnpkg.com/make-dir/-/make-dir-1.2.0.tgz#6d6a49eead4aae296c53bbf3a1a008bd6c89469b"
-  dependencies:
-    pify "^3.0.0"
+mamacro@^0.0.3:
+  version "0.0.3"
+  resolved "https://registry.yarnpkg.com/mamacro/-/mamacro-0.0.3.tgz#ad2c9576197c9f1abf308d0787865bd975a3f3e4"
 
 map-cache@^0.2.2:
   version "0.2.2"
@@ -4755,6 +4916,10 @@ math-expression-evaluator@^1.2.14:
   version "1.2.17"
   resolved "https://registry.yarnpkg.com/math-expression-evaluator/-/math-expression-evaluator-1.2.17.tgz#de819fdbcd84dccd8fae59c6aeb79615b9d266ac"
 
+math-random@^1.0.1:
+  version "1.0.1"
+  resolved "https://registry.yarnpkg.com/math-random/-/math-random-1.0.1.tgz#8b3aac588b8a66e4975e3cdea67f7bb329601fac"
+
 md5.js@^1.3.4:
   version "1.3.4"
   resolved "https://registry.yarnpkg.com/md5.js/-/md5.js-1.3.4.tgz#e9bdbde94a20a5ac18b04340fc5764d5b09d901d"
@@ -4766,15 +4931,16 @@ media-typer@0.3.0:
   version "0.3.0"
   resolved "https://registry.yarnpkg.com/media-typer/-/media-typer-0.3.0.tgz#8710d7af0aa626f8fffa1ce00168545263255748"
 
-mem-fs-editor@^3.0.2:
-  version "3.0.2"
-  resolved "https://registry.yarnpkg.com/mem-fs-editor/-/mem-fs-editor-3.0.2.tgz#dd0a6eaf2bb8a6b37740067aa549eb530105af9f"
+mem-fs-editor@^4.0.0:
+  version "4.0.3"
+  resolved "https://registry.yarnpkg.com/mem-fs-editor/-/mem-fs-editor-4.0.3.tgz#d282a0c4e0d796e9eff9d75661f25f68f389af53"
   dependencies:
     commondir "^1.0.1"
-    deep-extend "^0.4.0"
-    ejs "^2.3.1"
+    deep-extend "^0.6.0"
+    ejs "^2.5.9"
     glob "^7.0.3"
-    globby "^6.1.0"
+    globby "^7.1.1"
+    isbinaryfile "^3.0.2"
     mkdirp "^0.5.0"
     multimatch "^2.0.0"
     rimraf "^2.2.8"
@@ -4827,6 +4993,10 @@ merge-options@0.0.64:
   dependencies:
     is-plain-obj "^1.1.0"
 
+merge2@^1.2.1:
+  version "1.2.2"
+  resolved "https://registry.yarnpkg.com/merge2/-/merge2-1.2.2.tgz#03212e3da8d86c4d8523cebd6318193414f94e34"
+
 methods@~1.1.2:
   version "1.1.2"
   resolved "https://registry.yarnpkg.com/methods/-/methods-1.1.2.tgz#5529a4d67654134edcc5266656835b0f851afcee"
@@ -4867,25 +5037,7 @@ micromatch@^2.3.7:
     parse-glob "^3.0.4"
     regex-cache "^0.4.2"
 
-micromatch@^3.1.4:
-  version "3.1.5"
-  resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-3.1.5.tgz#d05e168c206472dfbca985bfef4f57797b4cd4ba"
-  dependencies:
-    arr-diff "^4.0.0"
-    array-unique "^0.3.2"
-    braces "^2.3.0"
-    define-property "^1.0.0"
-    extend-shallow "^2.0.1"
-    extglob "^2.0.2"
-    fragment-cache "^0.2.1"
-    kind-of "^6.0.0"
-    nanomatch "^1.2.5"
-    object.pick "^1.3.0"
-    regex-not "^1.0.0"
-    snapdragon "^0.8.1"
-    to-regex "^3.0.1"
-
-micromatch@^3.1.8, micromatch@^3.1.9:
+micromatch@^3.1.10, micromatch@^3.1.4, micromatch@^3.1.8, micromatch@^3.1.9:
   version "3.1.10"
   resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-3.1.10.tgz#70859bc95c9840952f359a068a3fc49f9ecfac23"
   dependencies:
@@ -4910,19 +5062,15 @@ miller-rabin@^4.0.0:
     bn.js "^4.0.0"
     brorand "^1.0.1"
 
-"mime-db@>= 1.30.0 < 2":
-  version "1.32.0"
-  resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.32.0.tgz#485b3848b01a3cda5f968b4882c0771e58e09414"
-
-mime-db@~1.30.0:
-  version "1.30.0"
-  resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.30.0.tgz#74c643da2dd9d6a45399963465b26d5ca7d71f01"
+"mime-db@>= 1.34.0 < 2", mime-db@~1.35.0:
+  version "1.35.0"
+  resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.35.0.tgz#0569d657466491283709663ad379a99b90d9ab47"
 
-mime-types@^2.1.12, mime-types@~2.1.15, mime-types@~2.1.16, mime-types@~2.1.17, mime-types@~2.1.7:
-  version "2.1.17"
-  resolved "https://registry.yarnpkg.com/mime-types/-/mime-types-2.1.17.tgz#09d7a393f03e995a79f8af857b70a9e0ab16557a"
+mime-types@^2.1.12, mime-types@~2.1.17, mime-types@~2.1.18, mime-types@~2.1.7:
+  version "2.1.19"
+  resolved "https://registry.yarnpkg.com/mime-types/-/mime-types-2.1.19.tgz#71e464537a7ef81c15f2db9d97e913fc0ff606f0"
   dependencies:
-    mime-db "~1.30.0"
+    mime-db "~1.35.0"
 
 mime@1.4.1:
   version "1.4.1"
@@ -4937,12 +5085,12 @@ mimic-fn@^1.0.0:
   resolved "https://registry.yarnpkg.com/mimic-fn/-/mimic-fn-1.2.0.tgz#820c86a39334640e99516928bd03fca88057d022"
 
 mimic-response@^1.0.0:
-  version "1.0.0"
-  resolved "https://registry.yarnpkg.com/mimic-response/-/mimic-response-1.0.0.tgz#df3d3652a73fded6b9b0b24146e6fd052353458e"
+  version "1.0.1"
+  resolved "https://registry.yarnpkg.com/mimic-response/-/mimic-response-1.0.1.tgz#4923538878eef42063cb8a3e3b0798781487ab1b"
 
-minimalistic-assert@^1.0.0:
-  version "1.0.0"
-  resolved "https://registry.yarnpkg.com/minimalistic-assert/-/minimalistic-assert-1.0.0.tgz#702be2dda6b37f4836bcb3f5db56641b64a1d3d3"
+minimalistic-assert@^1.0.0, minimalistic-assert@^1.0.1:
+  version "1.0.1"
+  resolved "https://registry.yarnpkg.com/minimalistic-assert/-/minimalistic-assert-1.0.1.tgz#2e194de044626d4a10e7f7fbc00ce73e83e4d5c7"
 
 minimalistic-crypto-utils@^1.0.0, minimalistic-crypto-utils@^1.0.1:
   version "1.0.1"
@@ -4966,6 +5114,19 @@ minimist@^1.1.3, minimist@^1.2.0:
   version "1.2.0"
   resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.0.tgz#a35008b20f41383eec1fb914f4cd5df79a264284"
 
+minipass@^2.2.1, minipass@^2.3.3:
+  version "2.3.3"
+  resolved "https://registry.yarnpkg.com/minipass/-/minipass-2.3.3.tgz#a7dcc8b7b833f5d368759cce544dccb55f50f233"
+  dependencies:
+    safe-buffer "^5.1.2"
+    yallist "^3.0.0"
+
+minizlib@^1.1.0:
+  version "1.1.0"
+  resolved "https://registry.yarnpkg.com/minizlib/-/minizlib-1.1.0.tgz#11e13658ce46bc3a70a267aac58359d1e0c29ceb"
+  dependencies:
+    minipass "^2.2.1"
+
 mississippi@^2.0.0:
   version "2.0.0"
   resolved "https://registry.yarnpkg.com/mississippi/-/mississippi-2.0.0.tgz#3442a508fafc28500486feea99409676e4ee5a6f"
@@ -4986,8 +5147,8 @@ mitt@1.1.2:
   resolved "https://registry.yarnpkg.com/mitt/-/mitt-1.1.2.tgz#380e61480d6a615b660f07abb60d51e0a4e4bed6"
 
 mixin-deep@^1.2.0:
-  version "1.3.0"
-  resolved "https://registry.yarnpkg.com/mixin-deep/-/mixin-deep-1.3.0.tgz#47a8732ba97799457c8c1eca28f95132d7e8150a"
+  version "1.3.1"
+  resolved "https://registry.yarnpkg.com/mixin-deep/-/mixin-deep-1.3.1.tgz#a49e7268dce1a0d9698e45326c5626df3543d0fe"
   dependencies:
     for-in "^1.0.2"
     is-extendable "^1.0.1"
@@ -5025,11 +5186,11 @@ multicast-dns-service-types@^1.1.0:
   resolved "https://registry.yarnpkg.com/multicast-dns-service-types/-/multicast-dns-service-types-1.1.0.tgz#899f11d9686e5e05cb91b35d5f0e63b773cfc901"
 
 multicast-dns@^6.0.1:
-  version "6.2.2"
-  resolved "https://registry.yarnpkg.com/multicast-dns/-/multicast-dns-6.2.2.tgz#300b6133361f8aaaf2b8d1248e85c363fe5b95a0"
+  version "6.2.3"
+  resolved "https://registry.yarnpkg.com/multicast-dns/-/multicast-dns-6.2.3.tgz#a0ec7bd9055c4282f790c3c82f4e28db3b31b229"
   dependencies:
-    dns-packet "^1.0.1"
-    thunky "^0.1.0"
+    dns-packet "^1.3.1"
+    thunky "^1.0.2"
 
 multimatch@^2.0.0:
   version "2.1.0"
@@ -5044,20 +5205,19 @@ mute-stream@0.0.7:
   version "0.0.7"
   resolved "https://registry.yarnpkg.com/mute-stream/-/mute-stream-0.0.7.tgz#3075ce93bc21b8fab43e1bc4da7e8115ed1e7bab"
 
-nan@^2.3.0, nan@^2.3.2:
-  version "2.8.0"
-  resolved "https://registry.yarnpkg.com/nan/-/nan-2.8.0.tgz#ed715f3fe9de02b57a5e6252d90a96675e1f085a"
+nan@^2.10.0, nan@^2.9.2:
+  version "2.10.0"
+  resolved "https://registry.yarnpkg.com/nan/-/nan-2.10.0.tgz#96d0cd610ebd58d4b4de9cc0c6828cda99c7548f"
 
 nanomatch@^1.2.1, nanomatch@^1.2.9:
-  version "1.2.9"
-  resolved "https://registry.yarnpkg.com/nanomatch/-/nanomatch-1.2.9.tgz#879f7150cb2dab7a471259066c104eee6e0fa7c2"
+  version "1.2.13"
+  resolved "https://registry.yarnpkg.com/nanomatch/-/nanomatch-1.2.13.tgz#b87a8aa4fc0de8fe6be88895b38983ff265bd119"
   dependencies:
     arr-diff "^4.0.0"
     array-unique "^0.3.2"
     define-property "^2.0.2"
     extend-shallow "^3.0.2"
     fragment-cache "^0.2.1"
-    is-odd "^2.0.0"
     is-windows "^1.0.2"
     kind-of "^6.0.2"
     object.pick "^1.3.0"
@@ -5065,26 +5225,18 @@ nanomatch@^1.2.1, nanomatch@^1.2.9:
     snapdragon "^0.8.1"
     to-regex "^3.0.1"
 
-nanomatch@^1.2.5:
-  version "1.2.7"
-  resolved "https://registry.yarnpkg.com/nanomatch/-/nanomatch-1.2.7.tgz#53cd4aa109ff68b7f869591fdc9d10daeeea3e79"
-  dependencies:
-    arr-diff "^4.0.0"
-    array-unique "^0.3.2"
-    define-property "^1.0.0"
-    extend-shallow "^2.0.1"
-    fragment-cache "^0.2.1"
-    is-odd "^1.0.0"
-    kind-of "^5.0.2"
-    object.pick "^1.3.0"
-    regex-not "^1.0.0"
-    snapdragon "^0.8.1"
-    to-regex "^3.0.1"
-
 natural-compare@^1.4.0:
   version "1.4.0"
   resolved "https://registry.yarnpkg.com/natural-compare/-/natural-compare-1.4.0.tgz#4abebfeed7541f2c27acfb29bdbbd15c8d5ba4f7"
 
+needle@^2.2.1:
+  version "2.2.1"
+  resolved "https://registry.yarnpkg.com/needle/-/needle-2.2.1.tgz#b5e325bd3aae8c2678902fa296f729455d1d3a7d"
+  dependencies:
+    debug "^2.1.2"
+    iconv-lite "^0.4.4"
+    sax "^1.2.4"
+
 negotiator@0.6.1:
   version "0.6.1"
   resolved "https://registry.yarnpkg.com/negotiator/-/negotiator-0.6.1.tgz#2b327184e8992101177b28563fb5e7102acd0ca9"
@@ -5093,6 +5245,10 @@ neo-async@^2.5.0:
   version "2.5.1"
   resolved "https://registry.yarnpkg.com/neo-async/-/neo-async-2.5.1.tgz#acb909e327b1e87ec9ef15f41b8a269512ad41ee"
 
+next-tick@1:
+  version "1.0.0"
+  resolved "https://registry.yarnpkg.com/next-tick/-/next-tick-1.0.0.tgz#ca86d1fe8828169b0120208e3dc8424b9db8342c"
+
 nice-try@^1.0.4:
   version "1.0.4"
   resolved "https://registry.yarnpkg.com/nice-try/-/nice-try-1.0.4.tgz#d93962f6c52f2c1558c0fbda6d512819f1efe1c4"
@@ -5108,23 +5264,22 @@ node-fetch@^1.0.1:
     encoding "^0.1.11"
     is-stream "^1.0.1"
 
-node-forge@0.6.33:
-  version "0.6.33"
-  resolved "https://registry.yarnpkg.com/node-forge/-/node-forge-0.6.33.tgz#463811879f573d45155ad6a9f43dc296e8e85ebc"
+node-forge@0.7.5:
+  version "0.7.5"
+  resolved "https://registry.yarnpkg.com/node-forge/-/node-forge-0.7.5.tgz#6c152c345ce11c52f465c2abd957e8639cd674df"
 
 node-gyp@^3.3.1:
-  version "3.6.2"
-  resolved "https://registry.yarnpkg.com/node-gyp/-/node-gyp-3.6.2.tgz#9bfbe54562286284838e750eac05295853fa1c60"
+  version "3.7.0"
+  resolved "https://registry.yarnpkg.com/node-gyp/-/node-gyp-3.7.0.tgz#789478e8f6c45e277aa014f3e28f958f286f9203"
   dependencies:
     fstream "^1.0.0"
     glob "^7.0.3"
     graceful-fs "^4.1.2"
-    minimatch "^3.0.2"
     mkdirp "^0.5.0"
     nopt "2 || 3"
     npmlog "0 || 1 || 2 || 3 || 4"
     osenv "0"
-    request "2"
+    request ">=2.9.0 <2.82.0"
     rimraf "2"
     semver "~5.3.0"
     tar "^2.0.0"
@@ -5158,25 +5313,24 @@ node-libs-browser@^2.0.0:
     util "^0.10.3"
     vm-browserify "0.0.4"
 
-node-pre-gyp@^0.6.39:
-  version "0.6.39"
-  resolved "https://registry.yarnpkg.com/node-pre-gyp/-/node-pre-gyp-0.6.39.tgz#c00e96860b23c0e1420ac7befc5044e1d78d8649"
+node-pre-gyp@^0.10.0:
+  version "0.10.3"
+  resolved "https://registry.yarnpkg.com/node-pre-gyp/-/node-pre-gyp-0.10.3.tgz#3070040716afdc778747b61b6887bf78880b80fc"
   dependencies:
     detect-libc "^1.0.2"
-    hawk "3.1.3"
     mkdirp "^0.5.1"
+    needle "^2.2.1"
     nopt "^4.0.1"
+    npm-packlist "^1.1.6"
     npmlog "^4.0.2"
-    rc "^1.1.7"
-    request "2.81.0"
+    rc "^1.2.7"
     rimraf "^2.6.1"
     semver "^5.3.0"
-    tar "^2.2.1"
-    tar-pack "^3.4.0"
+    tar "^4"
 
 node-sass@^4.7.2:
-  version "4.7.2"
-  resolved "https://registry.yarnpkg.com/node-sass/-/node-sass-4.7.2.tgz#9366778ba1469eb01438a9e8592f4262bcb6794e"
+  version "4.9.2"
+  resolved "https://registry.yarnpkg.com/node-sass/-/node-sass-4.9.2.tgz#5e63fe6bd0f2ae3ac9d6c14ede8620e2b8bdb437"
   dependencies:
     async-foreach "^0.1.3"
     chalk "^1.1.1"
@@ -5190,10 +5344,10 @@ node-sass@^4.7.2:
     lodash.mergewith "^4.6.0"
     meow "^3.7.0"
     mkdirp "^0.5.1"
-    nan "^2.3.2"
+    nan "^2.10.0"
     node-gyp "^3.3.1"
     npmlog "^4.0.0"
-    request "~2.79.0"
+    request "2.87.0"
     sass-graph "^2.2.4"
     stdout-stream "^1.4.0"
     "true-case-path" "^1.0.2"
@@ -5254,6 +5408,17 @@ normalize-url@^1.4.0:
     query-string "^4.1.0"
     sort-keys "^1.0.0"
 
+npm-bundled@^1.0.1:
+  version "1.0.3"
+  resolved "https://registry.yarnpkg.com/npm-bundled/-/npm-bundled-1.0.3.tgz#7e71703d973af3370a9591bafe3a63aca0be2308"
+
+npm-packlist@^1.1.6:
+  version "1.1.11"
+  resolved "https://registry.yarnpkg.com/npm-packlist/-/npm-packlist-1.1.11.tgz#84e8c683cbe7867d34b1d357d893ce29e28a02de"
+  dependencies:
+    ignore-walk "^3.0.1"
+    npm-bundled "^1.0.1"
+
 npm-run-path@^2.0.0:
   version "2.0.2"
   resolved "https://registry.yarnpkg.com/npm-run-path/-/npm-run-path-2.0.2.tgz#35a9232dfa35d7067b4cb2ddf2357b1871536c5f"
@@ -5294,12 +5459,12 @@ object-copy@^0.1.0:
     kind-of "^3.0.3"
 
 object-hash@^1.1.4:
-  version "1.2.0"
-  resolved "https://registry.yarnpkg.com/object-hash/-/object-hash-1.2.0.tgz#e96af0e96981996a1d47f88ead8f74f1ebc4422b"
+  version "1.3.0"
+  resolved "https://registry.yarnpkg.com/object-hash/-/object-hash-1.3.0.tgz#76d9ba6ff113cf8efc0d996102851fe6723963e2"
 
-object-keys@^1.0.8:
-  version "1.0.11"
-  resolved "https://registry.yarnpkg.com/object-keys/-/object-keys-1.0.11.tgz#c54601778ad560f1142ce0e01bcca8b56d13426d"
+object-keys@^1.0.11, object-keys@^1.0.8:
+  version "1.0.12"
+  resolved "https://registry.yarnpkg.com/object-keys/-/object-keys-1.0.12.tgz#09c53855377575310cca62f55bb334abff7b3ed2"
 
 object-visit@^1.0.0:
   version "1.0.1"
@@ -5307,6 +5472,15 @@ object-visit@^1.0.0:
   dependencies:
     isobject "^3.0.0"
 
+object.assign@^4.1.0:
+  version "4.1.0"
+  resolved "https://registry.yarnpkg.com/object.assign/-/object.assign-4.1.0.tgz#968bf1100d7956bb3ca086f006f846b3bc4008da"
+  dependencies:
+    define-properties "^1.1.2"
+    function-bind "^1.1.1"
+    has-symbols "^1.0.0"
+    object-keys "^1.0.11"
+
 object.omit@^2.0.0:
   version "2.0.1"
   resolved "https://registry.yarnpkg.com/object.omit/-/object.omit-2.0.1.tgz#1a9c744829f39dbb858c76ca3579ae2a54ebd1fa"
@@ -5321,8 +5495,8 @@ object.pick@^1.3.0:
     isobject "^3.0.1"
 
 obuf@^1.0.0, obuf@^1.1.1:
-  version "1.1.1"
-  resolved "https://registry.yarnpkg.com/obuf/-/obuf-1.1.1.tgz#104124b6c602c6796881a042541d36db43a5264e"
+  version "1.1.2"
+  resolved "https://registry.yarnpkg.com/obuf/-/obuf-1.1.2.tgz#09bea3343d41859ebd446292d11c9d4db619084e"
 
 on-finished@~2.3.0:
   version "2.3.0"
@@ -5334,7 +5508,7 @@ on-headers@~1.0.1:
   version "1.0.1"
   resolved "https://registry.yarnpkg.com/on-headers/-/on-headers-1.0.1.tgz#928f5d0f470d49342651ea6794b0857c100693f7"
 
-once@^1.3.0, once@^1.3.1, once@^1.3.3, once@^1.4.0:
+once@^1.3.0, once@^1.3.1, once@^1.4.0:
   version "1.4.0"
   resolved "https://registry.yarnpkg.com/once/-/once-1.4.0.tgz#583b1aa775961d4b113ac17d9c50baef9dd76bd1"
   dependencies:
@@ -5351,8 +5525,8 @@ onetime@^2.0.0:
     mimic-fn "^1.0.0"
 
 opn@^5.1.0:
-  version "5.2.0"
-  resolved "https://registry.yarnpkg.com/opn/-/opn-5.2.0.tgz#71fdf934d6827d676cecbea1531f95d354641225"
+  version "5.3.0"
+  resolved "https://registry.yarnpkg.com/opn/-/opn-5.3.0.tgz#64871565c863875f052cfdf53d3e3cb5adb53b1c"
   dependencies:
     is-wsl "^1.1.0"
 
@@ -5377,10 +5551,10 @@ ora@^0.2.3:
     object-assign "^4.0.1"
 
 original@>=0.0.5:
-  version "1.0.0"
-  resolved "https://registry.yarnpkg.com/original/-/original-1.0.0.tgz#9147f93fa1696d04be61e01bd50baeaca656bd3b"
+  version "1.0.2"
+  resolved "https://registry.yarnpkg.com/original/-/original-1.0.2.tgz#e442a61cffe1c5fd20a65f3261c26663b303f25f"
   dependencies:
-    url-parse "1.0.x"
+    url-parse "^1.4.3"
 
 os-browserify@^0.3.0:
   version "0.3.0"
@@ -5409,8 +5583,8 @@ os-tmpdir@^1.0.0, os-tmpdir@^1.0.1, os-tmpdir@~1.0.2:
   resolved "https://registry.yarnpkg.com/os-tmpdir/-/os-tmpdir-1.0.2.tgz#bbe67406c79aa85c5cfec766fe5734555dfa1274"
 
 osenv@0, osenv@^0.1.4:
-  version "0.1.4"
-  resolved "https://registry.yarnpkg.com/osenv/-/osenv-0.1.4.tgz#42fe6d5953df06c8064be6f176c3d05aaaa34644"
+  version "0.1.5"
+  resolved "https://registry.yarnpkg.com/osenv/-/osenv-0.1.5.tgz#85cdfafaeb28e8677f416e287592b5f3f49ea410"
   dependencies:
     os-homedir "^1.0.0"
     os-tmpdir "^1.0.0"
@@ -5442,8 +5616,8 @@ p-lazy@^1.0.0:
   resolved "https://registry.yarnpkg.com/p-lazy/-/p-lazy-1.0.0.tgz#ec53c802f2ee3ac28f166cc82d0b2b02de27a835"
 
 p-limit@^1.1.0:
-  version "1.2.0"
-  resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-1.2.0.tgz#0e92b6bedcb59f022c13d0f1949dc82d15909f1c"
+  version "1.3.0"
+  resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-1.3.0.tgz#b86bd5f0c25690911c7590fcbfc2010d54b3ccb8"
   dependencies:
     p-try "^1.0.0"
 
@@ -5490,8 +5664,8 @@ parallel-transform@^1.1.0:
     readable-stream "^2.1.5"
 
 parse-asn1@^5.0.0:
-  version "5.1.0"
-  resolved "https://registry.yarnpkg.com/parse-asn1/-/parse-asn1-5.1.0.tgz#37c4f9b7ed3ab65c74817b5f2480937fbf97c712"
+  version "5.1.1"
+  resolved "https://registry.yarnpkg.com/parse-asn1/-/parse-asn1-5.1.1.tgz#f6bf293818332bd0dab54efb16087724745e6ca8"
   dependencies:
     asn1.js "^4.0.0"
     browserify-aes "^1.0.0"
@@ -5564,8 +5738,8 @@ path-key@^2.0.0, path-key@^2.0.1:
   resolved "https://registry.yarnpkg.com/path-key/-/path-key-2.0.1.tgz#411cadb574c5a140d3a4b1910d40d80cc9f40b40"
 
 path-parse@^1.0.5:
-  version "1.0.5"
-  resolved "https://registry.yarnpkg.com/path-parse/-/path-parse-1.0.5.tgz#3c1adf871ea9cd6c9431b6ea2bd74a0ff055c4c1"
+  version "1.0.6"
+  resolved "https://registry.yarnpkg.com/path-parse/-/path-parse-1.0.6.tgz#d62dbb5679405d72c4737ec58600e9ddcf06d24c"
 
 path-to-regexp@0.1.7:
   version "0.1.7"
@@ -5599,8 +5773,8 @@ path@^0.12.7:
     util "^0.10.3"
 
 pbkdf2@^3.0.3:
-  version "3.0.14"
-  resolved "https://registry.yarnpkg.com/pbkdf2/-/pbkdf2-3.0.14.tgz#a35e13c64799b06ce15320f459c230e68e73bade"
+  version "3.0.16"
+  resolved "https://registry.yarnpkg.com/pbkdf2/-/pbkdf2-3.0.16.tgz#7404208ec6b01b62d85bf83853a8064f8d9c2a5c"
   dependencies:
     create-hash "^1.1.2"
     create-hmac "^1.1.4"
@@ -5651,8 +5825,8 @@ pluralize@^7.0.0:
   resolved "https://registry.yarnpkg.com/pluralize/-/pluralize-7.0.0.tgz#298b89df8b93b0221dbf421ad2b1b1ea23fc6777"
 
 portfinder@^1.0.9:
-  version "1.0.13"
-  resolved "https://registry.yarnpkg.com/portfinder/-/portfinder-1.0.13.tgz#bb32ecd87c27104ae6ee44b5a3ccbf0ebb1aede9"
+  version "1.0.16"
+  resolved "https://registry.yarnpkg.com/portfinder/-/portfinder-1.0.16.tgz#a6a68be9c352bc66c1a4c17a261f661f3facaf52"
   dependencies:
     async "^1.5.2"
     debug "^2.2.0"
@@ -5717,11 +5891,10 @@ postcss-discard-unused@^2.2.1:
     uniqs "^2.0.0"
 
 postcss-filter-plugins@^2.0.0:
-  version "2.0.2"
-  resolved "https://registry.yarnpkg.com/postcss-filter-plugins/-/postcss-filter-plugins-2.0.2.tgz#6d85862534d735ac420e4a85806e1f5d4286d84c"
+  version "2.0.3"
+  resolved "https://registry.yarnpkg.com/postcss-filter-plugins/-/postcss-filter-plugins-2.0.3.tgz#82245fdf82337041645e477114d8e593aa18b8ec"
   dependencies:
     postcss "^5.0.4"
-    uniqid "^4.0.0"
 
 postcss-merge-idents@^2.1.5:
   version "2.1.7"
@@ -5907,12 +6080,12 @@ postcss@^5.0.10, postcss@^5.0.11, postcss@^5.0.12, postcss@^5.0.13, postcss@^5.0
     supports-color "^3.2.3"
 
 postcss@^6.0.1:
-  version "6.0.16"
-  resolved "https://registry.yarnpkg.com/postcss/-/postcss-6.0.16.tgz#112e2fe2a6d2109be0957687243170ea5589e146"
+  version "6.0.23"
+  resolved "https://registry.yarnpkg.com/postcss/-/postcss-6.0.23.tgz#61c82cc328ac60e677645f979054eb98bc0e3324"
   dependencies:
-    chalk "^2.3.0"
+    chalk "^2.4.1"
     source-map "^0.6.1"
-    supports-color "^5.1.0"
+    supports-color "^5.4.0"
 
 posthtml-parser@^0.2.0, posthtml-parser@^0.2.1:
   version "0.2.1"
@@ -5922,14 +6095,14 @@ posthtml-parser@^0.2.0, posthtml-parser@^0.2.1:
     isobject "^2.1.0"
 
 posthtml-rename-id@^1.0:
-  version "1.0.3"
-  resolved "https://registry.yarnpkg.com/posthtml-rename-id/-/posthtml-rename-id-1.0.3.tgz#acc7a7af62a58a695e8ab9c2d0b6b462ab3ee17f"
+  version "1.0.8"
+  resolved "https://registry.yarnpkg.com/posthtml-rename-id/-/posthtml-rename-id-1.0.8.tgz#dece77bf64e3c94417603e497c8537977db131bc"
   dependencies:
-    escape-string-regexp "^1.0.5"
+    escape-string-regexp "1.0.5"
 
 posthtml-render@^1.0.5, posthtml-render@^1.0.6:
-  version "1.1.3"
-  resolved "https://registry.yarnpkg.com/posthtml-render/-/posthtml-render-1.1.3.tgz#53e91c3debd0e7443704efa299329e1e10867f0e"
+  version "1.1.4"
+  resolved "https://registry.yarnpkg.com/posthtml-render/-/posthtml-render-1.1.4.tgz#95dac09892f4f183fad5ac823f08f42c0256551e"
 
 posthtml-svg-mode@^1.0:
   version "1.0.2"
@@ -5967,15 +6140,15 @@ prettier@1.10.2:
   version "1.10.2"
   resolved "https://registry.yarnpkg.com/prettier/-/prettier-1.10.2.tgz#1af8356d1842276a99a5b5529c82dd9e9ad3cc93"
 
-prettier@^1.5.3:
-  version "1.12.0"
-  resolved "https://registry.yarnpkg.com/prettier/-/prettier-1.12.0.tgz#d26fc5894b9230de97629b39cae225b503724ce8"
+prettier@^1.12.1:
+  version "1.14.0"
+  resolved "https://registry.yarnpkg.com/prettier/-/prettier-1.14.0.tgz#847c235522035fd988100f1f43cf20a7d24f9372"
 
 pretty-bytes@^4.0.2:
   version "4.0.2"
   resolved "https://registry.yarnpkg.com/pretty-bytes/-/pretty-bytes-4.0.2.tgz#b2bf82e7350d65c6c33aa95aaa5a4f6327f61cd9"
 
-private@^0.1.6, private@^0.1.7, private@~0.1.5:
+private@^0.1.6, private@^0.1.8, private@~0.1.5:
   version "0.1.8"
   resolved "https://registry.yarnpkg.com/private/-/private-0.1.8.tgz#2381edb3689f7a53d653190060fcf822d2f368ff"
 
@@ -5983,10 +6156,6 @@ process-nextick-args@^2.0.0, process-nextick-args@~2.0.0:
   version "2.0.0"
   resolved "https://registry.yarnpkg.com/process-nextick-args/-/process-nextick-args-2.0.0.tgz#a37d732f4271b4ab1ad070d35508e8290788ffaa"
 
-process-nextick-args@~1.0.6:
-  version "1.0.7"
-  resolved "https://registry.yarnpkg.com/process-nextick-args/-/process-nextick-args-1.0.7.tgz#150e20b756590ad3f91093f25a4f2ad8bff30ba3"
-
 process@^0.11.1, process@^0.11.10:
   version "0.11.10"
   resolved "https://registry.yarnpkg.com/process/-/process-0.11.10.tgz#7332300e840161bda3e69a1d1d91a7d4bc16f182"
@@ -6005,20 +6174,19 @@ promise@^7.1.1:
   dependencies:
     asap "~2.0.3"
 
-prop-types@^15.5.10, prop-types@^15.5.7, prop-types@^15.5.8, prop-types@^15.6.0:
-  version "15.6.0"
-  resolved "https://registry.yarnpkg.com/prop-types/-/prop-types-15.6.0.tgz#ceaf083022fc46b4a35f69e13ef75aed0d639856"
+prop-types@^15.5.10, prop-types@^15.5.7, prop-types@^15.5.8, prop-types@^15.6.0, prop-types@^15.6.2:
+  version "15.6.2"
+  resolved "https://registry.yarnpkg.com/prop-types/-/prop-types-15.6.2.tgz#05d5ca77b4453e985d60fc7ff8c859094a497102"
   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"
+proxy-addr@~2.0.3:
+  version "2.0.4"
+  resolved "https://registry.yarnpkg.com/proxy-addr/-/proxy-addr-2.0.4.tgz#ecfc733bf22ff8c6f407fa275327b9ab67e48b93"
   dependencies:
     forwarded "~0.1.2"
-    ipaddr.js "1.5.2"
+    ipaddr.js "1.8.0"
 
 prr@~1.0.1:
   version "1.0.1"
@@ -6029,8 +6197,8 @@ pseudomap@^1.0.2:
   resolved "https://registry.yarnpkg.com/pseudomap/-/pseudomap-1.0.2.tgz#f052a28da70e618917ef0a8ac34c1ae5a68286b3"
 
 public-encrypt@^4.0.0:
-  version "4.0.0"
-  resolved "https://registry.yarnpkg.com/public-encrypt/-/public-encrypt-4.0.0.tgz#39f699f3a46560dd5ebacbca693caf7c65c18cc6"
+  version "4.0.2"
+  resolved "https://registry.yarnpkg.com/public-encrypt/-/public-encrypt-4.0.2.tgz#46eb9107206bf73489f8b85b69d91334c6610994"
   dependencies:
     bn.js "^4.1.0"
     browserify-rsa "^4.0.0"
@@ -6046,10 +6214,10 @@ pump@^2.0.0, pump@^2.0.1:
     once "^1.3.1"
 
 pumpify@^1.3.3:
-  version "1.4.0"
-  resolved "https://registry.yarnpkg.com/pumpify/-/pumpify-1.4.0.tgz#80b7c5df7e24153d03f0e7ac8a05a5d068bd07fb"
+  version "1.5.1"
+  resolved "https://registry.yarnpkg.com/pumpify/-/pumpify-1.5.1.tgz#36513be246ab27570b1a374a5ce278bfd74370ce"
   dependencies:
-    duplexify "^3.5.3"
+    duplexify "^3.6.0"
     inherits "^2.0.3"
     pump "^2.0.0"
 
@@ -6062,25 +6230,25 @@ punycode@^1.2.4, punycode@^1.4.1:
   resolved "https://registry.yarnpkg.com/punycode/-/punycode-1.4.1.tgz#c0d5a63b2718800ad8e1eb0fa5269c84dd41845e"
 
 punycode@^2.1.0:
-  version "2.1.0"
-  resolved "https://registry.yarnpkg.com/punycode/-/punycode-2.1.0.tgz#5f863edc89b96db09074bad7947bf09056ca4e7d"
+  version "2.1.1"
+  resolved "https://registry.yarnpkg.com/punycode/-/punycode-2.1.1.tgz#b58b010ac40c22c5657616c8d2c2c02c7bf479ec"
 
 q@^1.1.2:
   version "1.5.1"
   resolved "https://registry.yarnpkg.com/q/-/q-1.5.1.tgz#7e32f75b41381291d04611f1bf14109ac00651d7"
 
-qs@6.5.1, qs@~6.5.1:
+qs@6.5.1:
   version "6.5.1"
   resolved "https://registry.yarnpkg.com/qs/-/qs-6.5.1.tgz#349cdf6eef89ec45c12d7d5eb3fc0c870343a6d8"
 
-qs@~6.3.0:
-  version "6.3.2"
-  resolved "https://registry.yarnpkg.com/qs/-/qs-6.3.2.tgz#e75bd5f6e268122a2a0e0bda630b2550c166502c"
-
 qs@~6.4.0:
   version "6.4.0"
   resolved "https://registry.yarnpkg.com/qs/-/qs-6.4.0.tgz#13e26d28ad6b0ffaa91312cd3bf708ed351e7233"
 
+qs@~6.5.1:
+  version "6.5.2"
+  resolved "https://registry.yarnpkg.com/qs/-/qs-6.5.2.tgz#cb3ae806e8740444584ef154ce8ee98d403f3e36"
+
 query-string@^4.1.0, query-string@^4.3.2:
   version "4.3.4"
   resolved "https://registry.yarnpkg.com/query-string/-/query-string-4.3.4.tgz#bbb693b9ca915c232515b228b1a02b609043dbeb"
@@ -6104,20 +6272,17 @@ querystring@0.2.0:
   version "0.2.0"
   resolved "https://registry.yarnpkg.com/querystring/-/querystring-0.2.0.tgz#b209849203bb25df820da756e747005878521620"
 
-querystringify@0.0.x:
-  version "0.0.4"
-  resolved "https://registry.yarnpkg.com/querystringify/-/querystringify-0.0.4.tgz#0cf7f84f9463ff0ae51c4c4b142d95be37724d9c"
-
-querystringify@~1.0.0:
-  version "1.0.0"
-  resolved "https://registry.yarnpkg.com/querystringify/-/querystringify-1.0.0.tgz#6286242112c5b712fa654e526652bf6a13ff05cb"
+querystringify@^2.0.0:
+  version "2.0.0"
+  resolved "https://registry.yarnpkg.com/querystringify/-/querystringify-2.0.0.tgz#fa3ed6e68eb15159457c89b37bc6472833195755"
 
-randomatic@^1.1.3:
-  version "1.1.7"
-  resolved "https://registry.yarnpkg.com/randomatic/-/randomatic-1.1.7.tgz#c7abe9cc8b87c0baa876b19fde83fd464797e38c"
+randomatic@^3.0.0:
+  version "3.0.0"
+  resolved "https://registry.yarnpkg.com/randomatic/-/randomatic-3.0.0.tgz#d35490030eb4f7578de292ce6dfb04a91a128923"
   dependencies:
-    is-number "^3.0.0"
-    kind-of "^4.0.0"
+    is-number "^4.0.0"
+    kind-of "^6.0.0"
+    math-random "^1.0.1"
 
 randombytes@^2.0.0, randombytes@^2.0.1, randombytes@^2.0.5:
   version "2.0.6"
@@ -6126,8 +6291,8 @@ randombytes@^2.0.0, randombytes@^2.0.1, randombytes@^2.0.5:
     safe-buffer "^5.1.0"
 
 randomfill@^1.0.3:
-  version "1.0.3"
-  resolved "https://registry.yarnpkg.com/randomfill/-/randomfill-1.0.3.tgz#b96b7df587f01dd91726c418f30553b1418e3d62"
+  version "1.0.4"
+  resolved "https://registry.yarnpkg.com/randomfill/-/randomfill-1.0.4.tgz#c92196fc86ab42be983f1bf31778224931d61458"
   dependencies:
     randombytes "^2.0.5"
     safe-buffer "^5.1.0"
@@ -6149,40 +6314,40 @@ raw-loader@^0.5.1:
   version "0.5.1"
   resolved "https://registry.yarnpkg.com/raw-loader/-/raw-loader-0.5.1.tgz#0c3d0beaed8a01c966d9787bf778281252a979aa"
 
-rc@^1.1.7:
-  version "1.2.4"
-  resolved "https://registry.yarnpkg.com/rc/-/rc-1.2.4.tgz#a0f606caae2a3b862bbd0ef85482c0125b315fa3"
+rc@^1.2.7:
+  version "1.2.8"
+  resolved "https://registry.yarnpkg.com/rc/-/rc-1.2.8.tgz#cd924bf5200a075b83c188cd6b9e211b7fc0d3ed"
   dependencies:
-    deep-extend "~0.4.0"
+    deep-extend "^0.6.0"
     ini "~1.3.0"
     minimist "^1.2.0"
     strip-json-comments "~2.0.1"
 
 react-dnd-html5-backend@^2.5.4:
-  version "2.5.4"
-  resolved "https://registry.yarnpkg.com/react-dnd-html5-backend/-/react-dnd-html5-backend-2.5.4.tgz#974ad083f67b12d56977a5b171f5ffeb29d78352"
+  version "2.6.0"
+  resolved "https://registry.yarnpkg.com/react-dnd-html5-backend/-/react-dnd-html5-backend-2.6.0.tgz#590cd1cca78441bb274edd571fef4c0b16ddcf8e"
   dependencies:
     lodash "^4.2.0"
 
 react-dnd@^2.5.4:
-  version "2.5.4"
-  resolved "https://registry.yarnpkg.com/react-dnd/-/react-dnd-2.5.4.tgz#0b6dc5e9d0dfc2909f4f4fe736e5534f3afd1bd9"
+  version "2.6.0"
+  resolved "https://registry.yarnpkg.com/react-dnd/-/react-dnd-2.6.0.tgz#7fa25676cf827d58a891293e3c1ab59da002545a"
   dependencies:
     disposables "^1.0.1"
-    dnd-core "^2.5.4"
+    dnd-core "^2.6.0"
     hoist-non-react-statics "^2.1.0"
     invariant "^2.1.0"
     lodash "^4.2.0"
     prop-types "^15.5.10"
 
-react-dom@^15.6.2:
-  version "15.6.2"
-  resolved "https://registry.yarnpkg.com/react-dom/-/react-dom-15.6.2.tgz#41cfadf693b757faf2708443a1d1fd5a02bef730"
+react-dom@^16.4.2:
+  version "16.4.2"
+  resolved "https://registry.yarnpkg.com/react-dom/-/react-dom-16.4.2.tgz#4afed569689f2c561d2b8da0b819669c38a0bda4"
   dependencies:
-    fbjs "^0.8.9"
+    fbjs "^0.8.16"
     loose-envify "^1.1.0"
-    object-assign "^4.1.0"
-    prop-types "^15.5.10"
+    object-assign "^4.1.1"
+    prop-types "^15.6.0"
 
 react-input-autosize@^2.1.2:
   version "2.2.1"
@@ -6190,16 +6355,16 @@ react-input-autosize@^2.1.2:
   dependencies:
     prop-types "^15.5.8"
 
-react-redux@^5.0.6:
-  version "5.0.6"
-  resolved "https://registry.yarnpkg.com/react-redux/-/react-redux-5.0.6.tgz#23ed3a4f986359d68b5212eaaa681e60d6574946"
+react-redux@^5.0.7:
+  version "5.0.7"
+  resolved "https://registry.yarnpkg.com/react-redux/-/react-redux-5.0.7.tgz#0dc1076d9afb4670f993ffaef44b8f8c1155a4c8"
   dependencies:
-    hoist-non-react-statics "^2.2.1"
+    hoist-non-react-statics "^2.5.0"
     invariant "^2.0.0"
-    lodash "^4.2.0"
-    lodash-es "^4.2.0"
+    lodash "^4.17.5"
+    lodash-es "^4.17.5"
     loose-envify "^1.1.0"
-    prop-types "^15.5.10"
+    prop-types "^15.6.0"
 
 react-select@1.2.1:
   version "1.2.1"
@@ -6209,15 +6374,14 @@ react-select@1.2.1:
     prop-types "^15.5.8"
     react-input-autosize "^2.1.2"
 
-react@^15.6.2:
-  version "15.6.2"
-  resolved "https://registry.yarnpkg.com/react/-/react-15.6.2.tgz#dba0434ab439cfe82f108f0f511663908179aa72"
+react@^16.4.2:
+  version "16.4.2"
+  resolved "https://registry.yarnpkg.com/react/-/react-16.4.2.tgz#2cd90154e3a9d9dd8da2991149fdca3c260e129f"
   dependencies:
-    create-react-class "^15.6.0"
-    fbjs "^0.8.9"
+    fbjs "^0.8.16"
     loose-envify "^1.1.0"
-    object-assign "^4.1.0"
-    prop-types "^15.5.10"
+    object-assign "^4.1.1"
+    prop-types "^15.6.0"
 
 read-chunk@^2.1.0:
   version "2.1.0"
@@ -6271,7 +6435,7 @@ read-pkg@^3.0.0:
     normalize-package-data "^2.3.2"
     path-type "^3.0.0"
 
-"readable-stream@1 || 2", readable-stream@^2.0.0, readable-stream@^2.0.4, readable-stream@^2.3.5:
+"readable-stream@1 || 2", readable-stream@^2.0.0, readable-stream@^2.0.1, readable-stream@^2.0.2, readable-stream@^2.0.4, readable-stream@^2.0.6, readable-stream@^2.1.5, readable-stream@^2.2.2, readable-stream@^2.2.9, readable-stream@^2.3.3, readable-stream@^2.3.5, readable-stream@^2.3.6:
   version "2.3.6"
   resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-2.3.6.tgz#b11c27d88b8ff1fbe070643cf94b0c79ae1b0aaf"
   dependencies:
@@ -6283,18 +6447,6 @@ read-pkg@^3.0.0:
     string_decoder "~1.1.1"
     util-deprecate "~1.0.1"
 
-readable-stream@^2.0.1, readable-stream@^2.0.2, readable-stream@^2.0.6, readable-stream@^2.1.4, readable-stream@^2.1.5, readable-stream@^2.2.2, readable-stream@^2.2.9, readable-stream@^2.3.3:
-  version "2.3.3"
-  resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-2.3.3.tgz#368f2512d79f9d46fdfc71349ae7878bbc1eb95c"
-  dependencies:
-    core-util-is "~1.0.0"
-    inherits "~2.0.3"
-    isarray "~1.0.0"
-    process-nextick-args "~1.0.6"
-    safe-buffer "~5.1.1"
-    string_decoder "~1.0.3"
-    util-deprecate "~1.0.1"
-
 readdirp@^2.0.0:
   version "2.1.0"
   resolved "https://registry.yarnpkg.com/readdirp/-/readdirp-2.1.0.tgz#4ed0ad060df3073300c48440373f72d1cc642d78"
@@ -6314,11 +6466,11 @@ recast@^0.12.5:
     private "~0.1.5"
     source-map "~0.6.1"
 
-recast@^0.14.1:
-  version "0.14.7"
-  resolved "https://registry.yarnpkg.com/recast/-/recast-0.14.7.tgz#4f1497c2b5826d42a66e8e3c9d80c512983ff61d"
+recast@^0.15.0:
+  version "0.15.3"
+  resolved "https://registry.yarnpkg.com/recast/-/recast-0.15.3.tgz#5fc1fd1c8e2d4d027ee3977a176bbb8d1c83305e"
   dependencies:
-    ast-types "0.11.3"
+    ast-types "0.11.5"
     esprima "~4.0.0"
     private "~0.1.5"
     source-map "~0.6.1"
@@ -6351,8 +6503,8 @@ reduce-function-call@^1.0.1:
     balanced-match "^0.4.2"
 
 redux-devtools-instrument@^1.0.1:
-  version "1.8.2"
-  resolved "https://registry.yarnpkg.com/redux-devtools-instrument/-/redux-devtools-instrument-1.8.2.tgz#5e91cfe402e790dae3fd2f0d235f7b7d84b09ffe"
+  version "1.9.0"
+  resolved "https://registry.yarnpkg.com/redux-devtools-instrument/-/redux-devtools-instrument-1.9.0.tgz#2faed9ac3292c783284b21843edfaa0567764a0c"
   dependencies:
     lodash "^4.2.0"
     symbol-observable "^1.0.2"
@@ -6375,8 +6527,8 @@ redux@^3.7.1, redux@^3.7.2:
     symbol-observable "^1.0.3"
 
 regenerate@^1.2.1:
-  version "1.3.3"
-  resolved "https://registry.yarnpkg.com/regenerate/-/regenerate-1.3.3.tgz#0c336d3980553d755c39b586ae3b20aa49c82b7f"
+  version "1.4.0"
+  resolved "https://registry.yarnpkg.com/regenerate/-/regenerate-1.4.0.tgz#4a856ec4b56e4077c557589cae85e7a4c8869a11"
 
 regenerator-runtime@^0.11.0:
   version "0.11.1"
@@ -6396,19 +6548,17 @@ regex-cache@^0.4.2:
   dependencies:
     is-equal-shallow "^0.1.3"
 
-regex-not@^1.0.0:
-  version "1.0.0"
-  resolved "https://registry.yarnpkg.com/regex-not/-/regex-not-1.0.0.tgz#42f83e39771622df826b02af176525d6a5f157f9"
-  dependencies:
-    extend-shallow "^2.0.1"
-
-regex-not@^1.0.2:
+regex-not@^1.0.0, regex-not@^1.0.2:
   version "1.0.2"
   resolved "https://registry.yarnpkg.com/regex-not/-/regex-not-1.0.2.tgz#1f4ece27e00b0b65e0247a6810e6a85d83a5752c"
   dependencies:
     extend-shallow "^3.0.2"
     safe-regex "^1.1.0"
 
+regexpp@^1.0.1:
+  version "1.1.0"
+  resolved "https://registry.yarnpkg.com/regexpp/-/regexpp-1.1.0.tgz#0e3516dd0b7904f413d2d4193dce4618c3a689ab"
+
 regexpu-core@^1.0.0:
   version "1.0.0"
   resolved "https://registry.yarnpkg.com/regexpu-core/-/regexpu-core-1.0.0.tgz#86a763f58ee4d7c2f6b102e4764050de7ed90c6b"
@@ -6461,9 +6611,9 @@ replace-ext@^1.0.0:
   version "1.0.0"
   resolved "https://registry.yarnpkg.com/replace-ext/-/replace-ext-1.0.0.tgz#de63128373fcbf7c3ccfa4de5a480c45a67958eb"
 
-request@2:
-  version "2.83.0"
-  resolved "https://registry.yarnpkg.com/request/-/request-2.83.0.tgz#ca0b65da02ed62935887808e6f510381034e3356"
+request@2.87.0:
+  version "2.87.0"
+  resolved "https://registry.yarnpkg.com/request/-/request-2.87.0.tgz#32f00235cd08d482b4d0d68db93a829c0ed5756e"
   dependencies:
     aws-sign2 "~0.7.0"
     aws4 "^1.6.0"
@@ -6473,7 +6623,6 @@ request@2:
     forever-agent "~0.6.1"
     form-data "~2.3.1"
     har-validator "~5.0.3"
-    hawk "~6.0.2"
     http-signature "~1.2.0"
     is-typedarray "~1.0.0"
     isstream "~0.1.2"
@@ -6483,12 +6632,11 @@ request@2:
     performance-now "^2.1.0"
     qs "~6.5.1"
     safe-buffer "^5.1.1"
-    stringstream "~0.0.5"
     tough-cookie "~2.3.3"
     tunnel-agent "^0.6.0"
     uuid "^3.1.0"
 
-request@2.81.0:
+"request@>=2.9.0 <2.82.0":
   version "2.81.0"
   resolved "https://registry.yarnpkg.com/request/-/request-2.81.0.tgz#c6928946a0e06c5f8d6f8a9333469ffda46298a0"
   dependencies:
@@ -6515,31 +6663,6 @@ request@2.81.0:
     tunnel-agent "^0.6.0"
     uuid "^3.0.0"
 
-request@~2.79.0:
-  version "2.79.0"
-  resolved "https://registry.yarnpkg.com/request/-/request-2.79.0.tgz#4dfe5bf6be8b8cdc37fcf93e04b65577722710de"
-  dependencies:
-    aws-sign2 "~0.6.0"
-    aws4 "^1.2.1"
-    caseless "~0.11.0"
-    combined-stream "~1.0.5"
-    extend "~3.0.0"
-    forever-agent "~0.6.1"
-    form-data "~2.1.1"
-    har-validator "~2.0.6"
-    hawk "~3.1.3"
-    http-signature "~1.1.0"
-    is-typedarray "~1.0.0"
-    isstream "~0.1.2"
-    json-stringify-safe "~5.0.1"
-    mime-types "~2.1.7"
-    oauth-sign "~0.8.1"
-    qs "~6.3.0"
-    stringstream "~0.0.4"
-    tough-cookie "~2.3.0"
-    tunnel-agent "~0.4.1"
-    uuid "^3.0.0"
-
 require-directory@^2.1.1:
   version "2.1.1"
   resolved "https://registry.yarnpkg.com/require-directory/-/require-directory-2.1.1.tgz#8c64ad5fd30dab1c976e2344ffe7f792a6a6df42"
@@ -6559,7 +6682,7 @@ require-uncached@^1.0.3:
     caller-path "^0.1.0"
     resolve-from "^1.0.0"
 
-requires-port@1.0.x, requires-port@1.x.x, requires-port@~1.0.0:
+requires-port@^1.0.0:
   version "1.0.0"
   resolved "https://registry.yarnpkg.com/requires-port/-/requires-port-1.0.0.tgz#925d2601d39ac485e091cf0da5c6e694dc3dcaff"
 
@@ -6595,15 +6718,9 @@ resolve-url@^0.2.1:
   version "0.2.1"
   resolved "https://registry.yarnpkg.com/resolve-url/-/resolve-url-0.2.1.tgz#2c637fe77c893afd2a663fe21aa9080068e2052a"
 
-resolve@^1.1.6:
-  version "1.7.1"
-  resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.7.1.tgz#aadd656374fd298aee895bc026b8297418677fd3"
-  dependencies:
-    path-parse "^1.0.5"
-
-resolve@^1.5.0:
-  version "1.5.0"
-  resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.5.0.tgz#1f09acce796c9a762579f31b2c1cc4c3cddf9f36"
+resolve@^1.1.6, resolve@^1.5.0, resolve@^1.6.0:
+  version "1.8.1"
+  resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.8.1.tgz#82f1ec19a423ac1fbd080b0bab06ba36e84a7a26"
   dependencies:
     path-parse "^1.0.5"
 
@@ -6631,7 +6748,7 @@ ret@~0.1.10:
   version "0.1.15"
   resolved "https://registry.yarnpkg.com/ret/-/ret-0.1.15.tgz#b8a4825d5bdb1fc3f6f53c2bc33f81388681c7bc"
 
-rimraf@2, rimraf@^2.2.8, rimraf@^2.5.1, rimraf@^2.5.4, rimraf@^2.6.1, rimraf@^2.6.2:
+rimraf@2, rimraf@^2.2.8, rimraf@^2.5.4, rimraf@^2.6.1, rimraf@^2.6.2:
   version "2.6.2"
   resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-2.6.2.tgz#2ed8150d24a16ea8651e6d6ef0f47c4158ce7a36"
   dependencies:
@@ -6642,10 +6759,10 @@ rimraf@~2.2.6:
   resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-2.2.8.tgz#e439be2aaee327321952730f99a8929e4fc50582"
 
 ripemd160@^2.0.0, ripemd160@^2.0.1:
-  version "2.0.1"
-  resolved "https://registry.yarnpkg.com/ripemd160/-/ripemd160-2.0.1.tgz#0f4584295c53a3628af7e6d79aca21ce57d1c6e7"
+  version "2.0.2"
+  resolved "https://registry.yarnpkg.com/ripemd160/-/ripemd160-2.0.2.tgz#a1c1a6f624751577ba5d07914cbc92850585890c"
   dependencies:
-    hash-base "^2.0.0"
+    hash-base "^3.0.0"
     inherits "^2.0.1"
 
 run-async@^2.0.0, run-async@^2.2.0:
@@ -6674,22 +6791,36 @@ rx-lite@*, rx-lite@^4.0.8:
   version "4.0.8"
   resolved "https://registry.yarnpkg.com/rx-lite/-/rx-lite-4.0.8.tgz#0b1e11af8bc44836f04a6407e92da42467b79444"
 
-rxjs@^5.4.2, rxjs@^5.5.2:
-  version "5.5.9"
-  resolved "https://registry.yarnpkg.com/rxjs/-/rxjs-5.5.9.tgz#12a0487794b00f5eb370fec2751bd973a89886fb"
+rxjs@^5.5.2:
+  version "5.5.11"
+  resolved "https://registry.yarnpkg.com/rxjs/-/rxjs-5.5.11.tgz#f733027ca43e3bec6b994473be4ab98ad43ced87"
   dependencies:
     symbol-observable "1.0.1"
 
-safe-buffer@5.1.1, safe-buffer@^5.0.1, safe-buffer@^5.1.0, safe-buffer@^5.1.1, safe-buffer@~5.1.0, safe-buffer@~5.1.1:
+rxjs@^6.1.0:
+  version "6.2.2"
+  resolved "https://registry.yarnpkg.com/rxjs/-/rxjs-6.2.2.tgz#eb75fa3c186ff5289907d06483a77884586e1cf9"
+  dependencies:
+    tslib "^1.9.0"
+
+safe-buffer@5.1.1:
   version "5.1.1"
   resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.1.1.tgz#893312af69b2123def71f57889001671eeb2c853"
 
+safe-buffer@5.1.2, safe-buffer@^5.0.1, safe-buffer@^5.1.0, safe-buffer@^5.1.1, safe-buffer@^5.1.2, safe-buffer@~5.1.0, safe-buffer@~5.1.1:
+  version "5.1.2"
+  resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.1.2.tgz#991ec69d296e0313747d59bdfd2b745c35f8828d"
+
 safe-regex@^1.1.0:
   version "1.1.0"
   resolved "https://registry.yarnpkg.com/safe-regex/-/safe-regex-1.1.0.tgz#40a3669f3b077d1e943d44629e157dd48023bf2e"
   dependencies:
     ret "~0.1.10"
 
+"safer-buffer@>= 2.1.2 < 3", safer-buffer@^2.0.2, safer-buffer@^2.1.0, safer-buffer@~2.1.0:
+  version "2.1.2"
+  resolved "https://registry.yarnpkg.com/safer-buffer/-/safer-buffer-2.1.2.tgz#44fa161b0187b9549dd84bb91802f9bd8385cd6a"
+
 sass-graph@^2.2.4:
   version "2.2.4"
   resolved "https://registry.yarnpkg.com/sass-graph/-/sass-graph-2.2.4.tgz#13fbd63cd1caf0908b9fd93476ad43a51d1e0b49"
@@ -6709,13 +6840,13 @@ sass-loader@^6.0.7:
     neo-async "^2.5.0"
     pify "^3.0.0"
 
-sax@~1.2.1:
+sax@^1.2.4, sax@~1.2.1:
   version "1.2.4"
   resolved "https://registry.yarnpkg.com/sax/-/sax-1.2.4.tgz#2816234e2378bddc4e5354fab5caa895df7100d9"
 
-schema-utils@^0.4.2, schema-utils@^0.4.3, schema-utils@^0.4.5:
-  version "0.4.5"
-  resolved "https://registry.yarnpkg.com/schema-utils/-/schema-utils-0.4.5.tgz#21836f0608aac17b78f9e3e24daff14a5ca13a3e"
+schema-utils@^0.4.3, schema-utils@^0.4.4, schema-utils@^0.4.5:
+  version "0.4.7"
+  resolved "https://registry.yarnpkg.com/schema-utils/-/schema-utils-0.4.7.tgz#ba74f597d2be2ea880131746ee17d0a093c68187"
   dependencies:
     ajv "^6.1.0"
     ajv-keywords "^3.1.0"
@@ -6736,10 +6867,10 @@ select-hose@^2.0.0:
   resolved "https://registry.yarnpkg.com/select-hose/-/select-hose-2.0.0.tgz#625d8658f865af43ec962bfc376a37359a4994ca"
 
 selfsigned@^1.9.1:
-  version "1.10.1"
-  resolved "https://registry.yarnpkg.com/selfsigned/-/selfsigned-1.10.1.tgz#bf8cb7b83256c4551e31347c6311778db99eec52"
+  version "1.10.3"
+  resolved "https://registry.yarnpkg.com/selfsigned/-/selfsigned-1.10.3.tgz#d628ecf9e3735f84e8bafba936b3cf85bea43823"
   dependencies:
-    node-forge "0.6.33"
+    node-forge "0.7.5"
 
 "semver@2 || 3 || 4 || 5", semver@^5.3.0, semver@^5.5.0:
   version "5.5.0"
@@ -6749,14 +6880,14 @@ semver@~5.3.0:
   version "5.3.0"
   resolved "https://registry.yarnpkg.com/semver/-/semver-5.3.0.tgz#9b2ce5d3de02d17c6012ad326aa6b4d0cf54f94f"
 
-send@0.16.1:
-  version "0.16.1"
-  resolved "https://registry.yarnpkg.com/send/-/send-0.16.1.tgz#a70e1ca21d1382c11d0d9f6231deb281080d7ab3"
+send@0.16.2:
+  version "0.16.2"
+  resolved "https://registry.yarnpkg.com/send/-/send-0.16.2.tgz#6ecca1e0f8c156d141597559848df64730a6bbc1"
   dependencies:
     debug "2.6.9"
-    depd "~1.1.1"
+    depd "~1.1.2"
     destroy "~1.0.4"
-    encodeurl "~1.0.1"
+    encodeurl "~1.0.2"
     escape-html "~1.0.3"
     etag "~1.8.1"
     fresh "0.5.2"
@@ -6765,11 +6896,11 @@ send@0.16.1:
     ms "2.0.0"
     on-finished "~2.3.0"
     range-parser "~1.2.0"
-    statuses "~1.3.1"
+    statuses "~1.4.0"
 
 serialize-javascript@^1.4.0:
-  version "1.4.0"
-  resolved "https://registry.yarnpkg.com/serialize-javascript/-/serialize-javascript-1.4.0.tgz#7c958514db6ac2443a8abc062dc9f7886a7f6005"
+  version "1.5.0"
+  resolved "https://registry.yarnpkg.com/serialize-javascript/-/serialize-javascript-1.5.0.tgz#1aa336162c88a890ddad5384baebc93a655161fe"
 
 serve-index@^1.7.2:
   version "1.9.1"
@@ -6783,14 +6914,14 @@ serve-index@^1.7.2:
     mime-types "~2.1.17"
     parseurl "~1.3.2"
 
-serve-static@1.13.1:
-  version "1.13.1"
-  resolved "https://registry.yarnpkg.com/serve-static/-/serve-static-1.13.1.tgz#4c57d53404a761d8f2e7c1e8a18a47dbf278a719"
+serve-static@1.13.2:
+  version "1.13.2"
+  resolved "https://registry.yarnpkg.com/serve-static/-/serve-static-1.13.2.tgz#095e8472fd5b46237db50ce486a43f4b86c6cec1"
   dependencies:
-    encodeurl "~1.0.1"
+    encodeurl "~1.0.2"
     escape-html "~1.0.3"
     parseurl "~1.3.2"
-    send "0.16.1"
+    send "0.16.2"
 
 set-blocking@^2.0.0, set-blocking@~2.0.0:
   version "2.0.0"
@@ -6837,8 +6968,8 @@ setprototypeof@1.1.0:
   resolved "https://registry.yarnpkg.com/setprototypeof/-/setprototypeof-1.1.0.tgz#d0bd85536887b6fe7c0d818cb962d9d91c54e656"
 
 sha.js@^2.4.0, sha.js@^2.4.8:
-  version "2.4.10"
-  resolved "https://registry.yarnpkg.com/sha.js/-/sha.js-2.4.10.tgz#b1fde5cd7d11a5626638a07c604ab909cfa31f9b"
+  version "2.4.11"
+  resolved "https://registry.yarnpkg.com/sha.js/-/sha.js-2.4.11.tgz#37a5cf0b81ecbc6943de109ba2960d1b26584ae7"
   dependencies:
     inherits "^2.0.1"
     safe-buffer "^5.0.1"
@@ -6862,8 +6993,8 @@ shebang-regex@^1.0.0:
   resolved "https://registry.yarnpkg.com/shebang-regex/-/shebang-regex-1.0.0.tgz#da42f49740c0b42db2ca9728571cb190c98efea3"
 
 shelljs@^0.8.0:
-  version "0.8.1"
-  resolved "https://registry.yarnpkg.com/shelljs/-/shelljs-0.8.1.tgz#729e038c413a2254c4078b95ed46e0397154a9f1"
+  version "0.8.2"
+  resolved "https://registry.yarnpkg.com/shelljs/-/shelljs-0.8.2.tgz#345b7df7763f4c2340d584abb532c5f752ca9e35"
   dependencies:
     glob "^7.0.0"
     interpret "^1.0.0"
@@ -6906,8 +7037,8 @@ snapdragon-util@^3.0.1:
     kind-of "^3.2.0"
 
 snapdragon@^0.8.1:
-  version "0.8.1"
-  resolved "https://registry.yarnpkg.com/snapdragon/-/snapdragon-0.8.1.tgz#e12b5487faded3e3dea0ac91e9400bf75b401370"
+  version "0.8.2"
+  resolved "https://registry.yarnpkg.com/snapdragon/-/snapdragon-0.8.2.tgz#64922e7c565b0e14204ba1aa7d6964278d25182d"
   dependencies:
     base "^0.11.1"
     debug "^2.2.0"
@@ -6916,7 +7047,7 @@ snapdragon@^0.8.1:
     map-cache "^0.2.2"
     source-map "^0.5.6"
     source-map-resolve "^0.5.0"
-    use "^2.0.0"
+    use "^3.1.0"
 
 sntp@1.x.x:
   version "1.0.9"
@@ -6924,15 +7055,9 @@ sntp@1.x.x:
   dependencies:
     hoek "2.x.x"
 
-sntp@2.x.x:
-  version "2.1.0"
-  resolved "https://registry.yarnpkg.com/sntp/-/sntp-2.1.0.tgz#2c6cec14fedc2222739caf9b5c3d85d1cc5a2cc8"
-  dependencies:
-    hoek "4.x.x"
-
-sockjs-client@1.1.4:
-  version "1.1.4"
-  resolved "https://registry.yarnpkg.com/sockjs-client/-/sockjs-client-1.1.4.tgz#5babe386b775e4cf14e7520911452654016c8b12"
+sockjs-client@1.1.5:
+  version "1.1.5"
+  resolved "https://registry.yarnpkg.com/sockjs-client/-/sockjs-client-1.1.5.tgz#1bb7c0f7222c40f42adf14f4442cbd1269771a83"
   dependencies:
     debug "^2.6.6"
     eventsource "0.1.6"
@@ -6965,10 +7090,10 @@ source-list-map@^2.0.0:
   resolved "https://registry.yarnpkg.com/source-list-map/-/source-list-map-2.0.0.tgz#aaa47403f7b245a92fbc97ea08f250d6087ed085"
 
 source-map-resolve@^0.5.0:
-  version "0.5.1"
-  resolved "https://registry.yarnpkg.com/source-map-resolve/-/source-map-resolve-0.5.1.tgz#7ad0f593f2281598e854df80f19aae4b92d7a11a"
+  version "0.5.2"
+  resolved "https://registry.yarnpkg.com/source-map-resolve/-/source-map-resolve-0.5.2.tgz#72e2cc34095543e43b2c62b2c4c10d4a9054f259"
   dependencies:
-    atob "^2.0.0"
+    atob "^2.1.1"
     decode-uri-component "^0.2.0"
     resolve-url "^0.2.1"
     source-map-url "^0.4.0"
@@ -6990,7 +7115,7 @@ source-map@^0.4.2:
   dependencies:
     amdefine ">=0.0.4"
 
-source-map@^0.5.3, source-map@^0.5.6:
+source-map@^0.5.0, source-map@^0.5.3, source-map@^0.5.6, source-map@^0.5.7:
   version "0.5.7"
   resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.5.7.tgz#8a039d2d1021d22d1ea14c80d8ea468ba2ef3fcc"
 
@@ -6998,23 +7123,31 @@ source-map@^0.6.1, source-map@~0.6.1:
   version "0.6.1"
   resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.6.1.tgz#74722af32e9614e9c287a8d0bbde48b5e2f1a263"
 
-spdx-correct@~1.0.0:
-  version "1.0.2"
-  resolved "https://registry.yarnpkg.com/spdx-correct/-/spdx-correct-1.0.2.tgz#4b3073d933ff51f3912f03ac5519498a4150db40"
+spdx-correct@^3.0.0:
+  version "3.0.0"
+  resolved "https://registry.yarnpkg.com/spdx-correct/-/spdx-correct-3.0.0.tgz#05a5b4d7153a195bc92c3c425b69f3b2a9524c82"
   dependencies:
-    spdx-license-ids "^1.0.2"
+    spdx-expression-parse "^3.0.0"
+    spdx-license-ids "^3.0.0"
 
-spdx-expression-parse@~1.0.0:
-  version "1.0.4"
-  resolved "https://registry.yarnpkg.com/spdx-expression-parse/-/spdx-expression-parse-1.0.4.tgz#9bdf2f20e1f40ed447fbe273266191fced51626c"
+spdx-exceptions@^2.1.0:
+  version "2.1.0"
+  resolved "https://registry.yarnpkg.com/spdx-exceptions/-/spdx-exceptions-2.1.0.tgz#2c7ae61056c714a5b9b9b2b2af7d311ef5c78fe9"
 
-spdx-license-ids@^1.0.2:
-  version "1.2.2"
-  resolved "https://registry.yarnpkg.com/spdx-license-ids/-/spdx-license-ids-1.2.2.tgz#c9df7a3424594ade6bd11900d596696dc06bac57"
+spdx-expression-parse@^3.0.0:
+  version "3.0.0"
+  resolved "https://registry.yarnpkg.com/spdx-expression-parse/-/spdx-expression-parse-3.0.0.tgz#99e119b7a5da00e05491c9fa338b7904823b41d0"
+  dependencies:
+    spdx-exceptions "^2.1.0"
+    spdx-license-ids "^3.0.0"
+
+spdx-license-ids@^3.0.0:
+  version "3.0.0"
+  resolved "https://registry.yarnpkg.com/spdx-license-ids/-/spdx-license-ids-3.0.0.tgz#7a7cd28470cc6d3a1cfe6d66886f6bc430d3ac87"
 
 spdy-transport@^2.0.18:
-  version "2.0.20"
-  resolved "https://registry.yarnpkg.com/spdy-transport/-/spdy-transport-2.0.20.tgz#735e72054c486b2354fe89e702256004a39ace4d"
+  version "2.1.0"
+  resolved "https://registry.yarnpkg.com/spdy-transport/-/spdy-transport-2.1.0.tgz#4bbb15aaffed0beefdd56ad61dbdc8ba3e2cb7a1"
   dependencies:
     debug "^2.6.8"
     detect-node "^2.0.3"
@@ -7046,13 +7179,14 @@ sprintf-js@~1.0.2:
   resolved "https://registry.yarnpkg.com/sprintf-js/-/sprintf-js-1.0.3.tgz#04e6926f662895354f3dd015203633b857297e2c"
 
 sshpk@^1.7.0:
-  version "1.13.1"
-  resolved "https://registry.yarnpkg.com/sshpk/-/sshpk-1.13.1.tgz#512df6da6287144316dc4c18fe1cf1d940739be3"
+  version "1.14.2"
+  resolved "https://registry.yarnpkg.com/sshpk/-/sshpk-1.14.2.tgz#c6fc61648a3d9c4e764fd3fcdf4ea105e492ba98"
   dependencies:
     asn1 "~0.2.3"
     assert-plus "^1.0.0"
     dashdash "^1.12.0"
     getpass "^0.1.1"
+    safer-buffer "^2.0.2"
   optionalDependencies:
     bcrypt-pbkdf "^1.0.0"
     ecc-jsbn "~0.1.1"
@@ -7072,14 +7206,14 @@ static-extend@^0.1.1:
     define-property "^0.2.5"
     object-copy "^0.1.0"
 
-"statuses@>= 1.3.1 < 2":
+"statuses@>= 1.3.1 < 2", "statuses@>= 1.4.0 < 2":
+  version "1.5.0"
+  resolved "https://registry.yarnpkg.com/statuses/-/statuses-1.5.0.tgz#161c7dac177659fd9811f43771fa99381478628c"
+
+statuses@~1.4.0:
   version "1.4.0"
   resolved "https://registry.yarnpkg.com/statuses/-/statuses-1.4.0.tgz#bb73d446da2796106efcc1b601a253d6c46bd087"
 
-statuses@~1.3.1:
-  version "1.3.1"
-  resolved "https://registry.yarnpkg.com/statuses/-/statuses-1.3.1.tgz#faf51b9eb74aaef3b3acf4ad5f61abf24cb7b93e"
-
 stdout-stream@^1.4.0:
   version "1.4.0"
   resolved "https://registry.yarnpkg.com/stdout-stream/-/stdout-stream-1.4.0.tgz#a2c7c8587e54d9427ea9edb3ac3f2cd522df378b"
@@ -7094,19 +7228,19 @@ stream-browserify@^2.0.1:
     readable-stream "^2.0.2"
 
 stream-each@^1.1.0:
-  version "1.2.2"
-  resolved "https://registry.yarnpkg.com/stream-each/-/stream-each-1.2.2.tgz#8e8c463f91da8991778765873fe4d960d8f616bd"
+  version "1.2.3"
+  resolved "https://registry.yarnpkg.com/stream-each/-/stream-each-1.2.3.tgz#ebe27a0c389b04fbcc233642952e10731afa9bae"
   dependencies:
     end-of-stream "^1.1.0"
     stream-shift "^1.0.0"
 
 stream-http@^2.7.2:
-  version "2.8.0"
-  resolved "https://registry.yarnpkg.com/stream-http/-/stream-http-2.8.0.tgz#fd86546dac9b1c91aff8fc5d287b98fafb41bc10"
+  version "2.8.3"
+  resolved "https://registry.yarnpkg.com/stream-http/-/stream-http-2.8.3.tgz#b2d242469288a5a27ec4fe8933acf623de6514fc"
   dependencies:
     builtin-status-codes "^3.0.0"
     inherits "^2.0.1"
-    readable-stream "^2.3.3"
+    readable-stream "^2.3.6"
     to-arraybuffer "^1.0.0"
     xtend "^4.0.0"
 
@@ -7114,12 +7248,6 @@ stream-shift@^1.0.0:
   version "1.0.0"
   resolved "https://registry.yarnpkg.com/stream-shift/-/stream-shift-1.0.0.tgz#d5c752825e5367e786f78e18e445ea223a155952"
 
-stream-to-observable@^0.2.0:
-  version "0.2.0"
-  resolved "https://registry.yarnpkg.com/stream-to-observable/-/stream-to-observable-0.2.0.tgz#59d6ea393d87c2c0ddac10aa0d561bc6ba6f0e10"
-  dependencies:
-    any-observable "^0.2.0"
-
 strict-uri-encode@^1.0.0:
   version "1.1.0"
   resolved "https://registry.yarnpkg.com/strict-uri-encode/-/strict-uri-encode-1.1.0.tgz#279b225df1d582b1f54e65addd4352e18faa0713"
@@ -7136,28 +7264,22 @@ string-width@^1.0.1, string-width@^1.0.2:
     is-fullwidth-code-point "^1.0.0"
     strip-ansi "^3.0.0"
 
-string-width@^2.0.0, string-width@^2.1.0, string-width@^2.1.1:
+"string-width@^1.0.2 || 2", string-width@^2.0.0, string-width@^2.1.0, string-width@^2.1.1:
   version "2.1.1"
   resolved "https://registry.yarnpkg.com/string-width/-/string-width-2.1.1.tgz#ab93f27a8dc13d28cac815c462143a6d9012ae9e"
   dependencies:
     is-fullwidth-code-point "^2.0.0"
     strip-ansi "^4.0.0"
 
-string_decoder@^1.0.0, string_decoder@~1.0.3:
-  version "1.0.3"
-  resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-1.0.3.tgz#0fc67d7c141825de94282dd536bec6b9bce860ab"
-  dependencies:
-    safe-buffer "~5.1.0"
-
-string_decoder@~1.1.1:
+string_decoder@^1.0.0, string_decoder@~1.1.1:
   version "1.1.1"
   resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-1.1.1.tgz#9cf1611ba62685d7030ae9e4ba34149c3af03fc8"
   dependencies:
     safe-buffer "~5.1.0"
 
-stringstream@~0.0.4, stringstream@~0.0.5:
-  version "0.0.5"
-  resolved "https://registry.yarnpkg.com/stringstream/-/stringstream-0.0.5.tgz#4e484cd4de5a0bbbee18e46307710a8a81621878"
+stringstream@~0.0.4:
+  version "0.0.6"
+  resolved "https://registry.yarnpkg.com/stringstream/-/stringstream-0.0.6.tgz#7880225b0d4ad10e30927d167a1d6f2fd3b33a72"
 
 strip-ansi@^3.0.0, strip-ansi@^3.0.1:
   version "3.0.1"
@@ -7238,33 +7360,15 @@ supports-color@^3.2.3:
   dependencies:
     has-flag "^1.0.0"
 
-supports-color@^4.0.0:
-  version "4.5.0"
-  resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-4.5.0.tgz#be7a0de484dec5c5cddf8b3d59125044912f635b"
-  dependencies:
-    has-flag "^2.0.0"
-
-supports-color@^5.1.0:
-  version "5.1.0"
-  resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-5.1.0.tgz#058a021d1b619f7ddf3980d712ea3590ce7de3d5"
-  dependencies:
-    has-flag "^2.0.0"
-
-supports-color@^5.2.0:
-  version "5.2.0"
-  resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-5.2.0.tgz#b0d5333b1184dd3666cbe5aa0b45c5ac7ac17a4a"
-  dependencies:
-    has-flag "^3.0.0"
-
-supports-color@^5.3.0:
-  version "5.3.0"
-  resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-5.3.0.tgz#5b24ac15db80fa927cf5227a4a33fd3c4c7676c0"
+supports-color@^5.1.0, supports-color@^5.3.0, supports-color@^5.4.0:
+  version "5.4.0"
+  resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-5.4.0.tgz#1c6b337402c2137605efe19f10fec390f6faab54"
   dependencies:
     has-flag "^3.0.0"
 
 svg-baker-runtime@^1.3.3:
-  version "1.3.3"
-  resolved "https://registry.yarnpkg.com/svg-baker-runtime/-/svg-baker-runtime-1.3.3.tgz#077c21baceb45424928883b3343d298b19edd8ef"
+  version "1.3.5"
+  resolved "https://registry.yarnpkg.com/svg-baker-runtime/-/svg-baker-runtime-1.3.5.tgz#f92d133d1fedfc8b8cfb9f9ab00c89253461dfb6"
   dependencies:
     deepmerge "1.3.2"
     mitt "1.1.2"
@@ -7317,20 +7421,16 @@ symbol-observable@1.0.1:
   version "1.0.1"
   resolved "https://registry.yarnpkg.com/symbol-observable/-/symbol-observable-1.0.1.tgz#8340fc4702c3122df5d22288f88283f513d3fdd4"
 
-symbol-observable@^0.2.2:
-  version "0.2.4"
-  resolved "https://registry.yarnpkg.com/symbol-observable/-/symbol-observable-0.2.4.tgz#95a83db26186d6af7e7a18dbd9760a2f86d08f40"
-
-symbol-observable@^1.0.2, symbol-observable@^1.0.3:
-  version "1.1.0"
-  resolved "https://registry.yarnpkg.com/symbol-observable/-/symbol-observable-1.1.0.tgz#5c68fd8d54115d9dfb72a84720549222e8db9b32"
+symbol-observable@^1.0.2, symbol-observable@^1.0.3, symbol-observable@^1.1.0:
+  version "1.2.0"
+  resolved "https://registry.yarnpkg.com/symbol-observable/-/symbol-observable-1.2.0.tgz#c22688aed4eab3cdc2dfeacbb561660560a00804"
 
-table@^4.0.1:
-  version "4.0.3"
-  resolved "https://registry.yarnpkg.com/table/-/table-4.0.3.tgz#00b5e2b602f1794b9acaf9ca908a76386a7813bc"
+table@4.0.2:
+  version "4.0.2"
+  resolved "https://registry.yarnpkg.com/table/-/table-4.0.2.tgz#a33447375391e766ad34d3486e6e2aedc84d2e36"
   dependencies:
-    ajv "^6.0.1"
-    ajv-keywords "^3.0.0"
+    ajv "^5.2.3"
+    ajv-keywords "^2.1.0"
     chalk "^2.1.0"
     lodash "^4.17.4"
     slice-ansi "1.0.0"
@@ -7340,20 +7440,7 @@ tapable@^1.0.0:
   version "1.0.0"
   resolved "https://registry.yarnpkg.com/tapable/-/tapable-1.0.0.tgz#cbb639d9002eed9c6b5975eb20598d7936f1f9f2"
 
-tar-pack@^3.4.0:
-  version "3.4.1"
-  resolved "https://registry.yarnpkg.com/tar-pack/-/tar-pack-3.4.1.tgz#e1dbc03a9b9d3ba07e896ad027317eb679a10a1f"
-  dependencies:
-    debug "^2.2.0"
-    fstream "^1.0.10"
-    fstream-ignore "^1.0.5"
-    once "^1.3.3"
-    readable-stream "^2.1.4"
-    rimraf "^2.5.1"
-    tar "^2.2.1"
-    uid-number "^0.0.6"
-
-tar@^2.0.0, tar@^2.2.1:
+tar@^2.0.0:
   version "2.2.1"
   resolved "https://registry.yarnpkg.com/tar/-/tar-2.2.1.tgz#8e4d2a256c0e2185c6b18ad694aec968b83cb1d1"
   dependencies:
@@ -7361,6 +7448,18 @@ tar@^2.0.0, tar@^2.2.1:
     fstream "^1.0.2"
     inherits "2"
 
+tar@^4:
+  version "4.4.6"
+  resolved "https://registry.yarnpkg.com/tar/-/tar-4.4.6.tgz#63110f09c00b4e60ac8bcfe1bf3c8660235fbc9b"
+  dependencies:
+    chownr "^1.0.1"
+    fs-minipass "^1.2.5"
+    minipass "^2.3.3"
+    minizlib "^1.1.0"
+    mkdirp "^0.5.0"
+    safe-buffer "^5.1.2"
+    yallist "^3.0.2"
+
 temp@^0.8.1:
   version "0.8.3"
   resolved "https://registry.yarnpkg.com/temp/-/temp-0.8.3.tgz#e0c6bc4d26b903124410e4fed81103014dfc1f59"
@@ -7387,17 +7486,17 @@ through@^2.3.6:
   version "2.3.8"
   resolved "https://registry.yarnpkg.com/through/-/through-2.3.8.tgz#0dd4c9ffaabc357960b1b724115d7e0e86a2e1f5"
 
-thunky@^0.1.0:
-  version "0.1.0"
-  resolved "https://registry.yarnpkg.com/thunky/-/thunky-0.1.0.tgz#bf30146824e2b6e67b0f2d7a4ac8beb26908684e"
+thunky@^1.0.2:
+  version "1.0.2"
+  resolved "https://registry.yarnpkg.com/thunky/-/thunky-1.0.2.tgz#a862e018e3fb1ea2ec3fce5d55605cf57f247371"
 
 timed-out@^4.0.0, timed-out@^4.0.1:
   version "4.0.1"
   resolved "https://registry.yarnpkg.com/timed-out/-/timed-out-4.0.1.tgz#f32eacac5a175bea25d7fab565ab3ed8741ef56f"
 
 timers-browserify@^2.0.4:
-  version "2.0.6"
-  resolved "https://registry.yarnpkg.com/timers-browserify/-/timers-browserify-2.0.6.tgz#241e76927d9ca05f4d959819022f5b3664b64bae"
+  version "2.0.10"
+  resolved "https://registry.yarnpkg.com/timers-browserify/-/timers-browserify-2.0.10.tgz#1d28e3d2aadf1d5a5996c4e9f95601cd053480ae"
   dependencies:
     setimmediate "^1.0.4"
 
@@ -7445,15 +7544,7 @@ to-regex-range@^2.1.0:
     is-number "^3.0.0"
     repeat-string "^1.6.1"
 
-to-regex@^3.0.1:
-  version "3.0.1"
-  resolved "https://registry.yarnpkg.com/to-regex/-/to-regex-3.0.1.tgz#15358bee4a2c83bd76377ba1dc049d0f18837aae"
-  dependencies:
-    define-property "^0.2.5"
-    extend-shallow "^2.0.1"
-    regex-not "^1.0.0"
-
-to-regex@^3.0.2:
+to-regex@^3.0.1, to-regex@^3.0.2:
   version "3.0.2"
   resolved "https://registry.yarnpkg.com/to-regex/-/to-regex-3.0.2.tgz#13cfdd9b336552f30b51f33a8ae1b42a7a7599ce"
   dependencies:
@@ -7463,8 +7554,8 @@ to-regex@^3.0.2:
     safe-regex "^1.1.0"
 
 tough-cookie@~2.3.0, tough-cookie@~2.3.3:
-  version "2.3.3"
-  resolved "https://registry.yarnpkg.com/tough-cookie/-/tough-cookie-2.3.3.tgz#0b618a5565b6dea90bf3425d04d55edc475a7561"
+  version "2.3.4"
+  resolved "https://registry.yarnpkg.com/tough-cookie/-/tough-cookie-2.3.4.tgz#ec60cee38ac675063ffc97a5c18970578ee83655"
   dependencies:
     punycode "^1.4.1"
 
@@ -7486,6 +7577,10 @@ trim-right@^1.0.1:
   dependencies:
     glob "^6.0.4"
 
+tslib@^1.9.0:
+  version "1.9.3"
+  resolved "https://registry.yarnpkg.com/tslib/-/tslib-1.9.3.tgz#d7e4dd79245d85428c4d7e4822a79917954ca286"
+
 tty-browserify@0.0.0:
   version "0.0.0"
   resolved "https://registry.yarnpkg.com/tty-browserify/-/tty-browserify-0.0.0.tgz#a157ba402da24e9bf957f9aa69d524eed42901a6"
@@ -7496,10 +7591,6 @@ tunnel-agent@^0.6.0:
   dependencies:
     safe-buffer "^5.0.1"
 
-tunnel-agent@~0.4.1:
-  version "0.4.3"
-  resolved "https://registry.yarnpkg.com/tunnel-agent/-/tunnel-agent-0.4.3.tgz#6373db76909fe570e08d73583365ed828a74eeeb"
-
 tweetnacl@^0.14.3, tweetnacl@~0.14.0:
   version "0.14.5"
   resolved "https://registry.yarnpkg.com/tweetnacl/-/tweetnacl-0.14.5.tgz#5ae68177f192d4456269d108afa93ff8743f4f64"
@@ -7510,20 +7601,20 @@ type-check@~0.3.2:
   dependencies:
     prelude-ls "~1.1.2"
 
-type-is@~1.6.15:
-  version "1.6.15"
-  resolved "https://registry.yarnpkg.com/type-is/-/type-is-1.6.15.tgz#cab10fb4909e441c82842eafe1ad646c81804410"
+type-is@~1.6.15, type-is@~1.6.16:
+  version "1.6.16"
+  resolved "https://registry.yarnpkg.com/type-is/-/type-is-1.6.16.tgz#f89ce341541c672b25ee7ae3c73dee3b2be50194"
   dependencies:
     media-typer "0.3.0"
-    mime-types "~2.1.15"
+    mime-types "~2.1.18"
 
 typedarray@^0.0.6:
   version "0.0.6"
   resolved "https://registry.yarnpkg.com/typedarray/-/typedarray-0.0.6.tgz#867ac74e3864187b1d3d47d996a78ec5c8830777"
 
-ua-parser-js@^0.7.9:
-  version "0.7.17"
-  resolved "https://registry.yarnpkg.com/ua-parser-js/-/ua-parser-js-0.7.17.tgz#e9ec5f9498b9ec910e7ae3ac626a805c4d09ecac"
+ua-parser-js@^0.7.18:
+  version "0.7.18"
+  resolved "https://registry.yarnpkg.com/ua-parser-js/-/ua-parser-js-0.7.18.tgz#a7bfd92f56edfb117083b69e31d2aa8882d4b1ed"
 
 uglify-es@^3.3.4:
   version "3.3.9"
@@ -7533,8 +7624,8 @@ uglify-es@^3.3.4:
     source-map "~0.6.1"
 
 uglifyjs-webpack-plugin@^1.2.4:
-  version "1.2.4"
-  resolved "https://registry.yarnpkg.com/uglifyjs-webpack-plugin/-/uglifyjs-webpack-plugin-1.2.4.tgz#5eec941b2e9b8538be0a20fc6eda25b14c7c1043"
+  version "1.2.7"
+  resolved "https://registry.yarnpkg.com/uglifyjs-webpack-plugin/-/uglifyjs-webpack-plugin-1.2.7.tgz#57638dd99c853a1ebfe9d97b42160a8a507f9d00"
   dependencies:
     cacache "^10.0.4"
     find-cache-dir "^1.0.0"
@@ -7545,10 +7636,6 @@ uglifyjs-webpack-plugin@^1.2.4:
     webpack-sources "^1.1.0"
     worker-farm "^1.5.2"
 
-uid-number@^0.0.6:
-  version "0.0.6"
-  resolved "https://registry.yarnpkg.com/uid-number/-/uid-number-0.0.6.tgz#0ea10e8035e8eb5b8e4449f06da1c730663baa81"
-
 underscore@~1.6.0:
   version "1.6.0"
   resolved "https://registry.yarnpkg.com/underscore/-/underscore-1.6.0.tgz#8b38b10cacdef63337b8b24e4ff86d45aea529a8"
@@ -7570,12 +7657,6 @@ uniq@^1.0.1:
   version "1.0.1"
   resolved "https://registry.yarnpkg.com/uniq/-/uniq-1.0.1.tgz#b31c5ae8254844a3a8281541ce2b04b865a734ff"
 
-uniqid@^4.0.0:
-  version "4.1.1"
-  resolved "https://registry.yarnpkg.com/uniqid/-/uniqid-4.1.1.tgz#89220ddf6b751ae52b5f72484863528596bb84c1"
-  dependencies:
-    macaddress "^0.2.8"
-
 uniqs@^2.0.0:
   version "2.0.0"
   resolved "https://registry.yarnpkg.com/uniqs/-/uniqs-2.0.0.tgz#ffede4b36b25290696e6e165d4a59edb998e6b02"
@@ -7604,16 +7685,16 @@ unset-value@^1.0.0:
     isobject "^3.0.0"
 
 untildify@^3.0.2:
-  version "3.0.2"
-  resolved "https://registry.yarnpkg.com/untildify/-/untildify-3.0.2.tgz#7f1f302055b3fea0f3e81dc78eb36766cb65e3f1"
+  version "3.0.3"
+  resolved "https://registry.yarnpkg.com/untildify/-/untildify-3.0.3.tgz#1e7b42b140bcfd922b22e70ca1265bfe3634c7c9"
 
-upath@^1.0.0:
-  version "1.0.4"
-  resolved "https://registry.yarnpkg.com/upath/-/upath-1.0.4.tgz#ee2321ba0a786c50973db043a50b7bcba822361d"
+upath@^1.0.5:
+  version "1.1.0"
+  resolved "https://registry.yarnpkg.com/upath/-/upath-1.1.0.tgz#35256597e46a581db4793d0ce47fa9aebfc9fabd"
 
-uri-js@^3.0.2:
-  version "3.0.2"
-  resolved "https://registry.yarnpkg.com/uri-js/-/uri-js-3.0.2.tgz#f90b858507f81dea4dcfbb3c4c3dbfa2b557faaa"
+uri-js@^4.2.1:
+  version "4.2.2"
+  resolved "https://registry.yarnpkg.com/uri-js/-/uri-js-4.2.2.tgz#94c540e1ff772956e2299507c010aea6c8838eb0"
   dependencies:
     punycode "^2.1.0"
 
@@ -7645,19 +7726,12 @@ url-parse-lax@^3.0.0:
   dependencies:
     prepend-http "^2.0.0"
 
-url-parse@1.0.x:
-  version "1.0.5"
-  resolved "https://registry.yarnpkg.com/url-parse/-/url-parse-1.0.5.tgz#0854860422afdcfefeb6c965c662d4800169927b"
-  dependencies:
-    querystringify "0.0.x"
-    requires-port "1.0.x"
-
-url-parse@^1.1.8:
-  version "1.2.0"
-  resolved "https://registry.yarnpkg.com/url-parse/-/url-parse-1.2.0.tgz#3a19e8aaa6d023ddd27dcc44cb4fc8f7fec23986"
+url-parse@^1.1.8, url-parse@^1.4.3:
+  version "1.4.3"
+  resolved "https://registry.yarnpkg.com/url-parse/-/url-parse-1.4.3.tgz#bfaee455c889023219d757e045fa6a684ec36c15"
   dependencies:
-    querystringify "~1.0.0"
-    requires-port "~1.0.0"
+    querystringify "^2.0.0"
+    requires-port "^1.0.0"
 
 url-slug@2.0.0:
   version "2.0.0"
@@ -7676,50 +7750,52 @@ url@^0.11.0:
     punycode "1.3.2"
     querystring "0.2.0"
 
-use@^2.0.0:
-  version "2.0.2"
-  resolved "https://registry.yarnpkg.com/use/-/use-2.0.2.tgz#ae28a0d72f93bf22422a18a2e379993112dec8e8"
-  dependencies:
-    define-property "^0.2.5"
-    isobject "^3.0.0"
-    lazy-cache "^2.0.2"
+use@^3.1.0:
+  version "3.1.1"
+  resolved "https://registry.yarnpkg.com/use/-/use-3.1.1.tgz#d50c8cac79a19fbc20f2911f56eb973f4e10070f"
 
 util-deprecate@~1.0.1:
   version "1.0.2"
   resolved "https://registry.yarnpkg.com/util-deprecate/-/util-deprecate-1.0.2.tgz#450d4dc9fa70de732762fbd2d4a28981419a0ccf"
 
-util@0.10.3, util@^0.10.3:
+util@0.10.3:
   version "0.10.3"
   resolved "https://registry.yarnpkg.com/util/-/util-0.10.3.tgz#7afb1afe50805246489e3db7fe0ed379336ac0f9"
   dependencies:
     inherits "2.0.1"
 
+util@^0.10.3:
+  version "0.10.4"
+  resolved "https://registry.yarnpkg.com/util/-/util-0.10.4.tgz#3aa0125bfe668a4672de58857d3ace27ecb76901"
+  dependencies:
+    inherits "2.0.3"
+
 utils-merge@1.0.1:
   version "1.0.1"
   resolved "https://registry.yarnpkg.com/utils-merge/-/utils-merge-1.0.1.tgz#9f95710f50a267947b2ccc124741c1028427e713"
 
 uuid@^3.0.0, uuid@^3.0.1, uuid@^3.1.0:
-  version "3.2.1"
-  resolved "https://registry.yarnpkg.com/uuid/-/uuid-3.2.1.tgz#12c528bb9d58d0b9265d9a2f6f0fe8be17ff1f14"
+  version "3.3.2"
+  resolved "https://registry.yarnpkg.com/uuid/-/uuid-3.3.2.tgz#1b4af4955eb3077c501c23872fc6513811587131"
 
-v8-compile-cache@^1.1.2:
-  version "1.1.2"
-  resolved "https://registry.yarnpkg.com/v8-compile-cache/-/v8-compile-cache-1.1.2.tgz#8d32e4f16974654657e676e0e467a348e89b0dc4"
+v8-compile-cache@^2.0.0:
+  version "2.0.2"
+  resolved "https://registry.yarnpkg.com/v8-compile-cache/-/v8-compile-cache-2.0.2.tgz#a428b28bb26790734c4fc8bc9fa106fccebf6a6c"
 
 validate-npm-package-license@^3.0.1:
-  version "3.0.1"
-  resolved "https://registry.yarnpkg.com/validate-npm-package-license/-/validate-npm-package-license-3.0.1.tgz#2804babe712ad3379459acfbe24746ab2c303fbc"
+  version "3.0.4"
+  resolved "https://registry.yarnpkg.com/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz#fc91f6b9c7ba15c857f4cb2c5defeec39d4f410a"
   dependencies:
-    spdx-correct "~1.0.0"
-    spdx-expression-parse "~1.0.0"
+    spdx-correct "^3.0.0"
+    spdx-expression-parse "^3.0.0"
 
 vary@~1.1.2:
   version "1.1.2"
   resolved "https://registry.yarnpkg.com/vary/-/vary-1.1.2.tgz#2299f02c6ded30d4a5961b0b9f74524a18f634fc"
 
 vendors@^1.0.0:
-  version "1.0.1"
-  resolved "https://registry.yarnpkg.com/vendors/-/vendors-1.0.1.tgz#37ad73c8ee417fb3d580e785312307d274847f22"
+  version "1.0.2"
+  resolved "https://registry.yarnpkg.com/vendors/-/vendors-1.0.2.tgz#7fcb5eef9f5623b156bcea89ec37d63676f21801"
 
 verror@1.10.0:
   version "1.10.0"
@@ -7749,8 +7825,8 @@ vinyl@^1.1.0, vinyl@^1.1.1:
     replace-ext "0.0.1"
 
 vinyl@^2.0.1:
-  version "2.1.0"
-  resolved "https://registry.yarnpkg.com/vinyl/-/vinyl-2.1.0.tgz#021f9c2cf951d6b939943c89eb5ee5add4fd924c"
+  version "2.2.0"
+  resolved "https://registry.yarnpkg.com/vinyl/-/vinyl-2.2.0.tgz#d85b07da96e458d25b2ffe19fece9f2caa13ed86"
   dependencies:
     clone "^2.1.1"
     clone-buffer "^1.0.0"
@@ -7766,16 +7842,16 @@ vm-browserify@0.0.4:
     indexof "0.0.1"
 
 watchpack@^1.5.0:
-  version "1.5.0"
-  resolved "https://registry.yarnpkg.com/watchpack/-/watchpack-1.5.0.tgz#231e783af830a22f8966f65c4c4bacc814072eed"
+  version "1.6.0"
+  resolved "https://registry.yarnpkg.com/watchpack/-/watchpack-1.6.0.tgz#4bc12c2ebe8aa277a71f1d3f14d685c7b446cd00"
   dependencies:
     chokidar "^2.0.2"
     graceful-fs "^4.1.2"
     neo-async "^2.5.0"
 
 wbuf@^1.1.0, wbuf@^1.7.2:
-  version "1.7.2"
-  resolved "https://registry.yarnpkg.com/wbuf/-/wbuf-1.7.2.tgz#d697b99f1f59512df2751be42769c1580b5801fe"
+  version "1.7.3"
+  resolved "https://registry.yarnpkg.com/wbuf/-/wbuf-1.7.3.tgz#c1d8d149316d3ea852848895cb6a0bfe887b87df"
   dependencies:
     minimalistic-assert "^1.0.0"
 
@@ -7786,39 +7862,39 @@ webpack-addons@^1.1.5:
     jscodeshift "^0.4.0"
 
 webpack-cli@^2.0.14:
-  version "2.0.14"
-  resolved "https://registry.yarnpkg.com/webpack-cli/-/webpack-cli-2.0.14.tgz#71d03d8c10547c1dfd674f71ff3b0457c33a74cd"
+  version "2.1.5"
+  resolved "https://registry.yarnpkg.com/webpack-cli/-/webpack-cli-2.1.5.tgz#3081fdeb2f205f0a54aa397986880b0c20a71f7a"
   dependencies:
-    chalk "^2.3.2"
+    chalk "^2.4.1"
     cross-spawn "^6.0.5"
     diff "^3.5.0"
     enhanced-resolve "^4.0.0"
-    envinfo "^4.4.2"
+    envinfo "^5.7.0"
     glob-all "^3.1.0"
     global-modules "^1.0.0"
-    got "^8.2.0"
+    got "^8.3.1"
     import-local "^1.0.0"
-    inquirer "^5.1.0"
-    interpret "^1.0.4"
+    inquirer "^5.2.0"
+    interpret "^1.1.0"
     jscodeshift "^0.5.0"
-    listr "^0.13.0"
+    listr "^0.14.1"
     loader-utils "^1.1.0"
-    lodash "^4.17.5"
+    lodash "^4.17.10"
     log-symbols "^2.2.0"
     mkdirp "^0.5.1"
     p-each-series "^1.0.0"
     p-lazy "^1.0.0"
-    prettier "^1.5.3"
-    supports-color "^5.3.0"
-    v8-compile-cache "^1.1.2"
+    prettier "^1.12.1"
+    supports-color "^5.4.0"
+    v8-compile-cache "^2.0.0"
     webpack-addons "^1.1.5"
     yargs "^11.1.0"
-    yeoman-environment "^2.0.0"
-    yeoman-generator "^2.0.3"
+    yeoman-environment "^2.1.1"
+    yeoman-generator "^2.0.5"
 
-webpack-dev-middleware@3.1.2:
-  version "3.1.2"
-  resolved "https://registry.yarnpkg.com/webpack-dev-middleware/-/webpack-dev-middleware-3.1.2.tgz#be4d0c36a4fa7d69d6904093418514caa9df3a40"
+webpack-dev-middleware@3.1.3:
+  version "3.1.3"
+  resolved "https://registry.yarnpkg.com/webpack-dev-middleware/-/webpack-dev-middleware-3.1.3.tgz#8b32aa43da9ae79368c1bf1183f2b6cf5e1f39ed"
   dependencies:
     loud-rejection "^1.6.0"
     memory-fs "~0.4.1"
@@ -7829,8 +7905,8 @@ webpack-dev-middleware@3.1.2:
     webpack-log "^1.0.1"
 
 webpack-dev-server@^3.1.2:
-  version "3.1.3"
-  resolved "https://registry.yarnpkg.com/webpack-dev-server/-/webpack-dev-server-3.1.3.tgz#5cecfd8a9d60c4638284813f1cf9562f04e5c1c5"
+  version "3.1.5"
+  resolved "https://registry.yarnpkg.com/webpack-dev-server/-/webpack-dev-server-3.1.5.tgz#87477252e1ac6789303fb8cd3e585fa5d508a401"
   dependencies:
     ansi-html "0.0.7"
     array-includes "^3.0.3"
@@ -7853,11 +7929,11 @@ webpack-dev-server@^3.1.2:
     selfsigned "^1.9.1"
     serve-index "^1.7.2"
     sockjs "0.3.19"
-    sockjs-client "1.1.4"
+    sockjs-client "1.1.5"
     spdy "^3.4.1"
     strip-ansi "^3.0.0"
     supports-color "^5.1.0"
-    webpack-dev-middleware "3.1.2"
+    webpack-dev-middleware "3.1.3"
     webpack-log "^1.1.2"
     yargs "11.0.0"
 
@@ -7878,16 +7954,22 @@ webpack-sources@^1.0.1, webpack-sources@^1.1.0:
     source-map "~0.6.1"
 
 webpack@^4.5.0:
-  version "4.5.0"
-  resolved "https://registry.yarnpkg.com/webpack/-/webpack-4.5.0.tgz#1e6f71e148ead02be265ff2879c9cd6bb30b8848"
-  dependencies:
-    acorn "^5.0.0"
+  version "4.16.5"
+  resolved "https://registry.yarnpkg.com/webpack/-/webpack-4.16.5.tgz#29fb39462823d7eb8aefcab8b45f7f241db0d092"
+  dependencies:
+    "@webassemblyjs/ast" "1.5.13"
+    "@webassemblyjs/helper-module-context" "1.5.13"
+    "@webassemblyjs/wasm-edit" "1.5.13"
+    "@webassemblyjs/wasm-opt" "1.5.13"
+    "@webassemblyjs/wasm-parser" "1.5.13"
+    acorn "^5.6.2"
     acorn-dynamic-import "^3.0.0"
     ajv "^6.1.0"
     ajv-keywords "^3.1.0"
-    chrome-trace-event "^0.1.1"
-    enhanced-resolve "^4.0.0"
-    eslint-scope "^3.7.1"
+    chrome-trace-event "^1.0.0"
+    enhanced-resolve "^4.1.0"
+    eslint-scope "^4.0.0"
+    json-parse-better-errors "^1.0.2"
     loader-runner "^2.3.0"
     loader-utils "^1.1.0"
     memory-fs "~0.4.1"
@@ -7895,7 +7977,7 @@ webpack@^4.5.0:
     mkdirp "~0.5.0"
     neo-async "^2.5.0"
     node-libs-browser "^2.0.0"
-    schema-utils "^0.4.2"
+    schema-utils "^0.4.4"
     tapable "^1.0.0"
     uglifyjs-webpack-plugin "^1.2.4"
     watchpack "^1.5.0"
@@ -7913,8 +7995,8 @@ websocket-extensions@>=0.1.1:
   resolved "https://registry.yarnpkg.com/websocket-extensions/-/websocket-extensions-0.1.3.tgz#5d2ff22977003ec687a4b87073dfbbac146ccf29"
 
 whatwg-fetch@>=0.10.0:
-  version "2.0.3"
-  resolved "https://registry.yarnpkg.com/whatwg-fetch/-/whatwg-fetch-2.0.3.tgz#9c84ec2dcf68187ff00bc64e1274b442176e1c84"
+  version "2.0.4"
+  resolved "https://registry.yarnpkg.com/whatwg-fetch/-/whatwg-fetch-2.0.4.tgz#dde6a5df315f9d39991aa17621853d720b85566f"
 
 whet.extend@~0.9.9:
   version "0.9.9"
@@ -7929,16 +8011,16 @@ which-module@^2.0.0:
   resolved "https://registry.yarnpkg.com/which-module/-/which-module-2.0.0.tgz#d9ef07dce77b9902b8a3a8fa4b31c3e3f7e6e87a"
 
 which@1, which@^1.2.12, which@^1.2.14, which@^1.2.9:
-  version "1.3.0"
-  resolved "https://registry.yarnpkg.com/which/-/which-1.3.0.tgz#ff04bdfc010ee547d780bec38e1ac1c2777d253a"
+  version "1.3.1"
+  resolved "https://registry.yarnpkg.com/which/-/which-1.3.1.tgz#a45043d54f5805316da8d62f9f50918d3da70b0a"
   dependencies:
     isexe "^2.0.0"
 
 wide-align@^1.1.0:
-  version "1.1.2"
-  resolved "https://registry.yarnpkg.com/wide-align/-/wide-align-1.1.2.tgz#571e0f1b0604636ebc0dfc21b0339bbe31341710"
+  version "1.1.3"
+  resolved "https://registry.yarnpkg.com/wide-align/-/wide-align-1.1.3.tgz#ae074e6bdc0c14a431e804e624549c633b000457"
   dependencies:
-    string-width "^1.0.2"
+    string-width "^1.0.2 || 2"
 
 wordwrap@~1.0.0:
   version "1.0.0"
@@ -7995,6 +8077,10 @@ yallist@^2.1.2:
   version "2.1.2"
   resolved "https://registry.yarnpkg.com/yallist/-/yallist-2.1.2.tgz#1c11f9218f076089a47dd512f93c6699a6a81d52"
 
+yallist@^3.0.0, yallist@^3.0.2:
+  version "3.0.2"
+  resolved "https://registry.yarnpkg.com/yallist/-/yallist-3.0.2.tgz#8452b4bb7e83c7c188d8041c1a837c773d6d8bb9"
+
 yargs-parser@^5.0.0:
   version "5.0.0"
   resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-5.0.0.tgz#275ecf0d7ffe05c77e64e7c86e4cd94bf0e1228a"
@@ -8065,43 +8151,45 @@ yargs@~1.2.6:
   dependencies:
     minimist "^0.1.0"
 
-yeoman-environment@^2.0.0, yeoman-environment@^2.0.5:
-  version "2.0.6"
-  resolved "https://registry.yarnpkg.com/yeoman-environment/-/yeoman-environment-2.0.6.tgz#ae1b21d826b363f3d637f88a7fc9ea7414cb5377"
+yeoman-environment@^2.0.5, yeoman-environment@^2.1.1:
+  version "2.3.1"
+  resolved "https://registry.yarnpkg.com/yeoman-environment/-/yeoman-environment-2.3.1.tgz#1aa00cc474a8e48518ab2b0f64b43034215e9997"
   dependencies:
     chalk "^2.1.0"
+    cross-spawn "^6.0.5"
     debug "^3.1.0"
     diff "^3.3.1"
     escape-string-regexp "^1.0.2"
-    globby "^6.1.0"
+    globby "^8.0.1"
     grouped-queue "^0.3.3"
-    inquirer "^3.3.0"
+    inquirer "^5.2.0"
     is-scoped "^1.0.0"
-    lodash "^4.17.4"
+    lodash "^4.17.10"
     log-symbols "^2.1.0"
     mem-fs "^1.1.0"
+    strip-ansi "^4.0.0"
     text-table "^0.2.0"
     untildify "^3.0.2"
 
-yeoman-generator@^2.0.3:
-  version "2.0.3"
-  resolved "https://registry.yarnpkg.com/yeoman-generator/-/yeoman-generator-2.0.3.tgz#19426ed22687ffe05d31526c3f1c2cf67ba768f3"
+yeoman-generator@^2.0.5:
+  version "2.0.5"
+  resolved "https://registry.yarnpkg.com/yeoman-generator/-/yeoman-generator-2.0.5.tgz#57b0b3474701293cc9ec965288f3400b00887c81"
   dependencies:
     async "^2.6.0"
     chalk "^2.3.0"
     cli-table "^0.3.1"
-    cross-spawn "^5.1.0"
+    cross-spawn "^6.0.5"
     dargs "^5.1.0"
-    dateformat "^3.0.2"
+    dateformat "^3.0.3"
     debug "^3.1.0"
     detect-conflict "^1.0.0"
     error "^7.0.2"
     find-up "^2.1.0"
     github-username "^4.0.0"
-    istextorbinary "^2.1.0"
-    lodash "^4.17.4"
+    istextorbinary "^2.2.1"
+    lodash "^4.17.10"
     make-dir "^1.1.0"
-    mem-fs-editor "^3.0.2"
+    mem-fs-editor "^4.0.0"
     minimist "^1.2.0"
     pretty-bytes "^4.0.2"
     read-chunk "^2.1.0"
index cfb3e5a..a70337b 100644 (file)
         "intl-relativeformat": "^1.2.0",
         "lodash": "^4.13.1",
         "md5": "^2.1.0",
-        "prop-types": "^15.6.0",
-        "react": "^15.6.2",
+        "prop-types": "^15.6.2",
+        "react": "^16.4.2",
         "react-bootstrap": "^0.32.1",
-        "react-click-outside": "^2.3.1",
-        "react-datepicker": "^0.48.0",
+        "react-click-outside": "^3.0.1",
+        "react-datepicker": "^0.61.0",
         "react-dnd": "^2.5.4",
         "react-dnd-html5-backend": "^2.5.4",
-        "react-dom": "^15.6.2",
-        "react-dropzone": "4.2.3",
-        "react-input-autosize": "^2.2.0",
-        "react-redux": "^5.0.6",
+        "react-dom": "^16.4.2",
+        "react-dropzone": "4.3.0",
+        "react-input-autosize": "^2.2.1",
+        "react-redux": "^5.0.7",
         "react-select": "1.2.1",
         "react-show-more-text": "^1.0.3",
-        "react-sortable": "^1.2.0",
-        "react-transition-group": "^2.3.1",
+        "react-sortable": "^1.2.1",
+        "react-transition-group": "^2.4.0",
         "redux": "^3.7.2",
         "sdc-ui": "1.6.61",
         "uuid-js": "^0.7.5",
@@ -64,7 +64,8 @@
         "css-loader": "^0.23.1",
         "deep-freeze": "0.0.1",
         "del": "^3.0.0",
-        "enzyme": "^2.7.1",
+        "enzyme": "^3.4.0",
+        "enzyme-adapter-react-16": "^1.2.0",
         "eslint": "^4.18.1",
         "eslint-config-prettier": "^2.9.0",
         "eslint-loader": "^2.0.0",
@@ -88,8 +89,8 @@
         "prettier": "1.10.2",
         "prompt": "^0.2.14",
         "randomstring": "^1.1.5",
-        "react-addons-test-utils": "~15.3.2",
-        "react-hot-loader": "^3.1.3",
+        "react-hot-loader": "^4.3.4",
+        "react-test-renderer": "^16.4.2",
         "rosie": "^1.6.0",
         "run-sequence": "^2.2.1",
         "sass-loader": "^6.0.6",
             "DEBUG": false
         },
         "setupFiles": [
+            "<rootDir>/test-utils/shim.js",
             "<rootDir>/test-utils/test-env-setup.js"
         ],
         "setupTestFrameworkScriptFile": "<rootDir>/test-utils/test-setup.js",
index 6ade0ab..6d6a685 100644 (file)
@@ -1,6 +1,5 @@
-@import "common/variables";
-@import "common/typography";
-@import "common/base";
-@import "common/layout";
-@import "common/utils";
-
+@import 'common/variables';
+@import 'common/typography';
+@import 'common/base';
+@import 'common/layout';
+@import 'common/utils';
index 7bd9010..5458cbc 100644 (file)
-@import "components/forms";
-@import "components/validationForm";
-@import "components/dualListBox";
-@import "components/listEditorView";
-@import "components/toggleInput";
-@import "components/notifications";
-@import "components/inputOptions";
-@import "components/progressBar";
-@import "components/versionController";
-@import "components/sequenceDiagram";
-@import "components/navigationSideBar";
-@import "components/loader";
-@import "components/dropzone";
-@import "components/submitErrorResponse";
-@import "components/expandableInput";
-@import "components/grid";
-@import "components/activityLog";
-@import "components/selectActionTable";
-@import "components/datepicker";
-@import "components/tree";
-@import "components/commitModal";
-@import "components/userNotifications";
-@import "components/overlay";
-@import "components/vspDetailsVendorSelect";
-@import "components/vnfBrowse";
+@import 'components/forms';
+@import 'components/validationForm';
+@import 'components/dualListBox';
+@import 'components/listEditorView';
+@import 'components/toggleInput';
+@import 'components/inputOptions';
+@import 'components/progressBar';
+@import 'components/versionController';
+@import 'components/sequenceDiagram';
+@import 'components/navigationSideBar';
+@import 'components/loader';
+@import 'components/dropzone';
+@import 'components/submitErrorResponse';
+@import 'components/expandableInput';
+@import 'components/grid';
+@import 'components/activityLog';
+@import 'components/selectActionTable';
+@import 'components/datepicker';
+@import 'components/tree';
+@import 'components/commitModal';
+@import 'components/userNotifications';
+@import 'components/overlay';
+@import 'components/vspDetailsVendorSelect';
+@import 'components/vnfBrowse';
 
 %noselect {
-  -webkit-touch-callout: none;
-  -webkit-user-select: none;
-  -moz-user-select: none;
-  -ms-user-select: none;
-  user-select: none;
+    -webkit-touch-callout: none;
+    -webkit-user-select: none;
+    -moz-user-select: none;
+    -ms-user-select: none;
+    user-select: none;
 }
 
 .clickable {
-  cursor: pointer;
+    cursor: pointer;
 }
 
 .no-padding {
-  padding: 0;
+    padding: 0;
 }
 
 .next-to-icon-label {
-  $margin: 10px;
-  margin-left: $margin;
-  &.right {
-    margin-left: 0;
-    margin-right: $margin;
-  }
+    $margin: 10px;
+    margin-left: $margin;
+    &.right {
+        margin-left: 0;
+        margin-right: $margin;
+    }
 }
 
 .search-wrapper {
-  display: flex;
-  .search-input-control {
-    flex: 1 1;
-    margin: 0;
-    .form-control {
-      font-style: italic;
+    display: flex;
+    .search-input-control {
+        flex: 1 1;
+        margin: 0;
+        .form-control {
+            font-style: italic;
+        }
+    }
+    .search-icon {
+        position: relative;
+        left: -23px;
+        align-self: center;
+        width: 0;
+        color: $dark-gray;
+    }
+    .filter-icon {
+        position: relative;
+        left: -20px;
+        align-self: center;
+        width: 0;
+        background-color: $white;
     }
-  }
-  .search-icon {
-    position: relative;
-    left: -23px;
-    align-self: center;
-    width: 0;
-    color: $dark-gray;
-  }
-  .filter-icon {
-    position: relative;
-    left: -20px;
-    align-self: center;
-    width: 0;
-    background-color: $white;
-  }
 }
 
-
 .chevron::before {
-  border-style: solid;
-  border-width: 0.15em 0.15em 0 0;
-  content: '';
-  display: inline-block;
-  height: 0.8em;
-  left: 0.15em;
-  position: relative;
-  top: 0.15em;
-  vertical-align: top;
-  width: 0.8em;
+    border-style: solid;
+    border-width: 0.15em 0.15em 0 0;
+    content: '';
+    display: inline-block;
+    height: 0.8em;
+    left: 0.15em;
+    position: relative;
+    top: 0.15em;
+    vertical-align: top;
+    width: 0.8em;
 }
 .chevron.right:before {
-  left: 0;
-  transform: rotate(45deg);
+    left: 0;
+    transform: rotate(45deg);
 }
 .chevron.down:before {
-  transform: rotate(135deg);
+    transform: rotate(135deg);
 }
 .chevron.left:before {
-  transform: rotate(-135deg);
+    transform: rotate(-135deg);
 }
 .chevron.top:before {
-  transform: rotate(-45deg);
+    transform: rotate(-45deg);
 }
index 6fe6e30..ad33275 100644 (file)
@@ -1,30 +1,29 @@
-@import "modules/licenseModelOverview";
-@import "modules/licenseModelLimits";
-@import "modules/licenseAgreement";
-@import "modules/featureGroup";
-@import "modules/entitlementPools";
-@import "modules/licenseKeyGroup";
-@import "modules/softwareProductLandingPage";
-@import "modules/softwareProductCreatePage";
-@import "modules/_softwareProductAttachmentPage";
-@import "modules/_softwareProductProcessesPage";
-@import "modules/_vspComponentQuestionnaire";
-@import "modules/_softwareProductComponentNetwork";
-@import "modules/_softwareProductComponentGeneral";
-@import "modules/_softwareproductComponentLoadBalancing";
-@import "modules/_softwareProductComponentProcessesPage";
-@import "modules/_softwareProductComponentImage";
-@import "modules/softwareProductComponentCompute";
-@import "modules/vspComponentCompute";
-@import "modules/vspComponentMonitoring";
-@import "modules/licenseModel";
-@import "modules/onboardingCatalog";
-@import "modules/workflows";
-@import "modules/uploadScreen";
-@import "modules/vspHeatSetup";
-@import "modules/softwareProductDependencies";
-@import "modules/_permissions.scss";
-@import "modules/_revisions.scss";
-@import "modules/softwareProductDeployment";
-@import "modules/versionsPage";
-@import "modules/mergeEditor";
+@import 'modules/licenseModelOverview';
+@import 'modules/licenseModelLimits';
+@import 'modules/licenseAgreement';
+@import 'modules/featureGroup';
+@import 'modules/entitlementPools';
+@import 'modules/licenseKeyGroup';
+@import 'modules/softwareProductLandingPage';
+@import 'modules/softwareProductCreatePage';
+@import 'modules/_softwareProductAttachmentPage';
+@import 'modules/_softwareProductProcessesPage';
+@import 'modules/_vspComponentQuestionnaire';
+@import 'modules/_softwareProductComponentNetwork';
+@import 'modules/_softwareProductComponentGeneral';
+@import 'modules/_softwareproductComponentLoadBalancing';
+@import 'modules/_softwareProductComponentProcessesPage';
+@import 'modules/_softwareProductComponentImage';
+@import 'modules/softwareProductComponentCompute';
+@import 'modules/vspComponentMonitoring';
+@import 'modules/licenseModel';
+@import 'modules/onboardingCatalog';
+@import 'modules/workflows';
+@import 'modules/uploadScreen';
+@import 'modules/vspHeatSetup';
+@import 'modules/softwareProductDependencies';
+@import 'modules/_permissions.scss';
+@import 'modules/_revisions.scss';
+@import 'modules/softwareProductDeployment';
+@import 'modules/versionsPage';
+@import 'modules/mergeEditor';
index 32890b3..7b6fed7 100644 (file)
@@ -1,55 +1,43 @@
 // DOX CORE
-@import "common/variables";
-@import "common/typography";
+@import 'common/variables';
+@import 'common/typography';
 
 // Core variables and mixins
-@import "bootstrap-cust/variables";
-@import "bootstrap/variables";
-@import "bootstrap/mixins";
-// Reset and dependencies
-//@import "bootstrap/normalize";
-//@import "bootstrap/print";
-//@import "bootstrap/glyphicons";
+@import 'bootstrap-cust/variables';
+@import 'bootstrap/variables';
+@import 'bootstrap/mixins';
 
-// Core CSS
-//@import "bootstrap/scaffolding";
-@import "bootstrap/type";
-@import "bootstrap/code";
-@import "bootstrap/grid";
-@import "bootstrap/tables";
-@import "bootstrap-cust/tables";
-@import "bootstrap/forms";
-@import "bootstrap-cust/forms";
+@import 'bootstrap/type';
+@import 'bootstrap/code';
+@import 'bootstrap/grid';
+@import 'bootstrap/tables';
+@import 'bootstrap-cust/tables';
+@import 'bootstrap/forms';
+@import 'bootstrap-cust/forms';
 // Components
-@import "bootstrap/component-animations";
-@import "bootstrap/dropdowns";
-@import "bootstrap-cust/dropdowns";
-@import "bootstrap/button-groups";
-@import "bootstrap/input-groups";
-@import "bootstrap/breadcrumbs";
-@import "bootstrap/pagination";
-@import "bootstrap/pager";
-@import "bootstrap/labels";
-@import "bootstrap/badges";
-@import "bootstrap/jumbotron";
-// @import "bootstrap/thumbnails";
-@import "bootstrap/alerts";
-@import "bootstrap/progress-bars";
-@import "bootstrap/media";
-@import "bootstrap/list-group";
-@import "bootstrap-cust/list-group";
-@import "bootstrap/panels";
-@import "bootstrap-cust/panels";
-// @import "bootstrap/responsive-embed";
-//@import "bootstrap/wells";
-@import "bootstrap/close";
-@import "bootstrap-cust/close";
-// Components w/ JavaScript
-@import "bootstrap/modals";
-@import "bootstrap-cust/modals";
-@import "bootstrap/tooltip";
-@import "bootstrap/popovers";
-// @import "bootstrap/carousel";
-// Utility classes
-@import "bootstrap/utilities";
-@import "bootstrap/responsive-utilities";
+@import 'bootstrap/component-animations';
+@import 'bootstrap/dropdowns';
+@import 'bootstrap-cust/dropdowns';
+@import 'bootstrap/button-groups';
+@import 'bootstrap/input-groups';
+@import 'bootstrap/breadcrumbs';
+@import 'bootstrap/pagination';
+@import 'bootstrap/pager';
+@import 'bootstrap/labels';
+@import 'bootstrap/badges';
+@import 'bootstrap/jumbotron';
+@import 'bootstrap/alerts';
+@import 'bootstrap/progress-bars';
+@import 'bootstrap/media';
+@import 'bootstrap/list-group';
+@import 'bootstrap-cust/list-group';
+@import 'bootstrap/panels';
+@import 'bootstrap-cust/panels';
+@import 'bootstrap/close';
+@import 'bootstrap-cust/close';
+@import 'bootstrap/modals';
+@import 'bootstrap-cust/modals';
+@import 'bootstrap/tooltip';
+@import 'bootstrap/popovers';
+@import 'bootstrap/utilities';
+@import 'bootstrap/responsive-utilities';
index e4aa23f..b9cfd79 100644 (file)
@@ -1,6 +1,6 @@
 html {
-  font-size: 100%;
-  height: 100%;
+    font-size: 100%;
+    height: 100%;
 }
 
 body {
@@ -16,65 +16,70 @@ $scrollbar-height: 8px;
 $ff-scrollbar-width: 17px;
 /* scrollbar styling for Google Chrome | Safari | Opera */
 ::-webkit-scrollbar {
-  width: $scrollbar-width;
-  height: $scrollbar-height;
+    width: $scrollbar-width;
+    height: $scrollbar-height;
 }
 
 ::-webkit-scrollbar-track {
-  background-color: transparent;
-  border-radius: 10px;
+    background-color: transparent;
+    border-radius: 10px;
 }
 
 ::-webkit-scrollbar-thumb {
-  border-radius: 10px;
-  background-color: $light-gray;
-  border-right: 2px solid $content-background-color;
+    border-radius: 10px;
+    background-color: $light-gray;
+    border-right: 2px solid $content-background-color;
 }
 
 /* Mozilla Firefox currently doesn't support scrollbar styling */
 
 ul {
-  list-style: none;
+    list-style: none;
 }
 
-h1, h2, h3, h4, h5, h6, ul {
-  margin: 0;
-  padding: 0;
+h1,
+h2,
+h3,
+h4,
+h5,
+h6,
+ul {
+    margin: 0;
+    padding: 0;
 }
 
 input {
-
-  padding: 7px 10px;
+    padding: 7px 10px;
 }
 
 .disabled {
-  opacity: 0.7 !important;
+    opacity: 0.7 !important;
 }
 
 fieldset {
-  border: none;
+    border: none;
 }
 
 fieldset {
-  label {
-       display: inline-block;
-  }
+    label {
+        display: inline-block;
+    }
 }
 
 .nav-tabs > li > a:focus,
 .btn:focus,
 .btn:active:focus,
 .btn.active:focus {
-  outline: none;
+    outline: none;
 }
 
 .box-hover {
-  border: 1px solid $light-blue;
+    border: 1px solid $light-blue;
 }
 /* monkey patch */
 .sdc-button.sdc-button__link.sdc-button.sdc-button__link {
-  width: initial;
-  &:focus {
-    border: none;
-  }
+    width: initial;
+    &:focus {
+        border: none;
+    }
 }
index 6c6a0cf..58ed122 100644 (file)
@@ -1,35 +1,53 @@
 .sdc-app {
-  height: 100%;
-
+    height: 100%;
 }
 .flex {
-  display: flex;
-  flex: 1;
+    display: flex;
+    flex: 1;
 }
 
 .flex-column {
-  @extend .flex;
-  flex-direction: column;
+    @extend .flex;
+    flex-direction: column;
 }
 
 .content-area {
-  padding: 30px 60px 70px 60px;
-  overflow-y: auto;
-       overflow-x: hidden;
-  height: 100%;
-  &.no-padding-content-area {
-    padding: 0;
-  }
+    padding: 30px 60px 70px 60px;
+    overflow-y: auto;
+    overflow-x: hidden;
+    height: 100%;
+    &.no-padding-content-area {
+        padding: 0;
+    }
 }
 
-.onborading-modal {
-  .modal-title {
-    text-transform: uppercase;
-  }
-}
 .page-title {
-  @extend .heading-1;
-  @extend .text-uppercase !optional;
-  margin-bottom: 20px;
-  color: $blue;
+    @extend .heading-1;
+    @extend .text-uppercase !optional;
+    margin-bottom: 20px;
+    color: $blue;
+}
+.sdc-modal {
+    .sdc-modal__wrapper.sdc-modal-type-custom {
+        .sdc-modal__content {
+            padding: 0;
+            .entitlement-pools-modal,
+            .license-key-groups-modal,
+            .manage-permissions-page {
+                .validation-form-content {
+                    overflow-y: visible;
+                }
+            }
+            .validation-form-content {
+                padding: 20px 40px;
+                overflow-y: auto;
+                .no-bottom-margin {
+                    margin-bottom: 0;
+                    .customized-date-picker {
+                        margin-bottom: 0;
+                    }
+                }
+            }
+        }
+    }
 }
index c4ae856..2308810 100644 (file)
@@ -1,23 +1,24 @@
 /* Fonts */
 
 @mixin base-font-regular() {
-  font-family: OpenSans, OpenSans-Regular, 'Open Sans',omnes-regular, Arial, sans-serif;
+    font-family: OpenSans, OpenSans-Regular, 'Open Sans', omnes-regular, Arial,
+        sans-serif;
 }
 
 @mixin base-font-light() {
-  font-family: OpenSans-Light, 'Open Sans', omnes-light, Arial, sans-serif;
+    font-family: OpenSans-Light, 'Open Sans', omnes-light, Arial, sans-serif;
 }
 
-@mixin base-font-italic(){
-  font-family: OpenSans-Italic, 'Open Sans', omnes-italic, Arial, sans-serif;
+@mixin base-font-italic() {
+    font-family: OpenSans-Italic, 'Open Sans', omnes-italic, Arial, sans-serif;
 }
 
 @mixin base-font-semibold() {
-  font-family: OpenSans-Semibold, 'Open Sans', omnes-medium, Arial, sans-serif;
+    font-family: OpenSans-Semibold, 'Open Sans', omnes-medium, Arial, sans-serif;
 }
 
 @mixin base-font-bold() {
-  font-family: OpenSans-Bold, 'Open Sans', omnes-bold, Arial, sans-serif;
+    font-family: OpenSans-Bold, 'Open Sans', omnes-bold, Arial, sans-serif;
 }
 
 $heading-font-1: 28px;
@@ -34,109 +35,107 @@ $body-font-4: 10px;
 $icon-font-size: 10px;
 $icon-font-family: Arial;
 
-
 .heading-1 {
-  @include base-font-light;
-  font-size: $heading-font-1;
+    @include base-font-light;
+    font-size: $heading-font-1;
 }
 
 .heading-2 {
-  @include base-font-light;
-  font-size: $heading-font-2;
+    @include base-font-light;
+    font-size: $heading-font-2;
 }
 
 .heading-3-light {
-  @include base-font-light;
-  font-size: $heading-font-3;
-  @extend .text-uppercase !optional;
+    @include base-font-light;
+    font-size: $heading-font-3;
+    @extend .text-uppercase !optional;
 }
 
 .heading-3 {
-  @include base-font-regular;
-  font-size: $heading-font-3;
-  @extend .text-uppercase !optional;
+    @include base-font-regular;
+    font-size: $heading-font-3;
+    @extend .text-uppercase !optional;
 }
 
 .heading-3-semibold {
-  @include base-font-semibold;
-  font-size: $heading-font-3;
-  @extend .text-uppercase !optional;
+    @include base-font-semibold;
+    font-size: $heading-font-3;
+    @extend .text-uppercase !optional;
 }
 
 .heading-4 {
-  @include base-font-regular;
-  font-size: $heading-font-4;
+    @include base-font-regular;
+    font-size: $heading-font-4;
 }
 
 .heading-4-semibold {
-  @include base-font-semibold;
-  font-size: $heading-font-4;
+    @include base-font-semibold;
+    font-size: $heading-font-4;
 }
 
 .heading-5 {
-  @include base-font-regular;
-  font-size: $heading-font-5;
+    @include base-font-regular;
+    font-size: $heading-font-5;
 }
 
 .heading-5-semibold {
-  @include base-font-semibold;
-  font-size: $heading-font-5;
+    @include base-font-semibold;
+    font-size: $heading-font-5;
 }
 
 .body-1 {
-  @include base-font-regular;
-  font-size: $body-font-1;
+    @include base-font-regular;
+    font-size: $body-font-1;
 }
 
 .body-1-semibold {
-  @include base-font-semibold;
-  font-size: $body-font-1;
+    @include base-font-semibold;
+    font-size: $body-font-1;
 }
 
 .body-1-light {
-  @include base-font-light;
-  font-size: $body-font-1;
+    @include base-font-light;
+    font-size: $body-font-1;
 }
 
 .body-2 {
-  @include base-font-regular;
-  font-size: $body-font-2;
+    @include base-font-regular;
+    font-size: $body-font-2;
 }
 
 .body-2-semibold {
-  @include base-font-semibold;
-  font-size: $body-font-2;
+    @include base-font-semibold;
+    font-size: $body-font-2;
 }
 
 .body-3 {
-  @include base-font-regular;
-  font-size: $body-font-3;
+    @include base-font-regular;
+    font-size: $body-font-3;
 }
 
 .body-3-semibold {
-  @include base-font-semibold;
-  font-size: $body-font-3;
+    @include base-font-semibold;
+    font-size: $body-font-3;
 }
 
 .body-4 {
-  @include base-font-regular;
-  font-size: $body-font-4;
+    @include base-font-regular;
+    font-size: $body-font-4;
 }
 
 .body-4-semibold {
-  @include base-font-semibold;
-  font-size: $body-font-4;
+    @include base-font-semibold;
+    font-size: $body-font-4;
 }
 
 .body-3-light {
-  @include base-font-light;
-  font-size: $body-font-3;
+    @include base-font-light;
+    font-size: $body-font-3;
 }
 
-
 .warning-text {
-  color: $yellow;
+    color: $yellow;
 }
 .error-text {
-  color: $red;
+    color: $red;
 }
index 99b1ff5..aa1c0b6 100644 (file)
@@ -1,5 +1,3 @@
-
-
 /* Prefix */
 
 $box-sizing-prefix: webkit moz spec;
@@ -14,163 +12,166 @@ $flex-prefix: webkit spec;
 $browserPrefixes: webkit moz o ms;
 
 @mixin prefix($property, $value, $prefixeslist: 'all') {
-  @if $prefixeslist == all {
-    -webkit-#{$property}: $value;
-    -moz-#{$property}: $value;
-    -ms-#{$property}: $value;
-    -o-#{$property}: $value;
-    #{$property}: $value;
-  } @else {
-    @each $prefix in $prefixeslist {
-      @if $prefix == webkit {
+    @if $prefixeslist == all {
         -webkit-#{$property}: $value;
-      } @else if $prefix == moz {
         -moz-#{$property}: $value;
-      } @else if $prefix == ms {
         -ms-#{$property}: $value;
-      } @else if $prefix == o {
         -o-#{$property}: $value;
-      } @else if $prefix == spec {
         #{$property}: $value;
-      } @else {
-        @warn "No such prefix: #{$prefix}";
-      }
+    } @else {
+        @each $prefix in $prefixeslist {
+            @if $prefix == webkit {
+                -webkit-#{$property}: $value;
+            } @else if $prefix == moz {
+                -moz-#{$property}: $value;
+            } @else if $prefix == ms {
+                -ms-#{$property}: $value;
+            } @else if $prefix == o {
+                -o-#{$property}: $value;
+            } @else if $prefix == spec {
+                #{$property}: $value;
+            } @else {
+                @warn "No such prefix: #{$prefix}";
+            }
+        }
     }
-  }
 }
 
 /* Value Prefix*/
 @mixin value-suffix-with-range($property, $valuesuffix, $from, $to, $prefixeslist) {
-
-  @if $prefixeslist == all {
-    #{property} : -webkit-#{$valuesuffix}($from, $to);
-    #{property} : -moz-#{$valuesuffix}($from, $to);
-    #{property} : -o-#{$valuesuffix}($from, $to);
-    #{property} : -ms-#{$valuesuffix}($from, $to);
-
-  } @else {
-    @each $prefix in $prefixeslist {
-      @if $prefix == webkit {
-        #{property} : -webkit-#{$valuesuffix}($from, $to);
-      } @else if $prefix == moz {
-        #{property} : -moz-#{$valuesuffix}($from, $to);
-      } @else if $prefix == ms {
-        #{property} : -ms-#{$valuesuffix}($from, $to);
-      } @else if $prefix == o {
-        #{property} : -o-#{$valuesuffix}($from, $to);
-      } @else {
-        @warn "No such prefix: #{$prefix}";
-      }
+    @if $prefixeslist == all {
+        #{property}: -webkit-#{$valuesuffix}($from, $to);
+        #{property}: -moz-#{$valuesuffix}($from, $to);
+        #{property}: -o-#{$valuesuffix}($from, $to);
+        #{property}: -ms-#{$valuesuffix}($from, $to);
+    } @else {
+        @each $prefix in $prefixeslist {
+            @if $prefix == webkit {
+                #{property}: -webkit-#{$valuesuffix}($from, $to);
+            } @else if $prefix == moz {
+                #{property}: -moz-#{$valuesuffix}($from, $to);
+            } @else if $prefix == ms {
+                #{property}: -ms-#{$valuesuffix}($from, $to);
+            } @else if $prefix == o {
+                #{property}: -o-#{$valuesuffix}($from, $to);
+            } @else {
+                @warn "No such prefix: #{$prefix}";
+            }
+        }
     }
-  }
 }
 
 /* Box sizing */
 @mixin box-sizing($value: border-box) {
-  @include prefix(box-sizing, $value, $box-sizing-prefix);
+    @include prefix(box-sizing, $value, $box-sizing-prefix);
 }
 
 /* Borders & Shadows */
 @mixin box-shadow($value) {
-  @include prefix(box-shadow, $value, $box-shadow-radius-prefix);
+    @include prefix(box-shadow, $value, $box-shadow-radius-prefix);
 }
 
 @mixin text-shadow($value) {
-  @include prefix(text-shadow, $value, $text-shadow-radius-prefix);
+    @include prefix(text-shadow, $value, $text-shadow-radius-prefix);
 }
 
 @mixin border-radius($value, $positions: all) {
-  @if ($positions == all) {
-    @include prefix(border-radius, $value, $border-radius-prefix);
-  } @else {
-    @each $position in $positions {
-      @include prefix(border-#{$position}-radius, $value, $border-radius-prefix);
+    @if ($positions == all) {
+        @include prefix(border-radius, $value, $border-radius-prefix);
+    } @else {
+        @each $position in $positions {
+            @include prefix(border-#{$position}-radius, $value, $border-radius-prefix);
+        }
     }
-  }
-
 }
 
 @mixin transition($value) {
-  @include prefix(transition, $value, $transition-prefix);
+    @include prefix(transition, $value, $transition-prefix);
 }
 
 /* Opacity */
 @mixin opacity($alpha) {
-  $ie-opacity: round($alpha * 100);
-  opacity: $alpha;
-  filter: unquote("alpha(opacity = #{$ie-opacity})");
+    $ie-opacity: round($alpha * 100);
+    opacity: $alpha;
+    filter: unquote('alpha(opacity = #{$ie-opacity})');
 }
 
 /* Ellipsis */
 @mixin ellipsis($width: 100%, $display: inline-block, $max-width: none) {
-  overflow: hidden;
-  text-overflow: ellipsis;
-  width: $width;
-  white-space: nowrap;
-  display: $display;
-  max-width: $max-width;
+    overflow: hidden;
+    text-overflow: ellipsis;
+    width: $width;
+    white-space: nowrap;
+    display: $display;
+    max-width: $max-width;
 }
 
-@mixin multiline-ellipsis($lineHeight: 1.3em, $lineCount: 2, $bgColor: $white){
-  overflow: hidden;
-  position: relative;
-  line-height: $lineHeight;
-  max-height: $lineHeight * $lineCount;
-  text-align: justify;
-  word-break: break-all;
-  // margin-right: -1em;
-  padding-right: 1em;
-  &:before {
-    content: '...';
-    position: absolute;
-    right: 3px;
-    bottom: 0;
-  }
-  &:after {
-    content: '';
-    position: absolute;
-    right: 0;
-    width: 1em;
-    height: 1em;
-    margin-top: 0.2em;
-    background: $bgColor;
-  }
+@mixin multiline-ellipsis($lineHeight: 1.3em, $lineCount: 2, $bgColor: $white) {
+    overflow: hidden;
+    position: relative;
+    line-height: $lineHeight;
+    max-height: $lineHeight * $lineCount;
+    text-align: justify;
+    word-break: break-all;
+    // margin-right: -1em;
+    padding-right: 1em;
+    &:before {
+        content: '...';
+        position: absolute;
+        right: 3px;
+        bottom: 0;
+    }
+    &:after {
+        content: '';
+        position: absolute;
+        right: 0;
+        width: 1em;
+        height: 1em;
+        margin-top: 0.2em;
+        background: $bgColor;
+    }
 }
 
 @mixin gradient($from, $to) {
-  /* fallback/image non-cover color */
-  background-color: $from;
-  background-image: -webkit-gradient(linear, 0% 0%, 0% 100%, from($from), to($to));
-  @include value-suffix-with-range(background-color, linear-gradient, $from, $to, $linear-gradient-prefix);
+    /* fallback/image non-cover color */
+    background-color: $from;
+    background-image: -webkit-gradient(
+        linear,
+        0% 0%,
+        0% 100%,
+        from($from),
+        to($to)
+    );
+    @include value-suffix-with-range(background-color, linear-gradient, $from, $to, $linear-gradient-prefix);
 }
 
 /* Vertical placement of multuple lines of text */
 @mixin vertical-text($height) {
-  position: absolute;
-  top: 50%;
-  margin-top: -$height/2;
+    position: absolute;
+    top: 50%;
+    margin-top: -$height/2;
 }
 
 @mixin text-vertical-align($align: middle) {
-  display: table;
-  width: 100%;
+    display: table;
+    width: 100%;
 
-  & > * {
-    vertical-align: $align;
-    display: table-cell;
-  }
+    & > * {
+        vertical-align: $align;
+        display: table-cell;
+    }
 }
 
 @mixin center-element($width) {
-  width: $width;
-  margin-left: auto;
-  margin-right: auto;
+    width: $width;
+    margin-left: auto;
+    margin-right: auto;
 }
 
 @mixin center-content($width) {
-  & > * {
-    @include center-element($width);
-  }
+    & > * {
+        @include center-element($width);
+    }
 }
 
 /* transform-rotate */
@@ -179,9 +180,9 @@ $browserPrefixes: webkit moz o ms;
 // @param
 //     $deg - angle in degrees
 @mixin transform-rotate($deg) {
-  transform: rotate($deg + deg); /* IE10 and Mozilla */
-  -ms-transform: rotate($deg + deg); /* IE 9 */
-  -webkit-transform: rotate($deg + deg); /* Safari and Chrome */
+    transform: rotate($deg + deg); /* IE10 and Mozilla */
+    -ms-transform: rotate($deg + deg); /* IE 9 */
+    -webkit-transform: rotate($deg + deg); /* Safari and Chrome */
 }
 
 /* transform-translate */
@@ -190,9 +191,9 @@ $browserPrefixes: webkit moz o ms;
 // @param
 //     $deg - angle in degrees
 @mixin transform-translate($x, $y) {
-  transform: translate($x, $y); /* IE10 and Mozilla */
-  -ms-transform: translate($x, $y); /* IE 9 */
-  -webkit-transform: translate($x, $y); /* Safari and Chrome */
+    transform: translate($x, $y); /* IE10 and Mozilla */
+    -ms-transform: translate($x, $y); /* IE 9 */
+    -webkit-transform: translate($x, $y); /* Safari and Chrome */
 }
 
 /* transform-scale */
@@ -203,104 +204,102 @@ $browserPrefixes: webkit moz o ms;
 // @param
 //     $height - height
 @mixin transform-scale($width, $height) {
-  transform: scale($width, $height); /* IE10 and Mozilla */
-  -ms-transform: scale($width, $height); /* IE 9 */
-  -webkit-transform: scale($width, $height); /* Safari and Chrome */
+    transform: scale($width, $height); /* IE10 and Mozilla */
+    -ms-transform: scale($width, $height); /* IE 9 */
+    -webkit-transform: scale($width, $height); /* Safari and Chrome */
 }
 
 @mixin scrollable() {
-  ::-webkit-scrollbar {
-    width: 8px;
-  }
+    ::-webkit-scrollbar {
+        width: 8px;
+    }
 }
 
 @mixin create-circle($size, $bgcolor) {
-  border-radius: 50%;
-  width: $size;
-  height: $size;
-  background: $bgcolor;
-       border: 3px solid $bgcolor;
-       display: flex;
-       align-items: center;
-       justify-content: center;
+    border-radius: 50%;
+    width: $size;
+    height: $size;
+    background: $bgcolor;
+    border: 3px solid $bgcolor;
+    display: flex;
+    align-items: center;
+    justify-content: center;
 }
 
 /**/
 @mixin keyframe-animation($animationType, $properties, $fromValue, $toValue) {
-
-  @keyframes #{$animationType} {
-    from {
-      $startIndex: 1;
-      @each $property in $properties {
-        #{$property}: nth($fromValue, $startIndex);
-        $startIndex: $startIndex + 1;
-      }
-    }
-    to {
-      $startIndex: 1;
-      @each $property in $properties {
-        #{$property}: nth($toValue, $startIndex);
-        $startIndex: $startIndex + 1;
-      }
+    @keyframes #{$animationType} {
+        from {
+            $startIndex: 1;
+            @each $property in $properties {
+                #{$property}: nth($fromValue, $startIndex);
+                $startIndex: $startIndex + 1;
+            }
+        }
+        to {
+            $startIndex: 1;
+            @each $property in $properties {
+                #{$property}: nth($toValue, $startIndex);
+                $startIndex: $startIndex + 1;
+            }
+        }
     }
-  }
-  @-moz-keyframes #{$animationType}{
-    /* Firefox */
-    from {
-      $startIndex: 1;
-      @each $property in $properties {
-        #{$property}: nth($fromValue, $startIndex);
-        $startIndex: $startIndex + 1;
-      }
+    @-moz-keyframes #{$animationType} {
+        /* Firefox */
+        from {
+            $startIndex: 1;
+            @each $property in $properties {
+                #{$property}: nth($fromValue, $startIndex);
+                $startIndex: $startIndex + 1;
+            }
+        }
+        to {
+            $startIndex: 1;
+            @each $property in $properties {
+                #{$property}: nth($toValue, $startIndex);
+                $startIndex: $startIndex + 1;
+            }
+        }
     }
-    to {
-      $startIndex: 1;
-      @each $property in $properties {
-        #{$property}: nth($toValue, $startIndex);
-        $startIndex: $startIndex + 1;
-      }
+    @-webkit-keyframes #{$animationType} {
+        /* Safari and Chrome */
+        from {
+            $startIndex: 1;
+            @each $property in $properties {
+                #{$property}: nth($fromValue, $startIndex);
+                $startIndex: $startIndex + 1;
+            }
+        }
+        to {
+            $startIndex: 1;
+            @each $property in $properties {
+                #{$property}: nth($toValue, $startIndex);
+                $startIndex: $startIndex + 1;
+            }
+        }
     }
-  }
-  @-webkit-keyframes #{$animationType} {
-    /* Safari and Chrome */
-    from {
-      $startIndex: 1;
-      @each $property in $properties {
-        #{$property}: nth($fromValue, $startIndex);
-        $startIndex: $startIndex + 1;
-      }
+    @-o-keyframes #{$animationType} {
+        /* Opera */
+        from {
+            $startIndex: 1;
+            @each $property in $properties {
+                #{$property}: nth($fromValue, $startIndex);
+                $startIndex: $startIndex + 1;
+            }
+        }
+        to {
+            $startIndex: 1;
+            @each $property in $properties {
+                #{$property}: nth($toValue, $startIndex);
+                $startIndex: $startIndex + 1;
+            }
+        }
     }
-    to {
-      $startIndex: 1;
-      @each $property in $properties {
-        #{$property}: nth($toValue, $startIndex);
-        $startIndex: $startIndex + 1;
-      }
-    }
-  }
-  @-o-keyframes #{$animationType} {
-    /* Opera */
-    from {
-      $startIndex: 1;
-      @each $property in $properties {
-        #{$property}: nth($fromValue, $startIndex);
-        $startIndex: $startIndex + 1;
-      }
-    }
-    to {
-      $startIndex: 1;
-      @each $property in $properties {
-        #{$property}: nth($toValue, $startIndex);
-        $startIndex: $startIndex + 1;
-      }
-    }
-  }
 }
 
-
 /**/
 @mixin border-shadow($xShadow: 0.545px, $yShadow: 0.839px, $blur: 4px, $spread: 0, $color: $light-gray, $opacity: 0.2) {
-  @include box-shadow($xShadow $yShadow $blur $spread rgba($color, $opacity));
+    @include box-shadow($xShadow $yShadow $blur $spread rgba($color, $opacity));
 }
 
 /* percent-plus-value */
@@ -308,6 +307,6 @@ $browserPrefixes: webkit moz o ms;
 //     Calculate length property (e.g. width, margin) by adding a value (e.g. in pixels)
 //     to a percentage of container height/width
 @mixin percent-plus-value($property, $value, $percent: 100%) {
-  $string: 'calc(' + $percent + ' + ' + $value + ')';
-  #{$property}: unquote($string);
+    $string: 'calc(' + $percent + ' + ' + $value + ')';
+    #{$property}: unquote($string);
 }
index 6ea204a..48d9f4b 100644 (file)
@@ -1,4 +1,3 @@
-
 // primary colors
 $blue: #009fdb;
 $dark-blue: #0568ae;
@@ -29,7 +28,7 @@ $tlv-gray: #f8f8f8;
 $tlv-light-gray: #eaeaea;
 $tlv-hover: #e6f6fb;
 $highlight-gray: #eceff3;
-$transparent-black: rgba(0,0,0,.3);
+$transparent-black: rgba(0, 0, 0, 0.3);
 
 $content-background-color: $white;
 
@@ -44,8 +43,9 @@ $tablet-max-width: 1024px;
 $laptop-min-width: 1224px;
 $desktop-min-width: 1824px;
 
+$loader-background: #e1e4e6;
 
-
-
-
-
+$action-button-active-bg: #0091c7;
+$action-button-active-border: #006186;
+$action-button-hover-bg: #1ec2ff;
+$action-button-hover-border: #0091c8;
index 7a5b77b..dbe805f 100644 (file)
 $message-info-icon-size: 16px;
 
 @mixin status-icon-class {
-  @extend .body-1-light;
-  width: $message-info-icon-size;
-  height: $message-info-icon-size;
-  margin-left: 8px;
-  color: $white;
-  border-radius: $message-info-icon-size / 2;
-  display: inline-block;
-  text-align: center;
+    @extend .body-1-light;
+    width: $message-info-icon-size;
+    height: $message-info-icon-size;
+    margin-left: 8px;
+    color: $white;
+    border-radius: $message-info-icon-size / 2;
+    display: inline-block;
+    text-align: center;
 }
 
 .activity-log-view {
+    .list-editor-view .list-editor-view-header {
+        border: none;
+        .list-editor-view-title {
+            @extend .heading-1;
+            color: $blue;
+        }
+    }
+    .list-editor-view-list {
+        border: 1px solid $light-gray;
+        border-bottom: none;
+        overflow-y: hidden;
+    }
+    .activity-list-item {
+        display: flex;
+        height: 36px;
+        @extend .body-1;
+        &.header {
+            @extend .body-1-semibold;
+            background-color: $tlv-light-gray;
+            color: $text-black;
+        }
+    }
 
-  .list-editor-view .list-editor-view-header {
-       border: none;
-       .list-editor-view-title {
-         @extend .heading-1;
-         color: $blue;
-       }
-  }
-  .list-editor-view-list {
-       border: 1px solid $light-gray;
-       border-bottom: none;
-       overflow-y: hidden;
-  }
-  .activity-list-item {
-       display: flex;
-       height: 36px;
-       @extend .body-1;
-       &.header {
-         @extend .body-1-semibold;
-         background-color: $tlv-light-gray;
-         color: $text-black;
-       }
-  }
+    .activity-status {
+        .svg-icon-wrapper {
+            float: right;
+        }
 
-  .activity-status {
-       .svg-icon-wrapper {
-         float: right;
-       }
+        .status-icon.false:after {
+            @include status-icon-class;
+            float: right;
+            background-color: $red;
+            content: '!';
+        }
+    }
 
-       .status-icon.false:after {
-         @include status-icon-class;
-         float: right;
-         background-color: $red;
-         content: "!";
-       }
-  }
+    .message-further-info-icon {
+        @include status-icon-class;
+        background-color: $gray;
+    }
 
-  .message-further-info-icon {
-       @include status-icon-class;
-       background-color: $gray;
-  }
+    .table-cell {
+        border-right: 1px solid $light-gray;
+        border-bottom: 1px solid $light-gray;
+        &:last-child {
+            border-right: none;
+        }
+        flex-basis: 20%;
+        display: flex;
+        padding: 0 20px;
+        justify-content: center;
+        flex-direction: column;
+        &.activity-comment {
+            min-width: 0;
+            span {
+                @include ellipsis(100%);
+            }
+        }
+    }
 
-  .table-cell {
-       border-right: 1px solid $light-gray;
-       border-bottom: 1px solid $light-gray;
-       &:last-child {
-         border-right: none;
-       }
-       flex-basis: 20%;
-       display: flex;
-       padding: 0 20px;
-       justify-content: center;
-       flex-direction: column;
-       &.activity-comment {
-         min-width: 0;
-         span {
-               @include ellipsis(100%);
-         }
-       }
-  }
-
-  .date-header {
-       cursor: pointer;
-       display: flex;
-       align-items: center;
-       .header-sort-arrow {
-         width: 0;
-         height: 0;
-         border-left: 5px solid transparent;
-         border-right: 5px solid transparent;
-         margin-left: 9px;
-         &.up {
-               border-bottom: 5px solid $black;
-         }
-         &.down {
-               border-top: 5px solid $black;
-         }
-
-       }
-  }
-
-  .date-cell {
-       display: flex;
-       justify-content: space-between;
-  }
+    .date-header {
+        cursor: pointer;
+        display: flex;
+        align-items: center;
+        .header-sort-arrow {
+            width: 0;
+            height: 0;
+            border-left: 5px solid transparent;
+            border-right: 5px solid transparent;
+            margin-left: 9px;
+            &.up {
+                border-bottom: 5px solid $black;
+            }
+            &.down {
+                border-top: 5px solid $black;
+            }
+        }
+    }
 
+    .date-cell {
+        display: flex;
+        justify-content: space-between;
+    }
 }
index e7f5d28..47036ea 100644 (file)
@@ -1,10 +1,9 @@
-
 .comment-commit-form {
-  .commit-modal-text {
-    padding-bottom: 30px;
-  }
-  .validation-buttons .sdc-button-default{
-    min-width: 94px;
-    width: auto;
-  }
-}
\ No newline at end of file
+    .commit-modal-text {
+        padding-bottom: 30px;
+    }
+    .validation-buttons .sdc-button-default {
+        min-width: 94px;
+        width: auto;
+    }
+}
index d51a1b6..e9c0f40 100644 (file)
 .customized-date-picker {
-       margin-bottom: 24px;
-       display: flex;
-       .date-picker-label {
-               &.required {
-                       &:before {
-                               content: "*";
-                               color: $red;
-                               margin: 0 4px 0 0;
-                       }
-               }
+    margin-bottom: 24px;
+    display: flex;
+    > div:first-child {
+        flex: 1;
+        display: flex;
+    }
+    .react-datepicker-wrapper {
+        display: flex;
+        flex: 1;
+    }
+    .date-picker-label {
+        &.required {
+            &:before {
+                content: '*';
+                color: $red;
+                margin: 0 4px 0 0;
+            }
+        }
 
-               @extend .body-2-semibold;
-               color: $dark-gray;
-               margin-bottom: 8px;
-       }
-       .react-datepicker__input-container {
-               flex: 1;
-               cursor: pointer;
-       }
-       .datepicker-custom-input {
-               display: flex;
-               justify-content: space-between;
-               align-items: center;
-               height: 30px;
-               border-radius: 2px;
-               color: $dark-gray;
-               border: 1px solid $light-gray;
-               padding: 6px 8px 6px 12px;
-               .clear-input {
-                               margin-left: auto;
-                               margin-right: 8px;
-                               .svg-icon {
-                                       fill: transparent;
-                                       height: 8px;
-                                       width: 8px;
-                               }
-                       }
-               &:hover {
-                       border-color: $gray;
-                       .clear-input {
-                               .svg-icon {
-                                       fill: initial;
-                               }
-                       }
-               }
-               .datepicker-text {
-                       cursor: pointer;
-                       @extend .body-1;
-                       &.placeholder {
-                               color: $light-gray;
-                       }
+        @extend .body-2-semibold;
+        color: $dark-gray;
+        margin-bottom: 8px;
+    }
+    .react-datepicker__input-container {
+        flex: 1;
+        cursor: pointer;
+    }
+    .datepicker-custom-input {
+        display: flex;
+        justify-content: space-between;
+        align-items: center;
+        height: 30px;
+        border-radius: 2px;
+        color: $dark-gray;
+        border: 1px solid $light-gray;
+        padding: 6px 8px 6px 12px;
+        .clear-input {
+            margin-left: auto;
+            margin-right: 8px;
+            .svg-icon {
+                fill: transparent;
+                height: 8px;
+                width: 8px;
+            }
+        }
+        &:hover {
+            border-color: $gray;
+            .clear-input {
+                .svg-icon {
+                    fill: initial;
+                }
+            }
+        }
+        .datepicker-text {
+            cursor: pointer;
+            @extend .body-1;
+            &.placeholder {
+                color: $light-gray;
+            }
+        }
+        .calendar-input {
+            fill: $light-gray;
+        }
+        .svg-icon-wrapper.calendar {
+            .svg-icon {
+                fill: $dark-gray;
+                width: 17px;
+                height: 17px;
+            }
+        }
+    }
+    /* Out of namespace context for datepicker */
+    div.customized-date-picker-calendar {
+        @import 'common/variables';
+        @import 'common/typography';
+        border-color: $light-gray;
+        //margin-top: -8px;
+        color: $black;
+        .react-datepicker__triangle {
+            margin-top: 0px;
+            display: none;
+        }
 
-               }
-               .calendar-input {
-                       fill: $light-gray;
-               }
-               .svg-icon-wrapper.calendar {
-                       .svg-icon {
-                               fill: $dark-gray;
-                               width: 17px;
-                               height: 17px;
-                       }
-               }
-       }
-}
+        .react-datepicker__navigation--previous::before,
+        .react-datepicker__navigation--next::before {
+            width: 8px;
+            height: 8px;
+            display: inline-block;
+            position: absolute;
+            top: -4px;
+        }
+        .react-datepicker__navigation--previous::before {
+            left: 0;
+            content: url(../../node_modules/sdc-ui/assets/icons/angleLeft.svg);
+        }
+        .react-datepicker__navigation--next::before {
+            right: 0;
+            content: url(../../node_modules/sdc-ui/assets/icons/angleRight.svg);
+        }
+
+        .react-datepicker__navigation--previous,
+        .react-datepicker__navigation--next {
+            border: none;
+        }
+
+        .react-datepicker__month-container {
+            .react-datepicker__header {
+                background-color: $background-gray;
+                border-bottom: none;
+                .react-datepicker__current-month {
+                    @extend .body-1-semibold;
+                    background-color: $background-gray;
+                    margin-bottom: 10px;
+                }
+                .react-datepicker__day-names {
+                    @extend .body-1;
+                    background-color: $white;
+                }
+            }
+            .react-datepicker__day--selected,
+            .react-datepicker__day--keyboard-selected {
+                @extend .body-1;
+                background-color: $blue;
+                color: $white;
+            }
+            .react-datepicker__day {
+                border-radius: 0px;
+                margin: 0;
+                flex: 1;
+                @extend .body-1;
+            }
 
+            .react-datepicker__day--in-range,
+            .react-datepicker__day--in-selecting-range {
+                background-color: $tlv-hover;
+                color: $black;
+                &.react-datepicker__day--selected,
+                &.react-datepicker__day--keyboard-selected,
+                &.react-datepicker__day--range-start,
+                &.react-datepicker__day--range-end {
+                    background-color: $blue;
+                    color: $white;
+                }
+                &.react-datepicker__day--selecting-range-start,
+                &.react-datepicker__day--selecting-range-end {
+                    background-color: lighten($blue, 40%);
+                    color: $black;
+                }
+                &.react-datepicker__day--selecting-range-start.react-datepicker__day--range-start,
+                &.react-datepicker__day--selecting-range-end.react-datepicker__day--range-end,
+                &.react-datepicker__day--selecting-range-start.react-datepicker__day--keyboard-selected {
+                    background-color: $blue;
+                    color: $white;
+                }
+            }
+
+            .react-datepicker__week {
+                display: flex;
+            }
+        }
+    }
+}
index 2479ae7..31a67d9 100644 (file)
@@ -1,31 +1,30 @@
-
 .active-dragging {
-  border: 3px dashed $dark-blue;
-  border-radius: 20px;
-  .draggable-wrapper {
-    opacity: 0.5;
-  }
+    border: 3px dashed $dark-blue;
+    border-radius: 20px;
+    .draggable-wrapper {
+        opacity: 0.5;
+    }
 }
 .file-upload-box {
-  @extend .body-1;
-  display: flex;
-  text-align: center;
-  flex-direction: column;
-  justify-content: center;
-  border: 2px dashed $light-gray;
-  padding-top: 20px;
-  padding-bottom: 20px;
-  width: 382px;
-  align-items: center;
-  .upload-btn {
-    padding: 4px 20px;
-  }
-  .drag-text {
-    color: $blue;
-    @extend .body-1-semibold;
-  }
-  .or-text {
-    margin-top: 10px;
-    margin-bottom: 10px;
-  }
+    @extend .body-1;
+    display: flex;
+    text-align: center;
+    flex-direction: column;
+    justify-content: center;
+    border: 2px dashed $light-gray;
+    padding-top: 20px;
+    padding-bottom: 20px;
+    width: 382px;
+    align-items: center;
+    .upload-btn {
+        padding: 4px 20px;
+    }
+    .drag-text {
+        color: $blue;
+        @extend .body-1-semibold;
+    }
+    .or-text {
+        margin-top: 10px;
+        margin-bottom: 10px;
+    }
 }
index 0c7d82e..65702df 100644 (file)
@@ -1,53 +1,53 @@
 .dual-list-box {
-  display: flex;
-  margin: 25px 0 10px 0;
-       .svg-icon.search {
-               height: 14px;
-               width: 14px;
-       }
+    display: flex;
+    margin: 25px 0 10px 0;
+    .svg-icon.search {
+        height: 14px;
+        width: 14px;
+    }
 
-  .dual-search-multi-select-section {
-    flex: 1;
+    .dual-search-multi-select-section {
+        flex: 1;
 
-    .dual-text-box-search {
-      margin: 5px 0 30px 0;
-    }
-    .dual-list-box-multi-select {
-      flex: 1 1;
-      display: flex;
-      height: 166px;
-      margin-bottom: 0;
-      select {
-        width: 100%;
-        margin: 0;
-        padding: 0;
-        overflow-y: scroll;
-        height: inherit;
-        option {
-          padding: 4px 0 4px 10px;
+        .dual-text-box-search {
+            margin: 5px 0 30px 0;
+        }
+        .dual-list-box-multi-select {
+            flex: 1 1;
+            display: flex;
+            height: 166px;
+            margin-bottom: 0;
+            select {
+                width: 100%;
+                margin: 0;
+                padding: 0;
+                overflow-y: scroll;
+                height: inherit;
+                option {
+                    padding: 4px 0 4px 10px;
+                }
+            }
+            option:checked {
+                background: $blue linear-gradient(0deg, $blue 0%, $blue 100%);
+            }
         }
-      }
-      option:checked {
-        background: $blue linear-gradient(0deg, $blue 0%, $blue 100%);
-      }
     }
-  }
-  .dual-list-options-bar {
-    margin: 62px 54px 27px 54px;
-    padding-top: 23px;
-               .svg-icon {
-                       width: 14px;
-                       height: 14px;
-               }
-    .dual-list-option {
-      text-align: center;
-      line-height: 10px;
-      font-size: 25px;
-      width: 20px;
-      height: 15px;
-      cursor: pointer;
-      margin-top: 20px;
-      fill: $blue;
+    .dual-list-options-bar {
+        margin: 62px 54px 27px 54px;
+        padding-top: 23px;
+        .svg-icon {
+            width: 14px;
+            height: 14px;
+        }
+        .dual-list-option {
+            text-align: center;
+            line-height: 10px;
+            font-size: 25px;
+            width: 20px;
+            height: 15px;
+            cursor: pointer;
+            margin-top: 20px;
+            fill: $blue;
+        }
     }
-  }
 }
index 2484a73..0508fac 100644 (file)
@@ -1,56 +1,55 @@
 .expandable-input-top {
-       display: flex;
-       height: 22px;
-       .expandable-input-wrapper {
-               display: flex;
-               &.closed {
-                       .svg-icon
-                       {
-                               &.__search {
-                                       height: 17px;
-                                       width: 17px;
-                                       transition: fill 0.5s ease-in;
-                                       fill: $blue;
-                                       cursor: pointer;
-                                       &:hover {
-                                               transition: fill 0.5s ease-in;
-                                               fill: $dark-blue;
-                                       }
-                               }
-                       }
-               }
-               &.opened {
-                       .svg-icon-wrapper {
-                               margin-left: 3px;
-                       }
-                       .svg-icon {
-                               &.__search {
-                                       height: 17px;
-                                       width: 17px;
-                                       fill: $dark-blue;
-                               }
-                       }
-                       .svg-icon {
-                               &.__close {
-                                       margin-left: 7px;
-                                       opacity: 0.6;
-                                       fill: $dark-gray;
-                                       &:hover {
-                                               opacity: 1;
-                                       }
-                               }
-                       }
-               }
-               .expandable-input-control {
-                       .form-control {
-                               border: none;
-                               background-color: transparent;
-                               border-radius: 0;
-                               border-bottom: 1px solid $gray;
-                               height: 22px;
-                               padding: 0 5px;
-                       }
-                       margin: 0;
-               }
-       }
+    display: flex;
+    height: 22px;
+    .expandable-input-wrapper {
+        display: flex;
+        &.closed {
+            .svg-icon {
+                &.__search {
+                    height: 17px;
+                    width: 17px;
+                    transition: fill 0.5s ease-in;
+                    fill: $blue;
+                    cursor: pointer;
+                    &:hover {
+                        transition: fill 0.5s ease-in;
+                        fill: $dark-blue;
+                    }
+                }
+            }
+        }
+        &.opened {
+            .svg-icon-wrapper {
+                margin-left: 3px;
+            }
+            .svg-icon {
+                &.__search {
+                    height: 17px;
+                    width: 17px;
+                    fill: $dark-blue;
+                }
+            }
+            .svg-icon {
+                &.__close {
+                    margin-left: 7px;
+                    opacity: 0.6;
+                    fill: $dark-gray;
+                    &:hover {
+                        opacity: 1;
+                    }
+                }
+            }
+        }
+        .expandable-input-control {
+            .form-control {
+                border: none;
+                background-color: transparent;
+                border-radius: 0;
+                border-bottom: 1px solid $gray;
+                height: 22px;
+                padding: 0 5px;
+            }
+            margin: 0;
+        }
+    }
 }
index 58e8430..40c1aa1 100644 (file)
@@ -1,76 +1,76 @@
 .section-title {
-  @extend .heading-3-semibold;
-  padding: 50px 0 20px 0;
-  &:first-child {
-    padding-top: 0;
-  }
+    @extend .heading-3-semibold;
+    padding: 50px 0 20px 0;
+    &:first-child {
+        padding-top: 0;
+    }
 }
 
 .validation-form-content {
-       fieldset[disabled] {
-               .form-group {
-                       opacity: 0.7;
-                       cursor: auto;
-                       pointer-events: none;
-                       .dropdown-multi-select {
-                               .form-group {
-                                       opacity: 1;
-                               }
-                               .Select-control {
-                                       background-color: $tlv-light-gray;
-                               }
-                       }
-               }
-       }
+    fieldset[disabled] {
+        .form-group {
+            opacity: 0.7;
+            cursor: auto;
+            pointer-events: none;
+            .dropdown-multi-select {
+                .form-group {
+                    opacity: 1;
+                }
+                .Select-control {
+                    background-color: $tlv-light-gray;
+                }
+            }
+        }
+    }
 }
 
 .dropdown-multi-select {
-  .Select {
-    display: block;
-    width: 100%;
-               .Select-menu-outer {
-                       .Select-option {
-                               &:hover {
-                                       background-color: $blue;
-                                       color: $white;
-                               }
-                       }
-               }
-    .Select-control {
-      height: 28px;
-      border-radius: 2px;
-      .Select-input {
-        height: 28px;
-        input {
-          height: 28px;
-          padding: 0;
+    .Select {
+        display: block;
+        width: 100%;
+        .Select-menu-outer {
+            .Select-option {
+                &:hover {
+                    background-color: $blue;
+                    color: $white;
+                }
+            }
+        }
+        .Select-control {
+            height: 28px;
+            border-radius: 2px;
+            .Select-input {
+                height: 28px;
+                input {
+                    height: 28px;
+                    padding: 0;
+                }
+            }
+            .Select-placeholder {
+                line-height: 30px;
+            }
+        }
+        &.Select--multi {
+            .Select-value {
+                color: $text-black;
+                background-color: $background-gray;
+                border: none;
+                margin: 3px 0 3px 10px;
+                border-radius: 10px;
+                padding-left: 8px;
+                padding-right: 6px;
+            }
+            .Select-value-icon {
+                border: none;
+                float: right;
+                &:hover {
+                    background-color: inherit;
+                    color: inherit;
+                }
+            }
+            .Select-arrow-zone {
+                padding-top: 4px;
+            }
         }
-      }
-      .Select-placeholder {
-        line-height: 30px;
-      }
-    }
-    &.Select--multi {
-      .Select-value {
-        color: $text-black;
-        background-color: $background-gray;
-                               border: none;
-                               margin: 3px 0 3px 10px;
-        border-radius: 10px;
-                               padding-left: 8px;
-                               padding-right: 6px;
-      }
-      .Select-value-icon {
-        border: none;
-                               float: right;
-                               &:hover {
-                                       background-color: inherit;
-                                       color: inherit;
-                               }
-      }
-      .Select-arrow-zone {
-                               padding-top: 4px;
-      }
     }
-  }
 }
index f210b64..595b0cd 100644 (file)
@@ -1,71 +1,71 @@
 .grid-section {
-  $gridItemSpace: 15%;
+    $gridItemSpace: 15%;
 
-  @mixin gridCol($numOfCols, $flexBasis) {
-    .#{grid-col- + $numOfCols} {
-      @extend %grid-col-base;
-      flex-basis:  $flexBasis;
-      &:not(.last-col-in-row):after {
-        flex-basis: $gridItemSpace / $numOfCols;
-        content: ' ';
-      }
+    @mixin gridCol($numOfCols, $flexBasis) {
+        .#{grid-col- + $numOfCols} {
+            @extend %grid-col-base;
+            flex-basis: $flexBasis;
+            &:not(.last-col-in-row):after {
+                flex-basis: $gridItemSpace / $numOfCols;
+                content: ' ';
+            }
+        }
     }
-  }
 
-  @mixin gridColWithLastColumn($numOfCols, $flexBasis, $flexBasisLast) {
-    .#{grid-col- + $numOfCols} {
-      @extend %grid-col-base;
-      &:not(.last-col-in-row) {
-        flex-basis:  $flexBasis;
-        margin-right: 5%;
-      }
-      &.last-col-in-row {
-        flex-basis:  $flexBasisLast;
-      }
+    @mixin gridColWithLastColumn($numOfCols, $flexBasis, $flexBasisLast) {
+        .#{grid-col- + $numOfCols} {
+            @extend %grid-col-base;
+            &:not(.last-col-in-row) {
+                flex-basis: $flexBasis;
+                margin-right: 5%;
+            }
+            &.last-col-in-row {
+                flex-basis: $flexBasisLast;
+            }
+        }
     }
-  }
 
-  &:not(:last-of-type) {
-    padding-bottom: 30px;
-  }
+    &:not(:last-of-type) {
+        padding-bottom: 30px;
+    }
 
-  .grid-items {
-    display: flex;
-    flex-direction: row;
-    flex-wrap: wrap;
-  }
+    .grid-items {
+        display: flex;
+        flex-direction: row;
+        flex-wrap: wrap;
+    }
 
-  %grid-col-base {
-    flex-shrink: 0;
-    display: flex;
-  }
+    %grid-col-base {
+        flex-shrink: 0;
+        display: flex;
+    }
 
-  .grid-item {
-    flex: 1;
-    display: flex;
-    flex-direction: column;
-  }
+    .grid-item {
+        flex: 1;
+        display: flex;
+        flex-direction: column;
+    }
 
-  .grid-item-stretch {
-    @extend .grid-item;
-    & *:last-child {
-      flex: 1;
-      display: flex;
-      flex-direction: column;
+    .grid-item-stretch {
+        @extend .grid-item;
+        & *:last-child {
+            flex: 1;
+            display: flex;
+            flex-direction: column;
+        }
     }
-  }
 
-  &.has-last-col-set {
-    @include gridColWithLastColumn(1, 21%, 22%);
-    @include gridColWithLastColumn(2, 47%, 48%);
-    @include gridColWithLastColumn(3, 73%, 74%);
-    @include gridColWithLastColumn(4, 100%, 100%);
-  }
+    &.has-last-col-set {
+        @include gridColWithLastColumn(1, 21%, 22%);
+        @include gridColWithLastColumn(2, 47%, 48%);
+        @include gridColWithLastColumn(3, 73%, 74%);
+        @include gridColWithLastColumn(4, 100%, 100%);
+    }
 
-  &:not(.has-last-col-set) {
-    @include gridCol(1, 25%);
-    @include gridCol(2, 50%);
-    @include gridCol(3, 75%);
-    @include gridCol(4, 100%);
-  }
+    &:not(.has-last-col-set) {
+        @include gridCol(1, 25%);
+        @include gridCol(2, 50%);
+        @include gridCol(3, 75%);
+        @include gridCol(4, 100%);
+    }
 }
index face03d..eb0fe79 100644 (file)
@@ -1,85 +1,84 @@
 .disabled {
-       .Select-control {
-               background-color: $tlv-light-gray;
-               .Select-placeholder {
-                       color: $dark-gray;
-               }
-       }
+    .Select-control {
+        background-color: $tlv-light-gray;
+        .Select-placeholder {
+            color: $dark-gray;
+        }
+    }
 }
 
 .input-options {
-  display: flex;
-  border: 1px solid $light-gray;
-  border-radius: 2px;
-  height: 30px;
-  &:hover {
-    border-color: $gray;
-  }
-  .input-options-select {
-    float: left;
-    border: none;
-    transition-property: width;
-    transition-duration: 300ms;
-    padding-top:0px;
-    padding-bottom: 0px;
-    height:28px;
-
-  }
-
-  .input-options-other{
-    float: left;
+    display: flex;
+    border: 1px solid $light-gray;
+    border-radius: 2px;
     height: 30px;
-    border: none;
-    padding-top:0px;
-    padding-bottom: 0px;
-    height:28px;
-  }
-  .input-options-separator {
-    width: 1px;
-    height: 24px;
-    margin-top: 2px;
-    margin-bottom: 2px;
-    border:1px solid $light-gray;
-  }
+    &:hover {
+        border-color: $gray;
+    }
+    .input-options-select {
+        float: left;
+        border: none;
+        transition-property: width;
+        transition-duration: 300ms;
+        padding-top: 0px;
+        padding-bottom: 0px;
+        height: 28px;
+    }
+
+    .input-options-other {
+        float: left;
+        height: 30px;
+        border: none;
+        padding-top: 0px;
+        padding-bottom: 0px;
+        height: 28px;
+    }
+    .input-options-separator {
+        width: 1px;
+        height: 24px;
+        margin-top: 2px;
+        margin-bottom: 2px;
+        border: 1px solid $light-gray;
+    }
 }
 
 .input-options.has-error {
-   border-color: $crimson;
+    border-color: $crimson;
 }
 
 .bootstrap-input-options {
-  display: flex;
-  flex-direction: column;
-  .input-options-select {
-       border: 1px solid $light-gray;
-       border-radius: 2px;
-       height: 30px;
-       float: left;
-       transition-property: width;
-       transition-duration: 300ms;
-       padding-top: 0px;
-       padding-bottom: 0px;
-       width: 100%;
-       &:hover {
-         border-color: $gray;
-       }
-  }
-  .input-options-other {
-       float: left;
-       height: 30px;
-       border: none;
-       padding-top: 0px;
-       padding-bottom: 0px;
-       height: 28px;
-  }
-  .input-options-separator {
-       width: 1px;
-       height: 24px;
-       margin-top: 2px;
-       margin-bottom: 2px;
-       border: 1px solid $light-gray;
-  }
-  &.has-error {
-       border-color: $crimson;
-  }
+    display: flex;
+    flex-direction: column;
+    .input-options-select {
+        border: 1px solid $light-gray;
+        border-radius: 2px;
+        height: 30px;
+        float: left;
+        transition-property: width;
+        transition-duration: 300ms;
+        padding-top: 0;
+        padding-bottom: 0;
+        width: 100%;
+        &:hover {
+            border-color: $gray;
+        }
+    }
+    .input-options-other {
+        float: left;
+        height: 30px;
+        border: none;
+        padding-top: 0;
+        padding-bottom: 0;
+        height: 28px;
+    }
+    .input-options-separator {
+        width: 1px;
+        height: 24px;
+        margin-top: 2px;
+        margin-bottom: 2px;
+        border: 1px solid $light-gray;
+    }
+    &.has-error {
+        border-color: $crimson;
+    }
 }
index 354a6a1..9bda78e 100644 (file)
 .list-editor-view {
-  @extend .flex-column;
-  background-color: $content-background-color;
-
-  .expandble-search-wrapper {
-    display: flex;
-    justify-content: flex-end;
-    margin-top: 10px;
-  }
-
-  .list-editor-view-header {
-    display: flex;
-    justify-content: space-between;
-    align-items: flex-end;
-    border-bottom: 1px solid $light-gray;
-    padding-bottom: 5px;
-    .list-editor-view-title {
-      @extend .heading-3-semibold;
-    }
-  }
-
-  .list-editor-view-list-scroller {
-    @extend .flex;
-    overflow: auto;
-    margin: 18px 0 30px 0;
-  }
-
-  .list-editor-view-list {
     @extend .flex-column;
+    background-color: $content-background-color;
 
-    .list-editor-item-view {
-      margin: 8px 0;
-      border: 1px solid $light-gray;
-      background-color: $white;
-      display: flex;
-      min-height: 100px;
-      overflow: hidden;
-      .list-editor-item-view-content {
-        padding: 10px 28px;
+    .expandble-search-wrapper {
         display: flex;
-        flex: 1 1;
-        .list-editor-item-view-field {
-          flex: 1 1;
-          color: $black;
-          padding: 0;
-          @include ellipsis;
-          overflow-wrap: break-word;
-          white-space: initial;
-
+        justify-content: flex-end;
+        margin-top: 10px;
+    }
 
-          .number-field {
-            align-content: center;
-          }
-          .title {
-            @extend .body-1;
-            padding-bottom: 5px;
-            &:not(:first-child) {
-              line-height: 0.9;
-            }
-          }
-          .description {
-            @include multiline-ellipsis(1.3em, 3);
-          }
-          .text {
-            @extend .body-1;
-          }
-          .textEllipses {
-            white-space: nowrap;
-            text-overflow: ellipsis;
-            overflow: hidden;
-            padding-right: 5px;
-          }
-        }
-      }
-      .list-editor-item-view-controller {
+    .list-editor-view-header {
         display: flex;
-        flex-basis: 5%;
-        align-self: center;
-        justify-content: center;
-        flex-direction: column;
-        .svg-icon-wrapper {
-          &:first-child {
-            margin-bottom: 10px;
-          }
-        }
-        .svg-icon {
-          margin-top: 5px;
-          transition: fill .3s;
-          fill: $white;
-        }
-      }
-      &.selectable:hover{
-        @extend .box-hover;
-        cursor: pointer;
-        .list-editor-item-view-controller {
-          .svg-icon {
-            fill: $dark-gray;
-            &:hover {
-              fill: $black;
-            }
-          }
+        justify-content: space-between;
+        align-items: flex-end;
+        border-bottom: 1px solid $light-gray;
+        padding-bottom: 5px;
+        .list-editor-view-title {
+            @extend .heading-3-semibold;
         }
-      }
     }
-    &.two-columns {
 
-      flex-direction: row;
-      flex-wrap: wrap;
+    .list-editor-view-list-scroller {
+        @extend .flex;
+        overflow: auto;
+        margin: 18px 0 30px 0;
+    }
+
+    .list-editor-view-list {
+        @extend .flex-column;
 
-      .list-editor-item-view {
-        .list-editor-item-view-content {
-          display: flex;
-          flex-direction: row;
-          align-items: center;
-          padding: 10px 18px 10px 0;
-          .list-editor-item-view-field {
-            flex: 0.3 1;
+        .list-editor-item-view {
+            margin: 8px 0;
+            border: 1px solid $light-gray;
+            background-color: $white;
             display: flex;
-            justify-content: center;
-            flex-direction: column;
-            height: 100%;
-            border-right : 1px solid $light-gray;
-            margin-left: 18px;
-            &:last-child{
-              border: none;
-              flex: 1;
-            }
-            .details{
-              display: flex;
-              flex-direction: row;
-              .title {
-                padding: 0;
-                margin-right: 5px;
-              }
-            }
+            min-height: 100px;
+            overflow: hidden;
+            .list-editor-item-view-content {
+                padding: 10px 28px;
+                display: flex;
+                flex: 1 1;
+                .list-editor-item-view-field {
+                    flex: 1 1;
+                    color: $black;
+                    padding: 0;
+                    @include ellipsis;
+                    overflow-wrap: break-word;
+                    white-space: initial;
 
-            .details-col{
-              flex-direction: column;
-              .title {
-                padding-bottom: 0;
-              }
+                    .number-field {
+                        align-content: center;
+                    }
+                    .title {
+                        @extend .body-1;
+                        padding-bottom: 5px;
+                        &:not(:first-child) {
+                            line-height: 0.9;
+                        }
+                    }
+                    .description {
+                        @include multiline-ellipsis(1.3em, 3);
+                    }
+                    .text {
+                        @extend .body-1;
+                    }
+                    .textEllipses {
+                        white-space: nowrap;
+                        text-overflow: ellipsis;
+                        overflow: hidden;
+                        padding-right: 5px;
+                    }
+                }
             }
-
-            .description {
-              @extend .body-1;
-              @include multiline-ellipsis(1.3em, 3);
+            .list-editor-item-view-controller {
+                display: flex;
+                flex-basis: 5%;
+                align-self: center;
+                justify-content: center;
+                flex-direction: column;
+                .svg-icon-wrapper {
+                    &:first-child {
+                        margin-bottom: 10px;
+                    }
+                }
+                .svg-icon {
+                    margin-top: 5px;
+                    transition: fill 0.3s;
+                    fill: $white;
+                }
+            }
+            &.selectable:hover {
+                @extend .box-hover;
+                cursor: pointer;
+                .list-editor-item-view-controller {
+                    .svg-icon {
+                        fill: $dark-gray;
+                        &:hover {
+                            fill: $black;
+                        }
+                    }
+                }
             }
-          }
         }
+        &.two-columns {
+            flex-direction: row;
+            flex-wrap: wrap;
 
-        &:nth-child(odd){
-          flex: 0 0 48.5%;
-          margin-right: 50px;
-        }
-        &:nth-child(even) {
-          flex: 1;
-          margin-right: 0;
+            .list-editor-item-view {
+                .list-editor-item-view-content {
+                    display: flex;
+                    flex-direction: row;
+                    align-items: center;
+                    padding: 10px 18px 10px 0;
+                    .list-editor-item-view-field {
+                        flex: 0.3 1;
+                        display: flex;
+                        justify-content: center;
+                        flex-direction: column;
+                        height: 100%;
+                        border-right: 1px solid $light-gray;
+                        margin-left: 18px;
+                        &:last-child {
+                            border: none;
+                            flex: 1;
+                        }
+                        .details {
+                            display: flex;
+                            flex-direction: row;
+                            .title {
+                                padding: 0;
+                                margin-right: 5px;
+                            }
+                        }
+
+                        .details-col {
+                            flex-direction: column;
+                            .title {
+                                padding-bottom: 0;
+                            }
+                        }
+
+                        .description {
+                            @extend .body-1;
+                            @include multiline-ellipsis(1.3em, 3);
+                        }
+                    }
+                }
+
+                &:nth-child(odd) {
+                    flex: 0 0 48.5%;
+                    margin-right: 50px;
+                }
+                &:nth-child(even) {
+                    flex: 1;
+                    margin-right: 0;
+                }
+            }
         }
-      }
     }
-  }
 }
index ddff9af..ee7f6f3 100644 (file)
 .onboarding-loader {
-  .onboarding-loader-backdrop {
-    top: 0;
-    right: 0;
-    bottom: 0;
-    left: 0;
-    position: absolute;
-    background-color: #E1E4E6;
-    opacity: 0.5;
-  }
-  .tlv-loader {
-    height: 63px;
-    width: 63px;
-    position: absolute;
-    top: 30%;
-    left: 50%;
-    margin-top: -10.5px;
-    margin-left: -10.5px;
-  }
-  .tlv-loader.large {
-    transform: scale(1);
-  }
-  .tlv-loader::before {
-    background-color: $gray;
-    border-radius: 50%;
-    box-shadow: 21px 21px 0px 0px $gray, 0px 42px 0px 0px $gray, -21px 21px 0px 0px $gray;
-    content: '';
-    display: block;
-    height: 21px;
-    width: 21px;
-    position: absolute;
-    left: 50%;
-    margin-left: -10.5px;
-  }
-  .tlv-loader::after {
-    border-radius: 50%;
-    content: '';
-    display: block;
-    position: absolute;
-    height: 21px;
-    width: 21px;
-    animation: dot-move-2 4.5s infinite ease-in;
-  }
-  @keyframes dot-move {
-    0% {
-      background-color: $blue;
-      left: 21px;
-      top: 0;
+    .onboarding-loader-backdrop {
+        top: 0;
+        right: 0;
+        bottom: 0;
+        left: 0;
+        position: absolute;
+        background-color: $loader-background;
+        opacity: 0.5;
+    }
+    .tlv-loader {
+        height: 63px;
+        width: 63px;
+        position: absolute;
+        top: 30%;
+        left: 50%;
+        margin-top: -10.5px;
+        margin-left: -10.5px;
+    }
+    .tlv-loader.large {
+        transform: scale(1);
+    }
+    .tlv-loader::before {
+        background-color: $gray;
+        border-radius: 50%;
+        box-shadow: 21px 21px 0px 0px $gray, 0px 42px 0px 0px $gray,
+            -21px 21px 0px 0px $gray;
+        content: '';
+        display: block;
+        height: 21px;
+        width: 21px;
+        position: absolute;
+        left: 50%;
+        margin-left: -10.5px;
+    }
+    .tlv-loader::after {
+        border-radius: 50%;
+        content: '';
+        display: block;
+        position: absolute;
+        height: 21px;
+        width: 21px;
+        animation: dot-move-2 4.5s infinite ease-in;
+    }
+    @keyframes dot-move {
+        0% {
+            background-color: $blue;
+            left: 21px;
+            top: 0;
+        }
+        25% {
+            background-color: $orange;
+            left: 42px;
+            top: 21px;
+        }
+        50% {
+            background-color: $light-purple;
+            left: 21px;
+            top: 42px;
+        }
+        75% {
+            background-color: $light-green;
+            left: 0;
+            top: 21px;
+        }
+        100% {
+            background-color: $blue;
+            left: 21px;
+            top: 0;
+        }
+    }
+    @keyframes dot-move-2 {
+        0% {
+            background-color: $blue;
+            left: 21px;
+            top: 0;
+        }
+        6.25% {
+            background-color: $blue;
+            left: 42px;
+            top: 21px;
+        }
+        12.5% {
+            background-color: $blue;
+            left: 21px;
+            top: 42px;
+        }
+        18.75% {
+            background-color: $blue;
+            left: 0;
+            top: 21px;
+        }
+        25% {
+            background-color: $orange;
+            left: 21px;
+            top: 0;
+        }
+        31.25% {
+            background-color: $orange;
+            left: 42px;
+            top: 21px;
+        }
+        37.5% {
+            background-color: $orange;
+            left: 21px;
+            top: 42px;
+        }
+        43.75% {
+            background-color: $orange;
+            left: 0;
+            top: 21px;
+        }
+        50% {
+            background-color: $light-purple;
+            left: 21px;
+            top: 0;
+        }
+        56.25% {
+            background-color: $light-purple;
+            left: 42px;
+            top: 21px;
+        }
+        62.5% {
+            background-color: $light-purple;
+            left: 21px;
+            top: 42px;
+        }
+        68.75% {
+            background-color: $light-purple;
+            left: 0;
+            top: 21px;
+        }
+        75% {
+            background-color: $light-green;
+            left: 21px;
+            top: 0;
+        }
+        81.25% {
+            background-color: $light-green;
+            left: 42px;
+            top: 21px;
+        }
+        87.5% {
+            background-color: $light-green;
+            left: 21px;
+            top: 42px;
+        }
+        93.75% {
+            background-color: $light-green;
+            left: 0;
+            top: 21px;
+        }
+        100% {
+            background-color: $blue;
+            left: 21px;
+            top: 0;
+        }
     }
-    25% {
-      background-color: $orange;
-      left: 42px;
-      top: 21px;
-    }
-    50% {
-      background-color: $light-purple;
-      left: 21px;
-      top: 42px;
-    }
-    75% {
-      background-color: $light-green;
-      left: 0;
-      top: 21px;
-    }
-    100% {
-      background-color: $blue;
-      left: 21px;
-      top: 0;
-    }
-  }
-  @keyframes dot-move-2 {
-    0% {
-      background-color: $blue;
-      left: 21px;
-      top: 0;
-    }
-    6.25% {
-      background-color: $blue;
-      left: 42px;
-      top: 21px;
-    }
-    12.5% {
-      background-color: $blue;
-      left: 21px;
-      top: 42px;
-    }
-    18.75% {
-      background-color: $blue;
-      left: 0;
-      top: 21px;
-    }
-    25% {
-      background-color: $orange;
-      left: 21px;
-      top: 0;
-    }
-    31.25% {
-      background-color: $orange;
-      left: 42px;
-      top: 21px;
-    }
-    37.5% {
-      background-color: $orange;
-      left: 21px;
-      top: 42px;
-    }
-    43.75% {
-      background-color: $orange;
-      left: 0;
-      top: 21px;
-    }
-    50% {
-      background-color: $light-purple;
-      left: 21px;
-      top: 0;
-    }
-    56.25% {
-      background-color: $light-purple;
-      left: 42px;
-      top: 21px;
-    }
-    62.5% {
-      background-color: $light-purple;
-      left: 21px;
-      top: 42px;
-    }
-    68.75% {
-      background-color: $light-purple;
-      left: 0;
-      top: 21px;
-    }
-    75% {
-      background-color: $light-green;
-      left: 21px;
-      top: 0;
-    }
-    81.25% {
-      background-color: $light-green;
-      left: 42px;
-      top: 21px;
-    }
-    87.5% {
-      background-color: $light-green;
-      left: 21px;
-      top: 42px;
-    }
-    93.75% {
-      background-color: $light-green;
-      left: 0;
-      top: 21px;
-    }
-    100% {
-      background-color: $blue;
-      left: 21px;
-      top: 0;
-    }
-  }
 }
-
index ab4d15f..adb3688 100644 (file)
@@ -1,63 +1,63 @@
 .software-product-navigation-side-bar {
-  width: 245px;
-  height: 100%;
-  background-color: $white;
-  border-right: 1px solid $light-gray;
-  @include box-shadow(1px -1px 3px 0px $tlv-light-gray);
-  border-bottom: 0;
-
-  .navigation-side-content {
-    overflow: hidden;
+    width: 245px;
     height: 100%;
+    background-color: $white;
+    border-right: 1px solid $light-gray;
+    @include box-shadow(1px -1px 3px 0px $tlv-light-gray);
+    border-bottom: 0;
 
-    .navigation-group {
-      height: 100%;
-      display: flex;
-      flex-direction: column;
-      background-color: $tlv-gray;
-      .group-name {
-        @extend .heading-4-semibold;
-        @include ellipsis;
-        min-height: 70px;
-        display: block;
-        height: 70px;
-        padding: 24px 12px 13px 40px;
-        background-color: $white;
-        border-bottom: 1px solid $tlv-light-gray;
-      }
-    }
+    .navigation-side-content {
+        overflow: hidden;
+        height: 100%;
 
-    .navigation-group-items {
-      padding-left: 20px;
-      overflow-y: auto;
+        .navigation-group {
+            height: 100%;
+            display: flex;
+            flex-direction: column;
+            background-color: $tlv-gray;
+            .group-name {
+                @extend .heading-4-semibold;
+                @include ellipsis;
+                min-height: 70px;
+                display: block;
+                height: 70px;
+                padding: 24px 12px 13px 40px;
+                background-color: $white;
+                border-bottom: 1px solid $tlv-light-gray;
+            }
+        }
 
-      .navigation-group-item {
-        @extend .body-1;
-        cursor: pointer;
-        margin: 18px 0;
-        padding-left: 20px;
-        color: $dark-gray;
-        line-height: 17px;
-        &.selected-item {
-          padding-left: 0;
-          .collapse.in {
+        .navigation-group-items {
             padding-left: 20px;
-          }
-        }
-        .navigation-group-item-name {
-          @include ellipsis;
-          white-space: normal;
-          &.selected {
-            @extend .body-1-semibold;
-            border-left: 4px solid $blue;
-            padding-left: 18px;
-            color: $blue;
-          }
-          &.bold-name {
-            @extend .body-1-semibold;
-          }
+            overflow-y: auto;
+
+            .navigation-group-item {
+                @extend .body-1;
+                cursor: pointer;
+                margin: 18px 0;
+                padding-left: 20px;
+                color: $dark-gray;
+                line-height: 17px;
+                &.selected-item {
+                    padding-left: 0;
+                    .collapse.in {
+                        padding-left: 20px;
+                    }
+                }
+                .navigation-group-item-name {
+                    @include ellipsis;
+                    white-space: normal;
+                    &.selected {
+                        @extend .body-1-semibold;
+                        border-left: 4px solid $blue;
+                        padding-left: 18px;
+                        color: $blue;
+                    }
+                    &.bold-name {
+                        @extend .body-1-semibold;
+                    }
+                }
+            }
         }
-      }
     }
-  }
 }
diff --git a/openecomp-ui/resources/scss/components/_notifications.scss b/openecomp-ui/resources/scss/components/_notifications.scss
deleted file mode 100644 (file)
index 5b10dee..0000000
+++ /dev/null
@@ -1,35 +0,0 @@
-
-.notification-modal {
-
-  .modal-content {
-    .modal-header {
-      padding: 15px 10px 10px;
-      .modal-title {
-        @extend .heading-5-semibold;
-      }
-    }
-    .modal-body {
-      padding: 30px 15px;
-      @extend .body-1-semibold;
-    }
-  }
-
-  &.danger {
-    .modal-content .modal-header {
-      border-top: 3px solid $red;
-    }
-       }
-       
-       &.negative {
-    .modal-content .modal-header {
-      border-top: 3px solid $red;
-    }
-  }
-
-  &.warning {
-    .modal-content .modal-header {
-      border-top: 3px solid $yellow;
-    }
-  }
-
-}
index 7c310bf..3d2d0bb 100644 (file)
@@ -1,26 +1,26 @@
 .onboarding-overlay {
-  z-index: 1000;
-  border: 1px solid $light-gray;
-  position: absolute;
-  background-color: $white;
-  border-radius: 2px;
-  box-shadow: 0 3px 7px 1px rgba(0, 0, 0, 0.2);
-  display: flex;
-  flex-direction: column;
-  justify-content: space-around;
-  margin-top: 5px;
-  margin-left: -86px;
-  .arrow-up {
-    width: 0;
-    height: 0;
-    border-left: 5px solid transparent;
-    border-right: 5px solid transparent;
-    background-color: transparent;
-    border-bottom: 5px solid $blue;
-    margin-left: 114px;
-    margin-top: -5px;
-  }
-  .arrow-border {
-    border-top: 5px solid $blue;
-  }
-}
\ No newline at end of file
+    z-index: 1000;
+    border: 1px solid $light-gray;
+    position: absolute;
+    background-color: $white;
+    border-radius: 2px;
+    box-shadow: 0 3px 7px 1px rgba(0, 0, 0, 0.2);
+    display: flex;
+    flex-direction: column;
+    justify-content: space-around;
+    margin-top: 5px;
+    margin-left: -86px;
+    .arrow-up {
+        width: 0;
+        height: 0;
+        border-left: 5px solid transparent;
+        border-right: 5px solid transparent;
+        background-color: transparent;
+        border-bottom: 5px solid $blue;
+        margin-left: 114px;
+        margin-top: -5px;
+    }
+    .arrow-border {
+        border-top: 5px solid $blue;
+    }
+}
index 040c8ce..5529a55 100644 (file)
@@ -1,24 +1,24 @@
- .progress-bar-view {
+.progress-bar-view {
     display: -webkit-box;
     padding: 5px;
     .progress-bar-outside {
-      display: flex;
-      width: 90%;
-      justify-content: space-between;
-      background-color: lightgray;
-      border-radius: 15px;
-      height: 10px;
-      .progress-bar-inside {
-        display: block;
-        border: 1px solid gainsboro;
-        background-color: #4faa39;
-        border-radius: inherit;
-      }
+        display: flex;
+        width: 90%;
+        justify-content: space-between;
+        background-color: lightgray;
+        border-radius: 15px;
+        height: 10px;
+        .progress-bar-inside {
+            display: block;
+            border: 1px solid gainsboro;
+            background-color: #4faa39;
+            border-radius: inherit;
+        }
     }
     .progress-bar-view-label {
-      margin-right: -30px;
-      margin-top: -2px;
-      margin-left: 10px;
-      color: black;
-     }
-  }
+        margin-right: -30px;
+        margin-top: -2px;
+        margin-left: 10px;
+        color: black;
+    }
+}
index fa8eb31..90b45a5 100644 (file)
 .select-action-table-view {
-       .svg-icon-wrapper {
-               flex-direction: row;
-               .svg-icon {
-                       &:not(.__plus) {
-                               margin-left: 5px;
-                               margin-right: 5px;
-                               width:16px;
-                               height:16px;
-                       }
-               }
-       }
-       .dummy-icon {
-               background-color: $white;
-               fill: $white;
-               .locked {
-                       fill: $white;
-               }
-       }
+    .svg-icon-wrapper {
+        flex-direction: row;
+        .svg-icon {
+            &:not(.__plus) {
+                margin-left: 5px;
+                margin-right: 5px;
+                width: 16px;
+                height: 16px;
+            }
+        }
+    }
+    .dummy-icon {
+        background-color: $white;
+        fill: $white;
+        .locked {
+            fill: $white;
+        }
+    }
 
-       .select-action-table-controllers {
-               display: flex;
-               .svg-icon-wrapper {
-                       &:hover {
-                               cursor: pointer;
-                       }
-                       &:first-child {
-                               margin-left: auto;
-                       }
-               }
-       }
-       .select-action-table {
-               display: flex;
-               flex-direction: column;
-               border-color: $light-gray;
+    .select-action-table-controllers {
+        display: flex;
+        .svg-icon-wrapper {
+            &:hover {
+                cursor: pointer;
+            }
+            &:first-child {
+                margin-left: auto;
+            }
+        }
+    }
+    .select-action-table {
+        display: flex;
+        flex-direction: column;
+        border-color: $light-gray;
 
-               .select-action-table-headers {
-                       display: flex;
-                       background-color: $tlv-light-gray;
-                       border-color: inherit;
-                       .select-action-table-header {
-                               @extend .body-1-semibold;
-                               flex: 1;
-                               border-top: 1px solid;
-                               border-right: 1px solid;
-                               border-color: inherit;
-                               padding: 8px 0 7px 20px;
-                               &:first-child {
-                                       border-left: 1px solid;
-                                       border-color: inherit;
-                               }
-                       }
-               }
-               .select-action-table-row-wrapper {
-                       display: flex;
-                       flex-direction: row;
-               margin-bottom: 14px;
-                       .svg-icon-wrapper.hideDelete {
-                               .svg-icon {
-                                       fill: $white;
-                               }
-                       }
-                       .select-action-table-row {
-                               display: flex;
-                               flex: 1;
-                               border: 1px solid;
-                               border-color: $light-gray;
-                               &.has-error {
-                                       border-color: $red;
-                               }
+        .select-action-table-headers {
+            display: flex;
+            background-color: $tlv-light-gray;
+            border-color: inherit;
+            .select-action-table-header {
+                @extend .body-1-semibold;
+                flex: 1;
+                border-top: 1px solid;
+                border-right: 1px solid;
+                border-color: inherit;
+                padding: 8px 0 7px 20px;
+                &:first-child {
+                    border-left: 1px solid;
+                    border-color: inherit;
+                }
+            }
+        }
+        .select-action-table-row-wrapper {
+            display: flex;
+            flex-direction: row;
+            margin-bottom: 14px;
+            .svg-icon-wrapper.hideDelete {
+                .svg-icon {
+                    fill: $white;
+                }
+            }
+            .select-action-table-row {
+                display: flex;
+                flex: 1;
+                border: 1px solid;
+                border-color: $light-gray;
+                &.has-error {
+                    border-color: $red;
+                }
 
-                               .select-action-table-cell {
-                                       flex: 1;
-                                       border-right: 1px solid;
-                                       border-color: $light-gray;
-                                       @extend .body-1;
-                                       .dropdown-multi-select {
-                                               .form-group {
-                                                       .Select{
-                                                               &.is-open {
-                                                                       border: 1px solid $blue;
-                                                               }
-                                                       }
-                                               }
-                                       }
-                                       .form-group {
-                                               margin: 0;
-                                               .Select-control {
-                                                       height:36px;
-                                                       border: none;
-                                                       .is-open {
-                                                               border-left-color: $blue;
-                                                               border-right-color: $blue;
-                                                       }
-                                                       .Select-value, .Select-placeholder, .Select-input {
-                                                               padding-left: 20px;
-                                                               padding-right: 50px;
-                                                               padding-top: 4px;
-
-                                                       }
-                                                       .Select-placeholder {
-                                                               color: $dark-gray;
-                                                       }
-                                                       .Select-arrow-zone {
-                                                               padding-right: 15px;
-                                                       }
-                                               }
-                                       }
-                                       &:last-child {
-                                               border-right: none;
-                                       }
-                               }
-                               .Select-menu-outer {
-                                               border-left: 1px solid $blue;
-                                               border-right: 1px solid $blue;
-                                               border-bottom: 1px solid $blue;
-                                               overflow: auto;
-                                               .Select-menu {
-                                                       .Select-option {
-                                                               overflow: hidden;
-                                                               text-overflow: ellipsis;
-                                                               border-bottom: 1px solid $light-gray;
-                                                               &:hover {
-                                                                       background-color: $blue;
-                                                                       color: $white;
-                                                                       &.is-focused {
-                                                                               background-color: $blue;
-                                                                       }
-                                                                       &.is-focused {
-                                                                               background-color: $blue;
-                                                                       }
-                                                               }
-                                                               &.is-selected {
-                                                                       background-color: transparent;
-                                                               }
-                                                               &.is-focused {
-                                                                       background-color: transparent;
-                                                               }
-                                                       }
-                                               }
-                                       }
-                       }
-               }
-       }
+                .select-action-table-cell {
+                    flex: 1;
+                    border-right: 1px solid;
+                    border-color: $light-gray;
+                    @extend .body-1;
+                    .dropdown-multi-select {
+                        .form-group {
+                            .Select {
+                                &.is-open {
+                                    border: 1px solid $blue;
+                                }
+                            }
+                        }
+                    }
+                    .form-group {
+                        margin: 0;
+                        .Select-control {
+                            height: 36px;
+                            border: none;
+                            .is-open {
+                                border-left-color: $blue;
+                                border-right-color: $blue;
+                            }
+                            .Select-value,
+                            .Select-placeholder,
+                            .Select-input {
+                                padding-left: 20px;
+                                padding-right: 50px;
+                                padding-top: 4px;
+                            }
+                            .Select-placeholder {
+                                color: $dark-gray;
+                            }
+                            .Select-arrow-zone {
+                                padding-right: 15px;
+                            }
+                        }
+                    }
+                    &:last-child {
+                        border-right: none;
+                    }
+                }
+                .Select-menu-outer {
+                    border-left: 1px solid $blue;
+                    border-right: 1px solid $blue;
+                    border-bottom: 1px solid $blue;
+                    overflow: auto;
+                    .Select-menu {
+                        .Select-option {
+                            overflow: hidden;
+                            text-overflow: ellipsis;
+                            border-bottom: 1px solid $light-gray;
+                            &:hover {
+                                background-color: $blue;
+                                color: $white;
+                                &.is-focused {
+                                    background-color: $blue;
+                                }
+                                &.is-focused {
+                                    background-color: $blue;
+                                }
+                            }
+                            &.is-selected {
+                                background-color: transparent;
+                            }
+                            &.is-focused {
+                                background-color: transparent;
+                            }
+                        }
+                    }
+                }
+            }
+        }
+    }
 }
index d89c342..f567e07 100644 (file)
@@ -1,18 +1,18 @@
 .sequence-diagram {
-  .sequence-diagram-sequencer {
-       .asdcs-diagram {
-         overflow: auto;
-         max-height: 60vh;
-       }
-       .asdcs-editor {
-         height: 60vh;
-       }
-  }
-  .sequence-diagram-action-buttons {
-       margin-left: 20px;
-       margin-top: 20px;
-       button:first-of-type {
-         margin-right: 20px;
-       }
-  }
+    .sequence-diagram-sequencer {
+        .asdcs-diagram {
+            overflow: auto;
+            max-height: 60vh;
+        }
+        .asdcs-editor {
+            height: 60vh;
+        }
+    }
+    .sequence-diagram-action-buttons {
+        margin-left: 20px;
+        margin-top: 20px;
+        button:first-of-type {
+            margin-right: 20px;
+        }
+    }
 }
index cd52840..e2e7b1b 100644 (file)
@@ -1,65 +1,63 @@
 .submit-error-response-view {
-  max-height: 500px;
-  overflow: auto;
-  .list-group-item {
-    border-top: none;
-  }
-  .panel-title {
-    a {
-      &:after {
-        content: "(details)";
-        color: $link-blue;
-        float: right;
-
-      }
-      &:hover {
-        color: $blue;
-        text-decoration: underline;
-      }
+    max-height: 500px;
+    overflow: auto;
+    .list-group-item {
+        border-top: none;
     }
-  }
-  .error-block {
-    margin: 10px 0;
-    .error-block-header {
-      background-color: $tlv-gray;
-      padding: 5px;
-      cursor: pointer;
-      .svg-icon {
-        &.__chevronDown {
-          margin-right: 10px;
-        }
-      }
-      .collapse-right {
-        .svg-icon {
-          &.__chevronDown {
-            transform: rotate(270deg);
-          }
+    .panel-title {
+        a {
+            &:after {
+                content: '(details)';
+                color: $link-blue;
+                float: right;
+            }
+            &:hover {
+                color: $blue;
+                text-decoration: underline;
+            }
         }
-      }
-
-    }
-    .error-code-list-item {
-      display: flex;
-      justify-content: flex-start;
-      .icon-label {
-        @extend .body-1;
-        color: $dark-gray;
-        margin-left: 10px;
-      }
-      .icon-component {
-        align-items: baseline;
-      }
-    }
-    .list-group-item {
-      .error-item-text {
-        margin-top:-2px;
-        max-width: 100px;
-      }
     }
-    .component-name-header {
-      margin-left: 45px;
-      margin-top: 10px;
-      @extend .heading-5-semibold;
+    .error-block {
+        margin: 10px 0;
+        .error-block-header {
+            background-color: $tlv-gray;
+            padding: 5px;
+            cursor: pointer;
+            .svg-icon {
+                &.__chevronDown {
+                    margin-right: 10px;
+                }
+            }
+            .collapse-right {
+                .svg-icon {
+                    &.__chevronDown {
+                        transform: rotate(270deg);
+                    }
+                }
+            }
+        }
+        .error-code-list-item {
+            display: flex;
+            justify-content: flex-start;
+            .icon-label {
+                @extend .body-1;
+                color: $dark-gray;
+                margin-left: 10px;
+            }
+            .icon-component {
+                align-items: baseline;
+            }
+        }
+        .list-group-item {
+            .error-item-text {
+                margin-top: -2px;
+                max-width: 100px;
+            }
+        }
+        .component-name-header {
+            margin-left: 45px;
+            margin-top: 10px;
+            @extend .heading-5-semibold;
+        }
     }
-  }
 }
index fcf0902..6bcf3a3 100644 (file)
@@ -1,62 +1,63 @@
 .toggle-input-wrapper {
-  $toggle-width: 40px;
-  $toggle-height: 20px;
-  display: table;
-  .toggle-switch, .toggle-input-label {
-    display: table-cell;
-    vertical-align: middle;
-    padding-left: 10px;
-  }
-  .toggle {
-    position: absolute;
-    margin-left: -9999px;
-    visibility: hidden;
-  }
-  .toggle + label {
-    @extend %noselect;
-    display: block;
-    position: relative;
-    cursor: pointer;
-    outline: none;
-  }
+    $toggle-width: 40px;
+    $toggle-height: 20px;
+    display: table;
+    .toggle-switch,
+    .toggle-input-label {
+        display: table-cell;
+        vertical-align: middle;
+        padding-left: 10px;
+    }
+    .toggle {
+        position: absolute;
+        margin-left: -9999px;
+        visibility: hidden;
+    }
+    .toggle + label {
+        @extend %noselect;
+        display: block;
+        position: relative;
+        cursor: pointer;
+        outline: none;
+    }
 
-  input.toggle-round-flat + label {
-    padding: 1px;
-    width: $toggle-width;
-    height: $toggle-height;
-    background-color: $dark-gray;
-    border-radius: $toggle-height;
-    transition: background 0.4s;
-  }
-  input.toggle-round-flat + label:before,
-  input.toggle-round-flat + label:after {
-    display: block;
-    position: absolute;
-    content: "";
-  }
-  input.toggle-round-flat + label:before {
-    top: 1px;
-    left: 1px;
-    bottom: 1px;
-    right: 1px;
-    background-color: $white;
-    border-radius: $toggle-height;
-    transition: background 0.4s;
-  }
-  input.toggle-round-flat + label:after {
-    top: 4px;
-    left: 4px;
-    bottom: 4px;
-    width: $toggle-height - 8;
-    background-color: $dark-gray;
-    border-radius: $toggle-height - 8;
-    transition: margin 0.4s, background 0.4s;
-  }
-  input.toggle-round-flat:checked + label {
-    background-color: $link-blue;
-  }
-  input.toggle-round-flat:checked + label:after {
-    margin-left: $toggle-height;
-    background-color: $link-blue;
-  }
+    input.toggle-round-flat + label {
+        padding: 1px;
+        width: $toggle-width;
+        height: $toggle-height;
+        background-color: $dark-gray;
+        border-radius: $toggle-height;
+        transition: background 0.4s;
+    }
+    input.toggle-round-flat + label:before,
+    input.toggle-round-flat + label:after {
+        display: block;
+        position: absolute;
+        content: '';
+    }
+    input.toggle-round-flat + label:before {
+        top: 1px;
+        left: 1px;
+        bottom: 1px;
+        right: 1px;
+        background-color: $white;
+        border-radius: $toggle-height;
+        transition: background 0.4s;
+    }
+    input.toggle-round-flat + label:after {
+        top: 4px;
+        left: 4px;
+        bottom: 4px;
+        width: $toggle-height - 8;
+        background-color: $dark-gray;
+        border-radius: $toggle-height - 8;
+        transition: margin 0.4s, background 0.4s;
+    }
+    input.toggle-round-flat:checked + label {
+        background-color: $link-blue;
+    }
+    input.toggle-round-flat:checked + label:after {
+        margin-left: $toggle-height;
+        background-color: $link-blue;
+    }
 }
index e03594e..380fb64 100644 (file)
@@ -1,56 +1,53 @@
-
 .tree-view {
-       overflow: hidden;
-
-       &.scrollable {
-               overflow: auto;
-       }
-
-       .node {
-               text-shadow: none;
-               stroke: none;
-
-               .outer-circle {
-                       stroke: $blue;
-                       stroke-width: 2px;
-                       fill: $white;
-               }
-
-               .inner-circle {
-                       fill: $blue;
-               }
-
-               text {
-                       text-anchor: end;
-                       @extend .body-2-semibold;
-                       fill: $blue;
-               }
-
-               &.clickable {
-                       cursor: pointer;
-               }
-
-               &.selectedNode {
-                       .outer-circle {
-                               fill: $blue;
-                       }
-
-                       .inner-circle {
-                               fill: $blue;
-                       }
-
-                       text {
-                               fill: $blue;
-                       }
-               }
-       }
-
-
-       .link {
-               fill: none;
-               stroke: $dark-gray;
-               stroke-opacity: 0.4;
-               stroke-width: 1.5px;
-       }
-
+    overflow: hidden;
+
+    &.scrollable {
+        overflow: auto;
+    }
+
+    .node {
+        text-shadow: none;
+        stroke: none;
+
+        .outer-circle {
+            stroke: $blue;
+            stroke-width: 2px;
+            fill: $white;
+        }
+
+        .inner-circle {
+            fill: $blue;
+        }
+
+        text {
+            text-anchor: end;
+            @extend .body-2-semibold;
+            fill: $blue;
+        }
+
+        &.clickable {
+            cursor: pointer;
+        }
+
+        &.selectedNode {
+            .outer-circle {
+                fill: $blue;
+            }
+
+            .inner-circle {
+                fill: $blue;
+            }
+
+            text {
+                fill: $blue;
+            }
+        }
+    }
+
+    .link {
+        fill: none;
+        stroke: $dark-gray;
+        stroke-opacity: 0.4;
+        stroke-width: 1.5px;
+    }
 }
index 74cafae..649e636 100644 (file)
-
 .onboarding-notifications {
-  margin-left: 10px;
-  .notifications-icon {
-    display: flex;
-    @extend .clickable;
-    .notifications-count {
-      color: $white;
-      font-size: 11px;
-      text-align: center;
-      width: 16px;
-      height: 16px;
-      background-color: $orange;
-      border-radius: 50%;
-      position: relative;
-      right: 7px;
-      top: -2px;
-      &.hidden-count {
-        background-color: transparent;
-        color: transparent;
-      }
-    }
-  }
-  .onboarding-overlay {
-    width: 520px;
-    right: 39px;
-    margin-top: 18px;
-    .arrow-up {
-      margin-left: 487px;
+    margin-left: 10px;
+    .notifications-icon {
+        display: flex;
+        @extend .clickable;
+        .notifications-count {
+            color: $white;
+            font-size: 11px;
+            text-align: center;
+            width: 16px;
+            height: 16px;
+            background-color: $orange;
+            border-radius: 50%;
+            position: relative;
+            right: 7px;
+            top: -2px;
+            &.hidden-count {
+                background-color: transparent;
+                color: transparent;
+            }
+        }
     }
+    .onboarding-overlay {
+        width: 520px;
+        right: 39px;
+        margin-top: 18px;
+        .arrow-up {
+            margin-left: 487px;
+        }
 
-    .user-notifications {
-      .notifications-title {
-        color: $blue;
-        @extend .heading-5-semibold;
-        @extend .text-uppercase !optional;
-        padding: 13px 20px 10px 20px;
-        border-bottom: 1px solid $tlv-light-gray;
-      }
-      .notifications-list {
-        max-height: 600px;
-        overflow-y: auto;
-        .notification {
-          border-bottom: 1px solid $tlv-light-gray;
-          padding: 16px 20px 18px 20px;
-          display: flex;
-          &.unread {
-            background-color: lighten($gray, 38%);
-            .item-name {
-              display: flex;
-              @include base-font-bold;
-            }
-            .unread-circle-icon {
-              width: 8px;
-              height: 8px;
-              border-radius: 50%;
-              background-color: $blue;
-              align-self: center;
-              margin-bottom: 3px;
-              margin-left: 9px;
-            }
-          }
-          .notification-data {
-            width: 366px;
-            margin-right: 30px;
-            color: $dark-gray;
-            .item-name {
-              @extend .body-2-semibold;
-              @extend .text-uppercase !optional;
-              margin-bottom: 6px;
-            }
-            .flex-items {
-              display: flex;
-              margin: 6px 0 11px 0;
-              @extend .body-3;
-              line-height: 20px;
-              @extend .text-uppercase !optional;
-              color: $gray;
-              .separator {
-                border-left: 1px solid $dark-gray;
-                margin: 5px 8px;
-              }
-            }
-            .description {
-              @extend .body-3;
-              margin: 11px 0 8px 0;
-              .more-less {
-                font-size: $icon-font-size;
+        .user-notifications {
+            .notifications-title {
                 color: $blue;
-              }
-            }
-            .date {
-              font-size: $icon-font-size;
-              @include base-font-regular;
-              color: $gray;
-              margin-top: 8px;
+                @extend .heading-5-semibold;
+                @extend .text-uppercase !optional;
+                padding: 13px 20px 10px 20px;
+                border-bottom: 1px solid $tlv-light-gray;
             }
-          }
+            .notifications-list {
+                max-height: 600px;
+                overflow-y: auto;
+                .notification {
+                    border-bottom: 1px solid $tlv-light-gray;
+                    padding: 16px 20px 18px 20px;
+                    display: flex;
+                    &.unread {
+                        background-color: lighten($gray, 38%);
+                        .item-name {
+                            display: flex;
+                            @include base-font-bold;
+                        }
+                        .unread-circle-icon {
+                            width: 8px;
+                            height: 8px;
+                            border-radius: 50%;
+                            background-color: $blue;
+                            align-self: center;
+                            margin-bottom: 3px;
+                            margin-left: 9px;
+                        }
+                    }
+                    .notification-data {
+                        width: 366px;
+                        margin-right: 30px;
+                        color: $dark-gray;
+                        .item-name {
+                            @extend .body-2-semibold;
+                            @extend .text-uppercase !optional;
+                            margin-bottom: 6px;
+                        }
+                        .flex-items {
+                            display: flex;
+                            margin: 6px 0 11px 0;
+                            @extend .body-3;
+                            line-height: 20px;
+                            @extend .text-uppercase !optional;
+                            color: $gray;
+                            .separator {
+                                border-left: 1px solid $dark-gray;
+                                margin: 5px 8px;
+                            }
+                        }
+                        .description {
+                            @extend .body-3;
+                            margin: 11px 0 8px 0;
+                            .more-less {
+                                font-size: $icon-font-size;
+                                color: $blue;
+                            }
+                        }
+                        .date {
+                            font-size: $icon-font-size;
+                            @include base-font-regular;
+                            color: $gray;
+                            margin-top: 8px;
+                        }
+                    }
 
-          .notification-action .action-button {
-            @extend .clickable;
-            width: 74px;
-            height: 28px;
-            color: $white;
-            background-color: $blue;
-            border-radius: 2px;
-            text-align: center;
-            line-height: 2;
-            margin-top: 4px;
-            &.active {
-              background-color: #0091c7;
-              border: solid 1px #006186;
-            }
-            &:hover {
-              background-color: #1ec2ff;
-              border: solid 1px #0091c8;
+                    .notification-action .action-button {
+                        @extend .clickable;
+                        width: 74px;
+                        height: 28px;
+                        color: $white;
+                        background-color: $blue;
+                        border-radius: 2px;
+                        text-align: center;
+                        line-height: 2;
+                        margin-top: 4px;
+                        &.active {
+                            background-color: $action-button-active-bg;
+                            border: solid 1px $action-button-active-border;
+                        }
+                        &:hover {
+                            background-color: $action-button-hover-bg;
+                            border: solid 1px $action-button-hover-border;
+                        }
+                    }
+                }
             }
-          }
         }
-      }
     }
-  }
 }
index 52408f5..9f708c4 100644 (file)
 form {
-  .validation-form-content {
-    .validation-input-wrapper {
-      position: relative;
-      flex: 1;
-    }
-    .validation-radio-wrapper {
-      position: relative;
-    }
-    .sdc-tabs {
-      position: relative;
-      .invalid-tab:not(.sdc-tab-active) {
-          color: $red;
-      }
-    }
-    .validation-error-message {
-      &.bottom {
-        .tooltip-arrow {
-          border-bottom-color: $red;
+    .validation-form-content {
+        .validation-input-wrapper {
+            position: relative;
+            flex: 1;
         }
-      }
-      &.right {
-        .tooltip-arrow {
-          border-right-color: $red;
+        .validation-radio-wrapper {
+            position: relative;
         }
-      }
-      &.left {
-        .tooltip-arrow {
-          border-left-color: $red;
+        .sdc-tabs {
+            position: relative;
+            .invalid-tab:not(.sdc-tab-active) {
+                color: $red;
+            }
         }
-      }
-      .tooltip-inner {
-        background-color: $red;
-      }
-    }
-    .input-row {
-      padding-bottom: 32px;
-      &:only-child {
-        padding-bottom: 0;
-      }
-      &:last-child {
-        padding-bottom: 0;
-      }
-      .form-group {
-        margin-bottom: 0;
-      }
-    }
-
-    .rows-section {
-      .row-flex-components {
-        display: flex;
-      }
-      .validation-input-wrapper {
-        flex: 1;
-      }
-      .empty-col {
-        flex: 1.2;
-        content: ' ';
-      }
-      .empty-two-col {
-        flex: 2.4;
-        content: ' ';
-      }
-
-      .two-col {
-        flex: 2.2;
-      }
-      .three-col {
-        flex: 3.4;
-      }
-      .single-col {
-        flex: 1.2;
-        display: flex;
-        &:after {
-          flex: 0.2;
-          content: ' ';
+        .validation-error-message {
+            &.bottom {
+                .tooltip-arrow {
+                    border-bottom-color: $red;
+                }
+            }
+            &.right {
+                .tooltip-arrow {
+                    border-right-color: $red;
+                }
+            }
+            &.left {
+                .tooltip-arrow {
+                    border-left-color: $red;
+                }
+            }
+            .tooltip-inner {
+                background-color: $red;
+            }
         }
-        @media (min-width: 1389px) {
-          &.add-line-break {
-            .control-label {
-              &:after {
-                content: "\00a0";
-                display: block;
-              }
+        .input-row {
+            padding-bottom: 32px;
+            &:only-child {
+                padding-bottom: 0;
+            }
+            &:last-child {
+                padding-bottom: 0;
+            }
+            .form-group {
+                margin-bottom: 0;
             }
-          }
         }
 
-      }
-    }
-  }
+        .rows-section {
+            .row-flex-components {
+                display: flex;
+            }
+            .validation-input-wrapper {
+                flex: 1;
+            }
+            .empty-col {
+                flex: 1.2;
+                content: ' ';
+            }
+            .empty-two-col {
+                flex: 2.4;
+                content: ' ';
+            }
 
-  .validation-buttons {
-    padding: 20px 0;
-    text-align: right;
-    button:first-child {
-      margin-right: 15px;
-      min-width: 120px;
+            .two-col {
+                flex: 2.2;
+            }
+            .three-col {
+                flex: 3.4;
+            }
+            .single-col {
+                flex: 1.2;
+                display: flex;
+                &:after {
+                    flex: 0.2;
+                    content: ' ';
+                }
+                @media (min-width: 1389px) {
+                    &.add-line-break {
+                        .control-label {
+                            &:after {
+                                content: '\00a0';
+                                display: block;
+                            }
+                        }
+                    }
+                }
+            }
+        }
     }
-               .svg-icon {
-                       height: 14px;
-                       width: 14px;
-               }
-               .svg-icon.check {
-                       fill: $white;
-               }
-               .svg-icon.close {
-                       fill: $blue;
-               }
-  }
-}
 
-.modal-body {
-  .validation-buttons {
-    padding: 20px 15px;
-    background-color: $tlv-gray;
-  }
+    .validation-buttons {
+        padding: 20px 0;
+        text-align: right;
+        button:first-child {
+            margin-right: 15px;
+            min-width: 120px;
+        }
+        .svg-icon {
+            height: 14px;
+            width: 14px;
+        }
+        .svg-icon.check {
+            fill: $white;
+        }
+        .svg-icon.close {
+            fill: $blue;
+        }
+    }
 }
index 98771f1..cc83999 100644 (file)
 .version-controller-bar {
-       display: flex;
-       min-height: 70px;
-       border-bottom: 1px solid $tlv-light-gray;
-       background-color: transparent;
+    display: flex;
+    min-height: 70px;
+    border-bottom: 1px solid $tlv-light-gray;
+    background-color: transparent;
 
-       .vc-container {
-               display: flex;
-               flex: 1;
-               align-self: center;
-               background-color: transparent;
-               justify-content: space-between;
-               align-items: center;
-               padding-left: 16px;
-               padding-right: 40px;
+    .vc-container {
+        display: flex;
+        flex: 1;
+        align-self: center;
+        background-color: transparent;
+        justify-content: space-between;
+        align-items: center;
+        padding-left: 16px;
+        padding-right: 40px;
 
-               .vc-separator {
-                       border-left: 1px solid $tlv-light-gray;
-                       height: 37px;
-                       margin-left: 5px;
-                       margin-right: 5px;
-               }
+        .vc-separator {
+            border-left: 1px solid $tlv-light-gray;
+            height: 37px;
+            margin-left: 5px;
+            margin-right: 5px;
+        }
 
-               .version-status-container {
-                       display: flex;
-                       height: 30px;
+        .version-status-container {
+            display: flex;
+            height: 30px;
 
-                       .version-selector-more-versions {
-                               color: $blue;
-                               cursor: pointer;
-                       }
+            .version-selector-more-versions {
+                color: $blue;
+                cursor: pointer;
+            }
 
-                       .version-selector {
-                               margin-top: 0px;
-                               padding-right: 10px;
-                               margin-right: 15px;
-                               margin-left: 10px;
-                               border-color: $light-gray;
-                               border-radius: 2px;
-                               width: 243px;
-                               height: 30px;
-                               @extend .body-1;
-                       }
+            .version-selector {
+                margin-top: 0px;
+                padding-right: 10px;
+                margin-right: 15px;
+                margin-left: 10px;
+                border-color: $light-gray;
+                border-radius: 2px;
+                width: 243px;
+                height: 30px;
+                @extend .body-1;
+            }
 
-                       .version-section {
-                               .form-group {
-                                       margin-right: 20px;
+            .version-section {
+                .form-group {
+                    margin-right: 20px;
 
-                                       .input-options {
-                                               border: none;
+                    .input-options {
+                        border: none;
 
-                                               .input-options-select {
-                                                       padding-top: 4px;
-                                               }
-                                       }
-                               }
-                       }
+                        .input-options-select {
+                            padding-top: 4px;
+                        }
+                    }
+                }
+            }
 
-                       .vc-status {
-                               display: flex;
-                               padding-left: 20px;
-                               border-left: $light-gray thin solid;
+            .vc-status {
+                display: flex;
+                padding-left: 20px;
+                border-left: $light-gray thin solid;
 
-                               .status-text {
-                                       align-self: center;
-                                       margin-top: 2px;
-                                       @extend .heading-5;
-                                       color: $dark-gray;
-                               }
-                       }
-                       .depricated-item-status {
-                               @extend .body-3;
-                               color: $white;
-                               background-color: $dark-purple;
-                               margin-left: 10px;
-                               padding: 1px 10px;
-                               align-self: center;
-                               border-radius: 3px; 
-                       }
-               }
+                .status-text {
+                    align-self: center;
+                    margin-top: 2px;
+                    @extend .heading-5;
+                    color: $dark-gray;
+                }
+            }
+            .depricated-item-status {
+                @extend .body-3;
+                color: $white;
+                background-color: $dark-purple;
+                margin-left: 10px;
+                padding: 1px 10px;
+                align-self: center;
+                border-radius: 3px;
+            }
+        }
 
-               .save-submit-cancel-container {
-                       display: flex;
-                       align-items: center;
-                       height: 100%;
+        .save-submit-cancel-container {
+            display: flex;
+            align-items: center;
+            height: 100%;
 
-                       .action-buttons, .collaborator-action-buttons, .vc-save-section, .vc-submit-section {
-                               display: flex;
-                               align-items: center;
-                               height: 100%;
+            .action-buttons,
+            .collaborator-action-buttons,
+            .vc-save-section,
+            .vc-submit-section {
+                display: flex;
+                align-items: center;
+                height: 100%;
 
-                               .vc-submit-button {
-                                       border: 1px solid $dark-gray;
-                                       width: 94px;
-                                       height: 30px;
-                                       border-radius: 2px;
-                                       padding-top: 5px;
-                                       padding-left: 10px;
-                                       margin-left: 10px;
-                                       margin-right: 10px;
+                .vc-submit-button {
+                    border: 1px solid $dark-gray;
+                    width: 94px;
+                    height: 30px;
+                    border-radius: 2px;
+                    padding-top: 5px;
+                    padding-left: 10px;
+                    margin-left: 10px;
+                    margin-right: 10px;
 
-                                       &:hover:not(.disabled) {
-                                               cursor: pointer;
-                                               background-color: $tlv-light-gray;
-                                       }
+                    &:hover:not(.disabled) {
+                        cursor: pointer;
+                        background-color: $tlv-light-gray;
+                    }
 
-                                       &.disabled {
-                                               border-color: $light-gray;
-                                       }
+                    &.disabled {
+                        border-color: $light-gray;
+                    }
 
-                                       .vc-v-submit {
-                                               width: 11px;
-                                               height: 8px;
-                                               margin-right: 10px;
-                                               position: relative;
-                                               top: -1px;
-                                       }
-                               }
+                    .vc-v-submit {
+                        width: 11px;
+                        height: 8px;
+                        margin-right: 10px;
+                        position: relative;
+                        top: -1px;
+                    }
+                }
 
-                               .version-control-buttons {
-                                       display: flex;
-                               }
+                .version-control-buttons {
+                    display: flex;
+                }
 
-                               .action-button-wrapper {
-                                       display: flex;
-                                       align-items: center;
-                                       height: 70px;
+                .action-button-wrapper {
+                    display: flex;
+                    align-items: center;
+                    height: 70px;
 
-                                       &:hover:not(.disabled) {
-                                               background-color: $tlv-light-gray;
-                                       }
+                    &:hover:not(.disabled) {
+                        background-color: $tlv-light-gray;
+                    }
 
-                                       &:active:not(.disabled) {
-                                               background-color: $light-gray;
-                                       }
+                    &:active:not(.disabled) {
+                        background-color: $light-gray;
+                    }
 
-                                       .action-buttons-svg {
-                                               padding-left: 10px;
-                                               padding-right: 10px;
+                    .action-buttons-svg {
+                        padding-left: 10px;
+                        padding-right: 10px;
 
-                                               .svg-icon {
-                                                       fill: $text-black;
-                                                       height: 20px;
+                        .svg-icon {
+                            fill: $text-black;
+                            height: 20px;
 
-                                                       &, &.__version-controller-save { width: 20px; }
-                                                       &.__version-controller-permissions { width: 32px; }
-                                                       &.__version-controller-undo, &.__version-controller-revert { width: 20px; }
-                                                       &.__version-controller-sync, &.__version-controller-commit { width: 28px; }
-                                               }
-                                       }
+                            &,
+                            &.__version-controller-save {
+                                width: 20px;
+                            }
+                            &.__version-controller-permissions {
+                                width: 32px;
+                            }
+                            &.__version-controller-undo,
+                            &.__version-controller-revert {
+                                width: 20px;
+                            }
+                            &.__version-controller-sync,
+                            &.__version-controller-commit {
+                                width: 28px;
+                            }
+                        }
+                    }
 
-                                       .version-controller-permissions {
-                                               width: 32px;
-                                               height: 20px;
-                                               fill: $dark-gray;
-                                       }
-                               }
+                    .version-controller-permissions {
+                        width: 32px;
+                        height: 20px;
+                        fill: $dark-gray;
+                    }
+                }
 
-                               .action-button-label {
-                                       display: block;
-                                       font-size: $icon-font-size;
-                                       font-family: $icon-font-family;
-                                       height: 1em;
-                                       margin-top: 5px;
-                                       margin-bottom: 0;
-                               }
+                .action-button-label {
+                    display: block;
+                    font-size: $icon-font-size;
+                    font-family: $icon-font-family;
+                    height: 1em;
+                    margin-top: 5px;
+                    margin-bottom: 0;
+                }
 
-                               .onboarding-overlay {
-                                       margin-top: -6px;
-                                       .permissions-overlay {
-                                               width: 237px;
+                .onboarding-overlay {
+                    margin-top: -6px;
+                    .permissions-overlay {
+                        width: 237px;
 
-                                               .permissions-overlay-header {
-                                                       text-align: left;
-                                                       color: $blue;
-                                                       padding-bottom: 15px;
-                                                       padding-top: 15px;
-                                                       border-bottom: 1px solid $light-gray;
-                                                       .permissions-overlay-header-title {
-                                                               margin-left: 20px;
-                                                       }
-                                               }
-                                               .permissions-overlay-content {
-                                                       max-height: 290px;
-                                                       overflow-y: auto;
-                                                       padding-left: 10px;
-                                                       padding-right: 10px;
-                                                       .contributor {
-                                                               &:last-child {
-                                                                       border-bottom: none;
-                                                               }
-                                                               border-bottom: 1px solid $tlv-light-gray;
-                                                               .contributor-content {
-                                                                       padding-top: 12px;
-                                                                       padding-bottom: 10px;
-                                                                       margin-left: 10px;
-                                                                       display: flex;
-                                                                       .contributor-icon-circle {
-                                                                               &.selected {
-                                                                                       border: 1px solid $blue;
-                                                                               }
+                        .permissions-overlay-header {
+                            text-align: left;
+                            color: $blue;
+                            padding-bottom: 15px;
+                            padding-top: 15px;
+                            border-bottom: 1px solid $light-gray;
+                            .permissions-overlay-header-title {
+                                margin-left: 20px;
+                            }
+                        }
+                        .permissions-overlay-content {
+                            max-height: 290px;
+                            overflow-y: auto;
+                            padding-left: 10px;
+                            padding-right: 10px;
+                            .contributor {
+                                &:last-child {
+                                    border-bottom: none;
+                                }
+                                border-bottom: 1px solid $tlv-light-gray;
+                                .contributor-content {
+                                    padding-top: 12px;
+                                    padding-bottom: 10px;
+                                    margin-left: 10px;
+                                    display: flex;
+                                    .contributor-icon-circle {
+                                        &.selected {
+                                            border: 1px solid $blue;
+                                        }
 
-                                                                               border-radius: 65px;
-                                                                               padding: 2px;
-                                                                               width: 32px;
-                                                                               height: 32px;
-                                                                               margin-top: 4px;
-                                                                               .contributer-icon {
-                                                                                       width: 26px;
-                                                                                       border-radius: 50px;
-                                                                                       height: 26px;
-                                                                                       margin-top: 0px;
-                                                                                       .__user {
-                                                                                               height: 18px;
-                                                                                               width: 16px;
-                                                                                               stroke: $blue;
-                                                                                               fill: transparent;
-                                                                                               margin-left: 5px;
-                                                                                               margin-top: 3px;
-                                                                                       }
-                                                                                       &.selected {
-                                                                                               border: 1px solid $blue;
-                                                                                               background-color: $blue;
-                                                                                               .__user {
-                                                                                                       stroke: $white;
-                                                                                                       margin-left: 4px;
-                                                                                               }
-                                                                                       }
-                                                                               }
-                                                                       }
+                                        border-radius: 65px;
+                                        padding: 2px;
+                                        width: 32px;
+                                        height: 32px;
+                                        margin-top: 4px;
+                                        .contributer-icon {
+                                            width: 26px;
+                                            border-radius: 50px;
+                                            height: 26px;
+                                            margin-top: 0px;
+                                            .__user {
+                                                height: 18px;
+                                                width: 16px;
+                                                stroke: $blue;
+                                                fill: transparent;
+                                                margin-left: 5px;
+                                                margin-top: 3px;
+                                            }
+                                            &.selected {
+                                                border: 1px solid $blue;
+                                                background-color: $blue;
+                                                .__user {
+                                                    stroke: $white;
+                                                    margin-left: 4px;
+                                                }
+                                            }
+                                        }
+                                    }
 
-                                                                       .contributer-info {
-                                                                               padding-left: 11px;
-                                                                               .contributer-name {
-                                                                                       @extend .body-2-semibold;
-                                                                                       text-transform: uppercase;
-                                                                                       color: $dark-gray;
-                                                                               }
-                                                                               .contributer-role {
-                                                                                       @extend .body-3;
-                                                                                       color: $gray;
-                                                                                       display: flex;
-                                                                                       text-transform: lowercase;
-                                                                                       p:first-letter {
-                                                                                               text-transform: uppercase;
-                                                                                       }
-                                                                                       justify-content: space-between;
-                                                                               }
-                                                                       }
-                                                               }
-                                                       }
-                                               }
-                                               .permissions-overlay-footer {
-                                                       .manage-permissions-btn {
-                                                               @extend .body-2-semibold;
-                                                               margin-top: 20px;
-                                                               padding-top: 10px;
-                                                               padding-bottom: 10px;
-                                                               color: $blue;
-                                                               text-align: center;
-                                                               cursor: pointer;
-                                                               background-color: $tlv-gray;
-                                                       }
-                                               }
-
-                                       }
-                               }
-                       }
-               }
-               .vc-nav-item-close {
-                       display: flex;
-                       padding-left: 18px;
-                       padding-top: 3px;
-                       align-self: center;
-                       @extend .body-1;
-                       color: $gray;
-                       cursor: pointer;
-                       border-left: $gray thin solid;
-               }
-       }
+                                    .contributer-info {
+                                        padding-left: 11px;
+                                        .contributer-name {
+                                            @extend .body-2-semibold;
+                                            text-transform: uppercase;
+                                            color: $dark-gray;
+                                        }
+                                        .contributer-role {
+                                            @extend .body-3;
+                                            color: $gray;
+                                            display: flex;
+                                            text-transform: lowercase;
+                                            p:first-letter {
+                                                text-transform: uppercase;
+                                            }
+                                            justify-content: space-between;
+                                        }
+                                    }
+                                }
+                            }
+                        }
+                        .permissions-overlay-footer {
+                            .manage-permissions-btn {
+                                @extend .body-2-semibold;
+                                margin-top: 20px;
+                                padding-top: 10px;
+                                padding-bottom: 10px;
+                                color: $blue;
+                                text-align: center;
+                                cursor: pointer;
+                                background-color: $tlv-gray;
+                            }
+                        }
+                    }
+                }
+            }
+        }
+        .vc-nav-item-close {
+            display: flex;
+            padding-left: 18px;
+            padding-top: 3px;
+            align-self: center;
+            @extend .body-1;
+            color: $gray;
+            cursor: pointer;
+            border-left: $gray thin solid;
+        }
+    }
 }
index 7e0085a..f47b736 100644 (file)
 $message-info-icon-size: 16px;
 
 .vnf-creation-page {
-       .list-editor-view-header {
-               border-bottom: none;
-       }
-       .vnfBrowse-list-item {
-               display: flex;
-               height: 36px;
-               @extend .body-1;
-               &.header {
-                       @extend .body-1-semibold;
-                       background-color: $tlv-light-gray;
-                       color: $text-black;
-               }
-               &.selectedRow {
-                       background-color: $blue;
-                       color: $white;
-                       .svg-icon-wrapper {
-                               &.__positive {
-                                       fill: $white;
-                                       color: $white;
-                               }
-                       }
-               }
-               .svg-icon-wrapper {
-                       &.__positive {
-                               fill: $dark-gray;
-                               color: $dark-gray;
-                       }
-               }
-       }
+    .list-editor-view-header {
+        border-bottom: none;
+    }
+    .vnfBrowse-list-item {
+        display: flex;
+        height: 36px;
+        @extend .body-1;
+        &.header {
+            @extend .body-1-semibold;
+            background-color: $tlv-light-gray;
+            color: $text-black;
+        }
+        &.selectedRow {
+            background-color: $blue;
+            color: $white;
+            .svg-icon-wrapper {
+                &.__positive {
+                    fill: $white;
+                    color: $white;
+                }
+            }
+        }
+        .svg-icon-wrapper {
+            &.__positive {
+                fill: $dark-gray;
+                color: $dark-gray;
+            }
+        }
+    }
 
-       .activity-action {
-               .svg-icon-wrapper {
-                       float: left;
-               }
-       }
+    .activity-action {
+        .svg-icon-wrapper {
+            float: left;
+        }
+    }
 
-       .message-further-info-icon {
-               background-color: $gray;
-       }
+    .message-further-info-icon {
+        background-color: $gray;
+    }
 
-       .table-cell {
-       border-right: 1px solid $light-gray;
-       border-bottom: 1px solid $light-gray;
-       &:last-child {
-               border-right: none;
-       }
-       flex-basis: 22%;
-       display: flex;
-       padding: 0 20px;
-       justify-content: center;
-       flex-direction: column;
+    .table-cell {
+        border-right: 1px solid $light-gray;
+        border-bottom: 1px solid $light-gray;
+        &:last-child {
+            border-right: none;
+        }
+        flex-basis: 22%;
+        display: flex;
+        padding: 0 20px;
+        justify-content: center;
+        flex-direction: column;
 
-       &.vnftable-action {
-               flex-basis: 12%;
-               span {
-                       margin: auto;
-               }
-       }
-}
-
-  .vnf-table-header {
-       cursor: pointer;
-       display: flex;
-       align-items: center;
-       .header-sort-arrow {
-         width: 0;
-         height: 0;
-         border-left: 5px solid transparent;
-         border-right: 5px solid transparent;
-         margin-left: 9px;
-         &.up {
-               border-bottom: 5px solid $black;
-         }
-         &.down {
-               border-top: 5px solid $black;
-         }
+        &.vnftable-action {
+            flex-basis: 12%;
+            span {
+                margin: auto;
+            }
+        }
+    }
 
-       }
-  }
+    .vnf-table-header {
+        cursor: pointer;
+        display: flex;
+        align-items: center;
+        .header-sort-arrow {
+            width: 0;
+            height: 0;
+            border-left: 5px solid transparent;
+            border-right: 5px solid transparent;
+            margin-left: 9px;
+            &.up {
+                border-bottom: 5px solid $black;
+            }
+            &.down {
+                border-top: 5px solid $black;
+            }
+        }
+    }
 
-  .vnf-table-cell {
-       display: flex;
-       justify-content: space-between;
-       span {
-               overflow: hidden;
-               text-overflow: ellipsis;
-       }
-  } 
-  .vnftable-name {
-       max-width: 22%;
-  }
+    .vnf-table-cell {
+        display: flex;
+        justify-content: space-between;
+        span {
+            overflow: hidden;
+            text-overflow: ellipsis;
+        }
+    }
+    .vnftable-name {
+        max-width: 22%;
+    }
 
-  .vnf-grid-section {
-       margin: 20px 20px 20px 50px;
-  }
+    .vnf-grid-section {
+        margin: 20px 20px 20px 50px;
+    }
 
-  .vnf-modal {
-       text-align: right;
-       margin-top: 22px;
-  }
-  .vnf-submit {
-       margin-right: 15px;
-  }
+    .vnf-modal {
+        text-align: right;
+        margin-top: 22px;
+    }
 
-}
\ No newline at end of file
+    .vnf-submit {
+        margin-right: 15px;
+    }
+}
index 294fd81..5938dc2 100644 (file)
@@ -1,4 +1,4 @@
-.vsp-details-vendor-select {   
+.vsp-details-vendor-select {
     .validation-form-content {
         padding-top: 20px;
         .vendor-selector-modal-title {
@@ -9,5 +9,5 @@
             margin-top: 10px;
             margin-bottom: 20px;
         }
-    }        
-}
\ No newline at end of file
+    }
+}
index 06ef4d2..736927f 100644 (file)
@@ -1,37 +1,37 @@
-
-.entitlement-pools-list-editor {  
+.entitlement-pools-list-editor {
     .list-editor-item-view-field {
-
-      .entitlement-pools-count {
-        @extend .heading-1;
-      color: $purple;
+        .entitlement-pools-count {
+            @extend .heading-1;
+            color: $purple;
+        }
     }
-  }
 }
 
 .entitlement-pools-modal {
-  .entitlement-pools-form {
-    .threshold-section, .date-section {
-                       display: flex;
-                       justify-content: space-between;
-                       .validation-input-wrapper {
-                               flex: 0 0 46%;
-                       }
-    }
-    .uuid-row-wrapper {
-      display: flex;
-      .separator{
-        margin-left: 30px;
-        margin-right: 30px;
-        height: 35px;
-        border: 1px solid $tlv-light-gray;
-      }
-      .uuid-container {
-        .uuid-value {
-          @extend .body-3;
-          user-select: text;
+    .entitlement-pools-form {
+        .threshold-section,
+        .date-section {
+            display: flex;
+            justify-content: space-between;
+            .validation-input-wrapper {
+                flex: 0 0 46%;
+            }
+        }
+        .uuid-row-wrapper {
+            display: flex;
+            margin-top: 20px;
+            .separator {
+                margin-left: 30px;
+                margin-right: 30px;
+                height: 35px;
+                border: 1px solid $tlv-light-gray;
+            }
+            .uuid-container {
+                .uuid-value {
+                    @extend .body-3;
+                    user-select: text;
+                }
+            }
         }
-      }
     }
-               }
 }
index cf681b8..375bb2c 100644 (file)
@@ -1,41 +1,38 @@
 .feature-groups-list-editor {
-  .list-editor-view{
-    .list-editor-view-list {
-      .list-editor-item-view {
-        min-height: 110px;
-        height: 110px;
-      }
-      .list-editor-item-view-content {
-        .list-editor-item-view-field {
-          &.smaller-field {
-            flex: 0.35;
-          }
-          .feature-groups-count-field {
-            display: inline-block;
-            &:first-child {
-              margin-right: 95px;
+    .list-editor-view {
+        .list-editor-view-list {
+            .list-editor-item-view {
+                min-height: 110px;
+                height: 110px;
+            }
+            .list-editor-item-view-content {
+                .list-editor-item-view-field {
+                    &.smaller-field {
+                        flex: 0.35;
+                    }
+                    .feature-groups-count-field {
+                        display: inline-block;
+                        &:first-child {
+                            margin-right: 95px;
+                        }
+                    }
+                    .feature-groups-count-ep {
+                        @extend .heading-1;
+                        color: $light-blue;
+                    }
+                    .feature-groups-mrn-ep {
+                        @extend .body-1;
+                        color: $light-blue;
+                    }
+                    .feature-groups-count-lk {
+                        @extend .heading-1;
+                        color: $light-green;
+                    }
+                    .title-no-wrap {
+                        white-space: nowrap;
+                    }
+                }
             }
-          }
-          .feature-groups-count-ep {
-            @extend .heading-1;
-            color: $light-blue;
-          }
-          .feature-groups-mrn-ep {
-            @extend .body-1;
-            color: $light-blue;
-          }
-          .feature-groups-count-lk {
-            @extend .heading-1;
-            color: $light-green;
-          }
-          .title-no-wrap {
-            white-space: nowrap;
-          }
         }
-      }
     }
-  }
 }
-
-
-
index 579e9ba..acde2ed 100644 (file)
@@ -1,26 +1,24 @@
-
 .license-agreement-list-editor {
-
-  .list-editor-view-list {
-    .list-editor-item-view-field {
-      .list-editor-item-view-field-tight {
-        vertical-align: top;
-        display: inline-block;
-        &:first-child {
-          @include ellipsis;
-          margin-right: 95px;
-          width: 20%;
-          overflow-wrap: break-word;
+    .list-editor-view-list {
+        .list-editor-item-view-field {
+            .list-editor-item-view-field-tight {
+                vertical-align: top;
+                display: inline-block;
+                &:first-child {
+                    @include ellipsis;
+                    margin-right: 95px;
+                    width: 20%;
+                    overflow-wrap: break-word;
+                }
+            }
+            .feature-groups-count,
+            .type {
+                color: $light-green;
+            }
+            .feature-groups-count {
+                @extend .heading-1;
+                padding-top: 2px;
+            }
         }
-      }
-      .feature-groups-count, .type {
-        color: $light-green;
-      }
-      .feature-groups-count {
-        @extend .heading-1;
-        padding-top: 2px;
-      }
-
     }
-  }
 }
index b7681fe..d873c39 100644 (file)
@@ -1,31 +1,32 @@
 .license-key-groups-list-editor {
-  .list-editor-view-list {
-    .list-editor-item-view-field {
-
-      .operational-scope, .type {
-        color: $orange;
-      }
-      .operational-scope {
-        @include ellipsis;
-      }
+    .list-editor-view-list {
+        .list-editor-item-view-field {
+            .operational-scope,
+            .type {
+                color: $orange;
+            }
+            .operational-scope {
+                @include ellipsis;
+            }
+        }
     }
-  }
 }
 
 .license-keygroup-editor {
-  .uuid-row-wrapper {
-    display: flex;
-    .separator{
-      margin-left: 30px;
-      margin-right: 30px;
-      height: 35px;
-      border: 1px solid $tlv-light-gray;
-    }
-    .uuid-container {
-      .uuid-value {
-        @extend .body-3;
-        user-select: text;
-      }
+    .uuid-row-wrapper {
+        display: flex;
+        margin-top: 20px;
+        .separator {
+            margin-left: 30px;
+            margin-right: 30px;
+            height: 35px;
+            border: 1px solid $tlv-light-gray;
+        }
+        .uuid-container {
+            .uuid-value {
+                @extend .body-3;
+                user-select: text;
+            }
+        }
     }
-  }
 }
index e93ea98..da43e3e 100644 (file)
@@ -1,55 +1,42 @@
 .license-model-modal {
-  .modal-body {
-    padding: 0;
-  }
-       .modal-header {
-               border-bottom: none;
-               padding-bottom: 30px;
-       }
-       .sdc-tabs-list {
-               padding-left: 50px;
-               border-bottom: 1px solid $tlv-light-gray;
-               display: flex;
-               align-items: baseline;
-       }
-       .sdc-tab-content {
-               margin-top: 0;
-       }
-       .add-limit-button {
-               margin-left: auto;
-               margin-right: 50px;
-               padding-right: 0;
-               text-align: end;
-       }
-       .license-model-form {
-               .validation-form-content, .validation-buttons {
-      padding: 20px 50px;
+    .sdc-tabs {
+        margin-top: 20px;
     }
-               &.license-agreement-form, &.feature-group-form {
-                       .validation-form-content {
-                               padding: 0;
-                       }
-                       .sdc-tab-content {
-                               padding: 20px 50px;
-                       }
-               }
-       }
-       .license-model-modal-buttons {
-               padding: 21px 50px;
-    display: flex;
-    justify-content: flex-end;
-               background-color: $tlv-gray;
-               margin-top: 2px;
-    .sdc-button {
-      margin-left: 20px;
+    .sdc-tabs-list {
+        padding-left: 40px;
+        border-bottom: 1px solid $tlv-light-gray;
+        display: flex;
+        align-items: baseline;
+    }
+    .sdc-tab-content {
+        margin-top: 0;
+    }
+    .add-limit-button {
+        margin-left: auto;
+        margin-right: 50px;
+        padding-right: 0;
+        text-align: end;
+    }
+    .license-model-form {
+        &.license-agreement-form,
+        &.feature-group-form {
+            .validation-form-content {
+                padding: 0;
+            }
+            .sdc-tab-content {
+                padding: 20px 40px;
+                .dual-list-box {
+                    margin: 0;
+                }
+            }
+        }
     }
-       }
 }
 .license-model-list-editor {
-       .list-editor-view-list {
-               .list-editor-item-view {
-                       min-height: 110px;
-                       height: 110px;
-               }
-       }
+    .list-editor-view-list {
+        .list-editor-item-view {
+            min-height: 110px;
+            height: 110px;
+        }
+    }
 }
index 16b6af7..794ed38 100644 (file)
 .license-model-limits-view {
-       max-height: 490px;
-       overflow: auto;
-
-       .limit-editor-title {
-               padding: 10px 50px;
-               background-color: $blue;
-               color: $white;
-
-       }
-       .list-editor-view-add-title {
-               margin-right: 20px;
-       }
-
-       .no-limits-text {
-               padding-left: 50px;
-       }
-
-       .list-editor-view {
-               .list-editor-view-header {
-                       border-bottom: none;
-                       padding-top: 30px;
-                       padding-bottom: 0;
-               }
-
-               .list-editor-view-list-scroller {
-                       margin-top: 0;
-                       margin-bottom: 30px;
-               }
-               .list-editor-view-list {
-                       width: 100%;
-                       .list-editor-item-view {
-                               min-height: 50px;
-                               height: 50px;
-                               background-color: $tlv-light-gray;
-                               border-color: transparent;
-                               margin: 1px 0;
-                               .list-editor-item-view-content {
-                                       padding-left: 0;
-                               }
-
-                               .svg-icon {
-                                       margin-top: 10px;
-                                       margin-right: 50px;
-                                       fill: $gray;
-                                       &:hover {
-                                                       fill: $dark-gray;
-                                               }
-                               }
-
-                               &.selectable {
-                                       &:hover {
-                                               .list-editor-item-view-field {
-                                                       .text.description, .text-name {
-                                                               &:after {
-                                                                       background-color: darken($tlv-light-gray, 4%);
-                                                               }
-                                                       }
-
-                                               }
-                                               background-color: darken($tlv-light-gray, 4%);
-                                               cursor: pointer;
-                                       }
-
-                               }
-                               &:hover {
-                                       border-color: transparent;
-                                       cursor: default;
-                               }
-                               .list-editor-item-view-content {
-                                       .list-editor-item-view-field {
-                                               display: flex;
-                               align-items: center;
-                                               white-space: nowrap;
-
-                                               &.limit-name {
-                                                       .text.name {
-                                                               @extend .body-1-semibold;
-                                                               color: $blue;
-                                                               text-transform: uppercase;
-                                                               margin-left : 45px;
-                                                       }
-                                                       
-                                                       border-right: 1px solid $light-gray;
-                                                       margin-right: 22px;
-                                                       flex: 0.4;
-                                                       display: flex;
-                                                       justify-content: left;
-                                               }
-
-                                               &.limit-description {
-                                                       max-width: 300px;
-                                                       margin-right: 22px;
-                                               }
-
-                                               &.limit-metric-details {
-                                                       max-width: 300px;
-                                               }
-
-
-                                               .text.description, .text.name {
-                                                       overflow: hidden;
-                                                       text-overflow: ellipsis;
-                                                       white-space: nowrap;
-                                                       &:after {
-                                                               background: $tlv-light-gray;
-                                                       }
-
-                                               }
-                                       }
-
-                               }                       
-                       }
-               }
-       }
-       .limit-editor{
-               .limit-editor-form {
-                       .limit-editor-form-grid-section {
-                               padding-bottom: 0;
-                       }
-                       .validation-form-content {
-                               padding: 21px 45px;
-                       }
-                       .limit-editor-buttons {                 
-                               display: flex;
-                               justify-content: flex-end;
-                               .sdc-button {
-                               margin-left: 20px;
-                               }
-                       }
-               }
-       }
-}
\ No newline at end of file
+    max-height: 490px;
+    overflow: auto;
+
+    .limit-editor-title {
+        padding: 10px 50px;
+        background-color: $blue;
+        color: $white;
+    }
+    .list-editor-view-add-title {
+        margin-right: 20px;
+    }
+
+    .no-limits-text {
+        padding-left: 50px;
+    }
+
+    .list-editor-view {
+        .list-editor-view-header {
+            border-bottom: none;
+            padding-top: 30px;
+            padding-bottom: 0;
+        }
+
+        .list-editor-view-list-scroller {
+            margin-top: 0;
+            margin-bottom: 30px;
+        }
+        .list-editor-view-list {
+            width: 100%;
+            .list-editor-item-view {
+                min-height: 50px;
+                height: 50px;
+                background-color: $tlv-light-gray;
+                border-color: transparent;
+                margin: 1px 0;
+                .list-editor-item-view-content {
+                    padding-left: 0;
+                }
+
+                .svg-icon {
+                    margin-top: 10px;
+                    margin-right: 50px;
+                    fill: $gray;
+                    &:hover {
+                        fill: $dark-gray;
+                    }
+                }
+
+                &.selectable {
+                    &:hover {
+                        .list-editor-item-view-field {
+                            .text.description,
+                            .text-name {
+                                &:after {
+                                    background-color: darken(
+                                        $tlv-light-gray,
+                                        4%
+                                    );
+                                }
+                            }
+                        }
+                        background-color: darken($tlv-light-gray, 4%);
+                        cursor: pointer;
+                    }
+                }
+                &:hover {
+                    border-color: transparent;
+                    cursor: default;
+                }
+                .list-editor-item-view-content {
+                    .list-editor-item-view-field {
+                        display: flex;
+                        align-items: center;
+                        white-space: nowrap;
+
+                        &.limit-name {
+                            .text.name {
+                                @extend .body-1-semibold;
+                                color: $blue;
+                                text-transform: uppercase;
+                                margin-left: 45px;
+                            }
+
+                            border-right: 1px solid $light-gray;
+                            margin-right: 22px;
+                            flex: 0.4;
+                            display: flex;
+                            justify-content: left;
+                        }
+
+                        &.limit-description {
+                            max-width: 300px;
+                            margin-right: 22px;
+                        }
+
+                        &.limit-metric-details {
+                            max-width: 300px;
+                        }
+
+                        .text.description,
+                        .text.name {
+                            overflow: hidden;
+                            text-overflow: ellipsis;
+                            white-space: nowrap;
+                            &:after {
+                                background: $tlv-light-gray;
+                            }
+                        }
+                    }
+                }
+            }
+        }
+    }
+    .limit-editor {
+        .limit-editor-form {
+            .limit-editor-form-grid-section {
+                padding-bottom: 0;
+            }
+            .validation-form-content {
+                padding: 21px 45px;
+            }
+            .limit-editor-buttons {
+                display: flex;
+                justify-content: flex-end;
+                .sdc-button {
+                    margin-left: 20px;
+                }
+            }
+        }
+    }
+}
index 21c5bd8..eca87b6 100644 (file)
@@ -4,236 +4,233 @@ $icon-margin: 30px;
 $arrow-element-width: 30px;
 $list-item-padding: 15px;
 
-
-
 $la-color: $dark-blue;
 $fg-color: $blue;
 $lkg-ep-color: $light-blue;
 @mixin overview-tile-shadow() {
-  @include box-shadow(0.5px 0.8px 4px 0 rgba(24, 24, 25, 0.05));
+    @include box-shadow(0.5px 0.8px 4px 0 rgba(24, 24, 25, 0.05));
 }
 
 .license-model-overview {
-  .overview-top-section {
-    .overview-title{
-      @extend .heading-1;
-      @extend .text-uppercase !optional;
-      margin-bottom: 20px;
-      color: $blue;
-    }
-    .license-model-overview-top {
-      display: flex;
-      justify-content: flex-start;
-      flex-direction: row;
-      padding-bottom: 10px;
-      min-height: 155px;
-      .separator {
-        width: 1px;
-        border-right: 1px solid $tlv-light-gray;
-        margin-left: 20px;
-      }
-      .vendor-data-view {
-        @extend .flex-column;
-        background-color: $tlv-gray;
-        padding: 13px 30px;
-        border: 1px solid $tlv-light-gray;
-        @include overview-tile-shadow();
-        .vendor-title {
-          margin-top:5px;
+    .overview-top-section {
+        .overview-title {
+            @extend .heading-1;
+            @extend .text-uppercase !optional;
+            margin-bottom: 20px;
+            color: $blue;
         }
-        .vendor-name {
-          @extend .heading-4-semibold;
-          text-transform: none;
-          padding-bottom: 10px;
-          border-bottom: 1px solid $tlv-light-gray;
-        }
-        .vendor-description, .vendor-description-readonly {
-          @extend .flex;
-          @extend .body-1;
-          justify-content: space-between;
-          overflow: hidden;
-                                       position: relative;
-                                       flex: initial;
-        }
-
-        &:not(.read-only) .vendor-description {
-          border: 1px solid transparent;
-          width: 100%;
-          padding: 2px 0 2px 6px;
-          margin-top: 10px;
-          position: relative;
-          .svg-icon-wrapper {
-            position: absolute;;
-            right:0;
-            top:0;
-            opacity: 0;
-          }
-          $hover-padding-right: 16px;
-          @include percent-plus-value($property: width, $percent: 100%, $value: -$hover-padding-right); // compensate for padding added on hover
-          &:hover {
-            padding-right: $hover-padding-right;
-            border: 1px solid $light-gray;
-            cursor: pointer;
-
-            background-color: $white;
-            .svg-icon-wrapper {
-              opacity: 1;
-              z-index: 10;
-            }
-            .description-data:after {
-              background: white;
-            }
-            .description-data {
-              width: 100%;
+        .license-model-overview-top {
+            display: flex;
+            justify-content: flex-start;
+            flex-direction: row;
+            padding-bottom: 10px;
+            min-height: 155px;
+            .separator {
+                width: 1px;
+                border-right: 1px solid $tlv-light-gray;
+                margin-left: 20px;
             }
-          }
-        }
+            .vendor-data-view {
+                @extend .flex-column;
+                background-color: $tlv-gray;
+                padding: 13px 30px;
+                border: 1px solid $tlv-light-gray;
+                @include overview-tile-shadow();
+                .vendor-title {
+                    margin-top: 5px;
+                }
+                .vendor-name {
+                    @extend .heading-4-semibold;
+                    text-transform: none;
+                    padding-bottom: 10px;
+                    border-bottom: 1px solid $tlv-light-gray;
+                }
+                .vendor-description,
+                .vendor-description-readonly {
+                    @extend .flex;
+                    @extend .body-1;
+                    justify-content: space-between;
+                    overflow: hidden;
+                    position: relative;
+                    flex: initial;
+                }
 
-        .vendor-description-readonly {
-          margin-top: 16px;
-        }
+                &:not(.read-only) .vendor-description {
+                    border: 1px solid transparent;
+                    width: 100%;
+                    padding: 2px 0 2px 6px;
+                    margin-top: 10px;
+                    position: relative;
+                    .svg-icon-wrapper {
+                        position: absolute;
+                        right: 0;
+                        top: 0;
+                        opacity: 0;
+                    }
+                    $hover-padding-right: 16px;
+                    @include percent-plus-value($property: width, $percent: 100%, $value: -$hover-padding-right); // compensate for padding added on hover
+                    &:hover {
+                        padding-right: $hover-padding-right;
+                        border: 1px solid $light-gray;
+                        cursor: pointer;
 
-                               .description-data {
-                                       @include multiline-ellipsis($lineCount: 3, $bgColor: $tlv-gray);
-                                       flex: initial;
-                               }
+                        background-color: $white;
+                        .svg-icon-wrapper {
+                            opacity: 1;
+                            z-index: 10;
+                        }
+                        .description-data:after {
+                            background: white;
+                        }
+                        .description-data {
+                            width: 100%;
+                        }
+                    }
+                }
 
-        .vendor-description-edit {
-          @extend .flex;
-          flex-direction: column;
-          border: none;
-          margin-top: 10px;
-          position: relative;
-          left: -6px;
-          width: 101%;
-          textarea {
-            padding-left: 6px;
-            resize: vertical;
-          }
-          .buttons-row {
-            @extend .flex;
-            justify-content: flex-end;
-            flex-direction: row;
-            margin-top: -25px;
-            .buttons-wrapper {
-              @extend .flex;
-              @extend .body-3;
-              border: 1px solid $light-gray;
-              width: 95px;
-              height: 19px;
-              background-color: $tlv-light-gray;
-              border-radius: 2px;
-              position: relative;
-              flex: 0 1 auto;
-              text-align: center;
-              .description-button {
-                cursor: pointer;
-                flex: 1;
-                &:hover {
-                  background-color: $white;
+                .vendor-description-readonly {
+                    margin-top: 16px;
                 }
-              }
-              .description-save {
-                cursor: pointer;
-                flex: 1;
-                color:$blue;
-                &:hover {
-                  background-color: $white;
+
+                .description-data {
+                    @include multiline-ellipsis($lineCount: 3, $bgColor: $tlv-gray);
+                    flex: initial;
                 }
-              }
-            }
-          }
-          .description-edit-textarea {
-            height:67px;
-            border: 1px solid $tlv-light-gray;
-            resize: none;
-            position: relative;
-            left: -12px;
-          }
-          .validation-error-message.tooltip {
-            z-index: 1000;
-            .tooltip-inner {
-              background-color: $red;
-            }
-          }
-        }
-      }
-      .summary-count-list {
-        @extend .flex-column;
-        flex: 0.6;
-        margin-left: 20px;
-        justify-content: space-between;
-        border: 1px solid $tlv-light-gray;
-        @include overview-tile-shadow();
-        background-color: $tlv-gray;
-        .summary-count-item {
-          @extend .flex;
-                                       @extend .heading-5-semibold;
-                                       align-items: center;
-          padding-left: 45px;
-          padding-right: 45px;
-          border-bottom: 1px solid $tlv-light-gray;
-          &:last-child { border-bottom: none; }
-          .item-count {
-            flex-grow: 2;
-            margin-left: 5px;
-          }
-          .summary-name-and-count {
-            width: 100%;
-          }
-          .svg-icon-wrapper {
-            .svg-icon {
-              &.__plusCircle {
-                margin-top: 3px;
-                margin-left: auto;
-                fill: $dark-gray;
-                &:hover {
-                  fill: $blue;
+
+                .vendor-description-edit {
+                    @extend .flex;
+                    flex-direction: column;
+                    border: none;
+                    margin-top: 10px;
+                    position: relative;
+                    left: -6px;
+                    width: 101%;
+                    textarea {
+                        padding-left: 6px;
+                        resize: vertical;
+                    }
+                    .buttons-row {
+                        @extend .flex;
+                        justify-content: flex-end;
+                        flex-direction: row;
+                        margin-top: -25px;
+                        .buttons-wrapper {
+                            @extend .flex;
+                            @extend .body-3;
+                            border: 1px solid $light-gray;
+                            width: 95px;
+                            height: 19px;
+                            background-color: $tlv-light-gray;
+                            border-radius: 2px;
+                            position: relative;
+                            flex: 0 1 auto;
+                            text-align: center;
+                            .description-button {
+                                cursor: pointer;
+                                flex: 1;
+                                &:hover {
+                                    background-color: $white;
+                                }
+                            }
+                            .description-save {
+                                cursor: pointer;
+                                flex: 1;
+                                color: $blue;
+                                &:hover {
+                                    background-color: $white;
+                                }
+                            }
+                        }
+                    }
+                    .description-edit-textarea {
+                        height: 67px;
+                        border: 1px solid $tlv-light-gray;
+                        resize: none;
+                        position: relative;
+                        left: -12px;
+                    }
+                    .validation-error-message.tooltip {
+                        z-index: 1000;
+                        .tooltip-inner {
+                            background-color: $red;
+                        }
+                    }
                 }
-              }
             }
+            .summary-count-list {
+                @extend .flex-column;
+                flex: 0.6;
+                margin-left: 20px;
+                justify-content: space-between;
+                border: 1px solid $tlv-light-gray;
+                @include overview-tile-shadow();
+                background-color: $tlv-gray;
+                .summary-count-item {
+                    @extend .flex;
+                    @extend .heading-5-semibold;
+                    align-items: center;
+                    padding-left: 45px;
+                    padding-right: 45px;
+                    border-bottom: 1px solid $tlv-light-gray;
+                    &:last-child {
+                        border-bottom: none;
+                    }
+                    .item-count {
+                        flex-grow: 2;
+                        margin-left: 5px;
+                    }
+                    .summary-name-and-count {
+                        width: 100%;
+                    }
+                    .svg-icon-wrapper {
+                        .svg-icon {
+                            &.__plusCircle {
+                                margin-top: 3px;
+                                margin-left: auto;
+                                fill: $dark-gray;
+                                &:hover {
+                                    fill: $blue;
+                                }
+                            }
+                        }
+                    }
 
-          }
-
-          .summary-name-and-count {
-            &:hover {
-              cursor: pointer;
-              color: $blue;
+                    .summary-name-and-count {
+                        &:hover {
+                            cursor: pointer;
+                            color: $blue;
+                        }
+                    }
+                }
+            }
+            .plus-icon {
+                font-size: $icon-font-size;
+                border-radius: 50%;
+                border: 1px solid $black;
+                color: $black;
+                height: 16px;
+                width: 16px;
+                padding: 2px 2px 2px 3px;
             }
-          }
-
-
         }
-      }
-      .plus-icon {
-        font-size: $icon-font-size;
-        border-radius: 50%;
-        border: 1px solid $black;
-        color: $black;
-        height: 16px;
-        width: 16px;
-        padding: 2px 2px 2px 3px;
-      }
-    }
-  }
-  .vlm-list-tab-panel {
-
-               @extend .flex;
-               margin-bottom: 7px;
-    .section-title {
-      flex: 1;
     }
-    .overview-buttons-section {
-      margin-top: 20px;
-      display: flex;
-      justify-content: flex-start;
-      .button-vlm-list-view {
-        height: 32px;
-        width: 34px;
-        margin-left:10px;
-        cursor: pointer;
-      }
-      /**
+    .vlm-list-tab-panel {
+        @extend .flex;
+        margin-bottom: 7px;
+        .section-title {
+            flex: 1;
+        }
+        .overview-buttons-section {
+            margin-top: 20px;
+            display: flex;
+            justify-content: flex-start;
+            .button-vlm-list-view {
+                height: 32px;
+                width: 34px;
+                margin-left: 10px;
+                cursor: pointer;
+            }
+            /**
       .vlm-list-icon {
         background-size: 32px;
         background-repeat: no-repeat;
@@ -251,262 +248,253 @@ $lkg-ep-color: $light-blue;
         }
       }
       **/
-    }
-  }
-
-  .overview-list-section {
-    @extend .flex-column;
-    margin-top: 35px;
-    .section-title {
-      @extend .heading-2;
-      padding-top: 20px;
-      margin-bottom: 15px;
-      padding-bottom: 0px;
-    }
-    &.overview-list-orphans {
-      .chevron::before
-      {
-        display: none;
-      }
-      .vlm-list-view {
-        .vlm-list {
-          .vlm-list-item.orphan-list-item {
-                                               @include overview-tile-shadow();
-                                               margin-left: 0;
-
-                                               .vlm-list-item-title {
-
-                                                       .item-name {
-                                                               color: $dark-gray;
-                                                       }
-                                               }
-                                               .list-item-icon-col {
-                                                       .overview-list-icon {
-                                                               background-color: $gray;
-                                                               border-color: $gray;
-                                                       }
-                                               }
-                                               .list-item-section {
-                                                       &:first-child {
-                                                               display: flex;
-                                                               color: $white;
-                                                               min-width: $arrow-element-width;
-                                                       }
-                                                       &.list-item-icon-col {
-                                                               margin-left: 65px;
-                                                               margin-right: 65px - $list-item-padding;
-                                                       }
-                                               }
-          }
         }
-      }
     }
-    .vlm-list-view {
-      flex: 1;
-      .vlm-list {
-        @extend .flex;
-        flex-direction: column;
-        .vlm-list-item {
-          @include border-shadow();
-          min-height: 90px;
-          height: 90px;
-          background-color: $tlv-gray;
-          @extend .flex;
-          border: 1px solid $tlv-light-gray;
-          margin-bottom: 0px;
-          .clickable {
-                                               cursor: pointer;
-                                       }
 
-          .list-item-section {
-                                               .count-value {
-                                                       @extend .body-3;
-                                               }
-                                               &.list-item-icon-col {
-                                                       display: flex;
-                                                       flex-direction: column;
-                                                       justify-content: center;
-                                                       align-items: center;
-                                                       padding: 0;
-                                                       margin-right: 40px - $list-item-padding;
-                                                       margin-left: $icon-margin;
-                                                       .overview-list-icon {
-                                                               @extend .body-2;
-                                                       }
-                                               }
-                                               padding: 15px;
-                                               &.list-item-arrow-col {
-                                                       padding: 0;
-                                               }
-            .children-count {
-              @extend .body-1;
-              color: $gray;
-              padding-left: 5px;
-              .count-value {
-                padding: 0 5px;
-              }
-            }
-            .additional-data {
-                                                       padding-left: 60px;
-                                                       display: flex;
-                                                       flex-direction: column;
-                                                       justify-content: space-between;
-                                                       *:last-child {
-                                                               margin-top: 20px;
-                                                       }
-                                                       *:only-child {
-                                                               margin-top: 0;
-                                                       }
-              .additional-data-name {
-                @extend .body-2-semibold;
-              }
-            }
-            .additional-data-col-border {
-              border-left: 1px solid $tlv-light-gray;
-              min-height: 100%;
-              height: 100%;
-            }
-          }
-          .list-item-additional-data-col {
-            @extend .body-2;
-            @extend .flex;
-            align-items: stretch;
-                                               flex: 0.8;
-                                               margin-left: 30px;
-                                               padding-top: 17px;
-                                               padding-bottom: 11px;
-          }
-          .arrow-icon {
-                                               align-self: center;
-
-          }
-          .vlm-item-info {
-            flex: 1;
-          }
-          .vlm-list-item-title {
-                                               @extend .flex;
-                                               align-items: baseline;
-            .item-name {
-              @extend .heading-5-semibold;
-              flex: 0 1 auto;
-                                                       margin-bottom: 4px;
-                                                       text-transform: uppercase;
-            }
-          }
-          .vlm-list-item-description {
-            @extend .body-1;
-                                               @include multiline-ellipsis($lineCount: 3, $bgColor: $tlv-gray);
-            max-height: 38px;
-          }
-          &.vlm-list-item-la {
-            margin-top: 10px;
-            .la-icon {
-              @include create-circle($circle-icon-size, $la-color);
-              color: $white;
-                                               }
-                                               .vlm-list-item-title {
-                                                       .item-name {
-                                                               color: $la-color;
-                                                       }
-                                               }
-            .list-item-section {
-
-              &:first-child {
-                display: flex;
-                color: $la-color;
-                min-width: $arrow-element-width;
-              }
-            }
-            .list-item-arrow-col {
-              flex: 0.01;
-                                                       margin-left: $arrow-margin;
-                                                       justify-content: center;
+    .overview-list-section {
+        @extend .flex-column;
+        margin-top: 35px;
+        .section-title {
+            @extend .heading-2;
+            padding-top: 20px;
+            margin-bottom: 15px;
+            padding-bottom: 0px;
+        }
+        &.overview-list-orphans {
+            .chevron::before {
+                display: none;
             }
-          }
-          &.vlm-list-item-fg {
-            margin-left: $list-indentation;
-                                               margin-top: 10px;
-                                               .fg-pipeline-separator {
-                                                       color: $dark-gray;
-                                                       padding: 0 5px;
-                                               }
-                                               .list-item-icon-col {
-                                                       margin-left: 29px;
-                                               }
-            .fg-icon {
-              @include create-circle($circle-icon-size, $fg-color);
-              color: $white;
-                                               }
-
-                                               .vlm-list-item-title {
-                                                       .item-name {
-                                                               color: $fg-color;
-                                                       }
-                                               }
-            .list-item-section {
-              &:first-child {
-                display: flex;
-                color: $fg-color;
-                min-width: $arrow-element-width;
+            .vlm-list-view {
+                .vlm-list {
+                    .vlm-list-item.orphan-list-item {
+                        @include overview-tile-shadow();
+                        margin-left: 0;
 
-              }
-            }
-            .list-item-arrow-col {
-              flex: 0.01;
-                                                       margin-left: $arrow-margin - $list-indentation;
-                                                       padding-left: $list-indentation;
-            }
-          }
-          &.vlm-list-item-ep {
-            margin-left: $list-indentation * 2;
-            margin-top: 10px;
-            cursor: default;
-            .ep-icon {
-              @include create-circle($circle-icon-size, $lkg-ep-color);
-              color: $white;
-                                               }
-                                               .vlm-list-item-title {
-                                                       .item-name {
-                                                               color: $lkg-ep-color;
-                                                       }
-                                               }
-            .list-item-section {
-              &:first-child {
-                display: none;
-                                                       }
-                                                       &.list-item-icon-col {
-                                                               margin-left: 52px;
-                                                       }
+                        .vlm-list-item-title {
+                            .item-name {
+                                color: $dark-gray;
+                            }
+                        }
+                        .list-item-icon-col {
+                            .overview-list-icon {
+                                background-color: $gray;
+                                border-color: $gray;
+                            }
+                        }
+                        .list-item-section {
+                            &:first-child {
+                                display: flex;
+                                color: $white;
+                                min-width: $arrow-element-width;
+                            }
+                            &.list-item-icon-col {
+                                margin-left: 65px;
+                                margin-right: 65px - $list-item-padding;
+                            }
+                        }
+                    }
+                }
             }
+        }
+        .vlm-list-view {
+            flex: 1;
+            .vlm-list {
+                @extend .flex;
+                flex-direction: column;
+                .vlm-list-item {
+                    @include border-shadow();
+                    min-height: 90px;
+                    height: 90px;
+                    background-color: $tlv-gray;
+                    @extend .flex;
+                    border: 1px solid $tlv-light-gray;
+                    margin-bottom: 0px;
+                    .clickable {
+                        cursor: pointer;
+                    }
 
-          }
-          &.vlm-list-item-lkg {
-            margin-top: 10px;
-            margin-left: $list-indentation * 2;
-            cursor: default;
-            .lkg-icon {
-              @include create-circle($circle-icon-size, $lkg-ep-color);
-              color: $white;
-                                               }
-                                               .vlm-list-item-title {
-                                                       .item-name {
-                                                               color: $lkg-ep-color;
-                                                       }
-                                               }
-            .list-item-section {
-              &:first-child {
-                display: none;
-                                                       }
-                                                       &.list-item-icon-col {
-                                                               margin-left: 52px;
-                                                       }
+                    .list-item-section {
+                        .count-value {
+                            @extend .body-3;
+                        }
+                        &.list-item-icon-col {
+                            display: flex;
+                            flex-direction: column;
+                            justify-content: center;
+                            align-items: center;
+                            padding: 0;
+                            margin-right: 40px - $list-item-padding;
+                            margin-left: $icon-margin;
+                            .overview-list-icon {
+                                @extend .body-2;
+                            }
+                        }
+                        padding: 15px;
+                        &.list-item-arrow-col {
+                            padding: 0;
+                        }
+                        .children-count {
+                            @extend .body-1;
+                            color: $gray;
+                            padding-left: 5px;
+                            .count-value {
+                                padding: 0 5px;
+                            }
+                        }
+                        .additional-data {
+                            padding-left: 60px;
+                            display: flex;
+                            flex-direction: column;
+                            justify-content: space-between;
+                            *:last-child {
+                                margin-top: 20px;
+                            }
+                            *:only-child {
+                                margin-top: 0;
+                            }
+                            .additional-data-name {
+                                @extend .body-2-semibold;
+                            }
+                        }
+                        .additional-data-col-border {
+                            border-left: 1px solid $tlv-light-gray;
+                            min-height: 100%;
+                            height: 100%;
+                        }
+                    }
+                    .list-item-additional-data-col {
+                        @extend .body-2;
+                        @extend .flex;
+                        align-items: stretch;
+                        flex: 0.8;
+                        margin-left: 30px;
+                        padding-top: 17px;
+                        padding-bottom: 11px;
+                    }
+                    .arrow-icon {
+                        align-self: center;
+                    }
+                    .vlm-item-info {
+                        flex: 1;
+                    }
+                    .vlm-list-item-title {
+                        @extend .flex;
+                        align-items: baseline;
+                        .item-name {
+                            @extend .heading-5-semibold;
+                            flex: 0 1 auto;
+                            margin-bottom: 4px;
+                            text-transform: uppercase;
+                        }
+                    }
+                    .vlm-list-item-description {
+                        @extend .body-1;
+                        @include multiline-ellipsis($lineCount: 3, $bgColor: $tlv-gray);
+                        max-height: 38px;
+                    }
+                    &.vlm-list-item-la {
+                        margin-top: 10px;
+                        .la-icon {
+                            @include create-circle($circle-icon-size, $la-color);
+                            color: $white;
+                        }
+                        .vlm-list-item-title {
+                            .item-name {
+                                color: $la-color;
+                            }
+                        }
+                        .list-item-section {
+                            &:first-child {
+                                display: flex;
+                                color: $la-color;
+                                min-width: $arrow-element-width;
+                            }
+                        }
+                        .list-item-arrow-col {
+                            flex: 0.01;
+                            margin-left: $arrow-margin;
+                            justify-content: center;
+                        }
+                    }
+                    &.vlm-list-item-fg {
+                        margin-left: $list-indentation;
+                        margin-top: 10px;
+                        .fg-pipeline-separator {
+                            color: $dark-gray;
+                            padding: 0 5px;
+                        }
+                        .list-item-icon-col {
+                            margin-left: 29px;
+                        }
+                        .fg-icon {
+                            @include create-circle($circle-icon-size, $fg-color);
+                            color: $white;
+                        }
 
+                        .vlm-list-item-title {
+                            .item-name {
+                                color: $fg-color;
+                            }
+                        }
+                        .list-item-section {
+                            &:first-child {
+                                display: flex;
+                                color: $fg-color;
+                                min-width: $arrow-element-width;
+                            }
+                        }
+                        .list-item-arrow-col {
+                            flex: 0.01;
+                            margin-left: $arrow-margin - $list-indentation;
+                            padding-left: $list-indentation;
+                        }
+                    }
+                    &.vlm-list-item-ep {
+                        margin-left: $list-indentation * 2;
+                        margin-top: 10px;
+                        cursor: default;
+                        .ep-icon {
+                            @include create-circle($circle-icon-size, $lkg-ep-color);
+                            color: $white;
+                        }
+                        .vlm-list-item-title {
+                            .item-name {
+                                color: $lkg-ep-color;
+                            }
+                        }
+                        .list-item-section {
+                            &:first-child {
+                                display: none;
+                            }
+                            &.list-item-icon-col {
+                                margin-left: 52px;
+                            }
+                        }
+                    }
+                    &.vlm-list-item-lkg {
+                        margin-top: 10px;
+                        margin-left: $list-indentation * 2;
+                        cursor: default;
+                        .lkg-icon {
+                            @include create-circle($circle-icon-size, $lkg-ep-color);
+                            color: $white;
+                        }
+                        .vlm-list-item-title {
+                            .item-name {
+                                color: $lkg-ep-color;
+                            }
+                        }
+                        .list-item-section {
+                            &:first-child {
+                                display: none;
+                            }
+                            &.list-item-icon-col {
+                                margin-left: 52px;
+                            }
+                        }
+                    }
+                }
             }
-          }
         }
-
-      }
     }
-  }
-
 }
index 96648dd..000e42d 100644 (file)
@@ -5,203 +5,201 @@ $selected-width: 1px;
 $selected-color: $blue;
 
 @mixin levels {
-       @for $i from 1 to 6 {
-               .level-#{$i} {
-                       padding-left: 18px + 10 * $i;
-               }
-       }
+    @for $i from 1 to 6 {
+        .level-#{$i} {
+            padding-left: 18px + 10 * $i;
+        }
+    }
 }
 
 .merge-editor-modal {
-       .modal-lg {
-               width: 1300px;
-       }
+    .modal-lg {
+        width: 1300px;
+    }
 }
 
 .merge-editor {
-       margin: 30px 40px;
-       max-height: 600px;
-       border: 1px solid $light-gray;
-       .grid-section {
-               &.conflict-titles-section {
-                       @extend .body-1;
-                       background-color: $blue;
-                       height: 33px;
-                       padding-top: 6px;
-                       padding-bottom: 3px;
-                       color: $white;
-                       position: sticky;
-                       top: 0;
-                       z-index: 2;
-                       border-bottom: 1px solid $tlv-light-gray;
-                       .grid-item {
-                               padding-left: 10px;
-                       }
-                       .form-group {
-                               margin-bottom: 0;
-                               .checkbox {
-                                       label {
-                                               margin-right: 0;
-                                       }
-
-                                       text-align: right;
-
-                                       input[type="checkbox"] {
-                                               cursor: pointer;
-                                               margin-top: 1px;
-                                       }
-                               }
-                       }
-               }
-       }
-       .merge-editor-body {
-               max-height: 500px;
-               overflow-y: scroll;
-               padding: 10px;
-               .conflict-section {
-                       margin-bottom: 0;
-                       border-left: 0;
-                       border-right: 0;
-                       padding: 5px 0;
-
-                       .conflict-resolve-btn {
-                               align-self: flex-end;
-                       }
-
-                       .grid-items {
-                               align-items: center;
-
-                               input[type="radio"]:not(:checked) {
-                                       cursor: pointer;
-                               }
-                       }
-               }
-
-               .collapsible-section {
-                       display: flex;
-                       cursor: pointer;
-
-                       .conflict-title {
-                               @extend .heading-5-semibold;
-                               text-transform: uppercase;
-                       }
-               }
-
-               .merge-chevron {
-                       margin-right: 7px;
-                       &.right {
-                               transform: rotate(90deg);
-                       }
-               }
-
-               .grid-section .grid-items .field-col:not(.grid-col-title) {
-                       &.grid-col-yours {
-                               border-top: $selected-width solid $yours-bg-color;
-                               border-bottom: $selected-width solid $yours-bg-color;
-                       }
-
-                       &.theirs-color {
-                               border-top: $selected-width solid $theirs-bg-color;
-                               border-bottom: $selected-width solid $theirs-bg-color;
-                       }
-               }
-
-               .merge-editor-text-field {
-                       display: flex;
-                       justify-content: space-between;
-                       // margin: 0 0 10px 0;
-                       margin: 0;
-
-                       .field {
-                               color: $text-black;
-
-                               &.field-name:not(.field-object-name) {
-                                       color: $gray;
-                               }
-                       }
-
-                       &.diff {
-                               .field {
-                                       color: $red;
-                               }
-                       }
-
-                       &.grid-section {
-                               padding-bottom: 0;
-
-                               .grid-items {
-                                       flex: 1;
-
-
-                                       .field-col {
-                                               padding: 7px 0;
-                                               height: 100%;
-
-                                               &:not(:first-child) {
-                                                       padding-left: 8px;
-                                               }
-
-                                               &.grid-col-yours {
-                                                       background-color: $yours-bg-color;
-                                               }
-
-                                               &.grid-col-theirs {
-                                                       background-color: $theirs-bg-color;
-                                               }
-
-                                               @include levels;
-
-
-                                               .field {
-                                                       @extend .body-1;
-                                                       flex: 2;
-                                                       min-width: 0;
-
-                                                       &.field-name {
-                                                               @include multiline-ellipsis($bgColor: white);
-                                                               &.diff {
-                                                                       color: $red;
-                                                               }
-                                                               text-transform: uppercase;
-                                                               &.field-object-name {
-                                                                       @extend .body-1-semibold;
-                                                                       margin-bottom: 5px;
-                                                                       margin-top: 10px;
-
-                                                               }
-                                                       }
-
-                                                       &.field-yours {
-                                                               @include multiline-ellipsis($bgColor: $yours-bg-color);
-                                                       }
-
-                                                       &.field-theirs {
-                                                               @include multiline-ellipsis($bgColor: $theirs-bg-color);
-                                                       }
-                                                       &.field-name, &.field.field-yours, &.field.field-theirs {
-                                                               word-break: break-word;
-                                                               text-align: initial;
-                                                       }
-                                                       &.empty-field {
-                                                               padding-top: 2px;
-                                                       }
-                                               }
-
-                                               *::after {
-                                                       bottom: 0;
-                                               }
-                                       }
-                               }
-                       }
-
-                       &.field-error {
-                               @extend .body-1;
-                               color: $error-text-color;
-                               min-width: 0;
-                               white-space: nowrap;
-                               overflow: hidden;
-                               text-overflow: ellipsis;
-                       }
-               }
-       }
+    margin: 30px 40px;
+    max-height: 600px;
+    border: 1px solid $light-gray;
+    .grid-section {
+        &.conflict-titles-section {
+            @extend .body-1;
+            background-color: $blue;
+            height: 33px;
+            padding-top: 6px;
+            padding-bottom: 3px;
+            color: $white;
+            position: sticky;
+            top: 0;
+            z-index: 2;
+            border-bottom: 1px solid $tlv-light-gray;
+            .grid-item {
+                padding-left: 10px;
+            }
+            .form-group {
+                margin-bottom: 0;
+                .checkbox {
+                    label {
+                        margin-right: 0;
+                    }
+
+                    text-align: right;
+
+                    input[type='checkbox'] {
+                        cursor: pointer;
+                        margin-top: 1px;
+                    }
+                }
+            }
+        }
+    }
+    .merge-editor-body {
+        max-height: 500px;
+        overflow-y: scroll;
+        padding: 10px;
+        .conflict-section {
+            margin-bottom: 0;
+            border-left: 0;
+            border-right: 0;
+            padding: 5px 0;
+
+            .conflict-resolve-btn {
+                align-self: flex-end;
+            }
+
+            .grid-items {
+                align-items: center;
+
+                input[type='radio']:not(:checked) {
+                    cursor: pointer;
+                }
+            }
+        }
+
+        .collapsible-section {
+            display: flex;
+            cursor: pointer;
+
+            .conflict-title {
+                @extend .heading-5-semibold;
+                text-transform: uppercase;
+            }
+        }
+
+        .merge-chevron {
+            margin-right: 7px;
+            &.right {
+                transform: rotate(90deg);
+            }
+        }
+
+        .grid-section .grid-items .field-col:not(.grid-col-title) {
+            &.grid-col-yours {
+                border-top: $selected-width solid $yours-bg-color;
+                border-bottom: $selected-width solid $yours-bg-color;
+            }
+
+            &.theirs-color {
+                border-top: $selected-width solid $theirs-bg-color;
+                border-bottom: $selected-width solid $theirs-bg-color;
+            }
+        }
+
+        .merge-editor-text-field {
+            display: flex;
+            justify-content: space-between;
+            margin: 0;
+
+            .field {
+                color: $text-black;
+
+                &.field-name:not(.field-object-name) {
+                    color: $gray;
+                }
+            }
+
+            &.diff {
+                .field {
+                    color: $red;
+                }
+            }
+
+            &.grid-section {
+                padding-bottom: 0;
+
+                .grid-items {
+                    flex: 1;
+
+                    .field-col {
+                        padding: 7px 0;
+                        height: 100%;
+
+                        &:not(:first-child) {
+                            padding-left: 8px;
+                        }
+
+                        &.grid-col-yours {
+                            background-color: $yours-bg-color;
+                        }
+
+                        &.grid-col-theirs {
+                            background-color: $theirs-bg-color;
+                        }
+
+                        @include levels;
+
+                        .field {
+                            @extend .body-1;
+                            flex: 2;
+                            min-width: 0;
+
+                            &.field-name {
+                                @include multiline-ellipsis($bgColor: white);
+                                &.diff {
+                                    color: $red;
+                                }
+                                text-transform: uppercase;
+                                &.field-object-name {
+                                    @extend .body-1-semibold;
+                                    margin-bottom: 5px;
+                                    margin-top: 10px;
+                                }
+                            }
+
+                            &.field-yours {
+                                @include multiline-ellipsis($bgColor: $yours-bg-color);
+                            }
+
+                            &.field-theirs {
+                                @include multiline-ellipsis($bgColor: $theirs-bg-color);
+                            }
+                            &.field-name,
+                            &.field.field-yours,
+                            &.field.field-theirs {
+                                word-break: break-word;
+                                text-align: initial;
+                            }
+                            &.empty-field {
+                                padding-top: 2px;
+                            }
+                        }
+
+                        *::after {
+                            bottom: 0;
+                        }
+                    }
+                }
+            }
+
+            &.field-error {
+                @extend .body-1;
+                color: $error-text-color;
+                min-width: 0;
+                white-space: nowrap;
+                overflow: hidden;
+                text-overflow: ellipsis;
+            }
+        }
+    }
 }
index 39f7636..bf0c146 100644 (file)
@@ -1,63 +1,63 @@
 $transitionLength: 0.6s;
 
 .catalog-view {
-       background-color: $background-gray;
-       overflow: hidden;
-       height: 100%;
-       display: flex;
-       @import "onboardingCatalog/catalogFilter.scss";
-       .catalog-parts {
-               width: 100%;
-               @import "onboardingCatalog/onboardHeader";
-               @import "onboardingCatalog/catalogHeader";
-       }       
-       @import "onboardingCatalog/vendorPageHeader";
-       @import "onboardingCatalog/catalogList";
-       @import "onboardingCatalog/vspOverlay";
-       .catalog-wrapper {
-               height: 100%;
-               overflow: auto;
-               .tab-separator {
-                 content: '';
-                 height: 25px;
-                 border-right: 1px solid $dark-gray;
-               }
-               .catalog-list {
-                       overflow: hidden;
-                       height: auto;
-                       .sdc-tile {
-                               margin: 9px;
-                               .sdc-tile-header {
-                                       position: initial;
-                                       display: block;
-                                       flex-shrink: initial;
-                                       align-items: initial;
-                                       flex-direction: initial;
-                               }
-                               .sdc-tile-content {
-                                       position: initial;
-                                       flex: initial;
-                                       display: flex;
-                                       align-items: initial;
-                                       flex-direction: column;
-                                       justify-content: space-between;
-                                       overflow: initial;
-                                       .sdc-tile-info-line {
-                                               .with-overlay {
-                                                       line-height: 1.2em;
-                                                       @include ellipsis($width: initial, $max-width: 100%);
-                                               }
-                                       }
-                               }
-                               .sdc-tile-footer {
-                                       position: initial;
-                                       flex-shrink: initial;
-                                       display: flex;
-                                       align-items: center;
-                                       flex-direction: row;
-                                       text-transform: none;
-                               }
-                       }
-               }
-       }
+    background-color: $background-gray;
+    overflow: hidden;
+    height: 100%;
+    display: flex;
+    @import 'onboardingCatalog/catalogFilter.scss';
+    .catalog-parts {
+        width: 100%;
+        @import 'onboardingCatalog/onboardHeader';
+        @import 'onboardingCatalog/catalogHeader';
+    }
+    @import 'onboardingCatalog/vendorPageHeader';
+    @import 'onboardingCatalog/catalogList';
+    @import 'onboardingCatalog/vspOverlay';
+    .catalog-wrapper {
+        height: 100%;
+        overflow: auto;
+        .tab-separator {
+            content: '';
+            height: 25px;
+            border-right: 1px solid $dark-gray;
+        }
+        .catalog-list {
+            overflow: hidden;
+            height: auto;
+            .sdc-tile {
+                margin: 9px;
+                .sdc-tile-header {
+                    position: initial;
+                    display: block;
+                    flex-shrink: initial;
+                    align-items: initial;
+                    flex-direction: initial;
+                }
+                .sdc-tile-content {
+                    position: initial;
+                    flex: initial;
+                    display: flex;
+                    align-items: initial;
+                    flex-direction: column;
+                    justify-content: space-between;
+                    overflow: initial;
+                    .sdc-tile-info-line {
+                        .with-overlay {
+                            line-height: 1.2em;
+                            @include ellipsis($width: initial, $max-width: 100%);
+                        }
+                    }
+                }
+                .sdc-tile-footer {
+                    position: initial;
+                    flex-shrink: initial;
+                    display: flex;
+                    align-items: center;
+                    flex-direction: row;
+                    text-transform: none;
+                }
+            }
+        }
+    }
 }
index e652d9d..5f83dc2 100644 (file)
@@ -1,55 +1,50 @@
-.modal-content {
-       .modal-body {
-               .manage-permissions-page {
-                       .validation-form-content {
-                               overflow-y: visible;
-                       }
+.manage-permissions-page {
+    .validation-form-content {
+        overflow-y: visible;
+    }
 
-                       .manage-permissions-title {
-                               @extend .body-1-semibold;
-                               margin-bottom: 10px;
-                       }
-                       .owner-details {
-                               @extend .body-2;
-                               display: flex;
-                               margin-bottom: 30px;
-                               .change-owner {
-                                       margin-left: auto;
-                                       color: $blue;
-                                       cursor: pointer;
-                                       &:hover {
-                                               color: $dark-blue;
-                                       }
-                               }
-                       }
-                       .change-owner-wrapper {
-                               .form-group {
-                                       margin-bottom: 30px;
-                               }
-
-                       }
-                       .change-owner-title {
-                               display: flex;
-                               align-items: center;
-                               margin-bottom: 10px;
-                               .manage-permissions-title {
-                                       margin-bottom: 0;
-                               }
-                               .svg-icon-wrapper {
-                                       margin-left: 5px;
-                                       .svg-icon {
-                                               width: 13px;
-                                               height: 13px;
-                                               fill: $dark-gray;
-                                       }
-                               }
-                       }
-                       .contributors-select {
-                               .Select-menu {
-                                       max-height: 150px;
-                                       overflow-y: auto
-                               }
-                       }
-               }
-       }
+    .manage-permissions-title {
+        @extend .body-1-semibold;
+        margin-bottom: 10px;
+    }
+    .owner-details {
+        @extend .body-2;
+        display: flex;
+        margin-bottom: 30px;
+        .change-owner {
+            margin-left: auto;
+            color: $blue;
+            cursor: pointer;
+            &:hover {
+                color: $dark-blue;
+            }
+        }
+    }
+    .change-owner-wrapper {
+        .form-group {
+            margin-bottom: 30px;
+        }
+    }
+    .change-owner-title {
+        display: flex;
+        align-items: center;
+        margin-bottom: 10px;
+        .manage-permissions-title {
+            margin-bottom: 0;
+        }
+        .svg-icon-wrapper {
+            margin-left: 5px;
+            .svg-icon {
+                width: 13px;
+                height: 13px;
+                fill: $dark-gray;
+            }
+        }
+    }
+    .contributors-select {
+        .Select-menu {
+            max-height: 150px;
+            overflow-y: auto;
+        }
+    }
 }
index 2b196c1..619fe7e 100644 (file)
@@ -1,86 +1,68 @@
 .manage-revisions-modal {
-  .modal-dialog {
-    width: 700px;
-  }
-  .modal-content {
-    .modal-body {
-      .validation-form-content {
-        padding-top: 30px;
-      }
-      //.selected {
-      //  .selectable {
-      //    border-color: $light-blue;
-      //  }
-      //  .selectable:hover{
-      //    border-color: hotpink;
-      //  }
-      //}
-
-      .revision-list-item {
+    .revision-list-item {
         &.selected {
-          .selectable, .selectable:hover {
-            border-width: 2px;
-            border-color: $light-blue;
-          }
+            .selectable,
+            .selectable:hover {
+                border-width: 2px;
+                border-color: $light-blue;
+            }
         }
-        .selectable:hover{
-          border-color: $gray;
+        .selectable:hover {
+            border-color: $gray;
         }
         .selectable:active {
-          border-color: $light-blue;
+            border-color: $light-blue;
         }
-      }
+    }
 
-      .list-editor-view-list-scroller {
-        margin-top : 0px;
-      }
+    .list-editor-view-list-scroller {
+        margin-top: 0px;
+    }
 
-      .list-editor-view-header {
+    .list-editor-view-header {
         border-bottom: none;
         .list-editor-view-title {
-          @extend .heading-5;
-          text-transform: none;
-          color: $blue;
+            @extend .heading-5;
+            text-transform: none;
+            color: $blue;
         }
-      }
+    }
 
-      .list-editor-item-view-content {
+    .list-editor-item-view-content {
         background-color: $background-gray;
-      }
-      .revision-list-item-fields {
+    }
+    .revision-list-item-fields {
         width: 100%;
         display: flex;
         flex-wrap: wrap;
         .revision-user {
-          flex-basis: 50%;
-          fill: transparent;
-          stroke: $blue;
-          .svg-icon-label {
-            margin-left: 13px;
-          }
+            flex-basis: 50%;
+            fill: transparent;
+            stroke: $blue;
+            .svg-icon-label {
+                margin-left: 13px;
+            }
         }
 
         .revision-date {
-          flex-basis: 50%;
-          text-align: right;
-          @extend .body-3;
-          color: $gray;
-          .revision-time {
-            margin-left: 5px;
-          }
+            flex-basis: 50%;
+            text-align: right;
+            @extend .body-3;
+            color: $gray;
+            .revision-time {
+                margin-left: 5px;
+            }
         }
 
         .revision-message {
-          flex-basis: 100%;
-          margin-top: 5px;
-          @extend .body-2;
-          .more-less {
-            @extend .body-3;
-            color: $blue;
-            margin-left: 5px;
-          }
+            flex-basis: 100%;
+            margin-top: 5px;
+            @extend .body-2;
+            .more-less {
+                @extend .body-3;
+                color: $blue;
+                margin-left: 5px;
+            }
         }
-      }
     }
-  }
 }
index 81a109c..f24198c 100644 (file)
-
 .vsp-attachments-view {
-  position: relative;
-  .attachments-tabs {
-    .sdc-tabs-list {
-      padding-left: 28px;
-      background-color: $tlv-gray;
-      box-shadow: none;
-      border-bottom: 1px solid $light-gray;
-      .sdc-tab {
-          @extend .heading-2;
-        padding-top: 10px;
-        margin-top: 0;
-        &.sdc-tab-active {
-          color: $blue;
-          font-weight: bold;
+    position: relative;
+    .attachments-tabs {
+        .sdc-tabs-list {
+            padding-left: 28px;
+            background-color: $tlv-gray;
+            box-shadow: none;
+            border-bottom: 1px solid $light-gray;
+            .sdc-tab {
+                @extend .heading-2;
+                padding-top: 10px;
+                margin-top: 0;
+                &.sdc-tab-active {
+                    color: $blue;
+                    font-weight: bold;
+                }
+            }
+        }
+        .sdc-tab-content {
+            margin-top: 0;
         }
-      }
-    }
-    .sdc-tab-content {
-      margin-top: 0;
     }
-  }
-  .attachments-view-controllers {
-    position: absolute;
-    right: 40px;
-    top: 10px;
-    display: flex;
+    .attachments-view-controllers {
+        position: absolute;
+        right: 40px;
+        top: 10px;
+        display: flex;
 
-    
-    .icon-component {
-      margin-right: 30px;      
-    }
+        .icon-component {
+            margin-right: 30px;
+        }
 
-    input[type="file"] {
-      visibility: hidden;
-      width: 1px;
-      padding: 0;
-      margin-left: -1px;
-    }
+        input[type='file'] {
+            visibility: hidden;
+            width: 1px;
+            padding: 0;
+            margin-left: -1px;
+        }
 
-    .proceed-to-validation-btn {
-      margin-right: 30px;
-    }
-    .go-to-overview-btn {
-      width: 191px;
-      margin-right: 36px;
-      height: 36px;
-    }
-    .separator {
-      height: 27px;
-      border: 1px solid $light-gray;
-      margin-right: 31px;
-      margin-left: 0px; 
-      margin-top: 3px;
+        .proceed-to-validation-btn {
+            margin-right: 30px;
+        }
+        .go-to-overview-btn {
+            width: 191px;
+            margin-right: 36px;
+            height: 36px;
+        }
+        .separator {
+            height: 27px;
+            border: 1px solid $light-gray;
+            margin-right: 31px;
+            margin-left: 0px;
+            margin-top: 3px;
+        }
+        .abort-btn {
+            fill: $blue;
+            color: $blue;
+            &:hover {
+                color: $light-blue;
+                fill: $light-blue;
+            }
+        }
     }
-    .abort-btn {      
-      fill: $blue;
-      color: $blue;
-      &:hover {
-        color: $light-blue;
-        fill: $light-blue;
-      }
-    }      
-  }
 }
 
 .vsp-attachments-heat-validation {
-  @extend .body-1;
-  display: flex;
-  .svg-icon.exclamationTriangleFull {
-    fill: $orange;
-    width: 15px;
-    height: 15px;
-    &.large {
-      width: 20px;
-      height: 20px;
-    }
-  }
-  .validation-tree-section {
+    @extend .body-1;
     display: flex;
-    width: 400px;
-    justify-content: space-between;
-  }
-  .vsp-attachments-heat-validation-tree {
-    @extend .flex-column;
-    margin: 0;
-    overflow: auto;
-    height: 100%;
-    .attachments-tree-header {
-      display: flex;
-      justify-content: space-between;
-      height: 55px;
-      align-items: center;
-      &.header-selected {
-        background: $tlv-gray;
-      }
-      .header-icon {
-        top: -3px;
-        position: relative;
-        margin-left: 20px;
-      }
-      .tree-header-title-text {
-        @extend .heading-4-semibold;
-        padding-left: 32px;
-        cursor: pointer;
-        &.tree-header-title-selected{
-          color: $blue;
+    .svg-icon.exclamationTriangleFull {
+        fill: $orange;
+        width: 15px;
+        height: 15px;
+        &.large {
+            width: 20px;
+            height: 20px;
         }
-      }
-      .tree-header-title {
-        display: flex;
-      }
     }
-    .counters {
-      display: flex;
-      justify-content: space-between;
-      z-index: 1;
-      padding-right: 20px;
-      .counter {
-        .svg-icon {
-          &.__exclamationTriangleLine {
-            fill: $orange;
-          }
-        }
+    .validation-tree-section {
         display: flex;
-        &:first-child {
-          margin-right: 20px;
-        }
-        &:only-child {
-          margin-right: 0;
-        }
-        .svg-icon-wrapper {
-          margin-right: 5px;
-        }
-        .counter-icon {
-          margin-right: 5px;
-        }
-        .error-text, .warning-text {
-          @extend .body-3;
-          &.large {
-            @extend .heading-4-semibold;
-          }
-        }
-      }
+        width: 400px;
+        justify-content: space-between;
     }
-    .tree-wrapper {
-      flex: 1 1;
-      position: relative;
-      padding-bottom: 10px;
-
-      @-moz-document url-prefix() {
-        .tree-block-inside {
-          top: 0;
-          position: relative;
+    .vsp-attachments-heat-validation-tree {
+        @extend .flex-column;
+        margin: 0;
+        overflow: auto;
+        height: 100%;
+        .attachments-tree-header {
+            display: flex;
+            justify-content: space-between;
+            height: 55px;
+            align-items: center;
+            &.header-selected {
+                background: $tlv-gray;
+            }
+            .header-icon {
+                top: -3px;
+                position: relative;
+                margin-left: 20px;
+            }
+            .tree-header-title-text {
+                @extend .heading-4-semibold;
+                padding-left: 32px;
+                cursor: pointer;
+                &.tree-header-title-selected {
+                    color: $blue;
+                }
+            }
+            .tree-header-title {
+                display: flex;
+            }
         }
-      }
-      .tree-block-inside {
-        padding-left: 20px;
-        .tree-node-row {
-          cursor: default;
-          white-space: nowrap;
-          display: flex;
-          justify-content: space-between;
-          height: 40px;
-          align-items: center;
-          .svg-icon {
-            &.__chevronUp, &.__chevronDown {
-              height: 10px;
-              width: 10px;
+        .counters {
+            display: flex;
+            justify-content: space-between;
+            z-index: 1;
+            padding-right: 20px;
+            .counter {
+                .svg-icon {
+                    &.__exclamationTriangleLine {
+                        fill: $orange;
+                    }
+                }
+                display: flex;
+                &:first-child {
+                    margin-right: 20px;
+                }
+                &:only-child {
+                    margin-right: 0;
+                }
+                .svg-icon-wrapper {
+                    margin-right: 5px;
+                }
+                .counter-icon {
+                    margin-right: 5px;
+                }
+                .error-text,
+                .warning-text {
+                    @extend .body-3;
+                    &.large {
+                        @extend .heading-4-semibold;
+                    }
+                }
             }
-          }
+        }
+        .tree-wrapper {
+            flex: 1 1;
+            position: relative;
+            padding-bottom: 10px;
 
-          &:after {
-            border-top: 1px solid $tlv-gray;
-            height: 40px;
-            position: absolute;
-            left: 0;
-            right: 0;
-            content: ' ';
-          }
-          @-moz-document url-prefix() {
-            &:after {
-              top: 0;
+            @-moz-document url-prefix() {
+                .tree-block-inside {
+                    top: 0;
+                    position: relative;
+                }
             }
-          }
-          &.tree-node-selected::before {
-            position: absolute;
-            left: 0;
-            right: 0;
-            height: 20px;
-            display: inline-block;
-            content: ' ';
-            background-color: $tlv-gray;
-            color: $blue;
-          }
+            .tree-block-inside {
+                padding-left: 20px;
+                .tree-node-row {
+                    cursor: default;
+                    white-space: nowrap;
+                    display: flex;
+                    justify-content: space-between;
+                    height: 40px;
+                    align-items: center;
+                    .svg-icon {
+                        &.__chevronUp,
+                        &.__chevronDown {
+                            height: 10px;
+                            width: 10px;
+                        }
+                    }
 
-          &.tree-node-clicked {
-            color: $blue;
-            &:after {
-              background: $tlv-gray;
-              height: 40px;
-              position: absolute;
-              left: 0;
-              right: 0;
-              content: ' ';
+                    &:after {
+                        border-top: 1px solid $tlv-gray;
+                        height: 40px;
+                        position: absolute;
+                        left: 0;
+                        right: 0;
+                        content: ' ';
+                    }
+                    @-moz-document url-prefix() {
+                        &:after {
+                            top: 0;
+                        }
+                    }
+                    &.tree-node-selected::before {
+                        position: absolute;
+                        left: 0;
+                        right: 0;
+                        height: 20px;
+                        display: inline-block;
+                        content: ' ';
+                        background-color: $tlv-gray;
+                        color: $blue;
+                    }
+
+                    &.tree-node-clicked {
+                        color: $blue;
+                        &:after {
+                            background: $tlv-gray;
+                            height: 40px;
+                            position: absolute;
+                            left: 0;
+                            right: 0;
+                            content: ' ';
+                        }
+                    }
+                    .tree-node-name {
+                        cursor: pointer;
+                    }
+                    .name-section {
+                        z-index: 1;
+                        flex: 1;
+                        @include ellipsis(auto);
+                    }
+                    .tree-node-expander {
+                        position: relative;
+                        display: inline-block;
+                        cursor: pointer;
+                    }
+                    .tree-node-icon {
+                        margin: 0 7px;
+                    }
+                }
             }
-          }
-          .tree-node-name {
-            cursor: pointer;
-          }
-          .name-section {
-            z-index: 1;
-            flex: 1;
-            @include ellipsis(auto);
-          }
-          .tree-node-expander {
-            position: relative;
-            display: inline-block;
-            cursor: pointer;
-          }
-          .tree-node-icon {
-            margin: 0 7px;
-          }
         }
-      }
     }
-  }
-  .vsp-attachments-heat-validation-separator {
-    border-left: 1px solid $tlv-light-gray;
-    height: 100%;
-    width: 5px;
-    cursor: e-resize;
-  }
+    .vsp-attachments-heat-validation-separator {
+        border-left: 1px solid $tlv-light-gray;
+        height: 100%;
+        width: 5px;
+        cursor: e-resize;
+    }
 
-  .message-board-section {
-    @extend .flex-column;
-    padding-left: 25px;
-    padding-top: 10px;
-    padding-right: 60px;
-    overflow: auto;
-    margin-bottom: 70px;
-    .error-item {
-      display: flex;
-      margin: 10px 0;
-      .large {
-        .svg-icon {
-          width: 20px;
-          height: 20px;
-          fill: $orange;
+    .message-board-section {
+        @extend .flex-column;
+        padding-left: 25px;
+        padding-top: 10px;
+        padding-right: 60px;
+        overflow: auto;
+        margin-bottom: 70px;
+        .error-item {
+            display: flex;
+            margin: 10px 0;
+            .large {
+                .svg-icon {
+                    width: 20px;
+                    height: 20px;
+                    fill: $orange;
+                }
+            }
+            .error-item-file-type {
+                margin-left: 15px;
+            }
+            .error-file-name {
+                @extend .body-1-semibold;
+                margin-right: 5px;
+            }
         }
-      }
-      .error-item-file-type {
-        margin-left: 15px;
-      }
-      .error-file-name {
-        @extend .body-1-semibold;
-        margin-right: 5px;
-      }
-
-
-
     }
-
-  }
-
 }
index 164e3bc..83941c0 100644 (file)
@@ -1,3 +1,3 @@
-.section-title.software-product-compute-number-of-vms{
-  text-transform: initial;
-}
\ No newline at end of file
+.section-title.software-product-compute-number-of-vms {
+    text-transform: initial;
+}
index d31c7f0..f50e342 100644 (file)
@@ -1,13 +1,13 @@
 .vsp-components-general {
-  .general-data {
-    .one-line-textarea {
-      height: 30px;
+    .general-data {
+        .one-line-textarea {
+            height: 30px;
+        }
+        .multi-line-textarea {
+            height: calc(100% - 25px);
+            textarea {
+                height: inherit;
+            }
+        }
     }
-    .multi-line-textarea {
-      height: calc(100% - 25px);
-      textarea {
-        height: inherit;
-      }
-    }
-  }
 }
index b67c448..409b686 100644 (file)
@@ -1,67 +1,51 @@
-.image-modal-new {
-  .modal-dialog {
-    width: 600px;
-  }
-  .image-filename {
-    width: 480px;
-  }
-}
-
-.image-modal-edit {
-  .modal-dialog {
-    width: 910px;
-  }
-  .image-filename {
-    width: 550px;
-  }
-}
-
 .vsp-components-image-editor {
-  .note-text {
-    color: $red;
-  }
+    .note-text {
+        color: $red;
+    }
 }
 
-.image-modal-edit, .image-modal-new {
-  .vsp-components-image-editor {
-
-    .image-format, .image-md5, .image-version {
-      width: 200px;
-    }
-    .image-version {
-      padding-left: 30px;
-    }
-    .section-title {
-      text-transform: uppercase;
-      font-size: 18px;
+.image-modal-edit,
+.image-modal-new {
+    .vsp-components-image-editor {
+        .image-format,
+        .image-md5,
+        .image-version {
+            width: 200px;
+        }
+        .image-version {
+            padding-left: 30px;
+        }
+        .section-title {
+            text-transform: uppercase;
+            font-size: 18px;
+        }
     }
-  }
 }
 
 .vsp-components-image {
-  .list-editor-view {
-    margin-top: 50px;
-    .manual-title {
-      @extend .body-1-semibold;
+    .list-editor-view {
+        margin-top: 50px;
+        .manual-title {
+            @extend .body-1-semibold;
+        }
+    }
+    .list-editor-item-view-content {
+        flex: 1;
+        min-width: 0;
+    }
+    .list-editor-item-view-controller {
+        padding-top: 5px;
     }
-  }
-  .list-editor-item-view-content {
-    flex:1;
-    min-width: 0;
-  }
-  .list-editor-item-view-controller {
-    padding-top: 5px;
-  }
-  .image-filename-cell {
-    display: flex;
-    .image-filename {
-      white-space: nowrap;
-      overflow: hidden;
-      display: inline-block;
-      text-overflow: ellipsis;
-      Â span {
-        @include ellipsis(100%);
-      }
+    .image-filename-cell {
+        display: flex;
+        .image-filename {
+            white-space: nowrap;
+            overflow: hidden;
+            display: inline-block;
+            text-overflow: ellipsis;
+            Â span {
+                @include ellipsis(100%);
+            }
+        }
     }
-  }
 }
index eaba47a..464ef98 100644 (file)
@@ -1,87 +1,85 @@
 .vsp-components-network {
-  .network-data {
-    .single-col {
-      .validation-input-wrapper {
-        label {
-          max-width: 230px;
+    .network-data {
+        .single-col {
+            .validation-input-wrapper {
+                label {
+                    max-width: 230px;
+                }
+            }
         }
-      }
     }
-  }
-  .list-editor-view {
-    margin-top: 50px;
-    .manual-title {
-      @extend .body-1-semibold;
+    .list-editor-view {
+        margin-top: 50px;
+        .manual-title {
+            @extend .body-1-semibold;
+        }
     }
-  }
 }
 .network-nic-modal-create {
-       .network-type-radio {
-               display: flex;
-       }
+    .network-type-radio {
+        display: flex;
+        .validation-radio-wrapper:first-child {
+            padding-right: 20px;
+        }
+    }
 }
 
-.network-nic-modal-edit {
-    .modal-dialog {
-               width: 900px;
-    }
-  .vsp-components-network-editor {
+.vsp-components-network-editor {
     .editor-data {
-      height: 500px;
-      .grid-section {
-        padding-bottom: 15px;
-        .section-title {
-          @extend .heading-5;
-          padding-bottom: 10px;
-          padding-left: 0;
+        height: 500px;
+        .grid-section {
+            padding-bottom: 15px;
+            .section-title {
+                @extend .heading-5;
+                padding-bottom: 10px;
+                padding-left: 0;
+            }
         }
-      }
-      .part-title {
-        @extend .heading-5;
-        padding-bottom: 10px;
-        padding-left: 14px;
-      }
-      .part-title-small {
-        @extend .heading-3;
-        padding-bottom: 10px;
-        padding-left: 0;
-      }
-      .network-radio label {
-        font-size: 15px;
-      }
-
-      .packets-bytes-gen {
-        display: flex;
-        justify-content: space-between;
-        flex-direction: column;
-        .top-row {
-          display: flex;
-          .part-title-small {
+        .part-title {
+            @extend .heading-5;
+            padding-bottom: 10px;
+            padding-left: 14px;
+        }
+        .part-title-small {
+            @extend .heading-3;
+            padding-bottom: 10px;
             padding-left: 0;
-            &.packets {
-              flex: 0 0 52%;
-            }
-            &.bytes {
-              flex: 0 0 48%;
-            }
-          }
         }
-        .bottom-row {
-          display: flex;
-          justify-content: space-between;
-          flex-direction: row;
-          flex: 1;
-          .inputs-wrapper {
+        .network-radio label {
+            font-size: 15px;
+        }
+
+        .packets-bytes-gen {
             display: flex;
-            flex-direction: row;
             justify-content: space-between;
-            flex: 1;
-            .validation-input-wrapper {
-              flex: 0 0 22%;
+            flex-direction: column;
+            .top-row {
+                display: flex;
+                .part-title-small {
+                    padding-left: 0;
+                    &.packets {
+                        flex: 0 0 52%;
+                    }
+                    &.bytes {
+                        flex: 0 0 48%;
+                    }
+                }
+            }
+            .bottom-row {
+                display: flex;
+                justify-content: space-between;
+                flex-direction: row;
+                flex: 1;
+                .inputs-wrapper {
+                    display: flex;
+                    flex-direction: row;
+                    justify-content: space-between;
+                    flex: 1;
+                    .validation-input-wrapper {
+                        flex: 0 0 22%;
+                    }
+                }
             }
-          }
         }
-      }
     }
-  }
 }
index 9476d70..b3c4800 100644 (file)
@@ -1,9 +1,9 @@
 .edit-process-modal {
-  .component-process-description > textarea {
-    height: 113px;
-  }
+    .component-process-description > textarea {
+        height: 113px;
+    }
 }
 
 .software-product-landing-view-right-side.vsp-components-processes-page {
-       overflow-y: initial;
-}
\ No newline at end of file
+    overflow-y: initial;
+}
index b788a86..8b13789 100644 (file)
@@ -1,39 +1 @@
-.software-product-type-modal {
-  .modal-dialog {
-    @extend .modal-lg !optional;
-    .modal-body {
-      padding: 0;
-    }
-    .validation-form-content {
-      padding: 50px;
-      .software-product-form-row {
-        display: flex;
-        justify-content: space-between;
-        margin-bottom: 20px;
-        .software-product-inline-section {
-          padding: 0 20px;
-          flex: 45%;
-          .validation-input-wrapper {
-            .field-section {
-              @extend .body-2-semibold;
-              margin-bottom: 23px;
-              color: $black;
-            }
-            textarea {
-              height: 191px;
-            }
-            select optgroup[label] {
-              color: $dark-blue;
-            }
-            option {
-              color: black;
-            }
-          }
-        }
-      }
-    }
-    .validation-buttons {
-      padding: 20px 50px;
-    }
-  }
-}
+
index 65c558f..5358e7c 100644 (file)
@@ -2,22 +2,22 @@
     .software-product-dependencies-title {
         @extend .heading-1;
         @extend .text-uppercase !optional;
-                       position: sticky;
-                       top: -30px;
-                       z-index: 1;
-                       background: $white;
+        position: sticky;
+        top: -30px;
+        z-index: 1;
+        background: $white;
         margin-bottom: 20px;
         color: $blue;
     }
     .select-action-table-controllers {
-                       position: sticky;
-                       top: 4px;
-                       z-index: 1;
-                       background: $white;
+        position: sticky;
+        top: 4px;
+        z-index: 1;
+        background: $white;
         justify-content: flex-end;
         cursor: pointer;
         color: $blue;
-                       padding-right: 27px;
+        padding-right: 27px;
         margin-bottom: 3px;
         &:hover {
             color: $dark-blue;
     .select-action-table-view {
         min-width: 770px;
     }
-       .select-action-table-headers {
-               position: sticky;
-               top: 27px;
-               z-index: 1;
-    .select-action-table-header {
-        @extend .body-1-semibold;
-        color: $text-black;
-               }
-       }
-       .select-action-table-row-wrapper {
-               .svg-icon {
-                       &.__trashO, &.__plusCircle {
-                               fill: $dark-gray;
-                               &:hover {
-                                       fill: $black;
+    .select-action-table-headers {
+        position: sticky;
+        top: 27px;
+        z-index: 1;
+        .select-action-table-header {
+            @extend .body-1-semibold;
+            color: $text-black;
+        }
+    }
+    .select-action-table-row-wrapper {
+        .svg-icon {
+            &.__trashO,
+            &.__plusCircle {
+                fill: $dark-gray;
+                &:hover {
+                    fill: $black;
+                }
+            }
+        }
     }
-                       }
-               }
-       }
 }
index b5f9a54..85eea9c 100644 (file)
@@ -1,46 +1,38 @@
 .deployment-flavor-editor {
-       .modal-dialog {
-               width: 780px;
-       }
-       .deployment-feature-groups-section.no-feature-groups {
-               padding-bottom: 0;
-               .form-group {
-                       margin-bottom: 5px;
-               }
-       }
-       .deployment-feature-group-warning-section {
-                       padding-bottom: 30px;
-                       span {
-                               @extend .body-2;
-                               color: $red;
-                       }
-       }
-       .grid-section.vfc-table {
-               .section-title {
-                       padding-bottom: 10px;
-               }
-       }
-       .modal-content {
-               .modal-body {
-                       .validation-form-content {
-                               overflow-y: visible;
-                               .grid-col-1 {
-                                       flex-basis: 30%;
-                               }
+    .deployment-feature-groups-section.no-feature-groups {
+        padding-bottom: 0;
+        .form-group {
+            margin-bottom: 5px;
+        }
+    }
+    .deployment-feature-group-warning-section {
+        padding-bottom: 30px;
+        span {
+            @extend .body-2;
+            color: $red;
+        }
+    }
+    .grid-section.vfc-table {
+        .section-title {
+            padding-bottom: 10px;
+        }
+    }
+    &.sdc-modal__content {
+        .validation-form-content {
+            .grid-col-1 {
+                flex-basis: 30%;
+            }
 
+            .grid-section.vfc-table {
+                padding-bottom: 50px;
+                .Select-menu {
+                    max-height: 100px;
+                }
+            }
 
-                               .grid-section.vfc-table {
-                                       padding-bottom: 50px;
-                                       .Select-menu {
-                                               max-height: 100px;
-                                       }
-
-                               }
-
-                               .grid-col-3 {
-                                       flex-basis: 65%;
-                               }
-                       }
-               }
-       }
+            .grid-col-3 {
+                flex-basis: 65%;
+            }
+        }
+    }
 }
index 8d124c3..8f0803f 100644 (file)
 .upload-modal-body-content {
-  padding-left: 30px;
-  padding-right: 30px;
-  padding-bottom: 10px;
-  .title {
-    @extend .body-1-semibold;
-  }
-  .file-name {
-    padding-left: 5px;
-    @extend .body-1-semibold;
-  }
+    padding-left: 30px;
+    padding-right: 30px;
+    padding-bottom: 10px;
+    .title {
+        @extend .body-1-semibold;
+    }
+    .file-name {
+        padding-left: 5px;
+        @extend .body-1-semibold;
+    }
 }
 
-
 .software-product-view {
-  display: flex;
-  height:100%;
+    display: flex;
+    height: 100%;
 
-  .description {
-    @extend .body-1;
-    padding-right: 20px;
+    .description {
+        @extend .body-1;
+        padding-right: 20px;
 
-    .missing-license {
-      display: flex;
-      align-items: baseline;
-      .svg-icon{
-        margin-right: 7px;
-        margin-left: 3px;
-        &.__exclamationTriangleFull {
-          fill: $orange;
-            width: 17px;
-            height: 17px;
+        .missing-license {
+            display: flex;
+            align-items: baseline;
+            .svg-icon {
+                margin-right: 7px;
+                margin-left: 3px;
+                &.__exclamationTriangleFull {
+                    fill: $orange;
+                    width: 17px;
+                    height: 17px;
+                }
+            }
+            .warning-text {
+                position: relative;
+                top: -2px;
+            }
         }
-      }
-      .warning-text {
-        position: relative;
-        top: -2px;
-      }
     }
-  }
-  .name {
-    @extend .body-1-semibold;
-  }
-  .software-product-landing-view-right-side {
-    @extend .flex;
-    overflow-y: hidden;
-    .list-editor-view {
-      .list-editor-view-title {
-        margin-bottom: 0;
-      }
+    .name {
+        @extend .body-1-semibold;
     }
-  }
-  .software-product-landing-view {
-    padding-bottom: 50px;
-
-
-    .software-product-landing-view-top {
-      .details-container {
-        @extend .flex-column;
-
-        .single-detail-section {
-
-          @extend  .flex-column;
-          &.title-section {
-            flex: 0.8;
-            @extend .heading-5-semibold;
-          }
-          &.title-text {
-            margin-bottom: 24px;
-          }
-          .description {
-              @include multiline-ellipsis();
-          }
-        }
-        .title {
-          @extend .body-3;
-          color: $gray;
-          &.extra-large {
-            min-width: 130px;
-          }
-        }
-        .details-section {
-          display: flex;
-        }
-        .multiple-details-section {
-          @extend .flex-column;
-          justify-content: space-between;
-          .detail-col {
-            padding-bottom: 10px;
-          }
-        }
-      }
-      .row {
-        margin: 0;
-        display: flex;
-        .details-panel {
-          flex: 1;
-          margin-right: 50px;
-          &:last-child {
-            margin-right: 0;
-          }
-          .software-product-landing-view-top-block-col-upl  {
-            height: 215px;
-            width: initial;
-          }
+    .software-product-landing-view-right-side {
+        @extend .flex;
+        overflow-y: hidden;
+        .list-editor-view {
+            .list-editor-view-title {
+                margin-bottom: 0;
+            }
         }
-        .col-md-6 {
-          padding: 0;
+    }
+    .software-product-landing-view {
+        padding-bottom: 50px;
 
-          overflow-wrap: break-word;
-          &:first-child {
-            padding-right: 25px;
-          }
-          &:last-child {
-            padding-left: 25px;
-          }
-        }
-        .title {
-          @extend .body-1-semibold;
-        }
-        .software-product-landing-view-heading-title {
-          @extend .section-title;
-          color: $dark-gray;
-          padding-bottom: 20px;
-          &:first-child {
-            padding-bottom: 20px;
-          }
-        }
-        .software-product-landing-view-top-block {
-          &.clickable {
-          cursor: pointer;
-            &:hover {
-              @extend .box-hover;
-            }
-          }
-          border: 1px solid $light-gray;
-          padding: 20px 18px 0 18px;
-          height: 215px;
-          display: flex;
-          justify-content: space-between;
-          background-color: $white;
+        .software-product-landing-view-top {
+            .details-container {
+                @extend .flex-column;
 
-          .col-md-6 {
-            @extend .body-1;
-          }
-          .software-product-landing-view-top-block-col {
-            @extend .body-1;
-            flex: 0.8;
-            display: flex;
-            justify-content: space-between;
-            flex-direction: column;
-            .description {
-              overflow: hidden;
-              padding-right: 20px;
-            }
-            .attachment-details {
-              padding-bottom: 10px;
-            }
-            .attachment-details-count {
-              color: $light-blue;
+                .single-detail-section {
+                    @extend .flex-column;
+                    &.title-section {
+                        flex: 0.8;
+                        @extend .heading-5-semibold;
+                    }
+                    &.title-text {
+                        margin-bottom: 24px;
+                    }
+                    .description {
+                        @include multiline-ellipsis();
+                    }
+                }
+                .title {
+                    @extend .body-3;
+                    color: $gray;
+                    &.extra-large {
+                        min-width: 130px;
+                    }
+                }
+                .details-section {
+                    display: flex;
+                }
+                .multiple-details-section {
+                    @extend .flex-column;
+                    justify-content: space-between;
+                    .detail-col {
+                        padding-bottom: 10px;
+                    }
+                }
             }
-          }
-        }
+            .row {
+                margin: 0;
+                display: flex;
+                .details-panel {
+                    flex: 1;
+                    margin-right: 50px;
+                    &:last-child {
+                        margin-right: 0;
+                    }
+                    .software-product-landing-view-top-block-col-upl {
+                        height: 215px;
+                        width: initial;
+                    }
+                }
+                .col-md-6 {
+                    padding: 0;
 
-        .software-product-landing-view-top-block-col-upl {
-          @extend .flex;
-          height: 215px;
-          text-align: center;
-          flex-direction: column;
-          justify-content: center;
-          border: 2px dashed $light-gray;
-          margin-bottom: 20px;
-          @extend .body-1;
-          align-items: center;
-          .upload-btn {
-            padding: 15px 55px;
+                    overflow-wrap: break-word;
+                    &:first-child {
+                        padding-right: 25px;
+                    }
+                    &:last-child {
+                        padding-left: 25px;
+                    }
+                }
+                .title {
+                    @extend .body-1-semibold;
+                }
+                .software-product-landing-view-heading-title {
+                    @extend .section-title;
+                    color: $dark-gray;
+                    padding-bottom: 20px;
+                    &:first-child {
+                        padding-bottom: 20px;
+                    }
+                }
+                .software-product-landing-view-top-block {
+                    &.clickable {
+                        cursor: pointer;
+                        &:hover {
+                            @extend .box-hover;
+                        }
+                    }
+                    border: 1px solid $light-gray;
+                    padding: 20px 18px 0 18px;
+                    height: 215px;
+                    display: flex;
+                    justify-content: space-between;
+                    background-color: $white;
 
-          }
-          .drag-text {
-            color: $blue;
-            @extend .body-1-semibold;
-          }
-          .or-text {
-            margin-top: 10px;
-            margin-bottom: 10px;
-            color: $light-gray;
-          }
-          .upload {
-            width: 50%;
-            border : 0px !important;
-          }
-          .vnfRepo {
-            width: 50%;
-            cursor: pointer;
-            .searchRepo-text {
-              color: $blue;
-              @extend .body-1-semibold;
-              width: 72px;
-              line-height: 24px;
-              margin-left: auto;
-              margin-right: auto;
-            }
-            .svg-icon-wrapper {
-              .svg-icon.__search {
-                width: 34px;
-                height: 34px;
-                margin-top: 10px;
-              }
-              &.__positive {
-                fill: $blue;
-                color: $blue;
-              }
+                    .col-md-6 {
+                        @extend .body-1;
+                    }
+                    .software-product-landing-view-top-block-col {
+                        @extend .body-1;
+                        flex: 0.8;
+                        display: flex;
+                        justify-content: space-between;
+                        flex-direction: column;
+                        .description {
+                            overflow: hidden;
+                            padding-right: 20px;
+                        }
+                        .attachment-details {
+                            padding-bottom: 10px;
+                        }
+                        .attachment-details-count {
+                            color: $light-blue;
+                        }
+                    }
+                }
+
+                .software-product-landing-view-top-block-col-upl {
+                    @extend .flex;
+                    height: 215px;
+                    text-align: center;
+                    flex-direction: column;
+                    justify-content: center;
+                    border: 2px dashed $light-gray;
+                    margin-bottom: 20px;
+                    @extend .body-1;
+                    align-items: center;
+                    .upload-btn {
+                        padding: 15px 55px;
+                    }
+                    .drag-text {
+                        color: $blue;
+                        @extend .body-1-semibold;
+                    }
+                    .or-text {
+                        margin-top: 10px;
+                        margin-bottom: 10px;
+                        color: $light-gray;
+                    }
+                    .upload {
+                        width: 50%;
+                        border: 0px !important;
+                    }
+                    .vnfRepo {
+                        width: 50%;
+                        cursor: pointer;
+                        .searchRepo-text {
+                            color: $blue;
+                            @extend .body-1-semibold;
+                            width: 72px;
+                            line-height: 24px;
+                            margin-left: auto;
+                            margin-right: auto;
+                        }
+                        .svg-icon-wrapper {
+                            .svg-icon.__search {
+                                width: 34px;
+                                height: 34px;
+                                margin-top: 10px;
+                            }
+                            &.__positive {
+                                fill: $blue;
+                                color: $blue;
+                            }
+                        }
+                    }
+                    .verticalLine {
+                        height: 90%;
+                        border-left: 1px solid $light-gray;
+                    }
+                }
+                .showVnf {
+                    flex-direction: row;
+                }
             }
-          }
-          .verticalLine {
-            height: 90%;
-            border-left: 1px solid $light-gray;
-          }
-        }
-        .showVnf {
-          flex-direction: row;
         }
-      }
     }
-  }
 }
 
 .vsp-details-page {
-  .grid-section-general {
-    padding-bottom: 30px;
-  }
-  .vsp-general-tab {
-    .validation-form-content {
-      margin: 0;
+    .grid-section-general {
+        padding-bottom: 30px;
     }
-    .validation-buttons {
-      margin: 43px 0;
-      padding: 0 52px;
-    }
-    .validation-form-content {
-      .vsp-general-tab-inline-section {
-        display: flex;
-
-        .vsp-general-tab-sub-section:not(:last-of-type) {
-          margin-right: 40px;
+    .vsp-general-tab {
+        .validation-form-content {
+            margin: 0;
         }
-        .field-section {
-          width: 440px;
+        .validation-buttons {
+            margin: 43px 0;
+            padding: 0 52px;
         }
-        .form-group textarea {
-          height: 192px;
-        }
-        select optgroup[label] {
-          color: $dark-blue;
+        .validation-form-content {
+            .vsp-general-tab-inline-section {
+                display: flex;
+
+                .vsp-general-tab-sub-section:not(:last-of-type) {
+                    margin-right: 40px;
+                }
+                .field-section {
+                    width: 440px;
+                }
+                .form-group textarea {
+                    height: 192px;
+                }
+                select optgroup[label] {
+                    color: $dark-blue;
+                }
+                option {
+                    color: $dark-gray;
+                }
+                .Select,
+                .input-options {
+                    width: 440px;
+                }
+            }
         }
-        option {
-          color: $dark-gray;
+        .validation-buttons {
+            position: fixed;
+            display: block;
+            bottom: 0;
+            width: 66%;
         }
-        .Select, .input-options {
-          width: 440px;
+        .validation-input-wrapper {
+            select.form-control {
+                width: 100%;
+            }
         }
-      }
-    }
-    .validation-buttons {
-      position: fixed;
-      display: block;
-      bottom: 0;
-      width: 66%;
-    }
-    .validation-input-wrapper {
-      select.form-control {
-        width: 100%;
-      }
     }
-  }
 }
index 3f2a2f9..9ec074f 100644 (file)
@@ -1,60 +1,60 @@
 .edit-process-modal {
-  height: 100%;
-  .vsp-processes-editor {
-    padding-left: 0;
-    padding-right: 0;
-    .editor-title {
-      @extend .heading-2;
-      color: $dark-gray;
-      padding-bottom: 50px;
-    }
-    .file-upload-box {
-      @extend .body-1;
-      display: flex;
-      text-align: center;
-      flex-direction: column;
-      justify-content: center;
-      border: 2px dashed $light-gray;
-      padding-top: 20px;
-      padding-bottom: 20px;
+    height: 100%;
+    .vsp-processes-editor {
+        padding-left: 0;
+        padding-right: 0;
+        .editor-title {
+            @extend .heading-2;
+            color: $dark-gray;
+            padding-bottom: 50px;
+        }
+        .file-upload-box {
+            @extend .body-1;
+            display: flex;
+            text-align: center;
+            flex-direction: column;
+            justify-content: center;
+            border: 2px dashed $light-gray;
+            padding-top: 20px;
+            padding-bottom: 20px;
 
-      .process-type {
-        width: 100%;
-      }
-    }
-    .vsp-processes-editor-data {
-      .validation-input-wrapper {
-        .form-group.vsp-process-description > textarea {
-            height: 113px;
+            .process-type {
+                width: 100%;
+            }
+        }
+        .vsp-processes-editor-data {
+            .validation-input-wrapper {
+                .form-group.vsp-process-description > textarea {
+                    height: 113px;
+                }
+            }
+            .process-type {
+                width: 100%;
+            }
+            .process-editor-file-box {
+                width: 380px;
+            }
         }
-      }
-      .process-type {
-        width: 100%;
-      }
-      .process-editor-file-box {
-        width: 380px;
-      }
     }
-  }
 }
 
 .software-product-landing-view-right-side.vsp-processes-page {
-       overflow-y: initial;
-  .processes-list {
-    @extend .flex-column;
-  }
-  .list-editor-view {
-    .list-editor-view-list {
-      .list-editor-item-view {
-        .list-editor-item-view-content {
-          .list-editor-item-view-field {
-            .artifact-name {
-              @extend .body-1;
-              color: $light-green;
+    overflow-y: initial;
+    .processes-list {
+        @extend .flex-column;
+    }
+    .list-editor-view {
+        .list-editor-view-list {
+            .list-editor-item-view {
+                .list-editor-item-view-content {
+                    .list-editor-item-view-field {
+                        .artifact-name {
+                            @extend .body-1;
+                            color: $light-green;
+                        }
+                    }
+                }
             }
-          }
         }
-      }
     }
-  }
 }
index 440b242..00f3ae4 100644 (file)
@@ -1,35 +1,35 @@
 .vsp-components-load-balancing {
-  .svg-icon-wrapper {
-       position: relative;
-       top: -4px;
-  }
+    .svg-icon-wrapper {
+        position: relative;
+        top: -4px;
+    }
 
-  .halb-data {
-       .question {
-         padding-top: 10px;
-         &:first-child {
-               padding-top: 0;
-         }
-       }
-       .title {
-         @extend .body-1-semibold;
-         margin-bottom: 8px;
-         cursor: pointer;
-         .svg-icon {
-               @include transition(transform 0.3s);
-               margin-right: 5px;
-               position: relative;
-               top: 4px;
-         }
-       }
-       .add-padding {
-         padding-bottom: 20px;
-       }
-       .new-line {
-         margin-left: 16px;
-       }
-       textarea.form-control {
-         height: 90px;
-       }
-  }
+    .halb-data {
+        .question {
+            padding-top: 10px;
+            &:first-child {
+                padding-top: 0;
+            }
+        }
+        .title {
+            @extend .body-1-semibold;
+            margin-bottom: 8px;
+            cursor: pointer;
+            .svg-icon {
+                @include transition(transform 0.3s);
+                margin-right: 5px;
+                position: relative;
+                top: 4px;
+            }
+        }
+        .add-padding {
+            padding-bottom: 20px;
+        }
+        .new-line {
+            margin-left: 16px;
+        }
+        textarea.form-control {
+            height: 90px;
+        }
+    }
 }
index 23f41c8..1c3ed2a 100644 (file)
@@ -1,32 +1,32 @@
 .heat-validation-stand-alone {
-  .upload-screen {
-    margin-top: 100px;
-    .title {
-      text-align: center;
-      margin-bottom: 50px;
+    .upload-screen {
+        margin-top: 100px;
+        .title {
+            text-align: center;
+            margin-bottom: 50px;
+        }
     }
-  }
 
-  .attachments-screen {
-    .back-button {
-      z-index: 1000;
-      position: absolute;
-      top: 20px;
-      right: 20px;
-      width: 200px;
-    }
-    .software-product-attachments {
-      display: block;
-      .software-product-view {
-        display: block;
-        .software-product-landing-view-right-side {
-          display: block;
-          .software-product-attachments-main {
-            display: flex;
-            height: 100vh;
-          }
+    .attachments-screen {
+        .back-button {
+            z-index: 1000;
+            position: absolute;
+            top: 20px;
+            right: 20px;
+            width: 200px;
+        }
+        .software-product-attachments {
+            display: block;
+            .software-product-view {
+                display: block;
+                .software-product-landing-view-right-side {
+                    display: block;
+                    .software-product-attachments-main {
+                        display: flex;
+                        height: 100vh;
+                    }
+                }
+            }
         }
-      }
     }
-  }
 }
index 5651c89..c292301 100644 (file)
 .dox-ui-punch-out {
-  background-color: $content-background-color;
+    background-color: $content-background-color;
 }
 
 .dox-ui-punch-out.dox-ui-punch-out-full-page {
-  position: absolute;
-  top: 0;
-  bottom: 0;
-  left: 0;
-  right: 0;
-  overflow-y: auto;
+    position: absolute;
+    top: 0;
+    bottom: 0;
+    left: 0;
+    right: 0;
+    overflow-y: auto;
 }
 
 @mixin version-page-box-shadow() {
-       box-shadow: 0 1px 4px 0 rgba(24, 24, 24, 0.06);
+    box-shadow: 0 1px 4px 0 rgba(24, 24, 24, 0.06);
 }
 
-@mixin version-page-sub-title(){
-       color: $text-black;
-       text-transform: uppercase;
-       background-color: $white;
-       border-bottom: 1px solid $light-gray;
-       padding: 12px 0 10px 23px;
+@mixin version-page-sub-title() {
+    color: $text-black;
+    text-transform: uppercase;
+    background-color: $white;
+    border-bottom: 1px solid $light-gray;
+    padding: 12px 0 10px 23px;
 }
 
 .versions-tree-modal {
-       .modal-dialog {
-               width: 800px;
-       }
-
-       .tree-view {
-               display: flex;
-    align-items: center;
-       }
+    .tree-view {
+        display: flex;
+        align-items: center;
+    }
 }
 
 .versions-page-view {
-       height: 100%;
-       background-color: $background-gray;
-       overflow: auto;
-       padding: 35px 50px 20px 50px;
-
-       .svg-icon-wrapper {
-               justify-content: flex-start;
-       }
-       .version-page-header {
-               display: flex;
-               justify-content: space-between;
-               .versions-page-title {
-                       @extend .heading-1;
-                       text-transform: uppercase;
-                       margin-bottom: 29px;
-                       color: $blue;
-                       display: flex;
-                       .archived-title {
-                               @extend .body-3;
-                               color: $white;
-                               background-color: $dark-purple;
-                               margin-left: 20px;
-                               border-radius: 3px;
-                               padding: 1px 10px;
-                               align-self: center;
-                               text-transform: none;
-                       }
-               }
-               .deprecate-btn-wrapper {
-                       display: flex;
-                       justify-content: flex-end;
-                       margin-bottom: 10px;
-                       align-self: center;
-                       .svg-icon-wrapper {
-                               &:hover {
-                                       fill: $light-blue;
-                               }
-                               .svg-icon {
-                                       width: 24px;
-                                       height: 24px;
-                               }
-                       }
-               }
-       }               
-       .versions-page-permissions-view-wrapper {
-               @extend .body-1-semibold;
-               @include version-page-box-shadow();
-
-               .permissions-view-wrapper-title {
-                       @include version-page-sub-title();
-               }
-
-               .svg-icon-wrapper.user-view {
-                       fill: transparent;
-                       stroke: $blue;
-                       .svg-icon {
-                               height: 18px;
-                               width: 16px;
-                               margin: 0 7px;
-                       }
-                       &.current-user {
-                               .svg-icon {
-                                       background-color: $blue;
-                                       stroke: $white;
-                                       padding-top: 5px;
-                                       padding-bottom: 3px;
-                                       height: 29px;
-                                       width: 29px;
-                                       border-radius: 20px;
-                                       border: 1px solid $blue;
-                                       box-shadow: inset 0px 0px 0px 2px $white;
-                                       margin: 0;
-                               }
-                               .svg-icon-label {
-                                       margin-left: 7px;
-                               }
-                       }
-                       .svg-icon-label {
-                               @extend .body-2;
-                               color: $dark-gray;
-                               margin-left: 6px;
-                       }
-               }
-
-               .permissions-view-content {
-                       padding: 20px 40px 20px 25px;
-                       background-color: $white;
-
-                       height: 120px;
-                       display: flex;
-               }
-
-               .permissions-view {
-                       display: flex;
-                       flex: 1;
-                       flex-direction: column;
-                       justify-content: space-around;
-
-                       .permissions-view-title {
-                               text-transform: uppercase;
-                               color: $dark-gray;
-                       }
-
-                       .contributors-view, .owner-view {
-                               display: flex;
-                               height: 16px;
-                               @extend .body-1-semibold;
-
-                               .permissions-view-title {
-                                       width: 130px;
-                                       line-height: 16px;
-                               }
-
-                               .extra-contributors {
-                                       border-radius: 30px;
-                                       background-color: $gray;
-                                       width: 26px;
-                                       height: 26px;
-                                       padding-right: 2px;
-                                       display: flex;
-                                       align-items: center;
-                                       justify-content: center;
-                                       color: $white;
-                                       cursor: default;
-                                       &:hover {
-                                               background-color: $dark-gray;
-                                       }
-                               }
-
-                               .user-view {
-                                       margin-right: 38px;
-                               }
-
-                               .manage-permissions {
-                                       color: $blue;
-                                       margin-left: auto;
-                                       cursor: pointer;
-
-                                       &:hover {
-                                               color: $dark-blue;
-                                       }
-                               }
-                       }
-               }
-       }
-
-       .versions-page-list-and-tree {
-               display: flex;
-               margin-top: 20px;
-
-               .version-tree-wrapper {
-                       display: flex;
-                       flex-direction: column;
-                       margin-right:10px;
-                       transition: all 1s ease;
-                       @include version-page-box-shadow();
-
-                       .version-tree-title-container {
-                               display: flex;
-                               align-items: center;
-                               height: 40px;
-                               @include version-page-sub-title();
-                               padding-right: 10px;
-
-                               .version-tree-full-screen {
-                                       margin-left: auto;
-                               }
-                       }
-
-                       .tree-view {
-                               background-color: $white;
-                               flex: 1;
-
-                               .node:not(.selectedNode):hover {
-                                       .outer-circle, .inner-circle {
-                                               transform: scale(1.1);
-                                       }
-                               }
-                       }
-               }
-       }
-
-       .version-list {
-               flex: 1;
-               @extend .body-1-semibold;
-               color: $text-black;
-               display: flex;
-               flex-direction: column;
-
-               .version-list-items {
-                       flex: 1;
-                       display: flex;
-                       flex-direction: column;
-
-                       .version-item-row {
-                               border-bottom: 1px solid $tlv-light-gray;
-
-                               &:last-child {
-                                       border-bottom: none;
-                               }
-                       }
-               }
-
-               .version-item-row {
-                       $row-hover-color: lighten($blue, 54%);
-                       $row-active-color: lighten($blue, 51%);
-
-                       display: flex;
-                       align-items: center;
-                       padding: 15px 30px;
-                       @include version-page-box-shadow();
-                       background-color: $white;
-                       height: 70px;
-
-                       &:hover {
-                               background-color: $row-hover-color;
-                       }
-
-                       &.selected {
-                               box-shadow: 0 1px 4px 0 rgba(24, 24, 24, 0.06), inset 5px 0 0 0 $blue;
-                               background-color: $row-active-color;
-
-                               &:hover {
-                                       box-shadow: 0 1px 4px 0 rgba(24, 24, 24, 0.06), inset 5px 0 0 0 lighten($blue, 35%);
-                               }
-                       }
-
-                       &.header-row {
-                               height: 40px;
-
-                               @extend .body-1-semibold;
-                               @include version-page-sub-title();
-                               padding: 15px 27px;
-
-                               &:hover {
-                                       background-color: $white;
-                                       pointer-events: none;
-                                       &:active {
-                                               background-color: $white;
-                                               @include version-page-box-shadow();
-                                       }
-                               }
-                               .header-field.actions {
-                                       margin-right: 57px;
-                               }
-                       }
-
-                       .version-item-field {
-                               flex: 1;
-                               display: flex;
-                               margin-right: 10px;
-
-                               &.item-version, &.item-status {
-                                       flex: 0 1 10%;
-                                       @extend .body-1-semibold;
-                                       color: $text-black;
-                               }
-
-                               &.item-description, &.item-last-edited {
-                                       @extend .body-1;
-                                       color: $dark-gray;
-                               }
-
-                               &.item-description, &.header-description {
-                                       flex: 2 1 0;
-                               }
-
-                               &.item-description > .description-text {
-                                       margin-right: 10px;
-                                       @include ellipsis($max-width: 300px);
-                                       width: initial;
-                               }
-
-                               &.item-actions {
-                                       display: flex;
-                                       flex: 1 1 3%;
-                                       justify-content: space-between;
-                               }
-
-                               &.item-select, &.item-create {
-                                       @extend .body-1;
-                                       flex: 0 1 auto;
-                                       margin-right: 0;
-
-                                       .svg-icon-wrapper {
-                                               fill: $blue;
-                                               color: $blue;
-
-                                               &[disabled] {
-                                                       cursor: default;
-                                               }
-
-                                               .svg-icon {
-                                                       width: 16px;
-                                                       height: 16px;
-                                               }
-
-                                               &:hover:not([disabled]) {
-                                                       fill: $dark-blue;
-                                                       color: $dark-blue;
-                                               }
-                                       }
-                               }
-
-                       }
-
-                       /* To keep ellipsis hider's background the same color as row background */
-                       &:not(.selected):hover .item-description > .description-text:after {
-                               background: $row-hover-color;
-                       }
-
-                       &:hover:active .item-description > .description-text:after {
-                               background: $row-active-color;
-                       }
-
-               }
-
-       }
-
-       &.clickable {
-               cursor: pointer;
-       }
+    height: 100%;
+    background-color: $background-gray;
+    overflow: auto;
+    padding: 35px 50px 20px 50px;
+
+    .svg-icon-wrapper {
+        justify-content: flex-start;
+    }
+    .version-page-header {
+        display: flex;
+        justify-content: space-between;
+        .versions-page-title {
+            @extend .heading-1;
+            text-transform: uppercase;
+            margin-bottom: 29px;
+            color: $blue;
+            display: flex;
+            .archived-title {
+                @extend .body-3;
+                color: $white;
+                background-color: $dark-purple;
+                margin-left: 20px;
+                border-radius: 3px;
+                padding: 1px 10px;
+                align-self: center;
+                text-transform: none;
+            }
+        }
+        .deprecate-btn-wrapper {
+            display: flex;
+            justify-content: flex-end;
+            margin-bottom: 10px;
+            align-self: center;
+            .svg-icon-wrapper {
+                &:hover {
+                    fill: $light-blue;
+                }
+                .svg-icon {
+                    width: 24px;
+                    height: 24px;
+                }
+            }
+        }
+    }
+    .versions-page-permissions-view-wrapper {
+        @extend .body-1-semibold;
+        @include version-page-box-shadow();
+
+        .permissions-view-wrapper-title {
+            @include version-page-sub-title();
+        }
+
+        .svg-icon-wrapper.user-view {
+            fill: transparent;
+            stroke: $blue;
+            .svg-icon {
+                height: 18px;
+                width: 16px;
+                margin: 0 7px;
+            }
+            &.current-user {
+                .svg-icon {
+                    background-color: $blue;
+                    stroke: $white;
+                    padding-top: 5px;
+                    padding-bottom: 3px;
+                    height: 29px;
+                    width: 29px;
+                    border-radius: 20px;
+                    border: 1px solid $blue;
+                    box-shadow: inset 0px 0px 0px 2px $white;
+                    margin: 0;
+                }
+                .svg-icon-label {
+                    margin-left: 7px;
+                }
+            }
+            .svg-icon-label {
+                @extend .body-2;
+                color: $dark-gray;
+                margin-left: 6px;
+            }
+        }
+
+        .permissions-view-content {
+            padding: 20px 40px 20px 25px;
+            background-color: $white;
+
+            height: 120px;
+            display: flex;
+        }
+
+        .permissions-view {
+            display: flex;
+            flex: 1;
+            flex-direction: column;
+            justify-content: space-around;
+
+            .permissions-view-title {
+                text-transform: uppercase;
+                color: $dark-gray;
+            }
+
+            .contributors-view,
+            .owner-view {
+                display: flex;
+                height: 16px;
+                @extend .body-1-semibold;
+
+                .permissions-view-title {
+                    width: 130px;
+                    line-height: 16px;
+                }
+
+                .extra-contributors {
+                    border-radius: 30px;
+                    background-color: $gray;
+                    width: 26px;
+                    height: 26px;
+                    padding-right: 2px;
+                    display: flex;
+                    align-items: center;
+                    justify-content: center;
+                    color: $white;
+                    cursor: default;
+                    &:hover {
+                        background-color: $dark-gray;
+                    }
+                }
+
+                .user-view {
+                    margin-right: 38px;
+                }
+
+                .manage-permissions {
+                    color: $blue;
+                    margin-left: auto;
+                    cursor: pointer;
+
+                    &:hover {
+                        color: $dark-blue;
+                    }
+                }
+            }
+        }
+    }
+
+    .versions-page-list-and-tree {
+        display: flex;
+        margin-top: 20px;
+
+        .version-tree-wrapper {
+            display: flex;
+            flex-direction: column;
+            margin-right: 10px;
+            transition: all 1s ease;
+            @include version-page-box-shadow();
+
+            .version-tree-title-container {
+                display: flex;
+                align-items: center;
+                height: 40px;
+                @include version-page-sub-title();
+                padding-right: 10px;
+
+                .version-tree-full-screen {
+                    margin-left: auto;
+                }
+            }
+
+            .tree-view {
+                background-color: $white;
+                flex: 1;
+
+                .node:not(.selectedNode):hover {
+                    .outer-circle,
+                    .inner-circle {
+                        transform: scale(1.1);
+                    }
+                }
+            }
+        }
+    }
+
+    .version-list {
+        flex: 1;
+        @extend .body-1-semibold;
+        color: $text-black;
+        display: flex;
+        flex-direction: column;
+
+        .version-list-items {
+            flex: 1;
+            display: flex;
+            flex-direction: column;
+
+            .version-item-row {
+                border-bottom: 1px solid $tlv-light-gray;
+
+                &:last-child {
+                    border-bottom: none;
+                }
+            }
+        }
+
+        .version-item-row {
+            $row-hover-color: lighten($blue, 54%);
+            $row-active-color: lighten($blue, 51%);
+
+            display: flex;
+            align-items: center;
+            padding: 15px 30px;
+            @include version-page-box-shadow();
+            background-color: $white;
+            height: 70px;
+
+            &:hover {
+                background-color: $row-hover-color;
+            }
+
+            &.selected {
+                box-shadow: 0 1px 4px 0 rgba(24, 24, 24, 0.06),
+                    inset 5px 0 0 0 $blue;
+                background-color: $row-active-color;
+
+                &:hover {
+                    box-shadow: 0 1px 4px 0 rgba(24, 24, 24, 0.06),
+                        inset 5px 0 0 0 lighten($blue, 35%);
+                }
+            }
+
+            &.header-row {
+                height: 40px;
+
+                @extend .body-1-semibold;
+                @include version-page-sub-title();
+                padding: 15px 27px;
+
+                &:hover {
+                    background-color: $white;
+                    pointer-events: none;
+                    &:active {
+                        background-color: $white;
+                        @include version-page-box-shadow();
+                    }
+                }
+                .header-field.actions {
+                    margin-right: 57px;
+                }
+            }
+
+            .version-item-field {
+                flex: 1;
+                display: flex;
+                margin-right: 10px;
+
+                &.item-version,
+                &.item-status {
+                    flex: 0 1 10%;
+                    @extend .body-1-semibold;
+                    color: $text-black;
+                }
+
+                &.item-description,
+                &.item-last-edited {
+                    @extend .body-1;
+                    color: $dark-gray;
+                }
+
+                &.item-description,
+                &.header-description {
+                    flex: 2 1 0;
+                }
+
+                &.item-description > .description-text {
+                    margin-right: 10px;
+                    @include ellipsis($max-width: 300px);
+                    width: initial;
+                }
+
+                &.item-actions {
+                    display: flex;
+                    flex: 1 1 3%;
+                    justify-content: space-between;
+                }
+
+                &.item-select,
+                &.item-create {
+                    @extend .body-1;
+                    flex: 0 1 auto;
+                    margin-right: 0;
+
+                    .svg-icon-wrapper {
+                        fill: $blue;
+                        color: $blue;
+
+                        &[disabled] {
+                            cursor: default;
+                        }
+
+                        .svg-icon {
+                            width: 16px;
+                            height: 16px;
+                        }
+
+                        &:hover:not([disabled]) {
+                            fill: $dark-blue;
+                            color: $dark-blue;
+                        }
+                    }
+                }
+            }
+
+            /* To keep ellipsis hider's background the same color as row background */
+            &:not(.selected):hover .item-description > .description-text:after {
+                background: $row-hover-color;
+            }
+
+            &:hover:active .item-description > .description-text:after {
+                background: $row-active-color;
+            }
+        }
+    }
+
+    &.clickable {
+        cursor: pointer;
+    }
 }
diff --git a/openecomp-ui/resources/scss/modules/_vspComponentCompute.scss b/openecomp-ui/resources/scss/modules/_vspComponentCompute.scss
deleted file mode 100644 (file)
index 9f88e94..0000000
+++ /dev/null
@@ -1,6 +0,0 @@
-
-.compute-flavor-editor-modal-edit {
-  .modal-lg {
-    width: 1182px;
-  }
-}
\ No newline at end of file
index 14bad18..867749d 100644 (file)
@@ -1,24 +1,22 @@
-
 .vsp-component-monitoring {
-  .dropzone {
-    &:not(:last-child) {
-      padding-bottom: 50px;
-    }
+    .dropzone {
+        &:not(:last-child) {
+            padding-bottom: 50px;
+        }
 
-    .monitoring-file {
-      display: flex;
-      .filename {
-        opacity: 1;
-        width: auto;
-        border-right-style: none;
-      }
-      .delete {
-        display: flex;
-        width: 30px;
-        justify-content: center;
-        align-items: center;
-      }
+        .monitoring-file {
+            display: flex;
+            .filename {
+                opacity: 1;
+                width: auto;
+                border-right-style: none;
+            }
+            .delete {
+                display: flex;
+                width: 30px;
+                justify-content: center;
+                align-items: center;
+            }
+        }
     }
-  }
-
 }
index 2a99263..8a7575f 100644 (file)
@@ -1,48 +1,47 @@
-
 .vsp-component-questionnaire-view {
-  input[type='checkbox'] {
-    &:before {
-      border: 1px solid $dark-gray;
-      cursor: pointer;
-    }
-    &:checked:before {
-      border: 1px solid $blue;
-    }
-  }
-  .component-questionnaire-validation-form {
-
-    .section-field {
-      textarea {
-        height: 80px;
-      }
+    input[type='checkbox'] {
+        &:before {
+            border: 1px solid $dark-gray;
+            cursor: pointer;
+        }
+        &:checked:before {
+            border: 1px solid $blue;
+        }
     }
-
-    .rows-section, .grid-items {
-      .row-flex-components {
-        display: flex;
-      }
-
-      .vertical-flex {
-        flex-direction: column;
-        .control-label {
-          @extend .body-2-semibold;
+    .component-questionnaire-validation-form {
+        .section-field {
+            textarea {
+                height: 80px;
+            }
         }
-        .radio-options-content-row {
-          display: flex;
-          margin-top: -4px;
-          .validation-radio-wrapper {
-            margin-right: 20px;
 
-            & > .form-group {
-              display: flex;
+        .rows-section,
+        .grid-items {
+            .row-flex-components {
+                display: flex;
             }
-            .form-group .sdc-radio {
-              width: auto;
-              margin-right: 0;
+
+            .vertical-flex {
+                flex-direction: column;
+                .control-label {
+                    @extend .body-2-semibold;
+                }
+                .radio-options-content-row {
+                    display: flex;
+                    margin-top: -4px;
+                    .validation-radio-wrapper {
+                        margin-right: 20px;
+
+                        & > .form-group {
+                            display: flex;
+                        }
+                        .form-group .sdc-radio {
+                            width: auto;
+                            margin-right: 0;
+                        }
+                    }
+                }
             }
-          }
         }
-      }
     }
-  }
 }
index bd216c7..e50ad2d 100644 (file)
 @mixin modules-and-artifacts-list-items {
-       background-color: $tlv-gray;
-       margin-bottom: 12px;
-       border: 1px solid $light-gray;
-       border-left-width: 18px;
-       border-left-color: $blue;
-       display: flex;
-       flex-direction: column;
-       justify-content: space-between;
-  padding: 10px 20px 0 20px;
+    background-color: $tlv-gray;
+    margin-bottom: 12px;
+    border: 1px solid $light-gray;
+    border-left-width: 18px;
+    border-left-color: $blue;
+    display: flex;
+    flex-direction: column;
+    justify-content: space-between;
+    padding: 10px 20px 0 20px;
 }
 
 .heat-setup-view {
-       margin-top: 20px;
-       display: flex;
-       justify-content: space-between;
-  padding: 0 60px 0 36px;
-
-       .heat-setup-view-modules-and-artifacts {
-               margin-right: 20px;
-               flex: 1;
-               .heat-setup-module-icon {
-                 margin: 0 6px 0 0;
-                 position: relative;
-                 top: -2px;
-               }
-
-               .modules-list-wrapper {
-                       &.modules-list-wrapper-divider {
-                               border-bottom: 1px solid $tlv-light-gray;
-                       }
-
-                       ul {
-                               .undefined-dragging {
-                                       opacity: 0.5;
-                               }
-                               .modules-list-item-selectors {
-                                       display: flex;
-                                       justify-content: space-between;
-                                       flex-wrap: wrap;
-                                       padding-bottom: 3px;
-                                       .Select-value-label {
-                                               @include ellipsis(85%);
-                                       }
-
-                                       .validation-input-wrapper {
-                                               flex-basis: 48%;
-                                       }
-
-                                       .control-label {
-                                               margin-bottom: 4px;
-                                       }
-
-                                       .form-group {
-                                               margin-bottom: 12px;
-                                       }
-                               }
-                       }
-
-                       .modules-list-item-controllers {
-                               display: flex;
-                               justify-content: space-between;
-                               margin-bottom: 7px;
-
-                               .btn {
-                                       min-width: 0;
-                               }
-
-                               .svg-icon {
-                                       &.__trashO {
-                                               fill: $dark-gray;
-                                               &:hover {
-                                                       fill: $black;
-                                               }
-                                       }
-                               }
-
-                               .module-title-by-type {
-                                       @extend .heading-5-semibold;
-                                       margin-right: 3px;
-                               }
-                               .modules-list-item-filename {
-                                       display: flex;
-                                       align-items: center;
-
-                                       .svg-icon {
-                                               &.__pencil {
-                                                       margin-left: 3px;
-                                                       opacity: 0;
-                                               }
-                                       }
-
-
-
-                                       .filename-text {
-                                               @extend .heading-5-semibold;
-
-                                       }
-
-                                       .text-and-icon {
-                                               padding: 5px;
-                                               border: 1px solid transparent;
-                                               display: flex;
-                                               align-items: center;
-                                               height: 35px;
-                                               &.in-edit {
-                                                       padding: 0;
-                                                       .name-edit {
-                                                               padding: 4px;
-                                                               @extend .heading-5-semibold;
-                                                               height: 100%;
-                                                               border: 1px solid $light-gray;
-                                                               width: 400px;
-                                                       }
-                                               }
-                                       }
-
-                                       input[disabled] {
-                                               border: none;
-                                       }
-                                       &:hover {
-                                               .text-and-icon {
-                                                       border-color: $light-gray;
-                                                       background-color: $white;
-
-                                                       &.in-edit {
-                                                               border-color: transparent;
-                                                       }
-                                               }
-                                               .svg-icon {
-                                                       &.__pencil {
-                                                               margin-left: 10px;
-                                                               opacity: 1;
-                                                               .svg-icon {
-                                                                       stroke: $dark-gray;
-                                                                       &:hover {
-                                                                               stroke: $black;
-                                                                       }
-                                                               }
-                                                       }
-                                               }
-                                       }
-                               }
-                       }
-
-                       .modules-list-item {
-                               @include modules-and-artifacts-list-items;
-                               position: relative;
-                               .Select-option {
-                                       @extend .body-1;
-                                       &.is-selected {
-                                               @extend .body-1-semibold;
-                                               background-color: $white;
-                                       }
-                                       &.is-focused {
-                                               background-color: $blue;
-                                               color: $white;
-                                       }
-                               }
-                               .add-or-delete-volumes {
-                                       margin-right: 8px;
-                                       margin-bottom: 11px;
-                               }
-                               &:before {
-                                       content: "\00B7\00B7\00B7\00B7\00B7\00B7";
-                                       color: $white;
-                                       position: absolute;
-                                       left: -27px;
-                                       top: 56%;
-                                       font-size: 27px;
-                                       width: 75px;
-                                       @include transform-rotate(90);
-                                       height: 0;
-                                       letter-spacing: 1px;
-                               }
-                       }
-               }
-
-               .artifact-files {
-                       @include modules-and-artifacts-list-items;
-                       &.with-list-items {
-                               margin-top: 10px;
-                       }
-
-                       &.nested {
-                               .nested-list {
-                                       display: flex;
-                                       flex-wrap: wrap;
-                                       margin-bottom: 18px;
-                               }
-
-                               .nested-list-item {
-                                       border-radius: 15px;
-                                       background-color: $tlv-light-gray;
-                                       padding: 4px 15px;
-                                       margin: 2px 10px 2px 0;
-                               }
-                       }
-
-                       .artifact-files-header {
-                               @extend .heading-5-semibold;
-                               display: flex;
-                               margin-bottom: 10px;
-                               justify-content: space-between;
-                               .image-icon.artifacts {
-                                       margin-right: 10px;
-                               }
-
-                               span {
-                                       display: flex;
-                               }
-
-                       }
-               }
-       }
-
-       .modules-list-header {
-               height: 30px;
-               display: flex;
-               flex-direction: row;
-               flex-wrap: nowrap;
-               justify-content: flex-end;
-               align-items: baseline;
-       }
-
-       .unassigned-files {
-               border: 1px solid $light-gray;
-               background-color: $white;
-               height: 250px;
-               width: 250px;
-
-               // Will work in chrome from chrome 56
-               position: sticky;
-               top: 10px;
-
-               .unassigned-files-title {
-                       @extend .heading-5-semibold;
-                       background-color: $tlv-gray;
-                       padding: 11px 0 9px 15px;
-               }
-
-               .unassigned-files-list {
-                       height: 207px;
-       overflow-y: auto;
-       padding-bottom: 5px;
-
-                       .go-to-validation-button-wrapper {
-                               display: flex;
-                               flex-direction: column;
-                               justify-content: center;
-                               align-items: center;
-                               margin-top: 70px;
-                               .all-files-assigned {
-                                       @extend .heading-4;
-                                       margin-bottom: 10px;
-                               }
-                               .svg-icon-wrapper {
-                                       margin-bottom: 10px;
-                                       .svg-icon {
-                                               &.__angleRight {
-                                                       width: 10px;
-                                                       height: 10px;
-                                               }
-                                       }
-                               }
-                       }
-
-                       .unassigned-files-list-item {
-                               @include ellipsis();
-                               border-bottom: 1px solid $tlv-light-gray;
-                               padding: 0 5px 5px 15px;
-                               &:first-child {
-                                       padding-top: 5px;
-                               }
-                               &:last-child {
-                                       border-bottom: none;
-                                       padding-bottom: 0;
-                               }
-                       }
-               }
-       }
+    margin-top: 20px;
+    display: flex;
+    justify-content: space-between;
+    padding: 0 60px 0 36px;
+
+    .heat-setup-view-modules-and-artifacts {
+        margin-right: 20px;
+        flex: 1;
+        .heat-setup-module-icon {
+            margin: 0 6px 0 0;
+            position: relative;
+            top: -2px;
+        }
+
+        .modules-list-wrapper {
+            &.modules-list-wrapper-divider {
+                border-bottom: 1px solid $tlv-light-gray;
+            }
+
+            ul {
+                .undefined-dragging {
+                    opacity: 0.5;
+                }
+                .modules-list-item-selectors {
+                    display: flex;
+                    justify-content: space-between;
+                    flex-wrap: wrap;
+                    padding-bottom: 3px;
+                    .Select-value-label {
+                        @include ellipsis(85%);
+                    }
+
+                    .validation-input-wrapper {
+                        flex-basis: 48%;
+                    }
+
+                    .control-label {
+                        margin-bottom: 4px;
+                    }
+
+                    .form-group {
+                        margin-bottom: 12px;
+                    }
+                }
+            }
+
+            .modules-list-item-controllers {
+                display: flex;
+                justify-content: space-between;
+                margin-bottom: 7px;
+
+                .btn {
+                    min-width: 0;
+                }
+
+                .svg-icon {
+                    &.__trashO {
+                        fill: $dark-gray;
+                        &:hover {
+                            fill: $black;
+                        }
+                    }
+                }
+
+                .module-title-by-type {
+                    @extend .heading-5-semibold;
+                    margin-right: 3px;
+                }
+                .modules-list-item-filename {
+                    display: flex;
+                    align-items: center;
+
+                    .svg-icon {
+                        &.__pencil {
+                            margin-left: 3px;
+                            opacity: 0;
+                        }
+                    }
+
+                    .filename-text {
+                        @extend .heading-5-semibold;
+                    }
+
+                    .text-and-icon {
+                        padding: 5px;
+                        border: 1px solid transparent;
+                        display: flex;
+                        align-items: center;
+                        height: 35px;
+                        &.in-edit {
+                            padding: 0;
+                            .name-edit {
+                                padding: 4px;
+                                @extend .heading-5-semibold;
+                                height: 100%;
+                                border: 1px solid $light-gray;
+                                width: 400px;
+                            }
+                        }
+                    }
+
+                    input[disabled] {
+                        border: none;
+                    }
+                    &:hover {
+                        .text-and-icon {
+                            border-color: $light-gray;
+                            background-color: $white;
+
+                            &.in-edit {
+                                border-color: transparent;
+                            }
+                        }
+                        .svg-icon {
+                            &.__pencil {
+                                margin-left: 10px;
+                                opacity: 1;
+                                .svg-icon {
+                                    stroke: $dark-gray;
+                                    &:hover {
+                                        stroke: $black;
+                                    }
+                                }
+                            }
+                        }
+                    }
+                }
+            }
+
+            .modules-list-item {
+                @include modules-and-artifacts-list-items;
+                position: relative;
+                .Select-option {
+                    @extend .body-1;
+                    &.is-selected {
+                        @extend .body-1-semibold;
+                        background-color: $white;
+                    }
+                    &.is-focused {
+                        background-color: $blue;
+                        color: $white;
+                    }
+                }
+                .add-or-delete-volumes {
+                    margin-right: 8px;
+                    margin-bottom: 11px;
+                }
+                &:before {
+                    content: '\00B7\00B7\00B7\00B7\00B7\00B7';
+                    color: $white;
+                    position: absolute;
+                    left: -27px;
+                    top: 56%;
+                    font-size: 27px;
+                    width: 75px;
+                    @include transform-rotate(90);
+                    height: 0;
+                    letter-spacing: 1px;
+                }
+            }
+        }
+
+        .artifact-files {
+            @include modules-and-artifacts-list-items;
+            &.with-list-items {
+                margin-top: 10px;
+            }
+
+            &.nested {
+                .nested-list {
+                    display: flex;
+                    flex-wrap: wrap;
+                    margin-bottom: 18px;
+                }
+
+                .nested-list-item {
+                    border-radius: 15px;
+                    background-color: $tlv-light-gray;
+                    padding: 4px 15px;
+                    margin: 2px 10px 2px 0;
+                }
+            }
+
+            .artifact-files-header {
+                @extend .heading-5-semibold;
+                display: flex;
+                margin-bottom: 10px;
+                justify-content: space-between;
+                .image-icon.artifacts {
+                    margin-right: 10px;
+                }
+
+                span {
+                    display: flex;
+                }
+            }
+        }
+    }
+
+    .modules-list-header {
+        height: 30px;
+        display: flex;
+        flex-direction: row;
+        flex-wrap: nowrap;
+        justify-content: flex-end;
+        align-items: baseline;
+    }
+
+    .unassigned-files {
+        border: 1px solid $light-gray;
+        background-color: $white;
+        height: 250px;
+        width: 250px;
+
+        // Will work in chrome from chrome 56
+        position: sticky;
+        top: 10px;
+
+        .unassigned-files-title {
+            @extend .heading-5-semibold;
+            background-color: $tlv-gray;
+            padding: 11px 0 9px 15px;
+        }
+
+        .unassigned-files-list {
+            height: 207px;
+            overflow-y: auto;
+            padding-bottom: 5px;
+
+            .go-to-validation-button-wrapper {
+                display: flex;
+                flex-direction: column;
+                justify-content: center;
+                align-items: center;
+                margin-top: 70px;
+                .all-files-assigned {
+                    @extend .heading-4;
+                    margin-bottom: 10px;
+                }
+                .svg-icon-wrapper {
+                    margin-bottom: 10px;
+                    .svg-icon {
+                        &.__angleRight {
+                            width: 10px;
+                            height: 10px;
+                        }
+                    }
+                }
+            }
+
+            .unassigned-files-list-item {
+                @include ellipsis();
+                border-bottom: 1px solid $tlv-light-gray;
+                padding: 0 5px 5px 15px;
+                &:first-child {
+                    padding-top: 5px;
+                }
+                &:last-child {
+                    border-bottom: none;
+                    padding-bottom: 0;
+                }
+            }
+        }
+    }
 }
index 894b6e7..c7ce452 100644 (file)
@@ -1,27 +1,19 @@
-
 .workflows {
-  position: absolute;
-  bottom: 0;
-  right: 0;
-  left: 0;
-  top: 0;
-
-  background-color: $background-gray;
-  .list-editor-view-list .list-editor-item-view .list-editor-item-view-content .list-editor-item-view-field:last-child {
-    flex: 2 1;
-  }
+    position: absolute;
+    bottom: 0;
+    right: 0;
+    left: 0;
+    top: 0;
 
-  .list-editor-view {
-    padding: 30px 50px;
-  }
-
-}
+    background-color: $background-gray;
+    .list-editor-view-list
+        .list-editor-item-view
+        .list-editor-item-view-content
+        .list-editor-item-view-field:last-child {
+        flex: 2 1;
+    }
 
-.workflows-editor-modal {
-  .modal-body {
-    padding: 0;
-  }
-  .validation-form-content {
-    padding: 15px;
-  }
+    .list-editor-view {
+        padding: 30px 50px;
+    }
 }
index e3fc6a9..1b6459a 100644 (file)
@@ -13,7 +13,7 @@
         height: 34px;
         color: $blue;
         font-weight: bolder;
-        text-transform: uppercase;        
+        text-transform: uppercase;
     }
     .sdc-accordion {
         padding-left: 18px;
index 0a234a5..429d6cc 100644 (file)
@@ -1,33 +1,33 @@
 .catalog-header {
-  margin: 34px 0 29px 50px;
-  display: flex;
-  flex-direction: row;
-  .expandable-input-top {
-       margin-right: 60px;
-  }
-  &.workspace-header {
-       @extend .heading-1;
-       color: $blue;
-  }
-  .catalog-header-tabs {
-       display: flex;
-       flex-direction: row;
-       .tab-separator {
-         position: relative;
-         top: 8px;
-       }
-       .catalog-header-tab {
-         @extend .heading-1;
-         cursor: pointer;
-         padding: 0 15px 0 15px;
-         display: flex;
-         align-items: center;
-         &.active {
-               color: $blue;
-         }
-         &:first-child {
-               padding-left: 0;
-         }
-       }
-  }
+    margin: 34px 0 29px 50px;
+    display: flex;
+    flex-direction: row;
+    .expandable-input-top {
+        margin-right: 60px;
+    }
+    &.workspace-header {
+        @extend .heading-1;
+        color: $blue;
+    }
+    .catalog-header-tabs {
+        display: flex;
+        flex-direction: row;
+        .tab-separator {
+            position: relative;
+            top: 8px;
+        }
+        .catalog-header-tab {
+            @extend .heading-1;
+            cursor: pointer;
+            padding: 0 15px 0 15px;
+            display: flex;
+            align-items: center;
+            &.active {
+                color: $blue;
+            }
+            &:first-child {
+                padding-left: 0;
+            }
+        }
+    }
 }
index 11a739d..c632beb 100644 (file)
@@ -1,39 +1,37 @@
 .catalog-list {
-  height: 100%;
-  overflow: auto;
-  display: flex;
-  flex-direction: column;
-  padding: 0 10px 0 42px;
-  .catalog-title {
-       @extend .heading-1;
-       color: $blue;
-       margin:0 0 12px 18px;
-  }
+    height: 100%;
+    overflow: auto;
+    display: flex;
+    flex-direction: column;
+    padding: 0 10px 0 42px;
+    .catalog-title {
+        @extend .heading-1;
+        color: $blue;
+        margin: 0 0 12px 18px;
+    }
 
-  .catalog-items {
-       display: flex;
-       flex-wrap: wrap;
-       @import "tile";
-       @import "createItemTile";
-       @import "catalogTile";
-       @import "vendorTile";
-       @import "vlmTile";
-       &:after {
-         content: " ";
-         height: 250px;
-         display: block;
-         width: 100%;
-       }
-       .venodor-tile-btn {
-               border: 1px solid $light-gray;
-               color: $black;
-               line-height: 20px;
-               &:hover {
-                               background-color: $light-gray;
-               }
-       }
-  }
-
-  // Bottom spacing - cross browser solution
+    .catalog-items {
+        display: flex;
+        flex-wrap: wrap;
+        @import 'tile';
+        @import 'createItemTile';
+        @import 'catalogTile';
+        @import 'vendorTile';
+        &:after {
+            content: ' ';
+            height: 250px;
+            display: block;
+            width: 100%;
+        }
+        .venodor-tile-btn {
+            border: 1px solid $light-gray;
+            color: $black;
+            line-height: 20px;
+            &:hover {
+                background-color: $light-gray;
+            }
+        }
+    }
 
+    // Bottom spacing - cross browser solution
 }
index 612ec49..a2c7997 100644 (file)
 .catalog-tile {
-  &:hover {
-       box-shadow: 0.3px 5px 12.8px 1.3px rgba(24, 24, 25, 0.15);
-       border: 1px solid $light-gray;
-  }
-  .catalog-tile-top {
-       position: relative;
-       flex: 1;
-       display: flex;
-       padding-top: 29px;
-       padding-left: 10px;
-       align-items: flex-start;
-       flex-direction: column;
-       .catalog-tile-content {
-         margin-top: auto;
-         width: 180px;
-       }
-
-       .catalog-tile-type {
-         display: block;
-         margin-top: -25px;
-         font-size: $heading-font-5;
-         &.license-model-type {
-               color: $purple;
-         }
-         &.software-product-type {
-               color: $blue;
-         }
-       }
-       .catalog-tile-entity-details {
-         margin-top: 20px;
-               display: flex;
-               flex-direction: column;
-               justify-content: space-between;
-               flex: 0.8;
-         .catalog-tile-version-info {
-               display: flex;
-               justify-content: space-between;
-
-               .catalog-tile-item-version {
-                 @extend .body-2;
-                 line-height: 6px;
-               }
-         }
-         .catalog-tile-vendor-name {
-               @extend .body-3;
-               flex: 0.4;
-               align-self: baseline;
-               color: $gray;
-               line-height: 10px;
-               &:first-letter {
-      text-transform: capitalize;
+    &:hover {
+        box-shadow: 0.3px 5px 12.8px 1.3px rgba(24, 24, 25, 0.15);
+        border: 1px solid $light-gray;
     }
-               @include ellipsis(auto, inline-block, 178px);
-         }
-
-       }
-       .catalog-tile-item-name {
-         @extend .heading-5-semibold;
-         color: $black;
-         @include ellipsis(auto, inline-block, 175px);
-               line-height: inherit;
-               &:first-letter {
-                       text-transform: capitalize;
-               }
-       }
-  }
-  .catalog-tile-icon {
+    .catalog-tile-top {
+        position: relative;
+        flex: 1;
+        display: flex;
+        padding-top: 29px;
+        padding-left: 10px;
+        align-items: flex-start;
+        flex-direction: column;
+        .catalog-tile-content {
+            margin-top: auto;
+            width: 180px;
+        }
 
-       width: 58px;
-       height: 58px;
-       text-align: center;
-       justify-content: center;
-       display: flex;
+        .catalog-tile-type {
+            display: block;
+            margin-top: -25px;
+            font-size: $heading-font-5;
+            &.license-model-type {
+                color: $purple;
+            }
+            &.software-product-type {
+                color: $blue;
+            }
+        }
+        .catalog-tile-entity-details {
+            margin-top: 20px;
+            display: flex;
+            flex-direction: column;
+            justify-content: space-between;
+            flex: 0.8;
+            .catalog-tile-version-info {
+                display: flex;
+                justify-content: space-between;
 
-       .icon {
-         align-self: center;
-         height: 58px;
-         width: 58px;
-         margin-left: 122px;
-         background-repeat: no-repeat;
-         .svg-icon {
-               &.__vendor {
-                       fill: $dark-gray;
-                       &:hover {
-                         fill: $dark-gray;
-                       }
-                 margin-top: 22px;
-               }
-               &.__vsp {
-                       fill: $light-blue;
-                 }
-                 margin-top: 18px;
-                 margin-left: 3px;
-               &.__vlm {
-                 margin-top: 18px;
-                       fill: $purple;
-               }
-         }
-       }
-  }
-  .catalog-tile-content {
-       border-top: 1px solid $background-gray;
-       padding-top: 5px;
-       display: flex;
-       justify-content: space-between;
-       margin-top: 2px;
-       padding-bottom: 3px;
-       @extend .body-2-semibold;
-       .svg-icon {
-         &.__plus {
-                 width: 20px;
-                 height: 20px;
-                 fill: $blue;
-         }
-       }
-       .catalog-tile-item-details {
-         overflow: hidden;
-       }
+                .catalog-tile-item-version {
+                    @extend .body-2;
+                    line-height: 6px;
+                }
+            }
+            .catalog-tile-vendor-name {
+                @extend .body-3;
+                flex: 0.4;
+                align-self: baseline;
+                color: $gray;
+                line-height: 10px;
+                &:first-letter {
+                    text-transform: capitalize;
+                }
+                @include ellipsis(auto, inline-block, 178px);
+            }
+        }
+        .catalog-tile-item-name {
+            @extend .heading-5-semibold;
+            color: $black;
+            @include ellipsis(auto, inline-block, 175px);
+            line-height: inherit;
+            &:first-letter {
+                text-transform: capitalize;
+            }
+        }
+    }
+    .catalog-tile-icon {
+        width: 58px;
+        height: 58px;
+        text-align: center;
+        justify-content: center;
+        display: flex;
 
-       .catalog-tile-add-new-vsp {
-         color: $blue;
-               .svg-icon {
-                       &.__plus {
-                               width: 20px;
-                               height: 20px;
+        .icon {
+            align-self: center;
+            height: 58px;
+            width: 58px;
+            margin-left: 122px;
+            background-repeat: no-repeat;
+            .svg-icon {
+                &.__vendor {
+                    fill: $dark-gray;
+                    &:hover {
+                        fill: $dark-gray;
+                    }
+                    margin-top: 22px;
+                }
+                &.__vsp {
+                    fill: $light-blue;
+                }
+                margin-top: 18px;
+                margin-left: 3px;
+                &.__vlm {
+                    margin-top: 18px;
+                    fill: $purple;
+                }
+            }
+        }
+    }
+    .catalog-tile-content {
+        border-top: 1px solid $background-gray;
+        padding-top: 5px;
+        display: flex;
+        justify-content: space-between;
+        margin-top: 2px;
+        padding-bottom: 3px;
+        @extend .body-2-semibold;
+        .svg-icon {
+            &.__plus {
+                width: 20px;
+                height: 20px;
+                fill: $blue;
+            }
+        }
+        .catalog-tile-item-details {
+            overflow: hidden;
+        }
 
-                       }
-               }
-         margin-left: 40px;
-       }
-       .catalog-tile-locking-user-name {
-         @extend .body-2;
-         @include ellipsis(auto, inline-block, 180px);
-       }
-       .catalog-tile-check-in-status {
-         .svg-icon {
-               &.__locked {
-                       fill: $gray;
-               }
-               &.__unlocked {
-                       fill: $gray;
-               }
-         }
-       }
-  }
+        .catalog-tile-add-new-vsp {
+            color: $blue;
+            .svg-icon {
+                &.__plus {
+                    width: 20px;
+                    height: 20px;
+                }
+            }
+            margin-left: 40px;
+        }
+        .catalog-tile-locking-user-name {
+            @extend .body-2;
+            @include ellipsis(auto, inline-block, 180px);
+        }
+        .catalog-tile-check-in-status {
+            .svg-icon {
+                &.__locked {
+                    fill: $gray;
+                }
+                &.__unlocked {
+                    fill: $gray;
+                }
+            }
+        }
+    }
 }
index d17dcdd..9838e65 100644 (file)
@@ -1,73 +1,77 @@
 .create-catalog-item-wrapper {
-  width: 204px;
-  height: 200px;
-  display: flex;
-  flex-direction: column;
-  margin: 9px;
+    width: 204px;
+    height: 200px;
+    display: flex;
+    flex-direction: column;
+    margin: 9px;
 
-  .tile.create-catalog-item {
-       margin: 9px 0 9px 0;
-       display: flex;
-       background-color: $white;
-       &:first-child{margin-top: 0;}
-       &:last-child{margin-bottom: 0;}
-       flex-direction: row;
-       align-items: center;
-       justify-content: center;
-       &.disabled {
-         color: $gray;
-         .create-item-plus-icon {
-               fill: $gray;
-         }
-       }
-       &:hover {
-               box-shadow: 0.3px 5px 12.8px 1.3px rgba(24, 24, 25, 0.15);
+    .tile.create-catalog-item {
+        margin: 9px 0 9px 0;
+        display: flex;
+        background-color: $white;
+        &:first-child {
+            margin-top: 0;
+        }
+        &:last-child {
+            margin-bottom: 0;
+        }
+        flex-direction: row;
+        align-items: center;
+        justify-content: center;
+        &.disabled {
+            color: $gray;
+            .create-item-plus-icon {
+                fill: $gray;
+            }
+        }
+        &:hover {
+            box-shadow: 0.3px 5px 12.8px 1.3px rgba(24, 24, 25, 0.15);
 
-               border: 1px solid $light-gray;
-       }
-       &:only-child {
-         text-align: center;
-         flex-direction: column;
-         justify-content: center;
-         .create-item-plus-icon {
-               margin: 0 0 15px 0;
-         }
-         .create-item-text {
-               @extend .heading-4-semibold;
-         }
-       }
-       .create-item-plus-icon{
-               margin: -5px 12px 0 0;
-               height: 19px;
-               width: 19px;
-               .svg-icon {
-                       &.__plus {
-                               width: 19px;
-                               height: 19px;
-                       }
-               }
-       }
-       &.vlm-type {
-         .create-item-text {
-               color: $purple;
-         }
+            border: 1px solid $light-gray;
+        }
+        &:only-child {
+            text-align: center;
+            flex-direction: column;
+            justify-content: center;
+            .create-item-plus-icon {
+                margin: 0 0 15px 0;
+            }
+            .create-item-text {
+                @extend .heading-4-semibold;
+            }
+        }
+        .create-item-plus-icon {
+            margin: -5px 12px 0 0;
+            height: 19px;
+            width: 19px;
+            .svg-icon {
+                &.__plus {
+                    width: 19px;
+                    height: 19px;
+                }
+            }
+        }
+        &.vlm-type {
+            .create-item-text {
+                color: $purple;
+            }
 
-         .create-item-plus-icon {
-               fill: $purple;
-         }
-       }
-       &.vsp-type {
-         .create-item-text {
-               color: $blue;
-         }
+            .create-item-plus-icon {
+                fill: $purple;
+            }
+        }
+        &.vsp-type {
+            .create-item-text {
+                color: $blue;
+            }
 
-         .create-item-plus-icon {
-               fill: $blue;
-         }
-       }
-       .create-item-text {
-         width: 140px;
-         @extend .heading-5-semibold;
-       }
-  }
+            .create-item-plus-icon {
+                fill: $blue;
+            }
+        }
+        .create-item-text {
+            width: 140px;
+            @extend .heading-5-semibold;
+        }
+    }
 }
index f97641c..5f8446b 100644 (file)
@@ -1,32 +1,32 @@
 .onboard-header {
-  padding-top: 8px;
-  display: flex;
-  flex-direction: row;
-  justify-content: flex-end;
-  background-color: $tlv-light-gray;
-  margin-bottom: 2px;
-  padding-left: 60px;
-  padding-right: 40px;
-  @include box-shadow(0px 1px 3px 0 rgba(0, 0, 0, 0.2));
-  .expandable-input-top {
-       margin-right: 20px;
-       margin-left: auto;
-  }
-  .onboard-header-tabs {
-       display: flex;
-       flex-direction: row;
-       .onboard-header-tab {
-         @extend .body-1-semibold;
-         margin-right: 40px;
-         cursor: pointer;
-         display: flex;
-         padding-bottom: 5px;
-         align-items: flex-end;
-         &.active {
-               color: $blue;
-               padding-bottom: 2px;
-               border-bottom: 3px solid $blue;
-         }
-       }
-  }
+    padding-top: 8px;
+    display: flex;
+    flex-direction: row;
+    justify-content: flex-end;
+    background-color: $tlv-light-gray;
+    margin-bottom: 2px;
+    padding-left: 60px;
+    padding-right: 40px;
+    @include box-shadow(0px 1px 3px 0 rgba(0, 0, 0, 0.2));
+    .expandable-input-top {
+        margin-right: 20px;
+        margin-left: auto;
+    }
+    .onboard-header-tabs {
+        display: flex;
+        flex-direction: row;
+        .onboard-header-tab {
+            @extend .body-1-semibold;
+            margin-right: 40px;
+            cursor: pointer;
+            display: flex;
+            padding-bottom: 5px;
+            align-items: flex-end;
+            &.active {
+                color: $blue;
+                padding-bottom: 2px;
+                border-bottom: 3px solid $blue;
+            }
+        }
+    }
 }
index 217098f..fa513fb 100644 (file)
@@ -1,14 +1,14 @@
 .tile {
-  background-color: $white;
-  margin: 9px;
-  width: 204px;
-  height: 200px;
-  display: flex;
-  flex-direction: column;
-  cursor: pointer;
-  border: 1px solid $tlv-light-gray;
-  @include box-shadow(0.5px 0.8px 4px 0 rgba(24, 24, 25, 0.05));
-  &:active {
-       border: 1px solid $light-blue;
-  }
+    background-color: $white;
+    margin: 9px;
+    width: 204px;
+    height: 200px;
+    display: flex;
+    flex-direction: column;
+    cursor: pointer;
+    border: 1px solid $tlv-light-gray;
+    @include box-shadow(0.5px 0.8px 4px 0 rgba(24, 24, 25, 0.05));
+    &:active {
+        border: 1px solid $light-blue;
+    }
 }
index f1af28a..a741764 100644 (file)
@@ -1,21 +1,21 @@
 .vendor-page-header {
-  display: flex;
-  align-items: center;
-  margin-top: 34px;
-  margin-left: 9px;
-  margin-bottom: 29px;
-  .vendor-name {
-       @extend .heading-1;
-       color: $blue;
-       margin-left: 20px;
-       text-transform: uppercase;
-  }
-  .svg-icon-wrapper {
-       padding: 5px 18px 5px 0;
-       .svg-icon.back {
-         height: 25px;
-         width: 25px;
-         fill: $blue;
-       }
-  }
+    display: flex;
+    align-items: center;
+    margin-top: 34px;
+    margin-left: 9px;
+    margin-bottom: 29px;
+    .vendor-name {
+        @extend .heading-1;
+        color: $blue;
+        margin-left: 20px;
+        text-transform: uppercase;
+    }
+    .svg-icon-wrapper {
+        padding: 5px 18px 5px 0;
+        .svg-icon.back {
+            height: 25px;
+            width: 25px;
+            fill: $blue;
+        }
+    }
 }
index d490fd6..63fb236 100644 (file)
@@ -1,91 +1,91 @@
 @mixin flipOverlayDirection($itemsInRow) {
-  &:nth-child(#{$itemsInRow}n) {
-       .vsp-overlay-wrapper {
-         right: 74%;
-         left: inherit;
-         .vsp-overlay-arrow {
-               border-right-color: transparent;
-               border-left-color: $tlv-light-gray;
-               border-right-width: 2px;
-               border-left-width: 6px;
-               left: 100%;
-               &:after {
-                 border-left-color: $white;
-                 border-right-color: transparent;
-                 left: -11px;
-               }
-         }
-       }
-  }
+    &:nth-child(#{$itemsInRow}n) {
+        .vsp-overlay-wrapper {
+            right: 74%;
+            left: inherit;
+            .vsp-overlay-arrow {
+                border-right-color: transparent;
+                border-left-color: $tlv-light-gray;
+                border-right-width: 2px;
+                border-left-width: 6px;
+                left: 100%;
+                &:after {
+                    border-left-color: $white;
+                    border-right-color: transparent;
+                    left: -11px;
+                }
+            }
+        }
+    }
 }
 
 .catalog-tile.vendor-type {
-  position: relative;
-  .catalog-tile-top {
-       .catalog-tile-item-name {
-         margin-top: 21px;
-               line-height: inherit;
-               &:first-letter {
-      text-transform: capitalize;
-    }  
-       }
-       .catalog-tile-vsp-count {
-         @extend .body-3-semibold;
-         margin-top: 8px;
-         margin-left: 54px;
-         margin-bottom: 9px;
-         color: $dark-gray;
-         border: 1px solid $dark-gray;
-         padding: 0 15px 0 15px;
-         border-radius: 15px;
+    position: relative;
+    .catalog-tile-top {
+        .catalog-tile-item-name {
+            margin-top: 21px;
+            line-height: inherit;
+            &:first-letter {
+                text-transform: capitalize;
+            }
+        }
+        .catalog-tile-vsp-count {
+            @extend .body-3-semibold;
+            margin-top: 8px;
+            margin-left: 54px;
+            margin-bottom: 9px;
+            color: $dark-gray;
+            border: 1px solid $dark-gray;
+            padding: 0 15px 0 15px;
+            border-radius: 15px;
 
-         &.clickable {
-               &:hover {
-                 background-color: #eceff3;
-                 color: $dark-gray;
-               }
-         }
-         &.active {
-               background-color: $white;
-               color: $dark-gray;
-         }
-       }
-  }
+            &.clickable {
+                &:hover {
+                    background-color: #eceff3;
+                    color: $dark-gray;
+                }
+            }
+            &.active {
+                background-color: $white;
+                color: $dark-gray;
+            }
+        }
+    }
 
-  .catalog-tile-content {
-       flex-basis: auto;
-       max-height: 31px;
-       height: 31px;
-       text-align: center;
-       color: $blue;
-       display: block;
-       background-color: $white;
-       margin-bottom: 7px;
-       padding-bottom: 0px;
-       .create-new-vsp-button {
-         margin-top: 1px;
-       }
-       &:hover {
-         color: $dark-blue;
-         .svg-icon.plus {
-               fill: $dark-blue;
-         }
-       }
-       &.disabled {
-         cursor: default;
-       }
-  }
-  @media (min-width: 1900px) {
-       @include flipOverlayDirection($itemsInRow: 8);
-  }
-  @media (min-width: 1586px) and (max-width: 1899px) {
-       @include flipOverlayDirection($itemsInRow: 7);
-  }
-  @media (min-width: 1368px) and (max-width: 1585px) {
-       @include flipOverlayDirection($itemsInRow: 6);
-  }
-  @media (max-width: 1367px) {
-       @include flipOverlayDirection($itemsInRow: 5);
-  }
-  @import "vspOverlay";
+    .catalog-tile-content {
+        flex-basis: auto;
+        max-height: 31px;
+        height: 31px;
+        text-align: center;
+        color: $blue;
+        display: block;
+        background-color: $white;
+        margin-bottom: 7px;
+        padding-bottom: 0px;
+        .create-new-vsp-button {
+            margin-top: 1px;
+        }
+        &:hover {
+            color: $dark-blue;
+            .svg-icon.plus {
+                fill: $dark-blue;
+            }
+        }
+        &.disabled {
+            cursor: default;
+        }
+    }
+    @media (min-width: 1900px) {
+        @include flipOverlayDirection($itemsInRow: 8);
+    }
+    @media (min-width: 1586px) and (max-width: 1899px) {
+        @include flipOverlayDirection($itemsInRow: 7);
+    }
+    @media (min-width: 1368px) and (max-width: 1585px) {
+        @include flipOverlayDirection($itemsInRow: 6);
+    }
+    @media (max-width: 1367px) {
+        @include flipOverlayDirection($itemsInRow: 5);
+    }
+    @import 'vspOverlay';
 }
diff --git a/openecomp-ui/resources/scss/modules/onboardingCatalog/_vlmTile.scss b/openecomp-ui/resources/scss/modules/onboardingCatalog/_vlmTile.scss
deleted file mode 100644 (file)
index 721a4f3..0000000
+++ /dev/null
@@ -1,8 +0,0 @@
-.catalog-tile.license-model-type {
-  .catalog-tile-top {
-    &:hover {
-      //background-color: $purple;
-      //color: $white;
-    }
-  }
-}
index e0b72bf..e2617b8 100644 (file)
@@ -1,74 +1,73 @@
-.vsp-overlay-wrapper{
-  display:flex;
-  align-items: center;
-  position:absolute;
-  left: 68%;
-  top: 14%;
-  height: 100%;
-  pointer-events: none;
-  z-index: 100;
-  .vsp-overlay-list {
-       padding: 0 20px;
-  }
-  .vsp-overlay-arrow {
-       border-style: solid;
-       position: relative;
-       bottom: -18px;
-       border-width: 6px;
-       border-left-width: 2px;
-       border-color: transparent;
-       border-right-color: $light-gray;
-       &:after {
-         position: absolute;
-         border-style: solid;
-         bottom: -10px;
-         left: -9px;
-         border-width: 10px;
-         border-color: transparent;
-         border-right-color: $white;
-         content:' ';
-       }
-  }
-  .vsp-overlay {
-       pointer-events: all;
-       width: 205px;
-       cursor: default;
-       background-color: $white;
-       @include box-shadow(0px 2px 9.2px 0.8px rgba(24, 24, 25, 0.25));
-       border-radius: 6px;
-       padding: 0 0 10px 0;
-       display: flex;
-       flex-direction: column;
-       margin: 10px 0 10px 0;
-       .vsp-overlay-title {
-         @extend .heading-5-semibold;
-         margin-bottom: 15px;
-         padding: 10px 20px 10px 20px;
-         background: $highlight-gray;
-               color: $text-black;
-         text-transform: uppercase;
-         border-radius: 6px 6px 0 0;
-       }
-       .vsp-overlay-detail{
-         @extend .body-2;
-         &:hover {
-               color: $blue;
-         }
-         text-transform: none;
-         @include ellipsis(auto, block);
-         border-bottom: 1px solid $tlv-light-gray;
-         cursor: pointer;
-         padding: 5px 0 5px 0;
-         &:last-child {
-               border-bottom: none;
-         }
-       }
-       .vsp-overlay-see-more{
-         color: $blue;
-         cursor: pointer;
-         margin-top: 12px;
-         align-self:center;
-       }
-
-  }
+.vsp-overlay-wrapper {
+    display: flex;
+    align-items: center;
+    position: absolute;
+    left: 68%;
+    top: 14%;
+    height: 100%;
+    pointer-events: none;
+    z-index: 100;
+    .vsp-overlay-list {
+        padding: 0 20px;
+    }
+    .vsp-overlay-arrow {
+        border-style: solid;
+        position: relative;
+        bottom: -18px;
+        border-width: 6px;
+        border-left-width: 2px;
+        border-color: transparent;
+        border-right-color: $light-gray;
+        &:after {
+            position: absolute;
+            border-style: solid;
+            bottom: -10px;
+            left: -9px;
+            border-width: 10px;
+            border-color: transparent;
+            border-right-color: $white;
+            content: ' ';
+        }
+    }
+    .vsp-overlay {
+        pointer-events: all;
+        width: 205px;
+        cursor: default;
+        background-color: $white;
+        @include box-shadow(0px 2px 9.2px 0.8px rgba(24, 24, 25, 0.25));
+        border-radius: 6px;
+        padding: 0 0 10px 0;
+        display: flex;
+        flex-direction: column;
+        margin: 10px 0 10px 0;
+        .vsp-overlay-title {
+            @extend .heading-5-semibold;
+            margin-bottom: 15px;
+            padding: 10px 20px 10px 20px;
+            background: $highlight-gray;
+            color: $text-black;
+            text-transform: uppercase;
+            border-radius: 6px 6px 0 0;
+        }
+        .vsp-overlay-detail {
+            @extend .body-2;
+            &:hover {
+                color: $blue;
+            }
+            text-transform: none;
+            @include ellipsis(auto, block);
+            border-bottom: 1px solid $tlv-light-gray;
+            cursor: pointer;
+            padding: 5px 0 5px 0;
+            &:last-child {
+                border-bottom: none;
+            }
+        }
+        .vsp-overlay-see-more {
+            color: $blue;
+            cursor: pointer;
+            margin-top: 12px;
+            align-self: center;
+        }
+    }
 }
index c38809c..da0c8b7 100644 (file)
-.dox-ui {
-  @import "bootstrap";
-  @import "~react-select/dist/react-select.min.css";
-  @import "~react-datepicker/dist/react-datepicker.min.css";
-
-  @import "common";
-  @import "components";
-  @import "modules";
-
-  &.dox-ui-punch-out {
-    background-color: $content-background-color;
-    &.dox-ui-punch-out-full-page {
-      position: absolute;
-      top: 0;
-      bottom: 0;
-      left: 0;
-      right: 0;
-      overflow-y: auto;
-    }
-  }
-}
-
-/* Out of namespace context for datepicker */
-div[data-reactroot].customized-date-picker-calendar {
-  @import "common/variables";
-  @import "common/typography";
-  border-color: $light-gray;
-  margin-top: -8px;
-       color: $black;
-  .react-datepicker__triangle {
-      margin-top: 0px;
-  }
-  .react-datepicker__navigation--previous::before, .react-datepicker__navigation--next::before {
-    width: 8px;
-    height: 8px;
-    display: inline-block;
-    position: absolute;
-    top: -4px;
-  }
-  .react-datepicker__navigation--previous::before {
-    left: 0;
-    content: url(../../node_modules/sdc-ui/assets/icons/angleLeft.svg);
-  }
-  .react-datepicker__navigation--next::before {
-    right: 0;
-    content: url(../../node_modules/sdc-ui/assets/icons/angleRight.svg);
-  }
-
-  .react-datepicker__navigation--previous, .react-datepicker__navigation--next {
-      border: none;
-  }
-
-
-  .react-datepicker__month-container {
-               .react-datepicker__header {
-                       background-color: $background-gray;
-      border-bottom: none;
-      .react-datepicker__current-month {
-        @extend .body-1-semibold;
-        background-color: $background-gray;
-        margin-bottom: 10px;
-      }
-      .react-datepicker__day-names {
-        @extend .body-1;
-        background-color: $white;
-      }
-               }
-    .react-datepicker__day--selected, .react-datepicker__day--keyboard-selected {
-      @extend .body-1;
-      background-color: $blue;
-                       color: $white;
-    }
-    .react-datepicker__day {
-                       border-radius: 0px;
-                       margin: 0;
-                       flex: 1;
-      @extend .body-1;
-    }
-
-               .react-datepicker__day--in-range, .react-datepicker__day--in-selecting-range {
-                       background-color: $tlv-hover;
-                       color: $black;
-                       &.react-datepicker__day--selected, &.react-datepicker__day--keyboard-selected, &.react-datepicker__day--range-start, &.react-datepicker__day--range-end  {
-                               background-color: $blue;
-                               color: $white;
-                       }
-                       &.react-datepicker__day--selecting-range-start, &.react-datepicker__day--selecting-range-end {
-                               background-color: lighten($blue, 40%);
-                               color: $black;
-                       }
-                       &.react-datepicker__day--selecting-range-start.react-datepicker__day--range-start,
-                       &.react-datepicker__day--selecting-range-end.react-datepicker__day--range-end,
-                       &.react-datepicker__day--selecting-range-start.react-datepicker__day--keyboard-selected {
-                               background-color: $blue;
-                               color: $white;
-                       }
-               }
-
-               .react-datepicker__week {
-                       display: flex;
+.dox-ui,
+.onap-sdc-portal {
+    @import 'bootstrap';
+    @import '~react-select/dist/react-select.min.css';
+    @import '~react-datepicker/dist/react-datepicker.min.css';
+
+    @import 'common';
+    @import 'components';
+    @import 'modules';
+
+    .sdc-alert__header,
+    .sdc-error__header,
+    .sdc-info__header {
+        box-sizing: content-box;
+    }
+    &.dox-ui-punch-out {
+        background-color: $content-background-color;
+        &.dox-ui-punch-out-full-page {
+            position: absolute;
+            top: 0;
+            bottom: 0;
+            left: 0;
+            right: 0;
+            overflow-y: auto;
+        }
     }
-       }
 }
 
 /* Out of namespace context for tooltips */
-div[data-reactroot].tooltip {
-  @import "common/variables";
-  @import "common/typography";
-
-  &.in {
-       opacity: 1;
-  }
-  &.validation-error-message {
+div[data-onboardingroot].tooltip {
+    @import 'common/variables';
+    @import 'common/typography';
+
+    &.in {
+        opacity: 1;
+    }
+    &.validation-error-message {
+        &.bottom {
+            .tooltip-arrow {
+                border-bottom-color: $red !important;
+            }
+        }
+        &.left {
+            .tooltip-arrow {
+                border-left-color: $red !important;
+            }
+        }
+        &.right {
+            .tooltip-arrow {
+                border-right-color: $red !important;
+            }
+        }
+        &.top {
+            .tooltip-arrow {
+                border-top-color: $red !important;
+            }
+        }
+    }
     &.bottom {
-      .tooltip-arrow {
-      border-bottom-color: $red !important;
-      }
+        .tooltip-arrow {
+            border-bottom-color: $dark-gray !important;
+        }
     }
-    &.left {
-      .tooltip-arrow {
-        border-left-color: $red !important;
-      }
+    &.top {
+        .tooltip-arrow {
+            border-top-color: $dark-gray !important;
+        }
     }
     &.right {
-      .tooltip-arrow {
-        border-right-color: $red !important;
-      }
+        .tooltip-arrow {
+            border-right-color: $dark-gray !important;
+        }
     }
-    &.top {
-      .tooltip-arrow {
-        border-top-color: $red !important;
-      }
-    }
-  }
-  &.bottom {
-    .tooltip-arrow {
-      border-bottom-color: $dark-gray !important;
-    }
-  }
-  &.top {
-    .tooltip-arrow {
-      border-top-color: $dark-gray !important;
-    }
-  }
-  &.right {
-    .tooltip-arrow {
-      border-right-color: $dark-gray !important;
-    }
-  }
-  &.left {
-    .tooltip-arrow {
-      border-left-color: $dark-gray !important;
-    }
-  }
-  .tooltip-inner {
-    @extend .body-1;
-    max-width: 100%;
-    background-color: $dark-gray;
-    padding: 6px 9px;
-    &:first-letter {
-      text-transform: capitalize;
-    }
-  }
-
-  // activity log tooltip
-  &.activity-log-message-tooltip {
-         @include base-font-regular;
-    font-size: $body-font-2;
-    .message-block {
-      text-align: left;
-      padding: 3px 12px;
-    }
-  }
-  // manage permisions modal
-  &.manage-permissions-owner-tooltip {
-    .tooltip-inner {
-      width: 400px;
+    &.left {
+        .tooltip-arrow {
+            border-left-color: $dark-gray !important;
+        }
     }
-  }
-  // WS/Catalog Tile
-  &.tile-super-info {
     .tooltip-inner {
-      font-size: $body-font-3;
-    }
-  }
-  //dependency table error tooltip
-  &.select-action-table-error-tooltip{
-    @include base-font-regular;
-    margin-right: 5px;
-    font-size: $body-font-2;
-    .message-block {
-      text-align: left;
-      padding: 3px 12px;
-    }
-    .tooltip-arrow {
-           border-bottom-color: $red !important;
-         }
-
-    .tooltip-inner {
-      background-color: $red;
-      padding: 6px 8px;
-      font-size: $body-font-2;
-    }
-  }
-
-  // for read-only mode, vendor description in VLM overview
-  &.vendor-description-tooltip {
-    .tooltip-inner {
-      max-width: 600px;
+        @extend .body-1;
+        max-width: 100%;
+        background-color: $dark-gray;
+        padding: 6px 9px;
+        &:first-letter {
+            text-transform: capitalize;
+        }
+    }
+
+    // activity log tooltip
+    &.activity-log-message-tooltip {
+        @include base-font-regular;
+        font-size: $body-font-2;
+        .message-block {
+            text-align: left;
+            padding: 3px 12px;
+        }
+    }
+    // manage permisions modal
+    &.manage-permissions-owner-tooltip {
+        .tooltip-inner {
+            width: 400px;
+        }
+    }
+    // WS/Catalog Tile
+    &.tile-super-info {
+        .tooltip-inner {
+            font-size: $body-font-3;
+        }
+    }
+    //dependency table error tooltip
+    &.select-action-table-error-tooltip {
+        @include base-font-regular;
+        margin-right: 5px;
+        font-size: $body-font-2;
+        .message-block {
+            text-align: left;
+            padding: 3px 12px;
+        }
+        .tooltip-arrow {
+            border-bottom-color: $red !important;
+        }
+
+        .tooltip-inner {
+            background-color: $red;
+            padding: 6px 8px;
+            font-size: $body-font-2;
+        }
+    }
+
+    // for read-only mode, vendor description in VLM overview
+    &.vendor-description-tooltip {
+        .tooltip-inner {
+            max-width: 600px;
+        }
     }
-  }
 }
 
 /* Out of namespace context for notifications */
 .onboarding-notifications-container {
-  position: absolute;
-  &.position-top-right {
-    right: 30px;
-    top: 50px;
-  }
+    position: absolute;
+    &.position-top-right {
+        right: 30px;
+        top: 50px;
+    }
 }
 
-
 .onboarding-loader {
-  .onboarding-loader-backdrop {
-    @import "common/variables";
-    top: 0;
-    right: 0;
-    bottom: 0;
-    left: 0;
-    position: absolute;
-    background-color: $transparent-black;
-  }
+    .onboarding-loader-backdrop {
+        @import 'common/variables';
+        top: 0;
+        right: 0;
+        bottom: 0;
+        left: 0;
+        position: absolute;
+        background-color: $transparent-black;
+    }
 }
index ac02021..ba22cf6 100644 (file)
@@ -1,3 +1,3 @@
-@import "common";
-@import "components";
-@import "modules";
+@import 'common';
+@import 'components';
+@import 'modules';
index b4bc8be..33db247 100644 (file)
@@ -1,3 +1,18 @@
+/*
+ * 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 DatePicker from 'react-datepicker';
@@ -97,8 +112,21 @@ class Datepicker extends React.Component {
                             placeholderText={placeholderText}
                         />
                     }
-                    minDate={selectsEnd && props.startDate}
-                    maxDate={selectsStart && props.endDate}
+                    minDate={
+                        selectsEnd && props.startDate
+                            ? props.startDate
+                            : undefined
+                    }
+                    maxDate={
+                        selectsStart && props.endDate
+                            ? props.endDate
+                            : undefined
+                    }
+                    popperModifiers={{
+                        preventOverflow: {
+                            boundariesElement: 'scrollParent'
+                        }
+                    }}
                     {...props}
                 />
             </div>
index be0ebf2..37d79cb 100644 (file)
@@ -1,17 +1,17 @@
-/*!
- * Copyright (C) 2017 AT&T Intellectual Property. All rights reserved.
+/*
+ * 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
+ *      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.
+ * 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';
@@ -36,8 +36,8 @@ class ExpandableInputOpened extends React.Component {
         this.rawDomNode.focus();
     }
 
-    componentWillReceiveProps(newProps) {
-        if (!newProps.value) {
+    componentDidUpdate() {
+        if (!this.props.value) {
             if (!(document.activeElement === this.rawDomNode)) {
                 this.props.handleBlur();
             }
index f36d999..21f09e6 100644 (file)
 import React from 'react';
 import PropTypes from 'prop-types';
 import SVGIcon from 'sdc-ui/lib/react/SVGIcon.js';
-import Input from 'nfvo-components/input/validation/InputWrapper.jsx';
+import Input from 'nfvo-components/input/validation/Input.jsx';
 
 class DualListboxView extends React.Component {
+    constructor(props) {
+        super(props);
+        this.availableListRef = React.createRef();
+        this.availableListFilterRef = React.createRef();
+        this.selectedValuesListFilterRef = React.createRef();
+        this.selectedValuesRef = React.createRef();
+    }
     static propTypes = {
         availableList: PropTypes.arrayOf(
             PropTypes.shape({
@@ -77,13 +84,13 @@ class DualListboxView extends React.Component {
                     unselectedList,
                     {
                         value: availableListFilter,
-                        ref: 'availableListFilter',
+                        ref: this.availableListFilterRef,
                         disabled: isReadOnlyMode,
                         onChange: value =>
                             this.setState({ availableListFilter: value })
                     },
                     {
-                        ref: 'availableValues',
+                        ref: this.availableListRef,
                         disabled: isReadOnlyMode,
                         testId: 'available'
                     }
@@ -94,13 +101,13 @@ class DualListboxView extends React.Component {
                     selectedList,
                     {
                         value: selectedValuesListFilter,
-                        ref: 'selectedValuesListFilter',
+                        ref: this.selectedValuesListFilterRef,
                         disabled: isReadOnlyMode,
                         onChange: value =>
                             this.setState({ selectedValuesListFilter: value })
                     },
                     {
-                        ref: 'selectedValues',
+                        ref: this.selectedValuesRef,
                         disabled: isReadOnlyMode,
                         testId: 'selected'
                     }
@@ -236,6 +243,12 @@ class DualListboxView extends React.Component {
     removeAllFromSelectedList() {
         this.props.onChange([]);
     }
+
+    // fix for auto-selection of first value in the list on the first render
+    componentDidMount() {
+        this.availableListRef.current.input.value = '';
+        this.selectedValuesRef.current.input.value = '';
+    }
 }
 
 export default DualListboxView;
index b5db67c..027920c 100644 (file)
@@ -1,17 +1,17 @@
-/*!
- * Copyright (C) 2017 AT&T Intellectual Property. All rights reserved.
+/*
+ * 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
+ *      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.
+ * 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';
@@ -42,7 +42,8 @@ class Form extends React.Component {
         cancelButtonText: PropTypes.string,
         onValidChange: PropTypes.func,
         onValidityChanged: PropTypes.func,
-        onValidateForm: PropTypes.func
+        onValidateForm: PropTypes.func,
+        btnClassName: PropTypes.string
     };
 
     constructor(props) {
@@ -64,6 +65,7 @@ class Form extends React.Component {
             submitButtonText,
             cancelButtonText,
             children,
+            btnClassName,
             ...formProps
         } = this.props;
         /* eslint-enable no-unused-vars */
@@ -82,6 +84,7 @@ class Form extends React.Component {
                         cancelButtonText={cancelButtonText}
                         ref={this.setButtonsRef}
                         isReadOnlyMode={isReadOnlyMode}
+                        className={btnClassName}
                     />
                 )}
             </form>
@@ -159,6 +162,7 @@ export class TabsForm extends Form {
             onValidChange,
             onValidityChanged,
             onDataChanged,
+            btnClassName,
             children,
             ...formProps
         } = this.props;
@@ -176,6 +180,7 @@ export class TabsForm extends Form {
                         cancelButtonText={cancelButtonText}
                         ref={buttons => (this.buttons = buttons)}
                         isReadOnlyMode={isReadOnlyMode}
+                        className={btnClassName}
                     />
                 )}
             </form>
index c54d4b6..f3279b0 100644 (file)
@@ -4,9 +4,9 @@
  * 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.
@@ -197,11 +197,15 @@ class Input extends React.Component {
             selectedValues
         });
     }
-    componentWillReceiveProps(nextProps) {
-        this.setState({
-            value: nextProps.value
-        });
+
+    static getDerivedStateFromProps(props, state) {
+        if (state.value === props.value) {
+            return null;
+        } else {
+            return { value: props.value, ...state };
+        }
     }
+
     onChange(e) {
         const { onChange, type } = this.props;
         let value = e.target.value;
index 5509896..a439711 100644 (file)
@@ -1,17 +1,17 @@
-/*!
- * Copyright (C) 2017 AT&T Intellectual Property. All rights reserved.
+/*
+ * 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
+ *      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.
+ * 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.
  */
 /**
  * Holds the buttons for save/reset for forms.
@@ -57,8 +57,12 @@ class ValidationButtons extends React.Component {
         ) : (
             <SVGIcon className="close" name="close" />
         );
+        let className = 'validation-buttons';
+        if (this.props.className) {
+            className += ' ' + this.props.className;
+        }
         return (
-            <div className="validation-buttons">
+            <div className={className}>
                 {!this.props.isReadOnlyMode ? (
                     <div>
                         <Button
index 3a80e73..0c92430 100644 (file)
@@ -4,9 +4,9 @@
  * 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.
@@ -18,81 +18,55 @@ import React from 'react';
 import PropTypes from 'prop-types';
 import { connect } from 'react-redux';
 
-import Modal from 'nfvo-components/modal/Modal.jsx';
-import Button from 'sdc-ui/lib/react/Button.js';
+import {
+    Modal,
+    ModalHeader,
+    ModalTitle,
+    ModalBody,
+    ModalFooter
+} from 'sdc-ui/lib/react';
 import i18n from 'nfvo-utils/i18n/i18n.js';
 import { modalContentComponents } from 'sdc-app/common/modal/ModalContentMapper.js';
 import { actionTypes, typeEnum } from './GlobalModalConstants.js';
 
-const typeClass = {
-    default: 'primary',
-    error: 'negative',
-    warning: 'warning',
-    success: 'positive'
-};
-
-const type2HeaderColor = {
-    default: 'primary',
-    error: 'danger',
-    warning: 'warning',
-    success: 'success'
-};
-
-const ModalFooter = ({
-    type,
+const GlobalModalFooter = ({
     onConfirmed,
     onDeclined,
     onClose,
     confirmationButtonText,
     cancelButtonText
 }) => {
-    let myPropsForNoConfirmed = {};
+    let actionButtonClick;
     if (onConfirmed) {
-        myPropsForNoConfirmed.btnType = 'outline';
+        actionButtonClick = () => {
+            onConfirmed();
+            onClose();
+        };
     }
     return (
-        <Modal.Footer>
-            <div className="sdc-modal-footer">
-                {onConfirmed && (
-                    <Button
-                        data-test-id="sdc-modal-confirm-button"
-                        color={typeClass[type]}
-                        btnType="primary"
-                        onClick={() => {
-                            onConfirmed();
-                            onClose();
-                        }}>
-                        {confirmationButtonText}
-                    </Button>
-                )}
-                <Button
-                    {...myPropsForNoConfirmed}
-                    data-test-id="sdc-modal-cancel-button"
-                    btnType="secondary"
-                    color={typeClass[type]}
-                    onClick={
-                        onDeclined
-                            ? () => {
-                                  onDeclined();
-                                  onClose();
-                              }
-                            : () => onClose()
-                    }>
-                    {cancelButtonText}
-                </Button>
-            </div>
-        </Modal.Footer>
+        <ModalFooter
+            actionButtonText={onConfirmed ? confirmationButtonText : undefined}
+            actionButtonClick={actionButtonClick}
+            closeButtonText={cancelButtonText}
+            onClose={
+                onDeclined
+                    ? () => {
+                          onDeclined();
+                          onClose();
+                      }
+                    : () => onClose()
+            }
+            withButtons
+        />
     );
 };
 
-ModalFooter.defaultProps = {
-    type: 'default',
+GlobalModalFooter.defaultProps = {
     confirmationButtonText: i18n('OK'),
     cancelButtonText: i18n('Cancel')
 };
 
-ModalFooter.PropTypes = {
-    type: PropTypes.string,
+GlobalModalFooter.propTypes = {
     confirmationButtonText: PropTypes.string,
     cancelButtonText: PropTypes.string
 };
@@ -121,12 +95,13 @@ export class GlobalModalView extends React.Component {
         onConfirmed: PropTypes.func,
         onDeclined: PropTypes.func,
         confirmationButtonText: PropTypes.string,
-        cancelButtonText: PropTypes.string
+        cancelButtonText: PropTypes.string,
+        bodyClassName: PropTypes.string
     };
 
     static defaultProps = {
         show: false,
-        type: 'default',
+        type: 'custom',
         title: ''
     };
 
@@ -137,26 +112,24 @@ export class GlobalModalView extends React.Component {
             show,
             modalComponentName,
             modalComponentProps,
-            modalClassName,
             msg,
             onConfirmed,
             onDeclined,
             confirmationButtonText,
             cancelButtonText,
-            onClose
+            onClose,
+            bodyClassName
         } = this.props;
         const ComponentToRender = modalContentComponents[modalComponentName];
         return (
             <Modal
                 show={show}
-                bsSize={modalComponentProps && modalComponentProps.size}
-                className={`onborading-modal ${modalClassName || ''} ${
-                    type2HeaderColor[type]
-                }`}>
-                <Modal.Header>
-                    <Modal.Title>{title}</Modal.Title>
-                </Modal.Header>
-                <Modal.Body>
+                type={type}
+                size={modalComponentProps && modalComponentProps.size}>
+                <ModalHeader type={type} onClose={onClose}>
+                    <ModalTitle>{title}</ModalTitle>
+                </ModalHeader>
+                <ModalBody className={bodyClassName}>
                     {ComponentToRender ? (
                         <ComponentToRender {...modalComponentProps} />
                     ) : msg && typeof msg === 'string' ? (
@@ -172,10 +145,9 @@ export class GlobalModalView extends React.Component {
                     ) : (
                         msg
                     )}
-                </Modal.Body>
+                </ModalBody>
                 {(onConfirmed || onDeclined || type !== typeEnum.DEFAULT) && (
-                    <ModalFooter
-                        type={type}
+                    <GlobalModalFooter
                         onConfirmed={onConfirmed}
                         onDeclined={onDeclined}
                         onClose={onClose}
@@ -196,7 +168,7 @@ export class GlobalModalView extends React.Component {
 
 GlobalModalView.propTypes = {
     show: PropTypes.bool,
-    type: PropTypes.oneOf(['default', 'error', 'warning', 'success']),
+    type: PropTypes.oneOf(['custom', 'error', 'alert', 'info']),
     title: PropTypes.string,
     modalComponentProps: PropTypes.object,
     modalComponentName: PropTypes.string,
index 8bac377..434b41f 100644 (file)
@@ -5,13 +5,13 @@
  * 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
+ *      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.
+ * 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 keyMirror from 'nfvo-utils/KeyMirror.js';
 
@@ -27,13 +27,15 @@ export const actionTypes = keyMirror(
 );
 
 export const typeEnum = {
-    DEFAULT: 'default',
+    DEFAULT: 'custom',
     ERROR: 'error',
-    WARNING: 'warning',
-    SUCCESS: 'success'
+    WARNING: 'alert',
+    SUCCESS: 'info'
 };
 
 export const modalSizes = {
     LARGE: 'large',
-    SMALL: 'small'
+    SMALL: 'small',
+    XLARGE: 'extraLarge',
+    MEDIUM: 'medium'
 };
index b2273fa..a3383ab 100644 (file)
@@ -1,17 +1,17 @@
-/*!
- * Copyright (C) 2017 AT&T Intellectual Property. All rights reserved.
+/*
+ * 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
+ *      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.
+ * 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, typeEnum } from './GlobalModalConstants.js';
@@ -25,20 +25,17 @@ export default (state = null, action) => {
         case actionTypes.GLOBAL_MODAL_ERROR:
             return {
                 type: typeEnum.ERROR,
-                modalClassName: 'notification-modal',
                 ...action.data
             };
         case actionTypes.GLOBAL_MODAL_WARNING:
             return {
                 type: typeEnum.WARNING,
-                modalClassName: 'notification-modal',
                 ...action.data
             };
 
         case actionTypes.GLOBAL_MODAL_SUCCESS:
             return {
                 type: typeEnum.SUCCESS,
-                modalClassName: 'notification-modal',
                 ...action.data
             };
 
diff --git a/openecomp-ui/src/nfvo-components/modal/Modal.jsx b/openecomp-ui/src/nfvo-components/modal/Modal.jsx
deleted file mode 100644 (file)
index 2f70a6a..0000000
+++ /dev/null
@@ -1,94 +0,0 @@
-/*
- * 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 ReactDOM from 'react-dom';
-import BootstrapModal from 'react-bootstrap/lib/Modal.js';
-import { isEqual } from 'lodash';
-let nextModalId = 0;
-
-export default class Modal extends React.Component {
-    static Header = BootstrapModal.Header;
-
-    static Title = BootstrapModal.Title;
-
-    static Footer = BootstrapModal.Footer;
-
-    static Body = class ModalBody extends React.Component {
-        render() {
-            let { children, ...props } = this.props;
-            return (
-                <BootstrapModal.Body {...props}>{children}</BootstrapModal.Body>
-            );
-        }
-
-        componentDidMount() {
-            let element = ReactDOM.findDOMNode(this);
-            element.addEventListener('click', event => {
-                if (event.target.tagName === 'A') {
-                    event.preventDefault();
-                }
-            });
-            ['wheel', 'mousewheel', 'DOMMouseScroll'].forEach(eventType =>
-                element.addEventListener(eventType, event =>
-                    event.stopPropagation()
-                )
-            );
-        }
-
-        componentWillUnmount() {
-            let element = ReactDOM.findDOMNode(this);
-
-            ['wheel', 'mousewheel', 'DOMMouseScroll', 'click'].forEach(
-                eventType => element.removeEventListener(eventType)
-            );
-        }
-
-        shouldComponentUpdate(nextProps) {
-            return !isEqual(this.props, nextProps);
-        }
-    };
-
-    componentWillMount() {
-        this.modalId = `dox-ui-modal-${nextModalId++}`;
-    }
-
-    componentDidMount() {
-        this.ensureRootClass();
-    }
-
-    componentDidUpdate() {
-        this.ensureRootClass();
-    }
-
-    ensureRootClass() {
-        let element = document.getElementById(this.modalId);
-        while (element && !element.hasAttribute('data-reactroot')) {
-            element = element.parentElement;
-        }
-        if (element && !element.classList.contains('dox-ui')) {
-            element.classList.add('dox-ui');
-        }
-    }
-
-    render() {
-        let { children, ...props } = this.props;
-        return (
-            <BootstrapModal {...props} id={this.modalId}>
-                {children}
-            </BootstrapModal>
-        );
-    }
-}
index 61121df..d852ac8 100644 (file)
@@ -19,7 +19,7 @@ import classnames from 'classnames';
 import Collapse from 'react-bootstrap/lib/Collapse.js';
 
 class NavigationSideBar extends React.Component {
-    static PropTypes = {
+    static propTypes = {
         activeItemId: PropTypes.string.isRequired,
         onSelect: PropTypes.func,
         onToggle: PropTypes.func,
@@ -70,10 +70,10 @@ class NavigationSideBar extends React.Component {
 }
 
 class NavigationMenu extends React.Component {
-    static PropTypes = {
+    static propTypes = {
         activeItemId: PropTypes.string.isRequired,
         onNavigationItemClick: PropTypes.func,
-        menu: PropTypes.array
+        menu: PropTypes.object
     };
 
     render() {
index ae0913f..757dc67 100644 (file)
@@ -1,17 +1,17 @@
-/*!
- * Copyright (C) 2017 AT&T Intellectual Property. All rights reserved.
+/*
+ * 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
+ *      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.
+ * 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';
@@ -63,6 +63,7 @@ class CommitCommentModal extends React.Component {
                 submitButtonText={commitButtonText}
                 labledButtons={true}
                 isValid={true}
+                btnClassName="sdc-modal__footer"
                 className="comment-commit-form">
                 <div className="commit-modal-text">{descriptionText}</div>
                 <Input
@@ -71,6 +72,7 @@ class CommitCommentModal extends React.Component {
                     label={i18n('Enter Commit Comment:')}
                     value={this.state.comment}
                     type="textarea"
+                    groupClassName="no-bottom-margin"
                 />
             </Form>
         );
index 98022c5..4634c37 100644 (file)
   "ComponentDependencies" : "Component Dependencies",
 
   "ComponentQuestionnaire" : "Component Questionnaire",
+  "ComponentQuestionnaire/general/nfcFunction" : "NFC Function",
+  "ComponentQuestionnaire/general/nfcNamingCode" : "NFC Naming",
   "ComponentQuestionnaire/compute" : "Compute",
   "ComponentQuestionnaire/storage/backup/backupStorageSize": "Backup Storage Size",
   "ComponentQuestionnaire/storage/backup/backupSolution": "Backup Solution",
index f96bd73..e67f662 100644 (file)
@@ -43,7 +43,7 @@ class Application extends React.Component {
     render() {
         return (
             <Provider store={store}>
-                <div>
+                <div data-onboardingroot="">
                     <GlobalModal />
                     <Notifications />
                     {this.props.children}
index 50d2a5b..fb58151 100644 (file)
@@ -1,17 +1,17 @@
-/*!
- * Copyright (C) 2017 AT&T Intellectual Property. All rights reserved.
+/*
+ * Copyright Â© 2016-2018 European Support Limited
  *
- * Licensed under the Apache License, Version 2.0 (the 'License');
+ * 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
+ *      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.
+ * 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,
@@ -24,7 +24,10 @@ import RestAPIUtil from 'nfvo-utils/RestAPIUtil.js';
 import Configuration from 'sdc-app/config/Configuration.js';
 import ItemsHelper from '../../common/helpers/ItemsHelper.js';
 import { modalContentMapper } from 'sdc-app/common/modal/ModalContentMapper.js';
-import { actionTypes as modalActionTypes } from 'nfvo-components/modal/GlobalModalConstants.js';
+import {
+    actionTypes as modalActionTypes,
+    modalSizes
+} from 'nfvo-components/modal/GlobalModalConstants.js';
 import i18n from 'nfvo-utils/i18n/i18n.js';
 import { optionsInputValues as laOptionsValues } from 'sdc-app/onboarding/licenseModel/licenseAgreement/LicenseAgreementConstants.js';
 import { optionsInputValues as processOptionValues } from 'sdc-app/onboarding/softwareProduct/components/processes/SoftwareProductComponentProcessesConstants.js';
@@ -119,7 +122,6 @@ const MergeEditorActionHelper = {
                         type: modalActionTypes.GLOBAL_MODAL_SHOW,
                         data: {
                             modalComponentName: modalContentMapper.MERGE_EDITOR,
-                            modalClassName: 'merge-editor-modal',
                             title: `${i18n('Merge Required')} - ${
                                 version.description
                             }`,
@@ -129,9 +131,9 @@ const MergeEditorActionHelper = {
                                 });
                             },
                             modalComponentProps: {
-                                size: 'lg',
-                                type: 'default'
-                            }
+                                size: modalSizes.XLARGE
+                            },
+                            bodyClassName: 'merge-editor-modal'
                         }
                     })
                 );
index a7e36a3..0664952 100644 (file)
@@ -98,8 +98,8 @@ class ConflictCategory extends React.Component {
                     <GridItem className="resolve">
                         <Button
                             className="conflict-resolve-btn"
-                            btnType="outline"
-                            color="gray"
+                            btnType="secondary"
+                            size="default"
                             onClick={() =>
                                 onResolveConflict({
                                     conflictId,
index 745f01d..a65199a 100644 (file)
@@ -1,17 +1,17 @@
-/*!
- * Copyright (C) 2017 AT&T Intellectual Property. All rights reserved.
+/*
+ * 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
+ *      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.
+ * 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 SoftwareProductCreation from 'sdc-app/onboarding/softwareProduct/creation/SoftwareProductCreation.js';
@@ -31,6 +31,13 @@ import Tree from 'nfvo-components/tree/Tree.jsx';
 import MergeEditor from 'sdc-app/common/merge/MergeEditor.js';
 import Revisions from 'sdc-app/onboarding/revisions/Revisions.js';
 import VendorSelector from 'sdc-app/onboarding/softwareProduct/details/SoftwareProductDetailsVendorSelector.jsx';
+import FlowsEditor from 'sdc-app/flows/FlowsEditorModal.js';
+import EntitlementPoolsEditor from 'sdc-app/onboarding/licenseModel/entitlementPools/EntitlementPoolsEditor.js';
+import FeatureGroupEditor from 'sdc-app/onboarding/licenseModel/featureGroups/FeatureGroupEditor';
+import LicenseAgreementEditor from 'sdc-app/onboarding/licenseModel/licenseAgreement/LicenseAgreementEditor';
+import LicenseKeyGroupsEditor from 'sdc-app/onboarding/licenseModel/licenseKeyGroups/LicenseKeyGroupsEditor';
+import SoftwareProductProcessesEditor from 'sdc-app/onboarding/softwareProduct/processes/SoftwareProductProcessesEditor';
+import SoftwareProductComponentProcessesEditor from 'sdc-app/onboarding/softwareProduct/components/processes/SoftwareProductComponentProcessesEditor';
 
 export const modalContentMapper = {
     SOFTWARE_PRODUCT_CREATION: 'SOFTWARE_PRODUCT_CREATION',
@@ -50,7 +57,14 @@ export const modalContentMapper = {
     MERGE_EDITOR: 'MERGE_EDITOR',
     REVISIONS_LIST: 'REVISIONS_LIST',
     VENDOR_SELECTOR: 'VENDOR_SELECTOR',
-    VNF_IMPORT: 'VNF_IMPORT'
+    VNF_IMPORT: 'VNF_IMPORT',
+    FLOWS_EDITOR: 'FLOWS_EDITOR',
+    EP_EDITOR: 'EP_EDITOR',
+    FG_EDITOR: 'FG_EDITOR',
+    LA_EDITOR: 'LA_EDITOR',
+    LKG_EDITOR: 'LKG_EDITOR',
+    PROCESS_EDITOR: 'PROCESS_EDITOR',
+    COMP_PROCESS_EDITOR: 'COMP_PROCESS_EDITOR'
 };
 
 export const modalContentComponents = {
@@ -70,5 +84,12 @@ export const modalContentComponents = {
     MERGE_EDITOR: MergeEditor,
     REVISIONS_LIST: Revisions,
     VENDOR_SELECTOR: VendorSelector,
-    VNF_IMPORT: VNFImport
+    VNF_IMPORT: VNFImport,
+    FLOWS_EDITOR: FlowsEditor,
+    EP_EDITOR: EntitlementPoolsEditor,
+    FG_EDITOR: FeatureGroupEditor,
+    LA_EDITOR: LicenseAgreementEditor,
+    LKG_EDITOR: LicenseKeyGroupsEditor,
+    PROCESS_EDITOR: SoftwareProductProcessesEditor,
+    COMP_PROCESS_EDITOR: SoftwareProductComponentProcessesEditor
 };
index 9fb65f3..4ad7dcf 100644 (file)
@@ -1,22 +1,25 @@
-/*!
- * Copyright (C) 2017 AT&T Intellectual Property. All rights reserved.
+/*
+ * 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
+ *      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.
+ * 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 RestAPIUtil from 'nfvo-utils/RestAPIUtil.js';
 import Configuration from 'sdc-app/config/Configuration.js';
 import { actionTypes, enums } from './FlowsConstants.js';
 import SequenceDiagramModelHelper from './SequenceDiagramModelHelper.js';
+import { actionTypes as modalActionTypes } from 'nfvo-components/modal/GlobalModalConstants.js';
+import { modalContentMapper } from 'sdc-app/common/modal/ModalContentMapper.js';
+import i18n from 'nfvo-utils/i18n/i18n.js';
 
 function baseUrl(serviceId, artifactId = '') {
     const restCatalogPrefix = Configuration.get('restCatalogPrefix');
@@ -97,7 +100,7 @@ const FlowsActions = Object.freeze({
                 readonly
             });
             if (!readonly) {
-                FlowsActions.openFlowDetailsEditor(dispatch);
+                FlowsActions.openEditCreateWFModal(dispatch);
             }
         } else {
             Object.keys(artifacts).forEach(artifact =>
@@ -194,14 +197,6 @@ const FlowsActions = Object.freeze({
         );
     },
 
-    openFlowDetailsEditor(dispatch, flow) {
-        dispatch({ type: actionTypes.OPEN_FLOW_DETAILS_EDITOR, flow });
-    },
-
-    closeFlowDetailsEditor(dispatch) {
-        dispatch({ type: actionTypes.CLOSE_FLOW_DETAILS_EDITOR });
-    },
-
     openFlowDiagramEditor(dispatch, { flow }) {
         dispatch({ type: actionTypes.OPEN_FLOW_DIAGRAM_EDITOR, flow });
     },
@@ -212,6 +207,27 @@ const FlowsActions = Object.freeze({
 
     reset(dispatch) {
         dispatch({ type: actionTypes.RESET });
+    },
+    openEditCreateWFModal(dispatch, flow) {
+        dispatch({ type: actionTypes.OPEN_FLOW_DETAILS_EDITOR, flow });
+        dispatch({
+            type: modalActionTypes.GLOBAL_MODAL_SHOW,
+            data: {
+                modalComponentName: modalContentMapper.FLOWS_EDITOR,
+                modalComponentProps: {
+                    isNewArtifact: Boolean(flow && flow.uniqueId)
+                },
+                title: flow
+                    ? i18n('Edit Workflow')
+                    : i18n('Create New Workflow')
+            }
+        });
+    },
+    closeEditCreateWFModal(dispatch) {
+        dispatch({
+            type: modalActionTypes.GLOBAL_MODAL_CLOSE
+        });
+        dispatch({ type: actionTypes.CLOSE_FLOW_DETAILS_EDITOR });
     }
 });
 
index b45a9fc..4ef12fa 100644 (file)
@@ -1,17 +1,17 @@
-/*!
- * Copyright (C) 2017 AT&T Intellectual Property. All rights reserved.
+/*
+ * 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
+ *      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.
+ * 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 { connect } from 'react-redux';
 import FlowsEditorModalView from './FlowsEditorModalView.jsx';
@@ -50,10 +50,10 @@ export const mapStateToProps = ({ flows }) => {
 const mapActionsToProps = (dispatch, { isNewArtifact }) => {
     return {
         onSubmit: flow => {
-            FlowsActions.closeFlowDetailsEditor(dispatch);
+            FlowsActions.closeEditCreateWFModal(dispatch);
             FlowsActions.createOrUpdateFlow(dispatch, { flow }, isNewArtifact);
         },
-        onCancel: () => FlowsActions.closeFlowDetailsEditor(dispatch),
+        onCancel: () => FlowsActions.closeEditCreateWFModal(dispatch),
         onDataChanged: deltaData =>
             ValidationHelper.dataChanged(dispatch, {
                 deltaData,
index 8c805cc..6ac316e 100644 (file)
@@ -1,17 +1,17 @@
-/*!
- * Copyright (C) 2017 AT&T Intellectual Property. All rights reserved.
+/*
+ * 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
+ *      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.
+ * 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, { Component } from 'react';
 import i18n from 'nfvo-utils/i18n/i18n.js';
@@ -38,7 +38,8 @@ class FlowsEditorModalView extends Component {
                         onReset={onCancel}
                         formReady={formReady}
                         isValid={isFormValid}
-                        onValidateForm={() => onValidateForm()}>
+                        onValidateForm={() => onValidateForm()}
+                        btnClassName="sdc-modal__footer">
                         <Input
                             type="text"
                             name="name"
index 2718c19..c96415c 100644 (file)
@@ -1,17 +1,17 @@
-/*!
- * Copyright (C) 2017 AT&T Intellectual Property. All rights reserved.
+/*
+ * 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
+ *      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.
+ * 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 { connect } from 'react-redux';
 import FlowsActions from './FlowsActions.js';
@@ -20,8 +20,6 @@ import FlowsListEditorView from './FlowsListEditorView.jsx';
 export const mapStateToProps = ({ flows }) => {
     let {
         flowList = [],
-        isDisplayModal,
-        isModalInEditMode,
         shouldShowWorkflowsEditor = true,
         data = undefined,
         readonly
@@ -33,9 +31,7 @@ export const mapStateToProps = ({ flows }) => {
 
     return {
         flowList,
-        isDisplayModal,
         isCheckedOut,
-        isModalInEditMode,
         shouldShowWorkflowsEditor,
         currentFlow: data,
         readonly
@@ -44,9 +40,9 @@ export const mapStateToProps = ({ flows }) => {
 
 const mapActionsToProps = dispatch => {
     return {
-        onAddWorkflowClick: () => FlowsActions.openFlowDetailsEditor(dispatch),
+        onAddWorkflowClick: () => FlowsActions.openEditCreateWFModal(dispatch),
         onEditFlowDetailsClick: flow =>
-            FlowsActions.openFlowDetailsEditor(dispatch, flow),
+            FlowsActions.openEditCreateWFModal(dispatch, flow),
         onEditFlowDiagramClick: flow =>
             FlowsActions.fetchArtifact(dispatch, { flow }),
         onDeleteFlowClick: flow => FlowsActions.deleteFlow(dispatch, { flow }),
index d1c0c9a..f0a4635 100644 (file)
@@ -1,34 +1,30 @@
-/*!
- * Copyright (C) 2017 AT&T Intellectual Property. All rights reserved.
+/*
+ * 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
+ *      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.
+ * 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, { Component } from 'react';
 import PropTypes from 'prop-types';
 import i18n from 'nfvo-utils/i18n/i18n.js';
-import Modal from 'nfvo-components/modal/Modal.jsx';
 
 import ListEditorView from 'nfvo-components/listEditor/ListEditorView.jsx';
 import ListEditorItemView from 'nfvo-components/listEditor/ListEditorItemView.jsx';
-import FlowsEditorModal from './FlowsEditorModal.js';
 import SequenceDiagram from './SequenceDiagram.jsx';
 
 class FlowsListEditorView extends Component {
     static propTypes = {
         flowList: PropTypes.array,
         currentFlow: PropTypes.object,
-        isDisplayModal: PropTypes.bool,
-        isModalInEditMode: PropTypes.bool,
         isCheckedOut: PropTypes.bool,
         shouldShowWorkflowsEditor: PropTypes.bool,
         readonly: PropTypes.bool,
@@ -57,7 +53,7 @@ class FlowsListEditorView extends Component {
     }
 
     renderWorkflowsEditor() {
-        let { isDisplayModal, onAddWorkflowClick, isCheckedOut } = this.props;
+        let { onAddWorkflowClick, isCheckedOut } = this.props;
         const { localFilter } = this.state;
 
         return (
@@ -72,35 +68,10 @@ class FlowsListEditorView extends Component {
                         this.renderWorkflowListItem(flow, isCheckedOut)
                     )}
                 </ListEditorView>
-
-                {isDisplayModal && this.renderWorkflowEditorModal()}
             </div>
         );
     }
 
-    renderWorkflowEditorModal() {
-        let { isDisplayModal, isModalInEditMode } = this.props;
-        return (
-            <Modal
-                show={isDisplayModal}
-                animation={true}
-                className="onborading-modal workflows-editor-modal">
-                <Modal.Header>
-                    <Modal.Title>
-                        {`${
-                            isModalInEditMode
-                                ? i18n('Edit Workflow')
-                                : i18n('Create New Workflow')
-                        }`}
-                    </Modal.Title>
-                </Modal.Header>
-                <Modal.Body>
-                    <FlowsEditorModal isNewArtifact={!isModalInEditMode} />
-                </Modal.Body>
-            </Modal>
-        );
-    }
-
     renderSequenceDiagramTool() {
         let {
             onSequenceDiagramSaveClick,
index 0279824..56d389b 100644 (file)
@@ -1,17 +1,17 @@
-/*!
- * Copyright (C) 2017 AT&T Intellectual Property. All rights reserved.
+/*
+ * 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
+ *      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.
+ * 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, FLOWS_EDITOR_FORM } from './FlowsConstants.js';
 
@@ -71,17 +71,13 @@ export default (state = {}, action) => {
                         validations: [{ type: 'required', data: true }]
                     }
                 },
-                data: action.flow,
-                isDisplayModal: true,
-                isModalInEditMode: Boolean(action.flow && action.flow.uniqueId)
+                data: action.flow
             };
 
         case actionTypes.CLOSE_FLOW_DETAILS_EDITOR:
             return {
                 ...state,
-                data: undefined,
-                isDisplayModal: false,
-                isModalInEditMode: false
+                data: undefined
             };
         case actionTypes.OPEN_FLOW_DIAGRAM_EDITOR:
             return {
index 8f3347e..4fbbd1a 100644 (file)
@@ -18,7 +18,6 @@ import React from 'react';
 import PropTypes from 'prop-types';
 import i18n from 'nfvo-utils/i18n/i18n.js';
 import Button from 'sdc-ui/lib/react/Button.js';
-import GridSection from 'nfvo-components/grid/GridSection.jsx';
 
 const ModalButtons = ({
     isFormValid,
@@ -28,7 +27,7 @@ const ModalButtons = ({
     onCancel,
     className
 }) => (
-    <GridSection className={`license-model-modal-buttons ${className}`}>
+    <div className={`${className}`}>
         {!selectedLimit && (
             <Button
                 btnType="primary"
@@ -44,11 +43,11 @@ const ModalButtons = ({
             type="reset">
             {i18n('Cancel')}
         </Button>
-    </GridSection>
+    </div>
 );
 
 ModalButtons.propTypes = {
-    isFormValid: PropTypes.func,
+    isFormValid: PropTypes.bool,
     isReadOnlyMode: PropTypes.bool,
     onSubmit: PropTypes.func,
     selectedLimit: PropTypes.string,
index 2edfdae..66d50ca 100644 (file)
@@ -21,7 +21,7 @@ import i18n from 'nfvo-utils/i18n/i18n.js';
 const UuidElement = ({ title, value }) => (
     <div className="uuid-container">
         <div className="uuid-title">{title}</div>
-        <div className="uuid-value" selectable>
+        <div className="uuid-value" selectable="true">
             {value}
         </div>
     </div>
index 8c5d966..be1a42c 100644 (file)
@@ -4,9 +4,9 @@
  * 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.
@@ -41,7 +41,7 @@ class LicenseModelCreationView extends React.Component {
         let { data = {}, onDataChanged, genericFieldInfo } = this.props;
         let { vendorName, description } = data;
         return (
-            <div>
+            <div className="license-model-modal">
                 {genericFieldInfo && (
                     <Form
                         ref="validationForm"
@@ -52,6 +52,8 @@ class LicenseModelCreationView extends React.Component {
                         labledButtons={true}
                         isValid={this.props.isFormValid}
                         formReady={this.props.formReady}
+                        btnClassName="sdc-modal__footer"
+                        className="license-model-form"
                         onValidateForm={() => this.validate()}>
                         <Input
                             value={vendorName}
@@ -70,7 +72,6 @@ class LicenseModelCreationView extends React.Component {
                             errorText={genericFieldInfo.vendorName.errorText}
                             type="text"
                             isRequired={true}
-                            className="field-section"
                         />
                         <Input
                             isRequired={true}
@@ -87,7 +88,7 @@ class LicenseModelCreationView extends React.Component {
                             isValid={genericFieldInfo.description.isValid}
                             errorText={genericFieldInfo.description.errorText}
                             type="textarea"
-                            className="field-section"
+                            groupClassName="no-bottom-margin"
                         />
                     </Form>
                 )}
index ef705d6..dec7d9c 100644 (file)
@@ -20,6 +20,12 @@ import { actionTypes as entitlementPoolsActionTypes } from './EntitlementPoolsCo
 import { actionTypes as limitEditorActions } from 'sdc-app/onboarding/licenseModel/limits/LimitEditorConstants.js';
 import { default as getValue, getStrValue } from 'nfvo-utils/getValue.js';
 import ItemsHelper from 'sdc-app/common/helpers/ItemsHelper.js';
+import i18n from 'nfvo-utils/i18n/i18n.js';
+import {
+    actionTypes as modalActionTypes,
+    modalSizes
+} from 'nfvo-components/modal/GlobalModalConstants.js';
+import { modalContentMapper } from 'sdc-app/common/modal/ModalContentMapper.js';
 
 function baseUrl(licenseModelId, version) {
     const restPrefix = Configuration.get('restPrefix');
@@ -137,9 +143,9 @@ const EntitlementPoolsActionHelper = {
 
     openEntitlementPoolsEditor(
         dispatch,
-        { entitlementPool, licenseModelId, version } = {}
+        { entitlementPool, licenseModelId, version, isReadOnlyMode } = {}
     ) {
-        if (licenseModelId && version) {
+        if (licenseModelId && version && entitlementPool) {
             this.fetchLimits(dispatch, {
                 licenseModelId,
                 version,
@@ -150,6 +156,22 @@ const EntitlementPoolsActionHelper = {
             type: entitlementPoolsActionTypes.entitlementPoolsEditor.OPEN,
             entitlementPool
         });
+        dispatch({
+            type: modalActionTypes.GLOBAL_MODAL_SHOW,
+            data: {
+                modalComponentName: modalContentMapper.EP_EDITOR,
+                modalComponentProps: {
+                    version,
+                    licenseModelId,
+                    isReadOnlyMode,
+                    size: modalSizes.LARGE
+                },
+                title:
+                    licenseModelId && version && entitlementPool
+                        ? i18n('Edit Entitlement Pool')
+                        : i18n('Create New Entitlement Pool')
+            }
+        });
     },
 
     async deleteEntitlementPool(
@@ -181,6 +203,9 @@ const EntitlementPoolsActionHelper = {
         dispatch({
             type: entitlementPoolsActionTypes.entitlementPoolsEditor.CLOSE
         });
+        dispatch({
+            type: modalActionTypes.GLOBAL_MODAL_CLOSE
+        });
     },
 
     async saveEntitlementPool(
index d5ca81c..d0e91e3 100644 (file)
@@ -46,12 +46,27 @@ const EntitlementPoolPropType = PropTypes.shape({
     name: PropTypes.string,
     description: PropTypes.string,
     thresholdUnits: PropTypes.string,
-    thresholdValue: PropTypes.string,
+    thresholdValue: PropTypes.oneOfType([PropTypes.string, PropTypes.number]),
     increments: PropTypes.string,
     startDate: PropTypes.string,
     expiryDate: PropTypes.string
 });
 
+const TabButton = props => {
+    const { onClick, disabled, className } = props;
+    const dataTestId = props['data-test-id'];
+    return (
+        <div
+            className={className}
+            onClick={disabled ? undefined : onClick}
+            data-test-id={dataTestId}
+            role="tab"
+            disabled={disabled}>
+            {props.children}
+        </div>
+    );
+};
+
 class EntitlementPoolsEditorView extends React.Component {
     static propTypes = {
         data: EntitlementPoolPropType,
@@ -95,7 +110,7 @@ class EntitlementPoolsEditorView extends React.Component {
         const isTabsDisabled = !data.id || !this.props.isFormValid;
 
         return (
-            <div>
+            <div className="entitlement-pools-modal license-model-modal">
                 <Tabs
                     type="menu"
                     activeTab={selectedTab}
@@ -191,23 +206,29 @@ class EntitlementPoolsEditorView extends React.Component {
                         )}
                     </Tab>
                     {selectedTab !== tabIds.GENERAL ? (
-                        <Button
+                        <TabButton
+                            tabId={tabIds.ADD_LIMIT_BUTTON}
                             disabled={
-                                this.state.selectedLimit || isReadOnlyMode
+                                !!this.state.selectedLimit || isReadOnlyMode
                             }
-                            className="add-limit-button"
-                            tabId={tabIds.ADD_LIMIT_BUTTON}
-                            btnType="link"
-                            iconName="plus">
-                            {i18n('Add Limit')}
-                        </Button>
+                            data-test-id="add-limits-tab"
+                            className="add-limit-button">
+                            <Button
+                                disabled={
+                                    !!this.state.selectedLimit || isReadOnlyMode
+                                }
+                                btnType="link"
+                                iconName="plus">
+                                {i18n('Add Limit')}
+                            </Button>
+                        </TabButton>
                     ) : (
-                        <div key="empty_ep_tab_key" />
+                        <TabButton key="empty_ep_tab_key" />
                     ) // Render empty div to not break tabs
                     }
                 </Tabs>
                 <ModalButtons
-                    className="entitlement-pools-editor-buttons"
+                    className="sdc-modal__footer"
                     selectedLimit={this.state.selectedLimit}
                     isFormValid={this.props.isFormValid}
                     isReadOnlyMode={isReadOnlyMode}
index 4679b9e..93e78a7 100644 (file)
@@ -27,7 +27,6 @@ const mapStateToProps = ({
     licenseModel: { entitlementPool, licenseModelEditor }
 }) => {
     const { entitlementPoolsList } = entitlementPool;
-    const { data } = entitlementPool.entitlementPoolEditor;
     const { vendorName } = licenseModelEditor.data;
 
     return {
@@ -35,21 +34,27 @@ const mapStateToProps = ({
         entitlementPoolsList: sortByStringProperty(
             entitlementPoolsList,
             SORTING_PROPERTY_NAME
-        ),
-        isDisplayModal: Boolean(data),
-        isModalInEditMode: Boolean(data && data.id)
+        )
     };
 };
 
-const mapActionsToProps = (dispatch, { licenseModelId, version }) => {
+const mapActionsToProps = (
+    dispatch,
+    { licenseModelId, version, isReadOnlyMode }
+) => {
     return {
         onAddEntitlementPoolClick: () =>
-            EntitlementPoolsActionHelper.openEntitlementPoolsEditor(dispatch),
+            EntitlementPoolsActionHelper.openEntitlementPoolsEditor(dispatch, {
+                licenseModelId,
+                version,
+                isReadOnlyMode
+            }),
         onEditEntitlementPoolClick: entitlementPool =>
             EntitlementPoolsActionHelper.openEntitlementPoolsEditor(dispatch, {
                 entitlementPool,
                 licenseModelId,
-                version
+                version,
+                isReadOnlyMode
             }),
         onDeleteEntitlementPool: entitlementPool =>
             dispatch({
index 0648d66..2592687 100644 (file)
@@ -17,11 +17,9 @@ import React from 'react';
 import PropTypes from 'prop-types';
 
 import i18n from 'nfvo-utils/i18n/i18n.js';
-import Modal from 'nfvo-components/modal/Modal.jsx';
 import ListEditorView from 'nfvo-components/listEditor/ListEditorView.jsx';
 import ListEditorItemView from 'nfvo-components/listEditor/ListEditorItemView.jsx';
 
-import EntitlementPoolsEditor from './EntitlementPoolsEditor.js';
 import { extractUnits } from './EntitlementPoolsConstants';
 
 class EntitlementPoolsListEditorView extends React.Component {
@@ -46,14 +44,7 @@ class EntitlementPoolsListEditorView extends React.Component {
     };
 
     render() {
-        let {
-            licenseModelId,
-            isReadOnlyMode,
-            isDisplayModal,
-            isModalInEditMode,
-            version
-        } = this.props;
-        let { onAddEntitlementPoolClick } = this.props;
+        let { isReadOnlyMode, onAddEntitlementPoolClick } = this.props;
         const { localFilter } = this.state;
 
         return (
@@ -72,28 +63,6 @@ class EntitlementPoolsListEditorView extends React.Component {
                         )
                     )}
                 </ListEditorView>
-                <Modal
-                    show={isDisplayModal}
-                    bsSize="large"
-                    animation={true}
-                    className="onborading-modal license-model-modal entitlement-pools-modal">
-                    <Modal.Header>
-                        <Modal.Title>{`${
-                            isModalInEditMode
-                                ? i18n('Edit Entitlement Pool')
-                                : i18n('Create New Entitlement Pool')
-                        }`}</Modal.Title>
-                    </Modal.Header>
-                    <Modal.Body>
-                        {isDisplayModal && (
-                            <EntitlementPoolsEditor
-                                version={version}
-                                licenseModelId={licenseModelId}
-                                isReadOnlyMode={isReadOnlyMode}
-                            />
-                        )}
-                    </Modal.Body>
-                </Modal>
             </div>
         );
     }
index 531b6b7..b734a88 100644 (file)
@@ -161,11 +161,13 @@ export const EntitlementPoolsFormContent = ({
                     data-test-id="create-ep-manufacturerReferenceNumber-value"
                     value={manufacturerReferenceNumber}
                     type="text"
+                    groupClassName="no-bottom-margin"
                 />
             </GridItem>
             <GridItem colSpan={2} lastColInRow>
                 <div className="date-section">
                     <Input
+                        groupClassName="no-bottom-margin"
                         type="date"
                         label={i18n('Start Date')}
                         value={startDate}
@@ -188,6 +190,7 @@ export const EntitlementPoolsFormContent = ({
                         selectsStart
                     />
                     <Input
+                        groupClassName="no-bottom-margin"
                         type="date"
                         label={i18n('Expiry Date')}
                         value={expiryDate}
index d80eb9a..2a9af15 100644 (file)
@@ -85,7 +85,7 @@ const GeneralTab = ({
             </GridItem>
             <GridItem colSpan={4}>
                 <Input
-                    groupClassName="field-section"
+                    groupClassName="field-section no-bottom-margin"
                     onChange={partNumber =>
                         onDataChanged({ partNumber }, FG_EDITOR_FORM)
                     }
@@ -203,7 +203,7 @@ class FeatureGroupEditorView extends React.Component {
             licenseKeyGroupsList
         } = this.props;
         return (
-            <div>
+            <div className="license-model-modal feature-group-modal">
                 {genericFieldInfo && (
                     <Form
                         ref="validationForm"
@@ -218,6 +218,7 @@ class FeatureGroupEditorView extends React.Component {
                         labledButtons={true}
                         isReadOnlyMode={isReadOnlyMode}
                         name="feature-group-validation-form"
+                        btnClassName="sdc-modal__footer"
                         className="license-model-form feature-group-form">
                         <Tabs
                             activeTab={onTabSelect ? selectedTab : undefined}
index 8d41b97..fe4eb58 100644 (file)
@@ -26,16 +26,12 @@ import { SORTING_PROPERTY_NAME } from 'sdc-app/onboarding/licenseModel/LicenseMo
 export const mapStateToProps = ({
     licenseModel: { featureGroup, licenseModelEditor }
 }) => {
-    const { featureGroupEditor: { data }, featureGroupsList } = featureGroup;
+    const { featureGroupsList } = featureGroup;
     const { vendorName, version } = licenseModelEditor.data;
 
     return {
         vendorName,
         version,
-        featureGroupsModal: {
-            show: Boolean(data),
-            editMode: Boolean(data && data.id)
-        },
         featureGroupsList: sortByStringProperty(
             featureGroupsList,
             SORTING_PROPERTY_NAME
@@ -63,13 +59,19 @@ const mapActionsToProps = (dispatch, { licenseModelId }) => {
         onAddFeatureGroupClick: actualVersion =>
             FeatureGroupsActionHelper.openFeatureGroupsEditor(dispatch, {
                 licenseModelId,
-                version: actualVersion
+                version: actualVersion,
+                isReadOnlyMode: false
             }),
-        onEditFeatureGroupClick: (featureGroup, actualVersion) =>
+        onEditFeatureGroupClick: (
+            featureGroup,
+            actualVersion,
+            isReadOnlyMode
+        ) =>
             FeatureGroupsActionHelper.openFeatureGroupsEditor(dispatch, {
                 featureGroup,
                 licenseModelId,
-                version: actualVersion
+                version: actualVersion,
+                isReadOnlyMode
             })
     };
 };
index 92468a3..6396443 100644 (file)
@@ -17,20 +17,13 @@ import React from 'react';
 import PropTypes from 'prop-types';
 
 import i18n from 'nfvo-utils/i18n/i18n.js';
-import Modal from 'nfvo-components/modal/Modal.jsx';
 import ListEditorView from 'nfvo-components/listEditor/ListEditorView.jsx';
 import ListEditorItemView from 'nfvo-components/listEditor/ListEditorItemView.jsx';
 
-import FeatureGroupEditor from './FeatureGroupEditor.js';
-
 class FeatureGroupListEditorView extends React.Component {
     static propTypes = {
         vendorName: PropTypes.string,
         licenseModelId: PropTypes.string.isRequired,
-        featureGroupsModal: PropTypes.shape({
-            show: PropTypes.bool,
-            editMode: PropTypes.bool
-        }),
         isReadOnlyMode: PropTypes.bool.isRequired,
         onAddFeatureGroupClick: PropTypes.func,
         onEditFeatureGroupClick: PropTypes.func,
@@ -40,11 +33,7 @@ class FeatureGroupListEditorView extends React.Component {
     };
 
     static defaultProps = {
-        featureGroupsList: [],
-        featureGroupsModal: {
-            show: false,
-            editMode: false
-        }
+        featureGroupsList: []
     };
 
     state = {
@@ -52,13 +41,7 @@ class FeatureGroupListEditorView extends React.Component {
     };
 
     render() {
-        let {
-            licenseModelId,
-            featureGroupsModal,
-            isReadOnlyMode,
-            onAddFeatureGroupClick,
-            version
-        } = this.props;
+        let { isReadOnlyMode, onAddFeatureGroupClick, version } = this.props;
         const { localFilter } = this.state;
         return (
             <div className="license-model-list-editor feature-groups-list-editor">
@@ -77,28 +60,6 @@ class FeatureGroupListEditorView extends React.Component {
                         )
                     )}
                 </ListEditorView>
-                {featureGroupsModal.show && (
-                    <Modal
-                        show={featureGroupsModal.show}
-                        bsSize="large"
-                        animation={true}
-                        className="onborading-modal license-model-modal feature-group-modal">
-                        <Modal.Header>
-                            <Modal.Title>{`${
-                                featureGroupsModal.editMode
-                                    ? i18n('Edit Feature Group')
-                                    : i18n('Create New Feature Group')
-                            }`}</Modal.Title>
-                        </Modal.Header>
-                        <Modal.Body>
-                            <FeatureGroupEditor
-                                version={version}
-                                licenseModelId={licenseModelId}
-                                isReadOnlyMode={isReadOnlyMode}
-                            />
-                        </Modal.Body>
-                    </Modal>
-                )}
             </div>
         );
     }
@@ -114,7 +75,9 @@ class FeatureGroupListEditorView extends React.Component {
             <ListEditorItemView
                 key={listItem.id}
                 onDelete={() => this.deleteFeatureGroupItem(listItem, version)}
-                onSelect={() => this.editFeatureGroupItem(listItem, version)}
+                onSelect={() =>
+                    this.editFeatureGroupItem(listItem, version, isReadOnlyMode)
+                }
                 className="list-editor-item-view"
                 isReadOnlyMode={isReadOnlyMode}>
                 <div className="list-editor-item-view-field">
index 22e21a6..c6479a7 100644 (file)
@@ -1,17 +1,17 @@
-/*!
- * Copyright (C) 2017 AT&T Intellectual Property. All rights reserved.
+/*
+ * 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
+ *      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.
+ * 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 RestAPIUtil from 'nfvo-utils/RestAPIUtil.js';
 import Configuration from 'sdc-app/config/Configuration.js';
@@ -19,6 +19,12 @@ import { actionTypes as featureGroupsActionConstants } from './FeatureGroupsCons
 import EntitlementPoolsActionHelper from 'sdc-app/onboarding/licenseModel/entitlementPools/EntitlementPoolsActionHelper.js';
 import LicenseKeyGroupsActionHelper from 'sdc-app/onboarding/licenseModel/licenseKeyGroups/LicenseKeyGroupsActionHelper.js';
 import ItemsHelper from 'sdc-app/common/helpers/ItemsHelper.js';
+import {
+    actionTypes as modalActionTypes,
+    modalSizes
+} from 'nfvo-components/modal/GlobalModalConstants.js';
+import { modalContentMapper } from 'sdc-app/common/modal/ModalContentMapper.js';
+import i18n from 'nfvo-utils/i18n/i18n.js';
 
 function baseUrl(licenseModelId, version) {
     const restPrefix = Configuration.get('restPrefix');
@@ -189,7 +195,7 @@ export default {
 
     openFeatureGroupsEditor(
         dispatch,
-        { featureGroup, licenseModelId, version }
+        { featureGroup, licenseModelId, version, isReadOnlyMode }
     ) {
         return Promise.all([
             EntitlementPoolsActionHelper.fetchEntitlementPoolsList(dispatch, {
@@ -205,6 +211,26 @@ export default {
                 type: featureGroupsActionConstants.featureGroupsEditor.OPEN,
                 featureGroup
             });
+            dispatch({
+                type: featureGroupsActionConstants.featureGroupsEditor.OPEN,
+                featureGroup
+            });
+            dispatch({
+                type: modalActionTypes.GLOBAL_MODAL_SHOW,
+                data: {
+                    modalComponentName: modalContentMapper.FG_EDITOR,
+                    modalComponentProps: {
+                        version,
+                        licenseModelId,
+                        isReadOnlyMode,
+                        size: modalSizes.LARGE
+                    },
+                    title:
+                        licenseModelId && version && featureGroup
+                            ? i18n('Edit Feature Group')
+                            : i18n('Create New Feature Group')
+                }
+            });
         });
     },
 
@@ -212,5 +238,8 @@ export default {
         dispatch({
             type: featureGroupsActionConstants.featureGroupsEditor.CLOSE
         });
+        dispatch({
+            type: modalActionTypes.GLOBAL_MODAL_CLOSE
+        });
     }
 };
index feceba5..036aaaa 100644 (file)
@@ -1,23 +1,29 @@
-/*!
- * Copyright (C) 2017 AT&T Intellectual Property. All rights reserved.
+/*
+ * 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
+ *      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.
+ * 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 RestAPIUtil from 'nfvo-utils/RestAPIUtil.js';
 import Configuration from 'sdc-app/config/Configuration.js';
 import { actionTypes as licenseAgreementActionTypes } from './LicenseAgreementConstants.js';
 import FeatureGroupsActionHelper from 'sdc-app/onboarding/licenseModel/featureGroups/FeatureGroupsActionHelper.js';
 import ItemsHelper from 'sdc-app/common/helpers/ItemsHelper.js';
+import {
+    actionTypes as modalActionTypes,
+    modalSizes
+} from 'nfvo-components/modal/GlobalModalConstants.js';
+import { modalContentMapper } from 'sdc-app/common/modal/ModalContentMapper.js';
+import i18n from 'nfvo-utils/i18n/i18n.js';
 
 function baseUrl(licenseModelId, version) {
     const restPrefix = Configuration.get('restPrefix');
@@ -103,7 +109,7 @@ export default {
 
     openLicenseAgreementEditor(
         dispatch,
-        { licenseModelId, licenseAgreement, version }
+        { licenseModelId, licenseAgreement, version, isReadOnlyMode }
     ) {
         FeatureGroupsActionHelper.fetchFeatureGroupsList(dispatch, {
             licenseModelId,
@@ -113,12 +119,31 @@ export default {
             type: licenseAgreementActionTypes.licenseAgreementEditor.OPEN,
             licenseAgreement
         });
+        dispatch({
+            type: modalActionTypes.GLOBAL_MODAL_SHOW,
+            data: {
+                modalComponentName: modalContentMapper.LA_EDITOR,
+                modalComponentProps: {
+                    version,
+                    licenseModelId,
+                    isReadOnlyMode,
+                    size: modalSizes.LARGE
+                },
+                title:
+                    licenseModelId && version && licenseAgreement
+                        ? i18n('Edit License Agreement')
+                        : i18n('Create New License Agreement')
+            }
+        });
     },
 
     closeLicenseAgreementEditor(dispatch) {
         dispatch({
             type: licenseAgreementActionTypes.licenseAgreementEditor.CLOSE
         });
+        dispatch({
+            type: modalActionTypes.GLOBAL_MODAL_CLOSE
+        });
     },
 
     async saveLicenseAgreement(
index b2ebc1e..b54c080 100644 (file)
@@ -1,17 +1,17 @@
-/*!
- * Copyright (C) 2017 AT&T Intellectual Property. All rights reserved.
+/*
+ * 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
+ *      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.
+ * 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';
@@ -77,7 +77,12 @@ const GeneralTabContent = ({
                     isMultiSelect={false}
                     onEnumChange={licenseTerm =>
                         onDataChanged(
-                            { licenseTerm: { choice: licenseTerm, other: '' } },
+                            {
+                                licenseTerm: {
+                                    choice: licenseTerm,
+                                    other: ''
+                                }
+                            },
                             LA_EDITOR_FORM
                         )
                     }
@@ -163,7 +168,7 @@ class LicenseAgreementEditorView extends React.Component {
             genericFieldInfo
         } = this.props;
         return (
-            <div>
+            <div className="license-model-modal license-agreement-modal">
                 {genericFieldInfo && (
                     <Form
                         ref="validationForm"
@@ -177,7 +182,8 @@ class LicenseAgreementEditorView extends React.Component {
                         onValidateForm={() =>
                             this.props.onValidateForm(LA_EDITOR_FORM)
                         }
-                        className="license-model-form license-agreement-form">
+                        className="license-model-form license-agreement-form"
+                        btnClassName="sdc-modal__footer">
                         <Tabs
                             activeTab={onTabSelect ? selectedTab : undefined}
                             onTabClick={onTabSelect}
index fcb83b4..6151ad7 100644 (file)
@@ -25,7 +25,6 @@ const mapStateToProps = ({
     licenseModel: { licenseAgreement, licenseModelEditor }
 }) => {
     let { licenseAgreementList } = licenseAgreement;
-    let { data } = licenseAgreement.licenseAgreementEditor;
     let { vendorName, version } = licenseModelEditor.data;
 
     return {
@@ -34,9 +33,7 @@ const mapStateToProps = ({
         licenseAgreementList: sortByStringProperty(
             licenseAgreementList,
             SORTING_PROPERTY_NAME
-        ),
-        isDisplayModal: Boolean(data),
-        isModalInEditMode: Boolean(data && data.id)
+        )
     };
 };
 
@@ -45,13 +42,19 @@ const mapActionsToProps = (dispatch, { licenseModelId }) => {
         onAddLicenseAgreementClick: version =>
             LicenseAgreementActionHelper.openLicenseAgreementEditor(dispatch, {
                 licenseModelId,
-                version
+                version,
+                isReadOnlyMode: false
             }),
-        onEditLicenseAgreementClick: (licenseAgreement, version) =>
+        onEditLicenseAgreementClick: (
+            licenseAgreement,
+            version,
+            isReadOnlyMode
+        ) =>
             LicenseAgreementActionHelper.openLicenseAgreementEditor(dispatch, {
                 licenseModelId,
                 licenseAgreement,
-                version
+                version,
+                isReadOnlyMode
             }),
         onDeleteLicenseAgreement: (licenseAgreement, version) =>
             dispatch({
index acec1e0..b6ef7cf 100644 (file)
@@ -1,26 +1,24 @@
-/*!
- * Copyright (C) 2017 AT&T Intellectual Property. All rights reserved.
+/*
+ * 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
+ *      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.
+ * 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 i18n from 'nfvo-utils/i18n/i18n.js';
-import Modal from 'nfvo-components/modal/Modal.jsx';
 
 import ListEditorView from 'nfvo-components/listEditor/ListEditorView.jsx';
 import ListEditorItemView from 'nfvo-components/listEditor/ListEditorItemView.jsx';
-import LicenseAgreementEditor from './LicenseAgreementEditor.js';
 import { extractValue } from './LicenseAgreementConstants';
 
 class LicenseAgreementListEditorView extends React.Component {
@@ -45,13 +43,7 @@ class LicenseAgreementListEditorView extends React.Component {
     };
 
     render() {
-        const {
-            licenseModelId,
-            isReadOnlyMode,
-            isDisplayModal,
-            isModalInEditMode,
-            version
-        } = this.props;
+        const { isReadOnlyMode, version } = this.props;
         const { onAddLicenseAgreementClick } = this.props;
         const { localFilter } = this.state;
 
@@ -72,28 +64,6 @@ class LicenseAgreementListEditorView extends React.Component {
                         )
                     )}
                 </ListEditorView>
-                <Modal
-                    show={isDisplayModal}
-                    bsSize="large"
-                    animation={true}
-                    className="onborading-modal license-model-modal license-agreement-modal">
-                    <Modal.Header>
-                        <Modal.Title>{`${
-                            isModalInEditMode
-                                ? i18n('Edit License Agreement')
-                                : i18n('Create New License Agreement')
-                        }`}</Modal.Title>
-                    </Modal.Header>
-                    <Modal.Body>
-                        {isDisplayModal && (
-                            <LicenseAgreementEditor
-                                version={version}
-                                licenseModelId={licenseModelId}
-                                isReadOnlyMode={isReadOnlyMode}
-                            />
-                        )}
-                    </Modal.Body>
-                </Modal>
             </div>
         );
     }
@@ -133,7 +103,11 @@ class LicenseAgreementListEditorView extends React.Component {
             <ListEditorItemView
                 key={id}
                 onSelect={() =>
-                    onEditLicenseAgreementClick(licenseAgreement, version)
+                    onEditLicenseAgreementClick(
+                        licenseAgreement,
+                        version,
+                        isReadOnlyMode
+                    )
                 }
                 onDelete={() =>
                     onDeleteLicenseAgreement(licenseAgreement, version)
index 53276ca..c9f0505 100644 (file)
@@ -19,6 +19,12 @@ import { actionTypes as licenseKeyGroupsConstants } from './LicenseKeyGroupsCons
 import { actionTypes as limitEditorActions } from 'sdc-app/onboarding/licenseModel/limits/LimitEditorConstants.js';
 import { default as getValue, getStrValue } from 'nfvo-utils/getValue.js';
 import ItemsHelper from 'sdc-app/common/helpers/ItemsHelper.js';
+import i18n from 'nfvo-utils/i18n/i18n.js';
+import {
+    actionTypes as modalActionTypes,
+    modalSizes
+} from 'nfvo-components/modal/GlobalModalConstants.js';
+import { modalContentMapper } from 'sdc-app/common/modal/ModalContentMapper.js';
 
 function baseUrl(licenseModelId, version) {
     const restPrefix = Configuration.get('restPrefix');
@@ -131,9 +137,9 @@ export default {
 
     openLicenseKeyGroupsEditor(
         dispatch,
-        { licenseKeyGroup, licenseModelId, version } = {}
+        { licenseKeyGroup, licenseModelId, version, isReadOnlyMode } = {}
     ) {
-        if (licenseModelId && version) {
+        if (licenseModelId && version && licenseKeyGroup) {
             this.fetchLimits(dispatch, {
                 licenseModelId,
                 version,
@@ -144,12 +150,31 @@ export default {
             type: licenseKeyGroupsConstants.licenseKeyGroupsEditor.OPEN,
             licenseKeyGroup
         });
+        dispatch({
+            type: modalActionTypes.GLOBAL_MODAL_SHOW,
+            data: {
+                modalComponentName: modalContentMapper.LKG_EDITOR,
+                modalComponentProps: {
+                    version,
+                    licenseModelId,
+                    isReadOnlyMode,
+                    size: modalSizes.LARGE
+                },
+                title:
+                    licenseModelId && version && licenseKeyGroup
+                        ? i18n('Edit License Key Group')
+                        : i18n('Create New License Key Group')
+            }
+        });
     },
 
     closeLicenseKeyGroupEditor(dispatch) {
         dispatch({
             type: licenseKeyGroupsConstants.licenseKeyGroupsEditor.CLOSE
         });
+        dispatch({
+            type: modalActionTypes.GLOBAL_MODAL_CLOSE
+        });
     },
 
     async saveLicenseKeyGroup(
index 8f21722..219f2dc 100644 (file)
@@ -39,6 +39,21 @@ import {
 import LicenseKeyGroupFormContent from './components/FormContent.jsx';
 import ModalButtons from 'sdc-app/onboarding/licenseModel/components/ModalButtons.jsx';
 
+const TabButton = props => {
+    const { onClick, disabled, className } = props;
+    const dataTestId = props['data-test-id'];
+    return (
+        <div
+            className={className}
+            onClick={disabled ? undefined : onClick}
+            data-test-id={dataTestId}
+            role="tab"
+            disabled={disabled}>
+            {props.children}
+        </div>
+    );
+};
+
 const LicenseKeyGroupPropType = PropTypes.shape({
     id: PropTypes.string,
     name: PropTypes.string,
@@ -94,7 +109,7 @@ class LicenseKeyGroupsEditorView extends React.Component {
         let { selectedTab } = this.state;
         const isTabsDisabled = !data.id || !this.props.isFormValid;
         return (
-            <div className="license-keygroup-editor">
+            <div className="license-keygroup-editor license-model-modal license-key-groups-modal">
                 <Tabs
                     type="menu"
                     activeTab={selectedTab}
@@ -187,23 +202,29 @@ class LicenseKeyGroupsEditorView extends React.Component {
                         )}
                     </Tab>
                     {selectedTab !== tabIds.GENERAL ? (
-                        <Button
-                            className="add-limit-button"
+                        <TabButton
                             tabId={tabIds.ADD_LIMIT_BUTTON}
-                            btnType="link"
-                            iconName="plus"
                             disabled={
-                                this.state.selectedLimit || isReadOnlyMode
-                            }>
-                            {i18n('Add Limit')}
-                        </Button>
+                                !!this.state.selectedLimit || isReadOnlyMode
+                            }
+                            data-test-id="add-limits-tab"
+                            className="add-limit-button">
+                            <Button
+                                btnType="link"
+                                iconName="plus"
+                                disabled={
+                                    !!this.state.selectedLimit || isReadOnlyMode
+                                }>
+                                {i18n('Add Limit')}
+                            </Button>
+                        </TabButton>
                     ) : (
-                        <div key="empty_lm_tab_key" />
+                        <TabButton key="empty_lm_tab_key" />
                     ) // Render empty div to not break tabs
                     }
                 </Tabs>
                 <ModalButtons
-                    className="license-key-group-editor-buttons"
+                    className="sdc-modal__footer"
                     selectedLimit={this.state.selectedLimit}
                     isFormValid={this.props.isFormValid}
                     isReadOnlyMode={isReadOnlyMode}
index 514e9b8..47d3979 100644 (file)
@@ -29,7 +29,6 @@ const mapStateToProps = ({
     licenseModel: { licenseKeyGroup, licenseModelEditor }
 }) => {
     let { licenseKeyGroupsList } = licenseKeyGroup;
-    let { data } = licenseKeyGroup.licenseKeyGroupsEditor;
     let { vendorName } = licenseModelEditor.data;
 
     return {
@@ -37,21 +36,24 @@ const mapStateToProps = ({
         licenseKeyGroupsList: sortByStringProperty(
             licenseKeyGroupsList,
             SORTING_PROPERTY_NAME
-        ),
-        isDisplayModal: Boolean(data),
-        isModalInEditMode: Boolean(data && data.id)
+        )
     };
 };
 
 const mapActionsToProps = (dispatch, { licenseModelId, version }) => {
     return {
         onAddLicenseKeyGroupClick: () =>
-            LicenseKeyGroupsActionHelper.openLicenseKeyGroupsEditor(dispatch),
-        onEditLicenseKeyGroupClick: licenseKeyGroup =>
+            LicenseKeyGroupsActionHelper.openLicenseKeyGroupsEditor(dispatch, {
+                isReadOnlyMode: false,
+                version,
+                licenseModelId
+            }),
+        onEditLicenseKeyGroupClick: (licenseKeyGroup, isReadOnlyMode) =>
             LicenseKeyGroupsActionHelper.openLicenseKeyGroupsEditor(dispatch, {
                 licenseKeyGroup,
                 licenseModelId,
-                version
+                version,
+                isReadOnlyMode
             }),
         onDeleteLicenseKeyGroupClick: licenseKeyGroup =>
             dispatch({
index 09bab1c..2394ec8 100644 (file)
 import React from 'react';
 import PropTypes from 'prop-types';
 import i18n from 'nfvo-utils/i18n/i18n.js';
-import Modal from 'nfvo-components/modal/Modal.jsx';
 import ListEditorView from 'nfvo-components/listEditor/ListEditorView.jsx';
 import ListEditorItemView from 'nfvo-components/listEditor/ListEditorItemView.jsx';
 
-import LicenseKeyGroupsEditor from './LicenseKeyGroupsEditor.js';
 import InputOptions, {
     other as optionInputOther
 } from 'nfvo-components/input/validation/InputOptions.jsx';
@@ -32,8 +30,6 @@ class LicenseKeyGroupsListEditorView extends React.Component {
         licenseModelId: PropTypes.string.isRequired,
         licenseKeyGroupsList: PropTypes.array,
         isReadOnlyMode: PropTypes.bool.isRequired,
-        isDisplayModal: PropTypes.bool,
-        isModalInEditMode: PropTypes.bool,
         onAddLicenseKeyGroupClick: PropTypes.func,
         onEditLicenseKeyGroupClick: PropTypes.func,
         onDeleteLicenseKeyGroupClick: PropTypes.func
@@ -48,13 +44,7 @@ class LicenseKeyGroupsListEditorView extends React.Component {
     };
 
     render() {
-        let {
-            licenseModelId,
-            isReadOnlyMode,
-            isDisplayModal,
-            isModalInEditMode,
-            version
-        } = this.props;
+        let { isReadOnlyMode } = this.props;
         let { onAddLicenseKeyGroupClick } = this.props;
         const { localFilter } = this.state;
 
@@ -74,28 +64,6 @@ class LicenseKeyGroupsListEditorView extends React.Component {
                         )
                     )}
                 </ListEditorView>
-                <Modal
-                    show={isDisplayModal}
-                    bsSize="large"
-                    animation={true}
-                    className="onborading-modal license-model-modal license-key-groups-modal">
-                    <Modal.Header>
-                        <Modal.Title>{`${
-                            isModalInEditMode
-                                ? i18n('Edit License Key Group')
-                                : i18n('Create New License Key Group')
-                        }`}</Modal.Title>
-                    </Modal.Header>
-                    <Modal.Body>
-                        {isDisplayModal && (
-                            <LicenseKeyGroupsEditor
-                                version={version}
-                                licenseModelId={licenseModelId}
-                                isReadOnlyMode={isReadOnlyMode}
-                            />
-                        )}
-                    </Modal.Body>
-                </Modal>
             </div>
         );
     }
@@ -134,7 +102,9 @@ class LicenseKeyGroupsListEditorView extends React.Component {
         return (
             <ListEditorItemView
                 key={id}
-                onSelect={() => onEditLicenseKeyGroupClick(licenseKeyGroup)}
+                onSelect={() =>
+                    onEditLicenseKeyGroupClick(licenseKeyGroup, isReadOnlyMode)
+                }
                 onDelete={() => onDeleteLicenseKeyGroupClick(licenseKeyGroup)}
                 className="list-editor-item-view"
                 isReadOnlyMode={isReadOnlyMode}>
index 4d19ed3..c2c62b1 100644 (file)
@@ -211,6 +211,7 @@ const LicenseKeyGroupFormContent = ({
                     value={manufacturerReferenceNumber}
                     data-test-id="create-ep-mrn"
                     type="text"
+                    groupClassName="no-bottom-margin"
                 />
             </GridItem>
 
@@ -223,6 +224,7 @@ const LicenseKeyGroupFormContent = ({
                     value={increments}
                     data-test-id="create-ep-increments"
                     type="text"
+                    groupClassName="no-bottom-margin"
                 />
             </GridItem>
             {id && versionUUID && <UuId id={id} versionUUID={versionUUID} />}
index 6899360..c2d6f8e 100644 (file)
@@ -1,52 +1,28 @@
-/*!
- * Copyright (C) 2017 AT&T Intellectual Property. All rights reserved.
+/*
+ * 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
+ *      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.
+ * 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 i18n from 'nfvo-utils/i18n/i18n.js';
-import Modal from 'nfvo-components/modal/Modal.jsx';
 import classNames from 'classnames';
 
-import EntitlementPoolsEditor from '../entitlementPools/EntitlementPoolsEditor.js';
-import FeatureGroupEditor from '../featureGroups/FeatureGroupEditor.js';
-import LicenseAgreementEditor from '../licenseAgreement/LicenseAgreementEditor.js';
-import LicenseKeyGroupsEditor from '../licenseKeyGroups/LicenseKeyGroupsEditor.js';
-import {
-    overviewEditorHeaders,
-    selectedButton
-} from './LicenseModelOverviewConstants.js';
+import { selectedButton } from './LicenseModelOverviewConstants.js';
 
 import SummaryView from './SummaryView.jsx';
 import VLMListView from './VLMListView.jsx';
 import ListButtons from './summary/ListButtons.jsx';
 
-const setModalClassName = modalHeader => {
-    switch (modalHeader) {
-        case overviewEditorHeaders.ENTITLEMENT_POOL:
-            return 'entitlement-pools-modal';
-        case overviewEditorHeaders.LICENSE_AGREEMENT:
-            return 'license-agreement-modal';
-        case overviewEditorHeaders.FEATURE_GROUP:
-            return 'feature-group-modal';
-        case overviewEditorHeaders.LICENSE_KEY_GROUP:
-            return 'license-key-groups-modal';
-        default:
-            return '';
-    }
-};
-
 class LicenseModelOverviewView extends React.Component {
     static propTypes = {
         isDisplayModal: PropTypes.bool,
@@ -63,8 +39,6 @@ class LicenseModelOverviewView extends React.Component {
 
     render() {
         let {
-            isDisplayModal,
-            modalHeader,
             licensingDataList,
             selectedTab,
             onTabSelect,
@@ -94,66 +68,9 @@ class LicenseModelOverviewView extends React.Component {
                         showInUse={selectedInUse}
                     />
                 </div>
-                {isDisplayModal && (
-                    <Modal
-                        show={isDisplayModal}
-                        bsSize="large"
-                        animation={true}
-                        className={classNames(
-                            'onborading-modal license-model-modal',
-                            setModalClassName(modalHeader)
-                        )}>
-                        <Modal.Header>
-                            <Modal.Title>{`${i18n('Create New ')}${i18n(
-                                modalHeader
-                            )}`}</Modal.Title>
-                        </Modal.Header>
-                        <Modal.Body>
-                            {this.renderModalBody(modalHeader)}
-                        </Modal.Body>
-                    </Modal>
-                )}
             </div>
         );
     }
-
-    renderModalBody(modalHeader) {
-        let { licenseModelId, version, isReadOnlyMode } = this.props;
-        switch (modalHeader) {
-            case overviewEditorHeaders.ENTITLEMENT_POOL:
-                return (
-                    <EntitlementPoolsEditor
-                        version={version}
-                        licenseModelId={licenseModelId}
-                        isReadOnlyMode={isReadOnlyMode}
-                    />
-                );
-            case overviewEditorHeaders.LICENSE_AGREEMENT:
-                return (
-                    <LicenseAgreementEditor
-                        version={version}
-                        licenseModelId={licenseModelId}
-                        isReadOnlyMode={isReadOnlyMode}
-                    />
-                );
-            case overviewEditorHeaders.FEATURE_GROUP:
-                return (
-                    <FeatureGroupEditor
-                        version={version}
-                        licenseModelId={licenseModelId}
-                        isReadOnlyMode={isReadOnlyMode}
-                    />
-                );
-            case overviewEditorHeaders.LICENSE_KEY_GROUP:
-                return (
-                    <LicenseKeyGroupsEditor
-                        version={version}
-                        licenseModelId={licenseModelId}
-                        isReadOnlyMode={isReadOnlyMode}
-                    />
-                );
-        }
-    }
 }
 
 export default LicenseModelOverviewView;
index 711bb7a..6ce42a5 100644 (file)
@@ -1,17 +1,17 @@
-/*!
- * Copyright (C) 2017 AT&T Intellectual Property. All rights reserved.
+/*
+ * 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
+ *      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.
+ * 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 { connect } from 'react-redux';
@@ -68,7 +68,12 @@ const mapActionsToProps = dispatch => {
             switch (name) {
                 case overviewItems.ENTITLEMENT_POOLS:
                     EntitlementPoolsActionHelper.openEntitlementPoolsEditor(
-                        dispatch
+                        dispatch,
+                        {
+                            licenseModelId,
+                            version,
+                            isReadOnlyMode: false
+                        }
                     );
                     break;
                 case overviewItems.FEATURE_GROUPS:
@@ -76,7 +81,8 @@ const mapActionsToProps = dispatch => {
                         dispatch,
                         {
                             licenseModelId,
-                            version
+                            version,
+                            isReadOnlyMode: false
                         }
                     );
                     break;
@@ -85,13 +91,19 @@ const mapActionsToProps = dispatch => {
                         dispatch,
                         {
                             licenseModelId,
-                            version
+                            version,
+                            isReadOnlyMode: false
                         }
                     );
                     break;
                 case overviewItems.LICENSE_KEY_GROUPS:
                     LicenseKeyGroupsActionHelper.openLicenseKeyGroupsEditor(
-                        dispatch
+                        dispatch,
+                        {
+                            licenseModelId,
+                            version,
+                            isReadOnlyMode: false
+                        }
                     );
                     break;
                 default:
index 7f361d2..4e27c39 100644 (file)
@@ -1,17 +1,17 @@
-/*!
- * Copyright (C) 2017 AT&T Intellectual Property. All rights reserved.
+/*
+ * 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
+ *      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.
+ * 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';
@@ -101,8 +101,8 @@ const CatalogItemDetails = ({
     );
 };
 
-CatalogItemDetails.PropTypes = {
-    catalogItemData: PropTypes.obj,
+CatalogItemDetails.propTypes = {
+    catalogItemData: PropTypes.object,
     catalogItemTypeClass: PropTypes.string,
     onSelect: PropTypes.func,
     onMigrate: PropTypes.func
diff --git a/openecomp-ui/src/sdc-app/onboarding/onboard/CatalogModal.jsx b/openecomp-ui/src/sdc-app/onboarding/onboard/CatalogModal.jsx
deleted file mode 100644 (file)
index 90496c9..0000000
+++ /dev/null
@@ -1,65 +0,0 @@
-/*!
- * Copyright (C) 2017 AT&T Intellectual Property. All rights reserved.
- *
- * 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 {
-    modalMapper,
-    catalogItemTypes,
-    catalogItemTypeClasses
-} from './onboardingCatalog/OnboardingCatalogConstants.js';
-import i18n from 'nfvo-utils/i18n/i18n.js';
-import Modal from 'nfvo-components/modal/Modal.jsx';
-import LicenseModelCreation from '../licenseModel/creation/LicenseModelCreation.js';
-import SoftwareProductCreation from '../softwareProduct/creation/SoftwareProductCreation.js';
-
-class CatalogModal extends React.Component {
-    getModalDetails() {
-        const { modalToShow } = this.props;
-        switch (modalToShow) {
-            case catalogItemTypes.LICENSE_MODEL:
-                return {
-                    title: i18n('New License Model'),
-                    element: <LicenseModelCreation />
-                };
-            case catalogItemTypes.SOFTWARE_PRODUCT:
-                return {
-                    title: i18n('New Software Product'),
-                    element: <SoftwareProductCreation />
-                };
-        }
-    }
-
-    render() {
-        const { modalToShow } = this.props;
-        const modalDetails = this.getModalDetails(modalToShow);
-
-        return (
-            <Modal
-                show={Boolean(modalDetails)}
-                className={`${
-                    catalogItemTypeClasses[modalMapper[modalToShow]]
-                }-modal`}>
-                <Modal.Header>
-                    <Modal.Title>
-                        {modalDetails && modalDetails.title}
-                    </Modal.Title>
-                </Modal.Header>
-                <Modal.Body>{modalDetails && modalDetails.element}</Modal.Body>
-            </Modal>
-        );
-    }
-}
-
-export default CatalogModal;
index dadbbfd..48f53e0 100644 (file)
@@ -4,9 +4,9 @@
  * 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.
@@ -61,7 +61,7 @@ const Filter = ({ onDataChanged, data, activeTab }) => {
     );
 };
 
-Filter.PropTypes = {
+Filter.propTypes = {
     onDataChanged: PropTypes.func,
     data: PropTypes.object,
     activeTab: PropTypes.number
index 81061cb..f0ae41f 100644 (file)
@@ -4,9 +4,9 @@
  * 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.
@@ -76,7 +76,7 @@ const VSPOverlay = ({ VSPList, onSelectVSP, onSeeMore, onMigrate }) => {
     );
 };
 
-VSPOverlay.PropTypes = {
+VSPOverlay.propTypes = {
     VSPList: PropTypes.array,
     onSelectVSP: PropTypes.func
 };
index 73545d7..76854c2 100644 (file)
@@ -32,7 +32,7 @@ import VSPOverlay from './VSPOverlay.jsx';
 import { TooltipWrapper } from './Tooltip.jsx';
 
 class VendorItem extends React.Component {
-    static PropTypes = {
+    static propTypes = {
         softwareProductList: PropTypes.array,
         vendor: PropTypes.object,
         shouldShowOverlay: PropTypes.bool,
index ab6add8..6918a87 100644 (file)
@@ -1,17 +1,17 @@
-/*!
- * Copyright (C) 2017 AT&T Intellectual Property. All rights reserved.
+/*
+ * 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
+ *      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.
+ * 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 Form from 'nfvo-components/input/validation/Form.jsx';
@@ -57,7 +57,8 @@ class Permissions extends React.Component {
                     hasButtons={true}
                     onSubmit={() => this.onsaveItemUsers()}
                     onReset={() => onCancel()}
-                    labledButtons={true}>
+                    labledButtons={true}
+                    btnClassName="sdc-modal__footer">
                     <div className="manage-permissions-title">
                         {i18n('Owner')}
                     </div>
index 61ccad0..e81c068 100644 (file)
@@ -1,17 +1,17 @@
-/*!
- * Copyright (C) 2017 AT&T Intellectual Property. All rights reserved.
+/*
+ * 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
+ *      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.
+ * 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 i18n from 'nfvo-utils/i18n/i18n.js';
@@ -54,7 +54,6 @@ const RevisionaActionHelper = {
                 type: modalActionTypes.GLOBAL_MODAL_SHOW,
                 data: {
                     modalComponentName: modalContentMapper.REVISIONS_LIST,
-                    modalClassName: 'manage-revisions-modal',
                     title: i18n('Revert'),
                     modalComponentProps: {
                         itemId: itemId,
index 294f528..efcce58 100644 (file)
@@ -1,17 +1,17 @@
-/*!
- * Copyright (C) 2017 AT&T Intellectual Property. All rights reserved.
+/*
+ * 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
+ *      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
- * revisions and limitations under the License.
+ * 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 Form from 'nfvo-components/input/validation/Form.jsx';
@@ -34,14 +34,15 @@ class RevisionsView extends React.Component {
     render() {
         let { onCancel, onRevert, revisions, users } = this.props;
         return (
-            <div className="manage-revisions-page">
+            <div className="manage-revisions-modal">
                 <Form
                     hasButtons={true}
                     isValid={this.state.revertId}
                     onSubmit={() => onRevert(this.state.revertId)}
                     onReset={() => onCancel()}
                     submitButtonText={i18n('Revert')}
-                    labledButtons={true}>
+                    labledButtons={true}
+                    btnClassName="sdc-modal__footer">
                     <ListEditorView
                         title={i18n('Select a Commit')}
                         isReadOnlyMode={false}>
index 877c786..9a177b2 100644 (file)
@@ -801,7 +801,7 @@ const SoftwareProductActionHelper = {
     },
 
     /** for the next verision */
-    addComponent(dispatch, { softwareProductId, modalClassName, version }) {
+    addComponent(dispatch, { softwareProductId, version }) {
         SoftwareProductComponentsActionHelper.clearComponentCreationData(
             dispatch
         );
@@ -813,7 +813,6 @@ const SoftwareProductActionHelper = {
             data: {
                 modalComponentName: modalContentMapper.COMPONENT_CREATION,
                 modalComponentProps: { softwareProductId, version },
-                modalClassName,
                 title: 'Create Virtual Function Component'
             }
         });
index d75d464..6c06319 100644 (file)
@@ -1,17 +1,17 @@
-/*!
- * Copyright (C) 2017 AT&T Intellectual Property. All rights reserved.
+/*
+ * 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
+ *      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.
+ * 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 { connect } from 'react-redux';
 import HeatSetupView from './HeatSetupView.jsx';
@@ -65,6 +65,12 @@ export const mapActionsToProps = (dispatch, {}) => {
                 value,
                 type
             }),
+        onToggleVolFilesDisplay: ({ module, value }) => {
+            HeatSetupActionHelper.toggleVolFilesDisplay(dispatch, {
+                module,
+                value
+            });
+        },
         onArtifactListChange: artifacts =>
             HeatSetupActionHelper.changeArtifactList(dispatch, artifacts),
         onAddAllUnassigned: () =>
index 05ac408..d2eb4e9 100644 (file)
@@ -1,26 +1,28 @@
-/*!
- * Copyright (C) 2017 AT&T Intellectual Property. All rights reserved.
+/*
+ * 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
+ *      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.
+ * 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 './HeatSetupConstants.js';
 import isEqual from 'lodash/isEqual.js';
 import cloneDeep from 'lodash/cloneDeep.js';
 import SoftwareProductActionHelper from 'sdc-app/onboarding/softwareProduct/SoftwareProductActionHelper.js';
-// import i18n from 'nfvo-utils/i18n/i18n.js';
-// import {actionTypes as modalActionTypes} from 'nfvo-components/modal/GlobalModalConstants.js';
 
 export default {
+    toggleVolFilesDisplay(dispatch, data) {
+        dispatch({ type: actionTypes.TOGGLE_VOL_DISPLAY, data });
+    },
+
     addModule(dispatch, isBase) {
         dispatch({ type: actionTypes.ADD_MODULE, data: { isBase } });
     },
@@ -94,7 +96,7 @@ export default {
                                dispatch({
                                        type: modalActionTypes.GLOBAL_MODAL_WARNING,
                                        data:{
-                                               msg: i18n(`You have uploaded a new HEAT. If you navigate away or Check-in without proceeding to validation, 
+                                               msg: i18n(`You have uploaded a new HEAT. If you navigate away or Check-in without proceeding to validation,
                                                        Old HEAT zip file will be in use. new HEAT will be ignored. Do you want to continue?`),
                                                confirmationButtonText: i18n('Continue'),
                                                onConfirmed: () => resolve(),
index c87e956..33bd7f6 100644 (file)
@@ -1,17 +1,17 @@
-/*!
+/*
  * 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
+ *      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.
+ * 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 keyMirror from 'nfvo-utils/KeyMirror.js';
 
@@ -30,7 +30,8 @@ export const actionTypes = keyMirror(
         MANIFEST_LOADED: null,
 
         GO_TO_VALIDATION: null,
-        IN_VALIDATION: null
+        IN_VALIDATION: null,
+        TOGGLE_VOL_DISPLAY: null
     },
     'heatSetup'
 );
index 8840a11..06a7147 100644 (file)
@@ -1,20 +1,21 @@
-/*!
- * Copyright (C) 2017 AT&T Intellectual Property. All rights reserved.
+/*
+ * 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
+ *      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.
+ * 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 './HeatSetupConstants.js';
 import differenceWith from 'lodash/differenceWith.js';
+import cloneDeep from 'lodash/cloneDeep';
 
 const emptyModule = (isBase, currentLength) => ({
     name: `${isBase ? 'base_' : 'module_'}${currentLength + 1}`,
@@ -65,6 +66,15 @@ function addDeletedModuleFilesToUnassigned(unassigned, deletedModule) {
 
 export default (state = {}, action) => {
     switch (action.type) {
+        case actionTypes.TOGGLE_VOL_DISPLAY:
+            let clonedState = cloneDeep(state);
+            const indexToModify = findModuleIndexByName(
+                clonedState.modules,
+                action.data.module.name
+            );
+            let modToModify = clonedState.modules[indexToModify];
+            modToModify.showVolFiles = action.data.value;
+            return clonedState;
         case actionTypes.MANIFEST_LOADED:
             return {
                 ...state,
index 1d4efd9..d103d11 100644 (file)
-/*!
- * Copyright (C) 2017 AT&T Intellectual Property. All rights reserved.
+/*
+ * 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
+ *      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.
+ * 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, { Component } from 'react';
-import Button from 'sdc-ui/lib/react/Button.js';
-import Tooltip from 'react-bootstrap/lib/Tooltip.js';
-import OverlayTrigger from 'react-bootstrap/lib/OverlayTrigger.js';
-import FormControl from 'react-bootstrap/lib/FormControl.js';
 import i18n from 'nfvo-utils/i18n/i18n.js';
-import SelectInput from 'nfvo-components/input/SelectInput.jsx';
-import SVGIcon from 'sdc-ui/lib/react/SVGIcon.js';
-import { fileTypes } from './HeatSetupConstants.js';
 import { tabsMapping } from '../SoftwareProductAttachmentsConstants.js';
-import { sortable } from 'react-sortable';
-
-class ListItem extends Component {
-    render() {
-        return <li {...this.props}>{this.props.children}</li>;
-    }
-}
-
-const SortableListItem = sortable(ListItem);
-
-class SortableModuleFileList extends Component {
-    state = {
-        draggingIndex: null,
-        data: this.props.modules
-    };
-
-    componentWillReceiveProps(nextProps) {
-        this.setState({ data: nextProps.modules });
-    }
-
-    render() {
-        let {
-            unassigned,
-            onModuleRename,
-            onModuleDelete,
-            onModuleAdd,
-            onBaseAdd,
-            onModuleFileTypeChange,
-            isBaseExist,
-            isReadOnlyMode
-        } = this.props;
-        const childProps = module => ({
-            module,
-            onModuleRename,
-            onModuleDelete,
-            onModuleFileTypeChange: (value, type) =>
-                onModuleFileTypeChange({ module, value, type }),
-            files: unassigned
-        });
-        let listItems = this.state.data.map(function(item, i) {
-            return (
-                <SortableListItem
-                    key={i}
-                    updateState={data => this.setState(data)}
-                    items={this.state.data}
-                    draggingIndex={this.state.draggingIndex}
-                    sortId={i}
-                    outline="list">
-                    <ModuleFile
-                        {...childProps(item)}
-                        isReadOnlyMode={this.props.isReadOnlyMode}
-                    />
-                </SortableListItem>
-            );
-        }, this);
-
-        return (
-            <div
-                className={`modules-list-wrapper ${
-                    listItems.length > 0 ? 'modules-list-wrapper-divider' : ''
-                }`}>
-                <div className="modules-list-header">
-                    {!isBaseExist && (
-                        <div>
-                            <Button
-                                btnType="link"
-                                onClick={onBaseAdd}
-                                disabled={
-                                    isReadOnlyMode || unassigned.length === 0
-                                }>
-                                {i18n('Add Base')}
-                            </Button>
-                        </div>
-                    )}
-                    <div>
-                        <Button
-                            btnType="link"
-                            onClick={onModuleAdd}
-                            disabled={
-                                isReadOnlyMode || unassigned.length === 0
-                            }>
-                            {i18n('Add Module')}
-                        </Button>
-                    </div>
-                </div>
-                {listItems.length > 0 && <ul>{listItems}</ul>}
-            </div>
-        );
-    }
-}
-
-const tooltip = name => <Tooltip id="tooltip-bottom">{name}</Tooltip>;
-const UnassignedFileList = props => {
-    return (
-        <div>
-            <div className="modules-list-header" />
-            <div className="unassigned-files">
-                <div className="unassigned-files-title">
-                    {i18n('UNASSIGNED FILES')}
-                </div>
-                <div className="unassigned-files-list">{props.children}</div>
-            </div>
-        </div>
-    );
-};
-
-const EmptyListContent = props => {
-    let { heatDataExist } = props;
-    let displayText = heatDataExist ? 'All Files Are Assigned' : '';
-    return (
-        <div className="go-to-validation-button-wrapper">
-            <div className="all-files-assigned">{i18n(displayText)}</div>
-        </div>
-    );
-};
-const UnassignedFile = props => (
-    <OverlayTrigger
-        placement="bottom"
-        overlay={tooltip(props.name)}
-        delayShow={1000}>
-        <li
-            data-test-id="unassigned-files"
-            className="unassigned-files-list-item">
-            {props.name}
-        </li>
-    </OverlayTrigger>
-);
-
-const AddOrDeleteVolumeFiles = ({
-    add = true,
-    onAdd,
-    onDelete,
-    isReadOnlyMode
-}) => {
-    const displayText = add ? 'Add Volume Files' : 'Delete Volume Files';
-    const action = add ? onAdd : onDelete;
-    return (
-        <Button
-            disabled={isReadOnlyMode}
-            onClick={action}
-            btnType="link"
-            className="add-or-delete-volumes"
-            iconName={add ? 'plus' : 'close'}>
-            {i18n(displayText)}
-        </Button>
-    );
-};
-
-const SelectWithFileType = ({ type, selected, files, onChange }) => {
-    let filteredFiledAccordingToType = files.filter(
-        file => file.label.search(type.regex) > -1
-    );
-    if (selected) {
-        filteredFiledAccordingToType = filteredFiledAccordingToType.concat({
-            label: selected,
-            value: selected
-        });
-    }
-
-    return (
-        <SelectInput
-            data-test-id={`${type.label}-list`}
-            label={type.label}
-            value={selected}
-            onChange={value =>
-                value !== selected && onChange(value, type.label)
-            }
-            disabled={filteredFiledAccordingToType.length === 0}
-            placeholder={
-                filteredFiledAccordingToType.length === 0 ? '' : undefined
-            }
-            clearable={true}
-            options={filteredFiledAccordingToType}
-        />
-    );
-};
-
-class NameEditInput extends Component {
-    componentDidMount() {
-        this.input.focus();
-    }
-
-    render() {
-        return (
-            <FormControl
-                {...this.props}
-                className="name-edit"
-                inputRef={input => (this.input = input)}
-            />
-        );
-    }
-}
-
-class ModuleFile extends Component {
-    constructor(props) {
-        super(props);
-        this.state = {
-            isInNameEdit: false,
-            displayVolumes: Boolean(props.module.vol || props.module.volEnv)
-        };
-    }
-
-    handleSubmit(event, name) {
-        if (event.keyCode === 13) {
-            this.handleModuleRename(event, name);
-        }
-    }
-
-    componentWillReceiveProps(nextProps) {
-        this.setState({
-            displayVolumes: Boolean(
-                nextProps.module.vol || nextProps.module.volEnv
-            )
-        });
-    }
-
-    handleModuleRename(event, name) {
-        this.setState({ isInNameEdit: false });
-        this.props.onModuleRename(name, event.target.value);
-    }
-
-    deleteVolumeFiles() {
-        const { onModuleFileTypeChange } = this.props;
-        onModuleFileTypeChange(null, fileTypes.VOL.label);
-        onModuleFileTypeChange(null, fileTypes.VOL_ENV.label);
-        this.setState({ displayVolumes: false });
-    }
-
-    renderNameAccordingToEditState() {
-        const { module: { name } } = this.props;
-        if (this.state.isInNameEdit) {
-            return (
-                <NameEditInput
-                    defaultValue={name}
-                    onBlur={evt => this.handleModuleRename(evt, name)}
-                    onKeyDown={evt => this.handleSubmit(evt, name)}
-                />
-            );
-        }
-        return <span className="filename-text">{name}</span>;
-    }
-
-    render() {
-        const {
-            module: { name, isBase, yaml, env, vol, volEnv },
-            onModuleDelete,
-            files,
-            onModuleFileTypeChange,
-            isReadOnlyMode
-        } = this.props;
-        const { displayVolumes } = this.state;
-        const moduleType = isBase ? 'BASE' : 'MODULE';
-        return (
-            <div className="modules-list-item" data-test-id="module-item">
-                <div className="modules-list-item-controllers">
-                    <div className="modules-list-item-filename">
-                        <SVGIcon
-                            name={isBase ? 'base' : 'module'}
-                            color="primary"
-                            iconClassName="heat-setup-module-icon"
-                        />
-                        <span className="module-title-by-type">{`${moduleType}: `}</span>
-                        <div
-                            className={`text-and-icon ${
-                                this.state.isInNameEdit ? 'in-edit' : ''
-                            }`}>
-                            {this.renderNameAccordingToEditState()}
-                            {!this.state.isInNameEdit && (
-                                <SVGIcon
-                                    name="pencil"
-                                    onClick={() =>
-                                        this.setState({ isInNameEdit: true })
-                                    }
-                                    data-test-id={
-                                        isBase ? 'base-name' : 'module-name'
-                                    }
-                                />
-                            )}
-                        </div>
-                    </div>
-                    <SVGIcon
-                        name="trashO"
-                        onClick={() => onModuleDelete(name)}
-                        data-test-id="module-delete"
-                    />
-                </div>
-                <div className="modules-list-item-selectors">
-                    <SelectWithFileType
-                        type={fileTypes.YAML}
-                        files={files}
-                        selected={yaml}
-                        onChange={onModuleFileTypeChange}
-                    />
-                    <SelectWithFileType
-                        type={fileTypes.ENV}
-                        files={files}
-                        selected={env}
-                        onChange={onModuleFileTypeChange}
-                    />
-                    {displayVolumes && (
-                        <SelectWithFileType
-                            type={fileTypes.VOL}
-                            files={files}
-                            selected={vol}
-                            onChange={onModuleFileTypeChange}
-                        />
-                    )}
-                    {displayVolumes && (
-                        <SelectWithFileType
-                            type={fileTypes.VOL_ENV}
-                            files={files}
-                            selected={volEnv}
-                            onChange={onModuleFileTypeChange}
-                        />
-                    )}
-                    <AddOrDeleteVolumeFiles
-                        isReadOnlyMode={isReadOnlyMode}
-                        onAdd={() => this.setState({ displayVolumes: true })}
-                        onDelete={() => this.deleteVolumeFiles()}
-                        add={!displayVolumes}
-                    />
-                </div>
-            </div>
-        );
-    }
-}
-
-class ArtifactOrNestedFileList extends Component {
-    render() {
-        let {
-            type,
-            title,
-            selected,
-            options,
-            onSelectChanged,
-            onAddAllUnassigned,
-            isReadOnlyMode,
-            headerClassName
-        } = this.props;
-        return (
-            <div
-                className={`artifact-files ${
-                    type === 'nested' ? 'nested' : ''
-                } ${headerClassName} `}>
-                <div className="artifact-files-header">
-                    <span>
-                        {type === 'artifact' && (
-                            <SVGIcon
-                                color="primary"
-                                name="artifacts"
-                                iconClassName="heat-setup-module-icon"
-                            />
-                        )}
-                        {`${title}`}
-                    </span>
-                    {type === 'artifact' && (
-                        <Button
-                            disabled={isReadOnlyMode}
-                            btnType="link"
-                            className="add-all-unassigned"
-                            onClick={onAddAllUnassigned}>
-                            {i18n('Add All Unassigned Files')}
-                        </Button>
-                    )}
-                </div>
-                {type === 'nested' ? (
-                    <ul className="nested-list">
-                        {selected.map(nested => (
-                            <li key={nested} className="nested-list-item">
-                                {nested}
-                            </li>
-                        ))}
-                    </ul>
-                ) : (
-                    <SelectInput
-                        options={options}
-                        onMultiSelectChanged={onSelectChanged || (() => {})}
-                        value={selected}
-                        clearable={false}
-                        placeholder={i18n('Add Artifact')}
-                        multi
-                    />
-                )}
-            </div>
-        );
-    }
-}
+import SortableModuleFileList from './components/SortableModuleFileList';
+import UnassignedFile from './components/UnassignedFile';
+import UnassignedFileList from './components/UnassignedFileList';
+import EmptyListContent from './components/EmptyListContent';
+import ArtifactOrNestedFileList from './components/ArtifactOrNestedFileList';
 
 const buildLabelValueObject = str =>
     typeof str === 'string' ? { value: str, label: str } : str;
diff --git a/openecomp-ui/src/sdc-app/onboarding/softwareProduct/attachments/setup/components/AddOrDeleteVolumeFiles.js b/openecomp-ui/src/sdc-app/onboarding/softwareProduct/attachments/setup/components/AddOrDeleteVolumeFiles.js
new file mode 100644 (file)
index 0000000..92a07ae
--- /dev/null
@@ -0,0 +1,40 @@
+/*
+ * 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 Button from 'sdc-ui/lib/react/Button.js';
+import i18n from 'nfvo-utils/i18n/i18n.js';
+
+const AddOrDeleteVolumeFiles = ({
+    add = true,
+    onAdd,
+    onDelete,
+    isReadOnlyMode
+}) => {
+    const displayText = add ? 'Add Volume Files' : 'Delete Volume Files';
+    const action = add ? onAdd : onDelete;
+    return (
+        <Button
+            disabled={isReadOnlyMode}
+            onClick={action}
+            btnType="link"
+            className="add-or-delete-volumes"
+            iconName={add ? 'plus' : 'close'}>
+            {i18n(displayText)}
+        </Button>
+    );
+};
+
+export default AddOrDeleteVolumeFiles;
diff --git a/openecomp-ui/src/sdc-app/onboarding/softwareProduct/attachments/setup/components/ArtifactOrNestedFileList.js b/openecomp-ui/src/sdc-app/onboarding/softwareProduct/attachments/setup/components/ArtifactOrNestedFileList.js
new file mode 100644 (file)
index 0000000..c2bbde4
--- /dev/null
@@ -0,0 +1,82 @@
+/*
+ * 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 i18n from 'nfvo-utils/i18n/i18n.js';
+import Button from 'sdc-ui/lib/react/Button.js';
+import SVGIcon from 'sdc-ui/lib/react/SVGIcon.js';
+import SelectInput from 'nfvo-components/input/SelectInput.jsx';
+
+const NestedList = ({ selected }) => (
+    <ul className="nested-list">
+        {selected.map(nested => (
+            <li key={nested} className="nested-list-item">
+                {nested}
+            </li>
+        ))}
+    </ul>
+);
+
+const ArtifactOrNestedFileList = ({
+    type,
+    title,
+    selected,
+    options,
+    onSelectChanged,
+    onAddAllUnassigned,
+    isReadOnlyMode,
+    headerClassName
+}) => (
+    <div
+        className={`artifact-files ${
+            type === 'nested' ? 'nested' : ''
+        } ${headerClassName} `}>
+        <div className="artifact-files-header">
+            <span>
+                {type === 'artifact' && (
+                    <SVGIcon
+                        color="primary"
+                        name="artifacts"
+                        iconClassName="heat-setup-module-icon"
+                    />
+                )}
+                {`${title}`}
+            </span>
+            {type === 'artifact' && (
+                <Button
+                    disabled={isReadOnlyMode}
+                    btnType="link"
+                    className="add-all-unassigned"
+                    onClick={onAddAllUnassigned}>
+                    {i18n('Add All Unassigned Files')}
+                </Button>
+            )}
+        </div>
+        {type === 'nested' ? (
+            <NestedList selected={selected} />
+        ) : (
+            <SelectInput
+                options={options}
+                onMultiSelectChanged={onSelectChanged || (() => {})}
+                value={selected}
+                clearable={false}
+                placeholder={i18n('Add Artifact')}
+                multi
+            />
+        )}
+    </div>
+);
+
+export default ArtifactOrNestedFileList;
diff --git a/openecomp-ui/src/sdc-app/onboarding/softwareProduct/attachments/setup/components/EmptyListContent.js b/openecomp-ui/src/sdc-app/onboarding/softwareProduct/attachments/setup/components/EmptyListContent.js
new file mode 100644 (file)
index 0000000..f638d10
--- /dev/null
@@ -0,0 +1,29 @@
+/*
+ * 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 i18n from 'nfvo-utils/i18n/i18n.js';
+
+const EmptyListContent = props => {
+    let { heatDataExist } = props;
+    let displayText = heatDataExist ? 'All Files Are Assigned' : '';
+    return (
+        <div className="go-to-validation-button-wrapper">
+            <div className="all-files-assigned">{i18n(displayText)}</div>
+        </div>
+    );
+};
+
+export default EmptyListContent;
diff --git a/openecomp-ui/src/sdc-app/onboarding/softwareProduct/attachments/setup/components/ModuleFile.js b/openecomp-ui/src/sdc-app/onboarding/softwareProduct/attachments/setup/components/ModuleFile.js
new file mode 100644 (file)
index 0000000..5cc74e8
--- /dev/null
@@ -0,0 +1,152 @@
+/*
+ * 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 SVGIcon from 'sdc-ui/lib/react/SVGIcon.js';
+import NameEditInput from './NameEditInput.js';
+import SelectWithFileType from './SelectWithFileType';
+import { fileTypes } from '../HeatSetupConstants.js';
+import AddOrDeleteVolumeFiles from './AddOrDeleteVolumeFiles';
+
+class ModuleFile extends React.Component {
+    constructor(props) {
+        super(props);
+        this.state = {
+            isInNameEdit: false
+        };
+    }
+
+    handleSubmit(event, name) {
+        if (event.keyCode === 13) {
+            this.handleModuleRename(event, name);
+        }
+    }
+
+    handleModuleRename(event, name) {
+        this.setState({ isInNameEdit: false });
+        this.props.onModuleRename(name, event.target.value);
+    }
+
+    deleteVolumeFiles() {
+        const { onModuleFileTypeChange, onToggleVolFilesDisplay } = this.props;
+        onModuleFileTypeChange(null, fileTypes.VOL.label);
+        onModuleFileTypeChange(null, fileTypes.VOL_ENV.label);
+        onToggleVolFilesDisplay(false);
+    }
+
+    renderNameAccordingToEditState() {
+        const { module: { name } } = this.props;
+        if (this.state.isInNameEdit) {
+            return (
+                <NameEditInput
+                    defaultValue={name}
+                    onBlur={evt => this.handleModuleRename(evt, name)}
+                    onKeyDown={evt => this.handleSubmit(evt, name)}
+                />
+            );
+        }
+        return <span className="filename-text">{name}</span>;
+    }
+
+    render() {
+        const {
+            module: { name, isBase, yaml, env, vol, volEnv },
+            onModuleDelete,
+            files,
+            onModuleFileTypeChange,
+            onToggleVolFilesDisplay,
+            isReadOnlyMode,
+            displayVolumes
+        } = this.props;
+
+        //const { displayVolumes } = this.state;
+
+        const moduleType = isBase ? 'BASE' : 'MODULE';
+        return (
+            <div className="modules-list-item" data-test-id="module-item">
+                <div className="modules-list-item-controllers">
+                    <div className="modules-list-item-filename">
+                        <SVGIcon
+                            name={isBase ? 'base' : 'module'}
+                            color="primary"
+                            iconClassName="heat-setup-module-icon"
+                        />
+                        <span className="module-title-by-type">{`${moduleType}: `}</span>
+                        <div
+                            className={`text-and-icon ${
+                                this.state.isInNameEdit ? 'in-edit' : ''
+                            }`}>
+                            {this.renderNameAccordingToEditState()}
+                            {!this.state.isInNameEdit && (
+                                <SVGIcon
+                                    name="pencil"
+                                    onClick={() =>
+                                        this.setState({ isInNameEdit: true })
+                                    }
+                                    data-test-id={
+                                        isBase ? 'base-name' : 'module-name'
+                                    }
+                                />
+                            )}
+                        </div>
+                    </div>
+                    <SVGIcon
+                        name="trashO"
+                        onClick={() => onModuleDelete(name)}
+                        data-test-id="module-delete"
+                    />
+                </div>
+                <div className="modules-list-item-selectors">
+                    <SelectWithFileType
+                        type={fileTypes.YAML}
+                        files={files}
+                        selected={yaml}
+                        onChange={onModuleFileTypeChange}
+                    />
+                    <SelectWithFileType
+                        type={fileTypes.ENV}
+                        files={files}
+                        selected={env}
+                        onChange={onModuleFileTypeChange}
+                    />
+                    {displayVolumes && (
+                        <SelectWithFileType
+                            type={fileTypes.VOL}
+                            files={files}
+                            selected={vol}
+                            onChange={onModuleFileTypeChange}
+                        />
+                    )}
+                    {displayVolumes && (
+                        <SelectWithFileType
+                            type={fileTypes.VOL_ENV}
+                            files={files}
+                            selected={volEnv}
+                            onChange={onModuleFileTypeChange}
+                        />
+                    )}
+                    <AddOrDeleteVolumeFiles
+                        isReadOnlyMode={isReadOnlyMode}
+                        onAdd={() => onToggleVolFilesDisplay(true)}
+                        onDelete={() => this.deleteVolumeFiles()}
+                        add={!displayVolumes}
+                    />
+                </div>
+            </div>
+        );
+    }
+}
+
+export default ModuleFile;
diff --git a/openecomp-ui/src/sdc-app/onboarding/softwareProduct/attachments/setup/components/NameEditInput.js b/openecomp-ui/src/sdc-app/onboarding/softwareProduct/attachments/setup/components/NameEditInput.js
new file mode 100644 (file)
index 0000000..36821e0
--- /dev/null
@@ -0,0 +1,35 @@
+/*
+ * 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 FormControl from 'react-bootstrap/lib/FormControl.js';
+
+class NameEditInput extends React.Component {
+    componentDidMount() {
+        this.input.focus();
+    }
+
+    render() {
+        return (
+            <FormControl
+                {...this.props}
+                className="name-edit"
+                inputRef={input => (this.input = input)}
+            />
+        );
+    }
+}
+
+export default NameEditInput;
diff --git a/openecomp-ui/src/sdc-app/onboarding/softwareProduct/attachments/setup/components/SelectWithFileType.js b/openecomp-ui/src/sdc-app/onboarding/softwareProduct/attachments/setup/components/SelectWithFileType.js
new file mode 100644 (file)
index 0000000..050c91e
--- /dev/null
@@ -0,0 +1,48 @@
+/*
+ * 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 SelectInput from 'nfvo-components/input/SelectInput.jsx';
+
+const SelectWithFileType = ({ type, selected, files, onChange }) => {
+    let filteredFiledAccordingToType = files.filter(
+        file => file.label.search(type.regex) > -1
+    );
+    if (selected) {
+        filteredFiledAccordingToType = filteredFiledAccordingToType.concat({
+            label: selected,
+            value: selected
+        });
+    }
+
+    return (
+        <SelectInput
+            data-test-id={`${type.label}-list`}
+            label={type.label}
+            value={selected}
+            onChange={value =>
+                value !== selected && onChange(value, type.label)
+            }
+            disabled={filteredFiledAccordingToType.length === 0}
+            placeholder={
+                filteredFiledAccordingToType.length === 0 ? '' : undefined
+            }
+            clearable={true}
+            options={filteredFiledAccordingToType}
+        />
+    );
+};
+
+export default SelectWithFileType;
diff --git a/openecomp-ui/src/sdc-app/onboarding/softwareProduct/attachments/setup/components/SortableListItem.js b/openecomp-ui/src/sdc-app/onboarding/softwareProduct/attachments/setup/components/SortableListItem.js
new file mode 100644 (file)
index 0000000..5762643
--- /dev/null
@@ -0,0 +1,21 @@
+/*
+ * 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 { sortable } from 'react-sortable';
+
+const ListItem = props => <li {...props}>{props.children}</li>;
+
+export default sortable(ListItem);
diff --git a/openecomp-ui/src/sdc-app/onboarding/softwareProduct/attachments/setup/components/SortableModuleFileList.js b/openecomp-ui/src/sdc-app/onboarding/softwareProduct/attachments/setup/components/SortableModuleFileList.js
new file mode 100644 (file)
index 0000000..f52c251
--- /dev/null
@@ -0,0 +1,126 @@
+/*
+ * 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 isEqual from 'lodash/isEqual';
+import i18n from 'nfvo-utils/i18n/i18n.js';
+import SortableListItem from './SortableListItem.js';
+import { fileTypes } from '../HeatSetupConstants.js';
+
+import Button from 'sdc-ui/lib/react/Button.js';
+import ModuleFile from './ModuleFile.js';
+
+class SortableModuleFileList extends React.Component {
+    state = {
+        draggingIndex: null,
+        data: this.props.modules
+    };
+
+    componentDidUpdate() {
+        if (!isEqual(this.state.data, this.props.modules)) {
+            /* eslint-disable-next-line */
+            this.setState({
+                data: this.props.modules
+            });
+        }
+    }
+
+    render() {
+        let {
+            unassigned,
+            onModuleRename,
+            onModuleDelete,
+            onModuleAdd,
+            onBaseAdd,
+            onModuleFileTypeChange,
+            onToggleVolFilesDisplay,
+            isBaseExist,
+            isReadOnlyMode
+        } = this.props;
+        const childProps = module => ({
+            module,
+            onModuleRename,
+            onModuleDelete,
+            onModuleFileTypeChange: (value, type) => {
+                if (
+                    type === fileTypes.VOL.label ||
+                    type === fileTypes.VOL_ENV.label
+                ) {
+                    onToggleVolFilesDisplay({ module, value: false });
+                }
+                onModuleFileTypeChange({ module, value, type });
+            },
+
+            files: unassigned,
+            displayVolumes: Boolean(
+                module.vol || module.volEnv || module.showVolFiles
+            ),
+            onToggleVolFilesDisplay: value =>
+                onToggleVolFilesDisplay({ module, value })
+        });
+
+        let listItems = this.state.data.map(function(item, i) {
+            return (
+                <SortableListItem
+                    key={i}
+                    updateState={data => this.setState(data)}
+                    items={this.state.data}
+                    draggingIndex={this.state.draggingIndex}
+                    sortId={i}
+                    outline="list">
+                    <ModuleFile
+                        {...childProps(item)}
+                        isReadOnlyMode={this.props.isReadOnlyMode}
+                    />
+                </SortableListItem>
+            );
+        }, this);
+
+        return (
+            <div
+                className={`modules-list-wrapper ${
+                    listItems.length > 0 ? 'modules-list-wrapper-divider' : ''
+                }`}>
+                <div className="modules-list-header">
+                    {!isBaseExist && (
+                        <div>
+                            <Button
+                                btnType="link"
+                                onClick={onBaseAdd}
+                                disabled={
+                                    isReadOnlyMode || unassigned.length === 0
+                                }>
+                                {i18n('Add Base')}
+                            </Button>
+                        </div>
+                    )}
+                    <div>
+                        <Button
+                            btnType="link"
+                            onClick={onModuleAdd}
+                            disabled={
+                                isReadOnlyMode || unassigned.length === 0
+                            }>
+                            {i18n('Add Module')}
+                        </Button>
+                    </div>
+                </div>
+                {listItems.length > 0 && <ul>{listItems}</ul>}
+            </div>
+        );
+    }
+}
+
+export default SortableModuleFileList;
diff --git a/openecomp-ui/src/sdc-app/onboarding/softwareProduct/attachments/setup/components/UnassignedFile.js b/openecomp-ui/src/sdc-app/onboarding/softwareProduct/attachments/setup/components/UnassignedFile.js
new file mode 100644 (file)
index 0000000..770befc
--- /dev/null
@@ -0,0 +1,35 @@
+/*
+ * 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 OverlayTrigger from 'react-bootstrap/lib/OverlayTrigger.js';
+import Tooltip from 'react-bootstrap/lib/Tooltip.js';
+
+const tooltip = name => <Tooltip id="tooltip-bottom">{name}</Tooltip>;
+
+const UnassignedFile = props => (
+    <OverlayTrigger
+        placement="bottom"
+        overlay={tooltip(props.name)}
+        delayShow={1000}>
+        <li
+            data-test-id="unassigned-files"
+            className="unassigned-files-list-item">
+            {props.name}
+        </li>
+    </OverlayTrigger>
+);
+
+export default UnassignedFile;
diff --git a/openecomp-ui/src/sdc-app/onboarding/softwareProduct/attachments/setup/components/UnassignedFileList.js b/openecomp-ui/src/sdc-app/onboarding/softwareProduct/attachments/setup/components/UnassignedFileList.js
new file mode 100644 (file)
index 0000000..75fe7cd
--- /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 React from 'react';
+import i18n from 'nfvo-utils/i18n/i18n.js';
+
+const UnassignedFileList = props => {
+    return (
+        <div>
+            <div className="modules-list-header" />
+            <div className="unassigned-files">
+                <div className="unassigned-files-title">
+                    {i18n('UNASSIGNED FILES')}
+                </div>
+                <div className="unassigned-files-list">{props.children}</div>
+            </div>
+        </div>
+    );
+};
+
+export default UnassignedFileList;
index bffa9f7..8ba5a18 100644 (file)
@@ -1,3 +1,18 @@
+/*
+ * 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 { connect } from 'react-redux';
 import i18n from 'nfvo-utils/i18n/i18n.js';
 
@@ -44,8 +59,7 @@ const mapActionToProps = dispatch => {
         onAddComponent: (softwareProductId, version) =>
             SoftwareProductActionHelper.addComponent(dispatch, {
                 softwareProductId,
-                version,
-                modalClassName: 'create-vfc-modal'
+                version
             }),
         onDeleteComponent: (component, softwareProductId, version) =>
             dispatch({
index cd37c31..6842d94 100644 (file)
@@ -1,17 +1,17 @@
-/*!
- * Copyright (C) 2017 AT&T Intellectual Property. All rights reserved.
+/*
+ * 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
+ *      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.
+ * 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 RestAPIUtil from 'nfvo-utils/RestAPIUtil.js';
 import Configuration from 'sdc-app/config/Configuration.js';
@@ -120,12 +120,9 @@ const ComputeFlavorActionHelper = {
             data: {
                 modalComponentName:
                     modalContentMapper.COMPONENT_COMPUTE_FLAVOR_EDITOR,
-                modalClassName: `compute-flavor-editor-modal-${
-                    props.compute ? 'edit' : 'create'
-                }`,
                 modalComponentProps: {
                     ...props,
-                    size: props.compute ? modalSizes.LARGE : undefined,
+                    size: props.compute ? modalSizes.XLARGE : undefined,
                     dialogClassName: 'compute-flavor-editor-modal'
                 },
                 title: `${
index 840f722..7ea6f78 100644 (file)
@@ -1,17 +1,17 @@
-/*!
- * Copyright (C) 2017 AT&T Intellectual Property. All rights reserved.
+/*
+ * 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
+ *      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.
+ * 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';
@@ -63,6 +63,7 @@ class ComputeEditorView extends React.Component {
                             this.form = form;
                         }}
                         hasButtons={true}
+                        btnClassName="sdc-modal__footer"
                         onSubmit={() => onSubmit({ data, qdata })}
                         onReset={() => onCancel()}
                         labledButtons={true}
index 0b33b40..cb17813 100644 (file)
@@ -1,17 +1,17 @@
-/*!
- * Copyright (C) 2017 AT&T Intellectual Property. All rights reserved.
+/*
+ * 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
+ *      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.
+ * 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';
@@ -47,7 +47,7 @@ class ComponentCreationView extends React.Component {
                         onValidateForm={() =>
                             this.props.onValidateForm(forms.CREATE_FORM)
                         }
-                        className="entitlement-pools-form">
+                        btnClassName="sdc-modal__footer">
                         <GridSection hasLastColSet>
                             <GridItem colSpan={4} lastColInRow>
                                 <Input
@@ -82,6 +82,7 @@ class ComponentCreationView extends React.Component {
                                     }
                                     data-test-id="description"
                                     type="textarea"
+                                    groupClassName="no-bottom-margin"
                                 />
                             </GridItem>
                         </GridSection>
index 3f661b7..38ee2ae 100644 (file)
@@ -1,17 +1,17 @@
-/*!
- * Copyright (C) 2017 AT&T Intellectual Property. All rights reserved.
+/*
+ * 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
+ *      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.
+ * 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 RestAPIUtil from 'nfvo-utils/RestAPIUtil.js';
 import i18n from 'nfvo-utils/i18n/i18n.js';
@@ -199,7 +199,7 @@ const SoftwareProductComponentImagesActionHelper = {
                 modalComponentName:
                     modalContentMapper.SOFTWARE_PRODUCT_COMPONENT_IMAGE_EDITOR,
                 title: title,
-                modalClassName: className,
+                bodyClassName: className,
                 modalComponentProps: {
                     softwareProductId,
                     componentId,
index 3670ab9..e4eccc6 100644 (file)
@@ -1,17 +1,17 @@
-/*!
- * Copyright (C) 2017 AT&T Intellectual Property. All rights reserved.
+/*
+ * 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
+ *      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.
+ * 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';
@@ -55,6 +55,7 @@ class SoftwareProductComponentsImageEditorView extends React.Component {
                             this.form = form;
                         }}
                         hasButtons={true}
+                        btnClassName="sdc-modal__footer"
                         onSubmit={() => this.submit()}
                         onReset={() => onCancel()}
                         labledButtons={true}
index 4f200ce..2595d9c 100644 (file)
@@ -1,17 +1,17 @@
-/*!
- * Copyright (C) 2017 AT&T Intellectual Property. All rights reserved.
+/*
+ * 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
+ *      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.
+ * 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 '../SoftwareProductComponentsNetworkConstants';
 import i18n from 'nfvo-utils/i18n/i18n.js';
@@ -19,10 +19,7 @@ import { actionTypes as modalActionTypes } from 'nfvo-components/modal/GlobalMod
 import { modalContentMapper } from 'sdc-app/common/modal/ModalContentMapper.js';
 
 export default {
-    open(
-        dispatch,
-        { softwareProductId, componentId, modalClassName, version }
-    ) {
+    open(dispatch, { softwareProductId, componentId, version }) {
         dispatch({
             type: actionTypes.NICCreation.OPEN
         });
@@ -32,7 +29,6 @@ export default {
             data: {
                 modalComponentName: modalContentMapper.NIC_CREATION,
                 title: i18n('Create NEW NIC'),
-                modalClassName,
                 modalComponentProps: { softwareProductId, componentId, version }
             }
         });
index 6789ba4..133703a 100644 (file)
@@ -4,9 +4,9 @@
  * 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.
@@ -59,7 +59,7 @@ class NICCreationView extends React.Component {
         } = this.props;
         let { name, description, networkDescription } = data;
         return (
-            <div>
+            <div className="network-nic-modal-create">
                 {genericFieldInfo && (
                     <Form
                         hasButtons={true}
@@ -71,7 +71,8 @@ class NICCreationView extends React.Component {
                         labledButtons={true}
                         isValid={isFormValid}
                         onValidateForm={this.validate}
-                        formReady={formReady}>
+                        formReady={formReady}
+                        btnClassName="sdc-modal__footer">
                         <GridSection hasLastColSet>
                             <GridItem colSpan={4} lastColInRow>
                                 <Input
index d7205b4..e6a485a 100644 (file)
@@ -1,17 +1,17 @@
-/*!
- * Copyright (C) 2017 AT&T Intellectual Property. All rights reserved.
+/*
+ * 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
+ *      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.
+ * 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 { connect } from 'react-redux';
 import SoftwareProductComponentsNetworkActionHelper from './SoftwareProductComponentsNetworkActionHelper.js';
index df2efbe..0116bb2 100644 (file)
@@ -1,17 +1,17 @@
-/*!
- * Copyright (C) 2017 AT&T Intellectual Property. All rights reserved.
+/*
+ * 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
+ *      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.
+ * 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 Form from 'nfvo-components/input/validation/Form.jsx';
@@ -63,6 +63,7 @@ class SoftwareProductComponentsNetworkEditorView extends React.Component {
                             this.form = form;
                         }}
                         hasButtons={true}
+                        btnClassName="sdc-modal__footer"
                         onSubmit={() => this.submit()}
                         onReset={() => onCancel()}
                         labledButtons={true}
index 58c8161..3c09fae 100644 (file)
@@ -1,24 +1,27 @@
-/*!
- * Copyright (C) 2017 AT&T Intellectual Property. All rights reserved.
+/*
+ * 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
+ *      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.
+ * 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 RestAPIUtil from 'nfvo-utils/RestAPIUtil.js';
 import Configuration from 'sdc-app/config/Configuration.js';
 import i18n from 'nfvo-utils/i18n/i18n.js';
 
 import { actionTypes } from './SoftwareProductComponentsNetworkConstants.js';
-import { actionTypes as GlobalModalActions } from 'nfvo-components/modal/GlobalModalConstants.js';
+import {
+    actionTypes as GlobalModalActions,
+    modalSizes
+} from 'nfvo-components/modal/GlobalModalConstants.js';
 import { modalContentMapper as modalPagesMapper } from 'sdc-app/common/modal/ModalContentMapper.js';
 import ValidationHelper from 'sdc-app/common/helpers/ValidationHelper.js';
 import { NIC_QUESTIONNAIRE } from 'sdc-app/onboarding/softwareProduct/components/network/SoftwareProductComponentsNetworkConstants.js';
@@ -125,7 +128,6 @@ const SoftwareProductComponentNetworkActionHelper = {
             softwareProductId,
             componentId,
             isReadOnlyMode,
-            modalClassName,
             version
         }
     ) {
@@ -136,12 +138,12 @@ const SoftwareProductComponentNetworkActionHelper = {
         dispatch({
             type: GlobalModalActions.GLOBAL_MODAL_SHOW,
             data: {
-                modalClassName,
                 modalComponentProps: {
                     softwareProductId,
                     componentId,
                     isReadOnlyMode,
-                    version
+                    version,
+                    size: modalSizes.LARGE
                 },
                 modalComponentName: modalPagesMapper.NIC_EDITOR,
                 title: i18n('Edit NIC')
index ac70852..db3c767 100644 (file)
@@ -1,17 +1,17 @@
-/*!
- * Copyright (C) 2017 AT&T Intellectual Property. All rights reserved.
+/*
+ * 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
+ *      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.
+ * 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 { connect } from 'react-redux';
 import i18n from 'nfvo-utils/i18n/i18n.js';
@@ -71,7 +71,6 @@ const mapActionsToProps = (
             NICCreationActionHelper.open(dispatch, {
                 softwareProductId,
                 componentId,
-                modalClassName: 'network-nic-modal-create',
                 version
             }),
         onDeleteNic: nic =>
@@ -119,7 +118,6 @@ const mapActionsToProps = (
                         isReadOnlyMode,
                         softwareProductId,
                         componentId,
-                        modalClassName: 'network-nic-modal-edit',
                         version
                     }
                 )
index 634b43f..1019e94 100644 (file)
@@ -4,9 +4,9 @@
  * 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.
@@ -56,9 +56,9 @@ const NameAndPurpose = ({
     );
 };
 
-NameAndPurpose.PropTypes = {
+NameAndPurpose.propTypes = {
     name: PropTypes.string,
-    description: PropTypes.array,
+    description: PropTypes.string,
     onDataChanged: PropTypes.func,
     isReadOnlyMode: PropTypes.bool
 };
index c440d2f..904df4a 100644 (file)
@@ -1,17 +1,17 @@
-/*!
- * Copyright (C) 2017 AT&T Intellectual Property. All rights reserved.
+/*
+ * 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
+ *      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.
+ * 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';
@@ -83,7 +83,7 @@ const Network = ({
     );
 };
 
-Network.PropTypes = {
+Network.propTypes = {
     networkValues: PropTypes.array
 };
 
index 070ac81..8f8d143 100644 (file)
@@ -1,17 +1,17 @@
-/*!
- * Copyright (C) 2017 AT&T Intellectual Property. All rights reserved.
+/*
+ * 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
+ *      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.
+ * 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';
@@ -43,7 +43,7 @@ const PointerInput = ({
     );
 };
 
-PointerInput.PropTypes = {
+PointerInput.propTypes = {
     label: PropTypes.string,
     value: PropTypes.string
 };
index eb762b1..b2cda4f 100644 (file)
@@ -1,17 +1,17 @@
-/*!
- * Copyright (C) 2017 AT&T Intellectual Property. All rights reserved.
+/*
+ * 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
+ *      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.
+ * 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';
@@ -93,9 +93,9 @@ const Protocols = ({
     );
 };
 
-Protocols.PropTypes = {
+Protocols.propTypes = {
     protocols: PropTypes.array,
-    onQDataChanged: PropTypes.function,
+    onQDataChanged: PropTypes.func,
     dataMap: PropTypes.object,
     qgenericFieldInfo: PropTypes.object
 };
index 52c5cdd..5422174 100644 (file)
@@ -1,21 +1,27 @@
-/*!
- * Copyright (C) 2017 AT&T Intellectual Property. All rights reserved.
+/*
+ * 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
+ *      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.
+ * 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 RestAPIUtil from 'nfvo-utils/RestAPIUtil.js';
 import Configuration from 'sdc-app/config/Configuration.js';
 import { actionTypes } from './SoftwareProductComponentProcessesConstants.js';
+import i18n from 'nfvo-utils/i18n/i18n.js';
+import {
+    actionTypes as modalActionTypes,
+    modalSizes
+} from 'nfvo-components/modal/GlobalModalConstants.js';
+import { modalContentMapper } from 'sdc-app/common/modal/ModalContentMapper.js';
 
 function baseUrl(softwareProductId, version, componentId) {
     const restPrefix = Configuration.get('restPrefix');
@@ -182,16 +188,39 @@ const SoftwareProductComponentProcessesActionHelper = {
         });
     },
 
-    openEditor(dispatch, process = {}) {
+    openEditor(
+        dispatch,
+        { process, softwareProductId, version, isReadOnlyMode, componentId }
+    ) {
         dispatch({
             type: actionTypes.SOFTWARE_PRODUCT_PROCESS_COMPONENTS_EDITOR_OPEN,
-            process
+            process: process ? process : {}
+        });
+        dispatch({
+            type: modalActionTypes.GLOBAL_MODAL_SHOW,
+            data: {
+                modalComponentName: modalContentMapper.COMP_PROCESS_EDITOR,
+                modalComponentProps: {
+                    version,
+                    softwareProductId,
+                    isReadOnlyMode,
+                    componentId,
+                    size: modalSizes.LARGE
+                },
+                bodyClassName: 'edit-process-modal',
+                title: process
+                    ? i18n('Edit Process Details')
+                    : i18n('Create New Process Details')
+            }
         });
     },
     closeEditor(dispatch) {
         dispatch({
             type: actionTypes.SOFTWARE_PRODUCT_PROCESS_COMPONENTS_EDITOR_CLOSE
         });
+        dispatch({
+            type: modalActionTypes.GLOBAL_MODAL_CLOSE
+        });
     }
 };
 
index cb6d25a..3ab0b20 100644 (file)
@@ -1,17 +1,17 @@
-/*!
- * Copyright (C) 2017 AT&T Intellectual Property. All rights reserved.
+/*
+ * 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
+ *      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.
+ * 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 { connect } from 'react-redux';
 import i18n from 'nfvo-utils/i18n/i18n.js';
@@ -28,15 +28,12 @@ export const mapStateToProps = ({ softwareProduct }) => {
         },
         softwareProductComponents: { componentProcesses = {} }
     } = softwareProduct;
-    let { processesList = [], processesEditor = {} } = componentProcesses;
-    let { data } = processesEditor;
+    let { processesList = [] } = componentProcesses;
 
     return {
         currentSoftwareProduct,
         isValidityData,
-        processesList,
-        isDisplayModal: Boolean(data),
-        isModalInEditMode: Boolean(data && data.id)
+        processesList
     };
 };
 
@@ -46,12 +43,20 @@ const mapActionsToProps = (
 ) => {
     return {
         onAddProcess: () =>
-            SoftwareProductComponentProcessesActionHelper.openEditor(dispatch),
-        onEditProcess: process =>
-            SoftwareProductComponentProcessesActionHelper.openEditor(
-                dispatch,
-                process
-            ),
+            SoftwareProductComponentProcessesActionHelper.openEditor(dispatch, {
+                isReadOnlyMode: false,
+                componentId,
+                softwareProductId,
+                version
+            }),
+        onEditProcess: (process, isReadOnlyMode) =>
+            SoftwareProductComponentProcessesActionHelper.openEditor(dispatch, {
+                process,
+                isReadOnlyMode,
+                componentId,
+                softwareProductId,
+                version
+            }),
         onDeleteProcess: process =>
             dispatch({
                 type: modalActionTypes.GLOBAL_MODAL_WARNING,
index 8fa2bff..fe6b8a8 100644 (file)
@@ -1,23 +1,21 @@
-/*!
- * Copyright (C) 2017 AT&T Intellectual Property. All rights reserved.
+/*
+ * 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
+ *      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.
+ * 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 i18n from 'nfvo-utils/i18n/i18n.js';
-import Modal from 'nfvo-components/modal/Modal.jsx';
-import SoftwareProductProcessesEditor from './SoftwareProductComponentProcessesEditor.js';
 import SoftwareProductProcessListView from 'sdc-app/onboarding/softwareProduct/processes/SoftwareProductProcessListView.jsx';
 
 class SoftwareProductProcessesView extends React.Component {
@@ -42,7 +40,6 @@ class SoftwareProductProcessesView extends React.Component {
             <div className="vsp-processes-page">
                 <div className="software-product-view">
                     <div className="software-product-landing-view-right-side vsp-components-processes-page flex-column">
-                        {this.renderEditor()}
                         <SoftwareProductProcessListView
                             addButtonTitle={i18n(
                                 'Add Component Process Details'
@@ -54,40 +51,6 @@ class SoftwareProductProcessesView extends React.Component {
             </div>
         );
     }
-
-    renderEditor() {
-        let {
-            softwareProductId,
-            version,
-            componentId,
-            isReadOnlyMode,
-            isDisplayModal,
-            isModalInEditMode
-        } = this.props;
-        return (
-            <Modal
-                show={isDisplayModal}
-                bsSize="large"
-                animation={true}
-                className="onborading-modal">
-                <Modal.Header>
-                    <Modal.Title>
-                        {isModalInEditMode
-                            ? i18n('Edit Process Details')
-                            : i18n('Create New Process Details')}
-                    </Modal.Title>
-                </Modal.Header>
-                <Modal.Body className="edit-process-modal">
-                    <SoftwareProductProcessesEditor
-                        componentId={componentId}
-                        softwareProductId={softwareProductId}
-                        version={version}
-                        isReadOnlyMode={isReadOnlyMode}
-                    />
-                </Modal.Body>
-            </Modal>
-        );
-    }
 }
 
 export default SoftwareProductProcessesView;
index c9693d4..e4a9893 100644 (file)
@@ -81,6 +81,7 @@ class SoftwareProductCreationView extends React.Component {
                         isValid={this.props.isFormValid}
                         submitButtonText={i18n('Create')}
                         formReady={this.props.formReady}
+                        btnClassName="sdc-modal__footer"
                         onValidateForm={() => this.validate()}>
                         <GridSection hasLastColSet>
                             <GridItem colSpan="2">
@@ -321,6 +322,7 @@ const OnboardingProcedure = ({
                     }
                     type="radio"
                     data-test-id="new-vsp-creation-procedure-manual"
+                    groupClassName="no-bottom-margin"
                 />
             </GridItem>
         </GridSection>
index 44b2531..769596e 100644 (file)
@@ -1,3 +1,18 @@
+/*
+ * 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 './SoftwareProductDeploymentConstants.js';
 import { actionTypes as GlobalModalActions } from 'nfvo-components/modal/GlobalModalConstants.js';
 import { modalContentMapper } from 'sdc-app/common/modal/ModalContentMapper.js';
@@ -171,7 +186,7 @@ const SoftwareProductDeploymentActionHelper = {
             data: {
                 modalComponentName: modalContentMapper.DEPLOYMENT_FLAVOR_EDITOR,
                 modalComponentProps: { softwareProductId, version },
-                modalClassName,
+                bodyClassName: modalClassName,
                 title: isEdit
                     ? 'Edit Deployment Flavor'
                     : 'Create a New Deployment Flavor'
index e44d2bd..fd57569 100644 (file)
@@ -1,3 +1,18 @@
+/*
+ * 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 i18n from 'nfvo-utils/i18n/i18n.js';
 import Input from 'nfvo-components/input/validation/Input.jsx';
@@ -46,7 +61,8 @@ export default class SoftwareProductDeploymentEditorView extends React.Component
                         onValidateForm={() => this.validate()}
                         isValid={this.props.isFormValid}
                         formReady={this.props.formReady}
-                        className="vsp-deployment-editor">
+                        className="vsp-deployment-editor"
+                        btnClassName="sdc-modal__footer">
                         <GridSection hasLastColSet>
                             <GridItem colSpan={1}>
                                 <Input
index cee46ab..5f1cdb5 100644 (file)
@@ -1,17 +1,17 @@
-/*!
- * Copyright (C) 2017 AT&T Intellectual Property. All rights reserved.
+/*
+ * 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
+ *      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.
+ * 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';
@@ -66,7 +66,7 @@ class SoftwareProductProcessesListView extends React.Component {
                 key={id}
                 className="list-editor-item-view"
                 isReadOnlyMode={isReadOnlyMode}
-                onSelect={() => onEditProcess(process)}
+                onSelect={() => onEditProcess(process, isReadOnlyMode)}
                 onDelete={() => onDeleteProcess(process, version)}>
                 <div className="list-editor-item-view-field">
                     <div className="title">{i18n('Name')}</div>
index fb44530..e00cafb 100644 (file)
@@ -1,17 +1,17 @@
-/*!
- * Copyright (C) 2017 AT&T Intellectual Property. All rights reserved.
+/*
+ * 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
+ *      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.
+ * 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 { connect } from 'react-redux';
 import i18n from 'nfvo-utils/i18n/i18n.js';
@@ -38,9 +38,18 @@ export const mapStateToProps = ({ softwareProduct }) => {
 const mapActionsToProps = (dispatch, { softwareProductId, version }) => {
     return {
         onAddProcess: () =>
-            SoftwareProductProcessesActionHelper.openEditor(dispatch),
-        onEditProcess: process =>
-            SoftwareProductProcessesActionHelper.openEditor(dispatch, process),
+            SoftwareProductProcessesActionHelper.openEditor(dispatch, {
+                softwareProductId,
+                version,
+                isReadOnlyMode: false
+            }),
+        onEditProcess: (process, isReadOnlyMode) =>
+            SoftwareProductProcessesActionHelper.openEditor(dispatch, {
+                process,
+                softwareProductId,
+                version,
+                isReadOnlyMode
+            }),
         onDeleteProcess: process =>
             dispatch({
                 type: modalActionTypes.GLOBAL_MODAL_WARNING,
index 7c72c5b..0e58610 100644 (file)
@@ -1,21 +1,27 @@
-/*!
- * Copyright (C) 2017 AT&T Intellectual Property. All rights reserved.
+/*
+ * 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
+ *      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.
+ * 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 './SoftwareProductProcessesConstants.js';
 import RestAPIUtil from 'nfvo-utils/RestAPIUtil.js';
 import Configuration from 'sdc-app/config/Configuration.js';
+import i18n from 'nfvo-utils/i18n/i18n.js';
+import {
+    actionTypes as modalActionTypes,
+    modalSizes
+} from 'nfvo-components/modal/GlobalModalConstants.js';
+import { modalContentMapper } from 'sdc-app/common/modal/ModalContentMapper.js';
 
 function baseUrl(vspId, version) {
     let { id: versionId } = version;
@@ -73,10 +79,29 @@ const SoftwareProductActionHelper = {
             });
         });
     },
-    openEditor(dispatch, process = {}) {
+    openEditor(
+        dispatch,
+        { process, softwareProductId, version, isReadOnlyMode }
+    ) {
         dispatch({
             type: actionTypes.SOFTWARE_PRODUCT_PROCESS_EDITOR_OPEN,
-            process
+            process: process ? process : {}
+        });
+        dispatch({
+            type: modalActionTypes.GLOBAL_MODAL_SHOW,
+            data: {
+                modalComponentName: modalContentMapper.PROCESS_EDITOR,
+                modalComponentProps: {
+                    version,
+                    softwareProductId,
+                    isReadOnlyMode,
+                    size: modalSizes.LARGE
+                },
+                bodyClassName: 'edit-process-modal',
+                title: process
+                    ? i18n('Edit Process Details')
+                    : i18n('Create New Process Details')
+            }
         });
     },
 
@@ -95,6 +120,9 @@ const SoftwareProductActionHelper = {
         dispatch({
             type: actionTypes.SOFTWARE_PRODUCT_PROCESS_EDITOR_CLOSE
         });
+        dispatch({
+            type: modalActionTypes.GLOBAL_MODAL_CLOSE
+        });
     },
 
     saveProcess(
index 6e8254f..a858e0f 100644 (file)
@@ -1,12 +1,12 @@
 /*
- * 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.
  * 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.
@@ -70,7 +70,8 @@ class SoftwareProductProcessesEditorForm extends React.Component {
                         isValid={this.props.isFormValid}
                         formReady={this.props.formReady}
                         onValidateForm={() => this.props.onValidateForm()}
-                        className="vsp-processes-editor">
+                        className="vsp-processes-editor"
+                        btnClassName="sdc-modal__footer">
                         <div
                             className={`vsp-processes-editor-data${
                                 isReadOnlyMode ? ' disabled' : ''
@@ -129,7 +130,7 @@ class SoftwareProductProcessesEditorForm extends React.Component {
                                     <GridItem colSpan={2}>
                                         <Input
                                             name="vsp-process-description"
-                                            groupClassName="vsp-process-description"
+                                            groupClassName="vsp-process-description no-bottom-margin"
                                             onChange={description =>
                                                 onDataChanged({ description })
                                             }
@@ -169,6 +170,7 @@ class SoftwareProductProcessesEditorForm extends React.Component {
                                             label={i18n('Process Type')}
                                             className="process-type"
                                             data-test-id="process-type"
+                                            groupClassName="no-bottom-margin"
                                             isValid={
                                                 genericFieldInfo.type.isValid
                                             }
index 1357c31..50421bc 100644 (file)
@@ -1,12 +1,12 @@
 /*
- * 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.
  * 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.
@@ -16,8 +16,6 @@
 import React from 'react';
 import PropTypes from 'prop-types';
 import i18n from 'nfvo-utils/i18n/i18n.js';
-import Modal from 'nfvo-components/modal/Modal.jsx';
-import SoftwareProductProcessesEditor from './SoftwareProductProcessesEditor.js';
 import SoftwareProductProcessListView from './SoftwareProductProcessListView.jsx';
 
 class SoftwareProductProcessesView extends React.Component {
@@ -37,7 +35,6 @@ class SoftwareProductProcessesView extends React.Component {
     render() {
         return (
             <div className="software-product-landing-view-right-side vsp-processes-page">
-                {this.renderEditor()}
                 <SoftwareProductProcessListView
                     addButtonTitle={i18n('Add Process Details')}
                     {...this.props}
@@ -45,38 +42,6 @@ class SoftwareProductProcessesView extends React.Component {
             </div>
         );
     }
-
-    renderEditor() {
-        let {
-            currentSoftwareProduct: { id },
-            version,
-            isModalInEditMode,
-            isReadOnlyMode,
-            isDisplayEditor
-        } = this.props;
-        return (
-            <Modal
-                show={isDisplayEditor}
-                bsSize="large"
-                animation={true}
-                className="onborading-modal">
-                <Modal.Header>
-                    <Modal.Title>
-                        {isModalInEditMode
-                            ? i18n('Edit Process Details')
-                            : i18n('Create New Process Details')}
-                    </Modal.Title>
-                </Modal.Header>
-                <Modal.Body className="edit-process-modal">
-                    <SoftwareProductProcessesEditor
-                        softwareProductId={id}
-                        version={version}
-                        isReadOnlyMode={isReadOnlyMode}
-                    />
-                </Modal.Body>
-            </Modal>
-        );
-    }
 }
 
 export default SoftwareProductProcessesView;
index 3a90c80..a33e0ed 100644 (file)
@@ -245,7 +245,7 @@ class VNFImportView extends React.Component {
                             <Button
                                 className="vnf-submit"
                                 type="button"
-                                btnType="default"
+                                btnType="primary"
                                 onClick={() =>
                                     onSubmit(
                                         this.state.selectedRow,
@@ -257,7 +257,7 @@ class VNFImportView extends React.Component {
                             <Button
                                 className="Cancel"
                                 type="button"
-                                btnType="outline"
+                                btnType="secondary"
                                 onClick={onCancel}>
                                 {i18n('Cancel')}
                             </Button>
index afbb056..8087dce 100644 (file)
@@ -80,7 +80,7 @@ const VersionsPageActionHelper = {
                     dispatch({
                         type: modalActionTypes.GLOBAL_MODAL_CLOSE
                     }),
-                modalClassName: 'versions-tree-modal',
+                bodyClassName: 'versions-tree-modal',
                 cancelButtonText: i18n('Close'),
                 title: i18n('Version Tree')
             }
index ba92d26..da5f3be 100644 (file)
@@ -1,17 +1,17 @@
-/*!
- * Copyright (C) 2017 AT&T Intellectual Property. All rights reserved.
+/*
+ * 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
+ *      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.
+ * 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';
@@ -53,6 +53,7 @@ class VersionsPageCreationView extends React.Component {
                             (this.validationForm = validationForm)
                         }
                         hasButtons={true}
+                        btnClassName="sdc-modal__footer"
                         onSubmit={() => this.submit()}
                         submitButtonText={i18n('Create')}
                         onReset={() => onCancel()}
@@ -101,6 +102,7 @@ class VersionsPageCreationView extends React.Component {
                                     onDataChanged({ description })
                                 }
                                 isRequired
+                                groupClassName="no-bottom-margin"
                             />
                         </div>
                     </Form>
@@ -129,112 +131,3 @@ class VersionsPageCreationView extends React.Component {
 }
 
 export default VersionsPageCreationView;
-
-/*
-                                               <div className='software-product-inline-section'>
-                                                       <Input
-                                                               value={name}
-                                                               label={i18n('Name')}
-                                                               isRequired={true}
-                                                               onChange={name => onDataChanged({name},V_CREATION_FORM_NAME, {name: name => this.validateName(name)})}
-                                                               isValid={genericFieldInfo.name.isValid}
-                                                               errorText={genericFieldInfo.name.errorText}
-                                                               type='text'
-                                                               className='field-section'
-                                                               data-test-id='new-vsp-name' />
-                                                       <Input
-                                                               label={i18n('Vendor')}
-                                                               type='select'
-                                                               value={vendorId}
-                                                               isRequired={true}
-                                                               disabled={disableVendor}
-                                                               onChange={e => this.onSelectVendor(e)}
-                                                               isValid={genericFieldInfo.vendorId.isValid}
-                                                               errorText={genericFieldInfo.vendorId.errorText}
-                                                               className='input-options-select'
-                                                               groupClassName='bootstrap-input-options'
-                                                               data-test-id='new-vsp-vendor' >
-                                                               {vendorList.map(vendor =>
-                                                               <option key={vendor.title} value={vendor.enum}>{vendor.title}</option>)}
-                                                       </Input>
-                                                       <Input
-                                                               label={i18n('Category')}
-                                                               type='select'
-                                                               value={subCategory}
-                                                               isRequired={true}
-                                                               onChange={e => this.onSelectSubCategory(e)}
-                                                               isValid={genericFieldInfo.subCategory.isValid}
-                                                               errorText={genericFieldInfo.subCategory.errorText}
-                                                               className='input-options-select'
-                                                               groupClassName='bootstrap-input-options'
-                                                               data-test-id='new-vsp-category' >
-                                                               <option key='' value=''>{i18n('please select…')}</option>
-                                                               {softwareProductCategories.map(category =>
-                                                                       category.subcategories &&
-                                                                       <optgroup
-                                                                               key={category.name}
-                                                                               label={category.name}>{category.subcategories.map(sub =>
-                                                                               <option key={sub.uniqueId} value={sub.uniqueId}>{`${sub.name} (${category.name})`}</option>)}
-                                                                       </optgroup>)
-                                                               }
-                                                       </Input>
-                                               </div>
-                                               <div className='software-product-inline-section'>
-                                                       <Input
-                                                               value={description}
-                                                               label={i18n('Description')}
-                                                               isRequired={true}
-                                                               overlayPos='bottom'
-                                                               onChange={description => onDataChanged({description},V_CREATION_FORM_NAME)}
-                                                               isValid={genericFieldInfo.description.isValid}
-                                                               errorText={genericFieldInfo.description.errorText}
-                                                               type='textarea'
-                                                               className='field-section'
-                                                               data-test-id='new-vsp-description' />
-                                               </div>
-                                       </div>
-                               </Form>}
-                       </div>
-               );
-       }
-
-       getAvailableMethodsList() {
-               let {availableMethods} =  this.props;
-               return [...availableMethods];
-       }
-
-       onSelectVendor(e) {
-               const selectedIndex = e.target.selectedIndex;
-               const vendorId = e.target.options[selectedIndex].value;
-               this.props.onDataChanged({vendorId},V_CREATION_FORM_NAME);
-       }
-
-       onSelectSubCategory(e) {
-               const selectedIndex = e.target.selectedIndex;
-               const subCategory = e.target.options[selectedIndex].value;
-               let {softwareProductCategories, onDataChanged} = this.props;
-               let category = SoftwareProductCategoriesHelper.getCurrentCategoryOfSubCategory(subCategory, softwareProductCategories);
-               onDataChanged({category, subCategory},V_CREATION_FORM_NAME);
-       }
-
-       submit() {
-               let  {data:softwareProduct, finalizedLicenseModelList} = this.props;
-               softwareProduct.vendorName = finalizedLicenseModelList.find(vendor => vendor.id === softwareProduct.vendorId).name;
-               this.props.onSubmit(softwareProduct);
-       }
-
-       validateName(value) {
-               const {data: {id}, VSPNames} = this.props;
-               const isExists = Validator.isItemNameAlreadyExistsInList({itemId: id, itemName: value, list: VSPNames});
-
-               return !isExists ?  {isValid: true, errorText: ''} :
-                       {isValid: false, errorText: i18n('Software product by the name \'' + value + '\' already exists. Software product name must be unique')};
-       }
-
-       validate() {
-               this.props.onValidateForm(SP_CREATION_FORM_NAME);
-       }
-}
-
-export default SoftwareProductCreationView;
-*/
index b759ffd..af955da 100644 (file)
@@ -1,12 +1,12 @@
 /*
- * 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.
  * 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.
diff --git a/openecomp-ui/test-utils/shim.js b/openecomp-ui/test-utils/shim.js
new file mode 100644 (file)
index 0000000..8cd4c20
--- /dev/null
@@ -0,0 +1 @@
+global.requestAnimationFrame = callback => setTimeout(callback, 0);
index ec3ca72..0c4e01c 100644 (file)
@@ -1,2 +1,6 @@
 import mockRest from 'test-utils/MockRest.js';
+import Enzyme from 'enzyme';
+import Adapter from 'enzyme-adapter-react-16';
+
+Enzyme.configure({ adapter: new Adapter() });
 mockRest.resetQueue();
index d2c135e..a397197 100644 (file)
-/*!
- * Copyright (C) 2017 AT&T Intellectual Property. All rights reserved.
+/*
+ * 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
+ *      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.
+ * 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 {mount} from 'enzyme';
-import {cloneAndSet} from 'test-utils/Util.js';
-import ActivityLogView, {ActivityListItem} from 'sdc-app/common/activity-log/ActivityLogView.jsx';
+import { mount } from 'enzyme';
+import { cloneAndSet } from 'test-utils/Util.js';
+import ActivityLogView, {
+    ActivityListItem
+} from 'sdc-app/common/activity-log/ActivityLogView.jsx';
 import ListEditorView from 'nfvo-components/listEditor/ListEditorView.jsx';
 import ActivityLogActionHelper from 'sdc-app/common/activity-log/ActivityLogActionHelper.js';
-import {mapStateToProps} from 'sdc-app/common/activity-log/ActivityLog.js';
-import {storeCreator} from 'sdc-app/AppStore.js';
+import { mapStateToProps } from 'sdc-app/common/activity-log/ActivityLog.js';
+import { storeCreator } from 'sdc-app/AppStore.js';
 import mockRest from 'test-utils/MockRest.js';
-import {ActivityLogStoreFactory} from 'test-utils/factories/activity-log/ActivityLogFactories.js';
+import { ActivityLogStoreFactory } from 'test-utils/factories/activity-log/ActivityLogFactories.js';
 import VersionFactory from 'test-utils/factories/common/VersionFactory.js';
-import {UserFactory} from 'test-utils/factories/users/UsersFactories.js';
+import { UserFactory } from 'test-utils/factories/users/UsersFactories.js';
 
-import {actionTypes as userActionTypes} from 'sdc-app/onboarding/users/UsersConstants.js';
+import { actionTypes as userActionTypes } from 'sdc-app/onboarding/users/UsersConstants.js';
 
-describe('Activity Log Module Tests', function () {
-       const LICENSE_MODEL_ID = '555';
-       const version = VersionFactory.build();
-       const usersList = UserFactory.buildList(3);
+describe('Activity Log Module Tests', function() {
+    const LICENSE_MODEL_ID = '555';
+    const version = VersionFactory.build();
+    const usersList = UserFactory.buildList(3);
 
-       it('mapStateToProps mapper exists', () => {
-               expect(mapStateToProps).toBeTruthy();
-       });
+    it('mapStateToProps mapper exists', () => {
+        expect(mapStateToProps).toBeTruthy();
+    });
 
-       it('Loads Activity Log and renders into jsx', () => {
-               const store = storeCreator();
-               const dispatch = store.dispatch;
-               dispatch({
-                       type: userActionTypes.USERS_LIST_LOADED,
-                       usersList
-               });
-               let ActivityLogList = ActivityLogStoreFactory.buildList(1, {user: usersList[0].userId});
-               const expectedStore = cloneAndSet(store.getState(), 'licenseModel.activityLog', ActivityLogList);
+    it('Loads Activity Log and renders into jsx', () => {
+        const store = storeCreator();
+        const dispatch = store.dispatch;
+        dispatch({
+            type: userActionTypes.USERS_LIST_LOADED,
+            usersList
+        });
+        let ActivityLogList = ActivityLogStoreFactory.buildList(1, {
+            user: usersList[0].userId
+        });
+        const expectedStore = cloneAndSet(
+            store.getState(),
+            'licenseModel.activityLog',
+            ActivityLogList
+        );
 
-               mockRest.addHandler('fetch', ({data, options, baseUrl}) => {
-                       expect(baseUrl).toEqual(`/onboarding-api/v1.0/items/${LICENSE_MODEL_ID}/versions/${version.id}/activity-logs`);
-                       expect(data).toEqual(undefined);
-                       expect(options).toEqual(undefined);
-                       return {results: ActivityLogList};
-               });
+        mockRest.addHandler('fetch', ({ data, options, baseUrl }) => {
+            expect(baseUrl).toEqual(
+                `/onboarding-api/v1.0/items/${LICENSE_MODEL_ID}/versions/${
+                    version.id
+                }/activity-logs`
+            );
+            expect(data).toEqual(undefined);
+            expect(options).toEqual(undefined);
+            return { results: ActivityLogList };
+        });
 
-               return ActivityLogActionHelper.fetchActivityLog(dispatch, {itemId: LICENSE_MODEL_ID, versionId: version.id}).then(() => {
-                       const state = store.getState();
-                       expect(state).toEqual(expectedStore);
-                       const props = mapStateToProps(state);
-                       expect(props.activities).toEqual(ActivityLogList.map(activity =>
-                               ({...activity, user: {id: activity.user, name: usersList.find(userObject => userObject.userId === activity.user).fullName}})
-                       ));
-                       const wrapper = mount(<ActivityLogView {...props}/>);
-                       expect(wrapper).toBeTruthy();
-               });
-       });
+        return ActivityLogActionHelper.fetchActivityLog(dispatch, {
+            itemId: LICENSE_MODEL_ID,
+            versionId: version.id
+        }).then(() => {
+            const state = store.getState();
+            expect(state).toEqual(expectedStore);
+            const props = mapStateToProps(state);
+            expect(props.activities).toEqual(
+                ActivityLogList.map(activity => ({
+                    ...activity,
+                    user: {
+                        id: activity.user,
+                        name: usersList.find(
+                            userObject => userObject.userId === activity.user
+                        ).fullName
+                    }
+                }))
+            );
+            const wrapper = mount(<ActivityLogView {...props} />);
+            expect(wrapper).toBeTruthy();
+        });
+    });
 
-       it('Tests Activity Log filter and sorting abilities', () => {
-               const firstDate = new Date();
-               const secondDate = new Date();
-               secondDate.setDate(firstDate.getDate() - 1);
+    it('Tests Activity Log filter and sorting abilities', () => {
+        const firstDate = new Date();
+        const secondDate = new Date();
+        secondDate.setDate(firstDate.getDate() - 1);
 
-               const firstTimestamp = firstDate.getTime();
-               const secondTimestamp = secondDate.getTime();
+        const firstTimestamp = firstDate.getTime();
+        const secondTimestamp = secondDate.getTime();
 
-               let firstActivity = ActivityLogStoreFactory.build({user: usersList[0].userId, timestamp: firstTimestamp});
-               let secondActivity = ActivityLogStoreFactory.build({user: usersList[1].userId, timestamp: secondTimestamp, status: {success: false, message: 'error'}});
-               let props = mapStateToProps({users: {usersList}, licenseModel: {activityLog: [firstActivity, secondActivity]}});
-               const wrapper = mount(<ActivityLogView {...props}/>);
-               expect(wrapper.find(ActivityListItem).length).toEqual(3); // Includes Header component
+        let firstActivity = ActivityLogStoreFactory.build({
+            user: usersList[0].userId,
+            timestamp: firstTimestamp
+        });
+        let secondActivity = ActivityLogStoreFactory.build({
+            user: usersList[1].userId,
+            timestamp: secondTimestamp,
+            status: { success: false, message: 'error' }
+        });
+        let props = mapStateToProps({
+            users: { usersList },
+            licenseModel: { activityLog: [firstActivity, secondActivity] }
+        });
+        const wrapper = mount(<ActivityLogView {...props} />);
+        expect(wrapper.find(ActivityListItem).length).toEqual(3); // Includes Header component
 
-               const firstInstance = wrapper.find(ActivityListItem).at(1);
-               const firstInstanceProps = firstInstance.props();
-               expect(firstInstanceProps.activity.timestamp).toEqual(secondTimestamp); // Default sorting is descending
+        const firstInstance = wrapper.find(ActivityListItem).at(1);
+        const firstInstanceProps = firstInstance.props();
+        expect(firstInstanceProps.activity.timestamp).toEqual(secondTimestamp); // Default sorting is descending
 
-               const header = wrapper.find(ActivityListItem).at(0);
-               header.props().onSort();
-               const newFirstInstance = wrapper.find(ActivityListItem).at(1);
-               const newFirstInstanceProps = newFirstInstance.props();
-               expect(newFirstInstanceProps.activity.timestamp).toEqual(firstTimestamp);
+        const header = wrapper.find(ActivityListItem).at(0);
 
-               const listEditor = wrapper.find(ListEditorView);
-               listEditor.props().onFilter(usersList[1].fullName);
-               expect(wrapper.find(ActivityListItem).length).toEqual(2);
-               expect(wrapper.find(ActivityListItem).at(1).props().activity.user.name).toEqual(usersList[1].fullName);
-       });
+        header.props().onSort();
+        wrapper.update();
+        const newFirstInstance = wrapper.find(ActivityListItem).at(1);
+        const newFirstInstanceProps = newFirstInstance.props();
+        expect(newFirstInstanceProps.activity.timestamp).toEqual(
+            firstTimestamp
+        );
+
+        const listEditor = wrapper.find(ListEditorView);
+        listEditor.props().onFilter(usersList[1].fullName);
+        wrapper.update();
+        expect(wrapper.find(ActivityListItem).length).toEqual(2);
+        expect(
+            wrapper
+                .find(ActivityListItem)
+                .at(1)
+                .props().activity.user.name
+        ).toEqual(usersList[1].fullName);
+    });
 });
index 6e02e54..621b6a1 100644 (file)
-/*!
- * Copyright (C) 2017 AT&T Intellectual Property. All rights reserved.
+/*
+ * 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
+ *      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.
+ * 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 deepFreeze from 'deep-freeze';
 import mockRest from 'test-utils/MockRest.js';
 import store from 'sdc-app/AppStore.js';
 import FlowsActions from 'sdc-app/flows/FlowsActions.js';
-import {enums} from 'sdc-app/flows/FlowsConstants.js';
+import { enums } from 'sdc-app/flows/FlowsConstants.js';
 
 import {
-       FlowCreateFactory,
-       FlowPostRequestFactory,
-       FlowPostResponseFactory,
-       FlowFetchRequestFactory,
-       FlowFetchResponseFactory,
-       FlowDeleteRequestFactory,
-       FlowUpdateRequestFactory } from 'test-utils/factories/flows/FlowsFactories.js';
+    FlowCreateFactory,
+    FlowPostRequestFactory,
+    FlowPostResponseFactory,
+    FlowFetchRequestFactory,
+    FlowFetchResponseFactory,
+    FlowDeleteRequestFactory,
+    FlowUpdateRequestFactory
+} from 'test-utils/factories/flows/FlowsFactories.js';
 
-import {buildFromExistingObject} from 'test-utils/Util.js';
+import { buildFromExistingObject } from 'test-utils/Util.js';
 
 const NEW_FLOW = true;
 
-let assertFlowDataAfterCreateFetchAndUpdate = (data) => {
-       let {flowList, serviceID, diagramType} = store.getState().flows;
-       expect(serviceID).toBe(data.serviceID);
-       expect(diagramType).toBe(data.artifactType);
-       let uniqueId = data.uniqueId || `${data.serviceID}.${data.artifactName}`;
-       let index = flowList.findIndex(flow => flow.uniqueId === uniqueId);
-       expect(index).not.toBe(-1);
+let assertFlowDataAfterCreateFetchAndUpdate = data => {
+    let { flowList, serviceID, diagramType } = store.getState().flows;
+    expect(serviceID).toBe(data.serviceID);
+    expect(diagramType).toBe(data.artifactType);
+    let uniqueId = data.uniqueId || `${data.serviceID}.${data.artifactName}`;
+    let index = flowList.findIndex(flow => flow.uniqueId === uniqueId);
+    expect(index).not.toBe(-1);
 };
 
-describe('Workflows and Management Flows Module Tests:', function () {
-
-
-       it('empty artifact should open flow creation modal', () => {
-
-               const artifacts = {};
-
-               deepFreeze(store.getState());
-               deepFreeze(artifacts);
-               FlowsActions.fetchFlowArtifacts(store.dispatch, {
-                       artifacts,
-                       diagramType: enums.WORKFLOW,
-                       participants: [],
-                       serviceID: '1234'
-               });
-               let state = store.getState();
-               expect(state.flows.isDisplayModal).toBe(true);
-               expect(state.flows.isModalInEditMode).toBe(false);
-       });
-
-       it('Close flow details editor modal', () => {
-               deepFreeze(store.getState());
-               FlowsActions.closeFlowDetailsEditor(store.dispatch);
-               let state = store.getState();
-               expect(state.flows.isDisplayModal).toBe(false);
-               expect(state.flows.isModalInEditMode).toBe(false);
-       });
-
-       it('Get Flows List from loaded artifact', () => {
-
-               deepFreeze(store.getState());
-
-               const artifacts = {
-                       'test1': FlowPostResponseFactory.build({artifactName: 'test1'}),
-                       'kukuriku': FlowPostResponseFactory.build({
-                               'artifactType': 'PUPPET',
-                               'artifactName': 'kukuriku',
-                       }),
-                       'test3': FlowPostResponseFactory.build({artifactName: 'test3'})
-               };
-
-               const artifactsArray = Object.keys(artifacts).map(artifact => artifact);
-
-               deepFreeze(artifacts);
-
-               deepFreeze(store.getState());
-
-               let actionData = {
-                       artifacts,
-                       diagramType: enums.WORKFLOW,
-                       participants: [],
-                       serviceID: '1234'
-               };
-               FlowsActions.fetchFlowArtifacts(store.dispatch, actionData);
-
-               let state = store.getState();
-               expect(state.flows.isDisplayModal).toBe(false);
-               expect(state.flows.isModalInEditMode).toBe(false);
-               expect(state.flows.flowList.length).toEqual(artifactsArray.length);
-               expect(state.flows.flowParticipants).toEqual(actionData.participants);
-               expect(state.flows.serviceID).toBe(actionData.serviceID);
-               expect(state.flows.diagramType).toBe(actionData.diagramType);
-
-       });
-
-
-       it('Add New Flow', () => {
-
-               deepFreeze(store.getState());
-
-               const flowCreateData = FlowCreateFactory.build();
-               let expectedDataToBeSentInTheRequest = buildFromExistingObject(FlowPostRequestFactory, flowCreateData);
-
-               mockRest.addHandler('post', ({data, baseUrl, options}) => {
-                       expect(baseUrl).toBe(`/sdc1/feProxy/rest/v1/catalog/services/${flowCreateData.serviceID}/artifacts/`);
-                       expect(data.artifactLabel).toBe(expectedDataToBeSentInTheRequest.artifactLabel);
-                       expect(data.artifactName).toBe(expectedDataToBeSentInTheRequest.artifactName);
-                       expect(data.artifactType).toBe(expectedDataToBeSentInTheRequest.artifactType);
-                       expect(data.description).toBe(expectedDataToBeSentInTheRequest.description);
-                       expect(data.payloadData).toBe(expectedDataToBeSentInTheRequest.payloadData);
-                       expect(options.md5).toBe(true);
-                       return buildFromExistingObject(FlowPostResponseFactory, expectedDataToBeSentInTheRequest);
-               });
-
-               return FlowsActions.createOrUpdateFlow(store.dispatch, {flow: flowCreateData}, NEW_FLOW).then(() => {
-                       assertFlowDataAfterCreateFetchAndUpdate(flowCreateData);
-               });
-
-               
-       });
-
-       it('Fetch Flow', () => {
-
-               deepFreeze(store.getState());
-
-               const flowFetchData = FlowFetchRequestFactory.build();
-
-               mockRest.addHandler('fetch', ({baseUrl}) => {
-                       //sdc1/feProxy/rest/v1/catalog/services/338d75f0-aec8-4eb4-89c9-8733fcd9bf3b/artifacts/338d75f0-aec8-4eb4-89c9-8733fcd9bf3b.zizizi
-                       expect(baseUrl).toBe(`/sdc1/feProxy/rest/v1/catalog/services/${flowFetchData.serviceID}/artifacts/${flowFetchData.uniqueId}`);
-                       return buildFromExistingObject(FlowFetchResponseFactory, flowFetchData);
-               });
-
-               return FlowsActions.fetchArtifact(store.dispatch, {flow: flowFetchData}).then(() => {
-                       assertFlowDataAfterCreateFetchAndUpdate(flowFetchData);
-               });
-       });
-
-       it('Update Existing Flow', () => {
-
-               deepFreeze(store.getState());
-               const flowUpdateData = FlowUpdateRequestFactory.build();
-
-               mockRest.addHandler('post', ({baseUrl}) => {
-                       expect(baseUrl).toBe(`/sdc1/feProxy/rest/v1/catalog/services/${flowUpdateData.serviceID}/artifacts/${flowUpdateData.uniqueId}`);
-
-                       return buildFromExistingObject(FlowPostResponseFactory, flowUpdateData);
-               });
-
-               return FlowsActions.createOrUpdateFlow(store.dispatch, {flow: flowUpdateData}, !NEW_FLOW).then(() => {
-                       assertFlowDataAfterCreateFetchAndUpdate(flowUpdateData);
-               });
-
-       });
-
-       it('Delete Flow', () => {
-
-               deepFreeze(store.getState());
-
-               const flowDeleteData = FlowDeleteRequestFactory.build();
-
-               mockRest.addHandler('destroy', ({baseUrl}) => {
-                       expect(baseUrl).toBe(`/sdc1/feProxy/rest/v1/catalog/services/${flowDeleteData.serviceID}/artifacts/${flowDeleteData.uniqueId}`);
-                       return {};
-               });
-
-               return FlowsActions.deleteFlow(store.dispatch, {flow: flowDeleteData}).then(() => {
-                       let {flowList} = store.getState().flows;
-                       let index = flowList.findIndex(flow => flow.uniqueId === flowDeleteData.uniqueId);
-                       expect(index).toBe(-1);
-               });
-       });
+describe('Workflows and Management Flows Module Tests:', function() {
+    it('empty artifact should open flow creation modal', () => {
+        const artifacts = {};
+
+        deepFreeze(store.getState());
+        deepFreeze(artifacts);
+        FlowsActions.fetchFlowArtifacts(store.dispatch, {
+            artifacts,
+            diagramType: enums.WORKFLOW,
+            participants: [],
+            serviceID: '1234'
+        });
+        let state = store.getState();
+        expect(state.modal).toBeDefined();
+    });
+
+    it('Close flow details editor modal', () => {
+        deepFreeze(store.getState());
+        FlowsActions.closeEditCreateWFModal(store.dispatch);
+        let state = store.getState();
+        expect(state.modal).toBeFalsy();
+    });
+
+    it('Get Flows List from loaded artifact', () => {
+        deepFreeze(store.getState());
+
+        const artifacts = {
+            test1: FlowPostResponseFactory.build({ artifactName: 'test1' }),
+            kukuriku: FlowPostResponseFactory.build({
+                artifactType: 'PUPPET',
+                artifactName: 'kukuriku'
+            }),
+            test3: FlowPostResponseFactory.build({ artifactName: 'test3' })
+        };
+
+        const artifactsArray = Object.keys(artifacts).map(artifact => artifact);
+
+        deepFreeze(artifacts);
+
+        deepFreeze(store.getState());
+
+        let actionData = {
+            artifacts,
+            diagramType: enums.WORKFLOW,
+            participants: [],
+            serviceID: '1234'
+        };
+        FlowsActions.fetchFlowArtifacts(store.dispatch, actionData);
+
+        let state = store.getState();
+        expect(state.flows.flowList.length).toEqual(artifactsArray.length);
+        expect(state.flows.flowParticipants).toEqual(actionData.participants);
+        expect(state.flows.serviceID).toBe(actionData.serviceID);
+        expect(state.flows.diagramType).toBe(actionData.diagramType);
+    });
+
+    it('Add New Flow', () => {
+        deepFreeze(store.getState());
+
+        const flowCreateData = FlowCreateFactory.build();
+        let expectedDataToBeSentInTheRequest = buildFromExistingObject(
+            FlowPostRequestFactory,
+            flowCreateData
+        );
+
+        mockRest.addHandler('post', ({ data, baseUrl, options }) => {
+            expect(baseUrl).toBe(
+                `/sdc1/feProxy/rest/v1/catalog/services/${
+                    flowCreateData.serviceID
+                }/artifacts/`
+            );
+            expect(data.artifactLabel).toBe(
+                expectedDataToBeSentInTheRequest.artifactLabel
+            );
+            expect(data.artifactName).toBe(
+                expectedDataToBeSentInTheRequest.artifactName
+            );
+            expect(data.artifactType).toBe(
+                expectedDataToBeSentInTheRequest.artifactType
+            );
+            expect(data.description).toBe(
+                expectedDataToBeSentInTheRequest.description
+            );
+            expect(data.payloadData).toBe(
+                expectedDataToBeSentInTheRequest.payloadData
+            );
+            expect(options.md5).toBe(true);
+            return buildFromExistingObject(
+                FlowPostResponseFactory,
+                expectedDataToBeSentInTheRequest
+            );
+        });
+
+        return FlowsActions.createOrUpdateFlow(
+            store.dispatch,
+            { flow: flowCreateData },
+            NEW_FLOW
+        ).then(() => {
+            assertFlowDataAfterCreateFetchAndUpdate(flowCreateData);
+        });
+    });
+
+    it('Fetch Flow', () => {
+        deepFreeze(store.getState());
+
+        const flowFetchData = FlowFetchRequestFactory.build();
+
+        mockRest.addHandler('fetch', ({ baseUrl }) => {
+            //sdc1/feProxy/rest/v1/catalog/services/338d75f0-aec8-4eb4-89c9-8733fcd9bf3b/artifacts/338d75f0-aec8-4eb4-89c9-8733fcd9bf3b.zizizi
+            expect(baseUrl).toBe(
+                `/sdc1/feProxy/rest/v1/catalog/services/${
+                    flowFetchData.serviceID
+                }/artifacts/${flowFetchData.uniqueId}`
+            );
+            return buildFromExistingObject(
+                FlowFetchResponseFactory,
+                flowFetchData
+            );
+        });
+
+        return FlowsActions.fetchArtifact(store.dispatch, {
+            flow: flowFetchData
+        }).then(() => {
+            assertFlowDataAfterCreateFetchAndUpdate(flowFetchData);
+        });
+    });
+
+    it('Update Existing Flow', () => {
+        deepFreeze(store.getState());
+        const flowUpdateData = FlowUpdateRequestFactory.build();
+
+        mockRest.addHandler('post', ({ baseUrl }) => {
+            expect(baseUrl).toBe(
+                `/sdc1/feProxy/rest/v1/catalog/services/${
+                    flowUpdateData.serviceID
+                }/artifacts/${flowUpdateData.uniqueId}`
+            );
+
+            return buildFromExistingObject(
+                FlowPostResponseFactory,
+                flowUpdateData
+            );
+        });
+
+        return FlowsActions.createOrUpdateFlow(
+            store.dispatch,
+            { flow: flowUpdateData },
+            !NEW_FLOW
+        ).then(() => {
+            assertFlowDataAfterCreateFetchAndUpdate(flowUpdateData);
+        });
+    });
+
+    it('Delete Flow', () => {
+        deepFreeze(store.getState());
+
+        const flowDeleteData = FlowDeleteRequestFactory.build();
+
+        mockRest.addHandler('destroy', ({ baseUrl }) => {
+            expect(baseUrl).toBe(
+                `/sdc1/feProxy/rest/v1/catalog/services/${
+                    flowDeleteData.serviceID
+                }/artifacts/${flowDeleteData.uniqueId}`
+            );
+            return {};
+        });
+
+        return FlowsActions.deleteFlow(store.dispatch, {
+            flow: flowDeleteData
+        }).then(() => {
+            let { flowList } = store.getState().flows;
+            let index = flowList.findIndex(
+                flow => flow.uniqueId === flowDeleteData.uniqueId
+            );
+            expect(index).toBe(-1);
+        });
+    });
 });
index 565b8a4..4957e3b 100644 (file)
 
 import React from 'react';
 import TestUtils from 'react-dom/test-utils';
-import {mapStateToProps} from 'sdc-app/onboarding/licenseModel/featureGroups/FeatureGroupListEditor.js';
+import { mapStateToProps } from 'sdc-app/onboarding/licenseModel/featureGroups/FeatureGroupListEditor.js';
 import FeatureGroupsListEditorView from 'sdc-app/onboarding/licenseModel/featureGroups/FeatureGroupListEditorView.jsx';
 import { FeatureGroupStoreFactory } from 'test-utils/factories/licenseModel/FeatureGroupFactories.js';
-import {LicenseModelOverviewFactory} from 'test-utils/factories/licenseModel/LicenseModelFactories.js';
+import { LicenseModelOverviewFactory } from 'test-utils/factories/licenseModel/LicenseModelFactories.js';
 import { buildListFromFactory } from 'test-utils/Util.js';
 import VersionControllerUtilsFactory from 'test-utils/factories/softwareProduct/VersionControllerUtilsFactory.js';
 
-describe('License Model  Feature Group List  Module Tests', function () {
+describe('License Model  Feature Group List  Module Tests', function() {
+    it('should mapper exist', () => {
+        expect(mapStateToProps).toBeTruthy();
+    });
 
-       it('should mapper exist', () => {
-               expect(mapStateToProps).toBeTruthy();
-       });
+    it('should return empty data', () => {
+        let licenseModel = LicenseModelOverviewFactory.build({
+            featureGroup: {
+                featureGroupEditor: {},
+                featureGroupsList: []
+            },
+            licenseModelEditor: {
+                data: {
+                    ...VersionControllerUtilsFactory.build()
+                }
+            }
+        });
+        var results = mapStateToProps({ licenseModel });
+        expect(results.vendorName).toEqual(undefined);
+        expect(results.featureGroupsList).toEqual([]);
+    });
 
+    it('should return true for show and edit mode and vendorName should be not empty', () => {
+        let licenseModel = LicenseModelOverviewFactory.build({
+            featureGroup: {
+                featureGroupEditor: {
+                    data: FeatureGroupStoreFactory.build()
+                },
+                featureGroupsList: []
+            }
+        });
+        var results = mapStateToProps({ licenseModel });
+        expect(results.vendorName).toEqual(
+            licenseModel.licenseModelEditor.data.vendorName
+        );
+    });
 
-       it('should return empty data', () => {
-
-
-               let licenseModel = LicenseModelOverviewFactory.build({
-                       featureGroup: {
-                               featureGroupEditor: {},
-                               featureGroupsList: []
-                       },
-                       licenseModelEditor: {
-                               data:{
-                                       ...VersionControllerUtilsFactory.build()
-                               }
-                       }
-               });
-               var results = mapStateToProps({licenseModel});
-               expect(results.vendorName).toEqual(undefined);
-               expect(results.featureGroupsModal.show).toEqual(false);
-               expect(results.featureGroupsModal.editMode).toEqual(false);
-               expect(results.featureGroupsList).toEqual([]);
-       });
-
-       it('should return true for show and edit mode and vendorName should be not empty', () => {
-
-               let licenseModel = LicenseModelOverviewFactory.build({
-                       featureGroup: {
-                               featureGroupEditor: {
-                                       data: FeatureGroupStoreFactory.build()
-                               },
-                               featureGroupsList: []
-                       }
-               });
-               var results = mapStateToProps({licenseModel});
-               expect(results.featureGroupsModal.show).toEqual(true);
-               expect(results.featureGroupsModal.editMode).toEqual(true);
-               expect(results.vendorName).toEqual(licenseModel.licenseModelEditor.data.vendorName);
-       });
-
-       it('jsx view test', () => {
-               var view = TestUtils.renderIntoDocument(<FeatureGroupsListEditorView  vendorName=''
-                       licenseModelId=''
-                       featureGroupsModal={{show: false, editMode: false}}
-                       isReadOnlyMode={false}
-                       onAddFeatureGroupClick={()=>{}}
-                       featureGroupsList={[]} />);
-               expect(view).toBeTruthy();
-       });
-
-       it('jsx view list test', () => {
-               var view = TestUtils.renderIntoDocument(<FeatureGroupsListEditorView  vendorName=''
-                       licenseModelId=''
-                       featureGroupsModal={{show: false, editMode: true}}
-                       isReadOnlyMode={false}
-                       onAddFeatureGroupClick={()=>{}}
-                       featureGroupsList={buildListFromFactory(FeatureGroupStoreFactory)} />);
-               expect(view).toBeTruthy();
-       });
+    it('jsx view test', () => {
+        var view = TestUtils.renderIntoDocument(
+            <FeatureGroupsListEditorView
+                vendorName=""
+                licenseModelId=""
+                isReadOnlyMode={false}
+                onAddFeatureGroupClick={() => {}}
+                featureGroupsList={[]}
+            />
+        );
+        expect(view).toBeTruthy();
+    });
 
+    it('jsx view list test', () => {
+        var view = TestUtils.renderIntoDocument(
+            <FeatureGroupsListEditorView
+                vendorName=""
+                licenseModelId=""
+                isReadOnlyMode={false}
+                onAddFeatureGroupClick={() => {}}
+                featureGroupsList={buildListFromFactory(
+                    FeatureGroupStoreFactory
+                )}
+            />
+        );
+        expect(view).toBeTruthy();
+    });
 });
index bbebcaf..0d72d5d 100644 (file)
@@ -96,11 +96,10 @@ describe('License Model Module Tests', function() {
         };
         const expectedSuccessModal = {
             cancelButtonText: 'OK',
-            modalClassName: 'notification-modal',
             msg: 'This license model successfully submitted',
             timeout: 2000,
             title: 'Submit Succeeded',
-            type: 'success'
+            type: 'info'
         };
 
         const versionsList = {
index 0738bbb..cc69439 100644 (file)
  * limitations under the License.
  */
 
-
 import React from 'react';
 import ShallowRenderer from 'react-test-renderer/shallow';
 import TestUtils from 'react-dom/test-utils';
 import TabulatedEditor from 'nfvo-components/editor/TabulatedEditor.jsx';
 import { Provider } from 'react-redux';
-import {storeCreator} from 'sdc-app/AppStore.js';
-
-describe('Tabulated Editor test: ', function () {
-       const store = storeCreator();
-       it('basic view test', () => {
-               const renderer = new ShallowRenderer();
-               renderer.render(
-                       <Provider store={store}><TabulatedEditor><button>test</button></TabulatedEditor></Provider>
-               );
-               let renderedOutput = renderer.getRenderOutput();
-               expect(renderedOutput).toBeTruthy();
-
-       });
+import { storeCreator } from 'sdc-app/AppStore.js';
 
-       it('handle func test', () => {
-               let props = {
-                       navigationBarProps: {
-                               groups: [],
-                               onNavigationItemClick: ()=>{}
-                       },
-                       versionControllerProps: {
-                               isCheckedOut: false,
-                               version: {id: '0.1', label: '0.1'},
-                               viewableVersions: [{id: '0.1', label: '0.1'}],
-                               itemPermission: {isCertified: false, isCollaborator: true, isDirty: false},
-                               onSubmit: ()=>{},
-                               onRevert: ()=>{}
-                       }
-               };
-               const view = TestUtils.renderIntoDocument(<Provider store={store}><TabulatedEditor {...props}><button>test</button></TabulatedEditor></Provider>);
-               expect(view).toBeTruthy();
-       });
+describe('Tabulated Editor test: ', function() {
+    const store = storeCreator();
+    it('basic view test', () => {
+        const renderer = new ShallowRenderer();
+        renderer.render(
+            <Provider store={store}>
+                <TabulatedEditor>
+                    <button>test</button>
+                </TabulatedEditor>
+            </Provider>
+        );
+        let renderedOutput = renderer.getRenderOutput();
+        expect(renderedOutput).toBeTruthy();
+    });
 
+    it('handle func test', () => {
+        let props = {
+            navigationBarProps: {
+                groups: [],
+                onNavigationItemClick: () => {},
+                activeItemId: 'test'
+            },
+            versionControllerProps: {
+                isCheckedOut: false,
+                version: { id: '0.1', label: '0.1' },
+                viewableVersions: [{ id: '0.1', label: '0.1' }],
+                itemPermission: {
+                    isCertified: false,
+                    isCollaborator: true,
+                    isDirty: false
+                },
+                onSubmit: () => {},
+                onRevert: () => {}
+            }
+        };
+        const view = TestUtils.renderIntoDocument(
+            <Provider store={store}>
+                <TabulatedEditor {...props}>
+                    <button>test</button>
+                </TabulatedEditor>
+            </Provider>
+        );
+        expect(view).toBeTruthy();
+    });
 });
index 5e3c93b..9e6e1ee 100644 (file)
@@ -28,7 +28,7 @@ describe('Filter component view Tests', () => {
                 <Filter />
             </Provider>
         );
-        const filter = wrapper.find('.catalog-filter');
+        const filter = wrapper.find('.catalog-filter').hostNodes();
         expect(filter.hasClass('catalog-filter')).toBeTruthy();
     });
 });
index 6ad696a..90de1e3 100644 (file)
-/*!
- * Copyright (C) 2017 AT&T Intellectual Property. All rights reserved.
+/*
+ * 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
+ *      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.
+ * 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 deepFreeze from 'deep-freeze';
 import mockRest from 'test-utils/MockRest.js';
-import {cloneAndSet} from 'test-utils/Util.js';
-import {storeCreator} from 'sdc-app/AppStore.js';
+import { cloneAndSet } from 'test-utils/Util.js';
+import { storeCreator } from 'sdc-app/AppStore.js';
 import Configuration from 'sdc-app/config/Configuration.js';
 import SoftwareProductProcessesActionHelper from 'sdc-app/onboarding/softwareProduct/processes/SoftwareProductProcessesActionHelper.js';
 import {
-       VSPProcessPostFactory,
-       VSPProcessStoreFactory,
-       VSPProcessPostFactoryWithType,
-       VSPProcessStoreFactoryWithType,
-       VSPProcessStoreWithFormDataFactory,
-       VSPProcessPostWithFormDataFactory,
-       VSPProcessStoreWithArtifactNameFactory } from 'test-utils/factories/softwareProduct/SoftwareProductProcessFactories.js';
-import {buildFromExistingObject} from 'test-utils/Util.js';
-import {VSPEditorFactory} from 'test-utils/factories/softwareProduct/SoftwareProductEditorFactories.js';
+    VSPProcessPostFactory,
+    VSPProcessStoreFactory,
+    VSPProcessPostFactoryWithType,
+    VSPProcessStoreFactoryWithType,
+    VSPProcessStoreWithFormDataFactory,
+    VSPProcessPostWithFormDataFactory,
+    VSPProcessStoreWithArtifactNameFactory
+} from 'test-utils/factories/softwareProduct/SoftwareProductProcessFactories.js';
+import { buildFromExistingObject } from 'test-utils/Util.js';
+import { VSPEditorFactory } from 'test-utils/factories/softwareProduct/SoftwareProductEditorFactories.js';
 import VersionFactory from 'test-utils/factories/common/VersionFactory.js';
 
 const softwareProductId = '123';
 const version = VersionFactory.build();
 
-describe('Software Product Processes Module Tests', function () {
-
-       let restPrefix = '';
-
-       beforeAll(function() {
-               restPrefix = Configuration.get('restPrefix');
-               deepFreeze(restPrefix);
-       });
-
-       //**
-       //** ADD
-       //**
-       it('Add Software Products Processes', () => {
-
-               const store = storeCreator();
-               deepFreeze(store.getState());
-
-               const softwareProductProcessFromResponse = 'ADDED_ID';
-
-               const softwareProductProcessAfterAdd = VSPProcessStoreFactory.build({id: softwareProductProcessFromResponse});
-               const softwareProductPostRequest = buildFromExistingObject(VSPProcessPostFactory, softwareProductProcessAfterAdd);
-
-               const expectedStore = cloneAndSet(store.getState(), 'softwareProduct.softwareProductProcesses.processesList', [softwareProductProcessAfterAdd]);
-
-               mockRest.addHandler('post', ({data, options, baseUrl}) => {
-
-                       expect(baseUrl).toEqual(`${restPrefix}/v1.0/vendor-software-products/${softwareProductId}/versions/${version.id}/processes`);
-                       expect(data).toEqual(softwareProductPostRequest);
-                       expect(options).toEqual(undefined);
-                       return {
-                               returnCode: 'OK',
-                               value: softwareProductProcessFromResponse
-                       };
-               });
-
-               return SoftwareProductProcessesActionHelper.saveProcess(store.dispatch,
-                       {
-                               softwareProductId,
-                               version,
-                               previousProcess: null,
-                               process: softwareProductPostRequest
-                       }
-               ).then(() => {
-                       expect(store.getState()).toEqual(expectedStore);
-               });
-       });
-
-       it('Add Software Products Processes with type', () => {
-
-               const store = storeCreator();
-               deepFreeze(store.getState());
-
-               const softwareProductProcessFromResponse = 'ADDED_ID';
-
-               const softwareProductProcessAfterAdd = VSPProcessStoreFactoryWithType.build({id: softwareProductProcessFromResponse});
-               const softwareProductPostRequest = buildFromExistingObject(VSPProcessPostFactoryWithType, softwareProductProcessAfterAdd);
-
-               const expectedStore = cloneAndSet(store.getState(), 'softwareProduct.softwareProductProcesses.processesList', [softwareProductProcessAfterAdd]);
-
-               mockRest.addHandler('post', ({data, options, baseUrl}) => {
-
-                       expect(baseUrl).toEqual(`${restPrefix}/v1.0/vendor-software-products/${softwareProductId}/versions/${version.id}/processes`);
-                       expect(data).toEqual(softwareProductPostRequest);
-                       expect(options).toEqual(undefined);
-                       return {
-                               returnCode: 'OK',
-                               value: softwareProductProcessFromResponse
-                       };
-               });
-
-               return SoftwareProductProcessesActionHelper.saveProcess(store.dispatch,
-                       {
-                               softwareProductId,
-                               version,
-                               previousProcess: null,
-                               process: softwareProductPostRequest
-                       }
-               ).then(() => {
-                       expect(store.getState()).toEqual(expectedStore);
-               });
-       });
-
-       it('Add Software Products Processes with uploaded file', () => {
-
-               const store = storeCreator();
-               deepFreeze(store.getState());
-
-               const softwareProductPostRequest = VSPProcessPostFactoryWithType.build();
-               const softwareProductProcessToAdd = VSPProcessPostWithFormDataFactory.build(softwareProductPostRequest);
-               const softwareProductProcessAfterAdd = VSPProcessStoreWithFormDataFactory.build();
-
-               const expectedStore = cloneAndSet(store.getState(), 'softwareProduct.softwareProductProcesses.processesList', [softwareProductProcessAfterAdd]);
-
-               mockRest.addHandler('post', ({data, options, baseUrl}) => {
-                       expect(baseUrl).toEqual(`${restPrefix}/v1.0/vendor-software-products/${softwareProductId}/versions/${version.id}/processes`);
-                       expect(data).toEqual(softwareProductPostRequest);
-                       expect(options).toEqual(undefined);
-                       return {
-                               returnCode: 'OK',
-                               value: softwareProductProcessAfterAdd.id
-                       };
-               });
-
-               mockRest.addHandler('post', ({data, options, baseUrl}) => {
-                       expect(baseUrl).toEqual(`${restPrefix}/v1.0/vendor-software-products/${softwareProductId}/versions/${version.id}/processes/${softwareProductProcessAfterAdd.id}/upload`);
-                       expect(data).toEqual(softwareProductProcessToAdd.formData);
-                       expect(options).toEqual(undefined);
-                       return {returnCode: 'OK'};
-               });
-
-               return SoftwareProductProcessesActionHelper.saveProcess(store.dispatch,
-                       {
-                               softwareProductId,
-                               version,
-                               previousProcess: null,
-                               process: softwareProductProcessToAdd
-                       }
-               ).then(() => {
-                       expect(store.getState()).toEqual(expectedStore);
-               });
-       });
-
-       //**
-       //** UPDATE
-       //**
-       it('Update Software Products Processes', () => {
-               const softwareProductProcessesList = VSPProcessStoreWithArtifactNameFactory.buildList(1);
-               deepFreeze(softwareProductProcessesList);
-
-               const store = storeCreator({
-                       softwareProduct: {
-                               softwareProductProcesses: {
-                                       processesList: softwareProductProcessesList
-                               }
-                       }
-               });
-               deepFreeze(store.getState());
-
-               const toBeUpdatedProcessId = softwareProductProcessesList[0].id;
-               const previousProcessData = softwareProductProcessesList[0];
-               const processUpdateData = VSPProcessStoreWithArtifactNameFactory.build(
-                       {...previousProcessData,
-                               name: 'Pr1_UPDATED',
-                               description: 'string_UPDATED',
-                               type: 'Other'
-                       }
-               );
-
-               deepFreeze(processUpdateData);
-
-               const processPutRequest = VSPProcessPostFactory.build({
-                       name: 'Pr1_UPDATED',
-                       description: 'string_UPDATED',
-                       type: 'Other'
-               });
-               deepFreeze(processPutRequest);
-
-               const expectedStore = cloneAndSet(store.getState(), 'softwareProduct.softwareProductProcesses.processesList', [processUpdateData]);
-
-
-               mockRest.addHandler('put', ({data, options, baseUrl}) => {
-                       expect(baseUrl).toEqual(`${restPrefix}/v1.0/vendor-software-products/${softwareProductId}/versions/${version.id}/processes/${toBeUpdatedProcessId}`);
-                       expect(data).toEqual(processPutRequest);
-                       expect(options).toEqual(undefined);
-                       return {returnCode: 'OK'};
-               });
-
-               return SoftwareProductProcessesActionHelper.saveProcess(store.dispatch,
-                       {
-                               softwareProductId,
-                               version,
-                               previousProcess: previousProcessData,
-                               process: processUpdateData
-                       }
-               ).then(() => {
-                       expect(store.getState()).toEqual(expectedStore);
-               });
-       });
-
-       it('Update Software Products Processes and uploaded file', () => {
-               const previousProcessData = VSPProcessStoreWithArtifactNameFactory.build();
-               deepFreeze(previousProcessData);
-
-               const store = storeCreator({
-                       softwareProduct: {
-                               softwareProductProcesses: {
-                                       processesList: [previousProcessData]
-                               }
-                       }
-               });
-               deepFreeze(store.getState());
-
-               const newProcessToUpdate = VSPProcessStoreWithFormDataFactory.build({
-                       ...previousProcessData,
-                       name: 'new name',
-                       formData: {
-                               name: 'new artifact name'
-                       }
-               });
-               deepFreeze(newProcessToUpdate);
-
-               const newProcessToPutRequest = VSPProcessPostFactory.build({
-                       name: newProcessToUpdate.name,
-                       description: previousProcessData.description,
-                       type: previousProcessData.type
-               });
-               deepFreeze(newProcessToPutRequest);
-
-               const expectedStore = cloneAndSet(store.getState(), 'softwareProduct.softwareProductProcesses.processesList', [newProcessToUpdate]);
-
-               mockRest.addHandler('put', ({data, options, baseUrl}) => {
-                       expect(baseUrl).toEqual(`${restPrefix}/v1.0/vendor-software-products/${softwareProductId}/versions/${version.id}/processes/${newProcessToUpdate.id}`);
-                       expect(data).toEqual(newProcessToPutRequest);
-                       expect(options).toEqual(undefined);
-                       return {returnCode: 'OK'};
-               });
-
-               mockRest.addHandler('post', ({data, options, baseUrl}) => {
-                       expect(baseUrl).toEqual(`${restPrefix}/v1.0/vendor-software-products/${softwareProductId}/versions/${version.id}/processes/${newProcessToUpdate.id}/upload`);
-                       expect(data).toEqual(newProcessToUpdate.formData);
-                       expect(options).toEqual(undefined);
-                       return {returnCode: 'OK'};
-               });
-
-               return SoftwareProductProcessesActionHelper.saveProcess(store.dispatch,
-                       {
-                               softwareProductId,
-                               version,
-                               previousProcess: previousProcessData,
-                               process: newProcessToUpdate
-                       }
-               ).then(() => {
-                       expect(store.getState()).toEqual(expectedStore);
-               });
-       });
-
-       //**
-       //** GET
-       //**
-       it('Get Software Products Processes List', () => {
-               const store = storeCreator();
-               deepFreeze(store.getState());
-
-               const softwareProductProcessesList = VSPProcessStoreFactory.buildList(2);
-
-               deepFreeze(softwareProductProcessesList);
-
-               deepFreeze(store.getState());
-
-               const expectedStore = cloneAndSet(store.getState(), 'softwareProduct.softwareProductProcesses.processesList', softwareProductProcessesList);
-
-               mockRest.addHandler('fetch', ({options, data, baseUrl}) => {
-                       expect(baseUrl).toEqual(`${restPrefix}/v1.0/vendor-software-products/${softwareProductId}/versions/${version.id}/processes`);
-                       expect(data).toEqual(undefined);
-                       expect(options).toEqual(undefined);
-                       return {results: softwareProductProcessesList};
-               });
-
-               return SoftwareProductProcessesActionHelper.fetchProcessesList(store.dispatch, {softwareProductId, version}).then(() => {
-                       expect(store.getState()).toEqual(expectedStore);
-               });
-       });
-
-       //**
-       //** DELETE
-       //**
-       it('Delete Software Products Processes', () => {
-               const softwareProductProcessesList = VSPProcessStoreWithArtifactNameFactory.buildList(1);
-               const currentSoftwareProduct = VSPEditorFactory.build();
-
-               deepFreeze(softwareProductProcessesList);
-               const store = storeCreator({
-                       softwareProduct: {
-                               softwareProductProcesses: {
-                                       processesList: softwareProductProcessesList
-                               },
-                               softwareProductEditor: {
-                                       data: currentSoftwareProduct
-                               }
-                       }
-               });
-
-               const processId = softwareProductProcessesList[0].id;
-               const versionId = version.id;
-               deepFreeze(store.getState());
-
-               const expectedStore = cloneAndSet(store.getState(), 'softwareProduct.softwareProductProcesses.processesList', []);
-
-               mockRest.addHandler('destroy', ({data, options, baseUrl}) => {
-                       expect(baseUrl).toEqual(`${restPrefix}/v1.0/vendor-software-products/${softwareProductId}/versions/${versionId}/processes/${processId}`);
-                       expect(data).toEqual(undefined);
-                       expect(options).toEqual(undefined);
-                       return {
-                               results: {
-                                       returnCode: 'OK'
-                               }
-                       };
-               });
-
-               return SoftwareProductProcessesActionHelper.deleteProcess(store.dispatch, {
-                       process: softwareProductProcessesList[0],
-                       softwareProductId,
-                       version
-               }).then(() => {
-                       expect(store.getState()).toEqual(expectedStore);
-               });
-       });
-
-       it('Validating Software Products Processes Delete confirmation', () => {
-               const store = storeCreator();
-               deepFreeze(store.getState());
-
-               let process = VSPProcessStoreFactory.build();
-               deepFreeze(process);
-
-               const expectedStore = cloneAndSet(store.getState(), 'softwareProduct.softwareProductProcesses.processToDelete', process);
-
-               return SoftwareProductProcessesActionHelper.openDeleteProcessesConfirm(store.dispatch, {process});
-
-               expect(store.getState()).toEqual(expectedStore);
-       });
-
-       it('Validating Software Products Processes Cancel Delete', () => {
-               const store = storeCreator();
-               deepFreeze(store.getState());
-
-               const expectedStore = cloneAndSet(store.getState(), 'softwareProduct.softwareProductProcesses.processToDelete', false);
-
-               SoftwareProductProcessesActionHelper.hideDeleteConfirm(store.dispatch);
-
-               expect(store.getState()).toEqual(expectedStore);
-       });
-
-       //**
-       //** CREATE/EDIT
-       //**
-       it('Validating open Software Products Processes for create', () => {
-               const store = storeCreator();
-               deepFreeze(store.getState());
-
-               let process = {};
-               deepFreeze(process);
-
-               const expectedStore = cloneAndSet(store.getState(), 'softwareProduct.softwareProductProcesses.processesEditor.data', process);
-
-               SoftwareProductProcessesActionHelper.openEditor(store.dispatch);
-               expect(store.getState().softwareProduct.softwareProductProcesses.processesEditor.data).toEqual(expectedStore.softwareProduct.softwareProductProcesses.processesEditor.data);
-       });
-
-       it('Validating close Software Products Processes from editing mode', () => {
-               const store = storeCreator();
-               deepFreeze(store.getState());
-
-               const expectedStore = cloneAndSet(store.getState(), 'softwareProduct.softwareProductProcesses.processesEditor', {});
-
-               SoftwareProductProcessesActionHelper.closeEditor(store.dispatch);
-               expect(store.getState()).toEqual(expectedStore);
-       });
-
-       it('Validating open Software Products Processes for editing', () => {
-               const store = storeCreator();
-               deepFreeze(store.getState());
-
-               let process = {name: 'aa', description: 'xx'};
-               deepFreeze(process);
-
-               const expectedStore = cloneAndSet(store.getState(), 'softwareProduct.softwareProductProcesses.processesEditor.data', process);
-
-               SoftwareProductProcessesActionHelper.openEditor(store.dispatch, process);
-               expect(store.getState().softwareProduct.softwareProductProcesses.processesEditor.data).toEqual(expectedStore.softwareProduct.softwareProductProcesses.processesEditor.data);
-
-       });
-
+describe('Software Product Processes Module Tests', function() {
+    let restPrefix = '';
+
+    beforeAll(function() {
+        restPrefix = Configuration.get('restPrefix');
+        deepFreeze(restPrefix);
+    });
+
+    //**
+    //** ADD
+    //**
+    it('Add Software Products Processes', () => {
+        const store = storeCreator();
+        deepFreeze(store.getState());
+
+        const softwareProductProcessFromResponse = 'ADDED_ID';
+
+        const softwareProductProcessAfterAdd = VSPProcessStoreFactory.build({
+            id: softwareProductProcessFromResponse
+        });
+        const softwareProductPostRequest = buildFromExistingObject(
+            VSPProcessPostFactory,
+            softwareProductProcessAfterAdd
+        );
+
+        const expectedStore = cloneAndSet(
+            store.getState(),
+            'softwareProduct.softwareProductProcesses.processesList',
+            [softwareProductProcessAfterAdd]
+        );
+
+        mockRest.addHandler('post', ({ data, options, baseUrl }) => {
+            expect(baseUrl).toEqual(
+                `${restPrefix}/v1.0/vendor-software-products/${softwareProductId}/versions/${
+                    version.id
+                }/processes`
+            );
+            expect(data).toEqual(softwareProductPostRequest);
+            expect(options).toEqual(undefined);
+            return {
+                returnCode: 'OK',
+                value: softwareProductProcessFromResponse
+            };
+        });
+
+        return SoftwareProductProcessesActionHelper.saveProcess(
+            store.dispatch,
+            {
+                softwareProductId,
+                version,
+                previousProcess: null,
+                process: softwareProductPostRequest
+            }
+        ).then(() => {
+            expect(store.getState()).toEqual(expectedStore);
+        });
+    });
+
+    it('Add Software Products Processes with type', () => {
+        const store = storeCreator();
+        deepFreeze(store.getState());
+
+        const softwareProductProcessFromResponse = 'ADDED_ID';
+
+        const softwareProductProcessAfterAdd = VSPProcessStoreFactoryWithType.build(
+            { id: softwareProductProcessFromResponse }
+        );
+        const softwareProductPostRequest = buildFromExistingObject(
+            VSPProcessPostFactoryWithType,
+            softwareProductProcessAfterAdd
+        );
+
+        const expectedStore = cloneAndSet(
+            store.getState(),
+            'softwareProduct.softwareProductProcesses.processesList',
+            [softwareProductProcessAfterAdd]
+        );
+
+        mockRest.addHandler('post', ({ data, options, baseUrl }) => {
+            expect(baseUrl).toEqual(
+                `${restPrefix}/v1.0/vendor-software-products/${softwareProductId}/versions/${
+                    version.id
+                }/processes`
+            );
+            expect(data).toEqual(softwareProductPostRequest);
+            expect(options).toEqual(undefined);
+            return {
+                returnCode: 'OK',
+                value: softwareProductProcessFromResponse
+            };
+        });
+
+        return SoftwareProductProcessesActionHelper.saveProcess(
+            store.dispatch,
+            {
+                softwareProductId,
+                version,
+                previousProcess: null,
+                process: softwareProductPostRequest
+            }
+        ).then(() => {
+            expect(store.getState()).toEqual(expectedStore);
+        });
+    });
+
+    it('Add Software Products Processes with uploaded file', () => {
+        const store = storeCreator();
+        deepFreeze(store.getState());
+
+        const softwareProductPostRequest = VSPProcessPostFactoryWithType.build();
+        const softwareProductProcessToAdd = VSPProcessPostWithFormDataFactory.build(
+            softwareProductPostRequest
+        );
+        const softwareProductProcessAfterAdd = VSPProcessStoreWithFormDataFactory.build();
+
+        const expectedStore = cloneAndSet(
+            store.getState(),
+            'softwareProduct.softwareProductProcesses.processesList',
+            [softwareProductProcessAfterAdd]
+        );
+
+        mockRest.addHandler('post', ({ data, options, baseUrl }) => {
+            expect(baseUrl).toEqual(
+                `${restPrefix}/v1.0/vendor-software-products/${softwareProductId}/versions/${
+                    version.id
+                }/processes`
+            );
+            expect(data).toEqual(softwareProductPostRequest);
+            expect(options).toEqual(undefined);
+            return {
+                returnCode: 'OK',
+                value: softwareProductProcessAfterAdd.id
+            };
+        });
+
+        mockRest.addHandler('post', ({ data, options, baseUrl }) => {
+            expect(baseUrl).toEqual(
+                `${restPrefix}/v1.0/vendor-software-products/${softwareProductId}/versions/${
+                    version.id
+                }/processes/${softwareProductProcessAfterAdd.id}/upload`
+            );
+            expect(data).toEqual(softwareProductProcessToAdd.formData);
+            expect(options).toEqual(undefined);
+            return { returnCode: 'OK' };
+        });
+
+        return SoftwareProductProcessesActionHelper.saveProcess(
+            store.dispatch,
+            {
+                softwareProductId,
+                version,
+                previousProcess: null,
+                process: softwareProductProcessToAdd
+            }
+        ).then(() => {
+            expect(store.getState()).toEqual(expectedStore);
+        });
+    });
+
+    //**
+    //** UPDATE
+    //**
+    it('Update Software Products Processes', () => {
+        const softwareProductProcessesList = VSPProcessStoreWithArtifactNameFactory.buildList(
+            1
+        );
+        deepFreeze(softwareProductProcessesList);
+
+        const store = storeCreator({
+            softwareProduct: {
+                softwareProductProcesses: {
+                    processesList: softwareProductProcessesList
+                }
+            }
+        });
+        deepFreeze(store.getState());
+
+        const toBeUpdatedProcessId = softwareProductProcessesList[0].id;
+        const previousProcessData = softwareProductProcessesList[0];
+        const processUpdateData = VSPProcessStoreWithArtifactNameFactory.build({
+            ...previousProcessData,
+            name: 'Pr1_UPDATED',
+            description: 'string_UPDATED',
+            type: 'Other'
+        });
+
+        deepFreeze(processUpdateData);
+
+        const processPutRequest = VSPProcessPostFactory.build({
+            name: 'Pr1_UPDATED',
+            description: 'string_UPDATED',
+            type: 'Other'
+        });
+        deepFreeze(processPutRequest);
+
+        const expectedStore = cloneAndSet(
+            store.getState(),
+            'softwareProduct.softwareProductProcesses.processesList',
+            [processUpdateData]
+        );
+
+        mockRest.addHandler('put', ({ data, options, baseUrl }) => {
+            expect(baseUrl).toEqual(
+                `${restPrefix}/v1.0/vendor-software-products/${softwareProductId}/versions/${
+                    version.id
+                }/processes/${toBeUpdatedProcessId}`
+            );
+            expect(data).toEqual(processPutRequest);
+            expect(options).toEqual(undefined);
+            return { returnCode: 'OK' };
+        });
+
+        return SoftwareProductProcessesActionHelper.saveProcess(
+            store.dispatch,
+            {
+                softwareProductId,
+                version,
+                previousProcess: previousProcessData,
+                process: processUpdateData
+            }
+        ).then(() => {
+            expect(store.getState()).toEqual(expectedStore);
+        });
+    });
+
+    it('Update Software Products Processes and uploaded file', () => {
+        const previousProcessData = VSPProcessStoreWithArtifactNameFactory.build();
+        deepFreeze(previousProcessData);
+
+        const store = storeCreator({
+            softwareProduct: {
+                softwareProductProcesses: {
+                    processesList: [previousProcessData]
+                }
+            }
+        });
+        deepFreeze(store.getState());
+
+        const newProcessToUpdate = VSPProcessStoreWithFormDataFactory.build({
+            ...previousProcessData,
+            name: 'new name',
+            formData: {
+                name: 'new artifact name'
+            }
+        });
+        deepFreeze(newProcessToUpdate);
+
+        const newProcessToPutRequest = VSPProcessPostFactory.build({
+            name: newProcessToUpdate.name,
+            description: previousProcessData.description,
+            type: previousProcessData.type
+        });
+        deepFreeze(newProcessToPutRequest);
+
+        const expectedStore = cloneAndSet(
+            store.getState(),
+            'softwareProduct.softwareProductProcesses.processesList',
+            [newProcessToUpdate]
+        );
+
+        mockRest.addHandler('put', ({ data, options, baseUrl }) => {
+            expect(baseUrl).toEqual(
+                `${restPrefix}/v1.0/vendor-software-products/${softwareProductId}/versions/${
+                    version.id
+                }/processes/${newProcessToUpdate.id}`
+            );
+            expect(data).toEqual(newProcessToPutRequest);
+            expect(options).toEqual(undefined);
+            return { returnCode: 'OK' };
+        });
+
+        mockRest.addHandler('post', ({ data, options, baseUrl }) => {
+            expect(baseUrl).toEqual(
+                `${restPrefix}/v1.0/vendor-software-products/${softwareProductId}/versions/${
+                    version.id
+                }/processes/${newProcessToUpdate.id}/upload`
+            );
+            expect(data).toEqual(newProcessToUpdate.formData);
+            expect(options).toEqual(undefined);
+            return { returnCode: 'OK' };
+        });
+
+        return SoftwareProductProcessesActionHelper.saveProcess(
+            store.dispatch,
+            {
+                softwareProductId,
+                version,
+                previousProcess: previousProcessData,
+                process: newProcessToUpdate
+            }
+        ).then(() => {
+            expect(store.getState()).toEqual(expectedStore);
+        });
+    });
+
+    //**
+    //** GET
+    //**
+    it('Get Software Products Processes List', () => {
+        const store = storeCreator();
+        deepFreeze(store.getState());
+
+        const softwareProductProcessesList = VSPProcessStoreFactory.buildList(
+            2
+        );
+
+        deepFreeze(softwareProductProcessesList);
+
+        deepFreeze(store.getState());
+
+        const expectedStore = cloneAndSet(
+            store.getState(),
+            'softwareProduct.softwareProductProcesses.processesList',
+            softwareProductProcessesList
+        );
+
+        mockRest.addHandler('fetch', ({ options, data, baseUrl }) => {
+            expect(baseUrl).toEqual(
+                `${restPrefix}/v1.0/vendor-software-products/${softwareProductId}/versions/${
+                    version.id
+                }/processes`
+            );
+            expect(data).toEqual(undefined);
+            expect(options).toEqual(undefined);
+            return { results: softwareProductProcessesList };
+        });
+
+        return SoftwareProductProcessesActionHelper.fetchProcessesList(
+            store.dispatch,
+            { softwareProductId, version }
+        ).then(() => {
+            expect(store.getState()).toEqual(expectedStore);
+        });
+    });
+
+    //**
+    //** DELETE
+    //**
+    it('Delete Software Products Processes', () => {
+        const softwareProductProcessesList = VSPProcessStoreWithArtifactNameFactory.buildList(
+            1
+        );
+        const currentSoftwareProduct = VSPEditorFactory.build();
+
+        deepFreeze(softwareProductProcessesList);
+        const store = storeCreator({
+            softwareProduct: {
+                softwareProductProcesses: {
+                    processesList: softwareProductProcessesList
+                },
+                softwareProductEditor: {
+                    data: currentSoftwareProduct
+                }
+            }
+        });
+
+        const processId = softwareProductProcessesList[0].id;
+        const versionId = version.id;
+        deepFreeze(store.getState());
+
+        const expectedStore = cloneAndSet(
+            store.getState(),
+            'softwareProduct.softwareProductProcesses.processesList',
+            []
+        );
+
+        mockRest.addHandler('destroy', ({ data, options, baseUrl }) => {
+            expect(baseUrl).toEqual(
+                `${restPrefix}/v1.0/vendor-software-products/${softwareProductId}/versions/${versionId}/processes/${processId}`
+            );
+            expect(data).toEqual(undefined);
+            expect(options).toEqual(undefined);
+            return {
+                results: {
+                    returnCode: 'OK'
+                }
+            };
+        });
+
+        return SoftwareProductProcessesActionHelper.deleteProcess(
+            store.dispatch,
+            {
+                process: softwareProductProcessesList[0],
+                softwareProductId,
+                version
+            }
+        ).then(() => {
+            expect(store.getState()).toEqual(expectedStore);
+        });
+    });
+
+    it('Validating Software Products Processes Delete confirmation', () => {
+        const store = storeCreator();
+        deepFreeze(store.getState());
+
+        let process = VSPProcessStoreFactory.build();
+        deepFreeze(process);
+
+        const expectedStore = cloneAndSet(
+            store.getState(),
+            'softwareProduct.softwareProductProcesses.processToDelete',
+            process
+        );
+
+        return SoftwareProductProcessesActionHelper.openDeleteProcessesConfirm(
+            store.dispatch,
+            { process }
+        );
+
+        expect(store.getState()).toEqual(expectedStore);
+    });
+
+    it('Validating Software Products Processes Cancel Delete', () => {
+        const store = storeCreator();
+        deepFreeze(store.getState());
+
+        const expectedStore = cloneAndSet(
+            store.getState(),
+            'softwareProduct.softwareProductProcesses.processToDelete',
+            false
+        );
+
+        SoftwareProductProcessesActionHelper.hideDeleteConfirm(store.dispatch);
+
+        expect(store.getState()).toEqual(expectedStore);
+    });
+
+    //**
+    //** CREATE/EDIT
+    //**
+
+    it('Validating close Software Products Processes from editing mode', () => {
+        const store = storeCreator();
+        deepFreeze(store.getState());
+
+        const expectedStore = cloneAndSet(
+            store.getState(),
+            'softwareProduct.softwareProductProcesses.processesEditor',
+            {}
+        );
+
+        SoftwareProductProcessesActionHelper.closeEditor(store.dispatch);
+        expect(store.getState()).toEqual(expectedStore);
+    });
+
+    it('Validating open Software Products Processes for editing', () => {
+        const store = storeCreator();
+        deepFreeze(store.getState());
+
+        let process = { name: 'aa', description: 'xx' };
+        deepFreeze(process);
+
+        const expectedStore = cloneAndSet(
+            store.getState(),
+            'softwareProduct.softwareProductProcesses.processesEditor.data',
+            process
+        );
+
+        SoftwareProductProcessesActionHelper.openEditor(store.dispatch, {
+            process
+        });
+        expect(
+            store.getState().softwareProduct.softwareProductProcesses
+                .processesEditor.data
+        ).toEqual(
+            expectedStore.softwareProduct.softwareProductProcesses
+                .processesEditor.data
+        );
+    });
 });
index 91b4e7d..489b982 100644 (file)
@@ -71,11 +71,10 @@ describe('Software Product Module Tests', function() {
         };
         const expectedSuccessModal = {
             cancelButtonText: 'OK',
-            modalClassName: 'notification-modal',
             msg: 'This software product successfully submitted',
             timeout: 2000,
             title: 'Submit Succeeded',
-            type: 'success'
+            type: 'info'
         };
 
         let expectedStore = store.getState();
index cae8bc4..de2b8b2 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.
  */
 import deepFreeze from 'deep-freeze';
 
-import {cloneAndSet} from '../../test-utils/Util.js';
+import { cloneAndSet } from '../../test-utils/Util.js';
 import store from 'sdc-app/AppStore.js';
 import errorResponseHandler from 'nfvo-utils/ErrorResponseHandler.js';
-import {typeEnum as modalType} from 'nfvo-components/modal/GlobalModalConstants.js';
+import { typeEnum as modalType } from 'nfvo-components/modal/GlobalModalConstants.js';
 
 describe('Error Response Handler Util', () => {
-
-       beforeEach(function () {
-               deepFreeze(store.getState());
-       });
-
-       it('validating error in policyException', () => {
-               let textStatus = '', errorThrown = '';
-               let xhr = {
-                       data: {
-                               requestError: {
-                                       policyException: {
-                                               messageId: 'SVC4122',
-                                               text: 'Error: Invalid data.'
-                                       }
-                               }
-                       }
-               };
-               deepFreeze(xhr);
-
-               const errorNotification = {                     
-                       title: 'Error: SVC4122',
-                       msg: 'Error: Invalid data.',                    
-                       modalClassName: 'notification-modal',
-                       type: modalType.ERROR   
-               };
-
-
-
-               const expectedStore = cloneAndSet(store.getState(), 'modal', errorNotification);
-
-               errorResponseHandler(xhr, textStatus, errorThrown);
-
-               expect(store.getState()).toEqual(expectedStore);
-       });
-
-       it('validating error in serviceException with variables', () => {
-               let textStatus = '', errorThrown = '';
-               let xhr = {
-                       data: {
-                               requestError: {
-                                       serviceException: {
-                                               messageId: 'SVC4122',
-                                               text: "Error: Invalid artifact type '%1'.",
-                                               variables: ['newType']
-                                       }
-                               }
-                       }
-               };
-               deepFreeze(xhr);
-       
-               const errorNotification = {                     
-                       title: 'Error: SVC4122',
-                       msg: 'Error: Invalid artifact type newType.',                   
-                       modalClassName: 'notification-modal',
-                       type: modalType.ERROR   
-               };
-
-               const expectedStore = cloneAndSet(store.getState(), 'modal', errorNotification);
-
-               errorResponseHandler(xhr, textStatus, errorThrown);
-
-               expect(store.getState()).toEqual(expectedStore);
-       });
-
-       it('validating error in response', () => {
-               let textStatus = '', errorThrown = '';
-               let xhr = {
-                       data: {
-                               status: 'AA',
-                               message: 'Error: Invalid data.'
-                       }
-               };
-               deepFreeze(xhr);
-
-               const errorNotification = {                     
-                       title: 'AA',
-                       msg: 'Error: Invalid data.',                    
-                       modalClassName: 'notification-modal',
-                       type: modalType.ERROR   
-               };
-
-               const expectedStore = cloneAndSet(store.getState(), 'modal', errorNotification);
-
-               errorResponseHandler(xhr, textStatus, errorThrown);
-
-               expect(store.getState()).toEqual(expectedStore);
-       });
-
-       it('validating error in request', () => {
-               let textStatus = '', errorThrown = '';
-               let xhr = {
-                       statusText: '500',
-                       responseText: 'Internal server error.'
-               };
-               deepFreeze(xhr);
-       
-               const errorNotification = {                     
-                       title: '500',
-                       msg: 'Internal server error.',                  
-                       modalClassName: 'notification-modal',
-                       type: modalType.ERROR   
-               };
-
-               const expectedStore = cloneAndSet(store.getState(), 'modal', errorNotification);
-
-               errorResponseHandler(xhr, textStatus, errorThrown);
-
-               expect(store.getState()).toEqual(expectedStore);
-       });
+    beforeEach(function() {
+        deepFreeze(store.getState());
+    });
+
+    it('validating error in policyException', () => {
+        let textStatus = '',
+            errorThrown = '';
+        let xhr = {
+            data: {
+                requestError: {
+                    policyException: {
+                        messageId: 'SVC4122',
+                        text: 'Error: Invalid data.'
+                    }
+                }
+            }
+        };
+        deepFreeze(xhr);
+
+        const errorNotification = {
+            title: 'Error: SVC4122',
+            msg: 'Error: Invalid data.',
+            type: modalType.ERROR
+        };
+
+        const expectedStore = cloneAndSet(
+            store.getState(),
+            'modal',
+            errorNotification
+        );
+
+        errorResponseHandler(xhr, textStatus, errorThrown);
+
+        expect(store.getState()).toEqual(expectedStore);
+    });
+
+    it('validating error in serviceException with variables', () => {
+        let textStatus = '',
+            errorThrown = '';
+        let xhr = {
+            data: {
+                requestError: {
+                    serviceException: {
+                        messageId: 'SVC4122',
+                        text: "Error: Invalid artifact type '%1'.",
+                        variables: ['newType']
+                    }
+                }
+            }
+        };
+        deepFreeze(xhr);
+
+        const errorNotification = {
+            title: 'Error: SVC4122',
+            msg: 'Error: Invalid artifact type newType.',
+            type: modalType.ERROR
+        };
+
+        const expectedStore = cloneAndSet(
+            store.getState(),
+            'modal',
+            errorNotification
+        );
+
+        errorResponseHandler(xhr, textStatus, errorThrown);
+
+        expect(store.getState()).toEqual(expectedStore);
+    });
+
+    it('validating error in response', () => {
+        let textStatus = '',
+            errorThrown = '';
+        let xhr = {
+            data: {
+                status: 'AA',
+                message: 'Error: Invalid data.'
+            }
+        };
+        deepFreeze(xhr);
+
+        const errorNotification = {
+            title: 'AA',
+            msg: 'Error: Invalid data.',
+            type: modalType.ERROR
+        };
+
+        const expectedStore = cloneAndSet(
+            store.getState(),
+            'modal',
+            errorNotification
+        );
+
+        errorResponseHandler(xhr, textStatus, errorThrown);
+
+        expect(store.getState()).toEqual(expectedStore);
+    });
+
+    it('validating error in request', () => {
+        let textStatus = '',
+            errorThrown = '';
+        let xhr = {
+            statusText: '500',
+            responseText: 'Internal server error.'
+        };
+        deepFreeze(xhr);
+
+        const errorNotification = {
+            title: '500',
+            msg: 'Internal server error.',
+            type: modalType.ERROR
+        };
+
+        const expectedStore = cloneAndSet(
+            store.getState(),
+            'modal',
+            errorNotification
+        );
+
+        errorResponseHandler(xhr, textStatus, errorThrown);
+
+        expect(store.getState()).toEqual(expectedStore);
+    });
 });
index 6cd7e3b..56a9880 100644 (file)
     esutils "^2.0.2"
     js-tokens "^3.0.0"
 
+"@babel/parser@7.0.0-beta.53":
+  version "7.0.0-beta.53"
+  resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.0.0-beta.53.tgz#1f45eb617bf9463d482b2c04d349d9e4edbf4892"
+
 "@babel/template@7.0.0-beta.44":
   version "7.0.0-beta.44"
   resolved "https://registry.yarnpkg.com/@babel/template/-/template-7.0.0-beta.44.tgz#f8832f4fdcee5d59bf515e595fc5106c529b394f"
   version "0.7.0"
   resolved "https://registry.yarnpkg.com/@sindresorhus/is/-/is-0.7.0.tgz#9a06f4f137ee84d7df0460c1fdb1135ffa6c50fd"
 
-"@storybook/addon-actions@3.4.6":
-  version "3.4.6"
-  resolved "https://registry.yarnpkg.com/@storybook/addon-actions/-/addon-actions-3.4.6.tgz#70ca84a4754ea2969640428890d9a3c9369261f6"
+"@storybook/addon-actions@3.4.10":
+  version "3.4.10"
+  resolved "https://registry.yarnpkg.com/@storybook/addon-actions/-/addon-actions-3.4.10.tgz#b90ca8ccbad925dcbb4af02d2d24cc2c60bcec3f"
   dependencies:
-    "@storybook/components" "3.4.6"
+    "@storybook/components" "3.4.10"
     babel-runtime "^6.26.0"
     deep-equal "^1.0.1"
     glamor "^2.20.40"
     react-inspector "^2.2.2"
     uuid "^3.2.1"
 
-"@storybook/addon-links@3.4.6":
-  version "3.4.6"
-  resolved "https://registry.yarnpkg.com/@storybook/addon-links/-/addon-links-3.4.6.tgz#0e167c03932ddfcbeba02215af1a420c0d3f0843"
+"@storybook/addon-links@3.4.10":
+  version "3.4.10"
+  resolved "https://registry.yarnpkg.com/@storybook/addon-links/-/addon-links-3.4.10.tgz#db53d0a0b354e7f5e55195315f48f7045307a429"
   dependencies:
-    "@storybook/components" "3.4.6"
+    "@storybook/components" "3.4.10"
     babel-runtime "^6.26.0"
     global "^4.3.2"
     prop-types "^15.6.1"
 
-"@storybook/addons@3.4.6":
-  version "3.4.6"
-  resolved "https://registry.yarnpkg.com/@storybook/addons/-/addons-3.4.6.tgz#8275e46b8dfe7c751f2f18a431bc3339c999a2ae"
+"@storybook/addons@3.4.10":
+  version "3.4.10"
+  resolved "https://registry.yarnpkg.com/@storybook/addons/-/addons-3.4.10.tgz#13298cdcb7ccc396321b1336b9785b69273a022d"
 
-"@storybook/channel-postmessage@3.4.6":
-  version "3.4.6"
-  resolved "https://registry.yarnpkg.com/@storybook/channel-postmessage/-/channel-postmessage-3.4.6.tgz#acb7d6096bd060a3d224d7e753e33c22f21fabdb"
+"@storybook/channel-postmessage@3.4.10":
+  version "3.4.10"
+  resolved "https://registry.yarnpkg.com/@storybook/channel-postmessage/-/channel-postmessage-3.4.10.tgz#fa88bdf8530d4499481c9e30c9364545f043b908"
   dependencies:
-    "@storybook/channels" "3.4.6"
+    "@storybook/channels" "3.4.10"
     global "^4.3.2"
     json-stringify-safe "^5.0.1"
 
-"@storybook/channels@3.4.6":
-  version "3.4.6"
-  resolved "https://registry.yarnpkg.com/@storybook/channels/-/channels-3.4.6.tgz#4147b4e171763f168cd523a3f83e7e125c9523c2"
+"@storybook/channels@3.4.10":
+  version "3.4.10"
+  resolved "https://registry.yarnpkg.com/@storybook/channels/-/channels-3.4.10.tgz#ab023a0d8cbd34a4eb4b8ae5c6f02654fed9190b"
 
-"@storybook/client-logger@3.4.6":
-  version "3.4.6"
-  resolved "https://registry.yarnpkg.com/@storybook/client-logger/-/client-logger-3.4.6.tgz#2f2b271d6825c7325f999f6b17d7ef69984faa18"
+"@storybook/client-logger@3.4.10":
+  version "3.4.10"
+  resolved "https://registry.yarnpkg.com/@storybook/client-logger/-/client-logger-3.4.10.tgz#510854ee326808a65a20b79e3405763280bc7027"
 
-"@storybook/components@3.4.6":
-  version "3.4.6"
-  resolved "https://registry.yarnpkg.com/@storybook/components/-/components-3.4.6.tgz#34bddcfa21bddc59ef57a052d157285fab7ba003"
+"@storybook/components@3.4.10":
+  version "3.4.10"
+  resolved "https://registry.yarnpkg.com/@storybook/components/-/components-3.4.10.tgz#9af0bba14234d10f14a37656ac5982ec640cfcc8"
   dependencies:
     glamor "^2.20.40"
     glamorous "^4.12.1"
     prop-types "^15.6.1"
 
-"@storybook/core@3.4.6":
-  version "3.4.6"
-  resolved "https://registry.yarnpkg.com/@storybook/core/-/core-3.4.6.tgz#3261dc89bff2c716579270da3f5cf83a374eca5c"
+"@storybook/core@3.4.10":
+  version "3.4.10"
+  resolved "https://registry.yarnpkg.com/@storybook/core/-/core-3.4.10.tgz#32bdd071be15ad611e87f55d96e1d80bcc23e636"
   dependencies:
-    "@storybook/addons" "3.4.6"
-    "@storybook/channel-postmessage" "3.4.6"
-    "@storybook/client-logger" "3.4.6"
-    "@storybook/node-logger" "3.4.6"
-    "@storybook/ui" "3.4.6"
+    "@storybook/addons" "3.4.10"
+    "@storybook/channel-postmessage" "3.4.10"
+    "@storybook/client-logger" "3.4.10"
+    "@storybook/node-logger" "3.4.10"
+    "@storybook/ui" "3.4.10"
     autoprefixer "^7.2.6"
     babel-runtime "^6.26.0"
     chalk "^2.3.2"
     "@storybook/react-simple-di" "^1.2.1"
     babel-runtime "6.x.x"
 
-"@storybook/node-logger@3.4.6":
-  version "3.4.6"
-  resolved "https://registry.yarnpkg.com/@storybook/node-logger/-/node-logger-3.4.6.tgz#aed4f5bd102e033391584ef82bd3fec055659448"
+"@storybook/node-logger@3.4.10":
+  version "3.4.10"
+  resolved "https://registry.yarnpkg.com/@storybook/node-logger/-/node-logger-3.4.10.tgz#b89b7008a7d98b28530920a178ec77bde2ab97cc"
   dependencies:
     npmlog "^4.1.2"
 
     babel-runtime "^6.5.0"
 
 "@storybook/react@^3.1.5":
-  version "3.4.6"
-  resolved "https://registry.yarnpkg.com/@storybook/react/-/react-3.4.6.tgz#8bc0c1e10305d7539decb8f8c781b5970ff951ff"
-  dependencies:
-    "@storybook/addon-actions" "3.4.6"
-    "@storybook/addon-links" "3.4.6"
-    "@storybook/addons" "3.4.6"
-    "@storybook/channel-postmessage" "3.4.6"
-    "@storybook/client-logger" "3.4.6"
-    "@storybook/core" "3.4.6"
-    "@storybook/node-logger" "3.4.6"
-    "@storybook/ui" "3.4.6"
+  version "3.4.10"
+  resolved "https://registry.yarnpkg.com/@storybook/react/-/react-3.4.10.tgz#3bab6cd5c23c90b3de7b9e5aa58042a28cb0d181"
+  dependencies:
+    "@storybook/addon-actions" "3.4.10"
+    "@storybook/addon-links" "3.4.10"
+    "@storybook/addons" "3.4.10"
+    "@storybook/channel-postmessage" "3.4.10"
+    "@storybook/client-logger" "3.4.10"
+    "@storybook/core" "3.4.10"
+    "@storybook/node-logger" "3.4.10"
+    "@storybook/ui" "3.4.10"
     airbnb-js-shims "^1.4.1"
     babel-loader "^7.1.4"
     babel-plugin-macros "^2.2.0"
     webpack "^3.11.0"
     webpack-hot-middleware "^2.22.1"
 
-"@storybook/ui@3.4.6":
-  version "3.4.6"
-  resolved "https://registry.yarnpkg.com/@storybook/ui/-/ui-3.4.6.tgz#c25c93d0843c4250b77b2a3614533a7d5790893d"
+"@storybook/ui@3.4.10":
+  version "3.4.10"
+  resolved "https://registry.yarnpkg.com/@storybook/ui/-/ui-3.4.10.tgz#aeb36f60f4297a7065aa64ba770df681d6aac793"
   dependencies:
-    "@storybook/components" "3.4.6"
+    "@storybook/components" "3.4.10"
     "@storybook/mantra-core" "^1.7.2"
     "@storybook/podda" "^1.2.3"
     "@storybook/react-komposer" "^2.0.3"
     react-split-pane "^0.1.77"
     react-treebeard "^2.1.0"
 
-"@webassemblyjs/ast@1.5.9":
-  version "1.5.9"
-  resolved "https://registry.yarnpkg.com/@webassemblyjs/ast/-/ast-1.5.9.tgz#b2770182678691ab4949d593105c15d4074fedb6"
+"@types/node@*":
+  version "10.5.7"
+  resolved "https://registry.yarnpkg.com/@types/node/-/node-10.5.7.tgz#960d9feb3ade2233bcc9843c918d740b4f78a7cf"
+
+"@webassemblyjs/ast@1.5.13":
+  version "1.5.13"
+  resolved "https://registry.yarnpkg.com/@webassemblyjs/ast/-/ast-1.5.13.tgz#81155a570bd5803a30ec31436bc2c9c0ede38f25"
   dependencies:
-    "@webassemblyjs/helper-module-context" "1.5.9"
-    "@webassemblyjs/helper-wasm-bytecode" "1.5.9"
-    "@webassemblyjs/wast-parser" "1.5.9"
+    "@webassemblyjs/helper-module-context" "1.5.13"
+    "@webassemblyjs/helper-wasm-bytecode" "1.5.13"
+    "@webassemblyjs/wast-parser" "1.5.13"
     debug "^3.1.0"
     mamacro "^0.0.3"
 
-"@webassemblyjs/floating-point-hex-parser@1.5.9":
-  version "1.5.9"
-  resolved "https://registry.yarnpkg.com/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.5.9.tgz#ee56243f6ba30781ff6f92fe7f1c377255219a7c"
+"@webassemblyjs/floating-point-hex-parser@1.5.13":
+  version "1.5.13"
+  resolved "https://registry.yarnpkg.com/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.5.13.tgz#29ce0baa97411f70e8cce68ce9c0f9d819a4e298"
 
-"@webassemblyjs/helper-api-error@1.5.9":
-  version "1.5.9"
-  resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-api-error/-/helper-api-error-1.5.9.tgz#c80e204afe1ae102c23b0357f1ec25aeb61022a2"
+"@webassemblyjs/helper-api-error@1.5.13":
+  version "1.5.13"
+  resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-api-error/-/helper-api-error-1.5.13.tgz#e49b051d67ee19a56e29b9aa8bd949b5b4442a59"
 
-"@webassemblyjs/helper-buffer@1.5.9":
-  version "1.5.9"
-  resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-buffer/-/helper-buffer-1.5.9.tgz#90d99afcb0fdc1ee11bc403894f3ae37cd926a81"
+"@webassemblyjs/helper-buffer@1.5.13":
+  version "1.5.13"
+  resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-buffer/-/helper-buffer-1.5.13.tgz#873bb0a1b46449231137c1262ddfd05695195a1e"
   dependencies:
     debug "^3.1.0"
 
-"@webassemblyjs/helper-code-frame@1.5.9":
-  version "1.5.9"
-  resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-code-frame/-/helper-code-frame-1.5.9.tgz#b56ac06a39c3e1cfefcc421ade1ee471a738a570"
+"@webassemblyjs/helper-code-frame@1.5.13":
+  version "1.5.13"
+  resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-code-frame/-/helper-code-frame-1.5.13.tgz#1bd2181b6a0be14e004f0fe9f5a660d265362b58"
   dependencies:
-    "@webassemblyjs/wast-printer" "1.5.9"
+    "@webassemblyjs/wast-printer" "1.5.13"
 
-"@webassemblyjs/helper-fsm@1.5.9":
-  version "1.5.9"
-  resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-fsm/-/helper-fsm-1.5.9.tgz#8f996268eb07ee6728130a9e97fa3aac32772454"
+"@webassemblyjs/helper-fsm@1.5.13":
+  version "1.5.13"
+  resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-fsm/-/helper-fsm-1.5.13.tgz#cdf3d9d33005d543a5c5e5adaabf679ffa8db924"
 
-"@webassemblyjs/helper-module-context@1.5.9":
-  version "1.5.9"
-  resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-module-context/-/helper-module-context-1.5.9.tgz#69e2eea310f755a0b750b84f8af59f890f2046ac"
+"@webassemblyjs/helper-module-context@1.5.13":
+  version "1.5.13"
+  resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-module-context/-/helper-module-context-1.5.13.tgz#dc29ddfb51ed657655286f94a5d72d8a489147c5"
+  dependencies:
+    debug "^3.1.0"
+    mamacro "^0.0.3"
 
-"@webassemblyjs/helper-wasm-bytecode@1.5.9":
-  version "1.5.9"
-  resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.5.9.tgz#467ba0f9e4d0e4a48bf1c5107b9f4abe3ca1171a"
+"@webassemblyjs/helper-wasm-bytecode@1.5.13":
+  version "1.5.13"
+  resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.5.13.tgz#03245817f0a762382e61733146f5773def15a747"
 
-"@webassemblyjs/helper-wasm-section@1.5.9":
-  version "1.5.9"
-  resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.5.9.tgz#aec9486ab5d56e3cb5252a7ed88777b6792ac624"
+"@webassemblyjs/helper-wasm-section@1.5.13":
+  version "1.5.13"
+  resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.5.13.tgz#efc76f44a10d3073b584b43c38a179df173d5c7d"
   dependencies:
-    "@webassemblyjs/ast" "1.5.9"
-    "@webassemblyjs/helper-buffer" "1.5.9"
-    "@webassemblyjs/helper-wasm-bytecode" "1.5.9"
-    "@webassemblyjs/wasm-gen" "1.5.9"
+    "@webassemblyjs/ast" "1.5.13"
+    "@webassemblyjs/helper-buffer" "1.5.13"
+    "@webassemblyjs/helper-wasm-bytecode" "1.5.13"
+    "@webassemblyjs/wasm-gen" "1.5.13"
     debug "^3.1.0"
 
-"@webassemblyjs/ieee754@1.5.9":
-  version "1.5.9"
-  resolved "https://registry.yarnpkg.com/@webassemblyjs/ieee754/-/ieee754-1.5.9.tgz#846856ece040c7debd5b5645b319c26523613bcf"
+"@webassemblyjs/ieee754@1.5.13":
+  version "1.5.13"
+  resolved "https://registry.yarnpkg.com/@webassemblyjs/ieee754/-/ieee754-1.5.13.tgz#573e97c8c12e4eebb316ca5fde0203ddd90b0364"
   dependencies:
     ieee754 "^1.1.11"
 
-"@webassemblyjs/leb128@1.5.9":
-  version "1.5.9"
-  resolved "https://registry.yarnpkg.com/@webassemblyjs/leb128/-/leb128-1.5.9.tgz#7249443a0fd7574a7e3c1c39532535c735390bbc"
+"@webassemblyjs/leb128@1.5.13":
+  version "1.5.13"
+  resolved "https://registry.yarnpkg.com/@webassemblyjs/leb128/-/leb128-1.5.13.tgz#ab52ebab9cec283c1c1897ac1da833a04a3f4cee"
   dependencies:
-    leb "^0.3.0"
+    long "4.0.0"
 
-"@webassemblyjs/wasm-edit@1.5.9":
-  version "1.5.9"
-  resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-edit/-/wasm-edit-1.5.9.tgz#9b8e054b2d305a7e0528088571c95904bd73df48"
+"@webassemblyjs/utf8@1.5.13":
+  version "1.5.13"
+  resolved "https://registry.yarnpkg.com/@webassemblyjs/utf8/-/utf8-1.5.13.tgz#6b53d2cd861cf94fa99c1f12779dde692fbc2469"
+
+"@webassemblyjs/wasm-edit@1.5.13":
+  version "1.5.13"
+  resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-edit/-/wasm-edit-1.5.13.tgz#c9cef5664c245cf11b3b3a73110c9155831724a8"
   dependencies:
-    "@webassemblyjs/ast" "1.5.9"
-    "@webassemblyjs/helper-buffer" "1.5.9"
-    "@webassemblyjs/helper-wasm-bytecode" "1.5.9"
-    "@webassemblyjs/helper-wasm-section" "1.5.9"
-    "@webassemblyjs/wasm-gen" "1.5.9"
-    "@webassemblyjs/wasm-opt" "1.5.9"
-    "@webassemblyjs/wasm-parser" "1.5.9"
-    "@webassemblyjs/wast-printer" "1.5.9"
+    "@webassemblyjs/ast" "1.5.13"
+    "@webassemblyjs/helper-buffer" "1.5.13"
+    "@webassemblyjs/helper-wasm-bytecode" "1.5.13"
+    "@webassemblyjs/helper-wasm-section" "1.5.13"
+    "@webassemblyjs/wasm-gen" "1.5.13"
+    "@webassemblyjs/wasm-opt" "1.5.13"
+    "@webassemblyjs/wasm-parser" "1.5.13"
+    "@webassemblyjs/wast-printer" "1.5.13"
     debug "^3.1.0"
 
-"@webassemblyjs/wasm-gen@1.5.9":
-  version "1.5.9"
-  resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-gen/-/wasm-gen-1.5.9.tgz#85e07c047fab917e06b18dee4d16342a2fd3c59c"
+"@webassemblyjs/wasm-gen@1.5.13":
+  version "1.5.13"
+  resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-gen/-/wasm-gen-1.5.13.tgz#8e6ea113c4b432fa66540189e79b16d7a140700e"
   dependencies:
-    "@webassemblyjs/ast" "1.5.9"
-    "@webassemblyjs/helper-wasm-bytecode" "1.5.9"
-    "@webassemblyjs/ieee754" "1.5.9"
-    "@webassemblyjs/leb128" "1.5.9"
+    "@webassemblyjs/ast" "1.5.13"
+    "@webassemblyjs/helper-wasm-bytecode" "1.5.13"
+    "@webassemblyjs/ieee754" "1.5.13"
+    "@webassemblyjs/leb128" "1.5.13"
+    "@webassemblyjs/utf8" "1.5.13"
 
-"@webassemblyjs/wasm-opt@1.5.9":
-  version "1.5.9"
-  resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-opt/-/wasm-opt-1.5.9.tgz#ccac17c41a044c167bc95d3e8645cf889a137ce5"
+"@webassemblyjs/wasm-opt@1.5.13":
+  version "1.5.13"
+  resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-opt/-/wasm-opt-1.5.13.tgz#147aad7717a7ee4211c36b21a5f4c30dddf33138"
   dependencies:
-    "@webassemblyjs/ast" "1.5.9"
-    "@webassemblyjs/helper-buffer" "1.5.9"
-    "@webassemblyjs/wasm-gen" "1.5.9"
-    "@webassemblyjs/wasm-parser" "1.5.9"
+    "@webassemblyjs/ast" "1.5.13"
+    "@webassemblyjs/helper-buffer" "1.5.13"
+    "@webassemblyjs/wasm-gen" "1.5.13"
+    "@webassemblyjs/wasm-parser" "1.5.13"
     debug "^3.1.0"
 
-"@webassemblyjs/wasm-parser@1.5.9":
-  version "1.5.9"
-  resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-parser/-/wasm-parser-1.5.9.tgz#ddab84da4957b64aafbc61e4ab706cc667082f32"
-  dependencies:
-    "@webassemblyjs/ast" "1.5.9"
-    "@webassemblyjs/helper-api-error" "1.5.9"
-    "@webassemblyjs/helper-wasm-bytecode" "1.5.9"
-    "@webassemblyjs/ieee754" "1.5.9"
-    "@webassemblyjs/leb128" "1.5.9"
-    "@webassemblyjs/wasm-parser" "1.5.9"
-
-"@webassemblyjs/wast-parser@1.5.9":
-  version "1.5.9"
-  resolved "https://registry.yarnpkg.com/@webassemblyjs/wast-parser/-/wast-parser-1.5.9.tgz#193d24ccf4742a5f8f1915936680ab2314011df2"
-  dependencies:
-    "@webassemblyjs/ast" "1.5.9"
-    "@webassemblyjs/floating-point-hex-parser" "1.5.9"
-    "@webassemblyjs/helper-api-error" "1.5.9"
-    "@webassemblyjs/helper-code-frame" "1.5.9"
-    "@webassemblyjs/helper-fsm" "1.5.9"
+"@webassemblyjs/wasm-parser@1.5.13":
+  version "1.5.13"
+  resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-parser/-/wasm-parser-1.5.13.tgz#6f46516c5bb23904fbdf58009233c2dd8a54c72f"
+  dependencies:
+    "@webassemblyjs/ast" "1.5.13"
+    "@webassemblyjs/helper-api-error" "1.5.13"
+    "@webassemblyjs/helper-wasm-bytecode" "1.5.13"
+    "@webassemblyjs/ieee754" "1.5.13"
+    "@webassemblyjs/leb128" "1.5.13"
+    "@webassemblyjs/utf8" "1.5.13"
+
+"@webassemblyjs/wast-parser@1.5.13":
+  version "1.5.13"
+  resolved "https://registry.yarnpkg.com/@webassemblyjs/wast-parser/-/wast-parser-1.5.13.tgz#5727a705d397ae6a3ae99d7f5460acf2ec646eea"
+  dependencies:
+    "@webassemblyjs/ast" "1.5.13"
+    "@webassemblyjs/floating-point-hex-parser" "1.5.13"
+    "@webassemblyjs/helper-api-error" "1.5.13"
+    "@webassemblyjs/helper-code-frame" "1.5.13"
+    "@webassemblyjs/helper-fsm" "1.5.13"
     long "^3.2.0"
     mamacro "^0.0.3"
 
-"@webassemblyjs/wast-printer@1.5.9":
-  version "1.5.9"
-  resolved "https://registry.yarnpkg.com/@webassemblyjs/wast-printer/-/wast-printer-1.5.9.tgz#16605d90a481c01a130b7c4edeb2bce503787eb4"
+"@webassemblyjs/wast-printer@1.5.13":
+  version "1.5.13"
+  resolved "https://registry.yarnpkg.com/@webassemblyjs/wast-printer/-/wast-printer-1.5.13.tgz#bb34d528c14b4f579e7ec11e793ec50ad7cd7c95"
   dependencies:
-    "@webassemblyjs/ast" "1.5.9"
-    "@webassemblyjs/wast-parser" "1.5.9"
+    "@webassemblyjs/ast" "1.5.13"
+    "@webassemblyjs/wast-parser" "1.5.13"
     long "^3.2.0"
 
 abab@^1.0.3:
@@ -506,17 +522,17 @@ acorn@^4.0.3, acorn@^4.0.4:
   version "4.0.13"
   resolved "https://registry.yarnpkg.com/acorn/-/acorn-4.0.13.tgz#105495ae5361d697bd195c825192e1ad7f253787"
 
-acorn@^5.0.0, acorn@^5.2.1, acorn@^5.5.0:
-  version "5.5.3"
-  resolved "https://registry.yarnpkg.com/acorn/-/acorn-5.5.3.tgz#f473dd47e0277a08e28e9bec5aeeb04751f0b8c9"
+acorn@^5.0.0, acorn@^5.2.1, acorn@^5.5.0, acorn@^5.6.2:
+  version "5.7.1"
+  resolved "https://registry.yarnpkg.com/acorn/-/acorn-5.7.1.tgz#f095829297706a7c9776958c0afc8930a9b9d9d8"
 
 address@1.0.3, address@^1.0.1:
   version "1.0.3"
   resolved "https://registry.yarnpkg.com/address/-/address-1.0.3.tgz#b5f50631f8d6cec8bd20c963963afb55e06cbce9"
 
 airbnb-js-shims@^1.4.1:
-  version "1.5.2"
-  resolved "https://registry.yarnpkg.com/airbnb-js-shims/-/airbnb-js-shims-1.5.2.tgz#25132bc99784ec702ac1e2467f043c82ca0bd170"
+  version "1.7.0"
+  resolved "https://registry.yarnpkg.com/airbnb-js-shims/-/airbnb-js-shims-1.7.0.tgz#bc74f00bd241632051ebec80bc5ccfed2b21dffc"
   dependencies:
     array-includes "^3.0.3"
     array.prototype.flat "^1.2.1"
@@ -526,9 +542,11 @@ airbnb-js-shims@^1.4.1:
     es6-shim "^0.35.3"
     function.prototype.name "^1.1.0"
     object.entries "^1.0.4"
+    object.fromentries "^1.0.0"
     object.getownpropertydescriptors "^2.0.3"
     object.values "^1.0.4"
     promise.prototype.finally "^3.1.0"
+    string.prototype.matchall "^3.0.0"
     string.prototype.padend "^3.0.0"
     string.prototype.padstart "^3.0.0"
     symbol.prototype.description "^1.0.0"
@@ -541,6 +559,13 @@ ajv-keywords@^3.1.0:
   version "3.2.0"
   resolved "https://registry.yarnpkg.com/ajv-keywords/-/ajv-keywords-3.2.0.tgz#e86b819c602cf8821ad637413698f1dec021847a"
 
+ajv@^4.9.1:
+  version "4.11.8"
+  resolved "https://registry.yarnpkg.com/ajv/-/ajv-4.11.8.tgz#82ffb02b29e662ae53bdc20af15947706739c536"
+  dependencies:
+    co "^4.6.0"
+    json-stable-stringify "^1.0.1"
+
 ajv@^5.0.0, ajv@^5.1.0, ajv@^5.2.3, ajv@^5.3.0:
   version "5.5.2"
   resolved "https://registry.yarnpkg.com/ajv/-/ajv-5.5.2.tgz#73b5eeca3fab653e3d3f9422b341ad42205dc965"
@@ -551,12 +576,12 @@ ajv@^5.0.0, ajv@^5.1.0, ajv@^5.2.3, ajv@^5.3.0:
     json-schema-traverse "^0.3.0"
 
 ajv@^6.1.0:
-  version "6.5.0"
-  resolved "https://registry.yarnpkg.com/ajv/-/ajv-6.5.0.tgz#4c8affdf80887d8f132c9c52ab8a2dc4d0b7b24c"
+  version "6.5.2"
+  resolved "https://registry.yarnpkg.com/ajv/-/ajv-6.5.2.tgz#678495f9b82f7cca6be248dd92f59bff5e1f4360"
   dependencies:
     fast-deep-equal "^2.0.1"
     fast-json-stable-stringify "^2.0.0"
-    json-schema-traverse "^0.3.0"
+    json-schema-traverse "^0.4.1"
     uri-js "^4.2.1"
 
 align-text@^0.1.1, align-text@^0.1.3:
@@ -642,11 +667,11 @@ anymatch@^2.0.0:
     micromatch "^3.1.4"
     normalize-path "^2.1.1"
 
-append-transform@^0.4.0:
-  version "0.4.0"
-  resolved "https://registry.yarnpkg.com/append-transform/-/append-transform-0.4.0.tgz#d76ebf8ca94d276e247a36bad44a4b74ab611991"
+append-transform@^1.0.0:
+  version "1.0.0"
+  resolved "https://registry.yarnpkg.com/append-transform/-/append-transform-1.0.0.tgz#046a52ae582a228bd72f58acfbe2967c678759ab"
   dependencies:
-    default-require-extensions "^1.0.0"
+    default-require-extensions "^2.0.0"
 
 aproba@^1.0.3, aproba@^1.1.1:
   version "1.2.0"
@@ -804,8 +829,10 @@ asn1.js@^4.0.0:
     minimalistic-assert "^1.0.0"
 
 asn1@~0.2.3:
-  version "0.2.3"
-  resolved "https://registry.yarnpkg.com/asn1/-/asn1-0.2.3.tgz#dac8787713c9966849fc8180777ebe9c1ddf3b86"
+  version "0.2.4"
+  resolved "https://registry.yarnpkg.com/asn1/-/asn1-0.2.4.tgz#8d2475dfab553bb33e77b54e59e880bb8ce23136"
+  dependencies:
+    safer-buffer "~2.1.0"
 
 assert-plus@1.0.0, assert-plus@^1.0.0:
   version "1.0.0"
@@ -829,9 +856,9 @@ ast-types@0.10.1:
   version "0.10.1"
   resolved "https://registry.yarnpkg.com/ast-types/-/ast-types-0.10.1.tgz#f52fca9715579a14f841d67d7f8d25432ab6a3dd"
 
-ast-types@0.11.3:
-  version "0.11.3"
-  resolved "https://registry.yarnpkg.com/ast-types/-/ast-types-0.11.3.tgz#c20757fe72ee71278ea0ff3d87e5c2ca30d9edf8"
+ast-types@0.11.5:
+  version "0.11.5"
+  resolved "https://registry.yarnpkg.com/ast-types/-/ast-types-0.11.5.tgz#9890825d660c03c28339f315e9fa0a360e31ec28"
 
 ast-types@0.9.6:
   version "0.9.6"
@@ -867,6 +894,10 @@ async@^2.1.2, async@^2.1.4, async@^2.6.0:
   dependencies:
     lodash "^4.17.10"
 
+async@~1.0.0:
+  version "1.0.0"
+  resolved "https://registry.yarnpkg.com/async/-/async-1.0.0.tgz#f8fc04ca3a13784ade9e1641af98578cfbd647a9"
+
 asynckit@^0.4.0:
   version "0.4.0"
   resolved "https://registry.yarnpkg.com/asynckit/-/asynckit-0.4.0.tgz#c79ed97f7f34cb8f2ba1bc9790bcc366474b4b79"
@@ -879,9 +910,9 @@ atob@~1.1.0:
   version "1.1.3"
   resolved "https://registry.yarnpkg.com/atob/-/atob-1.1.3.tgz#95f13629b12c3a51a5d215abdce2aa9f32f80773"
 
-attr-accept@^1.0.3, attr-accept@^1.1.0:
-  version "1.1.2"
-  resolved "https://registry.yarnpkg.com/attr-accept/-/attr-accept-1.1.2.tgz#6836bfe054e4ef1ee3076fdde56cec9bb3ffead6"
+attr-accept@^1.1.0, attr-accept@^1.1.3:
+  version "1.1.3"
+  resolved "https://registry.yarnpkg.com/attr-accept/-/attr-accept-1.1.3.tgz#48230c79f93790ef2775fcec4f0db0f5db41ca52"
   dependencies:
     core-js "^2.5.0"
 
@@ -916,8 +947,8 @@ aws-sign2@~0.7.0:
   resolved "https://registry.yarnpkg.com/aws-sign2/-/aws-sign2-0.7.0.tgz#b46e890934a9591f2d2f6f86d7e6a9f1b3fe76a8"
 
 aws4@^1.2.1, aws4@^1.6.0:
-  version "1.7.0"
-  resolved "https://registry.yarnpkg.com/aws4/-/aws4-1.7.0.tgz#d4d0e9b9dbfca77bf08eeb0a8a471550fe39e289"
+  version "1.8.0"
+  resolved "https://registry.yarnpkg.com/aws4/-/aws4-1.8.0.tgz#f0e003d9ca9e7f59c7a508945d7b2ef9a04a542f"
 
 axios@^0.16.2:
   version "0.16.2"
@@ -959,14 +990,14 @@ babel-core@^6.0.0, babel-core@^6.24.0, babel-core@^6.26.0:
     source-map "^0.5.7"
 
 babel-eslint@^8.2.1:
-  version "8.2.3"
-  resolved "https://registry.yarnpkg.com/babel-eslint/-/babel-eslint-8.2.3.tgz#1a2e6681cc9bc4473c32899e59915e19cd6733cf"
+  version "8.2.6"
+  resolved "https://registry.yarnpkg.com/babel-eslint/-/babel-eslint-8.2.6.tgz#6270d0c73205628067c0f7ae1693a9e797acefd9"
   dependencies:
     "@babel/code-frame" "7.0.0-beta.44"
     "@babel/traverse" "7.0.0-beta.44"
     "@babel/types" "7.0.0-beta.44"
     babylon "7.0.0-beta.44"
-    eslint-scope "~3.7.1"
+    eslint-scope "3.7.1"
     eslint-visitor-keys "^1.0.0"
 
 babel-generator@^6.18.0, babel-generator@^6.26.0:
@@ -1150,7 +1181,7 @@ babel-jest@^22.1.0:
     babel-plugin-istanbul "^4.1.5"
     babel-preset-jest "^22.4.4"
 
-babel-loader@7.1.4, babel-loader@^7.1.4:
+babel-loader@7.1.4:
   version "7.1.4"
   resolved "https://registry.yarnpkg.com/babel-loader/-/babel-loader-7.1.4.tgz#e3463938bd4e6d55d1c174c5485d406a188ed015"
   dependencies:
@@ -1158,6 +1189,14 @@ babel-loader@7.1.4, babel-loader@^7.1.4:
     loader-utils "^1.0.2"
     mkdirp "^0.5.1"
 
+babel-loader@^7.1.4:
+  version "7.1.5"
+  resolved "https://registry.yarnpkg.com/babel-loader/-/babel-loader-7.1.5.tgz#e3ee0cd7394aa557e013b02d3e492bfd07aa6d68"
+  dependencies:
+    find-cache-dir "^1.0.0"
+    loader-utils "^1.0.2"
+    mkdirp "^0.5.1"
+
 babel-messages@^6.23.0:
   version "6.23.0"
   resolved "https://registry.yarnpkg.com/babel-messages/-/babel-messages-6.23.0.tgz#f3cdf4703858035b2a2951c6ec5edf6c62f2630e"
@@ -1188,10 +1227,10 @@ babel-plugin-jest-hoist@^22.4.4:
   resolved "https://registry.yarnpkg.com/babel-plugin-jest-hoist/-/babel-plugin-jest-hoist-22.4.4.tgz#b9851906eab34c7bf6f8c895a2b08bea1a844c0b"
 
 babel-plugin-macros@^2.2.0:
-  version "2.2.1"
-  resolved "https://registry.yarnpkg.com/babel-plugin-macros/-/babel-plugin-macros-2.2.1.tgz#7cc0f84735aa86f776b51860793a98928f43a7fa"
+  version "2.4.0"
+  resolved "https://registry.yarnpkg.com/babel-plugin-macros/-/babel-plugin-macros-2.4.0.tgz#6c5f9836e1f6c0a9743b3bab4af29f73e437e544"
   dependencies:
-    cosmiconfig "^4.0.0"
+    cosmiconfig "^5.0.5"
 
 babel-plugin-minify-builtins@^0.3.0:
   version "0.3.0"
@@ -1356,8 +1395,8 @@ babel-plugin-transform-class-properties@^6.10.2, babel-plugin-transform-class-pr
     babel-template "^6.24.1"
 
 babel-plugin-transform-decorators-legacy@^1.3.4:
-  version "1.3.4"
-  resolved "https://registry.yarnpkg.com/babel-plugin-transform-decorators-legacy/-/babel-plugin-transform-decorators-legacy-1.3.4.tgz#741b58f6c5bce9e6027e0882d9c994f04f366925"
+  version "1.3.5"
+  resolved "https://registry.yarnpkg.com/babel-plugin-transform-decorators-legacy/-/babel-plugin-transform-decorators-legacy-1.3.5.tgz#0e492dffa0edd70529072887f8aa86d4dd8b40a1"
   dependencies:
     babel-plugin-syntax-decorators "^6.1.18"
     babel-runtime "^6.2.0"
@@ -1889,10 +1928,6 @@ babel-types@^6.18.0, babel-types@^6.19.0, babel-types@^6.24.1, babel-types@^6.26
     lodash "^4.17.4"
     to-fast-properties "^1.0.3"
 
-babylon@7.0.0-beta.31:
-  version "7.0.0-beta.31"
-  resolved "https://registry.yarnpkg.com/babylon/-/babylon-7.0.0-beta.31.tgz#7ec10f81e0e456fd0f855ad60fa30c2ac454283f"
-
 babylon@7.0.0-beta.44:
   version "7.0.0-beta.44"
   resolved "https://registry.yarnpkg.com/babylon/-/babylon-7.0.0-beta.44.tgz#89159e15e6e30c5096e22d738d8c0af8a0e8ca1d"
@@ -1901,7 +1936,7 @@ babylon@^6.17.3, babylon@^6.18.0:
   version "6.18.0"
   resolved "https://registry.yarnpkg.com/babylon/-/babylon-6.18.0.tgz#af2f3b88fa6f5c1e4c634d1a0f8eac4f55b395e3"
 
-babylon@^7.0.0-beta.30:
+babylon@^7.0.0-beta.47:
   version "7.0.0-beta.47"
   resolved "https://registry.yarnpkg.com/babylon/-/babylon-7.0.0-beta.47.tgz#6d1fa44f0abec41ab7c780481e62fd9aafbdea80"
 
@@ -1938,8 +1973,8 @@ batch@0.6.1:
   resolved "https://registry.yarnpkg.com/batch/-/batch-0.6.1.tgz#dc34314f4e679318093fc760272525f94bf25c16"
 
 bcrypt-pbkdf@^1.0.0:
-  version "1.0.1"
-  resolved "https://registry.yarnpkg.com/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.1.tgz#63bc5dcb61331b92bc05fd528953c33462a06f8d"
+  version "1.0.2"
+  resolved "https://registry.yarnpkg.com/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.2.tgz#a4301d389b6a43f9b67ff3ca11a3f6637e360e9e"
   dependencies:
     tweetnacl "^0.14.3"
 
@@ -2006,8 +2041,8 @@ boom@2.x.x:
     hoek "2.x.x"
 
 bowser@^1.0.0, bowser@^1.7.3:
-  version "1.9.3"
-  resolved "https://registry.yarnpkg.com/bowser/-/bowser-1.9.3.tgz#6643ae4d783f31683f6d23156976b74183862162"
+  version "1.9.4"
+  resolved "https://registry.yarnpkg.com/bowser/-/bowser-1.9.4.tgz#890c58a2813a9d3243704334fa81b96a5c150c9a"
 
 brace-expansion@^1.0.0, brace-expansion@^1.1.7:
   version "1.1.11"
@@ -2048,8 +2083,8 @@ brorand@^1.0.1:
   resolved "https://registry.yarnpkg.com/brorand/-/brorand-1.1.0.tgz#12c25efe40a45e3c323eb8675a0a0ce57b22371f"
 
 browser-resolve@^1.11.2:
-  version "1.11.2"
-  resolved "https://registry.yarnpkg.com/browser-resolve/-/browser-resolve-1.11.2.tgz#8ff09b0a2c421718a1051c260b32e48f442938ce"
+  version "1.11.3"
+  resolved "https://registry.yarnpkg.com/browser-resolve/-/browser-resolve-1.11.3.tgz#9b7cbb3d0f510e4cb86bdbd796124d28b5890af6"
   dependencies:
     resolve "1.1.7"
 
@@ -2073,12 +2108,13 @@ browserify-cipher@^1.0.0:
     evp_bytestokey "^1.0.0"
 
 browserify-des@^1.0.0:
-  version "1.0.1"
-  resolved "https://registry.yarnpkg.com/browserify-des/-/browserify-des-1.0.1.tgz#3343124db6d7ad53e26a8826318712bdc8450f9c"
+  version "1.0.2"
+  resolved "https://registry.yarnpkg.com/browserify-des/-/browserify-des-1.0.2.tgz#3af4f1f59839403572f1c66204375f7a7f703e9c"
   dependencies:
     cipher-base "^1.0.1"
     des.js "^1.0.0"
     inherits "^2.0.1"
+    safe-buffer "^5.1.2"
 
 browserify-rsa@^4.0.0:
   version "4.0.1"
@@ -2132,9 +2168,24 @@ bser@^2.0.0:
   dependencies:
     node-int64 "^0.4.0"
 
-buffer-from@^1.0.0:
+buffer-alloc-unsafe@^1.1.0:
   version "1.1.0"
-  resolved "https://registry.yarnpkg.com/buffer-from/-/buffer-from-1.1.0.tgz#87fcaa3a298358e0ade6e442cfce840740d1ad04"
+  resolved "https://registry.yarnpkg.com/buffer-alloc-unsafe/-/buffer-alloc-unsafe-1.1.0.tgz#bd7dc26ae2972d0eda253be061dba992349c19f0"
+
+buffer-alloc@^1.2.0:
+  version "1.2.0"
+  resolved "https://registry.yarnpkg.com/buffer-alloc/-/buffer-alloc-1.2.0.tgz#890dd90d923a873e08e10e5fd51a57e5b7cce0ec"
+  dependencies:
+    buffer-alloc-unsafe "^1.1.0"
+    buffer-fill "^1.0.0"
+
+buffer-fill@^1.0.0:
+  version "1.0.0"
+  resolved "https://registry.yarnpkg.com/buffer-fill/-/buffer-fill-1.0.0.tgz#f8f78b76789888ef39f205cd637f68e702122b2c"
+
+buffer-from@^1.0.0:
+  version "1.1.1"
+  resolved "https://registry.yarnpkg.com/buffer-from/-/buffer-from-1.1.1.tgz#32713bc028f75c02fdb710d7c7bcec1f2c6070ef"
 
 buffer-indexof@^1.0.0:
   version "1.1.1"
@@ -2266,12 +2317,12 @@ caniuse-api@^1.5.2:
     lodash.uniq "^4.5.0"
 
 caniuse-db@^1.0.30000529, caniuse-db@^1.0.30000634, caniuse-db@^1.0.30000639:
-  version "1.0.30000846"
-  resolved "https://registry.yarnpkg.com/caniuse-db/-/caniuse-db-1.0.30000846.tgz#d9c86f914738db4da098eeded997413c44561bd2"
+  version "1.0.30000875"
+  resolved "https://registry.yarnpkg.com/caniuse-db/-/caniuse-db-1.0.30000875.tgz#6f904fc89120de4029a9ca0f21d7ac3db89a0dce"
 
 caniuse-lite@^1.0.30000792, caniuse-lite@^1.0.30000805, caniuse-lite@^1.0.30000844:
-  version "1.0.30000846"
-  resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30000846.tgz#2092911eecad71a89dae1faa62bcc202fde7f959"
+  version "1.0.30000874"
+  resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30000874.tgz#a641b1f1c420d58d9b132920ef6ba87bbdcd2223"
 
 capture-exit@^1.2.0:
   version "1.2.0"
@@ -2283,10 +2334,6 @@ case-sensitive-paths-webpack-plugin@^2.1.2:
   version "2.1.2"
   resolved "https://registry.yarnpkg.com/case-sensitive-paths-webpack-plugin/-/case-sensitive-paths-webpack-plugin-2.1.2.tgz#c899b52175763689224571dad778742e133f0192"
 
-caseless@~0.11.0:
-  version "0.11.0"
-  resolved "https://registry.yarnpkg.com/caseless/-/caseless-0.11.0.tgz#715b96ea9841593cc33067923f5ec60ebda4f7d7"
-
 caseless@~0.12.0:
   version "0.12.0"
   resolved "https://registry.yarnpkg.com/caseless/-/caseless-0.12.0.tgz#1b681c21ff84033c826543090689420d187151dc"
@@ -2332,30 +2379,20 @@ charenc@~0.0.1:
   version "0.0.2"
   resolved "https://registry.yarnpkg.com/charenc/-/charenc-0.0.2.tgz#c0a1d2f3a7092e03774bfa83f14c0fc5790a8667"
 
-cheerio@^0.22.0:
-  version "0.22.0"
-  resolved "https://registry.yarnpkg.com/cheerio/-/cheerio-0.22.0.tgz#a9baa860a3f9b595a6b81b1a86873121ed3a269e"
+cheerio@^1.0.0-rc.2:
+  version "1.0.0-rc.2"
+  resolved "https://registry.yarnpkg.com/cheerio/-/cheerio-1.0.0-rc.2.tgz#4b9f53a81b27e4d5dac31c0ffd0cfa03cc6830db"
   dependencies:
     css-select "~1.2.0"
     dom-serializer "~0.1.0"
     entities "~1.1.1"
     htmlparser2 "^3.9.1"
-    lodash.assignin "^4.0.9"
-    lodash.bind "^4.1.4"
-    lodash.defaults "^4.0.1"
-    lodash.filter "^4.4.0"
-    lodash.flatten "^4.2.0"
-    lodash.foreach "^4.3.0"
-    lodash.map "^4.4.0"
-    lodash.merge "^4.4.0"
-    lodash.pick "^4.2.1"
-    lodash.reduce "^4.4.0"
-    lodash.reject "^4.4.0"
-    lodash.some "^4.4.0"
+    lodash "^4.15.0"
+    parse5 "^3.0.1"
 
 chokidar@^2.0.0, chokidar@^2.0.2:
-  version "2.0.3"
-  resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-2.0.3.tgz#dcbd4f6cbb2a55b4799ba8a840ac527e5f4b1176"
+  version "2.0.4"
+  resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-2.0.4.tgz#356ff4e2b0e8e43e322d18a372460bbcf3accd26"
   dependencies:
     anymatch "^2.0.0"
     async-each "^1.0.0"
@@ -2364,20 +2401,23 @@ chokidar@^2.0.0, chokidar@^2.0.2:
     inherits "^2.0.1"
     is-binary-path "^1.0.0"
     is-glob "^4.0.0"
+    lodash.debounce "^4.0.8"
     normalize-path "^2.1.1"
     path-is-absolute "^1.0.0"
     readdirp "^2.0.0"
-    upath "^1.0.0"
+    upath "^1.0.5"
   optionalDependencies:
-    fsevents "^1.1.2"
+    fsevents "^1.2.2"
 
 chownr@^1.0.1:
   version "1.0.1"
   resolved "https://registry.yarnpkg.com/chownr/-/chownr-1.0.1.tgz#e2a75042a9551908bebd25b8523d5f9769d79181"
 
-chrome-trace-event@^0.1.1:
-  version "0.1.3"
-  resolved "https://registry.yarnpkg.com/chrome-trace-event/-/chrome-trace-event-0.1.3.tgz#d395af2d31c87b90a716c831fe326f69768ec084"
+chrome-trace-event@^1.0.0:
+  version "1.0.0"
+  resolved "https://registry.yarnpkg.com/chrome-trace-event/-/chrome-trace-event-1.0.0.tgz#45a91bd2c20c9411f0963b5aaeb9a1b95e09cc48"
+  dependencies:
+    tslib "^1.9.0"
 
 ci-info@^1.0.0:
   version "1.1.3"
@@ -2410,8 +2450,8 @@ class-utils@^0.3.5:
     static-extend "^0.1.1"
 
 classnames@^2.2.4, classnames@^2.2.5:
-  version "2.2.5"
-  resolved "https://registry.yarnpkg.com/classnames/-/classnames-2.2.5.tgz#fb3801d453467649ef3603c7d61a02bd129bde6d"
+  version "2.2.6"
+  resolved "https://registry.yarnpkg.com/classnames/-/classnames-2.2.6.tgz#43935bffdd291f326dad0a205309b38d00f650ce"
 
 clean-css@4.1.x:
   version "4.1.11"
@@ -2521,8 +2561,8 @@ clone@^1.0.0, clone@^1.0.2:
   resolved "https://registry.yarnpkg.com/clone/-/clone-1.0.4.tgz#da309cc263df15994c688ca902179ca3c7cd7c7e"
 
 clone@^2.1.1:
-  version "2.1.1"
-  resolved "https://registry.yarnpkg.com/clone/-/clone-2.1.1.tgz#d217d1e961118e3ac9a4b8bba3285553bf647cdb"
+  version "2.1.2"
+  resolved "https://registry.yarnpkg.com/clone/-/clone-2.1.2.tgz#1b7f4b9f591f1e8f83670401600345a02887435f"
 
 cloneable-readable@^1.0.0:
   version "1.1.2"
@@ -2554,12 +2594,16 @@ collection-visit@^1.0.0:
     object-visit "^1.0.0"
 
 color-convert@^1.3.0, color-convert@^1.9.0:
-  version "1.9.1"
-  resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-1.9.1.tgz#c1261107aeb2f294ebffec9ed9ecad529a6097ed"
+  version "1.9.2"
+  resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-1.9.2.tgz#49881b8fba67df12a96bdf3f56c0aab9e7913147"
   dependencies:
-    color-name "^1.1.1"
+    color-name "1.1.1"
+
+color-name@1.1.1:
+  version "1.1.1"
+  resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.1.tgz#4b1415304cf50028ea81643643bd82ea05803689"
 
-color-name@^1.0.0, color-name@^1.1.1:
+color-name@^1.0.0:
   version "1.1.3"
   resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.3.tgz#a7d0558bd89c42f795dd42328f740831ca53bc25"
 
@@ -2589,17 +2633,21 @@ colormin@^1.0.5:
     css-color-names "0.0.4"
     has "^1.0.1"
 
+colors@0.5.x:
+  version "0.5.1"
+  resolved "https://registry.yarnpkg.com/colors/-/colors-0.5.1.tgz#7d0023eaeb154e8ee9fce75dcb923d0ed1667774"
+
 colors@0.6.x:
   version "0.6.2"
   resolved "https://registry.yarnpkg.com/colors/-/colors-0.6.2.tgz#2423fe6678ac0c5dae8852e5d0e5be08c997abcc"
 
-colors@1.0.3:
+colors@1.0.3, colors@1.0.x:
   version "1.0.3"
   resolved "https://registry.yarnpkg.com/colors/-/colors-1.0.3.tgz#0433f44d809680fdeb60ed260f1b0c262e82a40b"
 
 colors@^1.1.2:
-  version "1.3.0"
-  resolved "https://registry.yarnpkg.com/colors/-/colors-1.3.0.tgz#5f20c9fef6945cb1134260aab33bfbdc8295e04e"
+  version "1.3.1"
+  resolved "https://registry.yarnpkg.com/colors/-/colors-1.3.1.tgz#4accdb89cf2cabc7f982771925e9468784f32f3d"
 
 colors@~1.1.2:
   version "1.1.2"
@@ -2611,9 +2659,13 @@ combined-stream@1.0.6, combined-stream@^1.0.5, combined-stream@~1.0.5:
   dependencies:
     delayed-stream "~1.0.0"
 
-commander@2, commander@2.15.x, commander@^2.15.0, commander@^2.5.0, commander@^2.9.0, commander@~2.15.0:
-  version "2.15.1"
-  resolved "https://registry.yarnpkg.com/commander/-/commander-2.15.1.tgz#df46e867d0fc2aec66a34662b406a9ccafff5b0f"
+commander@2, commander@^2.15.0, commander@^2.5.0, commander@^2.9.0:
+  version "2.17.1"
+  resolved "https://registry.yarnpkg.com/commander/-/commander-2.17.1.tgz#bd77ab7de6de94205ceacc72f1716d29f20a77bf"
+
+commander@2.16.x, commander@~2.16.0:
+  version "2.16.0"
+  resolved "https://registry.yarnpkg.com/commander/-/commander-2.16.0.tgz#f16390593996ceb4f3eeb020b31d78528f7f8a50"
 
 commander@~2.13.0:
   version "2.13.0"
@@ -2642,36 +2694,36 @@ commoner@^0.10.1:
     recast "^0.11.17"
 
 compare-versions@^3.1.0:
-  version "3.2.1"
-  resolved "https://registry.yarnpkg.com/compare-versions/-/compare-versions-3.2.1.tgz#a49eb7689d4caaf0b6db5220173fd279614000f7"
+  version "3.3.0"
+  resolved "https://registry.yarnpkg.com/compare-versions/-/compare-versions-3.3.0.tgz#af93ea705a96943f622ab309578b9b90586f39c3"
 
 component-emitter@^1.2.1:
   version "1.2.1"
   resolved "https://registry.yarnpkg.com/component-emitter/-/component-emitter-1.2.1.tgz#137918d6d78283f7df7a6b7c5a63e140e69425e6"
 
-compressible@~2.0.13:
-  version "2.0.13"
-  resolved "https://registry.yarnpkg.com/compressible/-/compressible-2.0.13.tgz#0d1020ab924b2fdb4d6279875c7d6daba6baa7a9"
+compressible@~2.0.14:
+  version "2.0.14"
+  resolved "https://registry.yarnpkg.com/compressible/-/compressible-2.0.14.tgz#326c5f507fbb055f54116782b969a81b67a29da7"
   dependencies:
-    mime-db ">= 1.33.0 < 2"
+    mime-db ">= 1.34.0 < 2"
 
 compression@^1.5.2:
-  version "1.7.2"
-  resolved "http://registry.npmjs.org/compression/-/compression-1.7.2.tgz#aaffbcd6aaf854b44ebb280353d5ad1651f59a69"
+  version "1.7.3"
+  resolved "https://registry.yarnpkg.com/compression/-/compression-1.7.3.tgz#27e0e176aaf260f7f2c2813c3e440adb9f1993db"
   dependencies:
-    accepts "~1.3.4"
+    accepts "~1.3.5"
     bytes "3.0.0"
-    compressible "~2.0.13"
+    compressible "~2.0.14"
     debug "2.6.9"
     on-headers "~1.0.1"
-    safe-buffer "5.1.1"
+    safe-buffer "5.1.2"
     vary "~1.1.2"
 
 concat-map@0.0.1:
   version "0.0.1"
   resolved "https://registry.yarnpkg.com/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b"
 
-concat-stream@^1.5.0, concat-stream@^1.6.0:
+concat-stream@1.6.2, concat-stream@^1.5.0, concat-stream@^1.6.0:
   version "1.6.2"
   resolved "https://registry.yarnpkg.com/concat-stream/-/concat-stream-1.6.2.tgz#904bdf194cd3122fc675c77fc4ac3d4ff0fd1a34"
   dependencies:
@@ -2753,18 +2805,6 @@ core-util-is@1.0.2, core-util-is@~1.0.0:
   version "1.0.2"
   resolved "https://registry.yarnpkg.com/core-util-is/-/core-util-is-1.0.2.tgz#b5fd54220aa2bc5ab57aab7140c940754503c1a7"
 
-cosmiconfig@^2.1.0, cosmiconfig@^2.1.1:
-  version "2.2.2"
-  resolved "https://registry.yarnpkg.com/cosmiconfig/-/cosmiconfig-2.2.2.tgz#6173cebd56fac042c1f4390edf7af6c07c7cb892"
-  dependencies:
-    is-directory "^0.3.1"
-    js-yaml "^3.4.3"
-    minimist "^1.2.0"
-    object-assign "^4.1.0"
-    os-homedir "^1.0.1"
-    parse-json "^2.2.0"
-    require-from-string "^1.1.0"
-
 cosmiconfig@^4.0.0:
   version "4.0.0"
   resolved "https://registry.yarnpkg.com/cosmiconfig/-/cosmiconfig-4.0.0.tgz#760391549580bbd2df1e562bc177b13c290972dc"
@@ -2774,6 +2814,14 @@ cosmiconfig@^4.0.0:
     parse-json "^4.0.0"
     require-from-string "^2.0.1"
 
+cosmiconfig@^5.0.5:
+  version "5.0.5"
+  resolved "https://registry.yarnpkg.com/cosmiconfig/-/cosmiconfig-5.0.5.tgz#a809e3c2306891ce17ab70359dc8bdf661fe2cd0"
+  dependencies:
+    is-directory "^0.3.1"
+    js-yaml "^3.9.0"
+    parse-json "^4.0.0"
+
 create-ecdh@^4.0.0:
   version "4.0.3"
   resolved "https://registry.yarnpkg.com/create-ecdh/-/create-ecdh-4.0.3.tgz#c9111b6f33045c4697f144787f9254cdc77c45ff"
@@ -2993,8 +3041,8 @@ csso@~2.3.1:
     source-map "^0.5.3"
 
 cssom@0.3.x, "cssom@>= 0.3.2 < 0.4.0":
-  version "0.3.2"
-  resolved "https://registry.yarnpkg.com/cssom/-/cssom-0.3.2.tgz#b8036170c79f07a90ff2f16e22284027a243848b"
+  version "0.3.4"
+  resolved "https://registry.yarnpkg.com/cssom/-/cssom-0.3.4.tgz#8cd52e8a3acfd68d3aed38ee0a640177d2f9d797"
 
 "cssstyle@>= 0.2.37 < 0.3.0":
   version "0.2.37"
@@ -3003,8 +3051,8 @@ cssom@0.3.x, "cssom@>= 0.3.2 < 0.4.0":
     cssom "0.3.x"
 
 csstype@^2.2.0:
-  version "2.5.3"
-  resolved "https://registry.yarnpkg.com/csstype/-/csstype-2.5.3.tgz#2504152e6e1cc59b32098b7f5d6a63f16294c1f7"
+  version "2.5.6"
+  resolved "https://registry.yarnpkg.com/csstype/-/csstype-2.5.6.tgz#2ae1db2319642d8b80a668d2d025c6196071e788"
 
 currently-unhandled@^0.4.1:
   version "0.4.1"
@@ -3302,10 +3350,6 @@ deep-equal@*, deep-equal@^1.0.1:
   version "1.0.1"
   resolved "https://registry.yarnpkg.com/deep-equal/-/deep-equal-1.0.1.tgz#f5d260292b660e084eff4cdbc9f08ad3247448b5"
 
-deep-extend@^0.5.1:
-  version "0.5.1"
-  resolved "https://registry.yarnpkg.com/deep-extend/-/deep-extend-0.5.1.tgz#b894a9dd90d3023fbf1c55a394fb858eb2066f1f"
-
 deep-extend@^0.6.0:
   version "0.6.0"
   resolved "https://registry.yarnpkg.com/deep-extend/-/deep-extend-0.6.0.tgz#c4fa7c95404a17a9c3e8ca7e1537312b736330ac"
@@ -3322,11 +3366,11 @@ deepmerge@1.3.2:
   version "1.3.2"
   resolved "https://registry.yarnpkg.com/deepmerge/-/deepmerge-1.3.2.tgz#1663691629d4dbfe364fa12a2a4f0aa86aa3a050"
 
-default-require-extensions@^1.0.0:
-  version "1.0.0"
-  resolved "https://registry.yarnpkg.com/default-require-extensions/-/default-require-extensions-1.0.0.tgz#f37ea15d3e13ffd9b437d33e1a75b5fb97874cb8"
+default-require-extensions@^2.0.0:
+  version "2.0.0"
+  resolved "https://registry.yarnpkg.com/default-require-extensions/-/default-require-extensions-2.0.0.tgz#f5f8fbb18a7d6d50b21f641f649ebb522cfe24f7"
   dependencies:
-    strip-bom "^2.0.0"
+    strip-bom "^3.0.0"
 
 define-properties@^1.1.2:
   version "1.1.2"
@@ -3463,6 +3507,10 @@ dir-glob@^2.0.0:
     arrify "^1.0.1"
     path-type "^3.0.0"
 
+discontinuous-range@1.0.0:
+  version "1.0.0"
+  resolved "https://registry.yarnpkg.com/discontinuous-range/-/discontinuous-range-1.0.0.tgz#e38331f0844bba49b9a9cb71c771585aab1bc65a"
+
 disposables@^1.0.1:
   version "1.0.2"
   resolved "https://registry.yarnpkg.com/disposables/-/disposables-1.0.2.tgz#36c6a674475f55a2d6913567a601444e487b4b6e"
@@ -3500,7 +3548,7 @@ doctrine@1.5.0:
     esutils "^2.0.2"
     isarray "^1.0.0"
 
-doctrine@^2.0.0, doctrine@^2.0.2, doctrine@^2.1.0:
+doctrine@^2.0.0, doctrine@^2.1.0:
   version "2.1.0"
   resolved "https://registry.yarnpkg.com/doctrine/-/doctrine-2.1.0.tgz#5cd01fc101621b42c4cd7f5d1a66243716d3f39d"
   dependencies:
@@ -3582,8 +3630,8 @@ domutils@^1.5.1:
     domelementtype "1"
 
 dotenv-webpack@^1.5.5:
-  version "1.5.5"
-  resolved "https://registry.yarnpkg.com/dotenv-webpack/-/dotenv-webpack-1.5.5.tgz#3441094f04d304b6119e6b72524e62fb3252f5f2"
+  version "1.5.7"
+  resolved "https://registry.yarnpkg.com/dotenv-webpack/-/dotenv-webpack-1.5.7.tgz#c44395ab21d1fd28d79a90942a7b14b1debd145f"
   dependencies:
     dotenv "^5.0.1"
 
@@ -3596,12 +3644,12 @@ dotenv@^5.0.1:
   dependencies:
     d3 "^4.10.0"
     lodash "^4.12.0"
-    prop-types "^15.6.0"
-    react "^15.6.2"
+    prop-types "^15.6.2"
+    react "^16.4.2"
     react-dnd "^2.5.4"
     react-dnd-html5-backend "^2.5.4"
-    react-dom "^15.6.2"
-    react-redux "^5.0.6"
+    react-dom "^16.4.2"
+    react-redux "^5.0.7"
     react-select "1.2.1"
     redux "^3.7.2"
 
@@ -3623,10 +3671,11 @@ duplexify@^3.4.2, duplexify@^3.6.0:
     stream-shift "^1.0.0"
 
 ecc-jsbn@~0.1.1:
-  version "0.1.1"
-  resolved "https://registry.yarnpkg.com/ecc-jsbn/-/ecc-jsbn-0.1.1.tgz#0fc73a9ed5f0d53c38193398523ef7e543777505"
+  version "0.1.2"
+  resolved "https://registry.yarnpkg.com/ecc-jsbn/-/ecc-jsbn-0.1.2.tgz#3a83a904e54353287874c564b7549386849a98c9"
   dependencies:
     jsbn "~0.1.0"
+    safer-buffer "^2.1.0"
 
 editions@^1.3.3:
   version "1.3.4"
@@ -3641,8 +3690,8 @@ ejs@^2.5.9:
   resolved "https://registry.yarnpkg.com/ejs/-/ejs-2.6.1.tgz#498ec0d495655abc6f23cd61868d926464071aa0"
 
 electron-to-chromium@^1.2.7, electron-to-chromium@^1.3.30, electron-to-chromium@^1.3.47:
-  version "1.3.48"
-  resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.3.48.tgz#d3b0d8593814044e092ece2108fc3ac9aea4b900"
+  version "1.3.55"
+  resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.3.55.tgz#f150e10b20b77d9d41afcca312efe0c3b1a7fdce"
 
 elegant-spinner@^1.0.1:
   version "1.0.1"
@@ -3689,9 +3738,9 @@ enhanced-resolve@^3.4.0:
     object-assign "^4.0.1"
     tapable "^0.2.7"
 
-enhanced-resolve@^4.0.0:
-  version "4.0.0"
-  resolved "https://registry.yarnpkg.com/enhanced-resolve/-/enhanced-resolve-4.0.0.tgz#e34a6eaa790f62fccd71d93959f56b2b432db10a"
+enhanced-resolve@^4.0.0, enhanced-resolve@^4.1.0:
+  version "4.1.0"
+  resolved "https://registry.yarnpkg.com/enhanced-resolve/-/enhanced-resolve-4.1.0.tgz#41c7e0bfdfe74ac1ffe1e57ad6a5c6c9f3742a7f"
   dependencies:
     graceful-fs "^4.1.2"
     memory-fs "^0.4.0"
@@ -3706,23 +3755,51 @@ entities@^1.1.1, entities@~1.1.1:
   resolved "https://registry.yarnpkg.com/entities/-/entities-1.1.1.tgz#6e5c2d0a5621b5dadaecef80b90edfb5cd7772f0"
 
 envinfo@^5.7.0:
-  version "5.8.1"
-  resolved "https://registry.yarnpkg.com/envinfo/-/envinfo-5.8.1.tgz#1910c0d1dbd74ff1c6b8ca0974841a5dcf7900ca"
+  version "5.10.0"
+  resolved "https://registry.yarnpkg.com/envinfo/-/envinfo-5.10.0.tgz#503a9774ae15b93ea68bdfae2ccd6306624ea6df"
+
+enzyme-adapter-react-16@^1.2.0:
+  version "1.2.0"
+  resolved "https://registry.yarnpkg.com/enzyme-adapter-react-16/-/enzyme-adapter-react-16-1.2.0.tgz#c6e80f334e0a817873262d7d01ee9e4747e3c97e"
+  dependencies:
+    enzyme-adapter-utils "^1.5.0"
+    function.prototype.name "^1.1.0"
+    object.assign "^4.1.0"
+    object.values "^1.0.4"
+    prop-types "^15.6.2"
+    react-is "^16.4.2"
+    react-reconciler "^0.7.0"
+    react-test-renderer "^16.0.0-0"
+
+enzyme-adapter-utils@^1.5.0:
+  version "1.5.0"
+  resolved "https://registry.yarnpkg.com/enzyme-adapter-utils/-/enzyme-adapter-utils-1.5.0.tgz#a020ab3ae79bb1c85e1d51f48f35e995e0eed810"
+  dependencies:
+    function.prototype.name "^1.1.0"
+    object.assign "^4.1.0"
+    prop-types "^15.6.2"
 
-enzyme@^2.7.1:
-  version "2.9.1"
-  resolved "https://registry.yarnpkg.com/enzyme/-/enzyme-2.9.1.tgz#07d5ce691241240fb817bf2c4b18d6e530240df6"
+enzyme@^3.4.0:
+  version "3.4.0"
+  resolved "https://registry.yarnpkg.com/enzyme/-/enzyme-3.4.0.tgz#085c66fe647d8c9c4becd1fee3042c040cda88a6"
   dependencies:
-    cheerio "^0.22.0"
-    function.prototype.name "^1.0.0"
+    array.prototype.flat "^1.2.1"
+    cheerio "^1.0.0-rc.2"
+    function.prototype.name "^1.1.0"
+    has "^1.0.3"
+    is-boolean-object "^1.0.0"
+    is-callable "^1.1.4"
+    is-number-object "^1.0.3"
+    is-string "^1.0.4"
     is-subset "^0.1.1"
     lodash "^4.17.4"
+    object-inspect "^1.6.0"
     object-is "^1.0.1"
-    object.assign "^4.0.4"
+    object.assign "^4.1.0"
     object.entries "^1.0.4"
     object.values "^1.0.4"
-    prop-types "^15.5.10"
-    uuid "^3.0.1"
+    raf "^3.4.0"
+    rst-selector-parser "^2.2.3"
 
 errno@^0.1.3, errno@~0.1.7:
   version "0.1.7"
@@ -3731,17 +3808,11 @@ errno@^0.1.3, errno@~0.1.7:
     prr "~1.0.1"
 
 error-ex@^1.2.0, error-ex@^1.3.1:
-  version "1.3.1"
-  resolved "https://registry.yarnpkg.com/error-ex/-/error-ex-1.3.1.tgz#f855a86ce61adc4e8621c3cda21e7a7612c3a8dc"
+  version "1.3.2"
+  resolved "https://registry.yarnpkg.com/error-ex/-/error-ex-1.3.2.tgz#b4ac40648107fdcdcfae242f428bea8a14d4f1bf"
   dependencies:
     is-arrayish "^0.2.1"
 
-error-stack-parser@^1.3.6:
-  version "1.3.6"
-  resolved "https://registry.yarnpkg.com/error-stack-parser/-/error-stack-parser-1.3.6.tgz#e0e73b93e417138d1cd7c0b746b1a4a14854c292"
-  dependencies:
-    stackframe "^0.3.1"
-
 error@^7.0.2:
   version "7.0.2"
   resolved "https://registry.yarnpkg.com/error/-/error-7.0.2.tgz#a5f75fff4d9926126ddac0ea5dc38e689153cb02"
@@ -3749,9 +3820,9 @@ error@^7.0.2:
     string-template "~0.2.1"
     xtend "~4.0.0"
 
-es-abstract@^1.10.0, es-abstract@^1.4.3, es-abstract@^1.5.1, es-abstract@^1.6.1, es-abstract@^1.7.0, es-abstract@^1.9.0:
-  version "1.11.0"
-  resolved "https://registry.yarnpkg.com/es-abstract/-/es-abstract-1.11.0.tgz#cce87d518f0496893b1a30cd8461835535480681"
+es-abstract@^1.10.0, es-abstract@^1.11.0, es-abstract@^1.12.0, es-abstract@^1.4.3, es-abstract@^1.5.1, es-abstract@^1.6.1, es-abstract@^1.7.0, es-abstract@^1.9.0:
+  version "1.12.0"
+  resolved "https://registry.yarnpkg.com/es-abstract/-/es-abstract-1.12.0.tgz#9dbbdd27c6856f0001421ca18782d786bf8a6165"
   dependencies:
     es-to-primitive "^1.1.1"
     function-bind "^1.1.1"
@@ -3768,8 +3839,8 @@ es-to-primitive@^1.1.1:
     is-symbol "^1.0.1"
 
 es5-ext@^0.10.14, es5-ext@^0.10.35, es5-ext@^0.10.9, es5-ext@~0.10.14:
-  version "0.10.44"
-  resolved "https://registry.yarnpkg.com/es5-ext/-/es5-ext-0.10.44.tgz#7a877e994bb190aebd4718aa2d62784a12e2ca20"
+  version "0.10.45"
+  resolved "https://registry.yarnpkg.com/es5-ext/-/es5-ext-0.10.45.tgz#0bfdf7b473da5919d5adf3bd25ceb754fccc3653"
   dependencies:
     es6-iterator "~2.0.3"
     es6-symbol "~3.1.1"
@@ -3798,6 +3869,10 @@ es6-map@^0.1.3:
     es6-symbol "~3.1.1"
     event-emitter "~0.3.5"
 
+es6-promise@^4.0.3:
+  version "4.2.4"
+  resolved "https://registry.yarnpkg.com/es6-promise/-/es6-promise-4.2.4.tgz#dc4221c2b16518760bd8c39a52d8f356fc00ed29"
+
 es6-set@~0.1.5:
   version "0.1.5"
   resolved "https://registry.yarnpkg.com/es6-set/-/es6-set-0.1.5.tgz#d2b3ec5d4d800ced818db538d28974db0a73ccb1"
@@ -3844,8 +3919,8 @@ escape-string-regexp@1.0.5, escape-string-regexp@^1.0.2, escape-string-regexp@^1
   resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz#1b61c0562190a8dff6ae3bb2cf0200ca130b86d4"
 
 escodegen@^1.6.1:
-  version "1.9.1"
-  resolved "https://registry.yarnpkg.com/escodegen/-/escodegen-1.9.1.tgz#dbae17ef96c8e4bedb1356f4504fa4cc2f7cb7e2"
+  version "1.11.0"
+  resolved "https://registry.yarnpkg.com/escodegen/-/escodegen-1.11.0.tgz#b27a9389481d5bfd5bec76f7bb1eb3f8f4556589"
   dependencies:
     esprima "^3.1.3"
     estraverse "^4.2.0"
@@ -3877,8 +3952,8 @@ eslint-import-resolver-node@^0.3.1:
     resolve "^1.5.0"
 
 eslint-loader@^2.0.0:
-  version "2.0.0"
-  resolved "https://registry.yarnpkg.com/eslint-loader/-/eslint-loader-2.0.0.tgz#d136619b5c684e36531ffc28c60a56e404608f5d"
+  version "2.1.0"
+  resolved "https://registry.yarnpkg.com/eslint-loader/-/eslint-loader-2.1.0.tgz#61334c548aeb0b8e20ec3a552fb7a88c47261c6a"
   dependencies:
     loader-fs-cache "^1.0.0"
     loader-utils "^1.0.2"
@@ -3893,9 +3968,9 @@ eslint-module-utils@^2.2.0:
     debug "^2.6.8"
     pkg-dir "^1.0.0"
 
-eslint-plugin-import@^2.9.0:
-  version "2.12.0"
-  resolved "https://registry.yarnpkg.com/eslint-plugin-import/-/eslint-plugin-import-2.12.0.tgz#dad31781292d6664b25317fd049d2e2b2f02205d"
+eslint-plugin-import@^2.8.0, eslint-plugin-import@^2.9.0:
+  version "2.13.0"
+  resolved "https://registry.yarnpkg.com/eslint-plugin-import/-/eslint-plugin-import-2.13.0.tgz#df24f241175e312d91662dc91ca84064caec14ed"
   dependencies:
     contains-path "^0.1.0"
     debug "^2.6.8"
@@ -3908,29 +3983,52 @@ eslint-plugin-import@^2.9.0:
     read-pkg-up "^2.0.0"
     resolve "^1.6.0"
 
+eslint-plugin-node@^5.2.1:
+  version "5.2.1"
+  resolved "https://registry.yarnpkg.com/eslint-plugin-node/-/eslint-plugin-node-5.2.1.tgz#80df3253c4d7901045ec87fa660a284e32bdca29"
+  dependencies:
+    ignore "^3.3.6"
+    minimatch "^3.0.4"
+    resolve "^1.3.3"
+    semver "5.3.0"
+
 eslint-plugin-prettier@^2.6.0:
-  version "2.6.0"
-  resolved "https://registry.yarnpkg.com/eslint-plugin-prettier/-/eslint-plugin-prettier-2.6.0.tgz#33e4e228bdb06142d03c560ce04ec23f6c767dd7"
+  version "2.6.2"
+  resolved "https://registry.yarnpkg.com/eslint-plugin-prettier/-/eslint-plugin-prettier-2.6.2.tgz#71998c60aedfa2141f7bfcbf9d1c459bf98b4fad"
   dependencies:
     fast-diff "^1.1.1"
     jest-docblock "^21.0.0"
 
 eslint-plugin-react@^7.7.0:
-  version "7.8.2"
-  resolved "https://registry.yarnpkg.com/eslint-plugin-react/-/eslint-plugin-react-7.8.2.tgz#e95c9c47fece55d2303d1a67c9d01b930b88a51d"
+  version "7.10.0"
+  resolved "https://registry.yarnpkg.com/eslint-plugin-react/-/eslint-plugin-react-7.10.0.tgz#af5c1fef31c4704db02098f9be18202993828b50"
   dependencies:
-    doctrine "^2.0.2"
-    has "^1.0.1"
+    doctrine "^2.1.0"
+    has "^1.0.3"
     jsx-ast-utils "^2.0.1"
-    prop-types "^15.6.0"
+    prop-types "^15.6.2"
 
-eslint-scope@^3.7.1, eslint-scope@~3.7.1:
+eslint-scope@3.7.1:
   version "3.7.1"
   resolved "https://registry.yarnpkg.com/eslint-scope/-/eslint-scope-3.7.1.tgz#3d63c3edfda02e06e01a452ad88caacc7cdcb6e8"
   dependencies:
     esrecurse "^4.1.0"
     estraverse "^4.1.1"
 
+eslint-scope@^3.7.1:
+  version "3.7.3"
+  resolved "https://registry.yarnpkg.com/eslint-scope/-/eslint-scope-3.7.3.tgz#bb507200d3d17f60247636160b4826284b108535"
+  dependencies:
+    esrecurse "^4.1.0"
+    estraverse "^4.1.1"
+
+eslint-scope@^4.0.0:
+  version "4.0.0"
+  resolved "https://registry.yarnpkg.com/eslint-scope/-/eslint-scope-4.0.0.tgz#50bf3071e9338bcdc43331794a0cb533f0136172"
+  dependencies:
+    esrecurse "^4.1.0"
+    estraverse "^4.1.1"
+
 eslint-visitor-keys@^1.0.0:
   version "1.0.0"
   resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-1.0.0.tgz#3f3180fb2e291017716acb4c9d6d5b5c34a6a81d"
@@ -3998,8 +4096,8 @@ esprima@^3.1.3, esprima@~3.1.0:
   resolved "https://registry.yarnpkg.com/esprima/-/esprima-3.1.3.tgz#fdca51cee6133895e3c88d535ce49dbff62a4633"
 
 esprima@^4.0.0, esprima@~4.0.0:
-  version "4.0.0"
-  resolved "https://registry.yarnpkg.com/esprima/-/esprima-4.0.0.tgz#4499eddcd1110e0b218bacf2fa7f7f59f55ca804"
+  version "4.0.1"
+  resolved "https://registry.yarnpkg.com/esprima/-/esprima-4.0.1.tgz#13b04cdb3e6c5d19df91ab6987a8695619b0aa71"
 
 esquery@^1.0.0:
   version "1.0.1"
@@ -4058,10 +4156,10 @@ evp_bytestokey@^1.0.0, evp_bytestokey@^1.0.3:
     safe-buffer "^5.1.1"
 
 exec-sh@^0.2.0:
-  version "0.2.1"
-  resolved "https://registry.yarnpkg.com/exec-sh/-/exec-sh-0.2.1.tgz#163b98a6e89e6b65b47c2a28d215bc1f63989c38"
+  version "0.2.2"
+  resolved "https://registry.yarnpkg.com/exec-sh/-/exec-sh-0.2.2.tgz#2a5e7ffcbd7d0ba2755bdecb16e5a427dfbdec36"
   dependencies:
-    merge "^1.1.3"
+    merge "^1.2.0"
 
 execa@^0.7.0:
   version "0.7.0"
@@ -4183,8 +4281,8 @@ extend-shallow@^3.0.0, extend-shallow@^3.0.2:
     is-extendable "^1.0.1"
 
 extend@~3.0.0, extend@~3.0.1:
-  version "3.0.1"
-  resolved "https://registry.yarnpkg.com/extend/-/extend-3.0.1.tgz#a755ea7bc1adfcc5a31ce7e762dbaadc5e636444"
+  version "3.0.2"
+  resolved "https://registry.yarnpkg.com/extend/-/extend-3.0.2.tgz#f8b1136b4071fbd8eb140aff858b1019ec2915fa"
 
 external-editor@^2.0.4, external-editor@^2.1.0:
   version "2.2.0"
@@ -4213,6 +4311,15 @@ extglob@^2.0.2, extglob@^2.0.4:
     snapdragon "^0.8.1"
     to-regex "^3.0.1"
 
+extract-zip@^1.6.5:
+  version "1.6.7"
+  resolved "https://registry.yarnpkg.com/extract-zip/-/extract-zip-1.6.7.tgz#a840b4b8af6403264c8db57f4f1a74333ef81fe9"
+  dependencies:
+    concat-stream "1.6.2"
+    debug "2.6.9"
+    mkdirp "0.5.1"
+    yauzl "2.4.1"
+
 extsprintf@1.3.0:
   version "1.3.0"
   resolved "https://registry.yarnpkg.com/extsprintf/-/extsprintf-1.3.0.tgz#96918440e3041a7a414f8c52e3c574eb3c3e1e05"
@@ -4260,13 +4367,13 @@ fast-json-stable-stringify@^2.0.0:
   version "2.0.0"
   resolved "https://registry.yarnpkg.com/fast-json-stable-stringify/-/fast-json-stable-stringify-2.0.0.tgz#d5142c0caee6b1189f87d3a76111064f86c8bbf2"
 
-fast-levenshtein@~2.0.4:
+fast-levenshtein@^2.0.6, fast-levenshtein@~2.0.4:
   version "2.0.6"
   resolved "https://registry.yarnpkg.com/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz#3d8a5c66883a16a30ca8643e851f19baa7797917"
 
 fast-memoize@^2.2.7:
-  version "2.3.2"
-  resolved "https://registry.yarnpkg.com/fast-memoize/-/fast-memoize-2.3.2.tgz#f6b9eb8e06a754029cca25b4cd3945f2f6242c90"
+  version "2.5.1"
+  resolved "https://registry.yarnpkg.com/fast-memoize/-/fast-memoize-2.5.1.tgz#c3519241e80552ce395e1a32dcdde8d1fd680f5d"
 
 fastparse@^1.1.1:
   version "1.1.1"
@@ -4291,8 +4398,8 @@ fb-watchman@^2.0.0:
     bser "^2.0.0"
 
 fbjs@^0.8.12, fbjs@^0.8.16, fbjs@^0.8.9:
-  version "0.8.16"
-  resolved "https://registry.yarnpkg.com/fbjs/-/fbjs-0.8.16.tgz#5e67432f550dc41b572bf55847b8aca64e5337db"
+  version "0.8.17"
+  resolved "https://registry.yarnpkg.com/fbjs/-/fbjs-0.8.17.tgz#c4d598ead6949112653d6588b01a5cdcd9f90fdd"
   dependencies:
     core-js "^1.0.0"
     isomorphic-fetch "^2.1.1"
@@ -4300,7 +4407,13 @@ fbjs@^0.8.12, fbjs@^0.8.16, fbjs@^0.8.9:
     object-assign "^4.1.0"
     promise "^7.1.1"
     setimmediate "^1.0.5"
-    ua-parser-js "^0.7.9"
+    ua-parser-js "^0.7.18"
+
+fd-slicer@~1.0.1:
+  version "1.0.1"
+  resolved "https://registry.yarnpkg.com/fd-slicer/-/fd-slicer-1.0.1.tgz#8b5bcbd9ec327c5041bf9ab023fd6750f1177e65"
+  dependencies:
+    pend "~1.2.0"
 
 figures@^1.7.0:
   version "1.7.0"
@@ -4430,8 +4543,8 @@ flatten@^1.0.2:
   resolved "https://registry.yarnpkg.com/flatten/-/flatten-1.0.2.tgz#dae46a9d78fbe25292258cc1e780a41d95c03782"
 
 flow-parser@^0.*:
-  version "0.73.0"
-  resolved "https://registry.yarnpkg.com/flow-parser/-/flow-parser-0.73.0.tgz#525ac0776f743e16b6dca1a3dd6c602260b15773"
+  version "0.78.0"
+  resolved "https://registry.yarnpkg.com/flow-parser/-/flow-parser-0.78.0.tgz#4ec829a97fa68cff6e97691dfff7b6ddebbc187c"
 
 flush-write-stream@^1.0.0:
   version "1.0.3"
@@ -4441,8 +4554,8 @@ flush-write-stream@^1.0.0:
     readable-stream "^2.0.4"
 
 follow-redirects@^1.0.0, follow-redirects@^1.2.3:
-  version "1.5.0"
-  resolved "https://registry.yarnpkg.com/follow-redirects/-/follow-redirects-1.5.0.tgz#234f49cf770b7f35b40e790f636ceba0c3a0ab77"
+  version "1.5.2"
+  resolved "https://registry.yarnpkg.com/follow-redirects/-/follow-redirects-1.5.2.tgz#5a9d80e0165957e5ef0c1210678fc5c4acb9fb03"
   dependencies:
     debug "^3.1.0"
 
@@ -4511,6 +4624,14 @@ from2@^2.1.0, from2@^2.1.1:
     inherits "^2.0.1"
     readable-stream "^2.0.0"
 
+fs-extra@^1.0.0:
+  version "1.0.0"
+  resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-1.0.0.tgz#cd3ce5f7e7cb6145883fcae3191e9877f8587950"
+  dependencies:
+    graceful-fs "^4.1.2"
+    jsonfile "^2.1.0"
+    klaw "^1.0.0"
+
 fs-minipass@^1.2.5:
   version "1.2.5"
   resolved "https://registry.yarnpkg.com/fs-minipass/-/fs-minipass-1.2.5.tgz#06c277218454ec288df77ada54a03b8702aacb9d"
@@ -4530,7 +4651,7 @@ fs.realpath@^1.0.0:
   version "1.0.0"
   resolved "https://registry.yarnpkg.com/fs.realpath/-/fs.realpath-1.0.0.tgz#1504ad2523158caa40db4a2787cb01411994ea4f"
 
-fsevents@^1.1.2, fsevents@^1.2.3:
+fsevents@^1.2.2, fsevents@^1.2.3:
   version "1.2.4"
   resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-1.2.4.tgz#f41dcb1af2582af3692da36fc55cbd8e1041c426"
   dependencies:
@@ -4550,7 +4671,7 @@ function-bind@^1.0.2, function-bind@^1.1.0, function-bind@^1.1.1:
   version "1.1.1"
   resolved "https://registry.yarnpkg.com/function-bind/-/function-bind-1.1.1.tgz#a56899d3ea3c9bab874bb9773b7c5ede92f4895d"
 
-function.prototype.name@^1.0.0, function.prototype.name@^1.1.0:
+function.prototype.name@^1.1.0:
   version "1.1.0"
   resolved "https://registry.yarnpkg.com/function.prototype.name/-/function.prototype.name-1.1.0.tgz#8bd763cc0af860a859cc5d49384d74b932cd2327"
   dependencies:
@@ -4563,8 +4684,8 @@ functional-red-black-tree@^1.0.1:
   resolved "https://registry.yarnpkg.com/functional-red-black-tree/-/functional-red-black-tree-1.0.1.tgz#1b0ab3bd553b2a0d6399d29c0e3ea0b252078327"
 
 fuse.js@^3.0.1, fuse.js@^3.2.0:
-  version "3.2.0"
-  resolved "https://registry.yarnpkg.com/fuse.js/-/fuse.js-3.2.0.tgz#f0448e8069855bf2a3e683cdc1d320e7e2a07ef4"
+  version "3.2.1"
+  resolved "https://registry.yarnpkg.com/fuse.js/-/fuse.js-3.2.1.tgz#6320cb94ce56ec9755c89ade775bcdbb0358d425"
 
 gauge@~2.7.3:
   version "2.7.4"
@@ -4585,19 +4706,9 @@ gaze@^1.0.0:
   dependencies:
     globule "^1.0.0"
 
-generate-function@^2.0.0:
-  version "2.0.0"
-  resolved "https://registry.yarnpkg.com/generate-function/-/generate-function-2.0.0.tgz#6858fe7c0969b7d4e9093337647ac79f60dfbe74"
-
-generate-object-property@^1.1.0:
-  version "1.2.0"
-  resolved "https://registry.yarnpkg.com/generate-object-property/-/generate-object-property-1.2.0.tgz#9c0e1c40308ce804f4783618b937fa88f99d50d0"
-  dependencies:
-    is-property "^1.0.0"
-
 get-caller-file@^1.0.1:
-  version "1.0.2"
-  resolved "https://registry.yarnpkg.com/get-caller-file/-/get-caller-file-1.0.2.tgz#f702e63127e7e231c160a80c1554acb70d5047e5"
+  version "1.0.3"
+  resolved "https://registry.yarnpkg.com/get-caller-file/-/get-caller-file-1.0.3.tgz#f978fa4c90d1dfe7ff2d6beda2a515e713bdcf4a"
 
 get-stdin@^4.0.1:
   version "4.0.1"
@@ -4645,8 +4756,8 @@ glamor@^2.20.40:
     through "^2.3.8"
 
 glamorous@^4.12.1:
-  version "4.13.0"
-  resolved "https://registry.yarnpkg.com/glamorous/-/glamorous-4.13.0.tgz#4ac5cb05633aa49a0396d409f665dd9b614f1b5a"
+  version "4.13.1"
+  resolved "https://registry.yarnpkg.com/glamorous/-/glamorous-4.13.1.tgz#8909afcbc7f09133c6eb26bedcc1250c1f774312"
   dependencies:
     brcast "^3.0.0"
     csstype "^2.2.0"
@@ -4745,8 +4856,8 @@ global@^4.3.0, global@^4.3.2:
     process "~0.5.1"
 
 globals@^11.0.1, globals@^11.1.0:
-  version "11.5.0"
-  resolved "https://registry.yarnpkg.com/globals/-/globals-11.5.0.tgz#6bc840de6771173b191f13d3a9c94d441ee92642"
+  version "11.7.0"
+  resolved "https://registry.yarnpkg.com/globals/-/globals-11.7.0.tgz#a583faa43055b1aca771914bf68258e2fc125673"
 
 globals@^9.18.0:
   version "9.18.0"
@@ -4773,7 +4884,18 @@ globby@^6.1.0:
     pify "^2.0.0"
     pinkie-promise "^2.0.0"
 
-globby@^8.0.0, globby@^8.0.1:
+globby@^7.1.1:
+  version "7.1.1"
+  resolved "https://registry.yarnpkg.com/globby/-/globby-7.1.1.tgz#fb2ccff9401f8600945dfada97440cca972b8680"
+  dependencies:
+    array-union "^1.0.1"
+    dir-glob "^2.0.0"
+    glob "^7.1.2"
+    ignore "^3.3.5"
+    pify "^3.0.0"
+    slash "^1.0.0"
+
+globby@^8.0.1:
   version "8.0.1"
   resolved "https://registry.yarnpkg.com/globby/-/globby-8.0.1.tgz#b5ad48b8aa80b35b814fc1281ecc851f1d2b5b50"
   dependencies:
@@ -4813,8 +4935,8 @@ got@^7.0.0:
     url-to-options "^1.0.1"
 
 got@^8.3.1:
-  version "8.3.1"
-  resolved "https://registry.yarnpkg.com/got/-/got-8.3.1.tgz#093324403d4d955f5a16a7a8d39955d055ae10ed"
+  version "8.3.2"
+  resolved "https://registry.yarnpkg.com/got/-/got-8.3.2.tgz#1d23f64390e97f776cac52e5b936e5f514d2e937"
   dependencies:
     "@sindresorhus/is" "^0.7.0"
     cacheable-request "^2.1.1"
@@ -4834,7 +4956,7 @@ got@^8.3.1:
     url-parse-lax "^3.0.0"
     url-to-options "^1.0.1"
 
-graceful-fs@^4.1.11, graceful-fs@^4.1.2:
+graceful-fs@^4.1.11, graceful-fs@^4.1.2, graceful-fs@^4.1.6, graceful-fs@^4.1.9:
   version "4.1.11"
   resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.1.11.tgz#0e8bdfe4d1ddb8854d64e04ea7c00e2a026e5658"
 
@@ -4868,18 +4990,20 @@ handlebars@^4.0.3:
   optionalDependencies:
     uglify-js "^2.6"
 
+har-schema@^1.0.5:
+  version "1.0.5"
+  resolved "https://registry.yarnpkg.com/har-schema/-/har-schema-1.0.5.tgz#d263135f43307c02c602afc8fe95970c0151369e"
+
 har-schema@^2.0.0:
   version "2.0.0"
   resolved "https://registry.yarnpkg.com/har-schema/-/har-schema-2.0.0.tgz#a94c2224ebcac04782a0d9035521f24735b7ec92"
 
-har-validator@~2.0.6:
-  version "2.0.6"
-  resolved "https://registry.yarnpkg.com/har-validator/-/har-validator-2.0.6.tgz#cdcbc08188265ad119b6a5a7c8ab70eecfb5d27d"
+har-validator@~4.2.1:
+  version "4.2.1"
+  resolved "https://registry.yarnpkg.com/har-validator/-/har-validator-4.2.1.tgz#33481d0f1bbff600dd203d75812a6a5fba002e2a"
   dependencies:
-    chalk "^1.1.1"
-    commander "^2.9.0"
-    is-my-json-valid "^2.12.4"
-    pinkie-promise "^2.0.0"
+    ajv "^4.9.1"
+    har-schema "^1.0.5"
 
 har-validator@~5.0.3:
   version "5.0.3"
@@ -4955,11 +5079,11 @@ has-values@^1.0.0:
     is-number "^3.0.0"
     kind-of "^4.0.0"
 
-has@^1.0.1:
-  version "1.0.1"
-  resolved "https://registry.yarnpkg.com/has/-/has-1.0.1.tgz#8461733f538b0837c9361e39a9ab9e9704dc2f28"
+has@^1.0.1, has@^1.0.3:
+  version "1.0.3"
+  resolved "https://registry.yarnpkg.com/has/-/has-1.0.3.tgz#722d7cbfc1f6aa8241f16dd814e011e1f41e8796"
   dependencies:
-    function-bind "^1.0.2"
+    function-bind "^1.1.1"
 
 hash-base@^3.0.0:
   version "3.0.4"
@@ -4969,11 +5093,18 @@ hash-base@^3.0.0:
     safe-buffer "^5.0.1"
 
 hash.js@^1.0.0, hash.js@^1.0.3:
-  version "1.1.3"
-  resolved "https://registry.yarnpkg.com/hash.js/-/hash.js-1.1.3.tgz#340dedbe6290187151c1ea1d777a3448935df846"
+  version "1.1.5"
+  resolved "https://registry.yarnpkg.com/hash.js/-/hash.js-1.1.5.tgz#e38ab4b85dfb1e0c40fe9265c0e9b54854c23812"
   dependencies:
     inherits "^2.0.3"
-    minimalistic-assert "^1.0.0"
+    minimalistic-assert "^1.0.1"
+
+hasha@^2.2.0:
+  version "2.2.0"
+  resolved "https://registry.yarnpkg.com/hasha/-/hasha-2.2.0.tgz#78d7cbfc1e6d66303fe79837365984517b2f6ee1"
+  dependencies:
+    is-stream "^1.0.1"
+    pinkie-promise "^2.0.0"
 
 hawk@~3.1.3:
   version "3.1.3"
@@ -5004,9 +5135,9 @@ hoist-non-react-statics@1.x.x, hoist-non-react-statics@^1.2.0:
   version "1.2.0"
   resolved "https://registry.yarnpkg.com/hoist-non-react-statics/-/hoist-non-react-statics-1.2.0.tgz#aa448cf0986d55cc40773b17174b7dd066cb7cfb"
 
-hoist-non-react-statics@^2.1.0, hoist-non-react-statics@^2.5.0:
-  version "2.5.0"
-  resolved "https://registry.yarnpkg.com/hoist-non-react-statics/-/hoist-non-react-statics-2.5.0.tgz#d2ca2dfc19c5a91c5a6615ce8e564ef0347e2a40"
+hoist-non-react-statics@^2.1.0, hoist-non-react-statics@^2.1.1, hoist-non-react-statics@^2.5.0:
+  version "2.5.5"
+  resolved "https://registry.yarnpkg.com/hoist-non-react-statics/-/hoist-non-react-statics-2.5.5.tgz#c5903cf409c0dfd908f388e619d86b9c1174cb47"
 
 home-or-tmp@^2.0.0:
   version "2.0.0"
@@ -5022,8 +5153,8 @@ homedir-polyfill@^1.0.1:
     parse-passwd "^1.0.0"
 
 hosted-git-info@^2.1.4:
-  version "2.6.0"
-  resolved "https://registry.yarnpkg.com/hosted-git-info/-/hosted-git-info-2.6.0.tgz#23235b29ab230c576aab0d4f13fc046b0b038222"
+  version "2.7.1"
+  resolved "https://registry.yarnpkg.com/hosted-git-info/-/hosted-git-info-2.7.1.tgz#97f236977bd6e125408930ff6de3eec6281ec047"
 
 hpack.js@^2.1.6:
   version "2.1.6"
@@ -5073,16 +5204,16 @@ html-loader@^0.5.5:
     object-assign "^4.1.1"
 
 html-minifier@^3.0.1, html-minifier@^3.2.3, html-minifier@^3.5.8:
-  version "3.5.16"
-  resolved "https://registry.yarnpkg.com/html-minifier/-/html-minifier-3.5.16.tgz#39f5aabaf78bdfc057fe67334226efd7f3851175"
+  version "3.5.19"
+  resolved "https://registry.yarnpkg.com/html-minifier/-/html-minifier-3.5.19.tgz#ed53c4b7326fe507bc3a1adbcc3bbb56660a2ebd"
   dependencies:
     camel-case "3.0.x"
     clean-css "4.1.x"
-    commander "2.15.x"
+    commander "2.16.x"
     he "1.1.x"
     param-case "2.1.x"
     relateurl "0.2.x"
-    uglify-js "3.3.x"
+    uglify-js "3.4.x"
 
 html-tag-names@^1.1.1:
   version "1.1.3"
@@ -5238,8 +5369,8 @@ icss-utils@^2.1.0:
     postcss "^6.0.1"
 
 ieee754@^1.1.11, ieee754@^1.1.4:
-  version "1.1.11"
-  resolved "https://registry.yarnpkg.com/ieee754/-/ieee754-1.1.11.tgz#c16384ffe00f5b7835824e67b6f2bd44a5229455"
+  version "1.1.12"
+  resolved "https://registry.yarnpkg.com/ieee754/-/ieee754-1.1.12.tgz#50bf24e5b9c8bb98af4964c941cdb0918da7b60b"
 
 iferr@^0.1.5:
   version "0.1.5"
@@ -5255,9 +5386,9 @@ ignore-walk@^3.0.1:
   dependencies:
     minimatch "^3.0.4"
 
-ignore@^3.3.3, ignore@^3.3.5:
-  version "3.3.8"
-  resolved "https://registry.yarnpkg.com/ignore/-/ignore-3.3.8.tgz#3f8e9c35d38708a3a7e0e9abb6c73e7ee7707b2b"
+ignore@^3.3.3, ignore@^3.3.5, ignore@^3.3.6:
+  version "3.3.10"
+  resolved "https://registry.yarnpkg.com/ignore/-/ignore-3.3.10.tgz#0a97fb876986e8081c631160f8f9f389157f0043"
 
 image-size@^0.5.1:
   version "0.5.5"
@@ -5267,6 +5398,18 @@ immutable@^3.8.1:
   version "3.8.2"
   resolved "https://registry.yarnpkg.com/immutable/-/immutable-3.8.2.tgz#c2439951455bb39913daf281376f1530e104adf3"
 
+import-cwd@^2.0.0:
+  version "2.1.0"
+  resolved "https://registry.yarnpkg.com/import-cwd/-/import-cwd-2.1.0.tgz#aa6cf36e722761285cb371ec6519f53e2435b0a9"
+  dependencies:
+    import-from "^2.1.0"
+
+import-from@^2.1.0:
+  version "2.1.0"
+  resolved "https://registry.yarnpkg.com/import-from/-/import-from-2.1.0.tgz#335db7f2a7affd53aaa471d4b8021dee36b7f3b1"
+  dependencies:
+    resolve-from "^3.0.0"
+
 import-local@^1.0.0:
   version "1.0.0"
   resolved "https://registry.yarnpkg.com/import-local/-/import-local-1.0.0.tgz#5e4ffdc03f4fe6c009c6729beb29631c2f8227bc"
@@ -5425,9 +5568,9 @@ ip@^1.1.0, ip@^1.1.5:
   version "1.1.5"
   resolved "https://registry.yarnpkg.com/ip/-/ip-1.1.5.tgz#bdded70114290828c0a039e72ef25f5aaec4354a"
 
-ipaddr.js@1.6.0:
-  version "1.6.0"
-  resolved "https://registry.yarnpkg.com/ipaddr.js/-/ipaddr.js-1.6.0.tgz#e3fa357b773da619f26e95f049d055c72796f86b"
+ipaddr.js@1.8.0:
+  version "1.8.0"
+  resolved "https://registry.yarnpkg.com/ipaddr.js/-/ipaddr.js-1.8.0.tgz#eaa33d6ddd7ace8f7f6fe0c9ca0440e706738b1e"
 
 is-absolute-url@^2.0.0:
   version "2.1.0"
@@ -5455,6 +5598,10 @@ is-binary-path@^1.0.0:
   dependencies:
     binary-extensions "^1.0.0"
 
+is-boolean-object@^1.0.0:
+  version "1.0.0"
+  resolved "https://registry.yarnpkg.com/is-boolean-object/-/is-boolean-object-1.0.0.tgz#98f8b28030684219a95f375cfbd88ce3405dff93"
+
 is-buffer@^1.1.5, is-buffer@~1.1.1:
   version "1.1.6"
   resolved "https://registry.yarnpkg.com/is-buffer/-/is-buffer-1.1.6.tgz#efaa2ea9daa0d7ab2ea13a97b2b8ad51fefbe8be"
@@ -5465,9 +5612,9 @@ is-builtin-module@^1.0.0:
   dependencies:
     builtin-modules "^1.0.0"
 
-is-callable@^1.1.1, is-callable@^1.1.3:
-  version "1.1.3"
-  resolved "https://registry.yarnpkg.com/is-callable/-/is-callable-1.1.3.tgz#86eb75392805ddc33af71c92a0eedf74ee7604b2"
+is-callable@^1.1.1, is-callable@^1.1.3, is-callable@^1.1.4:
+  version "1.1.4"
+  resolved "https://registry.yarnpkg.com/is-callable/-/is-callable-1.1.4.tgz#1e1adf219e1eeb684d691f9d6a05ff0d30a24d75"
 
 is-ci@^1.0.10:
   version "1.1.0"
@@ -5581,19 +5728,9 @@ is-glob@^4.0.0:
   dependencies:
     is-extglob "^2.1.1"
 
-is-my-ip-valid@^1.0.0:
-  version "1.0.0"
-  resolved "https://registry.yarnpkg.com/is-my-ip-valid/-/is-my-ip-valid-1.0.0.tgz#7b351b8e8edd4d3995d4d066680e664d94696824"
-
-is-my-json-valid@^2.12.4:
-  version "2.17.2"
-  resolved "https://registry.yarnpkg.com/is-my-json-valid/-/is-my-json-valid-2.17.2.tgz#6b2103a288e94ef3de5cf15d29dd85fc4b78d65c"
-  dependencies:
-    generate-function "^2.0.0"
-    generate-object-property "^1.1.0"
-    is-my-ip-valid "^1.0.0"
-    jsonpointer "^4.0.0"
-    xtend "^4.0.0"
+is-number-object@^1.0.3:
+  version "1.0.3"
+  resolved "https://registry.yarnpkg.com/is-number-object/-/is-number-object-1.0.3.tgz#f265ab89a9f445034ef6aff15a8f00b00f551799"
 
 is-number@^2.1.0:
   version "2.1.0"
@@ -5621,12 +5758,6 @@ is-observable@^1.1.0:
   dependencies:
     symbol-observable "^1.1.0"
 
-is-odd@^2.0.0:
-  version "2.0.0"
-  resolved "https://registry.yarnpkg.com/is-odd/-/is-odd-2.0.0.tgz#7646624671fd7ea558ccd9a2795182f2958f1b24"
-  dependencies:
-    is-number "^4.0.0"
-
 is-path-cwd@^1.0.0:
   version "1.0.0"
   resolved "https://registry.yarnpkg.com/is-path-cwd/-/is-path-cwd-1.0.0.tgz#d225ec23132e89edd38fda767472e62e65f1106d"
@@ -5665,10 +5796,6 @@ is-promise@^2.1.0:
   version "2.1.0"
   resolved "https://registry.yarnpkg.com/is-promise/-/is-promise-2.1.0.tgz#79a2a9ece7f096e80f36d2b2f3bc16c1ff4bf3fa"
 
-is-property@^1.0.0:
-  version "1.0.2"
-  resolved "https://registry.yarnpkg.com/is-property/-/is-property-1.0.2.tgz#57fe1c4e48474edd65b09911f26b1cd4095dda84"
-
 is-regex@^1.0.4:
   version "1.0.4"
   resolved "https://registry.yarnpkg.com/is-regex/-/is-regex-1.0.4.tgz#5517489b547091b0930e095654ced25ee97e9491"
@@ -5697,6 +5824,10 @@ is-stream@^1.0.0, is-stream@^1.0.1, is-stream@^1.1.0:
   version "1.1.0"
   resolved "https://registry.yarnpkg.com/is-stream/-/is-stream-1.1.0.tgz#12d4a3dd4e68e0b79ceb8dbc84173ae80d91ca44"
 
+is-string@^1.0.4:
+  version "1.0.4"
+  resolved "https://registry.yarnpkg.com/is-string/-/is-string-1.0.4.tgz#cc3a9b69857d621e963725a24caeec873b826e64"
+
 is-subset@^0.1.1:
   version "0.1.1"
   resolved "https://registry.yarnpkg.com/is-subset/-/is-subset-0.1.1.tgz#8a59117d932de1de00f245fcdd39ce43f1e939a6"
@@ -5736,8 +5867,10 @@ isarray@1.0.0, isarray@^1.0.0, isarray@~1.0.0:
   resolved "https://registry.yarnpkg.com/isarray/-/isarray-1.0.0.tgz#bb935d48582cba168c06834957a54a3e07124f11"
 
 isbinaryfile@^3.0.2:
-  version "3.0.2"
-  resolved "https://registry.yarnpkg.com/isbinaryfile/-/isbinaryfile-3.0.2.tgz#4a3e974ec0cba9004d3fc6cde7209ea69368a621"
+  version "3.0.3"
+  resolved "https://registry.yarnpkg.com/isbinaryfile/-/isbinaryfile-3.0.3.tgz#5d6def3edebf6e8ca8cae9c30183a804b5f8be80"
+  dependencies:
+    buffer-alloc "^1.2.0"
 
 isexe@^2.0.0:
   version "2.0.0"
@@ -5786,10 +5919,10 @@ istanbul-lib-coverage@^1.0.1, istanbul-lib-coverage@^1.1.2, istanbul-lib-coverag
   resolved "https://registry.yarnpkg.com/istanbul-lib-coverage/-/istanbul-lib-coverage-1.2.0.tgz#f7d8f2e42b97e37fe796114cb0f9d68b5e3a4341"
 
 istanbul-lib-hook@^1.2.0:
-  version "1.2.0"
-  resolved "https://registry.yarnpkg.com/istanbul-lib-hook/-/istanbul-lib-hook-1.2.0.tgz#ae556fd5a41a6e8efa0b1002b1e416dfeaf9816c"
+  version "1.2.1"
+  resolved "https://registry.yarnpkg.com/istanbul-lib-hook/-/istanbul-lib-hook-1.2.1.tgz#f614ec45287b2a8fc4f07f5660af787575601805"
   dependencies:
-    append-transform "^0.4.0"
+    append-transform "^1.0.0"
 
 istanbul-lib-instrument@^1.10.1, istanbul-lib-instrument@^1.4.2:
   version "1.10.1"
@@ -5823,8 +5956,8 @@ istanbul-lib-source-maps@^1.1.0:
     source-map "^0.5.3"
 
 istanbul-lib-source-maps@^1.2.4:
-  version "1.2.4"
-  resolved "https://registry.yarnpkg.com/istanbul-lib-source-maps/-/istanbul-lib-source-maps-1.2.4.tgz#cc7ccad61629f4efff8e2f78adb8c522c9976ec7"
+  version "1.2.5"
+  resolved "https://registry.yarnpkg.com/istanbul-lib-source-maps/-/istanbul-lib-source-maps-1.2.5.tgz#ffe6be4e7ab86d3603e4290d54990b14506fc9b1"
   dependencies:
     debug "^3.1.0"
     istanbul-lib-coverage "^1.2.0"
@@ -6083,17 +6216,21 @@ jest@^21.2.1:
     jest-cli "^21.2.1"
 
 js-base64@^2.1.8, js-base64@^2.1.9:
-  version "2.4.5"
-  resolved "https://registry.yarnpkg.com/js-base64/-/js-base64-2.4.5.tgz#e293cd3c7c82f070d700fc7a1ca0a2e69f101f92"
+  version "2.4.8"
+  resolved "https://registry.yarnpkg.com/js-base64/-/js-base64-2.4.8.tgz#57a9b130888f956834aa40c5b165ba59c758f033"
 
 js-tokens@^3.0.0, js-tokens@^3.0.2:
   version "3.0.2"
   resolved "https://registry.yarnpkg.com/js-tokens/-/js-tokens-3.0.2.tgz#9866df395102130e38f7f996bceb65443209c25b"
 
-js-yaml@^3.4.3, js-yaml@^3.7.0, js-yaml@^3.9.0, js-yaml@^3.9.1:
-  version "3.11.0"
-  resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-3.11.0.tgz#597c1a8bd57152f26d622ce4117851a51f5ebaef"
-  dependencies:
+"js-tokens@^3.0.0 || ^4.0.0":
+  version "4.0.0"
+  resolved "https://registry.yarnpkg.com/js-tokens/-/js-tokens-4.0.0.tgz#19203fb59991df98e3a287050d4647cdeaf32499"
+
+js-yaml@^3.7.0, js-yaml@^3.9.0, js-yaml@^3.9.1:
+  version "3.12.0"
+  resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-3.12.0.tgz#eaed656ec8344f10f527c6bfa1b6e2244de167d1"
+  dependencies:
     argparse "^1.0.7"
     esprima "^4.0.0"
 
@@ -6129,14 +6266,14 @@ jscodeshift@^0.4.0:
     write-file-atomic "^1.2.0"
 
 jscodeshift@^0.5.0:
-  version "0.5.0"
-  resolved "https://registry.yarnpkg.com/jscodeshift/-/jscodeshift-0.5.0.tgz#bdb7b6cc20dd62c16aa728c3fa2d2fe66ca7c748"
+  version "0.5.1"
+  resolved "https://registry.yarnpkg.com/jscodeshift/-/jscodeshift-0.5.1.tgz#4af6a721648be8638ae1464a190342da52960c33"
   dependencies:
     babel-plugin-transform-flow-strip-types "^6.8.0"
     babel-preset-es2015 "^6.9.0"
     babel-preset-stage-1 "^6.5.0"
     babel-register "^6.9.0"
-    babylon "^7.0.0-beta.30"
+    babylon "^7.0.0-beta.47"
     colors "^1.1.2"
     flow-parser "^0.*"
     lodash "^4.13.1"
@@ -6144,7 +6281,7 @@ jscodeshift@^0.5.0:
     neo-async "^2.5.0"
     node-dir "0.1.8"
     nomnom "^1.8.1"
-    recast "^0.14.1"
+    recast "^0.15.0"
     temp "^0.8.1"
     write-file-atomic "^1.2.0"
 
@@ -6185,17 +6322,21 @@ jsesc@~0.5.0:
   resolved "https://registry.yarnpkg.com/jsesc/-/jsesc-0.5.0.tgz#e7dee66e35d6fc16f710fe91d5cf69f70f08911d"
 
 jshint@^2.9.4:
-  version "2.9.5"
-  resolved "https://registry.yarnpkg.com/jshint/-/jshint-2.9.5.tgz#1e7252915ce681b40827ee14248c46d34e9aa62c"
+  version "2.9.6"
+  resolved "https://registry.yarnpkg.com/jshint/-/jshint-2.9.6.tgz#19b34e578095a34928fe006135a6cb70137b9c08"
   dependencies:
     cli "~1.0.0"
     console-browserify "1.1.x"
     exit "0.1.x"
     htmlparser2 "3.8.x"
-    lodash "3.7.x"
+    lodash "~4.17.10"
     minimatch "~3.0.2"
     shelljs "0.3.x"
     strip-json-comments "1.0.x"
+    unicode-5.2.0 "^0.7.5"
+  optionalDependencies:
+    phantom "~4.0.1"
+    phantomjs-prebuilt "~2.1.7"
 
 json-buffer@3.0.0:
   version "3.0.0"
@@ -6213,6 +6354,10 @@ json-schema-traverse@^0.3.0:
   version "0.3.1"
   resolved "https://registry.yarnpkg.com/json-schema-traverse/-/json-schema-traverse-0.3.1.tgz#349a6d44c53a51de89b40805c5d5e59b417d3340"
 
+json-schema-traverse@^0.4.1:
+  version "0.4.1"
+  resolved "https://registry.yarnpkg.com/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz#69f6a87d9513ab8bb8fe63bdb0979c448e684660"
+
 json-schema@0.2.3:
   version "0.2.3"
   resolved "https://registry.yarnpkg.com/json-schema/-/json-schema-0.2.3.tgz#b480c892e59a2f05954ce727bd3f2a4e882f9e13"
@@ -6239,14 +6384,16 @@ json5@^0.5.0, json5@^0.5.1:
   version "0.5.1"
   resolved "https://registry.yarnpkg.com/json5/-/json5-0.5.1.tgz#1eade7acc012034ad84e2396767ead9fa5495821"
 
+jsonfile@^2.1.0:
+  version "2.4.0"
+  resolved "https://registry.yarnpkg.com/jsonfile/-/jsonfile-2.4.0.tgz#3736a2b428b87bbda0cc83b53fa3d633a35c2ae8"
+  optionalDependencies:
+    graceful-fs "^4.1.6"
+
 jsonify@~0.0.0:
   version "0.0.0"
   resolved "https://registry.yarnpkg.com/jsonify/-/jsonify-0.0.0.tgz#2c74b6ee41d93ca51b7b5aaee8f503631d252a73"
 
-jsonpointer@^4.0.0:
-  version "4.0.1"
-  resolved "https://registry.yarnpkg.com/jsonpointer/-/jsonpointer-4.0.1.tgz#4fd92cb34e0e9db3c89c8622ecf51f9b978c6cb9"
-
 jsprim@^1.2.2:
   version "1.4.1"
   resolved "https://registry.yarnpkg.com/jsprim/-/jsprim-1.4.1.tgz#313e66bc1e5cc06e438bc1b7499c2e5c56acb6a2"
@@ -6279,6 +6426,10 @@ jsx-loader@^0.13.2:
     jstransform "11"
     loader-utils "^0.2.2"
 
+kew@^0.7.0:
+  version "0.7.0"
+  resolved "https://registry.yarnpkg.com/kew/-/kew-0.7.0.tgz#79d93d2d33363d6fdd2970b335d9141ad591d79b"
+
 keycode@^2.1.2, keycode@^2.1.9:
   version "2.2.0"
   resolved "https://registry.yarnpkg.com/keycode/-/keycode-2.2.0.tgz#3d0af56dc7b8b8e5cba8d0a97f107204eec22b04"
@@ -6317,6 +6468,12 @@ kind-of@^6.0.0, kind-of@^6.0.2:
   version "6.0.2"
   resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-6.0.2.tgz#01146b36a6218e64e58f3a8d66de5d7fc6f6d051"
 
+klaw@^1.0.0:
+  version "1.3.1"
+  resolved "https://registry.yarnpkg.com/klaw/-/klaw-1.3.1.tgz#4088433b46b3b1ba259d78785d8e96f73ba02439"
+  optionalDependencies:
+    graceful-fs "^4.1.9"
+
 lazy-cache@^1.0.3:
   version "1.0.4"
   resolved "https://registry.yarnpkg.com/lazy-cache/-/lazy-cache-1.0.4.tgz#a1d78fc3a50474cb80845d3b3b6e1da49a446e8e"
@@ -6327,10 +6484,6 @@ lcid@^1.0.0:
   dependencies:
     invert-kv "^1.0.0"
 
-leb@^0.3.0:
-  version "0.3.0"
-  resolved "https://registry.yarnpkg.com/leb/-/leb-0.3.0.tgz#32bee9fad168328d6aea8522d833f4180eed1da3"
-
 leven@^2.1.0:
   version "2.1.0"
   resolved "https://registry.yarnpkg.com/leven/-/leven-2.1.0.tgz#c2e7a9f772094dee9d34202ae8acce4687875580"
@@ -6475,14 +6628,6 @@ lodash.assign@^4.2.0:
   version "4.2.0"
   resolved "https://registry.yarnpkg.com/lodash.assign/-/lodash.assign-4.2.0.tgz#0d99f3ccd7a6d261d19bdaeb9245005d285808e7"
 
-lodash.assignin@^4.0.9:
-  version "4.2.0"
-  resolved "https://registry.yarnpkg.com/lodash.assignin/-/lodash.assignin-4.2.0.tgz#ba8df5fb841eb0a3e8044232b0e263a8dc6a28a2"
-
-lodash.bind@^4.1.4:
-  version "4.2.1"
-  resolved "https://registry.yarnpkg.com/lodash.bind/-/lodash.bind-4.2.1.tgz#7ae3017e939622ac31b7d7d7dcb1b34db1690d35"
-
 lodash.camelcase@^3.0.1:
   version "3.0.1"
   resolved "https://registry.yarnpkg.com/lodash.camelcase/-/lodash.camelcase-3.0.1.tgz#932c8b87f8a4377897c67197533282f97aeac298"
@@ -6507,26 +6652,10 @@ lodash.deburr@^3.0.0:
   dependencies:
     lodash._root "^3.0.0"
 
-lodash.defaults@^4.0.1:
-  version "4.2.0"
-  resolved "https://registry.yarnpkg.com/lodash.defaults/-/lodash.defaults-4.2.0.tgz#d09178716ffea4dde9e5fb7b37f6f0802274580c"
-
-lodash.filter@^4.4.0:
-  version "4.6.0"
-  resolved "https://registry.yarnpkg.com/lodash.filter/-/lodash.filter-4.6.0.tgz#668b1d4981603ae1cc5a6fa760143e480b4c4ace"
-
-lodash.flatten@^4.2.0:
-  version "4.4.0"
-  resolved "https://registry.yarnpkg.com/lodash.flatten/-/lodash.flatten-4.4.0.tgz#f31c22225a9632d2bbf8e4addbef240aa765a61f"
-
 lodash.flattendeep@^4.4.0:
   version "4.4.0"
   resolved "https://registry.yarnpkg.com/lodash.flattendeep/-/lodash.flattendeep-4.4.0.tgz#fb030917f86a3134e5bc9bec0d69e0013ddfedb2"
 
-lodash.foreach@^4.3.0:
-  version "4.5.0"
-  resolved "https://registry.yarnpkg.com/lodash.foreach/-/lodash.foreach-4.5.0.tgz#1a6a35eace401280c7f06dddec35165ab27e3e53"
-
 lodash.isarguments@^3.0.0:
   version "3.1.0"
   resolved "https://registry.yarnpkg.com/lodash.isarguments/-/lodash.isarguments-3.1.0.tgz#2f573d85c6a24289ff00663b491c1d338ff3458a"
@@ -6547,35 +6676,19 @@ lodash.keys@^3.1.2:
     lodash.isarguments "^3.0.0"
     lodash.isarray "^3.0.0"
 
-lodash.map@^4.4.0:
-  version "4.6.0"
-  resolved "https://registry.yarnpkg.com/lodash.map/-/lodash.map-4.6.0.tgz#771ec7839e3473d9c4cde28b19394c3562f4f6d3"
-
 lodash.memoize@^4.1.2:
   version "4.1.2"
   resolved "https://registry.yarnpkg.com/lodash.memoize/-/lodash.memoize-4.1.2.tgz#bcc6c49a42a2840ed997f323eada5ecd182e0bfe"
 
-lodash.merge@^4.4.0:
-  version "4.6.1"
-  resolved "https://registry.yarnpkg.com/lodash.merge/-/lodash.merge-4.6.1.tgz#adc25d9cb99b9391c59624f379fbba60d7111d54"
-
 lodash.mergewith@^4.6.0:
   version "4.6.1"
   resolved "https://registry.yarnpkg.com/lodash.mergewith/-/lodash.mergewith-4.6.1.tgz#639057e726c3afbdb3e7d42741caa8d6e4335927"
 
-lodash.pick@^4.2.1, lodash.pick@^4.4.0:
+lodash.pick@^4.4.0:
   version "4.4.0"
   resolved "https://registry.yarnpkg.com/lodash.pick/-/lodash.pick-4.4.0.tgz#52f05610fff9ded422611441ed1fc123a03001b3"
 
-lodash.reduce@^4.4.0:
-  version "4.6.0"
-  resolved "https://registry.yarnpkg.com/lodash.reduce/-/lodash.reduce-4.6.0.tgz#f1ab6b839299ad48f784abbf476596f03b914d3b"
-
-lodash.reject@^4.4.0:
-  version "4.6.0"
-  resolved "https://registry.yarnpkg.com/lodash.reject/-/lodash.reject-4.6.0.tgz#80d6492dc1470864bbf583533b651f42a9f52415"
-
-lodash.some@^4.4.0, lodash.some@^4.6.0:
+lodash.some@^4.6.0:
   version "4.6.0"
   resolved "https://registry.yarnpkg.com/lodash.some/-/lodash.some-4.6.0.tgz#1bb9f314ef6b8baded13b549169b2a945eb68e4d"
 
@@ -6601,11 +6714,7 @@ lodash.words@^3.0.0:
   dependencies:
     lodash._root "^3.0.0"
 
-lodash@3.7.x:
-  version "3.7.0"
-  resolved "https://registry.yarnpkg.com/lodash/-/lodash-3.7.0.tgz#3678bd8ab995057c07ade836ed2ef087da811d45"
-
-lodash@^4.0.0, lodash@^4.12.0, lodash@^4.13.1, lodash@^4.17.0, lodash@^4.17.10, lodash@^4.17.2, lodash@^4.17.3, lodash@^4.17.4, lodash@^4.17.5, lodash@^4.2.0, lodash@^4.2.1, lodash@^4.3.0, lodash@^4.6.1, lodash@~4.17.10:
+lodash@^4.0.0, lodash@^4.12.0, lodash@^4.13.1, lodash@^4.15.0, lodash@^4.17.0, lodash@^4.17.10, lodash@^4.17.2, lodash@^4.17.3, lodash@^4.17.4, lodash@^4.17.5, lodash@^4.2.0, lodash@^4.2.1, lodash@^4.3.0, lodash@~4.17.10:
   version "4.17.10"
   resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.10.tgz#1b7793cf7259ea38fb3661d4d38b3260af8ae4e7"
 
@@ -6639,6 +6748,10 @@ loglevelnext@^1.0.1:
     es6-symbol "^3.1.1"
     object.assign "^4.1.0"
 
+long@4.0.0:
+  version "4.0.0"
+  resolved "https://registry.yarnpkg.com/long/-/long-4.0.0.tgz#9a7b71cfb7d361a194ea555241c92f7468d5bf28"
+
 long@^3.2.0:
   version "3.2.0"
   resolved "https://registry.yarnpkg.com/long/-/long-3.2.0.tgz#d821b7138ca1cb581c172990ef14db200b5c474b"
@@ -6648,10 +6761,10 @@ longest@^1.0.1:
   resolved "https://registry.yarnpkg.com/longest/-/longest-1.0.1.tgz#30a0b2da38f73770e8294a0d22e6625ed77d0097"
 
 loose-envify@^1.0.0, loose-envify@^1.1.0, loose-envify@^1.3.1:
-  version "1.3.1"
-  resolved "https://registry.yarnpkg.com/loose-envify/-/loose-envify-1.3.1.tgz#d1a8ad33fa9ce0e713d65fdd0ac8b748d478c848"
+  version "1.4.0"
+  resolved "https://registry.yarnpkg.com/loose-envify/-/loose-envify-1.4.0.tgz#71ee51fa7be4caec1a63839f7e682d8132d30caf"
   dependencies:
-    js-tokens "^3.0.0"
+    js-tokens "^3.0.0 || ^4.0.0"
 
 loud-rejection@^1.0.0, loud-rejection@^1.6.0:
   version "1.6.0"
@@ -6752,14 +6865,14 @@ media-typer@0.3.0:
   resolved "https://registry.yarnpkg.com/media-typer/-/media-typer-0.3.0.tgz#8710d7af0aa626f8fffa1ce00168545263255748"
 
 mem-fs-editor@^4.0.0:
-  version "4.0.2"
-  resolved "https://registry.yarnpkg.com/mem-fs-editor/-/mem-fs-editor-4.0.2.tgz#55a79b1e824da631254c4c95ba6366602c77af90"
+  version "4.0.3"
+  resolved "https://registry.yarnpkg.com/mem-fs-editor/-/mem-fs-editor-4.0.3.tgz#d282a0c4e0d796e9eff9d75661f25f68f389af53"
   dependencies:
     commondir "^1.0.1"
-    deep-extend "^0.5.1"
+    deep-extend "^0.6.0"
     ejs "^2.5.9"
     glob "^7.0.3"
-    globby "^8.0.0"
+    globby "^7.1.1"
     isbinaryfile "^3.0.2"
     mkdirp "^0.5.0"
     multimatch "^2.0.0"
@@ -6817,7 +6930,7 @@ merge2@^1.2.1:
   version "1.2.2"
   resolved "https://registry.yarnpkg.com/merge2/-/merge2-1.2.2.tgz#03212e3da8d86c4d8523cebd6318193414f94e34"
 
-merge@^1.1.3:
+merge@^1.2.0:
   version "1.2.0"
   resolved "https://registry.yarnpkg.com/merge/-/merge-1.2.0.tgz#7531e39d4949c281a66b8c5a6e0265e8b05894da"
 
@@ -6886,15 +6999,15 @@ miller-rabin@^4.0.0:
     bn.js "^4.0.0"
     brorand "^1.0.1"
 
-"mime-db@>= 1.33.0 < 2", mime-db@~1.33.0:
-  version "1.33.0"
-  resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.33.0.tgz#a3492050a5cb9b63450541e39d9788d2272783db"
+"mime-db@>= 1.34.0 < 2", mime-db@~1.35.0:
+  version "1.35.0"
+  resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.35.0.tgz#0569d657466491283709663ad379a99b90d9ab47"
 
 mime-types@^2.1.12, mime-types@~2.1.17, mime-types@~2.1.18, mime-types@~2.1.7:
-  version "2.1.18"
-  resolved "https://registry.yarnpkg.com/mime-types/-/mime-types-2.1.18.tgz#6f323f60a83d11146f831ff11fd66e2fe5503bb8"
+  version "2.1.19"
+  resolved "https://registry.yarnpkg.com/mime-types/-/mime-types-2.1.19.tgz#71e464537a7ef81c15f2db9d97e913fc0ff606f0"
   dependencies:
-    mime-db "~1.33.0"
+    mime-db "~1.35.0"
 
 mime@1.3.x:
   version "1.3.6"
@@ -6917,8 +7030,8 @@ mimic-fn@^1.0.0:
   resolved "https://registry.yarnpkg.com/mimic-fn/-/mimic-fn-1.2.0.tgz#820c86a39334640e99516928bd03fca88057d022"
 
 mimic-response@^1.0.0:
-  version "1.0.0"
-  resolved "https://registry.yarnpkg.com/mimic-response/-/mimic-response-1.0.0.tgz#df3d3652a73fded6b9b0b24146e6fd052353458e"
+  version "1.0.1"
+  resolved "https://registry.yarnpkg.com/mimic-response/-/mimic-response-1.0.1.tgz#4923538878eef42063cb8a3e3b0798781487ab1b"
 
 min-document@^2.19.0:
   version "2.19.0"
@@ -6926,7 +7039,7 @@ min-document@^2.19.0:
   dependencies:
     dom-walk "^0.1.0"
 
-minimalistic-assert@^1.0.0:
+minimalistic-assert@^1.0.0, minimalistic-assert@^1.0.1:
   version "1.0.1"
   resolved "https://registry.yarnpkg.com/minimalistic-assert/-/minimalistic-assert-1.0.1.tgz#2e194de044626d4a10e7f7fbc00ce73e83e4d5c7"
 
@@ -7014,9 +7127,13 @@ mkdirp@0.5.1, mkdirp@0.5.x, mkdirp@0.x.x, "mkdirp@>=0.5 0", mkdirp@^0.5.0, mkdir
   dependencies:
     minimist "0.0.8"
 
-moment@^2.17.1, moment@^2.18.1:
-  version "2.22.1"
-  resolved "https://registry.yarnpkg.com/moment/-/moment-2.22.1.tgz#529a2e9bf973f259c9643d237fda84de3a26e8ad"
+moment@^2.18.1, moment@^2.19.1:
+  version "2.22.2"
+  resolved "https://registry.yarnpkg.com/moment/-/moment-2.22.2.tgz#3c257f9839fc0e93ff53149632239eb90783ff66"
+
+moo@^0.4.3:
+  version "0.4.3"
+  resolved "https://registry.yarnpkg.com/moo/-/moo-0.4.3.tgz#3f847a26f31cf625a956a87f2b10fbc013bfd10e"
 
 move-concurrently@^1.0.1:
   version "1.0.1"
@@ -7066,15 +7183,14 @@ nan@^2.10.0, nan@^2.9.2:
   resolved "https://registry.yarnpkg.com/nan/-/nan-2.10.0.tgz#96d0cd610ebd58d4b4de9cc0c6828cda99c7548f"
 
 nanomatch@^1.2.1, nanomatch@^1.2.9:
-  version "1.2.9"
-  resolved "https://registry.yarnpkg.com/nanomatch/-/nanomatch-1.2.9.tgz#879f7150cb2dab7a471259066c104eee6e0fa7c2"
+  version "1.2.13"
+  resolved "https://registry.yarnpkg.com/nanomatch/-/nanomatch-1.2.13.tgz#b87a8aa4fc0de8fe6be88895b38983ff265bd119"
   dependencies:
     arr-diff "^4.0.0"
     array-unique "^0.3.2"
     define-property "^2.0.2"
     extend-shallow "^3.0.2"
     fragment-cache "^0.2.1"
-    is-odd "^2.0.0"
     is-windows "^1.0.2"
     kind-of "^6.0.2"
     object.pick "^1.3.0"
@@ -7090,7 +7206,17 @@ ncp@0.4.x:
   version "0.4.2"
   resolved "https://registry.yarnpkg.com/ncp/-/ncp-0.4.2.tgz#abcc6cbd3ec2ed2a729ff6e7c1fa8f01784a8574"
 
-needle@^2.2.0:
+nearley@^2.7.10:
+  version "2.15.0"
+  resolved "https://registry.yarnpkg.com/nearley/-/nearley-2.15.0.tgz#d1ff5406a58064615fe6eafb429cf06fbb1b7eab"
+  dependencies:
+    moo "^0.4.3"
+    nomnom "~1.6.2"
+    railroad-diagrams "^1.0.0"
+    randexp "0.4.6"
+    semver "^5.4.1"
+
+needle@^2.2.1:
   version "2.2.1"
   resolved "https://registry.yarnpkg.com/needle/-/needle-2.2.1.tgz#b5e325bd3aae8c2678902fa296f729455d1d3a7d"
   dependencies:
@@ -7142,18 +7268,17 @@ node-forge@0.7.5:
   resolved "https://registry.yarnpkg.com/node-forge/-/node-forge-0.7.5.tgz#6c152c345ce11c52f465c2abd957e8639cd674df"
 
 node-gyp@^3.3.1:
-  version "3.6.2"
-  resolved "https://registry.yarnpkg.com/node-gyp/-/node-gyp-3.6.2.tgz#9bfbe54562286284838e750eac05295853fa1c60"
+  version "3.7.0"
+  resolved "https://registry.yarnpkg.com/node-gyp/-/node-gyp-3.7.0.tgz#789478e8f6c45e277aa014f3e28f958f286f9203"
   dependencies:
     fstream "^1.0.0"
     glob "^7.0.3"
     graceful-fs "^4.1.2"
-    minimatch "^3.0.2"
     mkdirp "^0.5.0"
     nopt "2 || 3"
     npmlog "0 || 1 || 2 || 3 || 4"
     osenv "0"
-    request "2"
+    request ">=2.9.0 <2.82.0"
     rimraf "2"
     semver "~5.3.0"
     tar "^2.0.0"
@@ -7201,23 +7326,23 @@ node-notifier@^5.0.2:
     which "^1.3.0"
 
 node-pre-gyp@^0.10.0:
-  version "0.10.0"
-  resolved "https://registry.yarnpkg.com/node-pre-gyp/-/node-pre-gyp-0.10.0.tgz#6e4ef5bb5c5203c6552448828c852c40111aac46"
+  version "0.10.3"
+  resolved "https://registry.yarnpkg.com/node-pre-gyp/-/node-pre-gyp-0.10.3.tgz#3070040716afdc778747b61b6887bf78880b80fc"
   dependencies:
     detect-libc "^1.0.2"
     mkdirp "^0.5.1"
-    needle "^2.2.0"
+    needle "^2.2.1"
     nopt "^4.0.1"
     npm-packlist "^1.1.6"
     npmlog "^4.0.2"
-    rc "^1.1.7"
+    rc "^1.2.7"
     rimraf "^2.6.1"
     semver "^5.3.0"
     tar "^4"
 
 node-sass@^4.7.2:
-  version "4.9.0"
-  resolved "https://registry.yarnpkg.com/node-sass/-/node-sass-4.9.0.tgz#d1b8aa855d98ed684d6848db929a20771cc2ae52"
+  version "4.9.2"
+  resolved "https://registry.yarnpkg.com/node-sass/-/node-sass-4.9.2.tgz#5e63fe6bd0f2ae3ac9d6c14ede8620e2b8bdb437"
   dependencies:
     async-foreach "^0.1.3"
     chalk "^1.1.1"
@@ -7234,7 +7359,7 @@ node-sass@^4.7.2:
     nan "^2.10.0"
     node-gyp "^3.3.1"
     npmlog "^4.0.0"
-    request "~2.79.0"
+    request "2.87.0"
     sass-graph "^2.2.4"
     stdout-stream "^1.4.0"
     "true-case-path" "^1.0.2"
@@ -7250,6 +7375,13 @@ nomnom@^1.8.1:
     chalk "~0.4.0"
     underscore "~1.6.0"
 
+nomnom@~1.6.2:
+  version "1.6.2"
+  resolved "https://registry.yarnpkg.com/nomnom/-/nomnom-1.6.2.tgz#84a66a260174408fc5b77a18f888eccc44fb6971"
+  dependencies:
+    colors "0.5.x"
+    underscore "~1.4.4"
+
 "nopt@2 || 3":
   version "3.0.6"
   resolved "https://registry.yarnpkg.com/nopt/-/nopt-3.0.6.tgz#c6465dbf08abcd4db359317f79ac68a646b28ff9"
@@ -7304,8 +7436,8 @@ npm-bundled@^1.0.1:
   resolved "https://registry.yarnpkg.com/npm-bundled/-/npm-bundled-1.0.3.tgz#7e71703d973af3370a9591bafe3a63aca0be2308"
 
 npm-packlist@^1.1.6:
-  version "1.1.10"
-  resolved "https://registry.yarnpkg.com/npm-packlist/-/npm-packlist-1.1.10.tgz#1039db9e985727e464df066f4cf0ab6ef85c398a"
+  version "1.1.11"
+  resolved "https://registry.yarnpkg.com/npm-packlist/-/npm-packlist-1.1.11.tgz#84e8c683cbe7867d34b1d357d893ce29e28a02de"
   dependencies:
     ignore-walk "^3.0.1"
     npm-bundled "^1.0.1"
@@ -7367,13 +7499,17 @@ object-hash@^1.1.4:
   version "1.3.0"
   resolved "https://registry.yarnpkg.com/object-hash/-/object-hash-1.3.0.tgz#76d9ba6ff113cf8efc0d996102851fe6723963e2"
 
+object-inspect@^1.6.0:
+  version "1.6.0"
+  resolved "https://registry.yarnpkg.com/object-inspect/-/object-inspect-1.6.0.tgz#c70b6cbf72f274aab4c34c0c82f5167bf82cf15b"
+
 object-is@^1.0.1:
   version "1.0.1"
   resolved "https://registry.yarnpkg.com/object-is/-/object-is-1.0.1.tgz#0aa60ec9989a0b3ed795cf4d06f62cf1ad6539b6"
 
 object-keys@^1.0.11, object-keys@^1.0.8:
-  version "1.0.11"
-  resolved "https://registry.yarnpkg.com/object-keys/-/object-keys-1.0.11.tgz#c54601778ad560f1142ce0e01bcca8b56d13426d"
+  version "1.0.12"
+  resolved "https://registry.yarnpkg.com/object-keys/-/object-keys-1.0.12.tgz#09c53855377575310cca62f55bb334abff7b3ed2"
 
 object-visit@^1.0.0:
   version "1.0.1"
@@ -7381,7 +7517,7 @@ object-visit@^1.0.0:
   dependencies:
     isobject "^3.0.0"
 
-object.assign@^4.0.4, object.assign@^4.1.0:
+object.assign@^4.1.0:
   version "4.1.0"
   resolved "https://registry.yarnpkg.com/object.assign/-/object.assign-4.1.0.tgz#968bf1100d7956bb3ca086f006f846b3bc4008da"
   dependencies:
@@ -7399,6 +7535,15 @@ object.entries@^1.0.4:
     function-bind "^1.1.0"
     has "^1.0.1"
 
+object.fromentries@^1.0.0:
+  version "1.0.0"
+  resolved "https://registry.yarnpkg.com/object.fromentries/-/object.fromentries-1.0.0.tgz#e90ec27445ec6e37f48be9af9077d9aa8bef0d40"
+  dependencies:
+    define-properties "^1.1.2"
+    es-abstract "^1.11.0"
+    function-bind "^1.1.1"
+    has "^1.0.1"
+
 object.getownpropertydescriptors@^2.0.3:
   version "2.0.3"
   resolved "https://registry.yarnpkg.com/object.getownpropertydescriptors/-/object.getownpropertydescriptors-2.0.3.tgz#8758c846f5b407adab0f236e0986f14b051caa16"
@@ -7498,16 +7643,16 @@ ora@^0.2.3:
     object-assign "^4.0.1"
 
 original@>=0.0.5:
-  version "1.0.1"
-  resolved "https://registry.yarnpkg.com/original/-/original-1.0.1.tgz#b0a53ff42ba997a8c9cd1fb5daaeb42b9d693190"
+  version "1.0.2"
+  resolved "https://registry.yarnpkg.com/original/-/original-1.0.2.tgz#e442a61cffe1c5fd20a65f3261c26663b303f25f"
   dependencies:
-    url-parse "~1.4.0"
+    url-parse "^1.4.3"
 
 os-browserify@^0.3.0:
   version "0.3.0"
   resolved "https://registry.yarnpkg.com/os-browserify/-/os-browserify-0.3.0.tgz#854373c7f5c2315914fc9bfc6bd8238fdda1ec27"
 
-os-homedir@^1.0.0, os-homedir@^1.0.1:
+os-homedir@^1.0.0:
   version "1.0.2"
   resolved "https://registry.yarnpkg.com/os-homedir/-/os-homedir-1.0.2.tgz#ffbc4988336e0e833de0c168c7ef152121aa7fb3"
 
@@ -7563,8 +7708,8 @@ p-lazy@^1.0.0:
   resolved "https://registry.yarnpkg.com/p-lazy/-/p-lazy-1.0.0.tgz#ec53c802f2ee3ac28f166cc82d0b2b02de27a835"
 
 p-limit@^1.1.0:
-  version "1.2.0"
-  resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-1.2.0.tgz#0e92b6bedcb59f022c13d0f1949dc82d15909f1c"
+  version "1.3.0"
+  resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-1.3.0.tgz#b86bd5f0c25690911c7590fcbfc2010d54b3ccb8"
   dependencies:
     p-try "^1.0.0"
 
@@ -7656,6 +7801,12 @@ parse5@^1.5.1:
   version "1.5.1"
   resolved "https://registry.yarnpkg.com/parse5/-/parse5-1.5.1.tgz#9b7f3b0de32be78dc2401b17573ccaf0f6f59d94"
 
+parse5@^3.0.1:
+  version "3.0.3"
+  resolved "https://registry.yarnpkg.com/parse5/-/parse5-3.0.3.tgz#042f792ffdd36851551cf4e9e066b3874ab45b5c"
+  dependencies:
+    "@types/node" "*"
+
 parseurl@~1.3.2:
   version "1.3.2"
   resolved "https://registry.yarnpkg.com/parseurl/-/parseurl-1.3.2.tgz#fc289d4ed8993119460c156253262cdc8de65bf3"
@@ -7695,8 +7846,8 @@ path-key@^2.0.0, path-key@^2.0.1:
   resolved "https://registry.yarnpkg.com/path-key/-/path-key-2.0.1.tgz#411cadb574c5a140d3a4b1910d40d80cc9f40b40"
 
 path-parse@^1.0.5:
-  version "1.0.5"
-  resolved "https://registry.yarnpkg.com/path-parse/-/path-parse-1.0.5.tgz#3c1adf871ea9cd6c9431b6ea2bd74a0ff055c4c1"
+  version "1.0.6"
+  resolved "https://registry.yarnpkg.com/path-parse/-/path-parse-1.0.6.tgz#d62dbb5679405d72c4737ec58600e9ddcf06d24c"
 
 path-to-regexp@0.1.7:
   version "0.1.7"
@@ -7732,10 +7883,40 @@ pbkdf2@^3.0.3:
     safe-buffer "^5.0.1"
     sha.js "^2.4.8"
 
+pend@~1.2.0:
+  version "1.2.0"
+  resolved "https://registry.yarnpkg.com/pend/-/pend-1.2.0.tgz#7a57eb550a6783f9115331fcf4663d5c8e007a50"
+
+performance-now@^0.2.0:
+  version "0.2.0"
+  resolved "https://registry.yarnpkg.com/performance-now/-/performance-now-0.2.0.tgz#33ef30c5c77d4ea21c5a53869d91b56d8f2555e5"
+
 performance-now@^2.1.0:
   version "2.1.0"
   resolved "https://registry.yarnpkg.com/performance-now/-/performance-now-2.1.0.tgz#6309f4e0e5fa913ec1c69307ae364b4b377c9e7b"
 
+phantom@~4.0.1:
+  version "4.0.12"
+  resolved "https://registry.yarnpkg.com/phantom/-/phantom-4.0.12.tgz#78d18cf3f2a76fea4909f6160fcabf2742d7dbf0"
+  dependencies:
+    phantomjs-prebuilt "^2.1.16"
+    split "^1.0.1"
+    winston "^2.4.0"
+
+phantomjs-prebuilt@^2.1.16, phantomjs-prebuilt@~2.1.7:
+  version "2.1.16"
+  resolved "https://registry.yarnpkg.com/phantomjs-prebuilt/-/phantomjs-prebuilt-2.1.16.tgz#efd212a4a3966d3647684ea8ba788549be2aefef"
+  dependencies:
+    es6-promise "^4.0.3"
+    extract-zip "^1.6.5"
+    fs-extra "^1.0.0"
+    hasha "^2.2.0"
+    kew "^0.7.0"
+    progress "^1.1.8"
+    request "^2.81.0"
+    request-progress "^2.0.1"
+    which "^1.2.10"
+
 pify@^2.0.0, pify@^2.3.0:
   version "2.3.0"
   resolved "https://registry.yarnpkg.com/pify/-/pify-2.3.0.tgz#ed141a6ac043a849ea588498e7dca8b15330e90c"
@@ -7788,9 +7969,13 @@ pluralize@^7.0.0:
   version "7.0.0"
   resolved "https://registry.yarnpkg.com/pluralize/-/pluralize-7.0.0.tgz#298b89df8b93b0221dbf421ad2b1b1ea23fc6777"
 
+popper.js@^1.12.5:
+  version "1.14.4"
+  resolved "https://registry.yarnpkg.com/popper.js/-/popper.js-1.14.4.tgz#8eec1d8ff02a5a3a152dd43414a15c7b79fd69b6"
+
 portfinder@^1.0.9:
-  version "1.0.13"
-  resolved "https://registry.yarnpkg.com/portfinder/-/portfinder-1.0.13.tgz#bb32ecd87c27104ae6ee44b5a3ccbf0ebb1aede9"
+  version "1.0.16"
+  resolved "https://registry.yarnpkg.com/portfinder/-/portfinder-1.0.16.tgz#a6a68be9c352bc66c1a4c17a261f661f3facaf52"
   dependencies:
     async "^1.5.2"
     debug "^2.2.0"
@@ -7866,36 +8051,20 @@ postcss-flexbugs-fixes@^3.2.0:
   dependencies:
     postcss "^6.0.1"
 
-postcss-load-config@^1.2.0:
-  version "1.2.0"
-  resolved "https://registry.yarnpkg.com/postcss-load-config/-/postcss-load-config-1.2.0.tgz#539e9afc9ddc8620121ebf9d8c3673e0ce50d28a"
-  dependencies:
-    cosmiconfig "^2.1.0"
-    object-assign "^4.1.0"
-    postcss-load-options "^1.2.0"
-    postcss-load-plugins "^2.3.0"
-
-postcss-load-options@^1.2.0:
-  version "1.2.0"
-  resolved "https://registry.yarnpkg.com/postcss-load-options/-/postcss-load-options-1.2.0.tgz#b098b1559ddac2df04bc0bb375f99a5cfe2b6d8c"
-  dependencies:
-    cosmiconfig "^2.1.0"
-    object-assign "^4.1.0"
-
-postcss-load-plugins@^2.3.0:
-  version "2.3.0"
-  resolved "https://registry.yarnpkg.com/postcss-load-plugins/-/postcss-load-plugins-2.3.0.tgz#745768116599aca2f009fad426b00175049d8d92"
+postcss-load-config@^2.0.0:
+  version "2.0.0"
+  resolved "https://registry.yarnpkg.com/postcss-load-config/-/postcss-load-config-2.0.0.tgz#f1312ddbf5912cd747177083c5ef7a19d62ee484"
   dependencies:
-    cosmiconfig "^2.1.1"
-    object-assign "^4.1.0"
+    cosmiconfig "^4.0.0"
+    import-cwd "^2.0.0"
 
 postcss-loader@^2.1.2:
-  version "2.1.5"
-  resolved "https://registry.yarnpkg.com/postcss-loader/-/postcss-loader-2.1.5.tgz#3c6336ee641c8f95138172533ae461a83595e788"
+  version "2.1.6"
+  resolved "https://registry.yarnpkg.com/postcss-loader/-/postcss-loader-2.1.6.tgz#1d7dd7b17c6ba234b9bed5af13e0bea40a42d740"
   dependencies:
     loader-utils "^1.1.0"
     postcss "^6.0.0"
-    postcss-load-config "^1.2.0"
+    postcss-load-config "^2.0.0"
     schema-utils "^0.4.0"
 
 postcss-merge-idents@^2.1.5:
@@ -8088,8 +8257,8 @@ postcss@^5.0.10, postcss@^5.0.11, postcss@^5.0.12, postcss@^5.0.13, postcss@^5.0
     supports-color "^3.2.3"
 
 postcss@^6.0.0, postcss@^6.0.1, postcss@^6.0.17:
-  version "6.0.22"
-  resolved "https://registry.yarnpkg.com/postcss/-/postcss-6.0.22.tgz#e23b78314905c3b90cbd61702121e7a78848f2a3"
+  version "6.0.23"
+  resolved "https://registry.yarnpkg.com/postcss/-/postcss-6.0.23.tgz#61c82cc328ac60e677645f979054eb98bc0e3324"
   dependencies:
     chalk "^2.4.1"
     source-map "^0.6.1"
@@ -8103,8 +8272,8 @@ posthtml-parser@^0.2.0, posthtml-parser@^0.2.1:
     isobject "^2.1.0"
 
 posthtml-rename-id@^1.0:
-  version "1.0.7"
-  resolved "https://registry.yarnpkg.com/posthtml-rename-id/-/posthtml-rename-id-1.0.7.tgz#190e9f341a8bbbda31e47e932f1d9b71b9f73593"
+  version "1.0.8"
+  resolved "https://registry.yarnpkg.com/posthtml-rename-id/-/posthtml-rename-id-1.0.8.tgz#dece77bf64e3c94417603e497c8537977db131bc"
   dependencies:
     escape-string-regexp "1.0.5"
 
@@ -8149,8 +8318,8 @@ prettier@1.10.2:
   resolved "https://registry.yarnpkg.com/prettier/-/prettier-1.10.2.tgz#1af8356d1842276a99a5b5529c82dd9e9ad3cc93"
 
 prettier@^1.12.1:
-  version "1.13.2"
-  resolved "https://registry.yarnpkg.com/prettier/-/prettier-1.13.2.tgz#412b87bc561cb11074d2877a33a38f78c2303cda"
+  version "1.14.0"
+  resolved "https://registry.yarnpkg.com/prettier/-/prettier-1.14.0.tgz#847c235522035fd988100f1f43cf20a7d24f9372"
 
 pretty-bytes@^4.0.2:
   version "4.0.2"
@@ -8186,6 +8355,10 @@ process@~0.5.1:
   version "0.5.2"
   resolved "https://registry.yarnpkg.com/process/-/process-0.5.2.tgz#1638d8a8e34c2f440a91db95ab9aeb677fc185cf"
 
+progress@^1.1.8:
+  version "1.1.8"
+  resolved "https://registry.yarnpkg.com/progress/-/progress-1.1.8.tgz#e260c78f6161cdd9b0e56cc3e0a85de17c7a57be"
+
 progress@^2.0.0:
   version "2.0.0"
   resolved "https://registry.yarnpkg.com/progress/-/progress-2.0.0.tgz#8a1be366bf8fc23db2bd23f10c6fe920b4389d1f"
@@ -8225,20 +8398,19 @@ prop-types-extra@^1.0.1:
     react-is "^16.3.2"
     warning "^3.0.0"
 
-prop-types@^15.5.10, prop-types@^15.5.4, prop-types@^15.5.7, prop-types@^15.5.8, prop-types@^15.5.9, prop-types@^15.6.0, prop-types@^15.6.1:
-  version "15.6.1"
-  resolved "https://registry.yarnpkg.com/prop-types/-/prop-types-15.6.1.tgz#36644453564255ddda391191fb3a125cbdf654ca"
+prop-types@^15.5.10, prop-types@^15.5.4, prop-types@^15.5.7, prop-types@^15.5.8, prop-types@^15.5.9, prop-types@^15.6.0, prop-types@^15.6.1, prop-types@^15.6.2:
+  version "15.6.2"
+  resolved "https://registry.yarnpkg.com/prop-types/-/prop-types-15.6.2.tgz#05d5ca77b4453e985d60fc7ff8c859094a497102"
   dependencies:
-    fbjs "^0.8.16"
     loose-envify "^1.3.1"
     object-assign "^4.1.1"
 
 proxy-addr@~2.0.3:
-  version "2.0.3"
-  resolved "https://registry.yarnpkg.com/proxy-addr/-/proxy-addr-2.0.3.tgz#355f262505a621646b3130a728eb647e22055341"
+  version "2.0.4"
+  resolved "https://registry.yarnpkg.com/proxy-addr/-/proxy-addr-2.0.4.tgz#ecfc733bf22ff8c6f407fa275327b9ab67e48b93"
   dependencies:
     forwarded "~0.1.2"
-    ipaddr.js "1.6.0"
+    ipaddr.js "1.8.0"
 
 prr@~1.0.1:
   version "1.0.1"
@@ -8248,6 +8420,10 @@ pseudomap@^1.0.2:
   version "1.0.2"
   resolved "https://registry.yarnpkg.com/pseudomap/-/pseudomap-1.0.2.tgz#f052a28da70e618917ef0a8ac34c1ae5a68286b3"
 
+psl@^1.1.24:
+  version "1.1.29"
+  resolved "https://registry.yarnpkg.com/psl/-/psl-1.1.29.tgz#60f580d360170bb722a797cc704411e6da850c67"
+
 public-encrypt@^4.0.0:
   version "4.0.2"
   resolved "https://registry.yarnpkg.com/public-encrypt/-/public-encrypt-4.0.2.tgz#46eb9107206bf73489f8b85b69d91334c6610994"
@@ -8297,9 +8473,9 @@ qs@^6.5.1, qs@~6.5.1:
   version "6.5.2"
   resolved "https://registry.yarnpkg.com/qs/-/qs-6.5.2.tgz#cb3ae806e8740444584ef154ce8ee98d403f3e36"
 
-qs@~6.3.0:
-  version "6.3.2"
-  resolved "https://registry.yarnpkg.com/qs/-/qs-6.3.2.tgz#e75bd5f6e268122a2a0e0bda630b2550c166502c"
+qs@~6.4.0:
+  version "6.4.0"
+  resolved "https://registry.yarnpkg.com/qs/-/qs-6.4.0.tgz#13e26d28ad6b0ffaa91312cd3bf708ed351e7233"
 
 query-string@^4.1.0, query-string@^4.3.2:
   version "4.3.4"
@@ -8337,10 +8513,27 @@ radium@^0.19.0:
     inline-style-prefixer "^2.0.5"
     prop-types "^15.5.8"
 
+raf@^3.4.0:
+  version "3.4.0"
+  resolved "https://registry.yarnpkg.com/raf/-/raf-3.4.0.tgz#a28876881b4bc2ca9117d4138163ddb80f781575"
+  dependencies:
+    performance-now "^2.1.0"
+
+railroad-diagrams@^1.0.0:
+  version "1.0.0"
+  resolved "https://registry.yarnpkg.com/railroad-diagrams/-/railroad-diagrams-1.0.0.tgz#eb7e6267548ddedfb899c1b90e57374559cddb7e"
+
 ramda@0.21.0:
   version "0.21.0"
   resolved "https://registry.yarnpkg.com/ramda/-/ramda-0.21.0.tgz#a001abedb3ff61077d4ff1d577d44de77e8d0a35"
 
+randexp@0.4.6:
+  version "0.4.6"
+  resolved "https://registry.yarnpkg.com/randexp/-/randexp-0.4.6.tgz#e986ad5e5e31dae13ddd6f7b3019aa7c87f60ca3"
+  dependencies:
+    discontinuous-range "1.0.0"
+    ret "~0.1.10"
+
 randomatic@^3.0.0:
   version "3.0.0"
   resolved "https://registry.yarnpkg.com/randomatic/-/randomatic-3.0.0.tgz#d35490030eb4f7578de292ce6dfb04a91a128923"
@@ -8381,7 +8574,7 @@ raw-body@2.3.2:
     iconv-lite "0.4.19"
     unpipe "1.0.0"
 
-rc@^1.1.7:
+rc@^1.2.7:
   version "1.2.8"
   resolved "https://registry.yarnpkg.com/rc/-/rc-1.2.8.tgz#cd924bf5200a075b83c188cd6b9e211b7fc0d3ed"
   dependencies:
@@ -8390,10 +8583,6 @@ rc@^1.1.7:
     minimist "^1.2.0"
     strip-json-comments "~2.0.1"
 
-react-addons-test-utils@~15.3.2:
-  version "15.3.2"
-  resolved "https://registry.yarnpkg.com/react-addons-test-utils/-/react-addons-test-utils-15.3.2.tgz#c09a44f583425a4a9c1b38444d7a6c3e6f0f41f6"
-
 react-bootstrap@^0.32.1:
   version "0.32.1"
   resolved "https://registry.yarnpkg.com/react-bootstrap/-/react-bootstrap-0.32.1.tgz#60624c1b48a39d773ef6cce6421a4f33ecc166bb"
@@ -8411,25 +8600,23 @@ react-bootstrap@^0.32.1:
     uncontrollable "^4.1.0"
     warning "^3.0.0"
 
-react-click-outside@^2.3.1:
-  version "2.3.1"
-  resolved "https://registry.yarnpkg.com/react-click-outside/-/react-click-outside-2.3.1.tgz#318737ebdf081a4a3bcd46825663674cbe9836eb"
+react-click-outside@^3.0.1:
+  version "3.0.1"
+  resolved "https://registry.yarnpkg.com/react-click-outside/-/react-click-outside-3.0.1.tgz#6e77e84d2f17afaaac26dbad743cbbf909f5e24c"
   dependencies:
-    hoist-non-react-statics "^1.2.0"
+    hoist-non-react-statics "^2.1.1"
 
-react-datepicker@^0.48.0:
-  version "0.48.0"
-  resolved "https://registry.yarnpkg.com/react-datepicker/-/react-datepicker-0.48.0.tgz#bf8ea4283e3f8e0737be3ceb808a94a8d4231d49"
+react-datepicker@^0.61.0:
+  version "0.61.0"
+  resolved "https://registry.yarnpkg.com/react-datepicker/-/react-datepicker-0.61.0.tgz#ac1e7bf18bf88bdf22548a3c4e13a35710bb40eb"
   dependencies:
     classnames "^2.2.5"
-    moment "^2.17.1"
-    prop-types "^15.5.8"
-    react-onclickoutside "^6.1.1"
-    tether "^1.4.0"
-
-react-deep-force-update@^2.1.1:
-  version "2.1.1"
-  resolved "https://registry.yarnpkg.com/react-deep-force-update/-/react-deep-force-update-2.1.1.tgz#8ea4263cd6455a050b37445b3f08fd839d86e909"
+    eslint-plugin-import "^2.8.0"
+    eslint-plugin-node "^5.2.1"
+    moment "^2.19.1"
+    prop-types "^15.6.0"
+    react-onclickoutside "^6.6.3"
+    react-popper "^0.7.4"
 
 react-dev-utils@^5.0.0:
   version "5.0.1"
@@ -8472,18 +8659,18 @@ react-dnd@^2.5.4:
     prop-types "^15.5.10"
 
 react-docgen@^3.0.0-beta11:
-  version "3.0.0-beta9"
-  resolved "https://registry.yarnpkg.com/react-docgen/-/react-docgen-3.0.0-beta9.tgz#6be987e640786ecb10ce2dd22157a022c8285e95"
+  version "3.0.0-rc.0"
+  resolved "https://registry.yarnpkg.com/react-docgen/-/react-docgen-3.0.0-rc.0.tgz#6452afc31649d651c9bafce9b94a470581530b76"
   dependencies:
+    "@babel/parser" "7.0.0-beta.53"
     async "^2.1.4"
     babel-runtime "^6.9.2"
-    babylon "7.0.0-beta.31"
     commander "^2.9.0"
     doctrine "^2.0.0"
     node-dir "^0.1.10"
-    recast "^0.12.6"
+    recast "^0.15.0"
 
-react-dom@15.6.2, react-dom@^15.6.2:
+react-dom@15.6.2:
   version "15.6.2"
   resolved "https://registry.yarnpkg.com/react-dom/-/react-dom-15.6.2.tgz#41cfadf693b757faf2708443a1d1fd5a02bef730"
   dependencies:
@@ -8492,20 +8679,20 @@ react-dom@15.6.2, react-dom@^15.6.2:
     object-assign "^4.1.0"
     prop-types "^15.5.10"
 
-react-dom@16.x.x:
-  version "16.4.0"
-  resolved "https://registry.yarnpkg.com/react-dom/-/react-dom-16.4.0.tgz#099f067dd5827ce36a29eaf9a6cdc7cbf6216b1e"
+react-dom@16.x.x, react-dom@^16.4.2:
+  version "16.4.2"
+  resolved "https://registry.yarnpkg.com/react-dom/-/react-dom-16.4.2.tgz#4afed569689f2c561d2b8da0b819669c38a0bda4"
   dependencies:
     fbjs "^0.8.16"
     loose-envify "^1.1.0"
     object-assign "^4.1.1"
     prop-types "^15.6.0"
 
-react-dropzone@4.2.3:
-  version "4.2.3"
-  resolved "https://registry.yarnpkg.com/react-dropzone/-/react-dropzone-4.2.3.tgz#f7bc92aa5fe4253fdb1fd3792114d2d29b47119a"
+react-dropzone@4.3.0:
+  version "4.3.0"
+  resolved "https://registry.yarnpkg.com/react-dropzone/-/react-dropzone-4.3.0.tgz#facdd7db16509772633c9f5200621ac01aa6706f"
   dependencies:
-    attr-accept "^1.0.3"
+    attr-accept "^1.1.3"
     prop-types "^15.5.7"
 
 react-error-overlay@^4.0.0:
@@ -8521,19 +8708,20 @@ react-fuzzy@^0.5.2:
     fuse.js "^3.0.1"
     prop-types "^15.5.9"
 
-react-hot-loader@^3.1.3:
-  version "3.1.3"
-  resolved "https://registry.yarnpkg.com/react-hot-loader/-/react-hot-loader-3.1.3.tgz#6f92877326958c7cb0134b512474517869126082"
+react-hot-loader@^4.3.4:
+  version "4.3.4"
+  resolved "https://registry.yarnpkg.com/react-hot-loader/-/react-hot-loader-4.3.4.tgz#4f9bdd55bb20d77a6ae8931fa1c187e5f0ce6279"
   dependencies:
+    fast-levenshtein "^2.0.6"
     global "^4.3.0"
-    react-deep-force-update "^2.1.1"
-    react-proxy "^3.0.0-alpha.0"
-    redbox-react "^1.3.6"
-    source-map "^0.6.1"
+    hoist-non-react-statics "^2.5.0"
+    prop-types "^15.6.1"
+    react-lifecycles-compat "^3.0.4"
+    shallowequal "^1.0.2"
 
 react-html-attributes@^1.4.2:
-  version "1.4.2"
-  resolved "https://registry.yarnpkg.com/react-html-attributes/-/react-html-attributes-1.4.2.tgz#0d2ccf134fc79b2d3543837dc1591d32b7b903f9"
+  version "1.4.3"
+  resolved "https://registry.yarnpkg.com/react-html-attributes/-/react-html-attributes-1.4.3.tgz#8c36c35fce6b750938d286af428ed1da7625186e"
   dependencies:
     html-element-attributes "^1.0.0"
 
@@ -8547,7 +8735,7 @@ react-icons@^2.2.7:
   dependencies:
     react-icon-base "2.1.0"
 
-react-input-autosize@^2.1.2, react-input-autosize@^2.2.0:
+react-input-autosize@^2.1.2, react-input-autosize@^2.2.1:
   version "2.2.1"
   resolved "https://registry.yarnpkg.com/react-input-autosize/-/react-input-autosize-2.2.1.tgz#ec428fa15b1592994fb5f9aa15bb1eb6baf420f8"
   dependencies:
@@ -8560,24 +8748,24 @@ react-inspector@^2.2.2:
     babel-runtime "^6.26.0"
     is-dom "^1.0.9"
 
-react-is@^16.3.2:
-  version "16.4.0"
-  resolved "https://registry.yarnpkg.com/react-is/-/react-is-16.4.0.tgz#cc9fdc855ac34d2e7d9d2eb7059bbc240d35ffcf"
+react-is@^16.3.2, react-is@^16.4.2:
+  version "16.4.2"
+  resolved "https://registry.yarnpkg.com/react-is/-/react-is-16.4.2.tgz#84891b56c2b6d9efdee577cc83501dfc5ecead88"
 
-react-lifecycles-compat@^3.0.0:
+react-lifecycles-compat@^3.0.0, react-lifecycles-compat@^3.0.4:
   version "3.0.4"
   resolved "https://registry.yarnpkg.com/react-lifecycles-compat/-/react-lifecycles-compat-3.0.4.tgz#4f1a273afdfc8f3488a8c516bfda78f872352362"
 
 react-modal@^3.3.2:
-  version "3.4.4"
-  resolved "https://registry.yarnpkg.com/react-modal/-/react-modal-3.4.4.tgz#e9dde25e9e85a59c76831f2a2b468712a546aded"
+  version "3.5.1"
+  resolved "https://registry.yarnpkg.com/react-modal/-/react-modal-3.5.1.tgz#33d38527def90ea324848f7d63e53acc4468a451"
   dependencies:
     exenv "^1.2.0"
     prop-types "^15.5.10"
     react-lifecycles-compat "^3.0.0"
     warning "^3.0.0"
 
-react-onclickoutside@^6.1.1:
+react-onclickoutside@^6.6.3:
   version "6.7.1"
   resolved "https://registry.yarnpkg.com/react-onclickoutside/-/react-onclickoutside-6.7.1.tgz#6a5b5b8b4eae6b776259712c89c8a2b36b17be93"
 
@@ -8592,19 +8780,29 @@ react-overlays@^0.8.0:
     react-transition-group "^2.2.0"
     warning "^3.0.0"
 
+react-popper@^0.7.4:
+  version "0.7.5"
+  resolved "https://registry.yarnpkg.com/react-popper/-/react-popper-0.7.5.tgz#71c25946f291db381231281f6b95729e8b801596"
+  dependencies:
+    popper.js "^1.12.5"
+    prop-types "^15.5.10"
+
 react-prop-types@^0.4.0:
   version "0.4.0"
   resolved "https://registry.yarnpkg.com/react-prop-types/-/react-prop-types-0.4.0.tgz#f99b0bfb4006929c9af2051e7c1414a5c75b93d0"
   dependencies:
     warning "^3.0.0"
 
-react-proxy@^3.0.0-alpha.0:
-  version "3.0.0-alpha.1"
-  resolved "https://registry.yarnpkg.com/react-proxy/-/react-proxy-3.0.0-alpha.1.tgz#4400426bcfa80caa6724c7755695315209fa4b07"
+react-reconciler@^0.7.0:
+  version "0.7.0"
+  resolved "https://registry.yarnpkg.com/react-reconciler/-/react-reconciler-0.7.0.tgz#9614894103e5f138deeeb5eabaf3ee80eb1d026d"
   dependencies:
-    lodash "^4.6.1"
+    fbjs "^0.8.16"
+    loose-envify "^1.1.0"
+    object-assign "^4.1.1"
+    prop-types "^15.6.0"
 
-react-redux@^5.0.6:
+react-redux@^5.0.7:
   version "5.0.7"
   resolved "https://registry.yarnpkg.com/react-redux/-/react-redux-5.0.7.tgz#0dc1076d9afb4670f993ffaef44b8f8c1155a4c8"
   dependencies:
@@ -8630,7 +8828,7 @@ react-show-more-text@^1.0.3:
     prop-types "^15.6.0"
     react-truncate "^2.1.5"
 
-react-sortable@^1.2.0:
+react-sortable@^1.2.1:
   version "1.3.2"
   resolved "https://registry.yarnpkg.com/react-sortable/-/react-sortable-1.3.2.tgz#f964130df3d41f7e9551e422ca8049e5345b45cd"
   dependencies:
@@ -8638,11 +8836,12 @@ react-sortable@^1.2.0:
     react-dom "16.x.x"
 
 react-split-pane@^0.1.77:
-  version "0.1.77"
-  resolved "https://registry.yarnpkg.com/react-split-pane/-/react-split-pane-0.1.77.tgz#f0c8cd18d076bbac900248dcf6dbcec02d5340db"
+  version "0.1.82"
+  resolved "https://registry.yarnpkg.com/react-split-pane/-/react-split-pane-0.1.82.tgz#42fbb9fd4823f05e037de0dab3cd6cf9bf0cf4ea"
   dependencies:
     inline-style-prefixer "^3.0.6"
     prop-types "^15.5.10"
+    react-lifecycles-compat "^3.0.4"
     react-style-proptype "^3.0.0"
 
 react-style-proptype@^3.0.0:
@@ -8658,13 +8857,23 @@ react-test-renderer@^15.3.1:
     fbjs "^0.8.9"
     object-assign "^4.1.0"
 
-react-transition-group@^2.0.0, react-transition-group@^2.2.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"
+react-test-renderer@^16.0.0-0, react-test-renderer@^16.4.2:
+  version "16.4.2"
+  resolved "https://registry.yarnpkg.com/react-test-renderer/-/react-test-renderer-16.4.2.tgz#4e03eca9359bb3210d4373f7547d1364218ef74e"
+  dependencies:
+    fbjs "^0.8.16"
+    object-assign "^4.1.1"
+    prop-types "^15.6.0"
+    react-is "^16.4.2"
+
+react-transition-group@^2.0.0, react-transition-group@^2.2.0, react-transition-group@^2.4.0:
+  version "2.4.0"
+  resolved "https://registry.yarnpkg.com/react-transition-group/-/react-transition-group-2.4.0.tgz#1d9391fabfd82e016f26fabd1eec329dbd922b5a"
   dependencies:
     dom-helpers "^3.3.1"
     loose-envify "^1.3.1"
-    prop-types "^15.6.1"
+    prop-types "^15.6.2"
+    react-lifecycles-compat "^3.0.4"
 
 react-treebeard@^2.1.0:
   version "2.1.0"
@@ -8681,7 +8890,7 @@ react-truncate@^2.1.5:
   version "2.3.0"
   resolved "https://registry.yarnpkg.com/react-truncate/-/react-truncate-2.3.0.tgz#d469b355aff1f83ae9e0f2fed0d47dfd061e5d2e"
 
-react@15.6.2, react@^15.4.1, react@^15.6.2:
+react@15.6.2, react@^15.4.1:
   version "15.6.2"
   resolved "https://registry.yarnpkg.com/react/-/react-15.6.2.tgz#dba0434ab439cfe82f108f0f511663908179aa72"
   dependencies:
@@ -8691,9 +8900,9 @@ react@15.6.2, react@^15.4.1, react@^15.6.2:
     object-assign "^4.1.0"
     prop-types "^15.5.10"
 
-react@16.x.x:
-  version "16.4.0"
-  resolved "https://registry.yarnpkg.com/react/-/react-16.4.0.tgz#402c2db83335336fba1962c08b98c6272617d585"
+react@16.x.x, react@^16.4.2:
+  version "16.4.2"
+  resolved "https://registry.yarnpkg.com/react/-/react-16.4.2.tgz#2cd90154e3a9d9dd8da2991149fdca3c260e129f"
   dependencies:
     fbjs "^0.8.16"
     loose-envify "^1.1.0"
@@ -8806,7 +9015,7 @@ recast@^0.11.17, recast@~0.11.12:
     private "~0.1.5"
     source-map "~0.5.0"
 
-recast@^0.12.5, recast@^0.12.6:
+recast@^0.12.5:
   version "0.12.9"
   resolved "https://registry.yarnpkg.com/recast/-/recast-0.12.9.tgz#e8e52bdb9691af462ccbd7c15d5a5113647a15f1"
   dependencies:
@@ -8816,11 +9025,11 @@ recast@^0.12.5, recast@^0.12.6:
     private "~0.1.5"
     source-map "~0.6.1"
 
-recast@^0.14.1:
-  version "0.14.7"
-  resolved "https://registry.yarnpkg.com/recast/-/recast-0.14.7.tgz#4f1497c2b5826d42a66e8e3c9d80c512983ff61d"
+recast@^0.15.0:
+  version "0.15.3"
+  resolved "https://registry.yarnpkg.com/recast/-/recast-0.15.3.tgz#5fc1fd1c8e2d4d027ee3977a176bbb8d1c83305e"
   dependencies:
-    ast-types "0.11.3"
+    ast-types "0.11.5"
     esprima "~4.0.0"
     private "~0.1.5"
     source-map "~0.6.1"
@@ -8837,15 +9046,6 @@ recursive-readdir@2.2.1:
   dependencies:
     minimatch "3.0.3"
 
-redbox-react@^1.3.6:
-  version "1.6.0"
-  resolved "https://registry.yarnpkg.com/redbox-react/-/redbox-react-1.6.0.tgz#e753ac02595bc1bf695b3935889a4f5b1b5a21a1"
-  dependencies:
-    error-stack-parser "^1.3.6"
-    object-assign "^4.0.1"
-    prop-types "^15.5.4"
-    sourcemapped-stacktrace "^1.1.6"
-
 redent@^1.0.0:
   version "1.0.0"
   resolved "https://registry.yarnpkg.com/redent/-/redent-1.0.0.tgz#cf916ab1fd5f1f16dfb20822dd6ec7f730c2afde"
@@ -8909,6 +9109,12 @@ regex-not@^1.0.0, regex-not@^1.0.2:
     extend-shallow "^3.0.2"
     safe-regex "^1.1.0"
 
+regexp.prototype.flags@^1.2.0:
+  version "1.2.0"
+  resolved "https://registry.yarnpkg.com/regexp.prototype.flags/-/regexp.prototype.flags-1.2.0.tgz#6b30724e306a27833eeb171b66ac8890ba37e41c"
+  dependencies:
+    define-properties "^1.1.2"
+
 regexpp@^1.0.1:
   version "1.1.0"
   resolved "https://registry.yarnpkg.com/regexpp/-/regexpp-1.1.0.tgz#0e3516dd0b7904f413d2d4193dce4618c3a689ab"
@@ -8979,7 +9185,13 @@ replace-ext@^1.0.0:
   version "1.0.0"
   resolved "https://registry.yarnpkg.com/replace-ext/-/replace-ext-1.0.0.tgz#de63128373fcbf7c3ccfa4de5a480c45a67958eb"
 
-request@2, request@^2.79.0:
+request-progress@^2.0.1:
+  version "2.0.1"
+  resolved "https://registry.yarnpkg.com/request-progress/-/request-progress-2.0.1.tgz#5d36bb57961c673aa5b788dbc8141fdf23b44e08"
+  dependencies:
+    throttleit "^1.0.0"
+
+request@2.87.0, request@^2.79.0, request@^2.81.0:
   version "2.87.0"
   resolved "https://registry.yarnpkg.com/request/-/request-2.87.0.tgz#32f00235cd08d482b4d0d68db93a829c0ed5756e"
   dependencies:
@@ -9004,18 +9216,18 @@ request@2, request@^2.79.0:
     tunnel-agent "^0.6.0"
     uuid "^3.1.0"
 
-request@~2.79.0:
-  version "2.79.0"
-  resolved "https://registry.yarnpkg.com/request/-/request-2.79.0.tgz#4dfe5bf6be8b8cdc37fcf93e04b65577722710de"
+"request@>=2.9.0 <2.82.0":
+  version "2.81.0"
+  resolved "https://registry.yarnpkg.com/request/-/request-2.81.0.tgz#c6928946a0e06c5f8d6f8a9333469ffda46298a0"
   dependencies:
     aws-sign2 "~0.6.0"
     aws4 "^1.2.1"
-    caseless "~0.11.0"
+    caseless "~0.12.0"
     combined-stream "~1.0.5"
     extend "~3.0.0"
     forever-agent "~0.6.1"
     form-data "~2.1.1"
-    har-validator "~2.0.6"
+    har-validator "~4.2.1"
     hawk "~3.1.3"
     http-signature "~1.1.0"
     is-typedarray "~1.0.0"
@@ -9023,20 +9235,18 @@ request@~2.79.0:
     json-stringify-safe "~5.0.1"
     mime-types "~2.1.7"
     oauth-sign "~0.8.1"
-    qs "~6.3.0"
+    performance-now "^0.2.0"
+    qs "~6.4.0"
+    safe-buffer "^5.0.1"
     stringstream "~0.0.4"
     tough-cookie "~2.3.0"
-    tunnel-agent "~0.4.1"
+    tunnel-agent "^0.6.0"
     uuid "^3.0.0"
 
 require-directory@^2.1.1:
   version "2.1.1"
   resolved "https://registry.yarnpkg.com/require-directory/-/require-directory-2.1.1.tgz#8c64ad5fd30dab1c976e2344ffe7f792a6a6df42"
 
-require-from-string@^1.1.0:
-  version "1.2.1"
-  resolved "https://registry.yarnpkg.com/require-from-string/-/require-from-string-1.2.1.tgz#529c9ccef27380adfec9a2f965b649bbee636418"
-
 require-from-string@^2.0.1:
   version "2.0.2"
   resolved "https://registry.yarnpkg.com/require-from-string/-/require-from-string-2.0.2.tgz#89a7fdd938261267318eafe14f9c32e598c36909"
@@ -9085,9 +9295,9 @@ resolve@1.1.7:
   version "1.1.7"
   resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.1.7.tgz#203114d82ad2c5ed9e8e0411b3932875e889e97b"
 
-resolve@^1.1.6, resolve@^1.5.0, resolve@^1.6.0:
-  version "1.7.1"
-  resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.7.1.tgz#aadd656374fd298aee895bc026b8297418677fd3"
+resolve@^1.1.6, resolve@^1.3.3, resolve@^1.5.0, resolve@^1.6.0:
+  version "1.8.1"
+  resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.8.1.tgz#82f1ec19a423ac1fbd080b0bab06ba36e84a7a26"
   dependencies:
     path-parse "^1.0.5"
 
@@ -9146,6 +9356,13 @@ rosie@^1.6.0:
   version "1.6.0"
   resolved "https://registry.yarnpkg.com/rosie/-/rosie-1.6.0.tgz#bc0ef64cd401d00794450d5792c0276e226b6ab0"
 
+rst-selector-parser@^2.2.3:
+  version "2.2.3"
+  resolved "https://registry.yarnpkg.com/rst-selector-parser/-/rst-selector-parser-2.2.3.tgz#81b230ea2fcc6066c89e3472de794285d9b03d91"
+  dependencies:
+    lodash.flattendeep "^4.4.0"
+    nearley "^2.7.10"
+
 rsvp@^3.3.3:
   version "3.6.2"
   resolved "https://registry.yarnpkg.com/rsvp/-/rsvp-3.6.2.tgz#2e96491599a96cde1b515d5674a8f7a91452926a"
@@ -9201,8 +9418,8 @@ rxjs@^5.5.2:
     symbol-observable "1.0.1"
 
 rxjs@^6.1.0:
-  version "6.2.0"
-  resolved "https://registry.yarnpkg.com/rxjs/-/rxjs-6.2.0.tgz#e024d0e180b72756a83c2aaea8f25423751ba978"
+  version "6.2.2"
+  resolved "https://registry.yarnpkg.com/rxjs/-/rxjs-6.2.2.tgz#eb75fa3c186ff5289907d06483a77884586e1cf9"
   dependencies:
     tslib "^1.9.0"
 
@@ -9210,7 +9427,7 @@ safe-buffer@5.1.1:
   version "5.1.1"
   resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.1.1.tgz#893312af69b2123def71f57889001671eeb2c853"
 
-safe-buffer@^5.0.1, safe-buffer@^5.1.0, safe-buffer@^5.1.1, safe-buffer@^5.1.2, safe-buffer@~5.1.0, safe-buffer@~5.1.1:
+safe-buffer@5.1.2, safe-buffer@^5.0.1, safe-buffer@^5.1.0, safe-buffer@^5.1.1, safe-buffer@^5.1.2, safe-buffer@~5.1.0, safe-buffer@~5.1.1:
   version "5.1.2"
   resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.1.2.tgz#991ec69d296e0313747d59bdfd2b745c35f8828d"
 
@@ -9220,7 +9437,7 @@ safe-regex@^1.1.0:
   dependencies:
     ret "~0.1.10"
 
-"safer-buffer@>= 2.1.2 < 3":
+"safer-buffer@>= 2.1.2 < 3", safer-buffer@^2.0.2, safer-buffer@^2.1.0, safer-buffer@~2.1.0:
   version "2.1.2"
   resolved "https://registry.yarnpkg.com/safer-buffer/-/safer-buffer-2.1.2.tgz#44fa161b0187b9549dd84bb91802f9bd8385cd6a"
 
@@ -9269,8 +9486,8 @@ schema-utils@^0.3.0:
     ajv "^5.0.0"
 
 schema-utils@^0.4.0, schema-utils@^0.4.4, schema-utils@^0.4.5:
-  version "0.4.5"
-  resolved "https://registry.yarnpkg.com/schema-utils/-/schema-utils-0.4.5.tgz#21836f0608aac17b78f9e3e24daff14a5ca13a3e"
+  version "0.4.7"
+  resolved "https://registry.yarnpkg.com/schema-utils/-/schema-utils-0.4.7.tgz#ba74f597d2be2ea880131746ee17d0a093c68187"
   dependencies:
     ajv "^6.1.0"
     ajv-keywords "^3.1.0"
@@ -9322,7 +9539,7 @@ selfsigned@^1.9.1:
   version "5.5.0"
   resolved "https://registry.yarnpkg.com/semver/-/semver-5.5.0.tgz#dc4bbc7a6ca9d916dee5d43516f0092b58f7b8ab"
 
-semver@~5.3.0:
+semver@5.3.0, semver@~5.3.0:
   version "5.3.0"
   resolved "https://registry.yarnpkg.com/semver/-/semver-5.3.0.tgz#9b2ce5d3de02d17c6012ad326aa6b4d0cf54f94f"
 
@@ -9438,6 +9655,10 @@ shallowequal@^0.2.2:
   dependencies:
     lodash.keys "^3.1.2"
 
+shallowequal@^1.0.2:
+  version "1.1.0"
+  resolved "https://registry.yarnpkg.com/shallowequal/-/shallowequal-1.1.0.tgz#188d521de95b9087404fd4dcb68b13df0ae4e7f8"
+
 shebang-command@^1.2.0:
   version "1.2.0"
   resolved "https://registry.yarnpkg.com/shebang-command/-/shebang-command-1.2.0.tgz#44aac65b695b03398968c39f363fee5deafdf1ea"
@@ -9539,6 +9760,17 @@ sockjs-client@1.1.4:
     json3 "^3.3.2"
     url-parse "^1.1.8"
 
+sockjs-client@1.1.5:
+  version "1.1.5"
+  resolved "https://registry.yarnpkg.com/sockjs-client/-/sockjs-client-1.1.5.tgz#1bb7c0f7222c40f42adf14f4442cbd1269771a83"
+  dependencies:
+    debug "^2.6.6"
+    eventsource "0.1.6"
+    faye-websocket "~0.11.0"
+    inherits "^2.0.1"
+    json3 "^3.3.2"
+    url-parse "^1.1.8"
+
 sockjs@0.3.19:
   version "0.3.19"
   resolved "https://registry.yarnpkg.com/sockjs/-/sockjs-0.3.19.tgz#d976bbe800af7bd20ae08598d582393508993c0d"
@@ -9607,10 +9839,6 @@ source-map-url@~0.3.0:
   version "0.3.0"
   resolved "https://registry.yarnpkg.com/source-map-url/-/source-map-url-0.3.0.tgz#7ecaf13b57bcd09da8a40c5d269db33799d4aaf9"
 
-source-map@0.5.6:
-  version "0.5.6"
-  resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.5.6.tgz#75ce38f52bf0733c5a7f0c118d81334a2bb5f412"
-
 source-map@0.5.x, source-map@^0.5.0, source-map@^0.5.3, source-map@^0.5.6, source-map@^0.5.7, source-map@~0.5.0, source-map@~0.5.1:
   version "0.5.7"
   resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.5.7.tgz#8a039d2d1021d22d1ea14c80d8ea468ba2ef3fcc"
@@ -9631,12 +9859,6 @@ source-map@^0.6.1, source-map@~0.6.1:
   version "0.6.1"
   resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.6.1.tgz#74722af32e9614e9c287a8d0bbde48b5e2f1a263"
 
-sourcemapped-stacktrace@^1.1.6:
-  version "1.1.8"
-  resolved "https://registry.yarnpkg.com/sourcemapped-stacktrace/-/sourcemapped-stacktrace-1.1.8.tgz#6b7a3f1a6fb15f6d40e701e23ce404553480d688"
-  dependencies:
-    source-map "0.5.6"
-
 spdx-correct@^3.0.0:
   version "3.0.0"
   resolved "https://registry.yarnpkg.com/spdx-correct/-/spdx-correct-3.0.0.tgz#05a5b4d7153a195bc92c3c425b69f3b2a9524c82"
@@ -9688,18 +9910,25 @@ split-string@^3.0.1, split-string@^3.0.2:
   dependencies:
     extend-shallow "^3.0.0"
 
+split@^1.0.1:
+  version "1.0.1"
+  resolved "https://registry.yarnpkg.com/split/-/split-1.0.1.tgz#605bd9be303aa59fb35f9229fbea0ddec9ea07d9"
+  dependencies:
+    through "2"
+
 sprintf-js@~1.0.2:
   version "1.0.3"
   resolved "https://registry.yarnpkg.com/sprintf-js/-/sprintf-js-1.0.3.tgz#04e6926f662895354f3dd015203633b857297e2c"
 
 sshpk@^1.7.0:
-  version "1.14.1"
-  resolved "https://registry.yarnpkg.com/sshpk/-/sshpk-1.14.1.tgz#130f5975eddad963f1d56f92b9ac6c51fa9f83eb"
+  version "1.14.2"
+  resolved "https://registry.yarnpkg.com/sshpk/-/sshpk-1.14.2.tgz#c6fc61648a3d9c4e764fd3fcdf4ea105e492ba98"
   dependencies:
     asn1 "~0.2.3"
     assert-plus "^1.0.0"
     dashdash "^1.12.0"
     getpass "^0.1.1"
+    safer-buffer "^2.0.2"
   optionalDependencies:
     bcrypt-pbkdf "^1.0.0"
     ecc-jsbn "~0.1.1"
@@ -9716,10 +9945,6 @@ stack-trace@0.0.x:
   version "0.0.10"
   resolved "https://registry.yarnpkg.com/stack-trace/-/stack-trace-0.0.10.tgz#547c70b347e8d32b4e108ea1a2a159e5fdde19c0"
 
-stackframe@^0.3.1:
-  version "0.3.1"
-  resolved "https://registry.yarnpkg.com/stackframe/-/stackframe-0.3.1.tgz#33aa84f1177a5548c8935533cbfeb3420975f5a4"
-
 static-extend@^0.1.1:
   version "0.1.2"
   resolved "https://registry.yarnpkg.com/static-extend/-/static-extend-0.1.2.tgz#60809c39cbff55337226fd5e0b520f341f1fb5c6"
@@ -9758,15 +9983,15 @@ stream-browserify@^2.0.1:
     readable-stream "^2.0.2"
 
 stream-each@^1.1.0:
-  version "1.2.2"
-  resolved "https://registry.yarnpkg.com/stream-each/-/stream-each-1.2.2.tgz#8e8c463f91da8991778765873fe4d960d8f616bd"
+  version "1.2.3"
+  resolved "https://registry.yarnpkg.com/stream-each/-/stream-each-1.2.3.tgz#ebe27a0c389b04fbcc233642952e10731afa9bae"
   dependencies:
     end-of-stream "^1.1.0"
     stream-shift "^1.0.0"
 
 stream-http@^2.7.2:
-  version "2.8.2"
-  resolved "https://registry.yarnpkg.com/stream-http/-/stream-http-2.8.2.tgz#4126e8c6b107004465918aa2fc35549e77402c87"
+  version "2.8.3"
+  resolved "https://registry.yarnpkg.com/stream-http/-/stream-http-2.8.3.tgz#b2d242469288a5a27ec4fe8933acf623de6514fc"
   dependencies:
     builtin-status-codes "^3.0.0"
     inherits "^2.0.1"
@@ -9808,6 +10033,16 @@ string-width@^1.0.1, string-width@^1.0.2:
     is-fullwidth-code-point "^2.0.0"
     strip-ansi "^4.0.0"
 
+string.prototype.matchall@^3.0.0:
+  version "3.0.0"
+  resolved "https://registry.yarnpkg.com/string.prototype.matchall/-/string.prototype.matchall-3.0.0.tgz#66f4d8dd5c6c6cea4dffb55ec5f3184a8dd0dd59"
+  dependencies:
+    define-properties "^1.1.2"
+    es-abstract "^1.12.0"
+    function-bind "^1.1.1"
+    has-symbols "^1.0.0"
+    regexp.prototype.flags "^1.2.0"
+
 string.prototype.padend@^3.0.0:
   version "3.0.0"
   resolved "https://registry.yarnpkg.com/string.prototype.padend/-/string.prototype.padend-3.0.0.tgz#f3aaef7c1719f170c5eab1c32bf780d96e21f2f0"
@@ -10036,8 +10271,8 @@ tar@^2.0.0:
     inherits "2"
 
 tar@^4:
-  version "4.4.4"
-  resolved "https://registry.yarnpkg.com/tar/-/tar-4.4.4.tgz#ec8409fae9f665a4355cc3b4087d0820232bb8cd"
+  version "4.4.6"
+  resolved "https://registry.yarnpkg.com/tar/-/tar-4.4.6.tgz#63110f09c00b4e60ac8bcfe1bf3c8660235fbc9b"
   dependencies:
     chownr "^1.0.1"
     fs-minipass "^1.2.5"
@@ -10064,10 +10299,6 @@ test-exclude@^4.2.1:
     read-pkg-up "^1.0.1"
     require-main-filename "^1.0.1"
 
-tether@^1.4.0:
-  version "1.4.4"
-  resolved "https://registry.yarnpkg.com/tether/-/tether-1.4.4.tgz#9dc6eb2b3e601da2098fd264e7f7a8b264de1125"
-
 text-table@0.2.0, text-table@^0.2.0, text-table@~0.2.0:
   version "0.2.0"
   resolved "https://registry.yarnpkg.com/text-table/-/text-table-0.2.0.tgz#7f5ee823ae805207c00af2df4a84ec3fcfa570b4"
@@ -10080,6 +10311,10 @@ throat@^4.0.0:
   version "4.1.0"
   resolved "https://registry.yarnpkg.com/throat/-/throat-4.1.0.tgz#89037cbc92c56ab18926e6ba4cbb200e15672a6a"
 
+throttleit@^1.0.0:
+  version "1.0.0"
+  resolved "https://registry.yarnpkg.com/throttleit/-/throttleit-1.0.0.tgz#9e785836daf46743145a5984b6268d828528ac6c"
+
 through2@^2.0.0:
   version "2.0.3"
   resolved "https://registry.yarnpkg.com/through2/-/through2-2.0.3.tgz#0004569b37c7c74ba39c43f3ced78d1ad94140be"
@@ -10087,7 +10322,7 @@ through2@^2.0.0:
     readable-stream "^2.1.5"
     xtend "~4.0.1"
 
-through@^2.3.6, through@^2.3.8, through@~2.3.6:
+through@2, through@^2.3.6, through@^2.3.8, through@~2.3.6:
   version "2.3.8"
   resolved "https://registry.yarnpkg.com/through/-/through-2.3.8.tgz#0dd4c9ffaabc357960b1b724115d7e0e86a2e1f5"
 
@@ -10100,8 +10335,8 @@ time-stamp@^1.0.0:
   resolved "https://registry.yarnpkg.com/time-stamp/-/time-stamp-1.1.0.tgz#764a5a11af50561921b133f3b44e618687e0f5c3"
 
 time-stamp@^2.0.0:
-  version "2.0.0"
-  resolved "https://registry.yarnpkg.com/time-stamp/-/time-stamp-2.0.0.tgz#95c6a44530e15ba8d6f4a3ecb8c3a3fac46da357"
+  version "2.0.1"
+  resolved "https://registry.yarnpkg.com/time-stamp/-/time-stamp-2.0.1.tgz#708a89359c1fc50bd5e7b1c8aa750d08c9172232"
 
 timed-out@^4.0.0, timed-out@^4.0.1:
   version "4.0.1"
@@ -10161,7 +10396,14 @@ toposort@^1.0.0:
   version "1.0.7"
   resolved "https://registry.yarnpkg.com/toposort/-/toposort-1.0.7.tgz#2e68442d9f64ec720b8cc89e6443ac6caa950029"
 
-tough-cookie@^2.3.2, tough-cookie@~2.3.0, tough-cookie@~2.3.3:
+tough-cookie@^2.3.2:
+  version "2.4.3"
+  resolved "https://registry.yarnpkg.com/tough-cookie/-/tough-cookie-2.4.3.tgz#53f36da3f47783b0925afa06ff9f3b165280f781"
+  dependencies:
+    psl "^1.1.24"
+    punycode "^1.4.1"
+
+tough-cookie@~2.3.0, tough-cookie@~2.3.3:
   version "2.3.4"
   resolved "https://registry.yarnpkg.com/tough-cookie/-/tough-cookie-2.3.4.tgz#ec60cee38ac675063ffc97a5c18970578ee83655"
   dependencies:
@@ -10190,8 +10432,8 @@ trim-right@^1.0.1:
     glob "^6.0.4"
 
 tslib@^1.9.0:
-  version "1.9.2"
-  resolved "https://registry.yarnpkg.com/tslib/-/tslib-1.9.2.tgz#8be0cc9a1f6dc7727c38deb16c2ebd1a2892988e"
+  version "1.9.3"
+  resolved "https://registry.yarnpkg.com/tslib/-/tslib-1.9.3.tgz#d7e4dd79245d85428c4d7e4822a79917954ca286"
 
 tty-browserify@0.0.0:
   version "0.0.0"
@@ -10203,10 +10445,6 @@ tunnel-agent@^0.6.0:
   dependencies:
     safe-buffer "^5.0.1"
 
-tunnel-agent@~0.4.1:
-  version "0.4.3"
-  resolved "https://registry.yarnpkg.com/tunnel-agent/-/tunnel-agent-0.4.3.tgz#6373db76909fe570e08d73583365ed828a74eeeb"
-
 tweetnacl@^0.14.3, tweetnacl@~0.14.0:
   version "0.14.5"
   resolved "https://registry.yarnpkg.com/tweetnacl/-/tweetnacl-0.14.5.tgz#5ae68177f192d4456269d108afa93ff8743f4f64"
@@ -10228,7 +10466,7 @@ typedarray@^0.0.6:
   version "0.0.6"
   resolved "https://registry.yarnpkg.com/typedarray/-/typedarray-0.0.6.tgz#867ac74e3864187b1d3d47d996a78ec5c8830777"
 
-ua-parser-js@^0.7.9:
+ua-parser-js@^0.7.18:
   version "0.7.18"
   resolved "https://registry.yarnpkg.com/ua-parser-js/-/ua-parser-js-0.7.18.tgz#a7bfd92f56edfb117083b69e31d2aa8882d4b1ed"
 
@@ -10239,11 +10477,11 @@ uglify-es@^3.3.4:
     commander "~2.13.0"
     source-map "~0.6.1"
 
-uglify-js@3.3.x:
-  version "3.3.28"
-  resolved "https://registry.yarnpkg.com/uglify-js/-/uglify-js-3.3.28.tgz#0efb9a13850e11303361c1051f64d2ec68d9be06"
+uglify-js@3.4.x:
+  version "3.4.6"
+  resolved "https://registry.yarnpkg.com/uglify-js/-/uglify-js-3.4.6.tgz#bc546d53f3e02b05d97d0ca5a7abfe0fb0384ddb"
   dependencies:
-    commander "~2.15.0"
+    commander "~2.16.0"
     source-map "~0.6.1"
 
 uglify-js@^2.6, uglify-js@^2.8.29:
@@ -10268,8 +10506,8 @@ uglifyjs-webpack-plugin@^0.4.6:
     webpack-sources "^1.0.1"
 
 uglifyjs-webpack-plugin@^1.2.4:
-  version "1.2.5"
-  resolved "https://registry.yarnpkg.com/uglifyjs-webpack-plugin/-/uglifyjs-webpack-plugin-1.2.5.tgz#2ef8387c8f1a903ec5e44fa36f9f3cbdcea67641"
+  version "1.2.7"
+  resolved "https://registry.yarnpkg.com/uglifyjs-webpack-plugin/-/uglifyjs-webpack-plugin-1.2.7.tgz#57638dd99c853a1ebfe9d97b42160a8a507f9d00"
   dependencies:
     cacache "^10.0.4"
     find-cache-dir "^1.0.0"
@@ -10286,10 +10524,18 @@ uncontrollable@^4.1.0:
   dependencies:
     invariant "^2.1.0"
 
+underscore@~1.4.4:
+  version "1.4.4"
+  resolved "https://registry.yarnpkg.com/underscore/-/underscore-1.4.4.tgz#61a6a32010622afa07963bf325203cf12239d604"
+
 underscore@~1.6.0:
   version "1.6.0"
   resolved "https://registry.yarnpkg.com/underscore/-/underscore-1.6.0.tgz#8b38b10cacdef63337b8b24e4ff86d45aea529a8"
 
+unicode-5.2.0@^0.7.5:
+  version "0.7.5"
+  resolved "https://registry.yarnpkg.com/unicode-5.2.0/-/unicode-5.2.0-0.7.5.tgz#e0df129431a28a95263d8c480fb5e9ab2b0973f0"
+
 unidecode@0.1.8:
   version "0.1.8"
   resolved "https://registry.yarnpkg.com/unidecode/-/unidecode-0.1.8.tgz#efbb301538bc45246a9ac8c559d72f015305053e"
@@ -10338,7 +10584,7 @@ untildify@^3.0.2:
   version "3.0.3"
   resolved "https://registry.yarnpkg.com/untildify/-/untildify-3.0.3.tgz#1e7b42b140bcfd922b22e70ca1265bfe3634c7c9"
 
-upath@^1.0.0:
+upath@^1.0.5:
   version "1.1.0"
   resolved "https://registry.yarnpkg.com/upath/-/upath-1.1.0.tgz#35256597e46a581db4793d0ce47fa9aebfc9fabd"
 
@@ -10387,9 +10633,9 @@ url-parse-lax@^3.0.0:
   dependencies:
     prepend-http "^2.0.0"
 
-url-parse@^1.1.8, url-parse@~1.4.0:
-  version "1.4.0"
-  resolved "https://registry.yarnpkg.com/url-parse/-/url-parse-1.4.0.tgz#6bfdaad60098c7fe06f623e42b22de62de0d3d75"
+url-parse@^1.1.8, url-parse@^1.4.3:
+  version "1.4.3"
+  resolved "https://registry.yarnpkg.com/url-parse/-/url-parse-1.4.3.tgz#bfaee455c889023219d757e045fa6a684ec36c15"
   dependencies:
     querystringify "^2.0.0"
     requires-port "^1.0.0"
@@ -10412,21 +10658,25 @@ url@^0.11.0:
     querystring "0.2.0"
 
 use@^3.1.0:
-  version "3.1.0"
-  resolved "https://registry.yarnpkg.com/use/-/use-3.1.0.tgz#14716bf03fdfefd03040aef58d8b4b85f3a7c544"
-  dependencies:
-    kind-of "^6.0.2"
+  version "3.1.1"
+  resolved "https://registry.yarnpkg.com/use/-/use-3.1.1.tgz#d50c8cac79a19fbc20f2911f56eb973f4e10070f"
 
 util-deprecate@^1.0.2, util-deprecate@~1.0.1:
   version "1.0.2"
   resolved "https://registry.yarnpkg.com/util-deprecate/-/util-deprecate-1.0.2.tgz#450d4dc9fa70de732762fbd2d4a28981419a0ccf"
 
-util@0.10.3, util@^0.10.3:
+util@0.10.3:
   version "0.10.3"
   resolved "https://registry.yarnpkg.com/util/-/util-0.10.3.tgz#7afb1afe50805246489e3db7fe0ed379336ac0f9"
   dependencies:
     inherits "2.0.1"
 
+util@^0.10.3:
+  version "0.10.4"
+  resolved "https://registry.yarnpkg.com/util/-/util-0.10.4.tgz#3aa0125bfe668a4672de58857d3ace27ecb76901"
+  dependencies:
+    inherits "2.0.3"
+
 utila@~0.3:
   version "0.3.3"
   resolved "https://registry.yarnpkg.com/utila/-/utila-0.3.3.tgz#d7e8e7d7e309107092b05f8d9688824d633a4226"
@@ -10455,16 +10705,16 @@ uuid-js@^0.7.5:
   resolved "https://registry.yarnpkg.com/uuid-js/-/uuid-js-0.7.5.tgz#6c886d02a53d2d40dcf25d91a170b4a7b25b94d0"
 
 uuid@^3.0.0, uuid@^3.0.1, uuid@^3.1.0, uuid@^3.2.1:
-  version "3.2.1"
-  resolved "https://registry.yarnpkg.com/uuid/-/uuid-3.2.1.tgz#12c528bb9d58d0b9265d9a2f6f0fe8be17ff1f14"
+  version "3.3.2"
+  resolved "https://registry.yarnpkg.com/uuid/-/uuid-3.3.2.tgz#1b4af4955eb3077c501c23872fc6513811587131"
 
 v8-compile-cache@^2.0.0:
-  version "2.0.0"
-  resolved "https://registry.yarnpkg.com/v8-compile-cache/-/v8-compile-cache-2.0.0.tgz#526492e35fc616864284700b7043e01baee09f0a"
+  version "2.0.2"
+  resolved "https://registry.yarnpkg.com/v8-compile-cache/-/v8-compile-cache-2.0.2.tgz#a428b28bb26790734c4fc8bc9fa106fccebf6a6c"
 
 validate-npm-package-license@^3.0.1:
-  version "3.0.3"
-  resolved "https://registry.yarnpkg.com/validate-npm-package-license/-/validate-npm-package-license-3.0.3.tgz#81643bcbef1bdfecd4623793dc4648948ba98338"
+  version "3.0.4"
+  resolved "https://registry.yarnpkg.com/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz#fc91f6b9c7ba15c857f4cb2c5defeec39d4f410a"
   dependencies:
     spdx-correct "^3.0.0"
     spdx-expression-parse "^3.0.0"
@@ -10480,8 +10730,8 @@ vary@~1.1.2:
   resolved "https://registry.yarnpkg.com/vary/-/vary-1.1.2.tgz#2299f02c6ded30d4a5961b0b9f74524a18f634fc"
 
 velocity-animate@^1.4.0:
-  version "1.5.1"
-  resolved "https://registry.yarnpkg.com/velocity-animate/-/velocity-animate-1.5.1.tgz#606837047bab8fbfb59a636d1d82ecc3f7bd71a6"
+  version "1.5.2"
+  resolved "https://registry.yarnpkg.com/velocity-animate/-/velocity-animate-1.5.2.tgz#5a351d75fca2a92756f5c3867548b873f6c32105"
 
 velocity-react@^1.3.1:
   version "1.4.1"
@@ -10524,8 +10774,8 @@ vinyl@^1.1.0:
     replace-ext "0.0.1"
 
 vinyl@^2.0.1:
-  version "2.1.0"
-  resolved "https://registry.yarnpkg.com/vinyl/-/vinyl-2.1.0.tgz#021f9c2cf951d6b939943c89eb5ee5add4fd924c"
+  version "2.2.0"
+  resolved "https://registry.yarnpkg.com/vinyl/-/vinyl-2.2.0.tgz#d85b07da96e458d25b2ffe19fece9f2caa13ed86"
   dependencies:
     clone "^2.1.1"
     clone-buffer "^1.0.0"
@@ -10588,8 +10838,8 @@ webpack-addons@^1.1.5:
     jscodeshift "^0.4.0"
 
 webpack-cli@^2.0.14:
-  version "2.1.4"
-  resolved "https://registry.yarnpkg.com/webpack-cli/-/webpack-cli-2.1.4.tgz#cab81e79249127384fb69b2fdfe2055f9c771b76"
+  version "2.1.5"
+  resolved "https://registry.yarnpkg.com/webpack-cli/-/webpack-cli-2.1.5.tgz#3081fdeb2f205f0a54aa397986880b0c20a71f7a"
   dependencies:
     chalk "^2.4.1"
     cross-spawn "^6.0.5"
@@ -10641,8 +10891,8 @@ webpack-dev-middleware@^1.12.2:
     time-stamp "^2.0.0"
 
 webpack-dev-server@^3.1.3:
-  version "3.1.4"
-  resolved "https://registry.yarnpkg.com/webpack-dev-server/-/webpack-dev-server-3.1.4.tgz#9a08d13c4addd1e3b6d8ace116e86715094ad5b4"
+  version "3.1.5"
+  resolved "https://registry.yarnpkg.com/webpack-dev-server/-/webpack-dev-server-3.1.5.tgz#87477252e1ac6789303fb8cd3e585fa5d508a401"
   dependencies:
     ansi-html "0.0.7"
     array-includes "^3.0.3"
@@ -10665,7 +10915,7 @@ webpack-dev-server@^3.1.3:
     selfsigned "^1.9.1"
     serve-index "^1.7.2"
     sockjs "0.3.19"
-    sockjs-client "1.1.4"
+    sockjs-client "1.1.5"
     spdy "^3.4.1"
     strip-ansi "^3.0.0"
     supports-color "^5.1.0"
@@ -10674,8 +10924,8 @@ webpack-dev-server@^3.1.3:
     yargs "11.0.0"
 
 webpack-hot-middleware@^2.22.1:
-  version "2.22.2"
-  resolved "https://registry.yarnpkg.com/webpack-hot-middleware/-/webpack-hot-middleware-2.22.2.tgz#623b77ce591fcd4e1fb99f18167781443e50afac"
+  version "2.22.3"
+  resolved "https://registry.yarnpkg.com/webpack-hot-middleware/-/webpack-hot-middleware-2.22.3.tgz#ae6025d57d656085c5b716b44e0bc0f796787776"
   dependencies:
     ansi-html "0.0.7"
     html-entities "^1.2.0"
@@ -10726,20 +10976,21 @@ webpack@^3.11.0:
     yargs "^8.0.2"
 
 webpack@^4.5.0:
-  version "4.10.2"
-  resolved "https://registry.yarnpkg.com/webpack/-/webpack-4.10.2.tgz#d6a4cc3e2fa748f96ca62a70f91eaaa939ef3858"
-  dependencies:
-    "@webassemblyjs/ast" "1.5.9"
-    "@webassemblyjs/wasm-edit" "1.5.9"
-    "@webassemblyjs/wasm-opt" "1.5.9"
-    "@webassemblyjs/wasm-parser" "1.5.9"
-    acorn "^5.0.0"
+  version "4.16.5"
+  resolved "https://registry.yarnpkg.com/webpack/-/webpack-4.16.5.tgz#29fb39462823d7eb8aefcab8b45f7f241db0d092"
+  dependencies:
+    "@webassemblyjs/ast" "1.5.13"
+    "@webassemblyjs/helper-module-context" "1.5.13"
+    "@webassemblyjs/wasm-edit" "1.5.13"
+    "@webassemblyjs/wasm-opt" "1.5.13"
+    "@webassemblyjs/wasm-parser" "1.5.13"
+    acorn "^5.6.2"
     acorn-dynamic-import "^3.0.0"
     ajv "^6.1.0"
     ajv-keywords "^3.1.0"
-    chrome-trace-event "^0.1.1"
-    enhanced-resolve "^4.0.0"
-    eslint-scope "^3.7.1"
+    chrome-trace-event "^1.0.0"
+    enhanced-resolve "^4.1.0"
+    eslint-scope "^4.0.0"
     json-parse-better-errors "^1.0.2"
     loader-runner "^2.3.0"
     loader-utils "^1.1.0"
@@ -10794,7 +11045,7 @@ which-module@^2.0.0:
   version "2.0.0"
   resolved "https://registry.yarnpkg.com/which-module/-/which-module-2.0.0.tgz#d9ef07dce77b9902b8a3a8fa4b31c3e3f7e6e87a"
 
-which@1, which@^1.2.12, which@^1.2.14, which@^1.2.9, which@^1.3.0:
+which@1, which@^1.2.10, which@^1.2.12, which@^1.2.14, which@^1.2.9, which@^1.3.0:
   version "1.3.1"
   resolved "https://registry.yarnpkg.com/which/-/which-1.3.1.tgz#a45043d54f5805316da8d62f9f50918d3da70b0a"
   dependencies:
@@ -10822,6 +11073,17 @@ winston@0.8.x:
     pkginfo "0.3.x"
     stack-trace "0.0.x"
 
+winston@^2.4.0:
+  version "2.4.3"
+  resolved "https://registry.yarnpkg.com/winston/-/winston-2.4.3.tgz#7a9fdab371b6d3d9b63a592947846d856948c517"
+  dependencies:
+    async "~1.0.0"
+    colors "1.0.x"
+    cycle "1.0.x"
+    eyes "0.1.x"
+    isstream "0.1.x"
+    stack-trace "0.0.x"
+
 wordwrap@0.0.2:
   version "0.0.2"
   resolved "https://registry.yarnpkg.com/wordwrap/-/wordwrap-0.0.2.tgz#b79669bb42ecb409f83d583cad52ca17eaa1643f"
@@ -11042,9 +11304,15 @@ yargs@~3.10.0:
     decamelize "^1.0.0"
     window-size "0.1.0"
 
+yauzl@2.4.1:
+  version "2.4.1"
+  resolved "https://registry.yarnpkg.com/yauzl/-/yauzl-2.4.1.tgz#9528f442dab1b2284e58b4379bb194e22e0c4005"
+  dependencies:
+    fd-slicer "~1.0.1"
+
 yeoman-environment@^2.0.5, yeoman-environment@^2.1.1:
-  version "2.1.1"
-  resolved "https://registry.yarnpkg.com/yeoman-environment/-/yeoman-environment-2.1.1.tgz#10a045f7fc4397873764882eae055a33e56ee1c5"
+  version "2.3.1"
+  resolved "https://registry.yarnpkg.com/yeoman-environment/-/yeoman-environment-2.3.1.tgz#1aa00cc474a8e48518ab2b0f64b43034215e9997"
   dependencies:
     chalk "^2.1.0"
     cross-spawn "^6.0.5"