diff options
Diffstat (limited to 'openecomp-ui')
191 files changed, 9162 insertions, 8847 deletions
diff --git a/openecomp-ui/package.json b/openecomp-ui/package.json index cfb3e5a8e4..a70337b2a4 100644 --- a/openecomp-ui/package.json +++ b/openecomp-ui/package.json @@ -29,21 +29,21 @@ "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", @@ -127,6 +128,7 @@ "DEBUG": false }, "setupFiles": [ + "<rootDir>/test-utils/shim.js", "<rootDir>/test-utils/test-env-setup.js" ], "setupTestFrameworkScriptFile": "<rootDir>/test-utils/test-setup.js", diff --git a/openecomp-ui/resources/scss/_common.scss b/openecomp-ui/resources/scss/_common.scss index 6ade0abfe5..6d6a68512e 100644 --- a/openecomp-ui/resources/scss/_common.scss +++ b/openecomp-ui/resources/scss/_common.scss @@ -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'; diff --git a/openecomp-ui/resources/scss/_components.scss b/openecomp-ui/resources/scss/_components.scss index 7bd90100e2..5458cbc411 100644 --- a/openecomp-ui/resources/scss/_components.scss +++ b/openecomp-ui/resources/scss/_components.scss @@ -1,102 +1,100 @@ -@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); } diff --git a/openecomp-ui/resources/scss/_modules.scss b/openecomp-ui/resources/scss/_modules.scss index 6fe6e30ab6..ad33275b6d 100644 --- a/openecomp-ui/resources/scss/_modules.scss +++ b/openecomp-ui/resources/scss/_modules.scss @@ -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'; diff --git a/openecomp-ui/resources/scss/bootstrap.scss b/openecomp-ui/resources/scss/bootstrap.scss index 32890b35f0..7b6fed7509 100644 --- a/openecomp-ui/resources/scss/bootstrap.scss +++ b/openecomp-ui/resources/scss/bootstrap.scss @@ -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'; diff --git a/openecomp-ui/resources/scss/common/_base.scss b/openecomp-ui/resources/scss/common/_base.scss index e4aa23f876..b9cfd7906a 100644 --- a/openecomp-ui/resources/scss/common/_base.scss +++ b/openecomp-ui/resources/scss/common/_base.scss @@ -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; + } } diff --git a/openecomp-ui/resources/scss/common/_layout.scss b/openecomp-ui/resources/scss/common/_layout.scss index 6c6a0cf165..58ed1227ce 100644 --- a/openecomp-ui/resources/scss/common/_layout.scss +++ b/openecomp-ui/resources/scss/common/_layout.scss @@ -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; + } + } + } + } + } } diff --git a/openecomp-ui/resources/scss/common/_typography.scss b/openecomp-ui/resources/scss/common/_typography.scss index c4ae856b5f..230881022f 100644 --- a/openecomp-ui/resources/scss/common/_typography.scss +++ b/openecomp-ui/resources/scss/common/_typography.scss @@ -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; } diff --git a/openecomp-ui/resources/scss/common/_utils.scss b/openecomp-ui/resources/scss/common/_utils.scss index 99b1ff5d9a..aa1c0b6ff0 100644 --- a/openecomp-ui/resources/scss/common/_utils.scss +++ b/openecomp-ui/resources/scss/common/_utils.scss @@ -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); } diff --git a/openecomp-ui/resources/scss/common/_variables.scss b/openecomp-ui/resources/scss/common/_variables.scss index 6ea204aa76..48d9f4b68e 100644 --- a/openecomp-ui/resources/scss/common/_variables.scss +++ b/openecomp-ui/resources/scss/common/_variables.scss @@ -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; diff --git a/openecomp-ui/resources/scss/components/_activityLog.scss b/openecomp-ui/resources/scss/components/_activityLog.scss index 7a5b77b58c..dbe805f215 100644 --- a/openecomp-ui/resources/scss/components/_activityLog.scss +++ b/openecomp-ui/resources/scss/components/_activityLog.scss @@ -1,101 +1,98 @@ $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; + } } diff --git a/openecomp-ui/resources/scss/components/_commitModal.scss b/openecomp-ui/resources/scss/components/_commitModal.scss index e7f5d28933..47036ea22c 100644 --- a/openecomp-ui/resources/scss/components/_commitModal.scss +++ b/openecomp-ui/resources/scss/components/_commitModal.scss @@ -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; + } +} diff --git a/openecomp-ui/resources/scss/components/_datepicker.scss b/openecomp-ui/resources/scss/components/_datepicker.scss index d51a1b690e..e9c0f40425 100644 --- a/openecomp-ui/resources/scss/components/_datepicker.scss +++ b/openecomp-ui/resources/scss/components/_datepicker.scss @@ -1,67 +1,163 @@ .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; + } + } + } +} diff --git a/openecomp-ui/resources/scss/components/_dropzone.scss b/openecomp-ui/resources/scss/components/_dropzone.scss index 2479ae7f0c..31a67d9e6b 100644 --- a/openecomp-ui/resources/scss/components/_dropzone.scss +++ b/openecomp-ui/resources/scss/components/_dropzone.scss @@ -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; + } } diff --git a/openecomp-ui/resources/scss/components/_dualListBox.scss b/openecomp-ui/resources/scss/components/_dualListBox.scss index 0c7d82e31c..65702df88a 100644 --- a/openecomp-ui/resources/scss/components/_dualListBox.scss +++ b/openecomp-ui/resources/scss/components/_dualListBox.scss @@ -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; + } } - } } diff --git a/openecomp-ui/resources/scss/components/_expandableInput.scss b/openecomp-ui/resources/scss/components/_expandableInput.scss index 2484a73e8a..0508facbf4 100644 --- a/openecomp-ui/resources/scss/components/_expandableInput.scss +++ b/openecomp-ui/resources/scss/components/_expandableInput.scss @@ -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; + } + } } diff --git a/openecomp-ui/resources/scss/components/_forms.scss b/openecomp-ui/resources/scss/components/_forms.scss index 58e843047f..40c1aa16c4 100644 --- a/openecomp-ui/resources/scss/components/_forms.scss +++ b/openecomp-ui/resources/scss/components/_forms.scss @@ -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; - } } - } } diff --git a/openecomp-ui/resources/scss/components/_grid.scss b/openecomp-ui/resources/scss/components/_grid.scss index f210b64df6..595b0cde4d 100644 --- a/openecomp-ui/resources/scss/components/_grid.scss +++ b/openecomp-ui/resources/scss/components/_grid.scss @@ -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%); + } } diff --git a/openecomp-ui/resources/scss/components/_inputOptions.scss b/openecomp-ui/resources/scss/components/_inputOptions.scss index face03d64d..eb0fe79ea6 100644 --- a/openecomp-ui/resources/scss/components/_inputOptions.scss +++ b/openecomp-ui/resources/scss/components/_inputOptions.scss @@ -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; + } } diff --git a/openecomp-ui/resources/scss/components/_listEditorView.scss b/openecomp-ui/resources/scss/components/_listEditorView.scss index 354a6a1f70..9bda78e007 100644 --- a/openecomp-ui/resources/scss/components/_listEditorView.scss +++ b/openecomp-ui/resources/scss/components/_listEditorView.scss @@ -1,162 +1,160 @@ .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; + } + } } - } } - } } diff --git a/openecomp-ui/resources/scss/components/_loader.scss b/openecomp-ui/resources/scss/components/_loader.scss index ddff9af6e3..ee7f6f372d 100644 --- a/openecomp-ui/resources/scss/components/_loader.scss +++ b/openecomp-ui/resources/scss/components/_loader.scss @@ -1,159 +1,159 @@ .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; - } - } } - diff --git a/openecomp-ui/resources/scss/components/_navigationSideBar.scss b/openecomp-ui/resources/scss/components/_navigationSideBar.scss index ab4d15fd90..adb3688e5f 100644 --- a/openecomp-ui/resources/scss/components/_navigationSideBar.scss +++ b/openecomp-ui/resources/scss/components/_navigationSideBar.scss @@ -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 index 5b10dee0ee..0000000000 --- a/openecomp-ui/resources/scss/components/_notifications.scss +++ /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; - } - } - -} diff --git a/openecomp-ui/resources/scss/components/_overlay.scss b/openecomp-ui/resources/scss/components/_overlay.scss index 7c310bf1a6..3d2d0bbaae 100644 --- a/openecomp-ui/resources/scss/components/_overlay.scss +++ b/openecomp-ui/resources/scss/components/_overlay.scss @@ -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; + } +} diff --git a/openecomp-ui/resources/scss/components/_progressBar.scss b/openecomp-ui/resources/scss/components/_progressBar.scss index 040c8cefd7..5529a550c5 100644 --- a/openecomp-ui/resources/scss/components/_progressBar.scss +++ b/openecomp-ui/resources/scss/components/_progressBar.scss @@ -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; + } +} diff --git a/openecomp-ui/resources/scss/components/_selectActionTable.scss b/openecomp-ui/resources/scss/components/_selectActionTable.scss index fa8eb3110c..90b45a5a49 100644 --- a/openecomp-ui/resources/scss/components/_selectActionTable.scss +++ b/openecomp-ui/resources/scss/components/_selectActionTable.scss @@ -1,145 +1,146 @@ .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; + } + } + } + } + } + } + } } diff --git a/openecomp-ui/resources/scss/components/_sequenceDiagram.scss b/openecomp-ui/resources/scss/components/_sequenceDiagram.scss index d89c342d47..f567e07667 100644 --- a/openecomp-ui/resources/scss/components/_sequenceDiagram.scss +++ b/openecomp-ui/resources/scss/components/_sequenceDiagram.scss @@ -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; + } + } } diff --git a/openecomp-ui/resources/scss/components/_submitErrorResponse.scss b/openecomp-ui/resources/scss/components/_submitErrorResponse.scss index cd5284059d..e2e7b1bca9 100644 --- a/openecomp-ui/resources/scss/components/_submitErrorResponse.scss +++ b/openecomp-ui/resources/scss/components/_submitErrorResponse.scss @@ -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; + } } - } } diff --git a/openecomp-ui/resources/scss/components/_toggleInput.scss b/openecomp-ui/resources/scss/components/_toggleInput.scss index fcf0902adf..6bcf3a359b 100644 --- a/openecomp-ui/resources/scss/components/_toggleInput.scss +++ b/openecomp-ui/resources/scss/components/_toggleInput.scss @@ -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; + } } diff --git a/openecomp-ui/resources/scss/components/_tree.scss b/openecomp-ui/resources/scss/components/_tree.scss index e03594ee64..380fb64aec 100644 --- a/openecomp-ui/resources/scss/components/_tree.scss +++ b/openecomp-ui/resources/scss/components/_tree.scss @@ -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; + } } diff --git a/openecomp-ui/resources/scss/components/_userNotifications.scss b/openecomp-ui/resources/scss/components/_userNotifications.scss index 74cafae438..649e636541 100644 --- a/openecomp-ui/resources/scss/components/_userNotifications.scss +++ b/openecomp-ui/resources/scss/components/_userNotifications.scss @@ -1,123 +1,122 @@ - .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; + } + } + } } - } } - } } - } } diff --git a/openecomp-ui/resources/scss/components/_validationForm.scss b/openecomp-ui/resources/scss/components/_validationForm.scss index 52408f5952..9f708c4c2a 100644 --- a/openecomp-ui/resources/scss/components/_validationForm.scss +++ b/openecomp-ui/resources/scss/components/_validationForm.scss @@ -1,118 +1,110 @@ 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; + } + } } diff --git a/openecomp-ui/resources/scss/components/_versionController.scss b/openecomp-ui/resources/scss/components/_versionController.scss index 98771f1dbd..cc839995cb 100644 --- a/openecomp-ui/resources/scss/components/_versionController.scss +++ b/openecomp-ui/resources/scss/components/_versionController.scss @@ -1,281 +1,294 @@ .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; + } + } } diff --git a/openecomp-ui/resources/scss/components/_vnfBrowse.scss b/openecomp-ui/resources/scss/components/_vnfBrowse.scss index 7e0085af8a..f47b736ce2 100644 --- a/openecomp-ui/resources/scss/components/_vnfBrowse.scss +++ b/openecomp-ui/resources/scss/components/_vnfBrowse.scss @@ -1,109 +1,107 @@ $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; + } +} diff --git a/openecomp-ui/resources/scss/components/_vspDetailsVendorSelect.scss b/openecomp-ui/resources/scss/components/_vspDetailsVendorSelect.scss index 294fd817b9..5938dc2808 100644 --- a/openecomp-ui/resources/scss/components/_vspDetailsVendorSelect.scss +++ b/openecomp-ui/resources/scss/components/_vspDetailsVendorSelect.scss @@ -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 + } +} diff --git a/openecomp-ui/resources/scss/modules/_entitlementPools.scss b/openecomp-ui/resources/scss/modules/_entitlementPools.scss index 06ef4d21fd..736927fb51 100644 --- a/openecomp-ui/resources/scss/modules/_entitlementPools.scss +++ b/openecomp-ui/resources/scss/modules/_entitlementPools.scss @@ -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; + } + } } - } } - } } diff --git a/openecomp-ui/resources/scss/modules/_featureGroup.scss b/openecomp-ui/resources/scss/modules/_featureGroup.scss index cf681b8758..375bb2c08e 100644 --- a/openecomp-ui/resources/scss/modules/_featureGroup.scss +++ b/openecomp-ui/resources/scss/modules/_featureGroup.scss @@ -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; - } } - } } - } } - - - diff --git a/openecomp-ui/resources/scss/modules/_licenseAgreement.scss b/openecomp-ui/resources/scss/modules/_licenseAgreement.scss index 579e9bab2b..acde2edcb8 100644 --- a/openecomp-ui/resources/scss/modules/_licenseAgreement.scss +++ b/openecomp-ui/resources/scss/modules/_licenseAgreement.scss @@ -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; - } - } - } } diff --git a/openecomp-ui/resources/scss/modules/_licenseKeyGroup.scss b/openecomp-ui/resources/scss/modules/_licenseKeyGroup.scss index b7681fef9d..d873c3998c 100644 --- a/openecomp-ui/resources/scss/modules/_licenseKeyGroup.scss +++ b/openecomp-ui/resources/scss/modules/_licenseKeyGroup.scss @@ -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; + } + } } - } } diff --git a/openecomp-ui/resources/scss/modules/_licenseModel.scss b/openecomp-ui/resources/scss/modules/_licenseModel.scss index e93ea989fd..da43e3e3cf 100644 --- a/openecomp-ui/resources/scss/modules/_licenseModel.scss +++ b/openecomp-ui/resources/scss/modules/_licenseModel.scss @@ -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; + } + } } diff --git a/openecomp-ui/resources/scss/modules/_licenseModelLimits.scss b/openecomp-ui/resources/scss/modules/_licenseModelLimits.scss index 16b6af7cf9..794ed388e4 100644 --- a/openecomp-ui/resources/scss/modules/_licenseModelLimits.scss +++ b/openecomp-ui/resources/scss/modules/_licenseModelLimits.scss @@ -1,133 +1,132 @@ .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; + } + } + } + } +} diff --git a/openecomp-ui/resources/scss/modules/_licenseModelOverview.scss b/openecomp-ui/resources/scss/modules/_licenseModelOverview.scss index 21c5bd8007..eca87b6962 100644 --- a/openecomp-ui/resources/scss/modules/_licenseModelOverview.scss +++ b/openecomp-ui/resources/scss/modules/_licenseModelOverview.scss @@ -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; + } + } + } + } } - } } - - } } - } - } diff --git a/openecomp-ui/resources/scss/modules/_mergeEditor.scss b/openecomp-ui/resources/scss/modules/_mergeEditor.scss index 96648dd20f..000e42d5b4 100644 --- a/openecomp-ui/resources/scss/modules/_mergeEditor.scss +++ b/openecomp-ui/resources/scss/modules/_mergeEditor.scss @@ -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; + } + } + } } diff --git a/openecomp-ui/resources/scss/modules/_onboardingCatalog.scss b/openecomp-ui/resources/scss/modules/_onboardingCatalog.scss index 39f7636e79..bf0c14649e 100644 --- a/openecomp-ui/resources/scss/modules/_onboardingCatalog.scss +++ b/openecomp-ui/resources/scss/modules/_onboardingCatalog.scss @@ -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; + } + } + } + } } diff --git a/openecomp-ui/resources/scss/modules/_permissions.scss b/openecomp-ui/resources/scss/modules/_permissions.scss index e652d9d82f..5f83dc2fe9 100644 --- a/openecomp-ui/resources/scss/modules/_permissions.scss +++ b/openecomp-ui/resources/scss/modules/_permissions.scss @@ -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; + } + } } diff --git a/openecomp-ui/resources/scss/modules/_revisions.scss b/openecomp-ui/resources/scss/modules/_revisions.scss index 2b196c132c..619fe7e53e 100644 --- a/openecomp-ui/resources/scss/modules/_revisions.scss +++ b/openecomp-ui/resources/scss/modules/_revisions.scss @@ -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; + } } - } } - } } diff --git a/openecomp-ui/resources/scss/modules/_softwareProductAttachmentPage.scss b/openecomp-ui/resources/scss/modules/_softwareProductAttachmentPage.scss index 81a109c97f..f24198cf59 100644 --- a/openecomp-ui/resources/scss/modules/_softwareProductAttachmentPage.scss +++ b/openecomp-ui/resources/scss/modules/_softwareProductAttachmentPage.scss @@ -1,267 +1,262 @@ - .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; - } - - - } - - } - } diff --git a/openecomp-ui/resources/scss/modules/_softwareProductComponentCompute.scss b/openecomp-ui/resources/scss/modules/_softwareProductComponentCompute.scss index 164e3bc261..83941c002a 100644 --- a/openecomp-ui/resources/scss/modules/_softwareProductComponentCompute.scss +++ b/openecomp-ui/resources/scss/modules/_softwareProductComponentCompute.scss @@ -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; +} diff --git a/openecomp-ui/resources/scss/modules/_softwareProductComponentGeneral.scss b/openecomp-ui/resources/scss/modules/_softwareProductComponentGeneral.scss index d31c7f0b92..f50e342304 100644 --- a/openecomp-ui/resources/scss/modules/_softwareProductComponentGeneral.scss +++ b/openecomp-ui/resources/scss/modules/_softwareProductComponentGeneral.scss @@ -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; - } - } - } } diff --git a/openecomp-ui/resources/scss/modules/_softwareProductComponentImage.scss b/openecomp-ui/resources/scss/modules/_softwareProductComponentImage.scss index b67c448b54..409b686814 100644 --- a/openecomp-ui/resources/scss/modules/_softwareProductComponentImage.scss +++ b/openecomp-ui/resources/scss/modules/_softwareProductComponentImage.scss @@ -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%); + } + } } - } } diff --git a/openecomp-ui/resources/scss/modules/_softwareProductComponentNetwork.scss b/openecomp-ui/resources/scss/modules/_softwareProductComponentNetwork.scss index eaba47acb4..464ef98d11 100644 --- a/openecomp-ui/resources/scss/modules/_softwareProductComponentNetwork.scss +++ b/openecomp-ui/resources/scss/modules/_softwareProductComponentNetwork.scss @@ -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%; + } + } } - } } - } } - } } diff --git a/openecomp-ui/resources/scss/modules/_softwareProductComponentProcessesPage.scss b/openecomp-ui/resources/scss/modules/_softwareProductComponentProcessesPage.scss index 9476d7043d..b3c4800492 100644 --- a/openecomp-ui/resources/scss/modules/_softwareProductComponentProcessesPage.scss +++ b/openecomp-ui/resources/scss/modules/_softwareProductComponentProcessesPage.scss @@ -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; +} diff --git a/openecomp-ui/resources/scss/modules/_softwareProductCreatePage.scss b/openecomp-ui/resources/scss/modules/_softwareProductCreatePage.scss index b788a86e44..8b13789179 100644 --- a/openecomp-ui/resources/scss/modules/_softwareProductCreatePage.scss +++ b/openecomp-ui/resources/scss/modules/_softwareProductCreatePage.scss @@ -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; - } - } -} + diff --git a/openecomp-ui/resources/scss/modules/_softwareProductDependencies.scss b/openecomp-ui/resources/scss/modules/_softwareProductDependencies.scss index 65c558fa0e..5358e7c51b 100644 --- a/openecomp-ui/resources/scss/modules/_softwareProductDependencies.scss +++ b/openecomp-ui/resources/scss/modules/_softwareProductDependencies.scss @@ -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; @@ -26,23 +26,24 @@ .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; + } + } + } } - } - } - } } diff --git a/openecomp-ui/resources/scss/modules/_softwareProductDeployment.scss b/openecomp-ui/resources/scss/modules/_softwareProductDeployment.scss index b5f9a546d9..85eea9c742 100644 --- a/openecomp-ui/resources/scss/modules/_softwareProductDeployment.scss +++ b/openecomp-ui/resources/scss/modules/_softwareProductDeployment.scss @@ -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%; + } + } + } } diff --git a/openecomp-ui/resources/scss/modules/_softwareProductLandingPage.scss b/openecomp-ui/resources/scss/modules/_softwareProductLandingPage.scss index 8d124c3b40..8f0803f6d0 100644 --- a/openecomp-ui/resources/scss/modules/_softwareProductLandingPage.scss +++ b/openecomp-ui/resources/scss/modules/_softwareProductLandingPage.scss @@ -1,276 +1,273 @@ .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%; - } } - } } diff --git a/openecomp-ui/resources/scss/modules/_softwareProductProcessesPage.scss b/openecomp-ui/resources/scss/modules/_softwareProductProcessesPage.scss index 3f2a2f9a69..9ec074f09f 100644 --- a/openecomp-ui/resources/scss/modules/_softwareProductProcessesPage.scss +++ b/openecomp-ui/resources/scss/modules/_softwareProductProcessesPage.scss @@ -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; + } + } + } } - } } - } } - } } diff --git a/openecomp-ui/resources/scss/modules/_softwareproductComponentLoadBalancing.scss b/openecomp-ui/resources/scss/modules/_softwareproductComponentLoadBalancing.scss index 440b2424df..00f3ae4567 100644 --- a/openecomp-ui/resources/scss/modules/_softwareproductComponentLoadBalancing.scss +++ b/openecomp-ui/resources/scss/modules/_softwareproductComponentLoadBalancing.scss @@ -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; + } + } } diff --git a/openecomp-ui/resources/scss/modules/_uploadScreen.scss b/openecomp-ui/resources/scss/modules/_uploadScreen.scss index 23f41c8816..1c3ed2ada1 100644 --- a/openecomp-ui/resources/scss/modules/_uploadScreen.scss +++ b/openecomp-ui/resources/scss/modules/_uploadScreen.scss @@ -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; + } + } + } } - } } - } } diff --git a/openecomp-ui/resources/scss/modules/_versionsPage.scss b/openecomp-ui/resources/scss/modules/_versionsPage.scss index 5651c89032..c29230198a 100644 --- a/openecomp-ui/resources/scss/modules/_versionsPage.scss +++ b/openecomp-ui/resources/scss/modules/_versionsPage.scss @@ -1,360 +1,361 @@ .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 index 9f88e94393..0000000000 --- a/openecomp-ui/resources/scss/modules/_vspComponentCompute.scss +++ /dev/null @@ -1,6 +0,0 @@ - -.compute-flavor-editor-modal-edit { - .modal-lg { - width: 1182px; - } -}
\ No newline at end of file diff --git a/openecomp-ui/resources/scss/modules/_vspComponentMonitoring.scss b/openecomp-ui/resources/scss/modules/_vspComponentMonitoring.scss index 14bad18179..867749d8e9 100644 --- a/openecomp-ui/resources/scss/modules/_vspComponentMonitoring.scss +++ b/openecomp-ui/resources/scss/modules/_vspComponentMonitoring.scss @@ -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; + } + } } - } - } diff --git a/openecomp-ui/resources/scss/modules/_vspComponentQuestionnaire.scss b/openecomp-ui/resources/scss/modules/_vspComponentQuestionnaire.scss index 2a99263285..8a7575fd97 100644 --- a/openecomp-ui/resources/scss/modules/_vspComponentQuestionnaire.scss +++ b/openecomp-ui/resources/scss/modules/_vspComponentQuestionnaire.scss @@ -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; + } + } + } } - } } - } } - } } diff --git a/openecomp-ui/resources/scss/modules/_vspHeatSetup.scss b/openecomp-ui/resources/scss/modules/_vspHeatSetup.scss index bd216c794b..e50ad2ddd7 100644 --- a/openecomp-ui/resources/scss/modules/_vspHeatSetup.scss +++ b/openecomp-ui/resources/scss/modules/_vspHeatSetup.scss @@ -1,282 +1,278 @@ @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; + } + } + } + } } diff --git a/openecomp-ui/resources/scss/modules/_workflows.scss b/openecomp-ui/resources/scss/modules/_workflows.scss index 894b6e7973..c7ce4521f5 100644 --- a/openecomp-ui/resources/scss/modules/_workflows.scss +++ b/openecomp-ui/resources/scss/modules/_workflows.scss @@ -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; + } } diff --git a/openecomp-ui/resources/scss/modules/onboardingCatalog/_catalogFilter.scss b/openecomp-ui/resources/scss/modules/onboardingCatalog/_catalogFilter.scss index e3fc6a9143..1b6459a429 100644 --- a/openecomp-ui/resources/scss/modules/onboardingCatalog/_catalogFilter.scss +++ b/openecomp-ui/resources/scss/modules/onboardingCatalog/_catalogFilter.scss @@ -13,7 +13,7 @@ height: 34px; color: $blue; font-weight: bolder; - text-transform: uppercase; + text-transform: uppercase; } .sdc-accordion { padding-left: 18px; diff --git a/openecomp-ui/resources/scss/modules/onboardingCatalog/_catalogHeader.scss b/openecomp-ui/resources/scss/modules/onboardingCatalog/_catalogHeader.scss index 0a234a5a96..429d6cc3d3 100644 --- a/openecomp-ui/resources/scss/modules/onboardingCatalog/_catalogHeader.scss +++ b/openecomp-ui/resources/scss/modules/onboardingCatalog/_catalogHeader.scss @@ -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; + } + } + } } diff --git a/openecomp-ui/resources/scss/modules/onboardingCatalog/_catalogList.scss b/openecomp-ui/resources/scss/modules/onboardingCatalog/_catalogList.scss index 11a739d004..c632beb382 100644 --- a/openecomp-ui/resources/scss/modules/onboardingCatalog/_catalogList.scss +++ b/openecomp-ui/resources/scss/modules/onboardingCatalog/_catalogList.scss @@ -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 } diff --git a/openecomp-ui/resources/scss/modules/onboardingCatalog/_catalogTile.scss b/openecomp-ui/resources/scss/modules/onboardingCatalog/_catalogTile.scss index 612ec495cd..a2c7997266 100644 --- a/openecomp-ui/resources/scss/modules/onboardingCatalog/_catalogTile.scss +++ b/openecomp-ui/resources/scss/modules/onboardingCatalog/_catalogTile.scss @@ -1,147 +1,144 @@ .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; + } + } + } + } } diff --git a/openecomp-ui/resources/scss/modules/onboardingCatalog/_createItemTile.scss b/openecomp-ui/resources/scss/modules/onboardingCatalog/_createItemTile.scss index d17dcdd685..9838e65b10 100644 --- a/openecomp-ui/resources/scss/modules/onboardingCatalog/_createItemTile.scss +++ b/openecomp-ui/resources/scss/modules/onboardingCatalog/_createItemTile.scss @@ -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; + } + } } diff --git a/openecomp-ui/resources/scss/modules/onboardingCatalog/_onboardHeader.scss b/openecomp-ui/resources/scss/modules/onboardingCatalog/_onboardHeader.scss index f97641cbe3..5f8446b9ff 100644 --- a/openecomp-ui/resources/scss/modules/onboardingCatalog/_onboardHeader.scss +++ b/openecomp-ui/resources/scss/modules/onboardingCatalog/_onboardHeader.scss @@ -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; + } + } + } } diff --git a/openecomp-ui/resources/scss/modules/onboardingCatalog/_tile.scss b/openecomp-ui/resources/scss/modules/onboardingCatalog/_tile.scss index 217098fb97..fa513fb44d 100644 --- a/openecomp-ui/resources/scss/modules/onboardingCatalog/_tile.scss +++ b/openecomp-ui/resources/scss/modules/onboardingCatalog/_tile.scss @@ -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; + } } diff --git a/openecomp-ui/resources/scss/modules/onboardingCatalog/_vendorPageHeader.scss b/openecomp-ui/resources/scss/modules/onboardingCatalog/_vendorPageHeader.scss index f1af28a0a0..a741764727 100644 --- a/openecomp-ui/resources/scss/modules/onboardingCatalog/_vendorPageHeader.scss +++ b/openecomp-ui/resources/scss/modules/onboardingCatalog/_vendorPageHeader.scss @@ -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; + } + } } diff --git a/openecomp-ui/resources/scss/modules/onboardingCatalog/_vendorTile.scss b/openecomp-ui/resources/scss/modules/onboardingCatalog/_vendorTile.scss index d490fd6e1c..63fb236ec3 100644 --- a/openecomp-ui/resources/scss/modules/onboardingCatalog/_vendorTile.scss +++ b/openecomp-ui/resources/scss/modules/onboardingCatalog/_vendorTile.scss @@ -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 index 721a4f3f22..0000000000 --- a/openecomp-ui/resources/scss/modules/onboardingCatalog/_vlmTile.scss +++ /dev/null @@ -1,8 +0,0 @@ -.catalog-tile.license-model-type { - .catalog-tile-top { - &:hover { - //background-color: $purple; - //color: $white; - } - } -} diff --git a/openecomp-ui/resources/scss/modules/onboardingCatalog/_vspOverlay.scss b/openecomp-ui/resources/scss/modules/onboardingCatalog/_vspOverlay.scss index e0b72bf9ff..e2617b8b04 100644 --- a/openecomp-ui/resources/scss/modules/onboardingCatalog/_vspOverlay.scss +++ b/openecomp-ui/resources/scss/modules/onboardingCatalog/_vspOverlay.scss @@ -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; + } + } } diff --git a/openecomp-ui/resources/scss/onboarding.scss b/openecomp-ui/resources/scss/onboarding.scss index c38809cd07..da0c8b704f 100644 --- a/openecomp-ui/resources/scss/onboarding.scss +++ b/openecomp-ui/resources/scss/onboarding.scss @@ -1,234 +1,157 @@ -.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; + } } diff --git a/openecomp-ui/resources/scss/style.scss b/openecomp-ui/resources/scss/style.scss index ac020219ad..ba22cf6bd8 100644 --- a/openecomp-ui/resources/scss/style.scss +++ b/openecomp-ui/resources/scss/style.scss @@ -1,3 +1,3 @@ -@import "common"; -@import "components"; -@import "modules"; +@import 'common'; +@import 'components'; +@import 'modules'; diff --git a/openecomp-ui/src/nfvo-components/datepicker/Datepicker.jsx b/openecomp-ui/src/nfvo-components/datepicker/Datepicker.jsx index b4bc8be9ec..33db247aee 100644 --- a/openecomp-ui/src/nfvo-components/datepicker/Datepicker.jsx +++ b/openecomp-ui/src/nfvo-components/datepicker/Datepicker.jsx @@ -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> diff --git a/openecomp-ui/src/nfvo-components/input/ExpandableInput.jsx b/openecomp-ui/src/nfvo-components/input/ExpandableInput.jsx index be0ebf2bdd..37d79cb72e 100644 --- a/openecomp-ui/src/nfvo-components/input/ExpandableInput.jsx +++ b/openecomp-ui/src/nfvo-components/input/ExpandableInput.jsx @@ -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(); } diff --git a/openecomp-ui/src/nfvo-components/input/dualListbox/DualListboxView.jsx b/openecomp-ui/src/nfvo-components/input/dualListbox/DualListboxView.jsx index f36d999249..21f09e6613 100644 --- a/openecomp-ui/src/nfvo-components/input/dualListbox/DualListboxView.jsx +++ b/openecomp-ui/src/nfvo-components/input/dualListbox/DualListboxView.jsx @@ -16,9 +16,16 @@ 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; diff --git a/openecomp-ui/src/nfvo-components/input/validation/Form.jsx b/openecomp-ui/src/nfvo-components/input/validation/Form.jsx index b5db67c027..027920c423 100644 --- a/openecomp-ui/src/nfvo-components/input/validation/Form.jsx +++ b/openecomp-ui/src/nfvo-components/input/validation/Form.jsx @@ -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> diff --git a/openecomp-ui/src/nfvo-components/input/validation/Input.jsx b/openecomp-ui/src/nfvo-components/input/validation/Input.jsx index c54d4b660f..f3279b0b6d 100644 --- a/openecomp-ui/src/nfvo-components/input/validation/Input.jsx +++ b/openecomp-ui/src/nfvo-components/input/validation/Input.jsx @@ -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; diff --git a/openecomp-ui/src/nfvo-components/input/validation/ValidationButtons.jsx b/openecomp-ui/src/nfvo-components/input/validation/ValidationButtons.jsx index 550989688e..a4397114a0 100644 --- a/openecomp-ui/src/nfvo-components/input/validation/ValidationButtons.jsx +++ b/openecomp-ui/src/nfvo-components/input/validation/ValidationButtons.jsx @@ -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 diff --git a/openecomp-ui/src/nfvo-components/modal/GlobalModal.js b/openecomp-ui/src/nfvo-components/modal/GlobalModal.js index 3a80e734ea..0c924304cc 100644 --- a/openecomp-ui/src/nfvo-components/modal/GlobalModal.js +++ b/openecomp-ui/src/nfvo-components/modal/GlobalModal.js @@ -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, diff --git a/openecomp-ui/src/nfvo-components/modal/GlobalModalConstants.js b/openecomp-ui/src/nfvo-components/modal/GlobalModalConstants.js index 8bac377e08..434b41f931 100644 --- a/openecomp-ui/src/nfvo-components/modal/GlobalModalConstants.js +++ b/openecomp-ui/src/nfvo-components/modal/GlobalModalConstants.js @@ -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' }; diff --git a/openecomp-ui/src/nfvo-components/modal/GlobalModalReducer.js b/openecomp-ui/src/nfvo-components/modal/GlobalModalReducer.js index b2273fa7a7..a3383aba43 100644 --- a/openecomp-ui/src/nfvo-components/modal/GlobalModalReducer.js +++ b/openecomp-ui/src/nfvo-components/modal/GlobalModalReducer.js @@ -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 index 2f70a6ac1b..0000000000 --- a/openecomp-ui/src/nfvo-components/modal/Modal.jsx +++ /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> - ); - } -} diff --git a/openecomp-ui/src/nfvo-components/panel/NavigationSideBar.jsx b/openecomp-ui/src/nfvo-components/panel/NavigationSideBar.jsx index 61121df335..d852ac847b 100644 --- a/openecomp-ui/src/nfvo-components/panel/NavigationSideBar.jsx +++ b/openecomp-ui/src/nfvo-components/panel/NavigationSideBar.jsx @@ -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() { diff --git a/openecomp-ui/src/nfvo-components/panel/versionController/components/CommitCommentModal.jsx b/openecomp-ui/src/nfvo-components/panel/versionController/components/CommitCommentModal.jsx index ae0913f3a9..757dc6737e 100644 --- a/openecomp-ui/src/nfvo-components/panel/versionController/components/CommitCommentModal.jsx +++ b/openecomp-ui/src/nfvo-components/panel/versionController/components/CommitCommentModal.jsx @@ -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> ); diff --git a/openecomp-ui/src/nfvo-utils/i18n/en.json b/openecomp-ui/src/nfvo-utils/i18n/en.json index 98022c58e1..4634c37ebf 100644 --- a/openecomp-ui/src/nfvo-utils/i18n/en.json +++ b/openecomp-ui/src/nfvo-utils/i18n/en.json @@ -429,6 +429,8 @@ "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", diff --git a/openecomp-ui/src/sdc-app/Application.jsx b/openecomp-ui/src/sdc-app/Application.jsx index f96bd73c21..e67f662263 100644 --- a/openecomp-ui/src/sdc-app/Application.jsx +++ b/openecomp-ui/src/sdc-app/Application.jsx @@ -43,7 +43,7 @@ class Application extends React.Component { render() { return ( <Provider store={store}> - <div> + <div data-onboardingroot=""> <GlobalModal /> <Notifications /> {this.props.children} diff --git a/openecomp-ui/src/sdc-app/common/merge/MergeEditorActionHelper.js b/openecomp-ui/src/sdc-app/common/merge/MergeEditorActionHelper.js index 50d2a5ba93..fb58151bc8 100644 --- a/openecomp-ui/src/sdc-app/common/merge/MergeEditorActionHelper.js +++ b/openecomp-ui/src/sdc-app/common/merge/MergeEditorActionHelper.js @@ -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' } }) ); diff --git a/openecomp-ui/src/sdc-app/common/merge/MergeEditorView.jsx b/openecomp-ui/src/sdc-app/common/merge/MergeEditorView.jsx index a7e36a39fc..0664952b23 100644 --- a/openecomp-ui/src/sdc-app/common/merge/MergeEditorView.jsx +++ b/openecomp-ui/src/sdc-app/common/merge/MergeEditorView.jsx @@ -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, diff --git a/openecomp-ui/src/sdc-app/common/modal/ModalContentMapper.js b/openecomp-ui/src/sdc-app/common/modal/ModalContentMapper.js index 745f01d0eb..a65199ac8f 100644 --- a/openecomp-ui/src/sdc-app/common/modal/ModalContentMapper.js +++ b/openecomp-ui/src/sdc-app/common/modal/ModalContentMapper.js @@ -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 }; diff --git a/openecomp-ui/src/sdc-app/flows/FlowsActions.js b/openecomp-ui/src/sdc-app/flows/FlowsActions.js index 9fb65f37d4..4ad7dcfdc8 100644 --- a/openecomp-ui/src/sdc-app/flows/FlowsActions.js +++ b/openecomp-ui/src/sdc-app/flows/FlowsActions.js @@ -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 }); } }); diff --git a/openecomp-ui/src/sdc-app/flows/FlowsEditorModal.js b/openecomp-ui/src/sdc-app/flows/FlowsEditorModal.js index b45a9fc54e..4ef12faa0e 100644 --- a/openecomp-ui/src/sdc-app/flows/FlowsEditorModal.js +++ b/openecomp-ui/src/sdc-app/flows/FlowsEditorModal.js @@ -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, diff --git a/openecomp-ui/src/sdc-app/flows/FlowsEditorModalView.jsx b/openecomp-ui/src/sdc-app/flows/FlowsEditorModalView.jsx index 8c805cca9c..6ac316ed5c 100644 --- a/openecomp-ui/src/sdc-app/flows/FlowsEditorModalView.jsx +++ b/openecomp-ui/src/sdc-app/flows/FlowsEditorModalView.jsx @@ -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" diff --git a/openecomp-ui/src/sdc-app/flows/FlowsListEditor.js b/openecomp-ui/src/sdc-app/flows/FlowsListEditor.js index 2718c19aaa..c96415cafb 100644 --- a/openecomp-ui/src/sdc-app/flows/FlowsListEditor.js +++ b/openecomp-ui/src/sdc-app/flows/FlowsListEditor.js @@ -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 }), diff --git a/openecomp-ui/src/sdc-app/flows/FlowsListEditorView.jsx b/openecomp-ui/src/sdc-app/flows/FlowsListEditorView.jsx index d1c0c9a3df..f0a4635213 100644 --- a/openecomp-ui/src/sdc-app/flows/FlowsListEditorView.jsx +++ b/openecomp-ui/src/sdc-app/flows/FlowsListEditorView.jsx @@ -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, diff --git a/openecomp-ui/src/sdc-app/flows/FlowsListReducer.js b/openecomp-ui/src/sdc-app/flows/FlowsListReducer.js index 0279824ac4..56d389bbe5 100644 --- a/openecomp-ui/src/sdc-app/flows/FlowsListReducer.js +++ b/openecomp-ui/src/sdc-app/flows/FlowsListReducer.js @@ -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 { diff --git a/openecomp-ui/src/sdc-app/onboarding/licenseModel/components/ModalButtons.jsx b/openecomp-ui/src/sdc-app/onboarding/licenseModel/components/ModalButtons.jsx index 8f3347e65d..4fbbd1a8f0 100644 --- a/openecomp-ui/src/sdc-app/onboarding/licenseModel/components/ModalButtons.jsx +++ b/openecomp-ui/src/sdc-app/onboarding/licenseModel/components/ModalButtons.jsx @@ -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, diff --git a/openecomp-ui/src/sdc-app/onboarding/licenseModel/components/UuId.jsx b/openecomp-ui/src/sdc-app/onboarding/licenseModel/components/UuId.jsx index 2edfdaede5..66d50ca33f 100644 --- a/openecomp-ui/src/sdc-app/onboarding/licenseModel/components/UuId.jsx +++ b/openecomp-ui/src/sdc-app/onboarding/licenseModel/components/UuId.jsx @@ -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> diff --git a/openecomp-ui/src/sdc-app/onboarding/licenseModel/creation/LicenseModelCreationView.jsx b/openecomp-ui/src/sdc-app/onboarding/licenseModel/creation/LicenseModelCreationView.jsx index 8c5d966938..be1a42c8a3 100644 --- a/openecomp-ui/src/sdc-app/onboarding/licenseModel/creation/LicenseModelCreationView.jsx +++ b/openecomp-ui/src/sdc-app/onboarding/licenseModel/creation/LicenseModelCreationView.jsx @@ -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> )} diff --git a/openecomp-ui/src/sdc-app/onboarding/licenseModel/entitlementPools/EntitlementPoolsActionHelper.js b/openecomp-ui/src/sdc-app/onboarding/licenseModel/entitlementPools/EntitlementPoolsActionHelper.js index ef705d67e4..dec7d9c3b8 100644 --- a/openecomp-ui/src/sdc-app/onboarding/licenseModel/entitlementPools/EntitlementPoolsActionHelper.js +++ b/openecomp-ui/src/sdc-app/onboarding/licenseModel/entitlementPools/EntitlementPoolsActionHelper.js @@ -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( diff --git a/openecomp-ui/src/sdc-app/onboarding/licenseModel/entitlementPools/EntitlementPoolsEditorView.jsx b/openecomp-ui/src/sdc-app/onboarding/licenseModel/entitlementPools/EntitlementPoolsEditorView.jsx index d5ca81cfac..d0e91e382b 100644 --- a/openecomp-ui/src/sdc-app/onboarding/licenseModel/entitlementPools/EntitlementPoolsEditorView.jsx +++ b/openecomp-ui/src/sdc-app/onboarding/licenseModel/entitlementPools/EntitlementPoolsEditorView.jsx @@ -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} diff --git a/openecomp-ui/src/sdc-app/onboarding/licenseModel/entitlementPools/EntitlementPoolsListEditor.js b/openecomp-ui/src/sdc-app/onboarding/licenseModel/entitlementPools/EntitlementPoolsListEditor.js index 4679b9ec81..93e78a753b 100644 --- a/openecomp-ui/src/sdc-app/onboarding/licenseModel/entitlementPools/EntitlementPoolsListEditor.js +++ b/openecomp-ui/src/sdc-app/onboarding/licenseModel/entitlementPools/EntitlementPoolsListEditor.js @@ -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({ diff --git a/openecomp-ui/src/sdc-app/onboarding/licenseModel/entitlementPools/EntitlementPoolsListEditorView.jsx b/openecomp-ui/src/sdc-app/onboarding/licenseModel/entitlementPools/EntitlementPoolsListEditorView.jsx index 0648d6632d..2592687298 100644 --- a/openecomp-ui/src/sdc-app/onboarding/licenseModel/entitlementPools/EntitlementPoolsListEditorView.jsx +++ b/openecomp-ui/src/sdc-app/onboarding/licenseModel/entitlementPools/EntitlementPoolsListEditorView.jsx @@ -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> ); } diff --git a/openecomp-ui/src/sdc-app/onboarding/licenseModel/entitlementPools/components/FormContent.jsx b/openecomp-ui/src/sdc-app/onboarding/licenseModel/entitlementPools/components/FormContent.jsx index 531b6b73b2..b734a88d67 100644 --- a/openecomp-ui/src/sdc-app/onboarding/licenseModel/entitlementPools/components/FormContent.jsx +++ b/openecomp-ui/src/sdc-app/onboarding/licenseModel/entitlementPools/components/FormContent.jsx @@ -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} diff --git a/openecomp-ui/src/sdc-app/onboarding/licenseModel/featureGroups/FeatureGroupEditorView.jsx b/openecomp-ui/src/sdc-app/onboarding/licenseModel/featureGroups/FeatureGroupEditorView.jsx index d80eb9a0ab..2a9af15984 100644 --- a/openecomp-ui/src/sdc-app/onboarding/licenseModel/featureGroups/FeatureGroupEditorView.jsx +++ b/openecomp-ui/src/sdc-app/onboarding/licenseModel/featureGroups/FeatureGroupEditorView.jsx @@ -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} diff --git a/openecomp-ui/src/sdc-app/onboarding/licenseModel/featureGroups/FeatureGroupListEditor.js b/openecomp-ui/src/sdc-app/onboarding/licenseModel/featureGroups/FeatureGroupListEditor.js index 8d41b97cf0..fe4eb58b4c 100644 --- a/openecomp-ui/src/sdc-app/onboarding/licenseModel/featureGroups/FeatureGroupListEditor.js +++ b/openecomp-ui/src/sdc-app/onboarding/licenseModel/featureGroups/FeatureGroupListEditor.js @@ -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 }) }; }; diff --git a/openecomp-ui/src/sdc-app/onboarding/licenseModel/featureGroups/FeatureGroupListEditorView.jsx b/openecomp-ui/src/sdc-app/onboarding/licenseModel/featureGroups/FeatureGroupListEditorView.jsx index 92468a3b86..63964435f2 100644 --- a/openecomp-ui/src/sdc-app/onboarding/licenseModel/featureGroups/FeatureGroupListEditorView.jsx +++ b/openecomp-ui/src/sdc-app/onboarding/licenseModel/featureGroups/FeatureGroupListEditorView.jsx @@ -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"> diff --git a/openecomp-ui/src/sdc-app/onboarding/licenseModel/featureGroups/FeatureGroupsActionHelper.js b/openecomp-ui/src/sdc-app/onboarding/licenseModel/featureGroups/FeatureGroupsActionHelper.js index 22e21a613a..c6479a7481 100644 --- a/openecomp-ui/src/sdc-app/onboarding/licenseModel/featureGroups/FeatureGroupsActionHelper.js +++ b/openecomp-ui/src/sdc-app/onboarding/licenseModel/featureGroups/FeatureGroupsActionHelper.js @@ -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 + }); } }; diff --git a/openecomp-ui/src/sdc-app/onboarding/licenseModel/licenseAgreement/LicenseAgreementActionHelper.js b/openecomp-ui/src/sdc-app/onboarding/licenseModel/licenseAgreement/LicenseAgreementActionHelper.js index feceba5726..036aaaa686 100644 --- a/openecomp-ui/src/sdc-app/onboarding/licenseModel/licenseAgreement/LicenseAgreementActionHelper.js +++ b/openecomp-ui/src/sdc-app/onboarding/licenseModel/licenseAgreement/LicenseAgreementActionHelper.js @@ -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( diff --git a/openecomp-ui/src/sdc-app/onboarding/licenseModel/licenseAgreement/LicenseAgreementEditorView.jsx b/openecomp-ui/src/sdc-app/onboarding/licenseModel/licenseAgreement/LicenseAgreementEditorView.jsx index b2ebc1e436..b54c0806ef 100644 --- a/openecomp-ui/src/sdc-app/onboarding/licenseModel/licenseAgreement/LicenseAgreementEditorView.jsx +++ b/openecomp-ui/src/sdc-app/onboarding/licenseModel/licenseAgreement/LicenseAgreementEditorView.jsx @@ -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} diff --git a/openecomp-ui/src/sdc-app/onboarding/licenseModel/licenseAgreement/LicenseAgreementListEditor.js b/openecomp-ui/src/sdc-app/onboarding/licenseModel/licenseAgreement/LicenseAgreementListEditor.js index fcb83b4279..6151ad75f2 100644 --- a/openecomp-ui/src/sdc-app/onboarding/licenseModel/licenseAgreement/LicenseAgreementListEditor.js +++ b/openecomp-ui/src/sdc-app/onboarding/licenseModel/licenseAgreement/LicenseAgreementListEditor.js @@ -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({ diff --git a/openecomp-ui/src/sdc-app/onboarding/licenseModel/licenseAgreement/LicenseAgreementListEditorView.jsx b/openecomp-ui/src/sdc-app/onboarding/licenseModel/licenseAgreement/LicenseAgreementListEditorView.jsx index acec1e0ddb..b6ef7cf072 100644 --- a/openecomp-ui/src/sdc-app/onboarding/licenseModel/licenseAgreement/LicenseAgreementListEditorView.jsx +++ b/openecomp-ui/src/sdc-app/onboarding/licenseModel/licenseAgreement/LicenseAgreementListEditorView.jsx @@ -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) diff --git a/openecomp-ui/src/sdc-app/onboarding/licenseModel/licenseKeyGroups/LicenseKeyGroupsActionHelper.js b/openecomp-ui/src/sdc-app/onboarding/licenseModel/licenseKeyGroups/LicenseKeyGroupsActionHelper.js index 53276ca49b..c9f0505ad1 100644 --- a/openecomp-ui/src/sdc-app/onboarding/licenseModel/licenseKeyGroups/LicenseKeyGroupsActionHelper.js +++ b/openecomp-ui/src/sdc-app/onboarding/licenseModel/licenseKeyGroups/LicenseKeyGroupsActionHelper.js @@ -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( diff --git a/openecomp-ui/src/sdc-app/onboarding/licenseModel/licenseKeyGroups/LicenseKeyGroupsEditorView.jsx b/openecomp-ui/src/sdc-app/onboarding/licenseModel/licenseKeyGroups/LicenseKeyGroupsEditorView.jsx index 8f21722ca6..219f2dcd1e 100644 --- a/openecomp-ui/src/sdc-app/onboarding/licenseModel/licenseKeyGroups/LicenseKeyGroupsEditorView.jsx +++ b/openecomp-ui/src/sdc-app/onboarding/licenseModel/licenseKeyGroups/LicenseKeyGroupsEditorView.jsx @@ -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} diff --git a/openecomp-ui/src/sdc-app/onboarding/licenseModel/licenseKeyGroups/LicenseKeyGroupsListEditor.js b/openecomp-ui/src/sdc-app/onboarding/licenseModel/licenseKeyGroups/LicenseKeyGroupsListEditor.js index 514e9b85ec..47d3979064 100644 --- a/openecomp-ui/src/sdc-app/onboarding/licenseModel/licenseKeyGroups/LicenseKeyGroupsListEditor.js +++ b/openecomp-ui/src/sdc-app/onboarding/licenseModel/licenseKeyGroups/LicenseKeyGroupsListEditor.js @@ -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({ diff --git a/openecomp-ui/src/sdc-app/onboarding/licenseModel/licenseKeyGroups/LicenseKeyGroupsListEditorView.jsx b/openecomp-ui/src/sdc-app/onboarding/licenseModel/licenseKeyGroups/LicenseKeyGroupsListEditorView.jsx index 09bab1c097..2394ec8335 100644 --- a/openecomp-ui/src/sdc-app/onboarding/licenseModel/licenseKeyGroups/LicenseKeyGroupsListEditorView.jsx +++ b/openecomp-ui/src/sdc-app/onboarding/licenseModel/licenseKeyGroups/LicenseKeyGroupsListEditorView.jsx @@ -16,11 +16,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 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}> diff --git a/openecomp-ui/src/sdc-app/onboarding/licenseModel/licenseKeyGroups/components/FormContent.jsx b/openecomp-ui/src/sdc-app/onboarding/licenseModel/licenseKeyGroups/components/FormContent.jsx index 4d19ed39ce..c2c62b1402 100644 --- a/openecomp-ui/src/sdc-app/onboarding/licenseModel/licenseKeyGroups/components/FormContent.jsx +++ b/openecomp-ui/src/sdc-app/onboarding/licenseModel/licenseKeyGroups/components/FormContent.jsx @@ -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} />} diff --git a/openecomp-ui/src/sdc-app/onboarding/licenseModel/overview/LicenseModelOverviewView.jsx b/openecomp-ui/src/sdc-app/onboarding/licenseModel/overview/LicenseModelOverviewView.jsx index 6899360597..c2d6f8e4d6 100644 --- a/openecomp-ui/src/sdc-app/onboarding/licenseModel/overview/LicenseModelOverviewView.jsx +++ b/openecomp-ui/src/sdc-app/onboarding/licenseModel/overview/LicenseModelOverviewView.jsx @@ -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; diff --git a/openecomp-ui/src/sdc-app/onboarding/licenseModel/overview/summary/SummaryCountList.js b/openecomp-ui/src/sdc-app/onboarding/licenseModel/overview/summary/SummaryCountList.js index 711bb7a374..6ce42a51bf 100644 --- a/openecomp-ui/src/sdc-app/onboarding/licenseModel/overview/summary/SummaryCountList.js +++ b/openecomp-ui/src/sdc-app/onboarding/licenseModel/overview/summary/SummaryCountList.js @@ -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: diff --git a/openecomp-ui/src/sdc-app/onboarding/onboard/CatalogItemDetails.jsx b/openecomp-ui/src/sdc-app/onboarding/onboard/CatalogItemDetails.jsx index 7f361d2742..4e27c39e91 100644 --- a/openecomp-ui/src/sdc-app/onboarding/onboard/CatalogItemDetails.jsx +++ b/openecomp-ui/src/sdc-app/onboarding/onboard/CatalogItemDetails.jsx @@ -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 index 90496c9be4..0000000000 --- a/openecomp-ui/src/sdc-app/onboarding/onboard/CatalogModal.jsx +++ /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; diff --git a/openecomp-ui/src/sdc-app/onboarding/onboard/filter/Filter.jsx b/openecomp-ui/src/sdc-app/onboarding/onboard/filter/Filter.jsx index dadbbfd720..48f53e0763 100644 --- a/openecomp-ui/src/sdc-app/onboarding/onboard/filter/Filter.jsx +++ b/openecomp-ui/src/sdc-app/onboarding/onboard/filter/Filter.jsx @@ -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 diff --git a/openecomp-ui/src/sdc-app/onboarding/onboard/onboardingCatalog/VSPOverlay.jsx b/openecomp-ui/src/sdc-app/onboarding/onboard/onboardingCatalog/VSPOverlay.jsx index 81061cbbcd..f0ae41fd3a 100644 --- a/openecomp-ui/src/sdc-app/onboarding/onboard/onboardingCatalog/VSPOverlay.jsx +++ b/openecomp-ui/src/sdc-app/onboarding/onboard/onboardingCatalog/VSPOverlay.jsx @@ -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 }; diff --git a/openecomp-ui/src/sdc-app/onboarding/onboard/onboardingCatalog/VendorItem.jsx b/openecomp-ui/src/sdc-app/onboarding/onboard/onboardingCatalog/VendorItem.jsx index 73545d78f8..76854c29b7 100644 --- a/openecomp-ui/src/sdc-app/onboarding/onboard/onboardingCatalog/VendorItem.jsx +++ b/openecomp-ui/src/sdc-app/onboarding/onboard/onboardingCatalog/VendorItem.jsx @@ -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, diff --git a/openecomp-ui/src/sdc-app/onboarding/permissions/PermissionsManager.jsx b/openecomp-ui/src/sdc-app/onboarding/permissions/PermissionsManager.jsx index ab6add8ac2..6918a8787a 100644 --- a/openecomp-ui/src/sdc-app/onboarding/permissions/PermissionsManager.jsx +++ b/openecomp-ui/src/sdc-app/onboarding/permissions/PermissionsManager.jsx @@ -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> diff --git a/openecomp-ui/src/sdc-app/onboarding/revisions/RevisionsActionHelper.js b/openecomp-ui/src/sdc-app/onboarding/revisions/RevisionsActionHelper.js index 61ccad0cc4..e81c06812c 100644 --- a/openecomp-ui/src/sdc-app/onboarding/revisions/RevisionsActionHelper.js +++ b/openecomp-ui/src/sdc-app/onboarding/revisions/RevisionsActionHelper.js @@ -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, diff --git a/openecomp-ui/src/sdc-app/onboarding/revisions/RevisionsView.jsx b/openecomp-ui/src/sdc-app/onboarding/revisions/RevisionsView.jsx index 294f5286e7..efcce58bd7 100644 --- a/openecomp-ui/src/sdc-app/onboarding/revisions/RevisionsView.jsx +++ b/openecomp-ui/src/sdc-app/onboarding/revisions/RevisionsView.jsx @@ -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}> diff --git a/openecomp-ui/src/sdc-app/onboarding/softwareProduct/SoftwareProductActionHelper.js b/openecomp-ui/src/sdc-app/onboarding/softwareProduct/SoftwareProductActionHelper.js index 877c7869bd..9a177b2a53 100644 --- a/openecomp-ui/src/sdc-app/onboarding/softwareProduct/SoftwareProductActionHelper.js +++ b/openecomp-ui/src/sdc-app/onboarding/softwareProduct/SoftwareProductActionHelper.js @@ -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' } }); diff --git a/openecomp-ui/src/sdc-app/onboarding/softwareProduct/attachments/setup/HeatSetup.js b/openecomp-ui/src/sdc-app/onboarding/softwareProduct/attachments/setup/HeatSetup.js index d75d464f9e..6c0631963b 100644 --- a/openecomp-ui/src/sdc-app/onboarding/softwareProduct/attachments/setup/HeatSetup.js +++ b/openecomp-ui/src/sdc-app/onboarding/softwareProduct/attachments/setup/HeatSetup.js @@ -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: () => diff --git a/openecomp-ui/src/sdc-app/onboarding/softwareProduct/attachments/setup/HeatSetupActionHelper.js b/openecomp-ui/src/sdc-app/onboarding/softwareProduct/attachments/setup/HeatSetupActionHelper.js index 05ac408fbb..d2eb4e9eda 100644 --- a/openecomp-ui/src/sdc-app/onboarding/softwareProduct/attachments/setup/HeatSetupActionHelper.js +++ b/openecomp-ui/src/sdc-app/onboarding/softwareProduct/attachments/setup/HeatSetupActionHelper.js @@ -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(), diff --git a/openecomp-ui/src/sdc-app/onboarding/softwareProduct/attachments/setup/HeatSetupConstants.js b/openecomp-ui/src/sdc-app/onboarding/softwareProduct/attachments/setup/HeatSetupConstants.js index c87e9560f8..33bd7f639f 100644 --- a/openecomp-ui/src/sdc-app/onboarding/softwareProduct/attachments/setup/HeatSetupConstants.js +++ b/openecomp-ui/src/sdc-app/onboarding/softwareProduct/attachments/setup/HeatSetupConstants.js @@ -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' ); diff --git a/openecomp-ui/src/sdc-app/onboarding/softwareProduct/attachments/setup/HeatSetupReducer.js b/openecomp-ui/src/sdc-app/onboarding/softwareProduct/attachments/setup/HeatSetupReducer.js index 8840a11c3e..06a7147ec9 100644 --- a/openecomp-ui/src/sdc-app/onboarding/softwareProduct/attachments/setup/HeatSetupReducer.js +++ b/openecomp-ui/src/sdc-app/onboarding/softwareProduct/attachments/setup/HeatSetupReducer.js @@ -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, diff --git a/openecomp-ui/src/sdc-app/onboarding/softwareProduct/attachments/setup/HeatSetupView.jsx b/openecomp-ui/src/sdc-app/onboarding/softwareProduct/attachments/setup/HeatSetupView.jsx index 1d4efd9104..d103d115f6 100644 --- a/openecomp-ui/src/sdc-app/onboarding/softwareProduct/attachments/setup/HeatSetupView.jsx +++ b/openecomp-ui/src/sdc-app/onboarding/softwareProduct/attachments/setup/HeatSetupView.jsx @@ -1,415 +1,26 @@ -/*! - * 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 index 0000000000..92a07ae119 --- /dev/null +++ b/openecomp-ui/src/sdc-app/onboarding/softwareProduct/attachments/setup/components/AddOrDeleteVolumeFiles.js @@ -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 index 0000000000..c2bbde4c3d --- /dev/null +++ b/openecomp-ui/src/sdc-app/onboarding/softwareProduct/attachments/setup/components/ArtifactOrNestedFileList.js @@ -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 index 0000000000..f638d10998 --- /dev/null +++ b/openecomp-ui/src/sdc-app/onboarding/softwareProduct/attachments/setup/components/EmptyListContent.js @@ -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 index 0000000000..5cc74e80df --- /dev/null +++ b/openecomp-ui/src/sdc-app/onboarding/softwareProduct/attachments/setup/components/ModuleFile.js @@ -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 index 0000000000..36821e02c2 --- /dev/null +++ b/openecomp-ui/src/sdc-app/onboarding/softwareProduct/attachments/setup/components/NameEditInput.js @@ -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 index 0000000000..050c91e431 --- /dev/null +++ b/openecomp-ui/src/sdc-app/onboarding/softwareProduct/attachments/setup/components/SelectWithFileType.js @@ -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 index 0000000000..57626438fb --- /dev/null +++ b/openecomp-ui/src/sdc-app/onboarding/softwareProduct/attachments/setup/components/SortableListItem.js @@ -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 index 0000000000..f52c251361 --- /dev/null +++ b/openecomp-ui/src/sdc-app/onboarding/softwareProduct/attachments/setup/components/SortableModuleFileList.js @@ -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 index 0000000000..770befc0e3 --- /dev/null +++ b/openecomp-ui/src/sdc-app/onboarding/softwareProduct/attachments/setup/components/UnassignedFile.js @@ -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 index 0000000000..75fe7cdc8a --- /dev/null +++ b/openecomp-ui/src/sdc-app/onboarding/softwareProduct/attachments/setup/components/UnassignedFileList.js @@ -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; diff --git a/openecomp-ui/src/sdc-app/onboarding/softwareProduct/components/SoftwareProductComponents.js b/openecomp-ui/src/sdc-app/onboarding/softwareProduct/components/SoftwareProductComponents.js index bffa9f7d25..8ba5a18229 100644 --- a/openecomp-ui/src/sdc-app/onboarding/softwareProduct/components/SoftwareProductComponents.js +++ b/openecomp-ui/src/sdc-app/onboarding/softwareProduct/components/SoftwareProductComponents.js @@ -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({ diff --git a/openecomp-ui/src/sdc-app/onboarding/softwareProduct/components/compute/ComputeFlavorActionHelper.js b/openecomp-ui/src/sdc-app/onboarding/softwareProduct/components/compute/ComputeFlavorActionHelper.js index cd37c317af..6842d9448e 100644 --- a/openecomp-ui/src/sdc-app/onboarding/softwareProduct/components/compute/ComputeFlavorActionHelper.js +++ b/openecomp-ui/src/sdc-app/onboarding/softwareProduct/components/compute/ComputeFlavorActionHelper.js @@ -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: `${ diff --git a/openecomp-ui/src/sdc-app/onboarding/softwareProduct/components/compute/computeComponents/computeFlavor/ComputeFlavorEditorView.jsx b/openecomp-ui/src/sdc-app/onboarding/softwareProduct/components/compute/computeComponents/computeFlavor/ComputeFlavorEditorView.jsx index 840f722bb2..7ea6f78a8c 100644 --- a/openecomp-ui/src/sdc-app/onboarding/softwareProduct/components/compute/computeComponents/computeFlavor/ComputeFlavorEditorView.jsx +++ b/openecomp-ui/src/sdc-app/onboarding/softwareProduct/components/compute/computeComponents/computeFlavor/ComputeFlavorEditorView.jsx @@ -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} diff --git a/openecomp-ui/src/sdc-app/onboarding/softwareProduct/components/creation/SoftwareProductComponentCreationView.jsx b/openecomp-ui/src/sdc-app/onboarding/softwareProduct/components/creation/SoftwareProductComponentCreationView.jsx index 0b33b4017f..cb17813bae 100644 --- a/openecomp-ui/src/sdc-app/onboarding/softwareProduct/components/creation/SoftwareProductComponentCreationView.jsx +++ b/openecomp-ui/src/sdc-app/onboarding/softwareProduct/components/creation/SoftwareProductComponentCreationView.jsx @@ -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> diff --git a/openecomp-ui/src/sdc-app/onboarding/softwareProduct/components/images/SoftwareProductComponentsImageActionHelper.js b/openecomp-ui/src/sdc-app/onboarding/softwareProduct/components/images/SoftwareProductComponentsImageActionHelper.js index 3f661b76fe..38ee2ae610 100644 --- a/openecomp-ui/src/sdc-app/onboarding/softwareProduct/components/images/SoftwareProductComponentsImageActionHelper.js +++ b/openecomp-ui/src/sdc-app/onboarding/softwareProduct/components/images/SoftwareProductComponentsImageActionHelper.js @@ -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, diff --git a/openecomp-ui/src/sdc-app/onboarding/softwareProduct/components/images/SoftwareProductComponentsImageEditorView.jsx b/openecomp-ui/src/sdc-app/onboarding/softwareProduct/components/images/SoftwareProductComponentsImageEditorView.jsx index 3670ab910d..e4eccc6a39 100644 --- a/openecomp-ui/src/sdc-app/onboarding/softwareProduct/components/images/SoftwareProductComponentsImageEditorView.jsx +++ b/openecomp-ui/src/sdc-app/onboarding/softwareProduct/components/images/SoftwareProductComponentsImageEditorView.jsx @@ -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} diff --git a/openecomp-ui/src/sdc-app/onboarding/softwareProduct/components/network/NICCreation/NICCreationActionHelper.js b/openecomp-ui/src/sdc-app/onboarding/softwareProduct/components/network/NICCreation/NICCreationActionHelper.js index 4f200ce33f..2595d9c2cb 100644 --- a/openecomp-ui/src/sdc-app/onboarding/softwareProduct/components/network/NICCreation/NICCreationActionHelper.js +++ b/openecomp-ui/src/sdc-app/onboarding/softwareProduct/components/network/NICCreation/NICCreationActionHelper.js @@ -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 } } }); diff --git a/openecomp-ui/src/sdc-app/onboarding/softwareProduct/components/network/NICCreation/NICCreationView.jsx b/openecomp-ui/src/sdc-app/onboarding/softwareProduct/components/network/NICCreation/NICCreationView.jsx index 6789ba4816..133703a8a8 100644 --- a/openecomp-ui/src/sdc-app/onboarding/softwareProduct/components/network/NICCreation/NICCreationView.jsx +++ b/openecomp-ui/src/sdc-app/onboarding/softwareProduct/components/network/NICCreation/NICCreationView.jsx @@ -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 diff --git a/openecomp-ui/src/sdc-app/onboarding/softwareProduct/components/network/SoftwareProductComponentsNICEditor.js b/openecomp-ui/src/sdc-app/onboarding/softwareProduct/components/network/SoftwareProductComponentsNICEditor.js index d7205b46ed..e6a485adca 100644 --- a/openecomp-ui/src/sdc-app/onboarding/softwareProduct/components/network/SoftwareProductComponentsNICEditor.js +++ b/openecomp-ui/src/sdc-app/onboarding/softwareProduct/components/network/SoftwareProductComponentsNICEditor.js @@ -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'; diff --git a/openecomp-ui/src/sdc-app/onboarding/softwareProduct/components/network/SoftwareProductComponentsNICEditorView.jsx b/openecomp-ui/src/sdc-app/onboarding/softwareProduct/components/network/SoftwareProductComponentsNICEditorView.jsx index df2efbe39e..0116bb2d3f 100644 --- a/openecomp-ui/src/sdc-app/onboarding/softwareProduct/components/network/SoftwareProductComponentsNICEditorView.jsx +++ b/openecomp-ui/src/sdc-app/onboarding/softwareProduct/components/network/SoftwareProductComponentsNICEditorView.jsx @@ -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} diff --git a/openecomp-ui/src/sdc-app/onboarding/softwareProduct/components/network/SoftwareProductComponentsNetworkActionHelper.js b/openecomp-ui/src/sdc-app/onboarding/softwareProduct/components/network/SoftwareProductComponentsNetworkActionHelper.js index 58c816134b..3c09fae728 100644 --- a/openecomp-ui/src/sdc-app/onboarding/softwareProduct/components/network/SoftwareProductComponentsNetworkActionHelper.js +++ b/openecomp-ui/src/sdc-app/onboarding/softwareProduct/components/network/SoftwareProductComponentsNetworkActionHelper.js @@ -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') diff --git a/openecomp-ui/src/sdc-app/onboarding/softwareProduct/components/network/SoftwareProductComponentsNetworkList.js b/openecomp-ui/src/sdc-app/onboarding/softwareProduct/components/network/SoftwareProductComponentsNetworkList.js index ac708524cf..db3c767c19 100644 --- a/openecomp-ui/src/sdc-app/onboarding/softwareProduct/components/network/SoftwareProductComponentsNetworkList.js +++ b/openecomp-ui/src/sdc-app/onboarding/softwareProduct/components/network/SoftwareProductComponentsNetworkList.js @@ -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 } ) diff --git a/openecomp-ui/src/sdc-app/onboarding/softwareProduct/components/network/nicEditorComponents/NameAndPurpose.jsx b/openecomp-ui/src/sdc-app/onboarding/softwareProduct/components/network/nicEditorComponents/NameAndPurpose.jsx index 634b43f616..1019e9488b 100644 --- a/openecomp-ui/src/sdc-app/onboarding/softwareProduct/components/network/nicEditorComponents/NameAndPurpose.jsx +++ b/openecomp-ui/src/sdc-app/onboarding/softwareProduct/components/network/nicEditorComponents/NameAndPurpose.jsx @@ -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 }; diff --git a/openecomp-ui/src/sdc-app/onboarding/softwareProduct/components/network/nicEditorComponents/Network.jsx b/openecomp-ui/src/sdc-app/onboarding/softwareProduct/components/network/nicEditorComponents/Network.jsx index c440d2fbd3..904df4a856 100644 --- a/openecomp-ui/src/sdc-app/onboarding/softwareProduct/components/network/nicEditorComponents/Network.jsx +++ b/openecomp-ui/src/sdc-app/onboarding/softwareProduct/components/network/nicEditorComponents/Network.jsx @@ -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 }; diff --git a/openecomp-ui/src/sdc-app/onboarding/softwareProduct/components/network/nicEditorComponents/PacketsBytes.jsx b/openecomp-ui/src/sdc-app/onboarding/softwareProduct/components/network/nicEditorComponents/PacketsBytes.jsx index 070ac816ad..8f8d143f32 100644 --- a/openecomp-ui/src/sdc-app/onboarding/softwareProduct/components/network/nicEditorComponents/PacketsBytes.jsx +++ b/openecomp-ui/src/sdc-app/onboarding/softwareProduct/components/network/nicEditorComponents/PacketsBytes.jsx @@ -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 }; diff --git a/openecomp-ui/src/sdc-app/onboarding/softwareProduct/components/network/nicEditorComponents/Protocols.jsx b/openecomp-ui/src/sdc-app/onboarding/softwareProduct/components/network/nicEditorComponents/Protocols.jsx index eb762b11b2..b2cda4f649 100644 --- a/openecomp-ui/src/sdc-app/onboarding/softwareProduct/components/network/nicEditorComponents/Protocols.jsx +++ b/openecomp-ui/src/sdc-app/onboarding/softwareProduct/components/network/nicEditorComponents/Protocols.jsx @@ -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 }; diff --git a/openecomp-ui/src/sdc-app/onboarding/softwareProduct/components/processes/SoftwareProductComponentProcessesActionHelper.js b/openecomp-ui/src/sdc-app/onboarding/softwareProduct/components/processes/SoftwareProductComponentProcessesActionHelper.js index 52c5cdde3d..5422174f26 100644 --- a/openecomp-ui/src/sdc-app/onboarding/softwareProduct/components/processes/SoftwareProductComponentProcessesActionHelper.js +++ b/openecomp-ui/src/sdc-app/onboarding/softwareProduct/components/processes/SoftwareProductComponentProcessesActionHelper.js @@ -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 + }); } }; diff --git a/openecomp-ui/src/sdc-app/onboarding/softwareProduct/components/processes/SoftwareProductComponentProcessesList.js b/openecomp-ui/src/sdc-app/onboarding/softwareProduct/components/processes/SoftwareProductComponentProcessesList.js index cb6d25a6ac..3ab0b2045c 100644 --- a/openecomp-ui/src/sdc-app/onboarding/softwareProduct/components/processes/SoftwareProductComponentProcessesList.js +++ b/openecomp-ui/src/sdc-app/onboarding/softwareProduct/components/processes/SoftwareProductComponentProcessesList.js @@ -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, diff --git a/openecomp-ui/src/sdc-app/onboarding/softwareProduct/components/processes/SoftwareProductComponentsProcessesListView.jsx b/openecomp-ui/src/sdc-app/onboarding/softwareProduct/components/processes/SoftwareProductComponentsProcessesListView.jsx index 8fa2bffb27..fe6b8a86de 100644 --- a/openecomp-ui/src/sdc-app/onboarding/softwareProduct/components/processes/SoftwareProductComponentsProcessesListView.jsx +++ b/openecomp-ui/src/sdc-app/onboarding/softwareProduct/components/processes/SoftwareProductComponentsProcessesListView.jsx @@ -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; diff --git a/openecomp-ui/src/sdc-app/onboarding/softwareProduct/creation/SoftwareProductCreationView.jsx b/openecomp-ui/src/sdc-app/onboarding/softwareProduct/creation/SoftwareProductCreationView.jsx index c9693d4f93..e4a9893f61 100644 --- a/openecomp-ui/src/sdc-app/onboarding/softwareProduct/creation/SoftwareProductCreationView.jsx +++ b/openecomp-ui/src/sdc-app/onboarding/softwareProduct/creation/SoftwareProductCreationView.jsx @@ -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> diff --git a/openecomp-ui/src/sdc-app/onboarding/softwareProduct/deployment/SoftwareProductDeploymentActionHelper.js b/openecomp-ui/src/sdc-app/onboarding/softwareProduct/deployment/SoftwareProductDeploymentActionHelper.js index 44b25311e0..769596ea8d 100644 --- a/openecomp-ui/src/sdc-app/onboarding/softwareProduct/deployment/SoftwareProductDeploymentActionHelper.js +++ b/openecomp-ui/src/sdc-app/onboarding/softwareProduct/deployment/SoftwareProductDeploymentActionHelper.js @@ -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' diff --git a/openecomp-ui/src/sdc-app/onboarding/softwareProduct/deployment/editor/SoftwareProductDeploymentEditorView.jsx b/openecomp-ui/src/sdc-app/onboarding/softwareProduct/deployment/editor/SoftwareProductDeploymentEditorView.jsx index e44d2bd966..fd575693ac 100644 --- a/openecomp-ui/src/sdc-app/onboarding/softwareProduct/deployment/editor/SoftwareProductDeploymentEditorView.jsx +++ b/openecomp-ui/src/sdc-app/onboarding/softwareProduct/deployment/editor/SoftwareProductDeploymentEditorView.jsx @@ -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 diff --git a/openecomp-ui/src/sdc-app/onboarding/softwareProduct/processes/SoftwareProductProcessListView.jsx b/openecomp-ui/src/sdc-app/onboarding/softwareProduct/processes/SoftwareProductProcessListView.jsx index cee46abc69..5f1cdb56e6 100644 --- a/openecomp-ui/src/sdc-app/onboarding/softwareProduct/processes/SoftwareProductProcessListView.jsx +++ b/openecomp-ui/src/sdc-app/onboarding/softwareProduct/processes/SoftwareProductProcessListView.jsx @@ -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> diff --git a/openecomp-ui/src/sdc-app/onboarding/softwareProduct/processes/SoftwareProductProcesses.js b/openecomp-ui/src/sdc-app/onboarding/softwareProduct/processes/SoftwareProductProcesses.js index fb44530dae..e00cafb64a 100644 --- a/openecomp-ui/src/sdc-app/onboarding/softwareProduct/processes/SoftwareProductProcesses.js +++ b/openecomp-ui/src/sdc-app/onboarding/softwareProduct/processes/SoftwareProductProcesses.js @@ -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, diff --git a/openecomp-ui/src/sdc-app/onboarding/softwareProduct/processes/SoftwareProductProcessesActionHelper.js b/openecomp-ui/src/sdc-app/onboarding/softwareProduct/processes/SoftwareProductProcessesActionHelper.js index 7c72c5b892..0e586100b3 100644 --- a/openecomp-ui/src/sdc-app/onboarding/softwareProduct/processes/SoftwareProductProcessesActionHelper.js +++ b/openecomp-ui/src/sdc-app/onboarding/softwareProduct/processes/SoftwareProductProcessesActionHelper.js @@ -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( diff --git a/openecomp-ui/src/sdc-app/onboarding/softwareProduct/processes/SoftwareProductProcessesEditorForm.jsx b/openecomp-ui/src/sdc-app/onboarding/softwareProduct/processes/SoftwareProductProcessesEditorForm.jsx index 6e8254f65b..a858e0f07e 100644 --- a/openecomp-ui/src/sdc-app/onboarding/softwareProduct/processes/SoftwareProductProcessesEditorForm.jsx +++ b/openecomp-ui/src/sdc-app/onboarding/softwareProduct/processes/SoftwareProductProcessesEditorForm.jsx @@ -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 } diff --git a/openecomp-ui/src/sdc-app/onboarding/softwareProduct/processes/SoftwareProductProcessesView.jsx b/openecomp-ui/src/sdc-app/onboarding/softwareProduct/processes/SoftwareProductProcessesView.jsx index 1357c31e12..50421bc824 100644 --- a/openecomp-ui/src/sdc-app/onboarding/softwareProduct/processes/SoftwareProductProcessesView.jsx +++ b/openecomp-ui/src/sdc-app/onboarding/softwareProduct/processes/SoftwareProductProcessesView.jsx @@ -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; diff --git a/openecomp-ui/src/sdc-app/onboarding/softwareProduct/vnfMarketPlace/VNFImportView.jsx b/openecomp-ui/src/sdc-app/onboarding/softwareProduct/vnfMarketPlace/VNFImportView.jsx index 3a90c8042f..a33e0ede10 100644 --- a/openecomp-ui/src/sdc-app/onboarding/softwareProduct/vnfMarketPlace/VNFImportView.jsx +++ b/openecomp-ui/src/sdc-app/onboarding/softwareProduct/vnfMarketPlace/VNFImportView.jsx @@ -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> diff --git a/openecomp-ui/src/sdc-app/onboarding/versionsPage/VersionsPageActionHelper.js b/openecomp-ui/src/sdc-app/onboarding/versionsPage/VersionsPageActionHelper.js index afbb056686..8087dceca0 100644 --- a/openecomp-ui/src/sdc-app/onboarding/versionsPage/VersionsPageActionHelper.js +++ b/openecomp-ui/src/sdc-app/onboarding/versionsPage/VersionsPageActionHelper.js @@ -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') } diff --git a/openecomp-ui/src/sdc-app/onboarding/versionsPage/creation/VersionsPageCreationView.jsx b/openecomp-ui/src/sdc-app/onboarding/versionsPage/creation/VersionsPageCreationView.jsx index ba92d26067..da5f3be812 100644 --- a/openecomp-ui/src/sdc-app/onboarding/versionsPage/creation/VersionsPageCreationView.jsx +++ b/openecomp-ui/src/sdc-app/onboarding/versionsPage/creation/VersionsPageCreationView.jsx @@ -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; -*/ diff --git a/openecomp-ui/src/sdc-app/sdc.app.jsx b/openecomp-ui/src/sdc-app/sdc.app.jsx index b759ffd259..af955daa0b 100644 --- a/openecomp-ui/src/sdc-app/sdc.app.jsx +++ b/openecomp-ui/src/sdc-app/sdc.app.jsx @@ -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 index 0000000000..8cd4c2098a --- /dev/null +++ b/openecomp-ui/test-utils/shim.js @@ -0,0 +1 @@ +global.requestAnimationFrame = callback => setTimeout(callback, 0); diff --git a/openecomp-ui/test-utils/test-setup.js b/openecomp-ui/test-utils/test-setup.js index ec3ca72fc5..0c4e01cf8a 100644 --- a/openecomp-ui/test-utils/test-setup.js +++ b/openecomp-ui/test-utils/test-setup.js @@ -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(); diff --git a/openecomp-ui/test/activity-log/ActivityLog.test.js b/openecomp-ui/test/activity-log/ActivityLog.test.js index d2c135eb79..a397197773 100644 --- a/openecomp-ui/test/activity-log/ActivityLog.test.js +++ b/openecomp-ui/test/activity-log/ActivityLog.test.js @@ -1,99 +1,142 @@ -/*! - * 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); + }); }); diff --git a/openecomp-ui/test/flows/test.js b/openecomp-ui/test/flows/test.js index 6e02e54816..621b6a1447 100644 --- a/openecomp-ui/test/flows/test.js +++ b/openecomp-ui/test/flows/test.js @@ -1,187 +1,223 @@ -/*! - * 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); + }); + }); }); diff --git a/openecomp-ui/test/licenseModel/featureGroups/LicenseModelFeatureGroupListEditor.test.js b/openecomp-ui/test/licenseModel/featureGroups/LicenseModelFeatureGroupListEditor.test.js index 565b8a436b..4957e3bbaf 100644 --- a/openecomp-ui/test/licenseModel/featureGroups/LicenseModelFeatureGroupListEditor.test.js +++ b/openecomp-ui/test/licenseModel/featureGroups/LicenseModelFeatureGroupListEditor.test.js @@ -16,75 +16,75 @@ 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(); + }); }); diff --git a/openecomp-ui/test/licenseModel/test.js b/openecomp-ui/test/licenseModel/test.js index bbebcaf079..0d72d5d369 100644 --- a/openecomp-ui/test/licenseModel/test.js +++ b/openecomp-ui/test/licenseModel/test.js @@ -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 = { diff --git a/openecomp-ui/test/nfvo-components/editor/TabulatedEditor.test.js b/openecomp-ui/test/nfvo-components/editor/TabulatedEditor.test.js index 0738bbb03d..cc694398ec 100644 --- a/openecomp-ui/test/nfvo-components/editor/TabulatedEditor.test.js +++ b/openecomp-ui/test/nfvo-components/editor/TabulatedEditor.test.js @@ -14,43 +14,55 @@ * 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(); + }); }); diff --git a/openecomp-ui/test/onboard/filter/filterView.test.js b/openecomp-ui/test/onboard/filter/filterView.test.js index 5e3c93bef2..9e6e1ee4c2 100644 --- a/openecomp-ui/test/onboard/filter/filterView.test.js +++ b/openecomp-ui/test/onboard/filter/filterView.test.js @@ -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(); }); }); diff --git a/openecomp-ui/test/softwareProduct/processes/test.js b/openecomp-ui/test/softwareProduct/processes/test.js index 6ad696ae85..90de1e327f 100644 --- a/openecomp-ui/test/softwareProduct/processes/test.js +++ b/openecomp-ui/test/softwareProduct/processes/test.js @@ -1,410 +1,507 @@ -/*! - * 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 + ); + }); }); diff --git a/openecomp-ui/test/softwareProduct/test.js b/openecomp-ui/test/softwareProduct/test.js index 91b4e7d40e..489b9829b5 100644 --- a/openecomp-ui/test/softwareProduct/test.js +++ b/openecomp-ui/test/softwareProduct/test.js @@ -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(); diff --git a/openecomp-ui/test/utils/errorResponseHandler.test.js b/openecomp-ui/test/utils/errorResponseHandler.test.js index cae8bc4955..de2b8b2d5e 100644 --- a/openecomp-ui/test/utils/errorResponseHandler.test.js +++ b/openecomp-ui/test/utils/errorResponseHandler.test.js @@ -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. @@ -15,119 +15,132 @@ */ 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); + }); }); diff --git a/openecomp-ui/yarn.lock b/openecomp-ui/yarn.lock index 6cd7e3ba62..56a9880ebd 100644 --- a/openecomp-ui/yarn.lock +++ b/openecomp-ui/yarn.lock @@ -78,6 +78,10 @@ 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" @@ -131,11 +135,11 @@ 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" @@ -146,52 +150,52 @@ 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" @@ -223,9 +227,9 @@ "@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" @@ -262,17 +266,17 @@ 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" @@ -305,11 +309,11 @@ 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" @@ -331,132 +335,144 @@ 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/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.9": - version "1.5.9" - resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-edit/-/wasm-edit-1.5.9.tgz#9b8e054b2d305a7e0528088571c95904bd73df48" +"@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.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" @@ -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@^2.7.1: - version "2.9.1" - resolved "https://registry.yarnpkg.com/enzyme/-/enzyme-2.9.1.tgz#07d5ce691241240fb817bf2c4b18d6e530240df6" +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: - cheerio "^0.22.0" - function.prototype.name "^1.0.0" + 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@^3.4.0: + version "3.4.0" + resolved "https://registry.yarnpkg.com/enzyme/-/enzyme-3.4.0.tgz#085c66fe647d8c9c4becd1fee3042c040cda88a6" + dependencies: + 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,16 +6216,20 @@ 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" +"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" |