From c447cfdd056f920d2b9f6cc3a5befaf5d9dd1f5c Mon Sep 17 00:00:00 2001 From: "Mark J. Becker" Date: Tue, 22 Jun 2021 16:06:30 +0200 Subject: [PATCH 01/10] CIF-2144 - Add basic extension react component project --- ui.frontend/README.md | 2 +- ui.frontend/pom.xml | 18 ++---------------- ui.frontend/src/main/components/App/App.js | 4 ++++ ui.frontend/src/main/site/main.scss | 1 + 4 files changed, 8 insertions(+), 17 deletions(-) diff --git a/ui.frontend/README.md b/ui.frontend/README.md index 7f82bbf2..9875bcc7 100644 --- a/ui.frontend/README.md +++ b/ui.frontend/README.md @@ -92,7 +92,7 @@ Since Venia is acting like a consumer for `aem-core-cif-react-components` you ma As a prerequisite, you need to have `node` and `npm` installed before you perform any of the steps below: -1. Go to the `aem-core-cif-react-components/react-components` and use the following commands: +1. In the CIF Core Components project, go to `react-components/react-components` and `extensions/product-recs/react-components` and use the following commands: ```bash npm run webpack:dev diff --git a/ui.frontend/pom.xml b/ui.frontend/pom.xml index ddf95649..20e94856 100644 --- a/ui.frontend/pom.xml +++ b/ui.frontend/pom.xml @@ -40,22 +40,6 @@ src/main/content/jcr_root - - com.github.eirslett - frontend-maven-plugin - - - npm run prod - generate-resources - - npm - - - run prod - - - - org.apache.maven.plugins maven-assembly-plugin @@ -146,6 +130,7 @@ link @adobe/aem-core-cif-react-components + @adobe/aem-core-cif-ext-product-recs-react-components @@ -192,6 +177,7 @@ install -S @adobe/aem-core-cif-react-components@${core.cif.components.version} + @adobe/aem-core-cif-ext-product-recs-react-components@${core.cif.components.version} diff --git a/ui.frontend/src/main/components/App/App.js b/ui.frontend/src/main/components/App/App.js index f90aa713..0b94a66b 100644 --- a/ui.frontend/src/main/components/App/App.js +++ b/ui.frontend/src/main/components/App/App.js @@ -28,6 +28,9 @@ import { AccountDetails, ResetPassword } from '@adobe/aem-core-cif-react-components'; +import { + ProductRecsGallery +} from '@adobe/aem-core-cif-ext-product-recs-react-components'; import i18n from './i18n'; import partialConfig from './config'; @@ -52,6 +55,7 @@ const App = () => { + diff --git a/ui.frontend/src/main/site/main.scss b/ui.frontend/src/main/site/main.scss index 294075cf..b31da25d 100644 --- a/ui.frontend/src/main/site/main.scss +++ b/ui.frontend/src/main/site/main.scss @@ -3,6 +3,7 @@ @import 'variables'; @import 'base'; @import url('~@adobe/aem-core-cif-react-components/dist/main.css'); +@import url('~@adobe/aem-core-cif-ext-product-recs-react-components/dist/main.css'); @import '../styles/**/*.scss'; @import './styles/*.scss'; From f57c625ae74793d276618b115a3254091eb6e4c1 Mon Sep 17 00:00:00 2001 From: "Mark J. Becker" Date: Thu, 24 Jun 2021 15:46:54 +0200 Subject: [PATCH 02/10] CIF-2144 - Add support for Apollo client dependency sharing --- .circleci/config.yml | 2 + ui.frontend/package-lock.json | 205 ++++++--------------- ui.frontend/package.json | 6 +- ui.frontend/src/main/components/App/App.js | 4 +- ui.frontend/webpack.common.js | 12 +- ui.frontend/webpack.dev.js | 3 +- 6 files changed, 70 insertions(+), 162 deletions(-) diff --git a/.circleci/config.yml b/.circleci/config.yml index 883f982a..4093fe7f 100644 --- a/.circleci/config.yml +++ b/.circleci/config.yml @@ -49,6 +49,8 @@ common: mvn -B clean install cd react-components npm link + cd ../extensions/product-recs/react-components + npm link fi working_directory: ./dependencies diff --git a/ui.frontend/package-lock.json b/ui.frontend/package-lock.json index a1d2229c..19ec755f 100644 --- a/ui.frontend/package-lock.json +++ b/ui.frontend/package-lock.json @@ -23,23 +23,46 @@ } }, "@apollo/client": { - "version": "3.3.20", - "resolved": "https://registry.npmjs.org/@apollo/client/-/client-3.3.20.tgz", - "integrity": "sha512-hS7UmBwJweudw/J3M0RAcusMHNiRuGqkRH6g91PM2ev8cXScIMdXr/++9jo7wD1nAITMCMF4HQQ3LFaw/Or0Bw==", + "version": "3.2.4", + "resolved": "https://registry.npmjs.org/@apollo/client/-/client-3.2.4.tgz", + "integrity": "sha512-lfsxKINoc11+g4NQFyKFuxszc/GlecHrxkJYvx/oWkdpscSU5bm/c+BwI/yvk1/E3yfbR7Afi9XIYrt212xrtA==", "requires": { "@graphql-typed-document-node/core": "^3.0.0", "@types/zen-observable": "^0.8.0", - "@wry/context": "^0.6.0", - "@wry/equality": "^0.5.0", + "@wry/context": "^0.5.2", + "@wry/equality": "^0.2.0", "fast-json-stable-stringify": "^2.0.0", - "graphql-tag": "^2.12.0", + "graphql-tag": "^2.11.0", "hoist-non-react-statics": "^3.3.2", - "optimism": "^0.16.0", + "optimism": "^0.13.0", "prop-types": "^15.7.2", - "symbol-observable": "^4.0.0", - "ts-invariant": "^0.7.0", + "symbol-observable": "^2.0.0", + "terser": "^5.2.0", + "ts-invariant": "^0.4.4", "tslib": "^1.10.0", "zen-observable": "^0.8.14" + }, + "dependencies": { + "commander": { + "version": "2.20.3", + "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", + "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==" + }, + "source-map": { + "version": "0.7.3", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.7.3.tgz", + "integrity": "sha512-CkCj6giN3S+n9qrYiBTX5gystlENnRW5jZeNLHpe6aue+SrHcG5VYwujhW9s4dY31mEGsxBDrHR6oI69fTXsaQ==" + }, + "terser": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/terser/-/terser-5.7.0.tgz", + "integrity": "sha512-HP5/9hp2UaZt5fYkuhNBR8YyRcT8juw8+uFbAme53iN9hblvKnLUTKkmwJG6ocWpIKf8UK4DoeWG4ty0J6S6/g==", + "requires": { + "commander": "^2.20.0", + "source-map": "~0.7.2", + "source-map-support": "~0.5.19" + } + } } }, "@babel/code-frame": { @@ -3800,48 +3823,26 @@ } }, "@wry/context": { - "version": "0.6.0", - "resolved": "https://registry.npmjs.org/@wry/context/-/context-0.6.0.tgz", - "integrity": "sha512-sAgendOXR8dM7stJw3FusRxFHF/ZinU0lffsA2YTyyIOfic86JX02qlPqPVqJNZJPAxFt+2EE8bvq6ZlS0Kf+Q==", + "version": "0.5.4", + "resolved": "https://registry.npmjs.org/@wry/context/-/context-0.5.4.tgz", + "integrity": "sha512-/pktJKHUXDr4D6TJqWgudOPJW2Z+Nb+bqk40jufA3uTkLbnCRKdJPiYDIa/c7mfcPH8Hr6O8zjCERpg5Sq04Zg==", "requires": { - "tslib": "^2.1.0" + "tslib": "^1.14.1" }, "dependencies": { "tslib": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.3.0.tgz", - "integrity": "sha512-N82ooyxVNm6h1riLCoyS9e3fuJ3AMG2zIZs2Gd1ATcSFjSA23Q0fzjjZeh0jbJvWVDZ0cJT8yaNNaaXHzueNjg==" + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", + "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==" } } }, "@wry/equality": { - "version": "0.5.1", - "resolved": "https://registry.npmjs.org/@wry/equality/-/equality-0.5.1.tgz", - "integrity": "sha512-FZKbdpbcVcbDxQrKcaBClNsQaMg9nof1RKM7mReJe5DKUzM5u8S7T+PqwNqvib5O2j2xxF1R4p5O3+b6baTrbw==", - "requires": { - "tslib": "^2.1.0" - }, - "dependencies": { - "tslib": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.3.0.tgz", - "integrity": "sha512-N82ooyxVNm6h1riLCoyS9e3fuJ3AMG2zIZs2Gd1ATcSFjSA23Q0fzjjZeh0jbJvWVDZ0cJT8yaNNaaXHzueNjg==" - } - } - }, - "@wry/trie": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/@wry/trie/-/trie-0.3.0.tgz", - "integrity": "sha512-Yw1akIogPhAT6XPYsRHlZZIS0tIGmAl9EYXHi2scf7LPKKqdqmow/Hu4kEqP2cJR3EjaU/9L0ZlAjFf3hFxmug==", + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/@wry/equality/-/equality-0.2.0.tgz", + "integrity": "sha512-Y4d+WH6hs+KZJUC8YKLYGarjGekBrhslDbf/R20oV+AakHPINSitHfDRQz3EGcEWc1luXYNUvMhawWtZVWNGvQ==", "requires": { - "tslib": "^2.1.0" - }, - "dependencies": { - "tslib": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.3.0.tgz", - "integrity": "sha512-N82ooyxVNm6h1riLCoyS9e3fuJ3AMG2zIZs2Gd1ATcSFjSA23Q0fzjjZeh0jbJvWVDZ0cJT8yaNNaaXHzueNjg==" - } + "tslib": "^1.9.3" } }, "@xtuc/ieee754": { @@ -4754,8 +4755,7 @@ "buffer-from": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.1.tgz", - "integrity": "sha512-MQcXEUbCKtEo7bhqEs6560Hyd4XaovZlO/k9V3hjVUF/zwW7KBVdSK4gIt/bzwS9MbR5qob+F5jusZsb0YQK2A==", - "dev": true + "integrity": "sha512-MQcXEUbCKtEo7bhqEs6560Hyd4XaovZlO/k9V3hjVUF/zwW7KBVdSK4gIt/bzwS9MbR5qob+F5jusZsb0YQK2A==" }, "buffer-indexof": { "version": "1.1.1", @@ -6315,32 +6315,6 @@ } } }, - "eslint-loader": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/eslint-loader/-/eslint-loader-3.0.4.tgz", - "integrity": "sha512-I496aBd+Hi23Y0Cx+sKvw+VwlJre4ScIRlkrvTO6Scq68X/UXbN6F3lAhN8b0Zv8atAyprkyrA42K5QBJtCyaw==", - "dev": true, - "requires": { - "fs-extra": "^8.1.0", - "loader-fs-cache": "^1.0.3", - "loader-utils": "^1.2.3", - "object-hash": "^2.0.3", - "schema-utils": "^2.6.5" - }, - "dependencies": { - "schema-utils": { - "version": "2.7.0", - "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-2.7.0.tgz", - "integrity": "sha512-0ilKFI6QQF5nxDZLFn2dMjvc4hjg/Wkg7rHd3jK6/A4a1Hl9VFdQWvgB1UMGoU94pad1P/8N7fMcEnLnSiju8A==", - "dev": true, - "requires": { - "@types/json-schema": "^7.0.4", - "ajv": "^6.12.2", - "ajv-keywords": "^3.4.1" - } - } - } - }, "eslint-plugin-header": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/eslint-plugin-header/-/eslint-plugin-header-3.0.0.tgz", @@ -8657,57 +8631,6 @@ } } }, - "loader-fs-cache": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/loader-fs-cache/-/loader-fs-cache-1.0.3.tgz", - "integrity": "sha512-ldcgZpjNJj71n+2Mf6yetz+c9bM4xpKtNds4LbqXzU/PTdeAX0g3ytnU1AJMEcTk2Lex4Smpe3Q/eCTsvUBxbA==", - "dev": true, - "requires": { - "find-cache-dir": "^0.1.1", - "mkdirp": "^0.5.1" - }, - "dependencies": { - "find-cache-dir": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-0.1.1.tgz", - "integrity": "sha1-yN765XyKUqinhPnjHFfHQumToLk=", - "dev": true, - "requires": { - "commondir": "^1.0.1", - "mkdirp": "^0.5.1", - "pkg-dir": "^1.0.0" - } - }, - "find-up": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-1.1.2.tgz", - "integrity": "sha1-ay6YIrGizgpgq2TWEOzK1TyyTQ8=", - "dev": true, - "requires": { - "path-exists": "^2.0.0", - "pinkie-promise": "^2.0.0" - } - }, - "path-exists": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-2.1.0.tgz", - "integrity": "sha1-D+tsZPD8UY2adU3V77YscCJ2H0s=", - "dev": true, - "requires": { - "pinkie-promise": "^2.0.0" - } - }, - "pkg-dir": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-1.0.0.tgz", - "integrity": "sha1-ektQio1bstYp1EcFb/TpyTFM89Q=", - "dev": true, - "requires": { - "find-up": "^1.0.0" - } - } - } - }, "loader-runner": { "version": "2.4.0", "resolved": "https://registry.npmjs.org/loader-runner/-/loader-runner-2.4.0.tgz", @@ -9543,12 +9466,6 @@ } } }, - "object-hash": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/object-hash/-/object-hash-2.0.3.tgz", - "integrity": "sha512-JPKn0GMu+Fa3zt3Bmr66JhokJU5BaNBIh4ZeTlaCBzrBsOeXzwcKKAK1tbLiPKgvwmPXsDvvLHoWh5Bm7ofIYg==", - "dev": true - }, "object-inspect": { "version": "1.8.0", "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.8.0.tgz", @@ -9692,12 +9609,11 @@ } }, "optimism": { - "version": "0.16.1", - "resolved": "https://registry.npmjs.org/optimism/-/optimism-0.16.1.tgz", - "integrity": "sha512-64i+Uw3otrndfq5kaoGNoY7pvOhSsjFEN4bdEFh80MWVk/dbgJfMv7VFDeCT8LxNAlEVhQmdVEbfE7X2nWNIIg==", + "version": "0.13.2", + "resolved": "https://registry.npmjs.org/optimism/-/optimism-0.13.2.tgz", + "integrity": "sha512-kJkpDUEs/Rp8HsAYYlDzyvQHlT6YZa95P+2GGNR8p/VvsIkt6NilAk7oeTvMRKCq7BeclB7+bmdIexog2859GQ==", "requires": { - "@wry/context": "^0.6.0", - "@wry/trie": "^0.3.0" + "@wry/context": "^0.5.2" } }, "optimize-css-assets-webpack-plugin": { @@ -12067,7 +11983,6 @@ "version": "0.5.19", "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.19.tgz", "integrity": "sha512-Wonm7zOCIJzBGQdB+thsPar0kYuCIzYvxZwlBa87yi/Mdjv7Tip2cyVbLj5o0cFPN4EVkuTwb3GDDyUx2DGnGw==", - "dev": true, "requires": { "buffer-from": "^1.0.0", "source-map": "^0.6.0" @@ -12076,8 +11991,7 @@ "source-map": { "version": "0.6.1", "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==" } } }, @@ -12435,9 +12349,9 @@ } }, "symbol-observable": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/symbol-observable/-/symbol-observable-4.0.0.tgz", - "integrity": "sha512-b19dMThMV4HVFynSAM1++gBHAbk2Tc/osgLIBZMKsyqh34jb2e8Os7T6ZW/Bt3pJFdBTd2JwAnAAEQV7rSNvcQ==" + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/symbol-observable/-/symbol-observable-2.0.3.tgz", + "integrity": "sha512-sQV7phh2WCYAn81oAkakC5qjq2Ml0g8ozqz03wOGnx9dDlG1de6yrF+0RAzSJD8fPUow3PTSMf2SAbOGxb93BA==" }, "table": { "version": "5.4.6", @@ -12705,18 +12619,11 @@ } }, "ts-invariant": { - "version": "0.7.5", - "resolved": "https://registry.npmjs.org/ts-invariant/-/ts-invariant-0.7.5.tgz", - "integrity": "sha512-qfVyqTYWEqADMtncLqwpUdMjMSXnsqOeqGtj1LeJNFDjz8oqZ1YxLEp29YCOq65z0LgEiERqQ8ThVjnfibJNpg==", + "version": "0.4.4", + "resolved": "https://registry.npmjs.org/ts-invariant/-/ts-invariant-0.4.4.tgz", + "integrity": "sha512-uEtWkFM/sdZvRNNDL3Ehu4WVpwaulhwQszV8mrtcdeE8nN00BV9mAmQ88RkrBhFgl9gMgvjJLAQcZbnPXI9mlA==", "requires": { - "tslib": "^2.1.0" - }, - "dependencies": { - "tslib": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.3.0.tgz", - "integrity": "sha512-N82ooyxVNm6h1riLCoyS9e3fuJ3AMG2zIZs2Gd1ATcSFjSA23Q0fzjjZeh0jbJvWVDZ0cJT8yaNNaaXHzueNjg==" - } + "tslib": "^1.9.3" } }, "ts-loader": { diff --git a/ui.frontend/package.json b/ui.frontend/package.json index 06b4f137..58dce3dc 100644 --- a/ui.frontend/package.json +++ b/ui.frontend/package.json @@ -14,7 +14,9 @@ "prod": "webpack -p --config ./webpack.prod.js && clientlib --verbose", "start": "webpack-dev-server --open --config ./webpack.dev.js", "prettier:check": "prettier --check '{src,test}/**/*.{js,css}' --config ./.prettierrc", - "prettier:fix": "prettier --write '{src,test}/**/*.{js,css}' --config ./.prettierrc" + "prettier:fix": "prettier --write '{src,test}/**/*.{js,css}' --config ./.prettierrc", + "eslint:check": "eslint 'src/**/*.js'", + "eslint:fix": "eslint --fix 'src/**/*.js'" }, "devDependencies": { "@babel/core": "^7.10.4", @@ -36,7 +38,6 @@ "css-loader": "^3.0.0", "cssnano": "^4.1.10", "eslint": "^6.8.0", - "eslint-loader": "^3.0.3", "eslint-plugin-header": "^3.0.0", "eslint-plugin-jest": "^23.18.0", "eslint-plugin-react": "^7.20.3", @@ -63,6 +64,7 @@ }, "dependencies": { "@adobe/aem-core-cif-react-components": "^1.12.0", + "@apollo/client": "^3.2.4", "i18next": "^19.5.3", "i18next-browser-languagedetector": "^5.0.0", "i18next-xhr-backend": "^3.2.2", diff --git a/ui.frontend/src/main/components/App/App.js b/ui.frontend/src/main/components/App/App.js index 0b94a66b..54d38b1b 100644 --- a/ui.frontend/src/main/components/App/App.js +++ b/ui.frontend/src/main/components/App/App.js @@ -28,9 +28,7 @@ import { AccountDetails, ResetPassword } from '@adobe/aem-core-cif-react-components'; -import { - ProductRecsGallery -} from '@adobe/aem-core-cif-ext-product-recs-react-components'; +import { ProductRecsGallery } from '@adobe/aem-core-cif-ext-product-recs-react-components'; import i18n from './i18n'; import partialConfig from './config'; diff --git a/ui.frontend/webpack.common.js b/ui.frontend/webpack.common.js index c7535621..e2c5efa4 100644 --- a/ui.frontend/webpack.common.js +++ b/ui.frontend/webpack.common.js @@ -39,12 +39,6 @@ module.exports = { test: /\.tsx?$/, exclude: /node_modules/, use: [ - { - options: { - eslintPath: require.resolve('eslint') - }, - loader: require.resolve('eslint-loader') - }, { loader: 'ts-loader' }, @@ -59,7 +53,7 @@ module.exports = { { test: /\.js$/, include: /src/, - loader: ['babel-loader', 'eslint-loader'] + loader: ['babel-loader'] }, { test: /\.scss$/, @@ -110,6 +104,10 @@ module.exports = { { from: path.resolve(__dirname, 'node_modules/@adobe/aem-core-cif-react-components/i18n'), to: './clientlib-site/i18n' + }, + { + from: path.resolve(__dirname, 'node_modules/@adobe/aem-core-cif-ext-product-recs-react-components/i18n'), + to: './clientlib-site/i18n' } ]) ], diff --git a/ui.frontend/webpack.dev.js b/ui.frontend/webpack.dev.js index 077fc6ef..4b36ee8e 100644 --- a/ui.frontend/webpack.dev.js +++ b/ui.frontend/webpack.dev.js @@ -36,7 +36,8 @@ module.exports = merge(common, { alias: { react: path.resolve('./node_modules/react'), 'react-dom': path.resolve('./node_modules/react-dom'), - 'react-i18next': path.resolve('./node_modules/react-i18next') + 'react-i18next': path.resolve('./node_modules/react-i18next'), + '@apollo/client': path.resolve('./node_modules/@apollo/client') } }, devServer: { From 95c4b981cfd169f4130fa59ecc57028b04eeb80e Mon Sep 17 00:00:00 2001 From: "Mark J. Becker" Date: Mon, 28 Jun 2021 13:51:15 +0200 Subject: [PATCH 03/10] CIF-2144 - Add PortalPlacer --- ui.frontend/src/main/components/App/App.js | 15 ++++++++++++--- 1 file changed, 12 insertions(+), 3 deletions(-) diff --git a/ui.frontend/src/main/components/App/App.js b/ui.frontend/src/main/components/App/App.js index 54d38b1b..b9d9adec 100644 --- a/ui.frontend/src/main/components/App/App.js +++ b/ui.frontend/src/main/components/App/App.js @@ -26,9 +26,13 @@ import { AddressBook, BundleProductOptions, AccountDetails, - ResetPassword + ResetPassword, + PortalPlacer } from '@adobe/aem-core-cif-react-components'; -import { ProductRecsGallery } from '@adobe/aem-core-cif-ext-product-recs-react-components'; +import { + ProductRecsGallery, + StorefrontInstanceContextProvider +} from '@adobe/aem-core-cif-ext-product-recs-react-components'; import i18n from './i18n'; import partialConfig from './config'; @@ -53,7 +57,12 @@ const App = () => { - + + + From 8e221e4f666c5d8dad7c9293aa61c163734aea19 Mon Sep 17 00:00:00 2001 From: Laurentiu Magureanu Date: Wed, 30 Jun 2021 14:11:13 +0300 Subject: [PATCH 04/10] CIF-2143: Add product recs to Venia --- pom.xml | 13 ++++++++++++- ui.apps/pom.xml | 4 ++++ .../commerce/productrecommendations/.content.xml | 7 +++++++ 3 files changed, 23 insertions(+), 1 deletion(-) create mode 100644 ui.apps/src/main/content/jcr_root/apps/venia/components/commerce/productrecommendations/.content.xml diff --git a/pom.xml b/pom.xml index 7577d4c4..469b9154 100644 --- a/pom.xml +++ b/pom.xml @@ -50,7 +50,7 @@ admin admin 2.15.0 - 1.12.0 + 1.12.1-SNAPSHOT 1.7.1 9.0.0-magento242ee 5.1.2 @@ -662,6 +662,12 @@ Bundle-DocURL: zip ${core.cif.components.version} + + com.adobe.commerce.cif + core-cif-components-extensions-product-recs-content + zip + ${core.cif.components.version} + com.adobe.commerce.cif core-cif-components-config @@ -673,6 +679,11 @@ Bundle-DocURL: core-cif-components-core ${core.cif.components.version} + + com.adobe.commerce.cif + core-cif-components-extensions-product-recs-bundle + ${core.cif.components.version} + com.adobe.commerce.cif graphql-client diff --git a/ui.apps/pom.xml b/ui.apps/pom.xml index 7f69666a..91374e00 100644 --- a/ui.apps/pom.xml +++ b/ui.apps/pom.xml @@ -68,6 +68,10 @@ com.adobe.commerce.cif core-cif-components-config + + com.adobe.commerce.cif + core-cif-components-extensions-product-recs-content + diff --git a/ui.apps/src/main/content/jcr_root/apps/venia/components/commerce/productrecommendations/.content.xml b/ui.apps/src/main/content/jcr_root/apps/venia/components/commerce/productrecommendations/.content.xml new file mode 100644 index 00000000..ab257491 --- /dev/null +++ b/ui.apps/src/main/content/jcr_root/apps/venia/components/commerce/productrecommendations/.content.xml @@ -0,0 +1,7 @@ + + From a5f84e8ba8ed4f8a9bd6f11f968f5c70f28ba9dd Mon Sep 17 00:00:00 2001 From: Laurentiu Magureanu Date: Wed, 30 Jun 2021 14:34:21 +0300 Subject: [PATCH 05/10] CIF-2143: Fix dependencies --- core/pom.xml | 4 ++++ ui.apps/pom.xml | 5 +++++ 2 files changed, 9 insertions(+) diff --git a/core/pom.xml b/core/pom.xml index 31aeedaf..37d3e258 100644 --- a/core/pom.xml +++ b/core/pom.xml @@ -252,6 +252,10 @@ Import-Package: javax.annotation;version=0.0.0,* com.adobe.commerce.cif core-cif-components-core + + com.adobe.commerce.cif + core-cif-components-extensions-product-recs-bundle + com.adobe.commerce.cif graphql-client diff --git a/ui.apps/pom.xml b/ui.apps/pom.xml index 91374e00..3dbc30f3 100644 --- a/ui.apps/pom.xml +++ b/ui.apps/pom.xml @@ -207,6 +207,11 @@ core-cif-components-apps zip + + com.adobe.commerce.cif + core-cif-components-extensions-product-recs-content + zip + com.adobe.commerce.cif core-cif-components-config From 12ae1f451d3d15862f28def5fe5680da0c8fbffe Mon Sep 17 00:00:00 2001 From: "Mark J. Becker" Date: Wed, 30 Jun 2021 15:00:33 +0200 Subject: [PATCH 06/10] CIF-2144 - Add todo --- ui.frontend/src/main/components/App/App.js | 2 ++ 1 file changed, 2 insertions(+) diff --git a/ui.frontend/src/main/components/App/App.js b/ui.frontend/src/main/components/App/App.js index b9d9adec..abd20361 100644 --- a/ui.frontend/src/main/components/App/App.js +++ b/ui.frontend/src/main/components/App/App.js @@ -29,6 +29,8 @@ import { ResetPassword, PortalPlacer } from '@adobe/aem-core-cif-react-components'; + +// TODO: Add dependency to package.json after component release import { ProductRecsGallery, StorefrontInstanceContextProvider From a95d9c024d78c043907db4be8177dfe6ecfe530a Mon Sep 17 00:00:00 2001 From: Laurentiu Magureanu Date: Thu, 1 Jul 2021 12:40:21 +0300 Subject: [PATCH 07/10] CIF-2143: Fix dependencies in all package --- all/pom.xml | 18 +++++++++++++++++- 1 file changed, 17 insertions(+), 1 deletion(-) diff --git a/all/pom.xml b/all/pom.xml index d82f3e6d..3c4b6b42 100644 --- a/all/pom.xml +++ b/all/pom.xml @@ -87,6 +87,12 @@ zip /apps/venia-vendor-packages/application/install + + com.adobe.commerce.cif + core-cif-components-extensions-product-recs-content + zip + /apps/venia-vendor-packages/application/install + com.adobe.commerce.cif core-cif-components-config @@ -98,6 +104,11 @@ core-cif-components-core /apps/venia-vendor-packages/application/install + + com.adobe.commerce.cif + core-cif-components-extensions-product-recs-bundle + /apps/venia-vendor-packages/application/install + com.adobe.commerce.cif magento-graphql @@ -174,7 +185,7 @@ /apps/venia-vendor-packages/application/install - + @@ -277,6 +288,11 @@ core-cif-components-apps zip + + com.adobe.commerce.cif + core-cif-components-extensions-product-recs-content + zip + com.adobe.commerce.cif core-cif-components-config From e43b9dfe107c57eac1d2d229f048e582b08a8f25 Mon Sep 17 00:00:00 2001 From: "Mark J. Becker" Date: Fri, 2 Jul 2021 16:27:27 +0200 Subject: [PATCH 08/10] CIF-2144 - Update i18n config --- ui.frontend/src/main/components/App/App.js | 5 +---- ui.frontend/src/main/components/App/i18n.js | 2 +- 2 files changed, 2 insertions(+), 5 deletions(-) diff --git a/ui.frontend/src/main/components/App/App.js b/ui.frontend/src/main/components/App/App.js index abd20361..47ea965f 100644 --- a/ui.frontend/src/main/components/App/App.js +++ b/ui.frontend/src/main/components/App/App.js @@ -60,10 +60,7 @@ const App = () => { - + diff --git a/ui.frontend/src/main/components/App/i18n.js b/ui.frontend/src/main/components/App/i18n.js index d6f75fec..e001419a 100644 --- a/ui.frontend/src/main/components/App/i18n.js +++ b/ui.frontend/src/main/components/App/i18n.js @@ -28,7 +28,7 @@ i18n.use(Backend) load: 'currentOnly', defaultNS: 'common', - ns: [], + ns: ['account', 'cart', 'checkout', 'common', 'product', 'productrecs'], interpolation: { escapeValue: false, From d8e5893b3869bae2b7b236c2b9509bea49a61f8f Mon Sep 17 00:00:00 2001 From: "Mark J. Becker" Date: Thu, 8 Jul 2021 16:21:00 +0200 Subject: [PATCH 09/10] CIF-2144 - Add feedback --- ui.frontend/pom.xml | 4 ++-- ui.frontend/src/main/components/App/App.js | 2 +- ui.frontend/src/main/site/main.scss | 2 +- ui.frontend/webpack.common.js | 2 +- 4 files changed, 5 insertions(+), 5 deletions(-) diff --git a/ui.frontend/pom.xml b/ui.frontend/pom.xml index 20e94856..1319b7fa 100644 --- a/ui.frontend/pom.xml +++ b/ui.frontend/pom.xml @@ -130,7 +130,7 @@ link @adobe/aem-core-cif-react-components - @adobe/aem-core-cif-ext-product-recs-react-components + @adobe/cif-product-recs-extension @@ -177,7 +177,7 @@ install -S @adobe/aem-core-cif-react-components@${core.cif.components.version} - @adobe/aem-core-cif-ext-product-recs-react-components@${core.cif.components.version} + @adobe/cif-product-recs-extension@${core.cif.components.version} diff --git a/ui.frontend/src/main/components/App/App.js b/ui.frontend/src/main/components/App/App.js index 47ea965f..adae42ce 100644 --- a/ui.frontend/src/main/components/App/App.js +++ b/ui.frontend/src/main/components/App/App.js @@ -34,7 +34,7 @@ import { import { ProductRecsGallery, StorefrontInstanceContextProvider -} from '@adobe/aem-core-cif-ext-product-recs-react-components'; +} from '@adobe/cif-product-recs-extension'; import i18n from './i18n'; import partialConfig from './config'; diff --git a/ui.frontend/src/main/site/main.scss b/ui.frontend/src/main/site/main.scss index b31da25d..29e5fa57 100644 --- a/ui.frontend/src/main/site/main.scss +++ b/ui.frontend/src/main/site/main.scss @@ -3,7 +3,7 @@ @import 'variables'; @import 'base'; @import url('~@adobe/aem-core-cif-react-components/dist/main.css'); -@import url('~@adobe/aem-core-cif-ext-product-recs-react-components/dist/main.css'); +@import url('~@adobe/cif-product-recs-extension/dist/main.css'); @import '../styles/**/*.scss'; @import './styles/*.scss'; diff --git a/ui.frontend/webpack.common.js b/ui.frontend/webpack.common.js index e2c5efa4..b348d800 100644 --- a/ui.frontend/webpack.common.js +++ b/ui.frontend/webpack.common.js @@ -106,7 +106,7 @@ module.exports = { to: './clientlib-site/i18n' }, { - from: path.resolve(__dirname, 'node_modules/@adobe/aem-core-cif-ext-product-recs-react-components/i18n'), + from: path.resolve(__dirname, 'node_modules/@adobe/cif-product-recs-extension/i18n'), to: './clientlib-site/i18n' } ]) From b0598b0c435d2ebf724bcb7a09c43aaa4077bd84 Mon Sep 17 00:00:00 2001 From: "Mark J. Becker" Date: Thu, 15 Jul 2021 16:32:38 +0200 Subject: [PATCH 10/10] CIF-2111 - Add E2E test for product recommendation component --- .../test-module/specs/venia/component-dialogs.js | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/ui.tests/test-module/specs/venia/component-dialogs.js b/ui.tests/test-module/specs/venia/component-dialogs.js index 84cbed46..ee58ae73 100644 --- a/ui.tests/test-module/specs/venia/component-dialogs.js +++ b/ui.tests/test-module/specs/venia/component-dialogs.js @@ -152,4 +152,20 @@ describe('Component Dialogs', function () { $('label=Base product - Leave empty to use the current product of the generic product page.') ).toBeDisplayed(); }); + + it('opens the product recommendations dialog', () => { + addComponentToPage('Product Recommendations'); + openComponentDialog( + 'productrecommendatio', + 'aem:sites:components:dialogs:cif-core-components:productrecommendations:v1' + ); + + expect($('coral-checkbox-label=Use preconfigured recommendation')).toBeDisplayed(); + + // Verify that corresponding React component is rendered on the page. If no Commerce endpoint is provided or the + // endpoint does not have the product recommendations extension installed, the component will not render any + // products. So the test just checks for the existence of the div element rendered by the React component. + browser.url(`${config.aem.author.base_url}${testing_page}.html`); + expect($('[data-is-product-recs] .cmp-ProductRecsGallery__ProductRecsGallery__root')).toExist(); + }); });