From e5c525096144f9a54d56d09090d2ed93f599f256 Mon Sep 17 00:00:00 2001 From: Youssef Date: Wed, 23 Feb 2022 23:37:23 +0100 Subject: [PATCH 1/6] fix: replace empty name for admin in project access --- .../ProjectAccessAddUser/ProjectAccessAddUser.tsx | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/frontend/src/component/project/ProjectAccess/ProjectAccessAddUser/ProjectAccessAddUser.tsx b/frontend/src/component/project/ProjectAccess/ProjectAccessAddUser/ProjectAccessAddUser.tsx index 26116a29f9..929f06f1b1 100644 --- a/frontend/src/component/project/ProjectAccess/ProjectAccessAddUser/ProjectAccessAddUser.tsx +++ b/frontend/src/component/project/ProjectAccess/ProjectAccessAddUser/ProjectAccessAddUser.tsx @@ -147,8 +147,9 @@ export const ProjectAccessAddUser = ({ roles }: IProjectAccessAddUserProps) => { }; const getOptionLabel = (option: IProjectAccessUser) => { + console.log(option); if (option) { - return `${option.name || '(Empty name)'} <${ + return `${option.name || option.username || '(Empty name)'} <${ option.email || option.username }>`; } else return ''; From 470e3b9656d7cc84112c7d01fe729f9625412d29 Mon Sep 17 00:00:00 2001 From: Youssef Khedher Date: Fri, 25 Feb 2022 16:26:09 +0100 Subject: [PATCH 2/6] fix: remove console log --- .../ProjectAccess/ProjectAccessAddUser/ProjectAccessAddUser.tsx | 1 - 1 file changed, 1 deletion(-) diff --git a/frontend/src/component/project/ProjectAccess/ProjectAccessAddUser/ProjectAccessAddUser.tsx b/frontend/src/component/project/ProjectAccess/ProjectAccessAddUser/ProjectAccessAddUser.tsx index 929f06f1b1..c396caa35c 100644 --- a/frontend/src/component/project/ProjectAccess/ProjectAccessAddUser/ProjectAccessAddUser.tsx +++ b/frontend/src/component/project/ProjectAccess/ProjectAccessAddUser/ProjectAccessAddUser.tsx @@ -147,7 +147,6 @@ export const ProjectAccessAddUser = ({ roles }: IProjectAccessAddUserProps) => { }; const getOptionLabel = (option: IProjectAccessUser) => { - console.log(option); if (option) { return `${option.name || option.username || '(Empty name)'} <${ option.email || option.username From 58667565f2c8693154323e17b914668ef6352612 Mon Sep 17 00:00:00 2001 From: olav Date: Tue, 1 Mar 2022 10:35:20 +0100 Subject: [PATCH 3/6] refactor: fix sorting features by last seen and created at (#755) --- frontend/src/hooks/useFeaturesSort.ts | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-) diff --git a/frontend/src/hooks/useFeaturesSort.ts b/frontend/src/hooks/useFeaturesSort.ts index a72c2fc295..fd5415c246 100644 --- a/frontend/src/hooks/useFeaturesSort.ts +++ b/frontend/src/hooks/useFeaturesSort.ts @@ -109,17 +109,19 @@ const sortByLastSeen = ( ): IFeatureToggle[] => { return [...features].sort((a, b) => a.lastSeenAt && b.lastSeenAt - ? a.lastSeenAt.localeCompare(b.lastSeenAt) - : 0 + ? b.lastSeenAt.localeCompare(a.lastSeenAt) + : a.lastSeenAt + ? -1 + : b.lastSeenAt + ? 1 + : b.createdAt.localeCompare(a.createdAt) ); }; const sortByCreated = ( features: Readonly ): IFeatureToggle[] => { - return [...features].sort((a, b) => - new Date(a.createdAt) > new Date(b.createdAt) ? -1 : 1 - ); + return [...features].sort((a, b) => b.createdAt.localeCompare(a.createdAt)); }; const sortByName = (features: Readonly): IFeatureToggle[] => { From c7dedecf709b007caff2f53ef00d14920c681034 Mon Sep 17 00:00:00 2001 From: olav Date: Tue, 1 Mar 2022 10:56:38 +0100 Subject: [PATCH 4/6] refactor: remove craco and wdyr (#753) --- frontend/README.md | 19 +--- frontend/craco.config.js | 37 -------- frontend/package.json | 2 - frontend/src/index.tsx | 3 - frontend/src/wdyr.ts | 10 --- frontend/yarn.lock | 181 +-------------------------------------- 6 files changed, 4 insertions(+), 248 deletions(-) delete mode 100644 frontend/craco.config.js delete mode 100644 frontend/src/wdyr.ts diff --git a/frontend/README.md b/frontend/README.md index 2466d50fa0..8b85894d87 100644 --- a/frontend/README.md +++ b/frontend/README.md @@ -1,21 +1,4 @@ -# Developing - -## Why did you render - -This application is set up with [WDYR](https://github.com/welldone-software/why-did-you-render) and [craco](https://github.com/gsoft-inc/craco) in order to find, debug and remove uneccesary re-renders. This configuration can be found in /src/wdyr.ts. - -In order to turn it on, change the configuration accordingly: - -``` -if (process.env.NODE_ENV === 'development') { - const whyDidYouRender = require('@welldone-software/why-did-you-render'); - whyDidYouRender(React, { - trackAllPureComponents: true, - }); -} -``` - -Now you should be able to review rendering information in the console. If you do utilise this functionality, please remember to set the configuration back to spare other developers the noise in the console. +# unleash-frontend ## Run with a local instance of the unleash-api: diff --git a/frontend/craco.config.js b/frontend/craco.config.js deleted file mode 100644 index b4b841ff29..0000000000 --- a/frontend/craco.config.js +++ /dev/null @@ -1,37 +0,0 @@ -const presetReact = require('@babel/preset-react').default; -const presetCRA = require('babel-preset-react-app'); - -module.exports = { - babel: { - loaderOptions: (babelLoaderOptions, { env, paths }) => { - const origBabelPresetReactAppIndex = babelLoaderOptions.presets.findIndex( - preset => { - return preset[0].includes('babel-preset-react-app'); - } - ); - - if (origBabelPresetReactAppIndex === -1) { - return babelLoaderOptions; - } - - const overridenBabelPresetReactApp = (...args) => { - const babelPresetReactAppResult = presetCRA(...args); - const origPresetReact = babelPresetReactAppResult.presets.find( - preset => { - return preset[0] === presetReact; - } - ); - Object.assign(origPresetReact[1], { - importSource: '@welldone-software/why-did-you-render', - }); - return babelPresetReactAppResult; - }; - - babelLoaderOptions.presets[ - origBabelPresetReactAppIndex - ] = overridenBabelPresetReactApp; - - return babelLoaderOptions; - }, - }, -}; diff --git a/frontend/package.json b/frontend/package.json index 5f99cb7c76..751d8cefc7 100644 --- a/frontend/package.json +++ b/frontend/package.json @@ -56,12 +56,10 @@ "@types/react-router-dom": "5.3.3", "@types/react-test-renderer": "17.0.1", "@types/react-timeago": "4.1.3", - "@welldone-software/why-did-you-render": "6.2.3", "chart.js": "3.7.1", "chartjs-adapter-date-fns": "2.0.0", "classnames": "2.3.1", "copy-to-clipboard": "3.3.1", - "craco": "0.0.3", "css-loader": "6.6.0", "cypress": "9.5.1", "date-fns": "2.28.0", diff --git a/frontend/src/index.tsx b/frontend/src/index.tsx index 4731d0294b..5c8fff500a 100644 --- a/frontend/src/index.tsx +++ b/frontend/src/index.tsx @@ -1,6 +1,4 @@ -import './wdyr'; import 'whatwg-fetch'; - import './app.css'; import ReactDOM from 'react-dom'; @@ -9,7 +7,6 @@ import { ThemeProvider, CssBaseline } from '@material-ui/core'; import { DndProvider } from 'react-dnd'; import { HTML5Backend } from 'react-dnd-html5-backend'; import { StylesProvider } from '@material-ui/core/styles'; - import mainTheme from './themes/main-theme'; import { App } from './component/App'; import ScrollToTop from './component/scroll-to-top'; diff --git a/frontend/src/wdyr.ts b/frontend/src/wdyr.ts deleted file mode 100644 index 6d7fa887d0..0000000000 --- a/frontend/src/wdyr.ts +++ /dev/null @@ -1,10 +0,0 @@ -/// - -import React from 'react'; - -if (process.env.NODE_ENV === 'development') { - const whyDidYouRender = require('@welldone-software/why-did-you-render'); - whyDidYouRender(React, { - trackAllPureComponents: false, - }); -} diff --git a/frontend/yarn.lock b/frontend/yarn.lock index b22657be95..f67517aaf9 100644 --- a/frontend/yarn.lock +++ b/frontend/yarn.lock @@ -28,11 +28,6 @@ resolved "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.13.12.tgz" integrity sha512-3eJJ841uKxeV8dcN/2yGEUy+RfgQspPEgQat85umsE1rotuquQ2AbIub4S6j7c50a2d+4myc+zSlnXeIHrOnhQ== -"@babel/compat-data@^7.13.15": - version "7.14.0" - resolved "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.14.0.tgz" - integrity sha512-vu9V3uMM/1o5Hl5OekMUowo3FqXLJSw+s+66nt0fSWVWTtmosdzn45JHOB3cPtZoe6CTBDzvSw0RdOY85Q37+Q== - "@babel/core@7.12.3": version "7.12.3" resolved "https://registry.npmjs.org/@babel/core/-/core-7.12.3.tgz" @@ -76,27 +71,6 @@ semver "^6.3.0" source-map "^0.5.0" -"@babel/core@^7.6.0": - version "7.14.0" - resolved "https://registry.npmjs.org/@babel/core/-/core-7.14.0.tgz" - integrity sha512-8YqpRig5NmIHlMLw09zMlPTvUVMILjqCOtVgu+TVNWEBvy9b5I3RRyhqnrV4hjgEK7n8P9OqvkWJAFmEL6Wwfw== - dependencies: - "@babel/code-frame" "^7.12.13" - "@babel/generator" "^7.14.0" - "@babel/helper-compilation-targets" "^7.13.16" - "@babel/helper-module-transforms" "^7.14.0" - "@babel/helpers" "^7.14.0" - "@babel/parser" "^7.14.0" - "@babel/template" "^7.12.13" - "@babel/traverse" "^7.14.0" - "@babel/types" "^7.14.0" - convert-source-map "^1.7.0" - debug "^4.1.0" - gensync "^1.0.0-beta.2" - json5 "^2.1.2" - semver "^6.3.0" - source-map "^0.5.0" - "@babel/generator@^7.12.1", "@babel/generator@^7.13.9": version "7.13.9" resolved "https://registry.npmjs.org/@babel/generator/-/generator-7.13.9.tgz" @@ -106,15 +80,6 @@ jsesc "^2.5.1" source-map "^0.5.0" -"@babel/generator@^7.14.0": - version "7.14.1" - resolved "https://registry.npmjs.org/@babel/generator/-/generator-7.14.1.tgz" - integrity sha512-TMGhsXMXCP/O1WtQmZjpEYDhCYC9vFhayWZPJSZCGkPJgUqX0rF0wwtrYvnzVxIjcF80tkUertXVk5cwqi5cAQ== - dependencies: - "@babel/types" "^7.14.1" - jsesc "^2.5.1" - source-map "^0.5.0" - "@babel/helper-annotate-as-pure@^7.10.4", "@babel/helper-annotate-as-pure@^7.12.13": version "7.12.13" resolved "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.12.13.tgz" @@ -140,16 +105,6 @@ browserslist "^4.14.5" semver "^6.3.0" -"@babel/helper-compilation-targets@^7.13.16": - version "7.13.16" - resolved "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.13.16.tgz" - integrity sha512-3gmkYIrpqsLlieFwjkGgLaSHmhnvlAYzZLlYVjlW+QwI+1zE17kGxuJGmIqDQdYp56XdmGeD+Bswx0UTyG18xA== - dependencies: - "@babel/compat-data" "^7.13.15" - "@babel/helper-validator-option" "^7.12.17" - browserslist "^4.14.5" - semver "^6.3.0" - "@babel/helper-create-class-features-plugin@^7.12.1", "@babel/helper-create-class-features-plugin@^7.13.0": version "7.13.11" resolved "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.13.11.tgz" @@ -242,20 +197,6 @@ "@babel/traverse" "^7.13.13" "@babel/types" "^7.13.14" -"@babel/helper-module-transforms@^7.14.0": - version "7.14.0" - resolved "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.14.0.tgz" - integrity sha512-L40t9bxIuGOfpIGA3HNkJhU9qYrf4y5A5LUSw7rGMSn+pcG8dfJ0g6Zval6YJGd2nEjI7oP00fRdnhLKndx6bw== - dependencies: - "@babel/helper-module-imports" "^7.13.12" - "@babel/helper-replace-supers" "^7.13.12" - "@babel/helper-simple-access" "^7.13.12" - "@babel/helper-split-export-declaration" "^7.12.13" - "@babel/helper-validator-identifier" "^7.14.0" - "@babel/template" "^7.12.13" - "@babel/traverse" "^7.14.0" - "@babel/types" "^7.14.0" - "@babel/helper-optimise-call-expression@^7.12.13": version "7.12.13" resolved "https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.12.13.tgz" @@ -313,11 +254,6 @@ resolved "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.12.11.tgz" integrity sha512-np/lG3uARFybkoHokJUmf1QfEvRVCPbmQeUQpKow5cQ3xWrV9i3rUHodKDJPQfTVX61qKi+UdYk8kik84n7XOw== -"@babel/helper-validator-identifier@^7.14.0": - version "7.14.0" - resolved "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.14.0.tgz" - integrity sha512-V3ts7zMSu5lfiwWDVWzRDGIN+lnCEUdaXgtVHJgLb1rGaA6jMrtB9EmE7L18foXJIE8Un/A/h6NJfGQp/e1J4A== - "@babel/helper-validator-option@^7.12.1", "@babel/helper-validator-option@^7.12.17": version "7.12.17" resolved "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.12.17.tgz" @@ -342,15 +278,6 @@ "@babel/traverse" "^7.13.0" "@babel/types" "^7.13.0" -"@babel/helpers@^7.14.0": - version "7.14.0" - resolved "https://registry.npmjs.org/@babel/helpers/-/helpers-7.14.0.tgz" - integrity sha512-+ufuXprtQ1D1iZTO/K9+EBRn+qPWMJjZSw/S0KlFrxCw4tkrzv9grgpDHkY9MeQTjTY8i2sp7Jep8DfU6tN9Mg== - dependencies: - "@babel/template" "^7.12.13" - "@babel/traverse" "^7.14.0" - "@babel/types" "^7.14.0" - "@babel/highlight@^7.10.4", "@babel/highlight@^7.12.13": version "7.13.10" resolved "https://registry.npmjs.org/@babel/highlight/-/highlight-7.13.10.tgz" @@ -365,11 +292,6 @@ resolved "https://registry.npmjs.org/@babel/parser/-/parser-7.13.13.tgz" integrity sha512-OhsyMrqygfk5v8HmWwOzlYjJrtLaFhF34MrfG/Z73DgYCI6ojNUTUp2TYbtnjo8PegeJp12eamsNettCQjKjVw== -"@babel/parser@^7.14.0": - version "7.14.1" - resolved "https://registry.npmjs.org/@babel/parser/-/parser-7.14.1.tgz" - integrity sha512-muUGEKu8E/ftMTPlNp+mc6zL3E9zKWmF5sDHZ5MSsoTP9Wyz64AhEf9kD08xYJ7w6Hdcu8H550ircnPyWSIF0Q== - "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining@^7.13.12": version "7.13.12" resolved "https://registry.npmjs.org/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining/-/plugin-bugfix-v8-spread-parameters-in-optional-chaining-7.13.12.tgz" @@ -1235,20 +1157,6 @@ debug "^4.1.0" globals "^11.1.0" -"@babel/traverse@^7.14.0": - version "7.14.0" - resolved "https://registry.npmjs.org/@babel/traverse/-/traverse-7.14.0.tgz" - integrity sha512-dZ/a371EE5XNhTHomvtuLTUyx6UEoJmYX+DT5zBCQN3McHemsuIaKKYqsc/fs26BEkHs/lBZy0J571LP5z9kQA== - dependencies: - "@babel/code-frame" "^7.12.13" - "@babel/generator" "^7.14.0" - "@babel/helper-function-name" "^7.12.13" - "@babel/helper-split-export-declaration" "^7.12.13" - "@babel/parser" "^7.14.0" - "@babel/types" "^7.14.0" - debug "^4.1.0" - globals "^11.1.0" - "@babel/types@^7.0.0", "@babel/types@^7.12.1", "@babel/types@^7.12.13", "@babel/types@^7.12.6", "@babel/types@^7.13.0", "@babel/types@^7.13.12", "@babel/types@^7.13.13", "@babel/types@^7.13.14", "@babel/types@^7.3.0", "@babel/types@^7.3.3", "@babel/types@^7.4.4", "@babel/types@^7.7.0": version "7.13.14" resolved "https://registry.npmjs.org/@babel/types/-/types-7.13.14.tgz" @@ -1258,14 +1166,6 @@ lodash "^4.17.19" to-fast-properties "^2.0.0" -"@babel/types@^7.14.0", "@babel/types@^7.14.1": - version "7.14.1" - resolved "https://registry.npmjs.org/@babel/types/-/types-7.14.1.tgz" - integrity sha512-S13Qe85fzLs3gYRUnrpyeIrBJIMYv33qSTg1qoBwiG6nPKwUWAD9odSzWhEedpwOIzSEI6gbdQIWEMiCI42iBA== - dependencies: - "@babel/helper-validator-identifier" "^7.14.0" - to-fast-properties "^2.0.0" - "@bcoe/v8-coverage@^0.2.3": version "0.2.3" resolved "https://registry.npmjs.org/@bcoe/v8-coverage/-/v8-coverage-0.2.3.tgz" @@ -1279,15 +1179,6 @@ exec-sh "^0.3.2" minimist "^1.2.0" -"@craco/craco@^5.5.0": - version "5.9.0" - resolved "https://registry.npmjs.org/@craco/craco/-/craco-5.9.0.tgz" - integrity sha512-2Q8gIB4W0/nPiUxr9iAKUhGsFlXYN0/wngUdK1VWtfV2NtBv+yllNn2AjieaLbttgpQinuOYmDU65vocC0NMDg== - dependencies: - cross-spawn "^7.0.0" - lodash "^4.17.15" - webpack-merge "^4.2.2" - "@csstools/convert-colors@^1.4.0": version "1.4.0" resolved "https://registry.npmjs.org/@csstools/convert-colors/-/convert-colors-1.4.0.tgz" @@ -1940,7 +1831,7 @@ resolved "https://registry.npmjs.org/@types/aria-query/-/aria-query-4.2.1.tgz" integrity sha512-S6oPal772qJZHoRZLFc/XoZW2gFvwXusYUmXPXkgxJLuEk2vOt7jc4Yo6z/vtI0EBkbPBVrJJ0B+prLIKiWqHg== -"@types/babel__core@^7.0.0", "@types/babel__core@^7.1.3", "@types/babel__core@^7.1.7": +"@types/babel__core@^7.0.0", "@types/babel__core@^7.1.7": version "7.1.14" resolved "https://registry.npmjs.org/@types/babel__core/-/babel__core-7.1.14.tgz" integrity sha512-zGZJzzBUVDo/eV6KgbE0f0ZI7dInEYvo12Rb70uNQDshC3SkRMb67ja0GgRHZgAX3Za6rhaWlvbDO8rrGyAb1g== @@ -2263,18 +2154,6 @@ "@types/source-list-map" "*" source-map "^0.7.3" -"@types/webpack@^4.39.2": - version "4.41.28" - resolved "https://registry.npmjs.org/@types/webpack/-/webpack-4.41.28.tgz" - integrity sha512-Nn84RAiJjKRfPFFCVR8LC4ueTtTdfWAMZ03THIzZWRJB+rX24BD3LqPSFnbMscWauEsT4segAsylPDIaZyZyLQ== - dependencies: - "@types/anymatch" "*" - "@types/node" "*" - "@types/tapable" "^1" - "@types/uglify-js" "*" - "@types/webpack-sources" "*" - source-map "^0.6.0" - "@types/webpack@^4.41.8": version "4.41.27" resolved "https://registry.npmjs.org/@types/webpack/-/webpack-4.41.27.tgz" @@ -2565,13 +2444,6 @@ "@webassemblyjs/wast-parser" "1.9.0" "@xtuc/long" "4.2.2" -"@welldone-software/why-did-you-render@6.2.3": - version "6.2.3" - resolved "https://registry.yarnpkg.com/@welldone-software/why-did-you-render/-/why-did-you-render-6.2.3.tgz#cdd5e27cf25b7e767c1c0b0e8808f67d3f6be833" - integrity sha512-FQgi90jvC9uw2aALlonJfqaWOvU5UUBBVvdAnS2iryXwCc4YJkKsPJY5Y/LzaND3OIyk8XGUn1vTRn6hcem28Q== - dependencies: - lodash "^4" - "@xtuc/ieee754@^1.2.0": version "1.2.0" resolved "https://registry.npmjs.org/@xtuc/ieee754/-/ieee754-1.2.0.tgz" @@ -4166,17 +4038,6 @@ cosmiconfig@^7.0.0: path-type "^4.0.0" yaml "^1.10.0" -craco@0.0.3: - version "0.0.3" - resolved "https://registry.npmjs.org/craco/-/craco-0.0.3.tgz" - integrity sha512-eeibbwJm1CTf/j3xvNgNmsRS7abegp4Cfm5qtn5nE9/0JjZRas+FHj8IlT8FMFWR0XOyZFGcWZgzaTU19DNGoQ== - dependencies: - "@babel/core" "^7.6.0" - "@craco/craco" "^5.5.0" - "@types/babel__core" "^7.1.3" - "@types/webpack" "^4.39.2" - webpack "^4.41.0" - create-ecdh@^4.0.0: version "4.0.4" resolved "https://registry.npmjs.org/create-ecdh/-/create-ecdh-4.0.4.tgz" @@ -5030,7 +4891,7 @@ end-of-stream@^1.0.0, end-of-stream@^1.1.0: dependencies: once "^1.4.0" -enhanced-resolve@^4.3.0, enhanced-resolve@^4.5.0: +enhanced-resolve@^4.3.0: version "4.5.0" resolved "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-4.5.0.tgz" integrity sha512-Nv9m36S/vxpsI+Hc4/ZGRs0n9mXqSWGGq49zxb/cJfPAQMbUtttJAlNPS4AQzaBdw/pKskw5bMbekT/Y7W/Wlg== @@ -8025,7 +7886,7 @@ lodash.uniq@^4.5.0: resolved "https://registry.npmjs.org/lodash.uniq/-/lodash.uniq-4.5.0.tgz" integrity sha1-0CJTc662Uq3BvILklFM5qEJ1R3M= -"lodash@>=3.5 <5", lodash@^4, lodash@^4.17.11, lodash@^4.17.14, lodash@^4.17.15, lodash@^4.17.19, lodash@^4.17.20, lodash@^4.17.21, lodash@^4.17.5, lodash@^4.7.0: +"lodash@>=3.5 <5", lodash@^4.17.11, lodash@^4.17.14, lodash@^4.17.15, lodash@^4.17.19, lodash@^4.17.20, lodash@^4.17.21, lodash@^4.17.5, lodash@^4.7.0: version "4.17.21" resolved "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz" integrity sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg== @@ -12536,13 +12397,6 @@ webpack-manifest-plugin@2.2.0: object.entries "^1.1.0" tapable "^1.0.0" -webpack-merge@^4.2.2: - version "4.2.2" - resolved "https://registry.npmjs.org/webpack-merge/-/webpack-merge-4.2.2.tgz" - integrity sha512-TUE1UGoTX2Cd42j3krGYqObZbOD+xF7u28WB7tfUordytSjbWTIjK/8V0amkBfTYN4/pB/GIDlJZZ657BGG19g== - dependencies: - lodash "^4.17.15" - webpack-sources@^1.1.0, webpack-sources@^1.3.0, webpack-sources@^1.4.0, webpack-sources@^1.4.1, webpack-sources@^1.4.3: version "1.4.3" resolved "https://registry.npmjs.org/webpack-sources/-/webpack-sources-1.4.3.tgz" @@ -12580,35 +12434,6 @@ webpack@4.44.2: watchpack "^1.7.4" webpack-sources "^1.4.1" -webpack@^4.41.0: - version "4.46.0" - resolved "https://registry.npmjs.org/webpack/-/webpack-4.46.0.tgz" - integrity sha512-6jJuJjg8znb/xRItk7bkT0+Q7AHCYjjFnvKIWQPkNIOyRqoCGvkOs0ipeQzrqz4l5FtN5ZI/ukEHroeX/o1/5Q== - dependencies: - "@webassemblyjs/ast" "1.9.0" - "@webassemblyjs/helper-module-context" "1.9.0" - "@webassemblyjs/wasm-edit" "1.9.0" - "@webassemblyjs/wasm-parser" "1.9.0" - acorn "^6.4.1" - ajv "^6.10.2" - ajv-keywords "^3.4.1" - chrome-trace-event "^1.0.2" - enhanced-resolve "^4.5.0" - eslint-scope "^4.0.3" - json-parse-better-errors "^1.0.2" - loader-runner "^2.4.0" - loader-utils "^1.2.3" - memory-fs "^0.4.1" - micromatch "^3.1.10" - mkdirp "^0.5.3" - neo-async "^2.6.1" - node-libs-browser "^2.2.1" - schema-utils "^1.0.0" - tapable "^1.1.3" - terser-webpack-plugin "^1.4.3" - watchpack "^1.7.4" - webpack-sources "^1.4.1" - websocket-driver@>=0.5.1, websocket-driver@^0.7.4: version "0.7.4" resolved "https://registry.npmjs.org/websocket-driver/-/websocket-driver-0.7.4.tgz" From a78ae20fd6cd1de1a29ef1c39b9f6fccab9f995a Mon Sep 17 00:00:00 2001 From: olav Date: Tue, 1 Mar 2022 12:58:14 +0100 Subject: [PATCH 5/6] refactor: remove unused deps (#757) * refactor: remove unused script * refactor: remove unused deps --- frontend/package.json | 6 +-- frontend/yarn.lock | 86 +++---------------------------------------- 2 files changed, 6 insertions(+), 86 deletions(-) diff --git a/frontend/package.json b/frontend/package.json index 751d8cefc7..5ff2e5e64c 100644 --- a/frontend/package.json +++ b/frontend/package.json @@ -29,7 +29,6 @@ "start": "react-scripts start", "start:heroku": "UNLEASH_API=https://unleash.herokuapp.com yarn run start", "start:ea": "UNLEASH_API=https://unleash4.herokuapp.com yarn run start", - "start:demo": "UNLEASH_API=http://unleash.herokuapp.com yarn run start", "test": "react-scripts test", "prepare": "yarn run build", "fmt": "prettier src --write --loglevel warn", @@ -60,7 +59,6 @@ "chartjs-adapter-date-fns": "2.0.0", "classnames": "2.3.1", "copy-to-clipboard": "3.3.1", - "css-loader": "6.6.0", "cypress": "9.5.1", "date-fns": "2.28.0", "debounce": "1.2.1", @@ -68,7 +66,6 @@ "fast-json-patch": "3.1.0", "http-proxy-middleware": "2.0.3", "lodash.clonedeep": "4.5.0", - "lodash.flow": "3.5.0", "prettier": "2.5.1", "prop-types": "15.8.1", "react": "17.0.2", @@ -83,8 +80,7 @@ "react-timeago": "6.2.1", "sass": "1.49.9", "swr": "1.2.2", - "typescript": "4.6.2", - "web-vitals": "2.1.4" + "typescript": "4.6.2" }, "jest": { "moduleNameMapper": { diff --git a/frontend/yarn.lock b/frontend/yarn.lock index f67517aaf9..224c1144a7 100644 --- a/frontend/yarn.lock +++ b/frontend/yarn.lock @@ -4157,20 +4157,6 @@ css-loader@4.3.0: schema-utils "^2.7.1" semver "^7.3.2" -css-loader@6.6.0: - version "6.6.0" - resolved "https://registry.yarnpkg.com/css-loader/-/css-loader-6.6.0.tgz#c792ad5510bd1712618b49381bd0310574fafbd3" - integrity sha512-FK7H2lisOixPT406s5gZM1S3l8GrfhEBT3ZiL2UX1Ng1XWs0y2GPllz/OTyvbaHe12VgQrIXIzuEGVlbUhodqg== - dependencies: - icss-utils "^5.1.0" - postcss "^8.4.5" - postcss-modules-extract-imports "^3.0.0" - postcss-modules-local-by-default "^4.0.0" - postcss-modules-scope "^3.0.0" - postcss-modules-values "^4.0.0" - postcss-value-parser "^4.2.0" - semver "^7.3.5" - css-prefers-color-scheme@^3.1.1: version "3.1.1" resolved "https://registry.npmjs.org/css-prefers-color-scheme/-/css-prefers-color-scheme-3.1.1.tgz" @@ -6333,11 +6319,6 @@ icss-utils@^4.0.0, icss-utils@^4.1.1: dependencies: postcss "^7.0.14" -icss-utils@^5.0.0, icss-utils@^5.1.0: - version "5.1.0" - resolved "https://registry.npmjs.org/icss-utils/-/icss-utils-5.1.0.tgz" - integrity sha512-soFhflCVWLfRNOPU3iv5Z9VUdT44xFRbzjLsEzSr5AQmgqPMTHdU3PMT1Cf1ssx8fLNJDA1juftYl+PUcv3MqA== - identity-obj-proxy@3.0.0: version "3.0.0" resolved "https://registry.npmjs.org/identity-obj-proxy/-/identity-obj-proxy-3.0.0.tgz" @@ -7846,11 +7827,6 @@ lodash.flatten@^4.4.0: resolved "https://registry.npmjs.org/lodash.flatten/-/lodash.flatten-4.4.0.tgz" integrity sha1-8xwiIlqWMtK7+OSt2+8kCqdlph8= -lodash.flow@3.5.0: - version "3.5.0" - resolved "https://registry.npmjs.org/lodash.flow/-/lodash.flow-3.5.0.tgz" - integrity sha1-h79AKSuM+D5OjOGjrkIJ4gBxZ1o= - lodash.memoize@^4.1.2: version "4.1.2" resolved "https://registry.npmjs.org/lodash.memoize/-/lodash.memoize-4.1.2.tgz" @@ -8292,7 +8268,7 @@ nanocolors@^0.2.2: resolved "https://registry.npmjs.org/nanocolors/-/nanocolors-0.2.12.tgz" integrity sha512-SFNdALvzW+rVlzqexid6epYdt8H9Zol7xDoQarioEFcFN0JHo4CYNztAxmtfgGTVRCmFlEOqqhBpoFGKqSAMug== -nanoid@^3.1.25, nanoid@^3.2.0: +nanoid@^3.1.25: version "3.3.1" resolved "https://registry.yarnpkg.com/nanoid/-/nanoid-3.3.1.tgz#6347a18cac88af88f58af0b3594b723d5e99bb35" integrity sha512-n6Vs/3KGyxPQd6uO0eH4Bv0ojGSUvuLlIHtC3Y0kEO23YRge8H9x1GCzLn28YX0H66pMkxuaeESFq4tKISKwdw== @@ -8942,11 +8918,6 @@ performance-now@^2.1.0: resolved "https://registry.npmjs.org/performance-now/-/performance-now-2.1.0.tgz" integrity sha1-Ywn04OX6kT7BxpMHrjZLSzd8nns= -picocolors@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/picocolors/-/picocolors-1.0.0.tgz#cb5bdc74ff3f51892236eaf79d68bc44564ab81c" - integrity sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ== - picomatch@^2.0.4, picomatch@^2.0.5, picomatch@^2.2.1, picomatch@^2.2.2: version "2.2.2" resolved "https://registry.npmjs.org/picomatch/-/picomatch-2.2.2.tgz" @@ -9356,11 +9327,6 @@ postcss-modules-extract-imports@^2.0.0: dependencies: postcss "^7.0.5" -postcss-modules-extract-imports@^3.0.0: - version "3.0.0" - resolved "https://registry.npmjs.org/postcss-modules-extract-imports/-/postcss-modules-extract-imports-3.0.0.tgz" - integrity sha512-bdHleFnP3kZ4NYDhuGlVK+CMrQ/pqUm8bx/oGL93K6gVwiclvX5x0n76fYMKuIGKzlABOy13zsvqjb0f92TEXw== - postcss-modules-local-by-default@^3.0.3: version "3.0.3" resolved "https://registry.npmjs.org/postcss-modules-local-by-default/-/postcss-modules-local-by-default-3.0.3.tgz" @@ -9371,15 +9337,6 @@ postcss-modules-local-by-default@^3.0.3: postcss-selector-parser "^6.0.2" postcss-value-parser "^4.1.0" -postcss-modules-local-by-default@^4.0.0: - version "4.0.0" - resolved "https://registry.npmjs.org/postcss-modules-local-by-default/-/postcss-modules-local-by-default-4.0.0.tgz" - integrity sha512-sT7ihtmGSF9yhm6ggikHdV0hlziDTX7oFoXtuVWeDd3hHObNkcHRo9V3yg7vCAY7cONyxJC/XXCmmiHHcvX7bQ== - dependencies: - icss-utils "^5.0.0" - postcss-selector-parser "^6.0.2" - postcss-value-parser "^4.1.0" - postcss-modules-scope@^2.2.0: version "2.2.0" resolved "https://registry.npmjs.org/postcss-modules-scope/-/postcss-modules-scope-2.2.0.tgz" @@ -9388,13 +9345,6 @@ postcss-modules-scope@^2.2.0: postcss "^7.0.6" postcss-selector-parser "^6.0.0" -postcss-modules-scope@^3.0.0: - version "3.0.0" - resolved "https://registry.npmjs.org/postcss-modules-scope/-/postcss-modules-scope-3.0.0.tgz" - integrity sha512-hncihwFA2yPath8oZ15PZqvWGkWf+XUfQgUGamS4LqoP1anQLOsOJw0vr7J7IwLpoY9fatA2qiGUGmuZL0Iqlg== - dependencies: - postcss-selector-parser "^6.0.4" - postcss-modules-values@^3.0.0: version "3.0.0" resolved "https://registry.npmjs.org/postcss-modules-values/-/postcss-modules-values-3.0.0.tgz" @@ -9403,13 +9353,6 @@ postcss-modules-values@^3.0.0: icss-utils "^4.0.0" postcss "^7.0.6" -postcss-modules-values@^4.0.0: - version "4.0.0" - resolved "https://registry.npmjs.org/postcss-modules-values/-/postcss-modules-values-4.0.0.tgz" - integrity sha512-RDxHkAiEGI78gS2ofyvCsu7iycRv7oqw5xMWn9iMoR0N/7mf9D50ecQqUo5BZ9Zh2vH4bCUR/ktCqbB9m8vJjQ== - dependencies: - icss-utils "^5.0.0" - postcss-nesting@^7.0.0: version "7.0.1" resolved "https://registry.npmjs.org/postcss-nesting/-/postcss-nesting-7.0.1.tgz" @@ -9659,7 +9602,7 @@ postcss-selector-parser@^5.0.0-rc.3, postcss-selector-parser@^5.0.0-rc.4: indexes-of "^1.0.1" uniq "^1.0.1" -postcss-selector-parser@^6.0.0, postcss-selector-parser@^6.0.2, postcss-selector-parser@^6.0.4: +postcss-selector-parser@^6.0.0, postcss-selector-parser@^6.0.2: version "6.0.4" resolved "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.0.4.tgz" integrity sha512-gjMeXBempyInaBqpp8gODmwZ52WaYsVOsfr4L4lDQ7n3ncD6mEyySiDtgzCT+NYC0mmeOLvtsF8iaEf0YT6dBw== @@ -9698,11 +9641,6 @@ postcss-value-parser@^4.0.2, postcss-value-parser@^4.1.0: resolved "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-4.1.0.tgz" integrity sha512-97DXOFbQJhk71ne5/Mt6cOu6yxsSfM0QGQyl0L25Gca4yGWEGJaig7l7gbCX623VqTBNGLRLaVUCnNkcedlRSQ== -postcss-value-parser@^4.2.0: - version "4.2.0" - resolved "https://registry.yarnpkg.com/postcss-value-parser/-/postcss-value-parser-4.2.0.tgz#723c09920836ba6d3e5af019f92bc0971c02e514" - integrity sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ== - postcss-values-parser@^2.0.0, postcss-values-parser@^2.0.1: version "2.0.1" resolved "https://registry.npmjs.org/postcss-values-parser/-/postcss-values-parser-2.0.1.tgz" @@ -9739,15 +9677,6 @@ postcss@^8.1.0: nanoid "^3.1.25" source-map-js "^0.6.2" -postcss@^8.4.5: - version "8.4.6" - resolved "https://registry.yarnpkg.com/postcss/-/postcss-8.4.6.tgz#c5ff3c3c457a23864f32cb45ac9b741498a09ae1" - integrity sha512-OovjwIzs9Te46vlEx7+uXB0PLijpwjXGKXjVGGPIGubGpq7uh5Xgf6D6FiJ/SzJMBosHDp6a2hiXOS97iBXcaA== - dependencies: - nanoid "^3.2.0" - picocolors "^1.0.0" - source-map-js "^1.0.2" - prelude-ls@^1.2.1: version "1.2.1" resolved "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz" @@ -10897,9 +10826,9 @@ semver@^6.0.0, semver@^6.1.1, semver@^6.1.2, semver@^6.3.0: resolved "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz" integrity sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw== -semver@^7.2.1, semver@^7.3.2, semver@^7.3.5: +semver@^7.2.1, semver@^7.3.2: version "7.3.5" - resolved "https://registry.npmjs.org/semver/-/semver-7.3.5.tgz" + resolved "https://registry.yarnpkg.com/semver/-/semver-7.3.5.tgz#0b621c879348d8998e4b0e4be94b3f12e6018ef7" integrity sha512-PoeGJYh8HK4BTO/a9Tf6ZG3veo/A7ZVsYrSA6J8ny9nb3B1VrpkuN+z9OE5wfE5p6H4LchYZsegiQgbJD94ZFQ== dependencies: lru-cache "^6.0.0" @@ -11144,7 +11073,7 @@ source-list-map@^2.0.0: resolved "https://registry.npmjs.org/source-list-map/-/source-list-map-2.0.1.tgz" integrity sha512-qnQ7gVMxGNxsiL4lEuJwe/To8UnK7fAnmbGEEH8RpLouuKbeEm0lhbQVFIrNSuB+G7tVrAlVsZgETT5nljf+Iw== -"source-map-js@>=0.6.2 <2.0.0", source-map-js@^1.0.2: +"source-map-js@>=0.6.2 <2.0.0": version "1.0.2" resolved "https://registry.yarnpkg.com/source-map-js/-/source-map-js-1.0.2.tgz#adbc361d9c62df380125e7f161f71c826f1e490c" integrity sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw== @@ -12314,11 +12243,6 @@ wbuf@^1.1.0, wbuf@^1.7.3: dependencies: minimalistic-assert "^1.0.0" -web-vitals@2.1.4: - version "2.1.4" - resolved "https://registry.yarnpkg.com/web-vitals/-/web-vitals-2.1.4.tgz#76563175a475a5e835264d373704f9dde718290c" - integrity sha512-sVWcwhU5mX6crfI5Vd2dC4qchyTqxV8URinzt25XqVh+bHEPGH4C3NPrNionCP7Obx59wrYEbNlw4Z8sjALzZg== - webidl-conversions@^5.0.0: version "5.0.0" resolved "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-5.0.0.tgz" From b9a3be7b3abc0c767fa43878f3f169623b9f775e Mon Sep 17 00:00:00 2001 From: olav Date: Tue, 1 Mar 2022 13:22:47 +0100 Subject: [PATCH 6/6] refactor: fix misc TS errors (#754) * refactor: fix PermissionSwitch event types * refactor: fix variant payload field name * refactor: fix IPermissionSwitchProps extension * refactor: add missing types in AddFeatureVariant * refactor: remove duplicate type * refactor: fix FeatureToggleListNewItem ref type * refactor: fix CreatedAt date prop type * refactor: add missing anchorEl ref types * refactor: fix createdAt prop value * refactor: fix IFeatureToggleListNewItemProps environments prop type * refactor: add missing ISelectOption type * refactor: fix ResponsiveButton prop types --- .../PermissionSwitch/PermissionSwitch.tsx | 9 ++- .../ResponsiveButton/ResponsiveButton.tsx | 3 +- .../FeatureToggleListNew.tsx | 2 +- .../FeatureToggleListNewItem/CreatedAt.tsx | 2 +- .../FeatureToggleListNewItem.tsx | 16 ++--- .../FeatureTypeSelect/FeatureTypeSelect.tsx | 6 +- .../AddFeatureVariant/AddFeatureVariant.tsx | 63 +++++++++---------- frontend/src/component/menu/Header/Header.tsx | 6 +- frontend/src/interfaces/featureToggle.ts | 9 +-- 9 files changed, 53 insertions(+), 63 deletions(-) diff --git a/frontend/src/component/common/PermissionSwitch/PermissionSwitch.tsx b/frontend/src/component/common/PermissionSwitch/PermissionSwitch.tsx index a9aa89e609..a131aea118 100644 --- a/frontend/src/component/common/PermissionSwitch/PermissionSwitch.tsx +++ b/frontend/src/component/common/PermissionSwitch/PermissionSwitch.tsx @@ -1,12 +1,11 @@ -import { Switch, Tooltip } from '@material-ui/core'; -import { OverridableComponent } from '@material-ui/core/OverridableComponent'; +import { Switch, Tooltip, SwitchProps } from '@material-ui/core'; import AccessContext from '../../../contexts/AccessContext'; import React, { useContext } from 'react'; -interface IPermissionSwitchProps extends OverridableComponent { +interface IPermissionSwitchProps extends SwitchProps { permission: string; - tooltip: string; - onChange?: (e: any) => void; + tooltip?: string; + onChange?: (e: React.ChangeEvent) => void; disabled?: boolean; projectId?: string; environmentId?: string; diff --git a/frontend/src/component/common/ResponsiveButton/ResponsiveButton.tsx b/frontend/src/component/common/ResponsiveButton/ResponsiveButton.tsx index 8e3f545293..abbc1dd614 100644 --- a/frontend/src/component/common/ResponsiveButton/ResponsiveButton.tsx +++ b/frontend/src/component/common/ResponsiveButton/ResponsiveButton.tsx @@ -9,10 +9,11 @@ interface IResponsiveButtonProps { onClick: () => void; tooltip?: string; disabled?: boolean; - permission?: string; + permission: string; projectId?: string; environmentId?: string; maxWidth: string; + className?: string; } const ResponsiveButton: React.FC = ({ diff --git a/frontend/src/component/feature/FeatureToggleListNew/FeatureToggleListNew.tsx b/frontend/src/component/feature/FeatureToggleListNew/FeatureToggleListNew.tsx index eaebceccea..e25cd84df7 100644 --- a/frontend/src/component/feature/FeatureToggleListNew/FeatureToggleListNew.tsx +++ b/frontend/src/component/feature/FeatureToggleListNew/FeatureToggleListNew.tsx @@ -135,7 +135,7 @@ const FeatureToggleListNew = ({ type={feature.type} environments={feature.environments} projectId={projectId} - createdAt={new Date()} + createdAt={new Date().toISOString()} /> ); }); diff --git a/frontend/src/component/feature/FeatureToggleListNew/FeatureToggleListNewItem/CreatedAt.tsx b/frontend/src/component/feature/FeatureToggleListNew/FeatureToggleListNewItem/CreatedAt.tsx index f7ba855579..ca243ca46a 100644 --- a/frontend/src/component/feature/FeatureToggleListNew/FeatureToggleListNewItem/CreatedAt.tsx +++ b/frontend/src/component/feature/FeatureToggleListNew/FeatureToggleListNewItem/CreatedAt.tsx @@ -3,7 +3,7 @@ import { useLocationSettings } from '../../../../hooks/useLocationSettings'; import { formatDateYMD, formatDateYMDHMS } from '../../../../utils/format-date'; interface CreatedAtProps { - time: Date; + time: string; } const CreatedAt = ({ time }: CreatedAtProps) => { diff --git a/frontend/src/component/feature/FeatureToggleListNew/FeatureToggleListNewItem/FeatureToggleListNewItem.tsx b/frontend/src/component/feature/FeatureToggleListNew/FeatureToggleListNewItem/FeatureToggleListNewItem.tsx index 39ffefbd8c..e5c27fa97b 100644 --- a/frontend/src/component/feature/FeatureToggleListNew/FeatureToggleListNewItem/FeatureToggleListNewItem.tsx +++ b/frontend/src/component/feature/FeatureToggleListNew/FeatureToggleListNewItem/FeatureToggleListNewItem.tsx @@ -1,15 +1,11 @@ -import { useRef, useState } from 'react'; +import React, { useRef, useState } from 'react'; import { TableCell, TableRow } from '@material-ui/core'; import { useHistory } from 'react-router'; import { useStyles } from '../FeatureToggleListNew.styles'; import useToggleFeatureByEnv from '../../../../hooks/api/actions/useToggleFeatureByEnv/useToggleFeatureByEnv'; -import { - IEnvironments, - IFeatureEnvironment, -} from '../../../../interfaces/featureToggle'; +import { IEnvironments } from '../../../../interfaces/featureToggle'; import useToast from '../../../../hooks/useToast'; import { getTogglePath } from '../../../../utils/route-path-helpers'; -import { SyntheticEvent } from 'react-router/node_modules/@types/react'; import useUiConfig from '../../../../hooks/api/getters/useUiConfig/useUiConfig'; import FeatureStatus from '../../FeatureView/FeatureStatus/FeatureStatus'; import FeatureType from '../../FeatureView/FeatureType/FeatureType'; @@ -25,7 +21,7 @@ import EnvironmentStrategyDialog from '../../../common/EnvironmentStrategiesDial interface IFeatureToggleListNewItemProps { name: string; type: string; - environments: IFeatureEnvironment[]; + environments: IEnvironments[]; projectId: string; lastSeenAt?: string; createdAt: string; @@ -49,7 +45,7 @@ const FeatureToggleListNewItem = ({ const { refetch } = useProject(projectId); const styles = useStyles(); const history = useHistory(); - const ref = useRef(null); + const ref = useRef(null); const [showInfoBox, setShowInfoBox] = useState(false); const [environmentName, setEnvironmentName] = useState(''); @@ -57,8 +53,8 @@ const FeatureToggleListNewItem = ({ setShowInfoBox(false); }; - const onClick = (e: SyntheticEvent) => { - if (!ref.current?.contains(e.target)) { + const onClick = (e: React.MouseEvent) => { + if (!ref.current?.contains(e.target as Node)) { history.push(getTogglePath(projectId, name)); } }; diff --git a/frontend/src/component/feature/FeatureView/FeatureSettings/FeatureSettingsMetadata/FeatureTypeSelect/FeatureTypeSelect.tsx b/frontend/src/component/feature/FeatureView/FeatureSettings/FeatureSettingsMetadata/FeatureTypeSelect/FeatureTypeSelect.tsx index 739096cb0c..2e926f795f 100644 --- a/frontend/src/component/feature/FeatureView/FeatureSettings/FeatureSettingsMetadata/FeatureTypeSelect/FeatureTypeSelect.tsx +++ b/frontend/src/component/feature/FeatureView/FeatureSettings/FeatureSettingsMetadata/FeatureTypeSelect/FeatureTypeSelect.tsx @@ -1,5 +1,7 @@ import useFeatureTypes from '../../../../../../hooks/api/getters/useFeatureTypes/useFeatureTypes'; -import GeneralSelect from '../../../../../common/GeneralSelect/GeneralSelect'; +import GeneralSelect, { + ISelectOption, +} from '../../../../../common/GeneralSelect/GeneralSelect'; const FeatureTypeSelect = ({ editable, @@ -11,7 +13,7 @@ const FeatureTypeSelect = ({ }) => { const { featureTypes } = useFeatureTypes(); - const options = featureTypes.map(t => ({ + const options: ISelectOption[] = featureTypes.map(t => ({ key: t.id, label: t.name, title: t.description, diff --git a/frontend/src/component/feature/FeatureView/FeatureVariants/FeatureVariantsList/AddFeatureVariant/AddFeatureVariant.tsx b/frontend/src/component/feature/FeatureView/FeatureVariants/FeatureVariantsList/AddFeatureVariant/AddFeatureVariant.tsx index cde71a704d..7d6ff0ef1b 100644 --- a/frontend/src/component/feature/FeatureView/FeatureVariants/FeatureVariantsList/AddFeatureVariant/AddFeatureVariant.tsx +++ b/frontend/src/component/feature/FeatureView/FeatureVariants/FeatureVariantsList/AddFeatureVariant/AddFeatureVariant.tsx @@ -1,4 +1,4 @@ -import React, { useEffect, useState } from 'react'; +import React, { useEffect, useState, ChangeEvent } from 'react'; import { Button, FormControl, @@ -9,25 +9,20 @@ import { Tooltip, } from '@material-ui/core'; import { Info } from '@material-ui/icons'; - import { weightTypes } from './enums'; - import { OverrideConfig } from './OverrideConfig/OverrideConfig'; import ConditionallyRender from '../../../../../common/ConditionallyRender'; -import GeneralSelect from '../../../../../common/GeneralSelect/GeneralSelect'; -import { useCommonStyles } from '../../../../../../common.styles'; +import { useCommonStyles } from 'common.styles'; import Dialogue from '../../../../../common/Dialogue'; -import { modalStyles, trim } from '../../../../../common/util'; +import { modalStyles, trim } from 'component/common/util'; import PermissionSwitch from '../../../../../common/PermissionSwitch/PermissionSwitch'; -import { UPDATE_FEATURE_VARIANTS } from '../../../../../providers/AccessProvider/permissions'; +import { UPDATE_FEATURE_VARIANTS } from 'component/providers/AccessProvider/permissions'; import useFeature from '../../../../../../hooks/api/getters/useFeature/useFeature'; import { useParams } from 'react-router-dom'; -import { IFeatureViewParams } from '../../../../../../interfaces/params'; -import { - IFeatureVariant, - IOverride, -} from '../../../../../../interfaces/featureToggle'; +import { IFeatureViewParams } from 'interfaces/params'; +import { IFeatureVariant, IOverride } from 'interfaces/featureToggle'; import cloneDeep from 'lodash.clonedeep'; +import GeneralSelect from 'component/common/GeneralSelect/GeneralSelect'; const payloadOptions = [ { key: 'string', label: 'string' }, @@ -58,7 +53,7 @@ const AddVariant = ({ title, editing, }: IAddVariantProps) => { - const [data, setData] = useState({}); + const [data, setData] = useState>({}); const [payload, setPayload] = useState(EMPTY_PAYLOAD); const [overrides, setOverrides] = useState([]); const [error, setError] = useState>({}); @@ -71,7 +66,7 @@ const AddVariant = ({ if (editVariant) { setData({ name: editVariant.name, - weight: editVariant.weight / 10, + weight: String(editVariant.weight / 10), weightType: editVariant.weightType || weightTypes.VARIABLE, stickiness: editVariant.stickiness, }); @@ -108,7 +103,9 @@ const AddVariant = ({ // eslint-disable-next-line react-hooks/exhaustive-deps }, [editVariant]); - const setVariantValue = e => { + const setVariantValue = ( + e: React.ChangeEvent + ) => { const { name, value } = e.target; setData({ ...data, @@ -116,7 +113,7 @@ const AddVariant = ({ }); }; - const setVariantWeightType = e => { + const setVariantWeightType = (e: React.ChangeEvent) => { const { checked, name } = e.target; const weightType = checked ? weightTypes.FIX : weightTypes.VARIABLE; setData({ @@ -125,7 +122,7 @@ const AddVariant = ({ }); }; - const submit = async e => { + const submit = async (e: React.FormEvent) => { setError({}); e.preventDefault(); @@ -141,9 +138,9 @@ const AddVariant = ({ } try { - const variant = { + const variant: IFeatureVariant = { name: data.name, - weight: data.weight * 10, + weight: Number(data.weight) * 10, weightType: data.weightType, stickiness: data.stickiness, payload: payload.value ? payload : undefined, @@ -172,7 +169,7 @@ const AddVariant = ({ } }; - const onPayload = (e: React.SyntheticEvent) => { + const onPayload = (e: ChangeEvent<{ name?: string; value: unknown }>) => { e.preventDefault(); setPayload({ ...payload, @@ -186,18 +183,19 @@ const AddVariant = ({ closeDialog(); }; - const updateOverrideType = (index: number) => (e: React.SyntheticEvent) => { - e.preventDefault(); - setOverrides( - overrides.map((o, i) => { - if (i === index) { - o[e.target.name] = e.target.value; - } + const updateOverrideType = + (index: number) => (e: ChangeEvent) => { + e.preventDefault(); + setOverrides( + overrides.map((o, i) => { + if (i === index) { + o[e.target.name] = e.target.value; + } - return o; - }) - ); - }; + return o; + }) + ); + }; const updateOverrideValues = (index: number, values: string[]) => { setOverrides( @@ -230,7 +228,6 @@ const AddVariant = ({ return ( diff --git a/frontend/src/component/menu/Header/Header.tsx b/frontend/src/component/menu/Header/Header.tsx index f83ac83a07..7e53dfca08 100644 --- a/frontend/src/component/menu/Header/Header.tsx +++ b/frontend/src/component/menu/Header/Header.tsx @@ -24,8 +24,10 @@ import { useAuthPermissions } from '../../../hooks/api/getters/useAuth/useAuthPe const Header = () => { const theme = useTheme(); - const [anchorEl, setAnchorEl] = useState(); - const [anchorElAdvanced, setAnchorElAdvanced] = useState(); + const [anchorEl, setAnchorEl] = useState(null); + const [anchorElAdvanced, setAnchorElAdvanced] = + useState(null); + const [admin, setAdmin] = useState(false); const { permissions } = useAuthPermissions(); const commonStyles = useCommonStyles(); diff --git a/frontend/src/interfaces/featureToggle.ts b/frontend/src/interfaces/featureToggle.ts index 3c60d74a9a..64e18ae7de 100644 --- a/frontend/src/interfaces/featureToggle.ts +++ b/frontend/src/interfaces/featureToggle.ts @@ -57,7 +57,7 @@ export interface IOverride { } export interface IPayload { - name: string; + type: string; value: string; } @@ -75,13 +75,6 @@ export interface IFeatureMetrics { seenApplications: string[]; } -export interface IFeatureMetrics { - version: number; - maturity: string; - lastHourUsage: IFeatureEnvironmentMetrics[]; - seenApplications: string[]; -} - export interface IFeatureMetricsRaw { featureName: string; appName: string;