diff --git a/.firebaserc b/.firebaserc
index 3e8ba61..5ca6901 100644
--- a/.firebaserc
+++ b/.firebaserc
@@ -1,20 +1,20 @@
{
"projects": {
"dev": "hotwax-digital-commerce",
- "default": "digital-commerce-71eb8",
+ "default": "hotwax-digital-commerce",
"production": "digital-commerce-71eb8"
},
"targets": {
"digital-commerce-71eb8": {
"hosting": {
- "hotwax-launchpad": [
+ "prod": [
"hotwax-launchpad"
]
}
},
"hotwax-digital-commerce": {
"hosting": {
- "hotwax-launchpad-dev": [
+ "dev": [
"hotwax-launchpad-dev"
]
}
diff --git a/.github/workflows/firebase-hosting-merge.yml b/.github/workflows/firebase-hosting-merge.yml
index ce53366..6cf9fc9 100644
--- a/.github/workflows/firebase-hosting-merge.yml
+++ b/.github/workflows/firebase-hosting-merge.yml
@@ -7,23 +7,10 @@ name: Deploy to Firebase Hosting on merge
branches:
- main
jobs:
- build_and_deploy:
- runs-on: ubuntu-latest
- steps:
- - uses: actions/checkout@v2
- - name: Install Dependencies
- run: npm install
- - name: Generate .env file
- run: cp .env.example .env
- - name: Build
- run: npm run build
- - name: Install Firebase
- run: npm install -g firebase-tools
- - name: Set Firebase project
- run: firebase use default --token "$HOTWAX_PUBLIC_SECRET"
- env:
- HOTWAX_PUBLIC_SECRET: ${{ secrets.HOTWAX_PUBLIC_SECRET }}
- - name: Deploy
- run: firebase deploy --token "$HOTWAX_PUBLIC_SECRET" -m "Deploying via GitHub actions" --only hosting:hotwax-launchpad
- env:
- HOTWAX_PUBLIC_SECRET: ${{ secrets.HOTWAX_PUBLIC_SECRET }}
+ call-workflow-in-another-repo:
+ uses: hotwax/dxp-components/.github/workflows/common-firebase-hosting-merge.yml@main
+ with:
+ config-path: .github/labeler.yml
+ secrets:
+ envPAT: ${{ secrets.envPAT }}
+ HOTWAX_PUBLIC_SECRET: ${{ secrets.HOTWAX_PUBLIC_SECRET }}
\ No newline at end of file
diff --git a/firebase.json b/firebase.json
index e82c471..99ff46e 100644
--- a/firebase.json
+++ b/firebase.json
@@ -1,7 +1,7 @@
{
"hosting": [
{
- "target": "hotwax-launchpad",
+ "target": "prod",
"public": "dist",
"ignore": [
"firebase.json",
@@ -15,7 +15,7 @@
},
{
- "target": "hotwax-launchpad-dev",
+ "target": "dev",
"public": "dist",
"ignore": [
"firebase.json",
diff --git a/package-lock.json b/package-lock.json
index 1dcbc56..703cd46 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -1,13 +1,14 @@
{
"name": "Launchpad",
- "version": "0.0.1",
+ "version": "2.1.0",
"lockfileVersion": 2,
"requires": true,
"packages": {
"": {
"name": "Launchpad",
- "version": "0.0.1",
+ "version": "2.1.0",
"dependencies": {
+ "@hotwax/dxp-components": "^1.11.0",
"@hotwax/oms-api": "^1.9.0",
"@ionic/vue": "^6.0.2",
"@ionic/vue-router": "^6.0.2",
@@ -2578,6 +2579,135 @@
"@hapi/hoek": "^9.0.0"
}
},
+ "node_modules/@hotwax/dxp-components": {
+ "version": "1.11.0",
+ "resolved": "https://registry.npmjs.org/@hotwax/dxp-components/-/dxp-components-1.11.0.tgz",
+ "integrity": "sha512-z9UNzi1veT8Aj8Y1WWAGBGOR+I0s6A58qrsFj+L3LkpxTkq6zGN/JS80tTv29obEeeOfONm6XyLHvNOM6TFKyA==",
+ "dependencies": {
+ "@hotwax/oms-api": "^1.8.1",
+ "@ionic/core": "^6.7.5",
+ "@ionic/vue": "^6.7.5",
+ "@types/vue-barcode-reader": "^0.0.0",
+ "firebase": "^10.3.1",
+ "luxon": "^3.3.0",
+ "pinia": "2.0.36",
+ "pinia-plugin-persistedstate": "^3.1.0",
+ "register-service-worker": "^1.7.2",
+ "vue": "^3.3.4",
+ "vue-barcode-reader": "^1.0.3",
+ "vue-i18n": "^9.2.2"
+ }
+ },
+ "node_modules/@hotwax/dxp-components/node_modules/@intlify/core-base": {
+ "version": "9.7.0",
+ "resolved": "https://registry.npmjs.org/@intlify/core-base/-/core-base-9.7.0.tgz",
+ "integrity": "sha512-1tBnfnCI23jXqGW15cagCjn2GgD487VST1dMG8P5LRzrSfx+kUzqFyTrjMNIwgq1tVaF4HnDpFMUuyrzTLKphw==",
+ "dependencies": {
+ "@intlify/message-compiler": "9.7.0",
+ "@intlify/shared": "9.7.0"
+ },
+ "engines": {
+ "node": ">= 16"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/kazupon"
+ }
+ },
+ "node_modules/@hotwax/dxp-components/node_modules/@intlify/message-compiler": {
+ "version": "9.7.0",
+ "resolved": "https://registry.npmjs.org/@intlify/message-compiler/-/message-compiler-9.7.0.tgz",
+ "integrity": "sha512-/YdZCio2L2tCM5bZ2eMHbSEIQNPh1QqvZIOLI/yCVKXLscis7O0SsR2nmuU/DfCJ3iSeI8juw82C2wLvfsAeww==",
+ "dependencies": {
+ "@intlify/shared": "9.7.0",
+ "source-map-js": "^1.0.2"
+ },
+ "engines": {
+ "node": ">= 16"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/kazupon"
+ }
+ },
+ "node_modules/@hotwax/dxp-components/node_modules/@intlify/shared": {
+ "version": "9.7.0",
+ "resolved": "https://registry.npmjs.org/@intlify/shared/-/shared-9.7.0.tgz",
+ "integrity": "sha512-PUkEuk//YKu4CHS5ah3mNa3XL/+TZj6rAY/6yYN+GCNFd2u+uWUkeuwE4Q6t8dydRWlErOePHHS0KyNoof/oBw==",
+ "engines": {
+ "node": ">= 16"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/kazupon"
+ }
+ },
+ "node_modules/@hotwax/dxp-components/node_modules/pinia": {
+ "version": "2.0.36",
+ "resolved": "https://registry.npmjs.org/pinia/-/pinia-2.0.36.tgz",
+ "integrity": "sha512-4UKApwjlmJH+VuHKgA+zQMddcCb3ezYnyewQ9NVrsDqZ/j9dMv5+rh+1r48whKNdpFkZAWVxhBp5ewYaYX9JcQ==",
+ "dependencies": {
+ "@vue/devtools-api": "^6.5.0",
+ "vue-demi": "*"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/posva"
+ },
+ "peerDependencies": {
+ "@vue/composition-api": "^1.4.0",
+ "typescript": ">=4.4.4",
+ "vue": "^2.6.14 || ^3.2.0"
+ },
+ "peerDependenciesMeta": {
+ "@vue/composition-api": {
+ "optional": true
+ },
+ "typescript": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/@hotwax/dxp-components/node_modules/pinia/node_modules/vue-demi": {
+ "version": "0.14.6",
+ "resolved": "https://registry.npmjs.org/vue-demi/-/vue-demi-0.14.6.tgz",
+ "integrity": "sha512-8QA7wrYSHKaYgUxDA5ZC24w+eHm3sYCbp0EzcDwKqN3p6HqtTCGR/GVsPyZW92unff4UlcSh++lmqDWN3ZIq4w==",
+ "hasInstallScript": true,
+ "bin": {
+ "vue-demi-fix": "bin/vue-demi-fix.js",
+ "vue-demi-switch": "bin/vue-demi-switch.js"
+ },
+ "engines": {
+ "node": ">=12"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/antfu"
+ },
+ "peerDependencies": {
+ "@vue/composition-api": "^1.0.0-rc.1",
+ "vue": "^3.0.0-0 || ^2.6.0"
+ },
+ "peerDependenciesMeta": {
+ "@vue/composition-api": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/@hotwax/dxp-components/node_modules/vue-i18n": {
+ "version": "9.7.0",
+ "resolved": "https://registry.npmjs.org/vue-i18n/-/vue-i18n-9.7.0.tgz",
+ "integrity": "sha512-8Z8kSz9U2juzuAf+6mjW1HTd5pIlYuFJZkC+HvYOglFdpzwc2rTUGjxKwN8xGdtGur1MFnyJ44TSr+TksJtY8A==",
+ "dependencies": {
+ "@intlify/core-base": "9.7.0",
+ "@intlify/shared": "9.7.0",
+ "@vue/devtools-api": "^6.5.0"
+ },
+ "engines": {
+ "node": ">= 16"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/kazupon"
+ },
+ "peerDependencies": {
+ "vue": "^3.0.0"
+ }
+ },
"node_modules/@hotwax/oms-api": {
"version": "1.9.0",
"resolved": "https://registry.npmjs.org/@hotwax/oms-api/-/oms-api-1.9.0.tgz",
@@ -3325,6 +3455,33 @@
"@types/node": "*"
}
},
+ "node_modules/@types/vue-barcode-reader": {
+ "version": "0.0.0",
+ "resolved": "https://registry.npmjs.org/@types/vue-barcode-reader/-/vue-barcode-reader-0.0.0.tgz",
+ "integrity": "sha512-yngQhd35qGjCxMXWIqsAtF7qmxe0qUYRVd9qW5I/CcRPWDdBpqVkHnQSh6ro5BIBl3NQ3ppky7kMKS4pr+XwCQ==",
+ "dependencies": {
+ "vue": "^2.0.0"
+ }
+ },
+ "node_modules/@types/vue-barcode-reader/node_modules/@vue/compiler-sfc": {
+ "version": "2.7.15",
+ "resolved": "https://registry.npmjs.org/@vue/compiler-sfc/-/compiler-sfc-2.7.15.tgz",
+ "integrity": "sha512-FCvIEevPmgCgqFBH7wD+3B97y7u7oj/Wr69zADBf403Tui377bThTjBvekaZvlRr4IwUAu3M6hYZeULZFJbdYg==",
+ "dependencies": {
+ "@babel/parser": "^7.18.4",
+ "postcss": "^8.4.14",
+ "source-map": "^0.6.1"
+ }
+ },
+ "node_modules/@types/vue-barcode-reader/node_modules/vue": {
+ "version": "2.7.15",
+ "resolved": "https://registry.npmjs.org/vue/-/vue-2.7.15.tgz",
+ "integrity": "sha512-a29fsXd2G0KMRqIFTpRgpSbWaNBK3lpCTOLuGLEDnlHWdjB8fwl6zyYZ8xCrqkJdatwZb4mGHiEfJjnw0Q6AwQ==",
+ "dependencies": {
+ "@vue/compiler-sfc": "2.7.15",
+ "csstype": "^3.1.0"
+ }
+ },
"node_modules/@types/webpack-env": {
"version": "1.18.1",
"resolved": "https://registry.npmjs.org/@types/webpack-env/-/webpack-env-1.18.1.tgz",
@@ -4465,6 +4622,26 @@
"integrity": "sha512-NuHqBY1PB/D8xU6s/thBgOAiAP7HOYDQ32+BFZILJ8ivkUkAHQnWfn6WhL79Owj1qmUnoN/YPhktdIoucipkAQ==",
"dev": true
},
+ "node_modules/@zxing/library": {
+ "version": "0.19.3",
+ "resolved": "https://registry.npmjs.org/@zxing/library/-/library-0.19.3.tgz",
+ "integrity": "sha512-RUv5svewpDoD0ymXleOP8yVTO5BLkR0zn5coGC/Vs1671u0OBJ4xdtR8WVWf08OcvrieEMHdSfQY3ZKtqII/hg==",
+ "dependencies": {
+ "ts-custom-error": "^3.2.1"
+ },
+ "engines": {
+ "node": ">= 10.4.0"
+ },
+ "optionalDependencies": {
+ "@zxing/text-encoding": "~0.9.0"
+ }
+ },
+ "node_modules/@zxing/text-encoding": {
+ "version": "0.9.0",
+ "resolved": "https://registry.npmjs.org/@zxing/text-encoding/-/text-encoding-0.9.0.tgz",
+ "integrity": "sha512-U/4aVJ2mxI0aDNI8Uq0wEhMgY+u4CNtEb0om3+y3+niDAsoTCOB33UF0sxpzqzdqXLqmvc+vZyAt4O8pPdfkwA==",
+ "optional": true
+ },
"node_modules/accepts": {
"version": "1.3.8",
"resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.8.tgz",
@@ -11022,6 +11199,11 @@
"node": ">=4"
}
},
+ "node_modules/register-service-worker": {
+ "version": "1.7.2",
+ "resolved": "https://registry.npmjs.org/register-service-worker/-/register-service-worker-1.7.2.tgz",
+ "integrity": "sha512-CiD3ZSanZqcMPRhtfct5K9f7i3OLCcBBWsJjLh1gW9RO/nS94sVzY59iS+fgYBOBqaBpf4EzfqUF3j9IG+xo8A=="
+ },
"node_modules/regjsparser": {
"version": "0.9.1",
"resolved": "https://registry.npmjs.org/regjsparser/-/regjsparser-0.9.1.tgz",
@@ -12105,6 +12287,14 @@
"resolved": "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz",
"integrity": "sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw=="
},
+ "node_modules/ts-custom-error": {
+ "version": "3.3.1",
+ "resolved": "https://registry.npmjs.org/ts-custom-error/-/ts-custom-error-3.3.1.tgz",
+ "integrity": "sha512-5OX1tzOjxWEgsr/YEUWSuPrQ00deKLh6D7OTWcvNHm12/7QPyRh8SYpyWvA4IZv8H/+GQWQEh/kwo95Q9OVW1A==",
+ "engines": {
+ "node": ">=14.0.0"
+ }
+ },
"node_modules/ts-loader": {
"version": "9.4.4",
"resolved": "https://registry.npmjs.org/ts-loader/-/ts-loader-9.4.4.tgz",
@@ -12431,6 +12621,14 @@
"@vue/shared": "3.3.4"
}
},
+ "node_modules/vue-barcode-reader": {
+ "version": "1.0.3",
+ "resolved": "https://registry.npmjs.org/vue-barcode-reader/-/vue-barcode-reader-1.0.3.tgz",
+ "integrity": "sha512-z4mv7+ai/8vECppBTb00tHnyFMMx6W1rAaQe+v214ihoaWK9iGrn8ZZsmgSxf3lwnrtGaibLdkonTtMrGsO+dA==",
+ "dependencies": {
+ "@zxing/library": "^0.19.1"
+ }
+ },
"node_modules/vue-cli-plugin-i18n": {
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/vue-cli-plugin-i18n/-/vue-cli-plugin-i18n-1.0.1.tgz",
@@ -15583,6 +15781,77 @@
"@hapi/hoek": "^9.0.0"
}
},
+ "@hotwax/dxp-components": {
+ "version": "1.11.0",
+ "resolved": "https://registry.npmjs.org/@hotwax/dxp-components/-/dxp-components-1.11.0.tgz",
+ "integrity": "sha512-z9UNzi1veT8Aj8Y1WWAGBGOR+I0s6A58qrsFj+L3LkpxTkq6zGN/JS80tTv29obEeeOfONm6XyLHvNOM6TFKyA==",
+ "requires": {
+ "@hotwax/oms-api": "^1.8.1",
+ "@ionic/core": "^6.7.5",
+ "@ionic/vue": "^6.7.5",
+ "@types/vue-barcode-reader": "^0.0.0",
+ "firebase": "^10.3.1",
+ "luxon": "^3.3.0",
+ "pinia": "2.0.36",
+ "pinia-plugin-persistedstate": "^3.1.0",
+ "register-service-worker": "^1.7.2",
+ "vue": "^3.3.4",
+ "vue-barcode-reader": "^1.0.3",
+ "vue-i18n": "^9.2.2"
+ },
+ "dependencies": {
+ "@intlify/core-base": {
+ "version": "9.7.0",
+ "resolved": "https://registry.npmjs.org/@intlify/core-base/-/core-base-9.7.0.tgz",
+ "integrity": "sha512-1tBnfnCI23jXqGW15cagCjn2GgD487VST1dMG8P5LRzrSfx+kUzqFyTrjMNIwgq1tVaF4HnDpFMUuyrzTLKphw==",
+ "requires": {
+ "@intlify/message-compiler": "9.7.0",
+ "@intlify/shared": "9.7.0"
+ }
+ },
+ "@intlify/message-compiler": {
+ "version": "9.7.0",
+ "resolved": "https://registry.npmjs.org/@intlify/message-compiler/-/message-compiler-9.7.0.tgz",
+ "integrity": "sha512-/YdZCio2L2tCM5bZ2eMHbSEIQNPh1QqvZIOLI/yCVKXLscis7O0SsR2nmuU/DfCJ3iSeI8juw82C2wLvfsAeww==",
+ "requires": {
+ "@intlify/shared": "9.7.0",
+ "source-map-js": "^1.0.2"
+ }
+ },
+ "@intlify/shared": {
+ "version": "9.7.0",
+ "resolved": "https://registry.npmjs.org/@intlify/shared/-/shared-9.7.0.tgz",
+ "integrity": "sha512-PUkEuk//YKu4CHS5ah3mNa3XL/+TZj6rAY/6yYN+GCNFd2u+uWUkeuwE4Q6t8dydRWlErOePHHS0KyNoof/oBw=="
+ },
+ "pinia": {
+ "version": "2.0.36",
+ "resolved": "https://registry.npmjs.org/pinia/-/pinia-2.0.36.tgz",
+ "integrity": "sha512-4UKApwjlmJH+VuHKgA+zQMddcCb3ezYnyewQ9NVrsDqZ/j9dMv5+rh+1r48whKNdpFkZAWVxhBp5ewYaYX9JcQ==",
+ "requires": {
+ "@vue/devtools-api": "^6.5.0",
+ "vue-demi": "*"
+ },
+ "dependencies": {
+ "vue-demi": {
+ "version": "0.14.6",
+ "resolved": "https://registry.npmjs.org/vue-demi/-/vue-demi-0.14.6.tgz",
+ "integrity": "sha512-8QA7wrYSHKaYgUxDA5ZC24w+eHm3sYCbp0EzcDwKqN3p6HqtTCGR/GVsPyZW92unff4UlcSh++lmqDWN3ZIq4w==",
+ "requires": {}
+ }
+ }
+ },
+ "vue-i18n": {
+ "version": "9.7.0",
+ "resolved": "https://registry.npmjs.org/vue-i18n/-/vue-i18n-9.7.0.tgz",
+ "integrity": "sha512-8Z8kSz9U2juzuAf+6mjW1HTd5pIlYuFJZkC+HvYOglFdpzwc2rTUGjxKwN8xGdtGur1MFnyJ44TSr+TksJtY8A==",
+ "requires": {
+ "@intlify/core-base": "9.7.0",
+ "@intlify/shared": "9.7.0",
+ "@vue/devtools-api": "^6.5.0"
+ }
+ }
+ }
+ },
"@hotwax/oms-api": {
"version": "1.9.0",
"resolved": "https://registry.npmjs.org/@hotwax/oms-api/-/oms-api-1.9.0.tgz",
@@ -16236,6 +16505,35 @@
"@types/node": "*"
}
},
+ "@types/vue-barcode-reader": {
+ "version": "0.0.0",
+ "resolved": "https://registry.npmjs.org/@types/vue-barcode-reader/-/vue-barcode-reader-0.0.0.tgz",
+ "integrity": "sha512-yngQhd35qGjCxMXWIqsAtF7qmxe0qUYRVd9qW5I/CcRPWDdBpqVkHnQSh6ro5BIBl3NQ3ppky7kMKS4pr+XwCQ==",
+ "requires": {
+ "vue": "^2.0.0"
+ },
+ "dependencies": {
+ "@vue/compiler-sfc": {
+ "version": "2.7.15",
+ "resolved": "https://registry.npmjs.org/@vue/compiler-sfc/-/compiler-sfc-2.7.15.tgz",
+ "integrity": "sha512-FCvIEevPmgCgqFBH7wD+3B97y7u7oj/Wr69zADBf403Tui377bThTjBvekaZvlRr4IwUAu3M6hYZeULZFJbdYg==",
+ "requires": {
+ "@babel/parser": "^7.18.4",
+ "postcss": "^8.4.14",
+ "source-map": "^0.6.1"
+ }
+ },
+ "vue": {
+ "version": "2.7.15",
+ "resolved": "https://registry.npmjs.org/vue/-/vue-2.7.15.tgz",
+ "integrity": "sha512-a29fsXd2G0KMRqIFTpRgpSbWaNBK3lpCTOLuGLEDnlHWdjB8fwl6zyYZ8xCrqkJdatwZb4mGHiEfJjnw0Q6AwQ==",
+ "requires": {
+ "@vue/compiler-sfc": "2.7.15",
+ "csstype": "^3.1.0"
+ }
+ }
+ }
+ },
"@types/webpack-env": {
"version": "1.18.1",
"resolved": "https://registry.npmjs.org/@types/webpack-env/-/webpack-env-1.18.1.tgz",
@@ -17114,6 +17412,21 @@
"integrity": "sha512-NuHqBY1PB/D8xU6s/thBgOAiAP7HOYDQ32+BFZILJ8ivkUkAHQnWfn6WhL79Owj1qmUnoN/YPhktdIoucipkAQ==",
"dev": true
},
+ "@zxing/library": {
+ "version": "0.19.3",
+ "resolved": "https://registry.npmjs.org/@zxing/library/-/library-0.19.3.tgz",
+ "integrity": "sha512-RUv5svewpDoD0ymXleOP8yVTO5BLkR0zn5coGC/Vs1671u0OBJ4xdtR8WVWf08OcvrieEMHdSfQY3ZKtqII/hg==",
+ "requires": {
+ "@zxing/text-encoding": "~0.9.0",
+ "ts-custom-error": "^3.2.1"
+ }
+ },
+ "@zxing/text-encoding": {
+ "version": "0.9.0",
+ "resolved": "https://registry.npmjs.org/@zxing/text-encoding/-/text-encoding-0.9.0.tgz",
+ "integrity": "sha512-U/4aVJ2mxI0aDNI8Uq0wEhMgY+u4CNtEb0om3+y3+niDAsoTCOB33UF0sxpzqzdqXLqmvc+vZyAt4O8pPdfkwA==",
+ "optional": true
+ },
"accepts": {
"version": "1.3.8",
"resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.8.tgz",
@@ -21891,6 +22204,11 @@
"unicode-match-property-value-ecmascript": "^2.1.0"
}
},
+ "register-service-worker": {
+ "version": "1.7.2",
+ "resolved": "https://registry.npmjs.org/register-service-worker/-/register-service-worker-1.7.2.tgz",
+ "integrity": "sha512-CiD3ZSanZqcMPRhtfct5K9f7i3OLCcBBWsJjLh1gW9RO/nS94sVzY59iS+fgYBOBqaBpf4EzfqUF3j9IG+xo8A=="
+ },
"regjsparser": {
"version": "0.9.1",
"resolved": "https://registry.npmjs.org/regjsparser/-/regjsparser-0.9.1.tgz",
@@ -22718,6 +23036,11 @@
"resolved": "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz",
"integrity": "sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw=="
},
+ "ts-custom-error": {
+ "version": "3.3.1",
+ "resolved": "https://registry.npmjs.org/ts-custom-error/-/ts-custom-error-3.3.1.tgz",
+ "integrity": "sha512-5OX1tzOjxWEgsr/YEUWSuPrQ00deKLh6D7OTWcvNHm12/7QPyRh8SYpyWvA4IZv8H/+GQWQEh/kwo95Q9OVW1A=="
+ },
"ts-loader": {
"version": "9.4.4",
"resolved": "https://registry.npmjs.org/ts-loader/-/ts-loader-9.4.4.tgz",
@@ -22951,6 +23274,14 @@
"@vue/shared": "3.3.4"
}
},
+ "vue-barcode-reader": {
+ "version": "1.0.3",
+ "resolved": "https://registry.npmjs.org/vue-barcode-reader/-/vue-barcode-reader-1.0.3.tgz",
+ "integrity": "sha512-z4mv7+ai/8vECppBTb00tHnyFMMx6W1rAaQe+v214ihoaWK9iGrn8ZZsmgSxf3lwnrtGaibLdkonTtMrGsO+dA==",
+ "requires": {
+ "@zxing/library": "^0.19.1"
+ }
+ },
"vue-cli-plugin-i18n": {
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/vue-cli-plugin-i18n/-/vue-cli-plugin-i18n-1.0.1.tgz",
diff --git a/package.json b/package.json
index d178390..906136a 100644
--- a/package.json
+++ b/package.json
@@ -1,6 +1,6 @@
{
"name": "Launchpad",
- "version": "0.0.1",
+ "version": "2.1.0",
"private": true,
"scripts": {
"serve": "vue-cli-service serve",
@@ -9,6 +9,7 @@
"i18n:report": "vue-cli-service i18n:report --src \"./src/**/*.?(js|vue)\" --locales \"./src/locales/**/*.json\""
},
"dependencies": {
+ "@hotwax/dxp-components": "^1.11.0",
"@hotwax/oms-api": "^1.9.0",
"@ionic/vue": "^6.0.2",
"@ionic/vue-router": "^6.0.2",
diff --git a/src/assets/images/Facilities.svg b/src/assets/images/Facilities.svg
new file mode 100644
index 0000000..2e6d89c
--- /dev/null
+++ b/src/assets/images/Facilities.svg
@@ -0,0 +1,22 @@
+
diff --git a/src/assets/images/UserManagement.svg b/src/assets/images/UserManagement.svg
new file mode 100644
index 0000000..7c11f86
--- /dev/null
+++ b/src/assets/images/UserManagement.svg
@@ -0,0 +1,29 @@
+
diff --git a/src/store/auth.ts b/src/store/auth.ts
index 26822c9..c7694fa 100644
--- a/src/store/auth.ts
+++ b/src/store/auth.ts
@@ -23,7 +23,7 @@ export const useAuthStore = defineStore('authStore', {
const currTime = DateTime.now().toMillis();
isTokenExpired = state.token.expiration < currTime;
}
- return state.token.value && !isTokenExpired;
+ return !!(state.token.value && !isTokenExpired);
},
getOMS: (state) => state.oms,
getBaseUrl: (state) => {
diff --git a/src/views/Home.vue b/src/views/Home.vue
index a24a1a6..39a1a09 100644
--- a/src/views/Home.vue
+++ b/src/views/Home.vue
@@ -1,21 +1,34 @@
-
{{ $t('Launch Pad') }}
-
-
-
- {{ authStore.getOMS }}
- {{ authStore.current?.partyName ? authStore.current?.partyName : authStore.current.userLoginId }}
-
- {{ $t('Logout') }}
-
+
+
+
+
+
+ {{ authStore.current?.partyName ? authStore.current?.partyName : authStore.current.userLoginId }}
+
+
+ {{ $t('Logout') }}
+
+
+
+
+
+ {{ authStore.getOMS }}
+
+
+
+
+
+
+
{{ $t('Login') }}
@@ -25,17 +38,17 @@
{{ category }}
-
+
{{ app.name }}
-
+
-
+
@@ -59,18 +72,22 @@ import {
IonIcon,
IonItem,
IonLabel,
+ IonList,
IonPage
} from '@ionic/vue';
import { defineComponent, ref } from 'vue';
import {
codeWorkingOutline,
+ hardwareChipOutline,
lockClosedOutline,
+ openOutline,
+ personCircleOutline,
rocketOutline,
- shieldHalfOutline,
- personCircleOutline
+ shieldHalfOutline
} from 'ionicons/icons';
import { useAuthStore } from '@/store/auth';
import { useRouter } from "vue-router";
+import { goToOms } from '@hotwax/dxp-components'
export default defineComponent({
name: 'Home',
@@ -84,8 +101,34 @@ export default defineComponent({
IonIcon,
IonItem,
IonLabel,
+ IonList,
IonPage
},
+ ionViewDidEnter() {
+ // clearing the redirect URL to break the login and redirection flow
+ // if the user navigates to the home page while login
+ this.authStore.setRedirectUrl('')
+ },
+ methods: {
+ login() {
+ // hydrate (pinia-plugin-persistedstate) will sync the app state with the
+ // localStorage state for avoiding the case when two launchpad tabs are opened
+ // and the user logs in through one and tries to login again from the next tab
+ // $hydate will resync the state and hence, update the app UI
+ this.authStore.$hydrate({ runHooks: false })
+ // push to login only if user is not logged in (after state hydration)
+ if (!this.authStore.isAuthenticated) {
+ this.router.push('/login')
+ }
+ },
+ async logout() {
+ this.authStore.$hydrate({ runHooks: false })
+ // hydrate and logout only if user is logged in (authenticated)
+ if (this.authStore.isAuthenticated) {
+ await this.authStore.logout()
+ }
+ }
+ },
setup() {
const authStore = useAuthStore();
const router = useRouter();
@@ -135,6 +178,16 @@ export default defineComponent({
name: 'Import',
resource: require('../assets/images/Import.svg'),
type: 'Workflow'
+ }, {
+ handle: 'users',
+ name: 'User Management',
+ resource: require('../assets/images/UserManagement.svg'),
+ type: 'Administration'
+ }, {
+ handle: 'facilities',
+ name: 'Facilities',
+ resource: require('../assets/images/Facilities.svg'),
+ type: 'Administration'
}]
const appCategory = appInfo.reduce((obj: any, app: any) => {
@@ -158,7 +211,10 @@ export default defineComponent({
codeWorkingOutline,
devHandle,
domain,
+ goToOms,
lockClosedOutline,
+ hardwareChipOutline,
+ openOutline,
personCircleOutline,
rocketOutline,
router,
@@ -214,6 +270,8 @@ export default defineComponent({
.app {
flex: 0 0 230px;
+ border-radius: 40px;
+ transition: .4s cubic-bezier(0.59, 0.08, 0.05, 1.4);
}
.app-icon {
@@ -227,16 +285,6 @@ export default defineComponent({
object-fit: cover;
}
- .app-content {
- }
-
- ion-card {
- border-radius: 40px;
- transition: .4s cubic-bezier(0.59, 0.08, 0.05, 1.4);
- /* alternate transition */
- /* transition: .5s cubic-bezier(0.8, -0.6, 0.23, 1.63); */
- }
-
ion-card-header {
text-align: center;
padding-bottom: 0;
@@ -251,7 +299,7 @@ export default defineComponent({
justify-content: center;
}
@media only screen and (min-width: 768px) {
- ion-card:hover {
+ .app:hover {
box-shadow: rgb(0 0 0 / 26%) 0px 3px 17px -2px, rgb(0 0 0 / 14%) 0px 2px 6px 0px, rgb(0 0 0 / 12%) 0px 1px 12px 0px;
transform: scale(1.05);
/* alternate box shadow */