From 66fea2a730b1966dba4e80906c7ebf61ecb67c9a Mon Sep 17 00:00:00 2001 From: Tan Nhu Date: Fri, 12 Aug 2022 12:09:57 -0700 Subject: [PATCH] Sync UI template with latest updates --- web/config/moduleFederation.config.js | 48 + web/config/webpack.common.js | 168 + web/config/webpack.dev.js | 75 + web/config/webpack.prod.js | 52 + web/cypress/integration/dashboard.spec.js | 8 + web/cypress/integration/evaluations.spec.js | 9 + web/cypress/integration/policy.spec.js | 7 + web/cypress/integration/policyset.spec.js | 7 + web/cypress/videos/dashboard.spec.js.mp4 | Bin 0 -> 35446 bytes web/cypress/videos/evaluations.spec.js.mp4 | Bin 0 -> 29021 bytes web/cypress/videos/policy.spec.js.mp4 | Bin 0 -> 39659 bytes web/cypress/videos/policyset.spec.js.mp4 | Bin 0 -> 33780 bytes web/dist.go | 35 +- web/package.json | 135 +- web/restful-react.config.js | 9 +- web/src/App.tsx | 15 +- web/src/AppContext.tsx | 4 +- web/src/AppProps.ts | 40 +- web/src/RouteDefinitions.ts | 122 +- web/src/RouteDestinations.tsx | 156 +- web/src/RouteUtils.ts | 42 +- web/src/bootstrap.tsx | 15 +- .../ContainerSpinner.module.scss | 8 - .../ContainerSpinner/ContainerSpinner.tsx | 12 - .../EvaluationStatusLabel.module.scss | 42 - .../EvaluationStatusLabel.module.scss.d.ts | 11 - .../EvaluationStatusLabel.tsx | 41 - .../NameIdDescriptionTags.tsx | 30 +- .../OptionsMenuButton/OptionsMenuButton.tsx | 4 +- .../Permissions/PermissionsButton.tsx | 16 + .../PermissionsOptionsMenuButton.tsx | 22 + .../components/Settings/Settings.module.scss | 24 - .../Settings/Settings.module.scss.d.ts | 16 - web/src/components/Settings/Settings.tsx | 126 - .../components/SideNav/SideNav.module.scss | 40 - .../SideNav/SideNav.module.scss.d.ts | 16 - web/src/components/SideNav/SideNav.tsx | 38 - .../SpinnerWrapper/SpinnerWrapper.module.scss | 11 + .../SpinnerWrapper.module.scss.d.ts} | 3 +- .../SpinnerWrapper/SpinnerWrapper.tsx | 24 + web/src/components/Table/Table.module.scss | 11 - .../components/Table/Table.module.scss.d.ts | 14 - web/src/components/Table/Table.tsx | 172 - .../TrialBanner/TrialBanner.module.scss | 15 + .../TrialBanner/TrialBanner.module.scss.d.ts | 9 + .../components/TrialBanner/TrialBanner.tsx | 53 + web/src/framework/strings/stringTypes.ts | 170 +- web/src/global.d.ts | 4 +- web/src/hooks/useStandaloneFeatureFlags.ts | 11 + web/src/hooks/useStandalonePermission.ts | 3 + web/src/i18n/strings.en.yaml | 182 +- web/src/utils/Enums.ts | 11 + web/src/utils/GovernanceUtils.ts | 442 + web/src/utils/rego.ts | 467 + web/yarn.lock | 11049 +++++++++++++--- 55 files changed, 11589 insertions(+), 2455 deletions(-) create mode 100644 web/config/moduleFederation.config.js create mode 100644 web/config/webpack.common.js create mode 100644 web/config/webpack.dev.js create mode 100644 web/config/webpack.prod.js create mode 100644 web/cypress/integration/dashboard.spec.js create mode 100644 web/cypress/integration/evaluations.spec.js create mode 100644 web/cypress/integration/policy.spec.js create mode 100644 web/cypress/integration/policyset.spec.js create mode 100644 web/cypress/videos/dashboard.spec.js.mp4 create mode 100644 web/cypress/videos/evaluations.spec.js.mp4 create mode 100644 web/cypress/videos/policy.spec.js.mp4 create mode 100644 web/cypress/videos/policyset.spec.js.mp4 delete mode 100644 web/src/components/ContainerSpinner/ContainerSpinner.module.scss delete mode 100644 web/src/components/ContainerSpinner/ContainerSpinner.tsx delete mode 100644 web/src/components/EvaluationStatus/EvaluationStatusLabel.module.scss delete mode 100644 web/src/components/EvaluationStatus/EvaluationStatusLabel.module.scss.d.ts delete mode 100644 web/src/components/EvaluationStatus/EvaluationStatusLabel.tsx create mode 100644 web/src/components/Permissions/PermissionsButton.tsx create mode 100644 web/src/components/Permissions/PermissionsOptionsMenuButton.tsx delete mode 100644 web/src/components/Settings/Settings.module.scss delete mode 100644 web/src/components/Settings/Settings.module.scss.d.ts delete mode 100644 web/src/components/Settings/Settings.tsx delete mode 100644 web/src/components/SideNav/SideNav.module.scss delete mode 100644 web/src/components/SideNav/SideNav.module.scss.d.ts delete mode 100644 web/src/components/SideNav/SideNav.tsx create mode 100644 web/src/components/SpinnerWrapper/SpinnerWrapper.module.scss rename web/src/components/{ContainerSpinner/ContainerSpinner.module.scss.d.ts => SpinnerWrapper/SpinnerWrapper.module.scss.d.ts} (60%) create mode 100644 web/src/components/SpinnerWrapper/SpinnerWrapper.tsx delete mode 100644 web/src/components/Table/Table.module.scss delete mode 100644 web/src/components/Table/Table.module.scss.d.ts delete mode 100644 web/src/components/Table/Table.tsx create mode 100644 web/src/components/TrialBanner/TrialBanner.module.scss create mode 100644 web/src/components/TrialBanner/TrialBanner.module.scss.d.ts create mode 100644 web/src/components/TrialBanner/TrialBanner.tsx create mode 100644 web/src/hooks/useStandaloneFeatureFlags.ts create mode 100644 web/src/hooks/useStandalonePermission.ts create mode 100644 web/src/utils/Enums.ts create mode 100644 web/src/utils/GovernanceUtils.ts create mode 100644 web/src/utils/rego.ts diff --git a/web/config/moduleFederation.config.js b/web/config/moduleFederation.config.js new file mode 100644 index 000000000..63a537ef9 --- /dev/null +++ b/web/config/moduleFederation.config.js @@ -0,0 +1,48 @@ +const packageJSON = require('../package.json'); +const { pick, omit, mapValues } = require('lodash'); + +/** + * These packages must be stricly shared with exact versions + */ + const ExactSharedPackages = [ + 'react', + 'react-dom', + 'react-router-dom', + '@harness/use-modal', + '@blueprintjs/core', + '@blueprintjs/select', + '@blueprintjs/datetime', + 'restful-react', + '@harness/monaco-yaml', + 'monaco-editor', + 'monaco-editor-core', + 'monaco-languages', + 'monaco-plugin-helpers', + 'react-monaco-editor' + ] + +/** + * @type {import('webpack').ModuleFederationPluginOptions} + */ +module.exports = { + name: 'governance', + filename: 'remoteEntry.js', + library: { + type: 'var', + name: 'governance' + }, + exposes: { + './App': './src/App.tsx', + './EvaluationModal': './src/modals/EvaluationModal/EvaluationModal.tsx', + './PipelineGovernanceView': './src/views/PipelineGovernanceView/PipelineGovernanceView.tsx', + './EvaluationView': './src/views/EvaluationView/EvaluationView.tsx', + './PolicySetWizard': './src/pages/PolicySets/components/PolicySetWizard.tsx' + }, + shared: { + formik: packageJSON.dependencies['formik'], + ...mapValues(pick(packageJSON.dependencies, ExactSharedPackages), version => ({ + singleton: true, + requiredVersion: version + })) + } +}; \ No newline at end of file diff --git a/web/config/webpack.common.js b/web/config/webpack.common.js new file mode 100644 index 000000000..ffd01a146 --- /dev/null +++ b/web/config/webpack.common.js @@ -0,0 +1,168 @@ +const path = require('path'); + +const webpack = require('webpack') +const { + container: { ModuleFederationPlugin }, + DefinePlugin +} = require('webpack'); +const MiniCssExtractPlugin = require('mini-css-extract-plugin'); +const TsconfigPathsPlugin = require('tsconfig-paths-webpack-plugin'); +const GenerateStringTypesPlugin = require('../scripts/webpack/GenerateStringTypesPlugin').GenerateStringTypesPlugin +const { RetryChunkLoadPlugin } = require('webpack-retry-chunk-load-plugin') + +const moduleFederationConfig = require('./moduleFederation.config'); +const CONTEXT = process.cwd(); + +const DEV = process.env.NODE_ENV === 'development' +const ON_PREM = `${process.env.ON_PREM}` === 'true' + +module.exports = { + target: 'web', + context: CONTEXT, + stats: { + modules: false, + children: false + }, + output: { + publicPath: 'auto', + filename: DEV ? 'static/[name].js' : 'static/[name].[contenthash:6].js', + chunkFilename: DEV ? 'static/[name].[id].js' : 'static/[name].[id].[contenthash:6].js', + pathinfo: false + }, + module: { + rules: [ + { + test: /\.m?js$/, + include: /node_modules/, + type: 'javascript/auto' + }, + { + test: /\.(j|t)sx?$/, + exclude: /node_modules/, + use: [ + { + loader: 'ts-loader', + options: { + transpileOnly: true + } + } + ] + }, + { + test: /\.module\.scss$/, + exclude: /node_modules/, + use: [ + MiniCssExtractPlugin.loader, + { + loader: '@harness/css-types-loader', + options: { + prettierConfig: CONTEXT + } + }, + { + loader: 'css-loader', + options: { + importLoaders: 1, + modules: { + mode: 'local', + localIdentName: DEV ? '[name]_[local]_[hash:base64:6]' : '[hash:base64:6]', + exportLocalsConvention: 'camelCaseOnly' + } + } + }, + { + loader: 'sass-loader', + options: { + sassOptions: { + includePaths: [path.join(CONTEXT, 'src')] + }, + sourceMap: false, + implementation: require('sass') + } + } + ] + }, + { + test: /(? { + it('load the dashboard', () => { + cy.visit('/') + cy.contains('In Effect') + cy.contains('Policy Evaluations') + cy.contains('Failures Recorded') + }) +}) diff --git a/web/cypress/integration/evaluations.spec.js b/web/cypress/integration/evaluations.spec.js new file mode 100644 index 000000000..3bb8c4981 --- /dev/null +++ b/web/cypress/integration/evaluations.spec.js @@ -0,0 +1,9 @@ +// disabling at the moment because of logic around Evaluations tab being removed in standalone mode (account in NG equivalent) + +// describe('evaluations', () => { +// it('load the table', () => { +// cy.visit('/') +// cy.contains('Evaluations').click() +// cy.contains('Policy evaluations are created when policy sets are enforced on your Harness entities.') +// }) +// }) diff --git a/web/cypress/integration/policy.spec.js b/web/cypress/integration/policy.spec.js new file mode 100644 index 000000000..3261564e3 --- /dev/null +++ b/web/cypress/integration/policy.spec.js @@ -0,0 +1,7 @@ +describe('policies', () => { + it('load the table', () => { + cy.visit('/') + cy.contains('Policies').click() + cy.get('[class="TableV2--row TableV2--card TableV2--clickable"]').should('have.length', 12) + }) +}) diff --git a/web/cypress/integration/policyset.spec.js b/web/cypress/integration/policyset.spec.js new file mode 100644 index 000000000..e6291d5f3 --- /dev/null +++ b/web/cypress/integration/policyset.spec.js @@ -0,0 +1,7 @@ +describe('policy sets', () => { + it('load the table', () => { + cy.visit('/') + cy.contains('Policy Set').click() + cy.contains('A harness policy set allows you to group policies and configure where they will be enforced.') + }) +}) diff --git a/web/cypress/videos/dashboard.spec.js.mp4 b/web/cypress/videos/dashboard.spec.js.mp4 new file mode 100644 index 0000000000000000000000000000000000000000..9c07c7dbdf868841db41680a51437feb7e1d0c3e GIT binary patch literal 35446 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

RTkd(&@SF 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 E0ICO0=>Px# literal 0 HcmV?d00001 diff --git a/web/cypress/videos/policyset.spec.js.mp4 b/web/cypress/videos/policyset.spec.js.mp4 new file mode 100644 index 0000000000000000000000000000000000000000..c47719adf969d042e6367d3fd952720baae392f7 GIT binary patch literal 33780 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 literal 0 HcmV?d00001 diff --git a/web/dist.go b/web/dist.go index 989a72c99..68b85db6b 100644 --- a/web/dist.go +++ b/web/dist.go @@ -10,40 +10,7 @@ package web import ( "embed" - "io/fs" - "net/http" - "path/filepath" ) //go:embed dist/* -var content embed.FS - -// Handler returns an http.HandlerFunc that servers the -// static content from the embedded file system. -func Handler() http.HandlerFunc { - // Load the files subdirectory - fs, err := fs.Sub(content, "dist") - if err != nil { - panic(err) - } - // Create an http.FileServer to serve the - // contents of the files subdiretory. - handler := http.FileServer(http.FS(fs)) - - // Create an http.HandlerFunc that wraps the - // http.FileServer to always load the index.html - // file if a directory path is being requested. - return http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { - // because this is a single page application, - // we need to always load the index.html file - // in the root of the project, unless the path - // points to a file with an extension (css, js, etc) - if filepath.Ext(r.URL.Path) == "" { - // HACK: alter the path to point to the - // root of the project. - r.URL.Path = "/" - } - // and finally server the file. - handler.ServeHTTP(w, r) - }) -} +var UI embed.FS diff --git a/web/package.json b/web/package.json index c6e388b47..50613e2ed 100644 --- a/web/package.json +++ b/web/package.json @@ -1,5 +1,5 @@ { - "name": "sample-module", + "name": "ui-template", "description": "Harness Inc", "version": "0.0.1", "author": "Harness Inc", @@ -8,14 +8,14 @@ "homepage": "http://harness.io/", "repository": { "type": "git", - "url": "https://github.com/drone/sample-module.git" + "url": "https://github.com/wings-software/ui-template.git" }, "bugs": { - "url": "https://github.com/sample-module/sample-module/issues" + "url": "https://github.com/wings-software/ui-template/issues" }, "keywords": [], "scripts": { - "dev": "NODE_ENV=development webpack serve --progress", + "dev": "webpack serve --config config/webpack.dev.js", "test": "jest src --silent", "test:watch": "jest --watch", "lint": "eslint --rulesdir ./scripts/eslint-rules --ext .ts --ext .tsx src", @@ -24,60 +24,130 @@ "services": "npm-run-all services:*", "services:pm": "restful-react import --config restful-react.config.js pm", "postservices": "prettier --write src/services/**/*.tsx", - "build": "npm run clean; webpack --mode production", + "build": "rm -rf dist && webpack --config config/webpack.prod.js", "coverage": "npm test --coverage", "setup-github-registry": "sh scripts/setup-github-registry.sh", "strings": "npm-run-all strings:*", "strings:genTypes": "node scripts/strings/generateTypesCli.mjs", "fmt": "prettier --write \"./src/**/*.{ts,tsx,css,scss}\"", - "micro:watch": "nodemon --watch 'src/**/*' -e ts,tsx,html,scss,svg,yaml --exec 'npm-run-all' -- micro:build micro:serve", - "micro:build": "webpack --mode production", - "micro:serve": "serve ./dist -l 3000" + "checks": "npm run typecheck; npm run lint; npm run test" }, "dependencies": { "@blueprintjs/core": "3.26.1", "@blueprintjs/datetime": "3.13.0", "@blueprintjs/select": "3.12.3", - "@harness/uicore": "^1.23.0", - "anser": "^2.1.0", - "classnames": "^2.3.1", + "@emotion/core": "^10.0.28", + "@emotion/styled": "^10.0.27", + "@harness/design-system": "1.0.0", + "@harness/icons": "^1.27.0", + "@harness/monaco-yaml": ">=1.0.0", + "@harness/ng-tooltip": ">=1.30.68", + "@harness/telemetry": ">=1.0.37", + "@harness/uicore": "3.70.0", + "@harness/use-modal": ">=1.1.0", + "@popperjs/core": "^2.4.2", + "@projectstorm/react-diagrams-core": "^6.6.0", + "@urql/exchange-request-policy": "^0.1.3", + "anser": "^2.0.1", + "classnames": "^2.2.6", "clipboard-copy": "^3.1.0", - "formik": "1.5.8", + "closest": "^0.0.1", + "copy-to-clipboard": "^3.3.1", + "cron-validator": "^1.2.1", + "cronstrue": "^1.114.0", + "event-source-polyfill": "^1.0.22", + "formik": "2.2.9", + "highcharts": "9.1.0", + "highcharts-react-official": "3.0.0", + "idb": "^5.0.4", "immer": "^9.0.6", + "jsonc-parser": "^2.0.2", "lodash-es": "^4.17.15", - "marked": "^3.0.8", + "marked": "^4.0.12", "masonry-layout": "^4.2.2", + "ml-matrix": "^6.5.0", "moment": "^2.25.3", + "moment-range": "^4.0.2", "monaco-editor": "^0.19.2", + "monaco-editor-core": "0.15.5", + "monaco-languages": "1.6.0", + "monaco-plugin-helpers": "^1.0.2", + "p-debounce": "^3.0.1", "qs": "^6.9.4", "react": "^17.0.2", + "react-beautiful-dnd": "^13.0.0", + "react-contenteditable": "^3.3.5", "react-dom": "^17.0.2", "react-draggable": "^4.4.2", - "react-router-dom": "5.2.0", + "react-lottie-player": "^1.4.0", + "react-monaco-editor": "^0.34.0", + "react-popper": "^2.2.3", + "react-qr-code": "^1.1.1", + "react-router-dom": "^5.2.0", + "react-split-pane": "^0.1.92", "react-table": "^7.1.0", + "react-table-sticky": "^1.1.3", + "react-timeago": "^4.4.0", + "react-virtuoso": "^1.10.2", "restful-react": "15.6.0", - "swr": "^0.5.4", - "yaml": "^1.10.0" + "secure-web-storage": "^1.0.2", + "urql": "^2.0.3", + "uuid": "^8.3.0", + "vscode-languageserver-types": "3.15.1", + "webpack-retry-chunk-load-plugin": "^3.1.0", + "yaml": "^1.10.0", + "yup": "^0.29.1" }, "devDependencies": { - "@harness/css-types-loader": "^3.1.0", - "@harness/jarvis": "0.12.0", + "@babel/core": "^7.13.15", + "@emotion/react": "^11.4.0", + "@graphql-codegen/cli": "^1.21.2", + "@graphql-codegen/typescript": "^1.21.1", + "@graphql-codegen/typescript-operations": "^1.17.15", + "@graphql-codegen/typescript-urql": "^2.0.6", + "@harness/css-types-loader": "2.0.2", + "@harness/jarvis": "^0.12.0", + "@istanbuljs/nyc-config-typescript": "^1.0.1", + "@stoplight/prism-cli": "^4.3.1", + "@stoplight/prism-http": "^4.3.1", + "@storybook/addon-actions": "^6.3.1", + "@storybook/addon-docs": "^6.3.1", + "@storybook/addon-essentials": "^6.3.1", + "@storybook/addon-links": "^6.3.1", + "@storybook/builder-webpack5": "^6.3.1", + "@storybook/manager-webpack5": "^6.3.1", + "@storybook/react": "^6.3.1", "@testing-library/jest-dom": "^5.12.0", "@testing-library/react": "^10.0.3", "@testing-library/react-hooks": "5", "@testing-library/user-event": "^10.3.1", "@types/classnames": "^2.2.10", + "@types/jest": "^26.0.15", "@types/lodash-es": "^4.17.3", + "@types/masonry-layout": "^4.2.1", "@types/mustache": "^4.0.1", + "@types/node": "^16.4.10", "@types/path-to-regexp": "^1.7.0", "@types/qs": "^6.9.4", + "@types/query-string": "^6.3.0", "@types/react": "^17.0.3", + "@types/react-beautiful-dnd": "^13.0.0", "@types/react-dom": "^17.0.3", + "@types/react-monaco-editor": "^0.16.0", "@types/react-router-dom": "^5.1.7", "@types/react-table": "^7.0.18", + "@types/react-timeago": "^4.1.1", "@types/testing-library__react-hooks": "^3.2.0", + "@types/testing-library__user-event": "^4.1.1", + "@types/uuid": "^8.3.0", + "@types/yup": "^0.29.0", "@typescript-eslint/eslint-plugin": "^4.22.0", "@typescript-eslint/parser": "^4.22.0", + "@urql/devtools": "^2.0.3", + "@zerollup/ts-transform-paths": "^1.7.18", + "assert": "^2.0.0", + "babel-loader": "^8.2.2", + "cache-loader": "^4.1.0", "case": "^1.6.3", "circular-dependency-plugin": "^5.2.2", "css-loader": "^6.3.0", @@ -89,12 +159,23 @@ "eslint-plugin-jest": "^24.3.6", "eslint-plugin-react": "^7.23.2", "eslint-plugin-react-hooks": "^4.2.0", + "express": "^4.17.1", + "external-remotes-plugin": "^1.0.0", + "fake-indexeddb": "^3.1.2", "fast-json-stable-stringify": "^2.1.0", "file-loader": "^6.2.0", "fork-ts-checker-webpack-plugin": "^6.2.1", "glob": "^7.1.6", + "graphql": "^15.5.0", "html-webpack-plugin": "^5.3.1", + "https": "^1.0.0", + "husky": "^6.0.0", + "identity-obj-proxy": "^3.0.0", + "ignore-loader": "^0.1.2", + "istanbul-lib-coverage": "^3.0.0", "jest": "^26.2.0", + "jest-canvas-mock": "^2.3.0", + "jest-junit": "^12.0.0", "lighthouse": "^6.5.0", "lint-staged": "^11.0.0", "mini-css-extract-plugin": "^2.4.2", @@ -102,22 +183,30 @@ "mustache": "^4.0.1", "nodemon": "^2.0.15", "npm-run-all": "^4.1.5", + "null-loader": "^4.0.1", + "nyc": "^15.1.0", + "patch-package": "^6.4.7", "path-to-regexp": "^6.1.0", + "postinstall-postinstall": "^2.1.0", "prettier": "^2.3.2", "react-test-renderer": "^17.0.2", "sass": "^1.32.8", "sass-loader": "^12.1.0", "serve": "^13.0.2", + "source-map-support": "^0.5.20", "style-loader": "^3.3.0", "ts-jest": "^26.5.5", "ts-loader": "^9.2.6", + "ts-node": "^10.2.1", "tsconfig-paths-webpack-plugin": "^3.5.1", "typescript": "^4.2.4", "url-loader": "^4.1.1", "webpack": "^5.58.0", + "webpack-bugsnag-plugins": "^1.8.0", "webpack-bundle-analyzer": "^4.4.0", - "webpack-cli": "^4.9.1", - "webpack-dev-server": "^4.6.0", + "webpack-cli": "^4.9.0", + "webpack-dev-server": "^4.3.1", + "worker-loader": "^3.0.8", "yaml-loader": "^0.6.0" }, "resolutions": { @@ -126,7 +215,11 @@ "@types/testing-library__react": "^10.0.0", "@types/testing-library__dom": "^7.0.0", "anser": "2.0.1", - "create-react-context": "0.3.0" + "create-react-context": "0.3.0", + "@blueprintjs/core": "3.26.1", + "@blueprintjs/datetime": "3.13.0", + "@blueprintjs/icons": "3.16.0", + "@blueprintjs/select": "3.12.3" }, "engines": { "node": ">=14.16.0" diff --git a/web/restful-react.config.js b/web/restful-react.config.js index 3fe478bc0..adbf41630 100644 --- a/web/restful-react.config.js +++ b/web/restful-react.config.js @@ -6,12 +6,11 @@ const customGenerator = require('./scripts/swagger-custom-generator.js') module.exports = { pm: { - output: 'src/services/pm/index.tsx', - file: 'src/services/pm/swagger.json', - transformer: 'scripts/swagger-transform.js', - customImport: `import { getConfig } from "../config";`, + output: 'src/services/policy-mgmt/index.tsx', + file: '../design/gen/http/openapi3.json', + customImport: `import { getConfigNew } from "../config";`, customProps: { - base: `{getConfig("pm/api/v1")}` + base: `{getConfigNew("pm")}` } } } diff --git a/web/src/App.tsx b/web/src/App.tsx index eee735c57..0e4417baf 100644 --- a/web/src/App.tsx +++ b/web/src/App.tsx @@ -1,18 +1,19 @@ import React, { useEffect, useState, useCallback } from 'react' import { RestfulProvider } from 'restful-react' -import { TooltipContextProvider, ModalProvider } from '@harness/uicore' +import { TooltipContextProvider } from '@harness/uicore' +import { ModalProvider } from '@harness/use-modal' import { FocusStyleManager } from '@blueprintjs/core' +import { tooltipDictionary } from '@harness/ng-tooltip' import AppErrorBoundary from 'framework/AppErrorBoundary/AppErrorBoundary' -import { useAPIToken } from 'hooks/useAPIToken' import { AppContextProvider } from 'AppContext' import { setBaseRouteInfo } from 'RouteUtils' import type { AppProps } from 'AppProps' import { buildResfulReactRequestOptions, handle401 } from 'AppUtils' import { RouteDestinations } from 'RouteDestinations' +import { useAPIToken } from 'hooks/useAPIToken' import { languageLoader } from './framework/strings/languageLoader' import type { LanguageRecord } from './framework/strings/languageLoader' import { StringsContextProvider } from './framework/strings/StringsContextProvider' -import './App.scss' FocusStyleManager.onlyShowFocusOnTabs() @@ -31,8 +32,8 @@ const App: React.FC = props => { const [strings, setStrings] = useState() const [token, setToken] = useAPIToken(apiToken) const getRequestOptions = useCallback((): Partial => { - return buildResfulReactRequestOptions(token) - }, [token]) + return buildResfulReactRequestOptions(hooks.useGetToken?.() || apiToken || 'default') + }, []) // eslint-disable-line react-hooks/exhaustive-deps setBaseRouteInfo(accountId, baseRoutePath) useEffect(() => { @@ -48,7 +49,7 @@ const App: React.FC = props => { return strings ? ( - + = props => { on401() } }}> - + {children ? children : } diff --git a/web/src/AppContext.tsx b/web/src/AppContext.tsx index 310d870bd..9f2b27f05 100644 --- a/web/src/AppContext.tsx +++ b/web/src/AppContext.tsx @@ -13,7 +13,7 @@ const AppContext = React.createContext({ components: {} }) -export const AppContextProvider: React.FC<{ value: AppProps }> = ({ value: initialValue, children }) => { +export const AppContextProvider: React.FC<{ value: AppProps }> = React.memo(({ value: initialValue, children }) => { const [appStates, setAppStates] = useState(initialValue) return ( @@ -27,6 +27,6 @@ export const AppContextProvider: React.FC<{ value: AppProps }> = ({ value: initi {children} ) -} +}) export const useAppContext: () => AppContextProps = () => useContext(AppContext) diff --git a/web/src/AppProps.ts b/web/src/AppProps.ts index a39a33706..6c8ee73b3 100644 --- a/web/src/AppProps.ts +++ b/web/src/AppProps.ts @@ -1,5 +1,9 @@ import type React from 'react' +import type * as History from 'history' +import type { PermissionOptionsMenuButtonProps } from 'components/Permissions/PermissionsOptionsMenuButton' +import type { OverviewChartsWithToggleProps } from 'components/OverviewChartsWithToggle/OverviewChartsWithToggle' import type { LangLocale } from './framework/strings/languageLoader' +import type { FeatureFlagMap, GitFiltersProps } from './utils/GovernanceUtils' /** * AppProps defines an interface for host (parent) and @@ -7,7 +11,6 @@ import type { LangLocale } from './framework/strings/languageLoader' * of the child app to be customized from the parent app. * * Areas of customization: - * * - API token * - Active user * - Active locale (i18n) @@ -59,15 +62,27 @@ export interface AppPathProps { policyIdentifier?: string policySetIdentifier?: string evaluationId?: string - pipeline?: string - execution?: string + repo?: string + branch?: string } /** * AppPropsHook defines a collection of React Hooks that application receives from * Platform integration. */ -export interface AppPropsHook {} // eslint-disable-line @typescript-eslint/no-empty-interface +export interface AppPropsHook { + usePermission(permissionRequest: any, deps?: Array): Array + useGetSchemaYaml(params: any, deps?: Array): Record + useFeatureFlags(): FeatureFlagMap + useGetToken(): any + useAppStore(): any + useGitSyncStore(): any + useSaveToGitDialog(props: { onSuccess: any; onClose: any; onProgessOverlayClose: any }): any + useGetListOfBranchesWithStatus(props: any): any + useAnyEnterpriseLicense(): boolean + useCurrentEnterpriseLicense(): boolean + useLicenseStore(): any +} // eslint-disable-line @typescript-eslint/no-empty-interface /** * AppPropsComponent defines a collection of React Components that application receives from @@ -75,4 +90,21 @@ export interface AppPropsHook {} // eslint-disable-line @typescript-eslint/no-e */ export interface AppPropsComponent { NGBreadcrumbs: React.FC + RbacButton: React.FC + RbacOptionsMenuButton: React.FC + GitFilters: React.FC + GitSyncStoreProvider: React.FC + GitContextForm: React.FC + NavigationCheck: React.FC<{ + when?: boolean + textProps?: { + contentText?: string + titleText?: string + confirmButtonText?: string + cancelButtonText?: string + } + navigate: (path: string) => void + shouldBlockNavigation?: (location: History.Location) => boolean + }> + OverviewChartsWithToggle: React.FC } diff --git a/web/src/RouteDefinitions.ts b/web/src/RouteDefinitions.ts index 361540bfc..a20413b04 100644 --- a/web/src/RouteDefinitions.ts +++ b/web/src/RouteDefinitions.ts @@ -3,37 +3,99 @@ import type { AppPathProps } from 'AppProps' export enum RoutePath { SIGNIN = '/signin', - TEST_PAGE1 = '/test-page1', - TEST_PAGE2 = '/test-page2', - - REGISTER = '/register', - LOGIN = '/login', - USERS = '/users', - ACCOUNT = '/account', - PIPELINES = '/pipelines', - PIPELINE = '/pipelines/:pipeline', - PIPELINE_SETTINGS = '/pipelines/:pipeline/settings', - PIPELINE_EXECUTIONS = '/pipelines/:pipeline/executions', - PIPELINE_EXECUTION = '/pipelines/:pipeline/executions/:execution', - PIPELINE_EXECUTION_SETTINGS = '/pipelines/:pipeline/executions/:execution/settings' + POLICY_DASHBOARD = '/dashboard', + POLICY_LISTING = '/policies', + POLICY_NEW = '/policies/new', + POLICY_VIEW = '/policies/view/:policyIdentifier', + //POLICY_EDIT = '/policies/edit/:policyIdentifier', + POLICY_EDIT= '/policies/edit/:policyIdentifier/:repo?/:branch?', + POLICY_SETS_LISTING = '/policy-sets', + POLICY_SETS_DETAIL = '/policy-sets/:policySetIdentifier', + POLICY_EVALUATIONS_LISTING = '/policy-evaluations', + POLICY_EVALUATION_DETAIL = '/policy-evaluations/:evaluationId' } export default { - toLogin: (): string => toRouteURL(RoutePath.LOGIN), - toRegister: (): string => toRouteURL(RoutePath.REGISTER), - toAccount: (): string => toRouteURL(RoutePath.ACCOUNT), - toPipelines: (): string => toRouteURL(RoutePath.PIPELINES), - toPipeline: ({ pipeline }: Required>): string => - toRouteURL(RoutePath.PIPELINE, { pipeline }), - toPipelineExecutions: ({ pipeline }: Required>): string => - toRouteURL(RoutePath.PIPELINE_EXECUTIONS, { pipeline }), - toPipelineSettings: ({ pipeline }: Required>): string => - toRouteURL(RoutePath.PIPELINE_SETTINGS, { pipeline }), - toPipelineExecution: ({ pipeline, execution }: AppPathProps): string => - toRouteURL(RoutePath.PIPELINE_EXECUTION, { pipeline, execution }), - toPipelineExecutionSettings: ({ pipeline, execution }: AppPathProps): string => - toRouteURL(RoutePath.PIPELINE_EXECUTION_SETTINGS, { pipeline, execution }) - - // @see https://github.com/drone/policy-mgmt/blob/main/web/src/RouteDefinitions.ts - // for more examples regarding to passing parameters to generate URLs + toSignIn: (): string => toRouteURL(RoutePath.SIGNIN), + toPolicyDashboard: (): string => toRouteURL(RoutePath.POLICY_DASHBOARD), + toPolicyListing: (): string => toRouteURL(RoutePath.POLICY_LISTING), + toPolicyNew: (): string => toRouteURL(RoutePath.POLICY_NEW), + toPolicyView: ({ policyIdentifier }: Required>): string => + toRouteURL(RoutePath.POLICY_VIEW, { policyIdentifier }), + toPolicyEdit: ({ policyIdentifier }: Required>): string => + toRouteURL(RoutePath.POLICY_EDIT, { policyIdentifier }), + toPolicySets: (): string => toRouteURL(RoutePath.POLICY_SETS_LISTING), + toPolicyEvaluations: (): string => toRouteURL(RoutePath.POLICY_EVALUATIONS_LISTING), + toGovernancePolicyDashboard: ({ orgIdentifier, projectIdentifier, module }: AppPathProps) => + toRouteURL(RoutePath.POLICY_DASHBOARD, { + orgIdentifier, + projectIdentifier, + module + }), + toGovernancePolicyListing: ({ orgIdentifier, projectIdentifier, module }: AppPathProps) => + toRouteURL(RoutePath.POLICY_LISTING, { + orgIdentifier, + projectIdentifier, + module + }), + toGovernanceNewPolicy: ({ orgIdentifier, projectIdentifier, module }: AppPathProps) => + toRouteURL(RoutePath.POLICY_NEW, { + orgIdentifier, + projectIdentifier, + module + }), + toGovernanceEditPolicy: ({ + orgIdentifier, + projectIdentifier, + policyIdentifier, + module, + repo, + branch + }: RequireField) => + toRouteURL(RoutePath.POLICY_EDIT, { + orgIdentifier, + projectIdentifier, + policyIdentifier, + module, + repo, + branch + }), + toGovernanceViewPolicy: ({ + orgIdentifier, + projectIdentifier, + policyIdentifier, + module + }: RequireField) => + toRouteURL(RoutePath.POLICY_VIEW, { + orgIdentifier, + projectIdentifier, + policyIdentifier, + module + }), + toGovernancePolicySetsListing: ({ orgIdentifier, projectIdentifier, module }: AppPathProps) => + toRouteURL(RoutePath.POLICY_SETS_LISTING, { + orgIdentifier, + projectIdentifier, + module + }), + toGovernancePolicySetDetail: ({ orgIdentifier, projectIdentifier, policySetIdentifier, module }: AppPathProps) => + toRouteURL(RoutePath.POLICY_SETS_DETAIL, { + orgIdentifier, + projectIdentifier, + module, + policySetIdentifier + }), + toGovernanceEvaluationsListing: ({ orgIdentifier, projectIdentifier, module }: AppPathProps) => + toRouteURL(RoutePath.POLICY_EVALUATIONS_LISTING, { + orgIdentifier, + projectIdentifier, + module + }), + toGovernanceEvaluationDetail: ({ orgIdentifier, projectIdentifier, evaluationId, module }: AppPathProps) => + toRouteURL(RoutePath.POLICY_EVALUATION_DETAIL, { + orgIdentifier, + projectIdentifier, + module, + evaluationId + }) } diff --git a/web/src/RouteDestinations.tsx b/web/src/RouteDestinations.tsx index 8ef8a7aa2..0f5158cfe 100644 --- a/web/src/RouteDestinations.tsx +++ b/web/src/RouteDestinations.tsx @@ -1,75 +1,105 @@ -import React from 'react' -import { HashRouter, Route, Switch } from 'react-router-dom' -import type { AppProps } from 'AppProps' +/* eslint-disable react/display-name */ +import React, { useCallback } from 'react' +import { HashRouter, Route, Switch, Redirect } from 'react-router-dom' +import { SignInPage } from 'pages/signin/SignInPage' import { NotFoundPage } from 'pages/404/NotFoundPage' -import { routePath } from 'RouteUtils' -import { RoutePath } from 'RouteDefinitions' +import { routePath, standaloneRoutePath } from './RouteUtils' +import { RoutePath } from './RouteDefinitions' +import PolicyControlPage from './pages/PolicyControl/PolicyControlPage' +import Policies from './pages/Policies/Policies' +import PolicyDashboard from './pages/PolicyDashboard/PolicyDashboard' +import PolicySets from './pages/PolicySets/PolicySets' +import PolicyEvaluations from './pages/PolicyEvaluations/PolicyEvaluations' +import { EditPolicy } from './pages/EditPolicy/EditPolicy' +import { ViewPolicy } from './pages/ViewPolicy/ViewPolicy' +import { PolicySetDetail } from './pages/PolicySetDetail/PolicySetDetail' +import { EvaluationDetail } from './pages/EvaluationDetail/EvaluationDetail' -import { Login } from './pages/Login/Login' -import { Home } from './pages/Pipelines/Pipelines' -import { Executions } from './pages/Executions/Executions' -import { ExecutionSettings } from './pages/Execution/Settings' -import { PipelineSettings } from './pages/Pipeline/Settings' -import { Account } from './pages/Account/Account' -import { SideNav } from './components/SideNav/SideNav' +export const RouteDestinations: React.FC<{ standalone: boolean }> = React.memo( + ({ standalone }) => { + // TODO: Add Auth wrapper -export const RouteDestinations: React.FC> = ({ standalone }) => { - // TODO: Add a generic Auth Wrapper + const Destinations: React.FC = useCallback( + () => ( + + {standalone && ( + + + + )} - const Destinations: React.FC = () => ( - - {standalone && ( - - - - )} - {standalone && ( - - - - )} + + + + + - - - - - + + + + + - - - - - + + + + + - - - - - + + + + + - - - - - + + + + + - - - - - + + + + + - - - - - ) + + + + + - return standalone ? ( - + + + + + + + + + + + + + + {standalone ? ( + + ) : ( + + )} + + + ), + [standalone] + ) + + return standalone ? ( + + + + ) : ( - - ) : ( - - ) -} + ) + } +) diff --git a/web/src/RouteUtils.ts b/web/src/RouteUtils.ts index e1acc32d0..3da942e57 100644 --- a/web/src/RouteUtils.ts +++ b/web/src/RouteUtils.ts @@ -14,40 +14,42 @@ type Scope = Pick { - if (window.APP_RUN_IN_STANDALONE_MODE) { - return path - } - const { orgIdentifier, projectIdentifier, module } = scope - // - // TODO: Change this scheme below to reflect your application when it's embedded into Harness NextGen UI - // - - // The Sample Module UI app is mounted in three places in Harness Platform - // 1. Account Settings (account level) - // 2. Org Details (org level) - // 3. Project Settings (project level) + // The Governance app is mounted in three places in Harness Platform + // 1. Account Settings (account level governance) + // 2. Org Details (org level governance) + // 3. Project Settings (project level governance) if (module && orgIdentifier && projectIdentifier) { - return `/account/${accountId}/${module}/orgs/${orgIdentifier}/projects/${projectIdentifier}/setup/sample-module${path}` + return `/account/${accountId}/${module}/orgs/${orgIdentifier}/projects/${projectIdentifier}/setup/governance${path}` } else if (orgIdentifier && projectIdentifier) { - return `/account/${accountId}/home/orgs/${orgIdentifier}/projects/${projectIdentifier}/setup/sample-module${path}` + return `/account/${accountId}/home/orgs/${orgIdentifier}/projects/${projectIdentifier}/setup/governance${path}` } else if (orgIdentifier) { - return `/account/${accountId}/settings/organizations/${orgIdentifier}/setup/sample-module${path}` + return `/account/${accountId}/settings/organizations/${orgIdentifier}/setup/governance${path}` } - return `/account/${accountId}/settings/sample-module${path}` + return `/account/${accountId}/settings/governance${path}` } /** - * Generate route path to be used in RouteDefinitions. + * Generate route paths to be used in RouteDefinitions. * @param path route path - * @returns a proper route path that works in both standalone and embedded modes. + * @returns an array of proper route paths that works in both standalone and embedded modes across all levels of governance. */ -export const routePath = (path: string): string => `${baseRoutePath || ''}${path}` +export const routePath = (path: string): string[] => [ + `/account/:accountId/settings/governance${path}`, + `/account/:accountId/settings/organizations/:orgIdentifier/setup/governance${path}`, + `/account/:accountId/:module(cd)/orgs/:orgIdentifier/projects/:projectIdentifier/setup/governance${path}`, + `/account/:accountId/:module(ci)/orgs/:orgIdentifier/projects/:projectIdentifier/setup/governance${path}`, + `/account/:accountId/:module(cf)/orgs/:orgIdentifier/projects/:projectIdentifier/setup/governance${path}`, + `/account/:accountId/:module(sto)/orgs/:orgIdentifier/projects/:projectIdentifier/setup/governance${path}`, + `/account/:accountId/:module(cv)/orgs/:orgIdentifier/projects/:projectIdentifier/setup/governance${path}`, +] + +export const standaloneRoutePath = (path: string): string => `${baseRoutePath || ''}${path}` /** * Generate route URL to be used RouteDefinitions' default export (aka actual react-router link href) diff --git a/web/src/bootstrap.tsx b/web/src/bootstrap.tsx index a4b8a8705..dac29e3ef 100644 --- a/web/src/bootstrap.tsx +++ b/web/src/bootstrap.tsx @@ -1,10 +1,21 @@ import React from 'react' import ReactDOM from 'react-dom' import App from './App' +import './App.scss' // This flag is used in services/config.ts to customize API path when app is run // in multiple modes (standalone vs. embedded). // Also being used in when generating proper URLs inside the app. -window.APP_RUN_IN_STANDALONE_MODE = true +window.STRIP_PM_PREFIX = true -ReactDOM.render(, document.getElementById('react-root')) +ReactDOM.render( + , + document.getElementById('react-root') +) diff --git a/web/src/components/ContainerSpinner/ContainerSpinner.module.scss b/web/src/components/ContainerSpinner/ContainerSpinner.module.scss deleted file mode 100644 index c037cbce3..000000000 --- a/web/src/components/ContainerSpinner/ContainerSpinner.module.scss +++ /dev/null @@ -1,8 +0,0 @@ -.spinner { - width: 100%; - height: 100%; - - > div { - position: relative !important; - } -} diff --git a/web/src/components/ContainerSpinner/ContainerSpinner.tsx b/web/src/components/ContainerSpinner/ContainerSpinner.tsx deleted file mode 100644 index a5b1d7f6e..000000000 --- a/web/src/components/ContainerSpinner/ContainerSpinner.tsx +++ /dev/null @@ -1,12 +0,0 @@ -import React from 'react' -import cx from 'classnames' -import { Container, PageSpinner } from '@harness/uicore' -import css from './ContainerSpinner.module.scss' - -export const ContainerSpinner: React.FC> = ({ className, ...props }) => { - return ( - - - - ) -} diff --git a/web/src/components/EvaluationStatus/EvaluationStatusLabel.module.scss b/web/src/components/EvaluationStatus/EvaluationStatusLabel.module.scss deleted file mode 100644 index 3f6be286e..000000000 --- a/web/src/components/EvaluationStatus/EvaluationStatusLabel.module.scss +++ /dev/null @@ -1,42 +0,0 @@ -.status { - --bg-color: var(--grey-350); - white-space: nowrap !important; - font-size: var(--font-size-xsmall) !important; - color: var(--white) !important; - border: none; - background-color: var(--bg-color) !important; - border-radius: var(--spacing-2); - padding: var(--spacing-1) var(--spacing-3) !important; - height: 18px; - line-height: var(--font-size-normal) !important; - font-weight: bold !important; - display: inline-flex !important; - justify-content: center; - align-items: center; - letter-spacing: 0.2px; - - &.danger { - --bg-color: var(--red-600); - } - - &.none { - --bg-color: var(--grey-800); - } - - &.success { - --bg-color: var(--green-600); - } - - &.primary { - --bg-color: var(--primary-7); - } - - &.warning { - --bg-color: var(--warning); - } - - > span { - margin-right: var(--spacing-2) !important; - color: var(--white) !important; - } -} diff --git a/web/src/components/EvaluationStatus/EvaluationStatusLabel.module.scss.d.ts b/web/src/components/EvaluationStatus/EvaluationStatusLabel.module.scss.d.ts deleted file mode 100644 index dc3c2ec71..000000000 --- a/web/src/components/EvaluationStatus/EvaluationStatusLabel.module.scss.d.ts +++ /dev/null @@ -1,11 +0,0 @@ -/* eslint-disable */ -// this is an auto-generated file -declare const styles: { - readonly status: string - readonly danger: string - readonly none: string - readonly success: string - readonly primary: string - readonly warning: string -} -export default styles diff --git a/web/src/components/EvaluationStatus/EvaluationStatusLabel.tsx b/web/src/components/EvaluationStatus/EvaluationStatusLabel.tsx deleted file mode 100644 index fec25d7ce..000000000 --- a/web/src/components/EvaluationStatus/EvaluationStatusLabel.tsx +++ /dev/null @@ -1,41 +0,0 @@ -import React from 'react' -import cx from 'classnames' -import { Intent, IconName, Text } from '@harness/uicore' -import type { IconProps } from '@harness/uicore/dist/icons/Icon' -import css from './EvaluationStatusLabel.module.scss' - -export interface EvaluationStatusProps { - intent: Intent - label: string - icon?: IconName - iconProps?: IconProps - className?: string -} - -export const EvaluationStatusLabel: React.FC = ({ - intent, - icon, - iconProps, - label, - className -}) => { - let _icon: IconName | undefined = icon - - if (!_icon) { - switch (intent) { - case Intent.DANGER: - case Intent.WARNING: - _icon = 'warning-sign' - break - case Intent.SUCCESS: - _icon = 'tick-circle' - break - } - } - - return ( - - {label} - - ) -} diff --git a/web/src/components/NameIdDescriptionTags/NameIdDescriptionTags.tsx b/web/src/components/NameIdDescriptionTags/NameIdDescriptionTags.tsx index 2c07071bb..9cc767d6b 100644 --- a/web/src/components/NameIdDescriptionTags/NameIdDescriptionTags.tsx +++ b/web/src/components/NameIdDescriptionTags/NameIdDescriptionTags.tsx @@ -38,7 +38,7 @@ interface NameIdProps { export const NameId = (props: NameIdProps): JSX.Element => { const { getString } = useStrings() - const { identifierProps, nameLabel = getString('common.name'), inputGroupProps = {} } = props + const { identifierProps, nameLabel = getString('name'), inputGroupProps = {} } = props const newInputGroupProps = { placeholder: getString('common.namePlaceholder'), ...inputGroupProps } return ( @@ -55,9 +55,7 @@ export const Description = (props: DescriptionComponentProps): JSX.Element => { return (

- - onSettingsClick(values.slug)} /> - - }> -