diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml
index 43e6bc501c..23a7c10d9c 100644
--- a/.github/workflows/build.yml
+++ b/.github/workflows/build.yml
@@ -23,7 +23,7 @@ jobs:
runs-on: ubuntu-latest
strategy:
matrix:
- node: [11, 12]
+ node: [14]
steps:
- uses: actions/checkout@v2
diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml
index 26bdae51dd..002b7a779c 100644
--- a/.github/workflows/release.yml
+++ b/.github/workflows/release.yml
@@ -29,7 +29,7 @@ jobs:
- name: Setup NodeJS
uses: actions/setup-node@v2
with:
- node-version: '12'
+ node-version: '14.19.1'
- name: JS Build
env:
diff --git a/Dockerfile-full b/Dockerfile-full
index d776921e40..d8eb821adf 100644
--- a/Dockerfile-full
+++ b/Dockerfile-full
@@ -8,7 +8,7 @@ WORKDIR /usr/src
ARG version
RUN make generate-build-info v=$version
-FROM node:12-alpine as build-frontend
+FROM node:14-alpine as build-frontend
RUN mkdir -p /usr/src/app
WORKDIR /usr/src/app
COPY ./app/ /usr/src/app/
diff --git a/Jenkinsfile-candidate b/Jenkinsfile-candidate
index 3529f722f4..df2a0cd58e 100644
--- a/Jenkinsfile-candidate
+++ b/Jenkinsfile-candidate
@@ -49,4 +49,3 @@ node {
}
}
}
-
diff --git a/app/.babelrc b/app/.babelrc
index 0a3738d690..59d89e45bc 100644
--- a/app/.babelrc
+++ b/app/.babelrc
@@ -14,6 +14,8 @@
"@babel/plugin-transform-runtime",
["@babel/plugin-proposal-decorators", { "legacy": true }],
["@babel/plugin-proposal-class-properties", { "loose": true }],
+ ["@babel/plugin-proposal-private-methods", { "loose": true }],
+ ["@babel/plugin-proposal-private-property-in-object", { "loose": true }],
[
"react-intl",
{
diff --git a/app/.eslintignore b/app/.eslintignore
index 99ffb9b611..b63431bfaf 100644
--- a/app/.eslintignore
+++ b/app/.eslintignore
@@ -1,6 +1,5 @@
node_modules/*
build
-.storybook_app
localization/messages
localization/translated/en.json
package.json
diff --git a/app/.eslintrc b/app/.eslintrc
index e30ee41e19..ced00066cd 100644
--- a/app/.eslintrc
+++ b/app/.eslintrc
@@ -6,7 +6,7 @@
"plugin:prettier/recommended",
"prettier/react"
],
- "plugins": ["react", "jsx-a11y", "prettier", "babel"],
+ "plugins": ["react", "react-hooks", "jsx-a11y", "prettier", "babel"],
"settings": {
"import/resolver": {
"webpack": {
@@ -59,7 +59,9 @@
"react/sort-comp": 0,
"import/no-useless-path-segments": 0,
"no-invalid-this": 0,
- "prefer-object-spread": 0
+ "prefer-object-spread": 0,
+ "react-hooks/rules-of-hooks": 2,
+ "react-hooks/exhaustive-deps": 1
},
"parserOptions": {
"ecmaFeatures": {
diff --git a/app/.gitignore b/app/.gitignore
index 08683e0c18..2f8cea3ec6 100644
--- a/app/.gitignore
+++ b/app/.gitignore
@@ -3,7 +3,6 @@
*.log
node_modules
build
-.storybook_app
localization/messages
localization/translated/en.json
.env
diff --git a/app/.slignore b/app/.slignore
index 7510632e04..e7cf32ebc5 100644
--- a/app/.slignore
+++ b/app/.slignore
@@ -14,7 +14,6 @@
./build/media/*
./localization/
./test/
-./.storybook/
vendor*.js
runtime*.js
inline*.js
diff --git a/app/.slignore.generated b/app/.slignore.generated
index 84d6dc0ad2..0e96913ac4 100644
--- a/app/.slignore.generated
+++ b/app/.slignore.generated
@@ -14,4 +14,4 @@
./build/media/*
./localization/
./test/
-./.storybook/
+
diff --git a/app/.storybook/config.js b/app/.storybook/config.js
deleted file mode 100644
index 8d33c375c9..0000000000
--- a/app/.storybook/config.js
+++ /dev/null
@@ -1,121 +0,0 @@
-/*
- * Copyright 2019 EPAM Systems
- *
- * 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 { addParameters, configure, addDecorator } from '@storybook/react';
-import { setIntlConfig, withIntl } from 'storybook-addon-intl';
-import { addReadme } from 'storybook-readme';
-import 'reset-css/reset.css';
-import 'common/css/fonts/fonts.scss';
-import 'common/css/common.scss';
-import 'c3/c3.css';
-
-import localeUK from '../localization/translated/uk.json';
-import localeRU from '../localization/translated/ru.json';
-import localeBE from '../localization/translated/be.json';
-
-import { Provider } from 'react-redux';
-import { store } from './store';
-
-const messages = {
- uk: localeUK,
- ru: localeRU,
- be: localeBE,
-};
-setIntlConfig({
- locales: ['en', 'uk', 'ru', 'be'],
- defaultLocale: 'en',
- getMessages: (lang) => {
- return messages[lang];
- },
-});
-
-const req = require.context('../src', true, /\.stories\.jsx?$/);
-
-function loadStories() {
- req.keys().forEach((filename) => req(filename));
-}
-
-addParameters({
- options: {
- /**
- * name to display in the top left corner
- * @type {String}
- */
- name: 'Report Portal',
- /**
- * URL for name in top left corner to link to
- * @type {String}
- */
- url: '#',
- /**
- * show story component as full screen
- * @type {Boolean}
- */
- goFullScreen: false,
- /**
- * display left panel that shows a list of stories
- * @type {Boolean}
- */
- showLeftPanel: true,
- /**
- * display horizontal panel that displays addon configurations
- * @type {Boolean}
- */
- showDownPanel: true,
- /**
- * display floating search box to search through stories
- * @type {Boolean}
- */
- showSearchBox: false,
- /**
- * show horizontal addons panel as a vertical panel on the right
- * @type {Boolean}
- */
- downPanelInRight: false,
- /**
- * sorts stories
- * @type {Boolean}
- */
- sortStoriesByKind: false,
- /**
- * regex for finding the hierarchy separator
- * @example:
- * null - turn off hierarchy
- * /\// - split by `/`
- * /\./ - split by `.`
- * /\/|\./ - split by `/` or `.`
- * @type {Regex}
- */
- hierarchySeparator: '/',
-
- /**
- * sidebar tree animations
- * @type {Boolean}
- */
- sidebarAnimations: false,
-
- /**
- * id to select an addon panel
- * @type {String}
- */
- selectedAddonPanel: undefined, // The order of addons in the "Addons Panel" is the same as you import them in 'addons.js'. The first panel will be opened by default as you run Storybook
- },
-});
-
-addDecorator((story) =>
{caption}
} +