From 99da9183a31440b1528bdcb175e1ffadd6d1d901 Mon Sep 17 00:00:00 2001 From: "Elay Aharoni (EXT-Nokia)" Date: Wed, 11 Dec 2024 19:20:24 +0200 Subject: [PATCH] feat(ws) add filter to workspaces table Signed-off-by: Elay Aharoni (EXT-Nokia) --- .gitignore | 1 + workspaces/frontend/package-lock.json | 309 +++++++----------- workspaces/frontend/package.json | 2 +- .../src/__tests__/cypress/cypress.config.ts | 2 +- .../cypress/cypress/downloads/downloads.htm | Bin 0 -> 118577 bytes .../e2e/workspaces/filterWorkspacesTest.cy.ts | 52 +++ .../workspaces/filterWorkspacesTest.cy.ts | 52 +++ .../src/app/Generic components/Filter.tsx | 166 ---------- .../src/app/pages/Workspaces/Workspaces.tsx | 123 +++---- .../frontend/src/shared/components/Filter.tsx | 228 +++++++++++++ 10 files changed, 521 insertions(+), 414 deletions(-) create mode 100644 workspaces/frontend/src/__tests__/cypress/cypress/downloads/downloads.htm create mode 100644 workspaces/frontend/src/__tests__/cypress/cypress/tests/e2e/workspaces/filterWorkspacesTest.cy.ts create mode 100644 workspaces/frontend/src/__tests__/cypress/cypress/tests/mocked/workspaces/filterWorkspacesTest.cy.ts delete mode 100644 workspaces/frontend/src/app/Generic components/Filter.tsx create mode 100644 workspaces/frontend/src/shared/components/Filter.tsx diff --git a/.gitignore b/.gitignore index 00eb2973..99a670a8 100644 --- a/.gitignore +++ b/.gitignore @@ -3,6 +3,7 @@ *.iml *.ipr *.iws +workspaces/frontend/src/__tests__/cypress/cypress/downloads/downloads.htm ## VSCode .vscode/* diff --git a/workspaces/frontend/package-lock.json b/workspaces/frontend/package-lock.json index 5d23d7b0..abc689bb 100644 --- a/workspaces/frontend/package-lock.json +++ b/workspaces/frontend/package-lock.json @@ -36,7 +36,7 @@ "core-js": "^3.39.0", "css-loader": "^6.11.0", "css-minimizer-webpack-plugin": "^5.0.1", - "cypress": "^13.15.0", + "cypress": "^13.16.1", "cypress-axe": "^1.5.0", "cypress-high-resolution": "^1.0.0", "cypress-mochawesome-reporter": "^3.8.2", @@ -227,21 +227,6 @@ "node": ">=6.9.0" } }, - "node_modules/@babel/helper-builder-binary-assignment-operator-visitor": { - "version": "7.25.9", - "resolved": "https://registry.npmjs.org/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.25.9.tgz", - "integrity": "sha512-C47lC7LIDCnz0h4vai/tpNOI95tCd5ZT3iBt/DBH5lXKHZsyNQv18yf1wIIg2ntiQNgmAvA+DgZ82iW8Qdym8g==", - "dev": true, - "license": "MIT", - "peer": true, - "dependencies": { - "@babel/traverse": "^7.25.9", - "@babel/types": "^7.25.9" - }, - "engines": { - "node": ">=6.9.0" - } - }, "node_modules/@babel/helper-compilation-targets": { "version": "7.25.9", "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.25.9.tgz", @@ -298,15 +283,15 @@ } }, "node_modules/@babel/helper-create-regexp-features-plugin": { - "version": "7.25.9", - "resolved": "https://registry.npmjs.org/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.25.9.tgz", - "integrity": "sha512-ORPNZ3h6ZRkOyAa/SaHU+XsLZr0UQzRwuDQ0cczIA17nAzZ+85G5cVkOJIj7QavLZGSe8QXUmNFxSZzjcZF9bw==", + "version": "7.26.3", + "resolved": "https://registry.npmjs.org/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.26.3.tgz", + "integrity": "sha512-G7ZRb40uUgdKOQqPLjfD12ZmGA54PzqDFUv2BKImnC9QIfGhIHKvVML0oN8IUiDq4iRqpq74ABpvOaerfWdong==", "dev": true, "license": "MIT", "peer": true, "dependencies": { "@babel/helper-annotate-as-pure": "^7.25.9", - "regexpu-core": "^6.1.1", + "regexpu-core": "^6.2.0", "semver": "^6.3.1" }, "engines": { @@ -317,9 +302,9 @@ } }, "node_modules/@babel/helper-define-polyfill-provider": { - "version": "0.6.2", - "resolved": "https://registry.npmjs.org/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.6.2.tgz", - "integrity": "sha512-LV76g+C502biUK6AyZ3LK10vDpDyCzZnhZFXkH1L75zHPj68+qc8Zfpx2th+gzwA2MzyK+1g/3EPl62yFnVttQ==", + "version": "0.6.3", + "resolved": "https://registry.npmjs.org/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.6.3.tgz", + "integrity": "sha512-HK7Bi+Hj6H+VTHA3ZvBis7V/6hu9QuTrnMXNybfUf2iiuU/N97I8VjB+KbhFF8Rld/Lx5MzoCwPCpPjfK+n8Cg==", "dev": true, "license": "MIT", "peer": true, @@ -462,21 +447,6 @@ "@babel/core": "^7.0.0" } }, - "node_modules/@babel/helper-simple-access": { - "version": "7.25.9", - "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.25.9.tgz", - "integrity": "sha512-c6WHXuiaRsJTyHYLJV75t9IqsmTbItYfdj99PnzYGQZkYKvan5/2jKJ7gu31J3/BJ/A18grImSPModuyG/Eo0Q==", - "dev": true, - "license": "MIT", - "peer": true, - "dependencies": { - "@babel/traverse": "^7.25.9", - "@babel/types": "^7.25.9" - }, - "engines": { - "node": ">=6.9.0" - } - }, "node_modules/@babel/helper-skip-transparent-expression-wrappers": { "version": "7.25.9", "resolved": "https://registry.npmjs.org/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.25.9.tgz", @@ -1152,14 +1122,13 @@ } }, "node_modules/@babel/plugin-transform-exponentiation-operator": { - "version": "7.25.9", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.25.9.tgz", - "integrity": "sha512-KRhdhlVk2nObA5AYa7QMgTMTVJdfHprfpAk4DjZVtllqRg9qarilstTKEhpVjyt+Npi8ThRyiV8176Am3CodPA==", + "version": "7.26.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.26.3.tgz", + "integrity": "sha512-7CAHcQ58z2chuXPWblnn1K6rLDnDWieghSOEmqQsrBenH0P9InCUtOJYD89pvngljmZlJcz3fcmgYsXFNGa1ZQ==", "dev": true, "license": "MIT", "peer": true, "dependencies": { - "@babel/helper-builder-binary-assignment-operator-visitor": "^7.25.9", "@babel/helper-plugin-utils": "^7.25.9" }, "engines": { @@ -1310,16 +1279,15 @@ } }, "node_modules/@babel/plugin-transform-modules-commonjs": { - "version": "7.25.9", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.25.9.tgz", - "integrity": "sha512-dwh2Ol1jWwL2MgkCzUSOvfmKElqQcuswAZypBSUsScMXvgdT8Ekq5YA6TtqpTVWH+4903NmboMuH1o9i8Rxlyg==", + "version": "7.26.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.26.3.tgz", + "integrity": "sha512-MgR55l4q9KddUDITEzEFYn5ZsGDXMSsU9E+kh7fjRXTIC3RHqfCo8RPRbyReYJh44HQ/yomFkqbOFohXvDCiIQ==", "dev": true, "license": "MIT", "peer": true, "dependencies": { - "@babel/helper-module-transforms": "^7.25.9", - "@babel/helper-plugin-utils": "^7.25.9", - "@babel/helper-simple-access": "^7.25.9" + "@babel/helper-module-transforms": "^7.26.0", + "@babel/helper-plugin-utils": "^7.25.9" }, "engines": { "node": ">=6.9.0" @@ -3380,6 +3348,18 @@ "integrity": "sha512-xd0ynDkiIW2rp8jz4TNvR4Dyaw9kSMkZdsuYcLlFXCVmvX//Mnl4rhBnid/2j2TaqK0NbkyTTPnPY/BU7SfLVQ==", "license": "MIT" }, + "node_modules/@pkgjs/parseargs": { + "version": "0.11.0", + "resolved": "https://registry.npmjs.org/@pkgjs/parseargs/-/parseargs-0.11.0.tgz", + "integrity": "sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg==", + "dev": true, + "license": "MIT", + "optional": true, + "peer": true, + "engines": { + "node": ">=14" + } + }, "node_modules/@pkgr/core": { "version": "0.1.1", "resolved": "https://registry.npmjs.org/@pkgr/core/-/core-0.1.1.tgz", @@ -3960,24 +3940,6 @@ "dev": true, "license": "MIT" }, - "node_modules/@types/eslint": { - "version": "8.4.1", - "resolved": "https://registry.npmjs.org/@types/eslint/-/eslint-8.4.1.tgz", - "integrity": "sha512-GE44+DNEyxxh2Kc6ro/VkIj+9ma0pO0bwv9+uHSyBrikYOHr8zYcdPvnBOp1aw8s+CjRvuSx7CyWqRrNFQ59mA==", - "optional": true, - "peer": true, - "dependencies": { - "@types/estree": "*", - "@types/json-schema": "*" - } - }, - "node_modules/@types/estree": { - "version": "0.0.51", - "resolved": "https://registry.npmjs.org/@types/estree/-/estree-0.0.51.tgz", - "integrity": "sha512-CuPgU6f3eT/XgKKPqKd/gLZV1Xmvf1a2R5POBOGQa6uv82xpls89HU5zKeVoyR8XzHd1RGNOlQlvUe3CFkjWNQ==", - "optional": true, - "peer": true - }, "node_modules/@types/express": { "version": "4.17.13", "resolved": "https://registry.npmjs.org/@types/express/-/express-4.17.13.tgz", @@ -4098,7 +4060,7 @@ "version": "7.0.15", "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.15.tgz", "integrity": "sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==", - "devOptional": true + "dev": true }, "node_modules/@types/json5": { "version": "0.0.29", @@ -4122,14 +4084,6 @@ "undici-types": "~5.26.4" } }, - "node_modules/@types/parse-json": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/@types/parse-json/-/parse-json-4.0.0.tgz", - "integrity": "sha512-//oorEZjL6sbPcKUaCdIGlIUeH26mgzimjBB77G6XRgnDl/L5wOnpyBGRe/Mmf5CVW3PwEBE1NjiMZ/ssFh4wA==", - "dev": true, - "optional": true, - "peer": true - }, "node_modules/@types/prop-types": { "version": "15.7.3", "resolved": "https://registry.npmjs.org/@types/prop-types/-/prop-types-15.7.3.tgz", @@ -5370,52 +5324,16 @@ "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/babel-plugin-macros": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/babel-plugin-macros/-/babel-plugin-macros-3.1.0.tgz", - "integrity": "sha512-Cg7TFGpIr01vOQNODXOOaGz2NpCU5gl8x1qJFbb6hbZxR7XrcE2vtbAsTAbJ7/xwJtUuJEw8K8Zr/AE0LHlesg==", - "dev": true, - "optional": true, - "peer": true, - "dependencies": { - "@babel/runtime": "^7.12.5", - "cosmiconfig": "^7.0.0", - "resolve": "^1.19.0" - }, - "engines": { - "node": ">=10", - "npm": ">=6" - } - }, - "node_modules/babel-plugin-macros/node_modules/resolve": { - "version": "1.22.2", - "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.2.tgz", - "integrity": "sha512-Sb+mjNHOULsBv818T40qSPeRiuWLyaGMa5ewydRLFimneixmVy2zdivRl+AF6jaYPC8ERxGDmFSiqui6SfPd+g==", - "dev": true, - "optional": true, - "peer": true, - "dependencies": { - "is-core-module": "^2.11.0", - "path-parse": "^1.0.7", - "supports-preserve-symlinks-flag": "^1.0.0" - }, - "bin": { - "resolve": "bin/resolve" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, "node_modules/babel-plugin-polyfill-corejs2": { - "version": "0.4.11", - "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs2/-/babel-plugin-polyfill-corejs2-0.4.11.tgz", - "integrity": "sha512-sMEJ27L0gRHShOh5G54uAAPaiCOygY/5ratXuiyb2G46FmlSpc9eFCzYVyDiPxfNbwzA7mYahmjQc5q+CZQ09Q==", + "version": "0.4.12", + "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs2/-/babel-plugin-polyfill-corejs2-0.4.12.tgz", + "integrity": "sha512-CPWT6BwvhrTO2d8QVorhTCQw9Y43zOu7G9HigcfxvepOU6b8o3tcWad6oVgZIsZCTt42FFv97aA7ZJsbM4+8og==", "dev": true, "license": "MIT", "peer": true, "dependencies": { "@babel/compat-data": "^7.22.6", - "@babel/helper-define-polyfill-provider": "^0.6.2", + "@babel/helper-define-polyfill-provider": "^0.6.3", "semver": "^6.3.1" }, "peerDependencies": { @@ -5438,14 +5356,14 @@ } }, "node_modules/babel-plugin-polyfill-regenerator": { - "version": "0.6.2", - "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-regenerator/-/babel-plugin-polyfill-regenerator-0.6.2.tgz", - "integrity": "sha512-2R25rQZWP63nGwaAswvDazbPXfrM3HwVoBXK6HcqeKrSrL/JqcC/rDcf95l4r7LXLyxDXc8uQDa064GubtCABg==", + "version": "0.6.3", + "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-regenerator/-/babel-plugin-polyfill-regenerator-0.6.3.tgz", + "integrity": "sha512-LiWSbl4CRSIa5x/JAU6jZiG9eit9w6mz+yVMFwDE83LAWvt0AfGBoZ7HS/mkhrKuh2ZlzfVZYKoLjXdqw6Yt7Q==", "dev": true, "license": "MIT", "peer": true, "dependencies": { - "@babel/helper-define-polyfill-provider": "^0.6.2" + "@babel/helper-define-polyfill-provider": "^0.6.3" }, "peerDependencies": { "@babel/core": "^7.4.0 || ^8.0.0-0 <8.0.0" @@ -6878,24 +6796,6 @@ "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=", "dev": true }, - "node_modules/cosmiconfig": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-7.1.0.tgz", - "integrity": "sha512-AdmX6xUzdNASswsFtmwSt7Vj8po9IuqXm0UXz7QKPuEUmPB4XyjGfaAr2PSuELMwkRMVH1EpIkX5bTZGRB3eCA==", - "dev": true, - "optional": true, - "peer": true, - "dependencies": { - "@types/parse-json": "^4.0.0", - "import-fresh": "^3.2.1", - "parse-json": "^5.0.0", - "path-type": "^4.0.0", - "yaml": "^1.10.0" - }, - "engines": { - "node": ">=10" - } - }, "node_modules/create-jest": { "version": "29.7.0", "resolved": "https://registry.npmjs.org/create-jest/-/create-jest-29.7.0.tgz", @@ -7361,9 +7261,9 @@ "dev": true }, "node_modules/cypress": { - "version": "13.15.2", - "resolved": "https://registry.npmjs.org/cypress/-/cypress-13.15.2.tgz", - "integrity": "sha512-ARbnUorjcCM3XiPwgHKuqsyr5W9Qn+pIIBPaoilnoBkLdSC2oLQjV1BUpnmc7KR+b7Avah3Ly2RMFnfxr96E/A==", + "version": "13.16.1", + "resolved": "https://registry.npmjs.org/cypress/-/cypress-13.16.1.tgz", + "integrity": "sha512-17FtCaz0cx7ssWYKXzGB0Vub8xHwpVPr+iPt2fHhLMDhVAPVrplD+rTQsZUsfb19LVBn5iwkEUFjQ1yVVJXsLA==", "dev": true, "hasInstallScript": true, "license": "MIT", @@ -10333,20 +10233,6 @@ "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=", "devOptional": true }, - "node_modules/fsevents": { - "version": "2.3.2", - "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz", - "integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==", - "dev": true, - "hasInstallScript": true, - "optional": true, - "os": [ - "darwin" - ], - "engines": { - "node": "^8.16.0 || ^10.6.0 || >=11.0.0" - } - }, "node_modules/fsu": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/fsu/-/fsu-1.1.1.tgz", @@ -14801,9 +14687,9 @@ } }, "node_modules/mocha": { - "version": "10.8.2", - "resolved": "https://registry.npmjs.org/mocha/-/mocha-10.8.2.tgz", - "integrity": "sha512-VZlYo/WE8t1tstuRmqgeyBgCbJc/lEdopaa+axcKzTBJ+UIdlAB9XnmvTCAH4pwR4ElNInaedhEBmZD8iCSVEg==", + "version": "11.0.1", + "resolved": "https://registry.npmjs.org/mocha/-/mocha-11.0.1.tgz", + "integrity": "sha512-+3GkODfsDG71KSCQhc4IekSW+ItCK/kiez1Z28ksWvYhKXV/syxMlerR/sC7whDp7IyreZ4YxceMLdTs5hQE8A==", "dev": true, "license": "MIT", "peer": true, @@ -14815,7 +14701,7 @@ "diff": "^5.2.0", "escape-string-regexp": "^4.0.0", "find-up": "^5.0.0", - "glob": "^8.1.0", + "glob": "^10.4.5", "he": "^1.2.0", "js-yaml": "^4.1.0", "log-symbols": "^4.1.0", @@ -14834,7 +14720,7 @@ "mocha": "bin/mocha.js" }, "engines": { - "node": ">= 14.0.0" + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" } }, "node_modules/mocha/node_modules/brace-expansion": { @@ -14894,22 +14780,39 @@ } }, "node_modules/mocha/node_modules/glob": { - "version": "8.1.0", - "resolved": "https://registry.npmjs.org/glob/-/glob-8.1.0.tgz", - "integrity": "sha512-r8hpEjiQEYlF2QU0df3dS+nxxSIreXQS1qRhMJM0Q5NDdR386C7jb7Hwwod8Fgiuex+k0GFjgft18yvxm5XoCQ==", - "deprecated": "Glob versions prior to v9 are no longer supported", + "version": "10.4.5", + "resolved": "https://registry.npmjs.org/glob/-/glob-10.4.5.tgz", + "integrity": "sha512-7Bv8RF0k6xjo7d4A/PxYLbUCfb6c+Vpd2/mB2yRDlew7Jb5hEXiCD9ibfO7wpk8i4sevK6DFny9h7EYbM3/sHg==", "dev": true, "license": "ISC", "peer": true, "dependencies": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^5.0.1", - "once": "^1.3.0" + "foreground-child": "^3.1.0", + "jackspeak": "^3.1.2", + "minimatch": "^9.0.4", + "minipass": "^7.1.2", + "package-json-from-dist": "^1.0.0", + "path-scurry": "^1.11.1" + }, + "bin": { + "glob": "dist/esm/bin.mjs" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/mocha/node_modules/glob/node_modules/minimatch": { + "version": "9.0.5", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.5.tgz", + "integrity": "sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==", + "dev": true, + "license": "ISC", + "peer": true, + "dependencies": { + "brace-expansion": "^2.0.1" }, "engines": { - "node": ">=12" + "node": ">=16 || 14 >=14.17" }, "funding": { "url": "https://github.com/sponsors/isaacs" @@ -14926,6 +14829,23 @@ "node": ">=8" } }, + "node_modules/mocha/node_modules/jackspeak": { + "version": "3.4.3", + "resolved": "https://registry.npmjs.org/jackspeak/-/jackspeak-3.4.3.tgz", + "integrity": "sha512-OGlZQpz2yfahA/Rd1Y8Cd9SIEsqvXkLVoSw/cgwhnhFMDbsQFeZYoJJ7bIZBS9BcamUW96asq/npPWugM+RQBw==", + "dev": true, + "license": "BlueOak-1.0.0", + "peer": true, + "dependencies": { + "@isaacs/cliui": "^8.0.2" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + }, + "optionalDependencies": { + "@pkgjs/parseargs": "^0.11.0" + } + }, "node_modules/mocha/node_modules/locate-path": { "version": "6.0.0", "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz", @@ -14943,6 +14863,14 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/mocha/node_modules/lru-cache": { + "version": "10.4.3", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.4.3.tgz", + "integrity": "sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ==", + "dev": true, + "license": "ISC", + "peer": true + }, "node_modules/mocha/node_modules/minimatch": { "version": "5.1.6", "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.1.6.tgz", @@ -14991,6 +14919,24 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/mocha/node_modules/path-scurry": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/path-scurry/-/path-scurry-1.11.1.tgz", + "integrity": "sha512-Xa4Nw17FS9ApQFJ9umLiJS4orGjm7ZzwUrwamcGQuHSzDyth9boKDaycYdDcZDuqYATXw4HFXgaqWTctW/v1HA==", + "dev": true, + "license": "BlueOak-1.0.0", + "peer": true, + "dependencies": { + "lru-cache": "^10.2.0", + "minipass": "^5.0.0 || ^6.0.2 || ^7.0.0" + }, + "engines": { + "node": ">=16 || 14 >=14.18" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, "node_modules/mocha/node_modules/supports-color": { "version": "8.1.1", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz", @@ -17653,9 +17599,9 @@ } }, "node_modules/regexpu-core": { - "version": "6.1.1", - "resolved": "https://registry.npmjs.org/regexpu-core/-/regexpu-core-6.1.1.tgz", - "integrity": "sha512-k67Nb9jvwJcJmVpw0jPttR1/zVfnKf8Km0IPatrU/zJ5XeG3+Slx0xLXs9HByJSzXzrlz5EDvN6yLNMDc2qdnw==", + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/regexpu-core/-/regexpu-core-6.2.0.tgz", + "integrity": "sha512-H66BPQMrv+V16t8xtmq+UC0CBpiTBA60V8ibS1QVReIp8T1z8hwFxqcGzm9K6lgsN7sB5edVH8a+ze6Fqm4weA==", "dev": true, "license": "MIT", "peer": true, @@ -17663,7 +17609,7 @@ "regenerate": "^1.4.2", "regenerate-unicode-properties": "^10.2.0", "regjsgen": "^0.8.0", - "regjsparser": "^0.11.0", + "regjsparser": "^0.12.0", "unicode-match-property-ecmascript": "^2.0.0", "unicode-match-property-value-ecmascript": "^2.1.0" }, @@ -17704,9 +17650,9 @@ "peer": true }, "node_modules/regjsparser": { - "version": "0.11.2", - "resolved": "https://registry.npmjs.org/regjsparser/-/regjsparser-0.11.2.tgz", - "integrity": "sha512-3OGZZ4HoLJkkAZx/48mTXJNlmqTGOzc0o9OWQPuWpkOlXXPbyN6OafCcoXUnBqE2D3f/T5L+pWc1kdEmnfnRsA==", + "version": "0.12.0", + "resolved": "https://registry.npmjs.org/regjsparser/-/regjsparser-0.12.0.tgz", + "integrity": "sha512-cnE+y8bz4NhMjISKbgeVJtqNbtf5QpjZP+Bslo+UqkIt9QPnX9q095eiRRASJG1/tz6dlNr6Z5NsBiWYokp6EQ==", "dev": true, "license": "BSD-2-Clause", "peer": true, @@ -21419,17 +21365,6 @@ "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", "dev": true }, - "node_modules/yaml": { - "version": "1.10.2", - "resolved": "https://registry.npmjs.org/yaml/-/yaml-1.10.2.tgz", - "integrity": "sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg==", - "dev": true, - "optional": true, - "peer": true, - "engines": { - "node": ">= 6" - } - }, "node_modules/yargs": { "version": "17.7.2", "resolved": "https://registry.npmjs.org/yargs/-/yargs-17.7.2.tgz", diff --git a/workspaces/frontend/package.json b/workspaces/frontend/package.json index 0625d252..f0b15d26 100644 --- a/workspaces/frontend/package.json +++ b/workspaces/frontend/package.json @@ -51,7 +51,7 @@ "core-js": "^3.39.0", "css-loader": "^6.11.0", "css-minimizer-webpack-plugin": "^5.0.1", - "cypress": "^13.15.0", + "cypress": "^13.16.1", "cypress-axe": "^1.5.0", "cypress-high-resolution": "^1.0.0", "cypress-mochawesome-reporter": "^3.8.2", diff --git a/workspaces/frontend/src/__tests__/cypress/cypress.config.ts b/workspaces/frontend/src/__tests__/cypress/cypress.config.ts index a25c002b..349ff312 100644 --- a/workspaces/frontend/src/__tests__/cypress/cypress.config.ts +++ b/workspaces/frontend/src/__tests__/cypress/cypress.config.ts @@ -48,7 +48,7 @@ export default defineConfig({ }, defaultCommandTimeout: 10000, e2e: { - baseUrl: BASE_URL, + baseUrl: env.CY_MOCK ? BASE_URL : 'http://localhost:9000', specPattern: env.CY_MOCK ? `cypress/tests/mocked/**/*.cy.ts` : `cypress/tests/e2e/**/*.cy.ts`, experimentalInteractiveRunEvents: true, setupNodeEvents(on, config) { diff --git a/workspaces/frontend/src/__tests__/cypress/cypress/downloads/downloads.htm b/workspaces/frontend/src/__tests__/cypress/cypress/downloads/downloads.htm new file mode 100644 index 0000000000000000000000000000000000000000..a73e07468767d645b3a90052bc165dbb3f3bdfe9 GIT binary patch literal 118577 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

{Oe>>DQT0`DtSu`qW{wUh_}N{8OytS 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 literal 0 HcmV?d00001 diff --git a/workspaces/frontend/src/__tests__/cypress/cypress/tests/e2e/workspaces/filterWorkspacesTest.cy.ts b/workspaces/frontend/src/__tests__/cypress/cypress/tests/e2e/workspaces/filterWorkspacesTest.cy.ts new file mode 100644 index 00000000..ebff315c --- /dev/null +++ b/workspaces/frontend/src/__tests__/cypress/cypress/tests/e2e/workspaces/filterWorkspacesTest.cy.ts @@ -0,0 +1,52 @@ +import { home } from '~/__tests__/cypress/cypress/pages/home'; + +const useFilter = (filterName: string, searchValue: string) => { + cy.get("[id$='filter-workspaces-dropdown']").click(); + cy.get(`[id$='filter-workspaces-dropdown-${filterName}']`).click(); + cy.get("[id$='filter-workspaces-search-input']").type(searchValue); + cy.get("[class$='pf-v6-c-toolbar__group']").contains(filterName); + cy.get("[class$='pf-v6-c-toolbar__group']").contains(searchValue); +}; + +describe('Application', () => { + it('filter rows with single filter', () => { + home.visit(); + useFilter('Name', 'My'); + cy.get("[id$='workspaces-table-content']").find('tr').should('have.length', 2); + cy.get("[id$='workspaces-table-row-1']").contains('My Jupyter Notebook'); + cy.get("[id$='workspaces-table-row-2']").contains('My Other Jupyter Notebook'); + }); + + it('filter rows with multiple filters', () => { + home.visit(); + useFilter('Name', 'My'); + useFilter('Pod Config', 'Small'); + cy.get("[id$='workspaces-table-content']").find('tr').should('have.length', 1); + cy.get("[id$='workspaces-table-row-1']").contains('My Jupyter Notebook'); + }); + + it('filter rows with multiple filters and remove one', () => { + home.visit(); + useFilter('Name', 'My'); + useFilter('Pod Config', 'Small'); + cy.get("[id$='workspaces-table-content']").find('tr').should('have.length', 1); + cy.get("[id$='workspaces-table-row-1']").contains('My Jupyter Notebook'); + cy.get("[class$='pf-v6-c-label-group__close']").eq(1).click(); + cy.get("[class$='pf-v6-c-toolbar__group']").should('not.contain', 'Pod Config'); + cy.get("[id$='workspaces-table-content']").find('tr').should('have.length', 2); + cy.get("[id$='workspaces-table-row-1']").contains('My Jupyter Notebook'); + cy.get("[id$='workspaces-table-row-2']").contains('My Other Jupyter Notebook'); + }); + + it('filter rows with multiple filters and remove all', () => { + home.visit(); + useFilter('Name', 'My'); + useFilter('Pod Config', 'Small'); + cy.get("[id$='workspaces-table-content']").find('tr').should('have.length', 1); + cy.get("[id$='workspaces-table-row-1']").contains('My Jupyter Notebook'); + cy.get('*').contains('Clear all filters').click(); + cy.get("[class$='pf-v6-c-toolbar__group']").should('not.contain', 'Pod Config'); + cy.get("[class$='pf-v6-c-toolbar__group']").should('not.contain', 'Name'); + cy.get("[id$='workspaces-table-content']").find('tr').should('have.length', 2); + }); +}); diff --git a/workspaces/frontend/src/__tests__/cypress/cypress/tests/mocked/workspaces/filterWorkspacesTest.cy.ts b/workspaces/frontend/src/__tests__/cypress/cypress/tests/mocked/workspaces/filterWorkspacesTest.cy.ts new file mode 100644 index 00000000..ebff315c --- /dev/null +++ b/workspaces/frontend/src/__tests__/cypress/cypress/tests/mocked/workspaces/filterWorkspacesTest.cy.ts @@ -0,0 +1,52 @@ +import { home } from '~/__tests__/cypress/cypress/pages/home'; + +const useFilter = (filterName: string, searchValue: string) => { + cy.get("[id$='filter-workspaces-dropdown']").click(); + cy.get(`[id$='filter-workspaces-dropdown-${filterName}']`).click(); + cy.get("[id$='filter-workspaces-search-input']").type(searchValue); + cy.get("[class$='pf-v6-c-toolbar__group']").contains(filterName); + cy.get("[class$='pf-v6-c-toolbar__group']").contains(searchValue); +}; + +describe('Application', () => { + it('filter rows with single filter', () => { + home.visit(); + useFilter('Name', 'My'); + cy.get("[id$='workspaces-table-content']").find('tr').should('have.length', 2); + cy.get("[id$='workspaces-table-row-1']").contains('My Jupyter Notebook'); + cy.get("[id$='workspaces-table-row-2']").contains('My Other Jupyter Notebook'); + }); + + it('filter rows with multiple filters', () => { + home.visit(); + useFilter('Name', 'My'); + useFilter('Pod Config', 'Small'); + cy.get("[id$='workspaces-table-content']").find('tr').should('have.length', 1); + cy.get("[id$='workspaces-table-row-1']").contains('My Jupyter Notebook'); + }); + + it('filter rows with multiple filters and remove one', () => { + home.visit(); + useFilter('Name', 'My'); + useFilter('Pod Config', 'Small'); + cy.get("[id$='workspaces-table-content']").find('tr').should('have.length', 1); + cy.get("[id$='workspaces-table-row-1']").contains('My Jupyter Notebook'); + cy.get("[class$='pf-v6-c-label-group__close']").eq(1).click(); + cy.get("[class$='pf-v6-c-toolbar__group']").should('not.contain', 'Pod Config'); + cy.get("[id$='workspaces-table-content']").find('tr').should('have.length', 2); + cy.get("[id$='workspaces-table-row-1']").contains('My Jupyter Notebook'); + cy.get("[id$='workspaces-table-row-2']").contains('My Other Jupyter Notebook'); + }); + + it('filter rows with multiple filters and remove all', () => { + home.visit(); + useFilter('Name', 'My'); + useFilter('Pod Config', 'Small'); + cy.get("[id$='workspaces-table-content']").find('tr').should('have.length', 1); + cy.get("[id$='workspaces-table-row-1']").contains('My Jupyter Notebook'); + cy.get('*').contains('Clear all filters').click(); + cy.get("[class$='pf-v6-c-toolbar__group']").should('not.contain', 'Pod Config'); + cy.get("[class$='pf-v6-c-toolbar__group']").should('not.contain', 'Name'); + cy.get("[id$='workspaces-table-content']").find('tr').should('have.length', 2); + }); +}); diff --git a/workspaces/frontend/src/app/Generic components/Filter.tsx b/workspaces/frontend/src/app/Generic components/Filter.tsx deleted file mode 100644 index d287dd60..00000000 --- a/workspaces/frontend/src/app/Generic components/Filter.tsx +++ /dev/null @@ -1,166 +0,0 @@ -import * as React from 'react'; -import { - Button, - Menu, - MenuContent, - MenuItem, - MenuList, - MenuToggle, - MenuToggleElement, - Popper, - SearchInput, - Toolbar, - ToolbarContent, - ToolbarFilter, - ToolbarGroup, - ToolbarItem, - ToolbarToggleGroup, -} from '@patternfly/react-core'; -import { FilterIcon } from '@patternfly/react-icons'; - -interface FilterProps { - onFilter: (activeAttributeMenu: string, value: string) => void; - columnNames: { [key: string]: string }; -} - -const Filter: React.FC = ({ onFilter, columnNames }) => { - const [activeFilter, setActiveFilter] = React.useState(Object.values(columnNames)[0]); - const [searchValue, setSearchValue] = React.useState(''); - const [isFilterMenuOpen, setIsFilterMenuOpen] = React.useState(false); - - const filterToggleRef = React.useRef(null); - const filterMenuRef = React.useRef(null); - const filterContainerRef = React.useRef(null); - - const handlefilterMenuKeys = React.useCallback( - (event: KeyboardEvent) => { - if (!isFilterMenuOpen) { - return; - } - if ( - filterMenuRef.current?.contains(event.target as Node) || - filterToggleRef.current?.contains(event.target as Node) - ) { - if (event.key === 'Escape' || event.key === 'Tab') { - setIsFilterMenuOpen(!isFilterMenuOpen); - filterToggleRef.current?.focus(); - } - } - }, - [isFilterMenuOpen, filterMenuRef, filterToggleRef], - ); - - const handleClickOutside = React.useCallback( - (event: MouseEvent) => { - if (isFilterMenuOpen && !filterMenuRef.current?.contains(event.target as Node)) { - setIsFilterMenuOpen(false); - } - }, - [isFilterMenuOpen, filterMenuRef], - ); - - React.useEffect(() => { - window.addEventListener('keydown', handlefilterMenuKeys); - window.addEventListener('click', handleClickOutside); - return () => { - window.removeEventListener('keydown', handlefilterMenuKeys); - window.removeEventListener('click', handleClickOutside); - }; - }, [isFilterMenuOpen, filterMenuRef, handlefilterMenuKeys, handleClickOutside]); - - const onFilterToggleClick = (ev: React.MouseEvent) => { - ev.stopPropagation(); // Stop handleClickOutside from handling - setTimeout(() => { - if (filterMenuRef.current) { - const firstElement = filterMenuRef.current.querySelector('li > button:not(:disabled)'); - if (firstElement) { - (firstElement as HTMLElement).focus(); - } - } - }, 0); - setIsFilterMenuOpen(!isFilterMenuOpen); - }; - - const FilterMenuToggle = ( - } - > - {activeFilter} - - ); - - const filterMenu = ( -

{ - setActiveFilter(itemId); - setIsFilterMenuOpen(!isFilterMenuOpen); - }} - > - - - {Object.values(columnNames).map((name: string) => ( - - {name} - - ))} - - - - ); - - const filterDropdown = ( -
- -
- ); - - const onSearchChange = (value: string) => { - setSearchValue(value); - onFilter(activeFilter, value); - }; - - return ( - { - onSearchChange(''); - }} - > - - } breakpoint="xl"> - - {filterDropdown} - setSearchValue('')} - deleteLabelGroup={() => setSearchValue('')} - categoryName={activeFilter} - > - onSearchChange(value)} - onClear={() => onSearchChange('')} - /> - - - - - - - ); -}; -export default Filter; diff --git a/workspaces/frontend/src/app/pages/Workspaces/Workspaces.tsx b/workspaces/frontend/src/app/pages/Workspaces/Workspaces.tsx index 43187a81..7f1f7376 100644 --- a/workspaces/frontend/src/app/pages/Workspaces/Workspaces.tsx +++ b/workspaces/frontend/src/app/pages/Workspaces/Workspaces.tsx @@ -10,6 +10,8 @@ import { Title, PaginationVariant, Pagination, + Button, + Content, } from '@patternfly/react-core'; import { Table, @@ -23,16 +25,15 @@ import { IActions, } from '@patternfly/react-table'; import { useState } from 'react'; -import Filter from '~/app/Generic components/Filter'; -import { FilterIcon } from '@patternfly/react-icons'; import { Workspace, WorkspacesColumnNames, WorkspaceState } from '~/shared/types'; import { WorkspaceDetails } from '~/app/pages/Workspaces/Details/WorkspaceDetails'; import { ExpandedWorkspaceRow } from '~/app/pages/Workspaces/ExpandedWorkspaceRow'; +import Filter, { FilteredColumn } from 'shared/components/Filter'; import { formatRam } from 'shared/utilities/WorkspaceResources'; export const Workspaces: React.FunctionComponent = () => { /* Mocked workspaces, to be removed after fetching info from backend */ - const workspaces: Workspace[] = [ + const mockWorkspaces: Workspace[] = [ { name: 'My Jupyter Notebook', namespace: 'namespace1', @@ -143,11 +144,20 @@ export const Workspaces: React.FunctionComponent = () => { lastActivity: 'Last Activity', }; -export const Workspaces: React.FunctionComponent = () => { + const filterableColumns: WorkspacesColumnNames = { + name: 'Name', + kind: 'Kind', + image: 'Image', + podConfig: 'Pod Config', + state: 'State', + homeVol: 'Home Vol', + lastActivity: 'Last Activity', + }; + // change when fetch workspaces is implemented const initialWorkspaces = mockWorkspaces; const [workspaces, setWorkspaces] = useState(initialWorkspaces); - // Selected workspace + const [expandedWorkspacesNames, setExpandedWorkspacesNames] = React.useState([]); const [selectedWorkspace, setSelectedWorkspace] = React.useState(null); const selectWorkspace = React.useCallback( @@ -160,17 +170,6 @@ export const Workspaces: React.FunctionComponent = () => { }, [selectedWorkspace], ); - - // Filter - const [activeAttributeMenu, setActiveAttributeMenu] = React.useState(columnNames.name); - const [isAttributeMenuOpen, setIsAttributeMenuOpen] = React.useState(false); - const attributeToggleRef = React.useRef(null); - const attributeMenuRef = React.useRef(null); - const attributeContainerRef = React.useRef(null); - - const [searchValue, setSearchValue] = React.useState(''); - const [expandedWorkspacesNames, setExpandedWorkspacesNames] = React.useState([]); - const setWorkspaceExpanded = (workspace: Workspace, isExpanding = true) => setExpandedWorkspacesNames((prevExpanded) => { const newExpandedWorkspacesNames = prevExpanded.filter((wsName) => wsName !== workspace.name); @@ -183,34 +182,39 @@ export const Workspaces: React.FunctionComponent = () => { expandedWorkspacesNames.includes(workspace.name); // filter function to pass to the filter component - const onFilter = (activeAttributeMenu: string, searchValue: string) => { + const onFilter = (filters: FilteredColumn[]) => { // Search name with search value - let searchValueInput: RegExp; - try { - searchValueInput = new RegExp(searchValue, 'i'); - } catch { - searchValueInput = new RegExp(searchValue.replace(/[.*+?^${}()|[\]\\]/g, '\\$&'), 'i'); - } - const filteredWorkspaces = initialWorkspaces.filter( - (workspace) => - searchValue === '' || - (activeAttributeMenu === 'Name' && workspace.name.search(searchValueInput) >= 0) || - (activeAttributeMenu === 'Kind' && workspace.kind.search(searchValueInput) >= 0) || - (activeAttributeMenu === 'Image' && - workspace.options.imageConfig.search(searchValueInput) >= 0) || - (activeAttributeMenu === 'Pod Config' && - workspace.options.podConfig.search(searchValueInput) >= 0) || - (activeAttributeMenu === 'State' && - WorkspaceState[workspace.status.state].search(searchValueInput) >= 0) || - (activeAttributeMenu === 'Home Vol' && - workspace.podTemplate.volumes.home.search(searchValueInput) >= 0) || - (activeAttributeMenu === 'Data Vol' && - workspace.podTemplate.volumes.data.some( - (dataVol) => - dataVol.pvcName.search(searchValueInput) >= 0 || - dataVol.mountPath.search(searchValueInput) >= 0, - )), - ); + let filteredWorkspaces = initialWorkspaces; + filters.forEach((filter) => { + let searchValueInput: RegExp; + try { + searchValueInput = new RegExp(filter.value, 'i'); + } catch { + searchValueInput = new RegExp(filter.value.replace(/[.*+?^${}()|[\]\\]/g, '\\$&'), 'i'); + } + + filteredWorkspaces = filteredWorkspaces.filter((workspace) => { + if (filter.value === '') { + return true; + } + switch (filter.columnName) { + case columnNames.name: + return workspace.name.search(searchValueInput) >= 0; + case columnNames.kind: + return workspace.kind.search(searchValueInput) >= 0; + case columnNames.image: + return workspace.options.imageConfig.search(searchValueInput) >= 0; + case columnNames.podConfig: + return workspace.options.podConfig.search(searchValueInput) >= 0; + case columnNames.state: + return WorkspaceState[workspace.status.state].search(searchValueInput) >= 0; + case columnNames.homeVol: + return workspace.podTemplate.volumes.home.search(searchValueInput) >= 0; + default: + return true; + } + }); + }); setWorkspaces(filteredWorkspaces); }; @@ -370,30 +374,31 @@ export const Workspaces: React.FunctionComponent = () => { Kubeflow Workspaces

View your existing workspaces or create new workspaces.

- + + + + - - - - - - - - + {Object.values(columnNames).map((columnName, index) => ( + + ))} {sortedWorkspaces.map((workspace, rowIndex) => ( - - + +
- {columnNames.name}{columnNames.kind}{columnNames.image}{columnNames.podConfig}{columnNames.state}{columnNames.homeVol} - {columnNames.cpu} - - {columnNames.ram} - {columnNames.lastActivity} + {columnName} +
void; + columnNames: { [key: string]: string }; +} + +export interface FilteredColumn { + columnName: string; + value: string; +} + +const Filter: React.FC = ({ id, onFilter, columnNames }) => { + const [activeFilter, setActiveFilter] = React.useState({ + columnName: Object.values(columnNames)[0], + value: '', + }); + const [searchValue, setSearchValue] = React.useState(''); + const [isFilterMenuOpen, setIsFilterMenuOpen] = React.useState(false); + const [filters, setFilters] = React.useState([]); + + const filterToggleRef = React.useRef(null); + const filterMenuRef = React.useRef(null); + const filterContainerRef = React.useRef(null); + + const handleFilterMenuKeys = React.useCallback( + (event: KeyboardEvent) => { + if (!isFilterMenuOpen) { + return; + } + if ( + filterMenuRef.current?.contains(event.target as Node) || + filterToggleRef.current?.contains(event.target as Node) + ) { + if (event.key === 'Escape' || event.key === 'Tab') { + setIsFilterMenuOpen(!isFilterMenuOpen); + filterToggleRef.current?.focus(); + } + } + }, + [isFilterMenuOpen, filterMenuRef, filterToggleRef], + ); + + const handleClickOutside = React.useCallback( + (event: MouseEvent) => { + if (isFilterMenuOpen && !filterMenuRef.current?.contains(event.target as Node)) { + setIsFilterMenuOpen(false); + } + }, + [isFilterMenuOpen, filterMenuRef], + ); + + React.useEffect(() => { + window.addEventListener('keydown', handleFilterMenuKeys); + window.addEventListener('click', handleClickOutside); + return () => { + window.removeEventListener('keydown', handleFilterMenuKeys); + window.removeEventListener('click', handleClickOutside); + }; + }, [isFilterMenuOpen, filterMenuRef, handleFilterMenuKeys, handleClickOutside]); + + const onFilterToggleClick = React.useCallback( + (ev: React.MouseEvent) => { + ev.stopPropagation(); // Stop handleClickOutside from handling + if (filterMenuRef.current) { + const firstElement = filterMenuRef.current.querySelector('li > button:not(:disabled)'); + if (firstElement) { + (firstElement as HTMLElement).focus(); + } + } + setIsFilterMenuOpen(!isFilterMenuOpen); + }, + [isFilterMenuOpen], + ); + + const addFilter = React.useCallback( + (filterObj: FilteredColumn) => { + const index = filters.findIndex((filter) => filter.columnName === filterObj.columnName); + const newFilters = filters; + if (index !== -1) { + newFilters[index] = filterObj; + } else { + newFilters.push(filterObj); + } + setFilters(newFilters); + }, + [filters], + ); + + const onSearchChange = React.useCallback( + (value: string) => { + const newFilter = { columnName: activeFilter.columnName, value }; + setSearchValue(value); + setActiveFilter(newFilter); + addFilter(newFilter); + onFilter(filters); + }, + [activeFilter.columnName, addFilter, filters, onFilter], + ); + + const onDeleteLabelGroup = React.useCallback( + (filter: FilteredColumn) => { + const newFilters = filters.filter((filter1) => filter1.columnName !== filter.columnName); + setFilters(newFilters); + if (filter.columnName === activeFilter.columnName) { + setSearchValue(''); + } + onFilter(newFilters); + }, + [activeFilter.columnName, filters, onFilter], + ); + + const onFilterSelect = React.useCallback( + (itemId: string | number | undefined) => { + setIsFilterMenuOpen(!isFilterMenuOpen); + const index = filters.findIndex((filter) => filter.columnName === itemId); + setSearchValue(index === -1 ? '' : filters[index].value); + setActiveFilter({ + columnName: itemId ? itemId.toString() : Object.values(columnNames)[0], + value: searchValue, + }); + }, + [columnNames, filters, isFilterMenuOpen, searchValue], + ); + + const filterMenuToggle = React.useMemo( + () => ( + } + > + {activeFilter.columnName} + + ), + [activeFilter.columnName, isFilterMenuOpen, onFilterToggleClick], + ); + + const filterMenu = React.useMemo( + () => ( + onFilterSelect(itemId)}> + + + {Object.values(columnNames).map((name: string) => ( + + {name} + + ))} + + + + ), + [columnNames, id, onFilterSelect], + ); + + const filterDropdown = React.useMemo( + () => ( +
+ +
+ ), + [filterMenuToggle, filterMenu, isFilterMenuOpen], + ); + + return ( + { + setFilters([]); + setSearchValue(''); + onFilter([]); + }} + > + + } breakpoint="xl"> + {filterDropdown} + + {filters.map((filter) => ( + onDeleteLabelGroup(filter)} + deleteLabelGroup={() => onDeleteLabelGroup(filter)} + categoryName={filter.columnName} + > + {undefined} + + ))} + + onSearchChange(value)} + onClear={() => onSearchChange('')} + /> + + + + ); +}; +export default Filter;