Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
I
inventory-promotion-react
Project
Project
Details
Activity
Releases
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
Ascend
inventory-promotion-react
Commits
565f3c48
Commit
565f3c48
authored
May 10, 2021
by
Khai Yuan Liew
Browse files
Options
Browse Files
Download
Plain Diff
[AFP-12] Fix merge conflict with dev
parents
2628a19b
8279f394
Changes
6
Show whitespace changes
Inline
Side-by-side
Showing
6 changed files
with
4020 additions
and
75 deletions
+4020
-75
package-lock.json
package-lock.json
+441
-0
Main.jsx
src/component/Main.jsx
+4
-2
ProductForm.jsx
src/component/ProductForm.jsx
+87
-63
ProductGrid.jsx
src/component/ProductGrid.jsx
+12
-6
emptProduct.js
src/emptProduct.js
+13
-0
yarn.lock
yarn.lock
+3463
-4
No files found.
package-lock.json
View file @
565f3c48
...
@@ -11,7 +11,10 @@
...
@@ -11,7 +11,10 @@
"@testing-library/jest-dom": "^5.11.4",
"@testing-library/jest-dom": "^5.11.4",
"@testing-library/react": "^11.1.0",
"@testing-library/react": "^11.1.0",
"@testing-library/user-event": "^12.1.10",
"@testing-library/user-event": "^12.1.10",
"axios": "^0.21.1",
"bootstrap": "^5.0.0",
"react": "^17.0.2",
"react": "^17.0.2",
"react-bootstrap": "^1.5.2",
"react-dom": "^17.0.2",
"react-dom": "^17.0.2",
"react-hook-form": "^7.4.1",
"react-hook-form": "^7.4.1",
"react-router": "^5.2.0",
"react-router": "^5.2.0",
...
@@ -2036,6 +2039,35 @@
...
@@ -2036,6 +2039,35 @@
"node": ">= 8"
"node": ">= 8"
}
}
},
},
"node_modules/@popperjs/core": {
"version": "2.9.2",
"resolved": "https://registry.npmjs.org/@popperjs/core/-/core-2.9.2.tgz",
"integrity": "sha512-VZMYa7+fXHdwIq1TDhSXoVmSPEGM/aa+6Aiq3nVVJ9bXr24zScr+NlKFKC3iPljA7ho/GAZr+d2jOf5GIRC30Q==",
"funding": {
"type": "opencollective",
"url": "https://opencollective.com/popperjs"
}
},
"node_modules/@restart/context": {
"version": "2.1.4",
"resolved": "https://registry.npmjs.org/@restart/context/-/context-2.1.4.tgz",
"integrity": "sha512-INJYZQJP7g+IoDUh/475NlGiTeMfwTXUEr3tmRneckHIxNolGOW9CTq83S8cxq0CgJwwcMzMJFchxvlwe7Rk8Q==",
"peerDependencies": {
"react": ">=16.3.2"
}
},
"node_modules/@restart/hooks": {
"version": "0.3.26",
"resolved": "https://registry.npmjs.org/@restart/hooks/-/hooks-0.3.26.tgz",
"integrity": "sha512-7Hwk2ZMYm+JLWcb7R9qIXk1OoUg1Z+saKWqZXlrvFwT3w6UArVNWgxYOzf+PJoK9zZejp8okPAKTctthhXLt5g==",
"dependencies": {
"lodash": "^4.17.20",
"lodash-es": "^4.17.20"
},
"peerDependencies": {
"react": ">=16.8.0"
}
},
"node_modules/@rollup/plugin-node-resolve": {
"node_modules/@rollup/plugin-node-resolve": {
"version": "7.1.3",
"version": "7.1.3",
"resolved": "https://registry.npmjs.org/@rollup/plugin-node-resolve/-/plugin-node-resolve-7.1.3.tgz",
"resolved": "https://registry.npmjs.org/@rollup/plugin-node-resolve/-/plugin-node-resolve-7.1.3.tgz",
...
@@ -2447,6 +2479,15 @@
...
@@ -2447,6 +2479,15 @@
"@babel/types": "^7.3.0"
"@babel/types": "^7.3.0"
}
}
},
},
"node_modules/@types/classnames": {
"version": "2.3.1",
"resolved": "https://registry.npmjs.org/@types/classnames/-/classnames-2.3.1.tgz",
"integrity": "sha512-zeOWb0JGBoVmlQoznvqXbE0tEC/HONsnoUNH19Hc96NFsTAwTXbTqb8FMYkru1F/iqp7a18Ws3nWJvtA1sHD1A==",
"deprecated": "This is a stub types definition. classnames provides its own type definitions, so you do not need this installed.",
"dependencies": {
"classnames": "*"
}
},
"node_modules/@types/eslint": {
"node_modules/@types/eslint": {
"version": "7.2.6",
"version": "7.2.6",
"resolved": "https://registry.npmjs.org/@types/eslint/-/eslint-7.2.6.tgz",
"resolved": "https://registry.npmjs.org/@types/eslint/-/eslint-7.2.6.tgz",
...
@@ -2483,6 +2524,11 @@
...
@@ -2483,6 +2524,11 @@
"resolved": "https://registry.npmjs.org/@types/html-minifier-terser/-/html-minifier-terser-5.1.1.tgz",
"resolved": "https://registry.npmjs.org/@types/html-minifier-terser/-/html-minifier-terser-5.1.1.tgz",
"integrity": "sha512-giAlZwstKbmvMk1OO7WXSj4OZ0keXAcl2TQq4LWHiiPH2ByaH7WeUzng+Qej8UPxxv+8lRTuouo0iaNDBuzIBA=="
"integrity": "sha512-giAlZwstKbmvMk1OO7WXSj4OZ0keXAcl2TQq4LWHiiPH2ByaH7WeUzng+Qej8UPxxv+8lRTuouo0iaNDBuzIBA=="
},
},
"node_modules/@types/invariant": {
"version": "2.2.34",
"resolved": "https://registry.npmjs.org/@types/invariant/-/invariant-2.2.34.tgz",
"integrity": "sha512-lYUtmJ9BqUN688fGY1U1HZoWT1/Jrmgigx2loq4ZcJpICECm/Om3V314BxdzypO0u5PORKGMM6x0OXaljV1YFg=="
},
"node_modules/@types/istanbul-lib-coverage": {
"node_modules/@types/istanbul-lib-coverage": {
"version": "2.0.3",
"version": "2.0.3",
"resolved": "https://registry.npmjs.org/@types/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.3.tgz",
"resolved": "https://registry.npmjs.org/@types/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.3.tgz",
...
@@ -2548,11 +2594,34 @@
...
@@ -2548,11 +2594,34 @@
"resolved": "https://registry.npmjs.org/@types/prettier/-/prettier-2.2.1.tgz",
"resolved": "https://registry.npmjs.org/@types/prettier/-/prettier-2.2.1.tgz",
"integrity": "sha512-DxZZbyMAM9GWEzXL+BMZROWz9oo6A9EilwwOMET2UVu2uZTqMWS5S69KVtuVKaRjCUpcrOXRalet86/OpG4kqw=="
"integrity": "sha512-DxZZbyMAM9GWEzXL+BMZROWz9oo6A9EilwwOMET2UVu2uZTqMWS5S69KVtuVKaRjCUpcrOXRalet86/OpG4kqw=="
},
},
"node_modules/@types/prop-types": {
"version": "15.7.3",
"resolved": "https://registry.npmjs.org/@types/prop-types/-/prop-types-15.7.3.tgz",
"integrity": "sha512-KfRL3PuHmqQLOG+2tGpRO26Ctg+Cq1E01D2DMriKEATHgWLfeNDmq9e29Q9WIky0dQ3NPkd1mzYH8Lm936Z9qw=="
},
"node_modules/@types/q": {
"node_modules/@types/q": {
"version": "1.5.4",
"version": "1.5.4",
"resolved": "https://registry.npmjs.org/@types/q/-/q-1.5.4.tgz",
"resolved": "https://registry.npmjs.org/@types/q/-/q-1.5.4.tgz",
"integrity": "sha512-1HcDas8SEj4z1Wc696tH56G8OlRaH/sqZOynNNB+HF0WOeXPaxTtbYzJY2oEfiUxjSKjhCKr+MvR7dCHcEelug=="
"integrity": "sha512-1HcDas8SEj4z1Wc696tH56G8OlRaH/sqZOynNNB+HF0WOeXPaxTtbYzJY2oEfiUxjSKjhCKr+MvR7dCHcEelug=="
},
},
"node_modules/@types/react": {
"version": "17.0.5",
"resolved": "https://registry.npmjs.org/@types/react/-/react-17.0.5.tgz",
"integrity": "sha512-bj4biDB9ZJmGAYTWSKJly6bMr4BLUiBrx9ujiJEoP9XIDY9CTaPGxE5QWN/1WjpPLzYF7/jRNnV2nNxNe970sw==",
"dependencies": {
"@types/prop-types": "*",
"@types/scheduler": "*",
"csstype": "^3.0.2"
}
},
"node_modules/@types/react-transition-group": {
"version": "4.4.1",
"resolved": "https://registry.npmjs.org/@types/react-transition-group/-/react-transition-group-4.4.1.tgz",
"integrity": "sha512-vIo69qKKcYoJ8wKCJjwSgCTM+z3chw3g18dkrDfVX665tMH7tmbDxEAnPdey4gTlwZz5QuHGzd+hul0OVZDqqQ==",
"dependencies": {
"@types/react": "*"
}
},
"node_modules/@types/resolve": {
"node_modules/@types/resolve": {
"version": "0.0.8",
"version": "0.0.8",
"resolved": "https://registry.npmjs.org/@types/resolve/-/resolve-0.0.8.tgz",
"resolved": "https://registry.npmjs.org/@types/resolve/-/resolve-0.0.8.tgz",
...
@@ -2561,6 +2630,11 @@
...
@@ -2561,6 +2630,11 @@
"@types/node": "*"
"@types/node": "*"
}
}
},
},
"node_modules/@types/scheduler": {
"version": "0.16.1",
"resolved": "https://registry.npmjs.org/@types/scheduler/-/scheduler-0.16.1.tgz",
"integrity": "sha512-EaCxbanVeyxDRTQBkdLb3Bvl/HK7PBK6UJjsSixB0iHKoWxE5uu2Q/DgtpOhPIojN0Zl1whvOd7PoHs2P0s5eA=="
},
"node_modules/@types/source-list-map": {
"node_modules/@types/source-list-map": {
"version": "0.1.2",
"version": "0.1.2",
"resolved": "https://registry.npmjs.org/@types/source-list-map/-/source-list-map-0.1.2.tgz",
"resolved": "https://registry.npmjs.org/@types/source-list-map/-/source-list-map-0.1.2.tgz",
...
@@ -2592,6 +2666,11 @@
...
@@ -2592,6 +2666,11 @@
"source-map": "^0.6.1"
"source-map": "^0.6.1"
}
}
},
},
"node_modules/@types/warning": {
"version": "3.0.0",
"resolved": "https://registry.npmjs.org/@types/warning/-/warning-3.0.0.tgz",
"integrity": "sha1-DSUBJorY+ZYrdA04fEZU9fjiPlI="
},
"node_modules/@types/webpack": {
"node_modules/@types/webpack": {
"version": "4.41.26",
"version": "4.41.26",
"resolved": "https://registry.npmjs.org/@types/webpack/-/webpack-4.41.26.tgz",
"resolved": "https://registry.npmjs.org/@types/webpack/-/webpack-4.41.26.tgz",
...
@@ -3447,6 +3526,14 @@
...
@@ -3447,6 +3526,14 @@
"node": ">=4"
"node": ">=4"
}
}
},
},
"node_modules/axios": {
"version": "0.21.1",
"resolved": "https://registry.npmjs.org/axios/-/axios-0.21.1.tgz",
"integrity": "sha512-dKQiRHxGD9PPRIUNIWvZhPTPpl1rf/OxTYKsqKUDjBwYylTvV7SjSHJb9ratfyzM6wCdLCOYLzs73qpg5c4iGA==",
"dependencies": {
"follow-redirects": "^1.10.0"
}
},
"node_modules/axobject-query": {
"node_modules/axobject-query": {
"version": "2.2.0",
"version": "2.2.0",
"resolved": "https://registry.npmjs.org/axobject-query/-/axobject-query-2.2.0.tgz",
"resolved": "https://registry.npmjs.org/axobject-query/-/axobject-query-2.2.0.tgz",
...
@@ -4105,6 +4192,18 @@
...
@@ -4105,6 +4192,18 @@
"resolved": "https://registry.npmjs.org/boolbase/-/boolbase-1.0.0.tgz",
"resolved": "https://registry.npmjs.org/boolbase/-/boolbase-1.0.0.tgz",
"integrity": "sha1-aN/1++YMUes3cl6p4+0xDcwed24="
"integrity": "sha1-aN/1++YMUes3cl6p4+0xDcwed24="
},
},
"node_modules/bootstrap": {
"version": "5.0.0",
"resolved": "https://registry.npmjs.org/bootstrap/-/bootstrap-5.0.0.tgz",
"integrity": "sha512-tmhPET9B9qCl8dCofvHeiIhi49iBt0EehmIsziZib65k1erBW1rHhj2s/2JsuQh5Pq+xz2E9bEbzp9B7xHG+VA==",
"funding": {
"type": "opencollective",
"url": "https://opencollective.com/bootstrap"
},
"peerDependencies": {
"@popperjs/core": "^2.9.2"
}
},
"node_modules/brace-expansion": {
"node_modules/brace-expansion": {
"version": "1.1.11",
"version": "1.1.11",
"resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz",
"resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz",
...
@@ -4654,6 +4753,11 @@
...
@@ -4654,6 +4753,11 @@
"node": ">=0.10.0"
"node": ">=0.10.0"
}
}
},
},
"node_modules/classnames": {
"version": "2.3.1",
"resolved": "https://registry.npmjs.org/classnames/-/classnames-2.3.1.tgz",
"integrity": "sha512-OlQdbZ7gLfGarSqxesMesDa5uz7KFbID8Kpq/SxIoNGDqY8lSYs0D+hhtBXhcdB3rcbXArFr7vlHheLk1voeNA=="
},
"node_modules/clean-css": {
"node_modules/clean-css": {
"version": "4.2.3",
"version": "4.2.3",
"resolved": "https://registry.npmjs.org/clean-css/-/clean-css-4.2.3.tgz",
"resolved": "https://registry.npmjs.org/clean-css/-/clean-css-4.2.3.tgz",
...
@@ -5585,6 +5689,11 @@
...
@@ -5585,6 +5689,11 @@
"resolved": "https://registry.npmjs.org/cssom/-/cssom-0.3.8.tgz",
"resolved": "https://registry.npmjs.org/cssom/-/cssom-0.3.8.tgz",
"integrity": "sha512-b0tGHbfegbhPJpxpiBPU2sCkigAqtM9O121le6bbOlgyV+NyGyCmVfJ6QW9eRjz8CpNfWEOYBIMIGRYkLwsIYg=="
"integrity": "sha512-b0tGHbfegbhPJpxpiBPU2sCkigAqtM9O121le6bbOlgyV+NyGyCmVfJ6QW9eRjz8CpNfWEOYBIMIGRYkLwsIYg=="
},
},
"node_modules/csstype": {
"version": "3.0.8",
"resolved": "https://registry.npmjs.org/csstype/-/csstype-3.0.8.tgz",
"integrity": "sha512-jXKhWqXPmlUeoQnF/EhTtTl4C9SnrxSH/jZUih3jmO6lBKr99rP3/+FmrMj4EFpOXzMtXHAZkd3x0E6h6Fgflw=="
},
"node_modules/cyclist": {
"node_modules/cyclist": {
"version": "1.0.1",
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/cyclist/-/cyclist-1.0.1.tgz",
"resolved": "https://registry.npmjs.org/cyclist/-/cyclist-1.0.1.tgz",
...
@@ -6064,6 +6173,15 @@
...
@@ -6064,6 +6173,15 @@
"utila": "~0.4"
"utila": "~0.4"
}
}
},
},
"node_modules/dom-helpers": {
"version": "5.2.1",
"resolved": "https://registry.npmjs.org/dom-helpers/-/dom-helpers-5.2.1.tgz",
"integrity": "sha512-nRCa7CK3VTrM2NmGkIy4cbK7IZlgBE/PYMn55rrXefr5xXDP0LdtfPnblFDoVdcAfslJ7or6iqAUnx0CCGIWQA==",
"dependencies": {
"@babel/runtime": "^7.8.7",
"csstype": "^3.0.2"
}
},
"node_modules/dom-serializer": {
"node_modules/dom-serializer": {
"version": "0.2.2",
"version": "0.2.2",
"resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-0.2.2.tgz",
"resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-0.2.2.tgz",
...
@@ -9245,6 +9363,14 @@
...
@@ -9245,6 +9363,14 @@
"node": ">= 0.4"
"node": ">= 0.4"
}
}
},
},
"node_modules/invariant": {
"version": "2.2.4",
"resolved": "https://registry.npmjs.org/invariant/-/invariant-2.2.4.tgz",
"integrity": "sha512-phJfQVBuaJM5raOpJjSfkiD6BpbCE4Ns//LaXl6wGYtUBY83nWS6Rf9tXm2e8VaK60JEjYldbPif/A2B1C2gNA==",
"dependencies": {
"loose-envify": "^1.0.0"
}
},
"node_modules/ip": {
"node_modules/ip": {
"version": "1.1.5",
"version": "1.1.5",
"resolved": "https://registry.npmjs.org/ip/-/ip-1.1.5.tgz",
"resolved": "https://registry.npmjs.org/ip/-/ip-1.1.5.tgz",
...
@@ -10951,6 +11077,11 @@
...
@@ -10951,6 +11077,11 @@
"resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz",
"resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz",
"integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg=="
"integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg=="
},
},
"node_modules/lodash-es": {
"version": "4.17.21",
"resolved": "https://registry.npmjs.org/lodash-es/-/lodash-es-4.17.21.tgz",
"integrity": "sha512-mKnC+QJ9pWVzv+C4/U3rRsHapFfHvQFoFB92e52xeyGMcX6/OlIl78je1u8vePzYZSkkogMPJ2yjxxsb89cxyw=="
},
"node_modules/lodash._reinterpolate": {
"node_modules/lodash._reinterpolate": {
"version": "3.0.0",
"version": "3.0.0",
"resolved": "https://registry.npmjs.org/lodash._reinterpolate/-/lodash._reinterpolate-3.0.0.tgz",
"resolved": "https://registry.npmjs.org/lodash._reinterpolate/-/lodash._reinterpolate-3.0.0.tgz",
...
@@ -13971,6 +14102,23 @@
...
@@ -13971,6 +14102,23 @@
"react-is": "^16.8.1"
"react-is": "^16.8.1"
}
}
},
},
"node_modules/prop-types-extra": {
"version": "1.1.1",
"resolved": "https://registry.npmjs.org/prop-types-extra/-/prop-types-extra-1.1.1.tgz",
"integrity": "sha512-59+AHNnHYCdiC+vMwY52WmvP5dM3QLeoumYuEyceQDi9aEhtwN9zIQ2ZNo25sMyXnbh32h+P1ezDsUpUH3JAew==",
"dependencies": {
"react-is": "^16.3.2",
"warning": "^4.0.0"
},
"peerDependencies": {
"react": ">=0.14.0"
}
},
"node_modules/prop-types-extra/node_modules/react-is": {
"version": "16.13.1",
"resolved": "https://registry.npmjs.org/react-is/-/react-is-16.13.1.tgz",
"integrity": "sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ=="
},
"node_modules/prop-types/node_modules/react-is": {
"node_modules/prop-types/node_modules/react-is": {
"version": "16.13.1",
"version": "16.13.1",
"resolved": "https://registry.npmjs.org/react-is/-/react-is-16.13.1.tgz",
"resolved": "https://registry.npmjs.org/react-is/-/react-is-16.13.1.tgz",
...
@@ -14204,6 +14352,35 @@
...
@@ -14204,6 +14352,35 @@
"node": ">=10"
"node": ">=10"
}
}
},
},
"node_modules/react-bootstrap": {
"version": "1.5.2",
"resolved": "https://registry.npmjs.org/react-bootstrap/-/react-bootstrap-1.5.2.tgz",
"integrity": "sha512-mGKPY5+lLd7Vtkx2VFivoRkPT4xAHazuFfIhJLTEgHlDfIUSePn7qrmpZe5gXH9zvHV0RsBaQ9cLfXjxnZrOpA==",
"dependencies": {
"@babel/runtime": "^7.13.8",
"@restart/context": "^2.1.4",
"@restart/hooks": "^0.3.26",
"@types/classnames": "^2.2.10",
"@types/invariant": "^2.2.33",
"@types/prop-types": "^15.7.3",
"@types/react": ">=16.9.35",
"@types/react-transition-group": "^4.4.1",
"@types/warning": "^3.0.0",
"classnames": "^2.2.6",
"dom-helpers": "^5.1.2",
"invariant": "^2.2.4",
"prop-types": "^15.7.2",
"prop-types-extra": "^1.1.0",
"react-overlays": "^5.0.0",
"react-transition-group": "^4.4.1",
"uncontrollable": "^7.2.1",
"warning": "^4.0.3"
},
"peerDependencies": {
"react": ">=16.8.0",
"react-dom": ">=16.8.0"
}
},
"node_modules/react-dev-utils": {
"node_modules/react-dev-utils": {
"version": "11.0.4",
"version": "11.0.4",
"resolved": "https://registry.npmjs.org/react-dev-utils/-/react-dev-utils-11.0.4.tgz",
"resolved": "https://registry.npmjs.org/react-dev-utils/-/react-dev-utils-11.0.4.tgz",
...
@@ -14393,6 +14570,30 @@
...
@@ -14393,6 +14570,30 @@
"resolved": "https://registry.npmjs.org/react-is/-/react-is-17.0.1.tgz",
"resolved": "https://registry.npmjs.org/react-is/-/react-is-17.0.1.tgz",
"integrity": "sha512-NAnt2iGDXohE5LI7uBnLnqvLQMtzhkiAOLXTmv+qnF9Ky7xAPcX8Up/xWIhxvLVGJvuLiNc4xQLtuqDRzb4fSA=="
"integrity": "sha512-NAnt2iGDXohE5LI7uBnLnqvLQMtzhkiAOLXTmv+qnF9Ky7xAPcX8Up/xWIhxvLVGJvuLiNc4xQLtuqDRzb4fSA=="
},
},
"node_modules/react-lifecycles-compat": {
"version": "3.0.4",
"resolved": "https://registry.npmjs.org/react-lifecycles-compat/-/react-lifecycles-compat-3.0.4.tgz",
"integrity": "sha512-fBASbA6LnOU9dOU2eW7aQ8xmYBSXUIWr+UmF9b1efZBazGNO+rcXT/icdKnYm2pTwcRylVUYwW7H1PHfLekVzA=="
},
"node_modules/react-overlays": {
"version": "5.0.1",
"resolved": "https://registry.npmjs.org/react-overlays/-/react-overlays-5.0.1.tgz",
"integrity": "sha512-plwUJieTBbLSrgvQ4OkkbTD/deXgxiJdNuKzo6n1RWE3OVnQIU5hffCGS/nvIuu6LpXFs2majbzaXY8rcUVdWA==",
"dependencies": {
"@babel/runtime": "^7.13.8",
"@popperjs/core": "^2.8.6",
"@restart/hooks": "^0.3.26",
"@types/warning": "^3.0.0",
"dom-helpers": "^5.2.0",
"prop-types": "^15.7.2",
"uncontrollable": "^7.2.1",
"warning": "^4.0.3"
},
"peerDependencies": {
"react": ">=16.3.0",
"react-dom": ">=16.3.0"
}
},
"node_modules/react-refresh": {
"node_modules/react-refresh": {
"version": "0.8.3",
"version": "0.8.3",
"resolved": "https://registry.npmjs.org/react-refresh/-/react-refresh-0.8.3.tgz",
"resolved": "https://registry.npmjs.org/react-refresh/-/react-refresh-0.8.3.tgz",
...
@@ -14526,6 +14727,21 @@
...
@@ -14526,6 +14727,21 @@
}
}
}
}
},
},
"node_modules/react-transition-group": {
"version": "4.4.1",
"resolved": "https://registry.npmjs.org/react-transition-group/-/react-transition-group-4.4.1.tgz",
"integrity": "sha512-Djqr7OQ2aPUiYurhPalTrVy9ddmFCCzwhqQmtN+J3+3DzLO209Fdr70QrN8Z3DsglWql6iY1lDWAfpFiBtuKGw==",
"dependencies": {
"@babel/runtime": "^7.5.5",
"dom-helpers": "^5.0.1",
"loose-envify": "^1.4.0",
"prop-types": "^15.6.2"
},
"peerDependencies": {
"react": ">=16.6.0",
"react-dom": ">=16.6.0"
}
},
"node_modules/read-pkg": {
"node_modules/read-pkg": {
"version": "2.0.0",
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-2.0.0.tgz",
"resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-2.0.0.tgz",
...
@@ -17660,6 +17876,20 @@
...
@@ -17660,6 +17876,20 @@
"node": ">=4.2.0"
"node": ">=4.2.0"
}
}
},
},
"node_modules/uncontrollable": {
"version": "7.2.1",
"resolved": "https://registry.npmjs.org/uncontrollable/-/uncontrollable-7.2.1.tgz",
"integrity": "sha512-svtcfoTADIB0nT9nltgjujTi7BzVmwjZClOmskKu/E8FW9BXzg9os8OLr4f8Dlnk0rYWJIWr4wv9eKUXiQvQwQ==",
"dependencies": {
"@babel/runtime": "^7.6.3",
"@types/react": ">=16.9.11",
"invariant": "^2.2.4",
"react-lifecycles-compat": "^3.0.4"
},
"peerDependencies": {
"react": ">=15.0.0"
}
},
"node_modules/unicode-canonical-property-names-ecmascript": {
"node_modules/unicode-canonical-property-names-ecmascript": {
"version": "1.0.4",
"version": "1.0.4",
"resolved": "https://registry.npmjs.org/unicode-canonical-property-names-ecmascript/-/unicode-canonical-property-names-ecmascript-1.0.4.tgz",
"resolved": "https://registry.npmjs.org/unicode-canonical-property-names-ecmascript/-/unicode-canonical-property-names-ecmascript-1.0.4.tgz",
...
@@ -18081,6 +18311,14 @@
...
@@ -18081,6 +18311,14 @@
"makeerror": "1.0.x"
"makeerror": "1.0.x"
}
}
},
},
"node_modules/warning": {
"version": "4.0.3",
"resolved": "https://registry.npmjs.org/warning/-/warning-4.0.3.tgz",
"integrity": "sha512-rpJyN222KWIvHJ/F53XSZv0Zl/accqHR8et1kpaMTD/fLCRxtV8iX8czMzY7sVZupTI3zcUTg8eycS2kNF9l6w==",
"dependencies": {
"loose-envify": "^1.0.0"
}
},
"node_modules/watchpack": {
"node_modules/watchpack": {
"version": "1.7.5",
"version": "1.7.5",
"resolved": "https://registry.npmjs.org/watchpack/-/watchpack-1.7.5.tgz",
"resolved": "https://registry.npmjs.org/watchpack/-/watchpack-1.7.5.tgz",
...
@@ -21527,6 +21765,26 @@
...
@@ -21527,6 +21765,26 @@
}
}
}
}
},
},
"@popperjs/core": {
"version": "2.9.2",
"resolved": "https://registry.npmjs.org/@popperjs/core/-/core-2.9.2.tgz",
"integrity": "sha512-VZMYa7+fXHdwIq1TDhSXoVmSPEGM/aa+6Aiq3nVVJ9bXr24zScr+NlKFKC3iPljA7ho/GAZr+d2jOf5GIRC30Q=="
},
"@restart/context": {
"version": "2.1.4",
"resolved": "https://registry.npmjs.org/@restart/context/-/context-2.1.4.tgz",
"integrity": "sha512-INJYZQJP7g+IoDUh/475NlGiTeMfwTXUEr3tmRneckHIxNolGOW9CTq83S8cxq0CgJwwcMzMJFchxvlwe7Rk8Q==",
"requires": {}
},
"@restart/hooks": {
"version": "0.3.26",
"resolved": "https://registry.npmjs.org/@restart/hooks/-/hooks-0.3.26.tgz",
"integrity": "sha512-7Hwk2ZMYm+JLWcb7R9qIXk1OoUg1Z+saKWqZXlrvFwT3w6UArVNWgxYOzf+PJoK9zZejp8okPAKTctthhXLt5g==",
"requires": {
"lodash": "^4.17.20",
"lodash-es": "^4.17.20"
}
},
"@rollup/plugin-node-resolve": {
"@rollup/plugin-node-resolve": {
"version": "7.1.3",
"version": "7.1.3",
"resolved": "https://registry.npmjs.org/@rollup/plugin-node-resolve/-/plugin-node-resolve-7.1.3.tgz",
"resolved": "https://registry.npmjs.org/@rollup/plugin-node-resolve/-/plugin-node-resolve-7.1.3.tgz",
...
@@ -21804,6 +22062,14 @@
...
@@ -21804,6 +22062,14 @@
"@babel/types": "^7.3.0"
"@babel/types": "^7.3.0"
}
}
},
},
"@types/classnames": {
"version": "2.3.1",
"resolved": "https://registry.npmjs.org/@types/classnames/-/classnames-2.3.1.tgz",
"integrity": "sha512-zeOWb0JGBoVmlQoznvqXbE0tEC/HONsnoUNH19Hc96NFsTAwTXbTqb8FMYkru1F/iqp7a18Ws3nWJvtA1sHD1A==",
"requires": {
"classnames": "*"
}
},
"@types/eslint": {
"@types/eslint": {
"version": "7.2.6",
"version": "7.2.6",
"resolved": "https://registry.npmjs.org/@types/eslint/-/eslint-7.2.6.tgz",
"resolved": "https://registry.npmjs.org/@types/eslint/-/eslint-7.2.6.tgz",
...
@@ -21840,6 +22106,11 @@
...
@@ -21840,6 +22106,11 @@
"resolved": "https://registry.npmjs.org/@types/html-minifier-terser/-/html-minifier-terser-5.1.1.tgz",
"resolved": "https://registry.npmjs.org/@types/html-minifier-terser/-/html-minifier-terser-5.1.1.tgz",
"integrity": "sha512-giAlZwstKbmvMk1OO7WXSj4OZ0keXAcl2TQq4LWHiiPH2ByaH7WeUzng+Qej8UPxxv+8lRTuouo0iaNDBuzIBA=="
"integrity": "sha512-giAlZwstKbmvMk1OO7WXSj4OZ0keXAcl2TQq4LWHiiPH2ByaH7WeUzng+Qej8UPxxv+8lRTuouo0iaNDBuzIBA=="
},
},
"@types/invariant": {
"version": "2.2.34",
"resolved": "https://registry.npmjs.org/@types/invariant/-/invariant-2.2.34.tgz",
"integrity": "sha512-lYUtmJ9BqUN688fGY1U1HZoWT1/Jrmgigx2loq4ZcJpICECm/Om3V314BxdzypO0u5PORKGMM6x0OXaljV1YFg=="
},
"@types/istanbul-lib-coverage": {
"@types/istanbul-lib-coverage": {
"version": "2.0.3",
"version": "2.0.3",
"resolved": "https://registry.npmjs.org/@types/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.3.tgz",
"resolved": "https://registry.npmjs.org/@types/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.3.tgz",
...
@@ -21905,11 +22176,34 @@
...
@@ -21905,11 +22176,34 @@
"resolved": "https://registry.npmjs.org/@types/prettier/-/prettier-2.2.1.tgz",
"resolved": "https://registry.npmjs.org/@types/prettier/-/prettier-2.2.1.tgz",
"integrity": "sha512-DxZZbyMAM9GWEzXL+BMZROWz9oo6A9EilwwOMET2UVu2uZTqMWS5S69KVtuVKaRjCUpcrOXRalet86/OpG4kqw=="
"integrity": "sha512-DxZZbyMAM9GWEzXL+BMZROWz9oo6A9EilwwOMET2UVu2uZTqMWS5S69KVtuVKaRjCUpcrOXRalet86/OpG4kqw=="
},
},
"@types/prop-types": {
"version": "15.7.3",
"resolved": "https://registry.npmjs.org/@types/prop-types/-/prop-types-15.7.3.tgz",
"integrity": "sha512-KfRL3PuHmqQLOG+2tGpRO26Ctg+Cq1E01D2DMriKEATHgWLfeNDmq9e29Q9WIky0dQ3NPkd1mzYH8Lm936Z9qw=="
},
"@types/q": {
"@types/q": {
"version": "1.5.4",
"version": "1.5.4",
"resolved": "https://registry.npmjs.org/@types/q/-/q-1.5.4.tgz",
"resolved": "https://registry.npmjs.org/@types/q/-/q-1.5.4.tgz",
"integrity": "sha512-1HcDas8SEj4z1Wc696tH56G8OlRaH/sqZOynNNB+HF0WOeXPaxTtbYzJY2oEfiUxjSKjhCKr+MvR7dCHcEelug=="
"integrity": "sha512-1HcDas8SEj4z1Wc696tH56G8OlRaH/sqZOynNNB+HF0WOeXPaxTtbYzJY2oEfiUxjSKjhCKr+MvR7dCHcEelug=="
},
},
"@types/react": {
"version": "17.0.5",
"resolved": "https://registry.npmjs.org/@types/react/-/react-17.0.5.tgz",
"integrity": "sha512-bj4biDB9ZJmGAYTWSKJly6bMr4BLUiBrx9ujiJEoP9XIDY9CTaPGxE5QWN/1WjpPLzYF7/jRNnV2nNxNe970sw==",
"requires": {
"@types/prop-types": "*",
"@types/scheduler": "*",
"csstype": "^3.0.2"
}
},
"@types/react-transition-group": {
"version": "4.4.1",
"resolved": "https://registry.npmjs.org/@types/react-transition-group/-/react-transition-group-4.4.1.tgz",
"integrity": "sha512-vIo69qKKcYoJ8wKCJjwSgCTM+z3chw3g18dkrDfVX665tMH7tmbDxEAnPdey4gTlwZz5QuHGzd+hul0OVZDqqQ==",
"requires": {
"@types/react": "*"
}
},
"@types/resolve": {
"@types/resolve": {
"version": "0.0.8",
"version": "0.0.8",
"resolved": "https://registry.npmjs.org/@types/resolve/-/resolve-0.0.8.tgz",
"resolved": "https://registry.npmjs.org/@types/resolve/-/resolve-0.0.8.tgz",
...
@@ -21918,6 +22212,11 @@
...
@@ -21918,6 +22212,11 @@
"@types/node": "*"
"@types/node": "*"
}
}
},
},
"@types/scheduler": {
"version": "0.16.1",
"resolved": "https://registry.npmjs.org/@types/scheduler/-/scheduler-0.16.1.tgz",
"integrity": "sha512-EaCxbanVeyxDRTQBkdLb3Bvl/HK7PBK6UJjsSixB0iHKoWxE5uu2Q/DgtpOhPIojN0Zl1whvOd7PoHs2P0s5eA=="
},
"@types/source-list-map": {
"@types/source-list-map": {
"version": "0.1.2",
"version": "0.1.2",
"resolved": "https://registry.npmjs.org/@types/source-list-map/-/source-list-map-0.1.2.tgz",
"resolved": "https://registry.npmjs.org/@types/source-list-map/-/source-list-map-0.1.2.tgz",
...
@@ -21949,6 +22248,11 @@
...
@@ -21949,6 +22248,11 @@
"source-map": "^0.6.1"
"source-map": "^0.6.1"
}
}
},
},
"@types/warning": {
"version": "3.0.0",
"resolved": "https://registry.npmjs.org/@types/warning/-/warning-3.0.0.tgz",
"integrity": "sha1-DSUBJorY+ZYrdA04fEZU9fjiPlI="
},
"@types/webpack": {
"@types/webpack": {
"version": "4.41.26",
"version": "4.41.26",
"resolved": "https://registry.npmjs.org/@types/webpack/-/webpack-4.41.26.tgz",
"resolved": "https://registry.npmjs.org/@types/webpack/-/webpack-4.41.26.tgz",
...
@@ -22602,6 +22906,14 @@
...
@@ -22602,6 +22906,14 @@
"resolved": "https://registry.npmjs.org/axe-core/-/axe-core-4.1.2.tgz",
"resolved": "https://registry.npmjs.org/axe-core/-/axe-core-4.1.2.tgz",
"integrity": "sha512-V+Nq70NxKhYt89ArVcaNL9FDryB3vQOd+BFXZIfO3RP6rwtj+2yqqqdHEkacutglPaZLkJeuXKCjCJDMGPtPqg=="
"integrity": "sha512-V+Nq70NxKhYt89ArVcaNL9FDryB3vQOd+BFXZIfO3RP6rwtj+2yqqqdHEkacutglPaZLkJeuXKCjCJDMGPtPqg=="
},
},
"axios": {
"version": "0.21.1",
"resolved": "https://registry.npmjs.org/axios/-/axios-0.21.1.tgz",
"integrity": "sha512-dKQiRHxGD9PPRIUNIWvZhPTPpl1rf/OxTYKsqKUDjBwYylTvV7SjSHJb9ratfyzM6wCdLCOYLzs73qpg5c4iGA==",
"requires": {
"follow-redirects": "^1.10.0"
}
},
"axobject-query": {
"axobject-query": {
"version": "2.2.0",
"version": "2.2.0",
"resolved": "https://registry.npmjs.org/axobject-query/-/axobject-query-2.2.0.tgz",
"resolved": "https://registry.npmjs.org/axobject-query/-/axobject-query-2.2.0.tgz",
...
@@ -23151,6 +23463,12 @@
...
@@ -23151,6 +23463,12 @@
"resolved": "https://registry.npmjs.org/boolbase/-/boolbase-1.0.0.tgz",
"resolved": "https://registry.npmjs.org/boolbase/-/boolbase-1.0.0.tgz",
"integrity": "sha1-aN/1++YMUes3cl6p4+0xDcwed24="
"integrity": "sha1-aN/1++YMUes3cl6p4+0xDcwed24="
},
},
"bootstrap": {
"version": "5.0.0",
"resolved": "https://registry.npmjs.org/bootstrap/-/bootstrap-5.0.0.tgz",
"integrity": "sha512-tmhPET9B9qCl8dCofvHeiIhi49iBt0EehmIsziZib65k1erBW1rHhj2s/2JsuQh5Pq+xz2E9bEbzp9B7xHG+VA==",
"requires": {}
},
"brace-expansion": {
"brace-expansion": {
"version": "1.1.11",
"version": "1.1.11",
"resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz",
"resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz",
...
@@ -23597,6 +23915,11 @@
...
@@ -23597,6 +23915,11 @@
}
}
}
}
},
},
"classnames": {
"version": "2.3.1",
"resolved": "https://registry.npmjs.org/classnames/-/classnames-2.3.1.tgz",
"integrity": "sha512-OlQdbZ7gLfGarSqxesMesDa5uz7KFbID8Kpq/SxIoNGDqY8lSYs0D+hhtBXhcdB3rcbXArFr7vlHheLk1voeNA=="
},
"clean-css": {
"clean-css": {
"version": "4.2.3",
"version": "4.2.3",
"resolved": "https://registry.npmjs.org/clean-css/-/clean-css-4.2.3.tgz",
"resolved": "https://registry.npmjs.org/clean-css/-/clean-css-4.2.3.tgz",
...
@@ -24351,6 +24674,11 @@
...
@@ -24351,6 +24674,11 @@
}
}
}
}
},
},
"csstype": {
"version": "3.0.8",
"resolved": "https://registry.npmjs.org/csstype/-/csstype-3.0.8.tgz",
"integrity": "sha512-jXKhWqXPmlUeoQnF/EhTtTl4C9SnrxSH/jZUih3jmO6lBKr99rP3/+FmrMj4EFpOXzMtXHAZkd3x0E6h6Fgflw=="
},
"cyclist": {
"cyclist": {
"version": "1.0.1",
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/cyclist/-/cyclist-1.0.1.tgz",
"resolved": "https://registry.npmjs.org/cyclist/-/cyclist-1.0.1.tgz",
...
@@ -24732,6 +25060,15 @@
...
@@ -24732,6 +25060,15 @@
"utila": "~0.4"
"utila": "~0.4"
}
}
},
},
"dom-helpers": {
"version": "5.2.1",
"resolved": "https://registry.npmjs.org/dom-helpers/-/dom-helpers-5.2.1.tgz",
"integrity": "sha512-nRCa7CK3VTrM2NmGkIy4cbK7IZlgBE/PYMn55rrXefr5xXDP0LdtfPnblFDoVdcAfslJ7or6iqAUnx0CCGIWQA==",
"requires": {
"@babel/runtime": "^7.8.7",
"csstype": "^3.0.2"
}
},
"dom-serializer": {
"dom-serializer": {
"version": "0.2.2",
"version": "0.2.2",
"resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-0.2.2.tgz",
"resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-0.2.2.tgz",
...
@@ -27252,6 +27589,14 @@
...
@@ -27252,6 +27589,14 @@
"side-channel": "^1.0.4"
"side-channel": "^1.0.4"
}
}
},
},
"invariant": {
"version": "2.2.4",
"resolved": "https://registry.npmjs.org/invariant/-/invariant-2.2.4.tgz",
"integrity": "sha512-phJfQVBuaJM5raOpJjSfkiD6BpbCE4Ns//LaXl6wGYtUBY83nWS6Rf9tXm2e8VaK60JEjYldbPif/A2B1C2gNA==",
"requires": {
"loose-envify": "^1.0.0"
}
},
"ip": {
"ip": {
"version": "1.1.5",
"version": "1.1.5",
"resolved": "https://registry.npmjs.org/ip/-/ip-1.1.5.tgz",
"resolved": "https://registry.npmjs.org/ip/-/ip-1.1.5.tgz",
...
@@ -28543,6 +28888,11 @@
...
@@ -28543,6 +28888,11 @@
"resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz",
"resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz",
"integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg=="
"integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg=="
},
},
"lodash-es": {
"version": "4.17.21",
"resolved": "https://registry.npmjs.org/lodash-es/-/lodash-es-4.17.21.tgz",
"integrity": "sha512-mKnC+QJ9pWVzv+C4/U3rRsHapFfHvQFoFB92e52xeyGMcX6/OlIl78je1u8vePzYZSkkogMPJ2yjxxsb89cxyw=="
},
"lodash._reinterpolate": {
"lodash._reinterpolate": {
"version": "3.0.0",
"version": "3.0.0",
"resolved": "https://registry.npmjs.org/lodash._reinterpolate/-/lodash._reinterpolate-3.0.0.tgz",
"resolved": "https://registry.npmjs.org/lodash._reinterpolate/-/lodash._reinterpolate-3.0.0.tgz",
...
@@ -30976,6 +31326,22 @@
...
@@ -30976,6 +31326,22 @@
}
}
}
}
},
},
"prop-types-extra": {
"version": "1.1.1",
"resolved": "https://registry.npmjs.org/prop-types-extra/-/prop-types-extra-1.1.1.tgz",
"integrity": "sha512-59+AHNnHYCdiC+vMwY52WmvP5dM3QLeoumYuEyceQDi9aEhtwN9zIQ2ZNo25sMyXnbh32h+P1ezDsUpUH3JAew==",
"requires": {
"react-is": "^16.3.2",
"warning": "^4.0.0"
},
"dependencies": {
"react-is": {
"version": "16.13.1",
"resolved": "https://registry.npmjs.org/react-is/-/react-is-16.13.1.tgz",
"integrity": "sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ=="
}
}
},
"proxy-addr": {
"proxy-addr": {
"version": "2.0.6",
"version": "2.0.6",
"resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.6.tgz",
"resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.6.tgz",
...
@@ -31159,6 +31525,31 @@
...
@@ -31159,6 +31525,31 @@
"whatwg-fetch": "^3.4.1"
"whatwg-fetch": "^3.4.1"
}
}
},
},
"react-bootstrap": {
"version": "1.5.2",
"resolved": "https://registry.npmjs.org/react-bootstrap/-/react-bootstrap-1.5.2.tgz",
"integrity": "sha512-mGKPY5+lLd7Vtkx2VFivoRkPT4xAHazuFfIhJLTEgHlDfIUSePn7qrmpZe5gXH9zvHV0RsBaQ9cLfXjxnZrOpA==",
"requires": {
"@babel/runtime": "^7.13.8",
"@restart/context": "^2.1.4",
"@restart/hooks": "^0.3.26",
"@types/classnames": "^2.2.10",
"@types/invariant": "^2.2.33",
"@types/prop-types": "^15.7.3",
"@types/react": ">=16.9.35",
"@types/react-transition-group": "^4.4.1",
"@types/warning": "^3.0.0",
"classnames": "^2.2.6",
"dom-helpers": "^5.1.2",
"invariant": "^2.2.4",
"prop-types": "^15.7.2",
"prop-types-extra": "^1.1.0",
"react-overlays": "^5.0.0",
"react-transition-group": "^4.4.1",
"uncontrollable": "^7.2.1",
"warning": "^4.0.3"
}
},
"react-dev-utils": {
"react-dev-utils": {
"version": "11.0.4",
"version": "11.0.4",
"resolved": "https://registry.npmjs.org/react-dev-utils/-/react-dev-utils-11.0.4.tgz",
"resolved": "https://registry.npmjs.org/react-dev-utils/-/react-dev-utils-11.0.4.tgz",
...
@@ -31306,6 +31697,26 @@
...
@@ -31306,6 +31697,26 @@
"resolved": "https://registry.npmjs.org/react-is/-/react-is-17.0.1.tgz",
"resolved": "https://registry.npmjs.org/react-is/-/react-is-17.0.1.tgz",
"integrity": "sha512-NAnt2iGDXohE5LI7uBnLnqvLQMtzhkiAOLXTmv+qnF9Ky7xAPcX8Up/xWIhxvLVGJvuLiNc4xQLtuqDRzb4fSA=="
"integrity": "sha512-NAnt2iGDXohE5LI7uBnLnqvLQMtzhkiAOLXTmv+qnF9Ky7xAPcX8Up/xWIhxvLVGJvuLiNc4xQLtuqDRzb4fSA=="
},
},
"react-lifecycles-compat": {
"version": "3.0.4",
"resolved": "https://registry.npmjs.org/react-lifecycles-compat/-/react-lifecycles-compat-3.0.4.tgz",
"integrity": "sha512-fBASbA6LnOU9dOU2eW7aQ8xmYBSXUIWr+UmF9b1efZBazGNO+rcXT/icdKnYm2pTwcRylVUYwW7H1PHfLekVzA=="
},
"react-overlays": {
"version": "5.0.1",
"resolved": "https://registry.npmjs.org/react-overlays/-/react-overlays-5.0.1.tgz",
"integrity": "sha512-plwUJieTBbLSrgvQ4OkkbTD/deXgxiJdNuKzo6n1RWE3OVnQIU5hffCGS/nvIuu6LpXFs2majbzaXY8rcUVdWA==",
"requires": {
"@babel/runtime": "^7.13.8",
"@popperjs/core": "^2.8.6",
"@restart/hooks": "^0.3.26",
"@types/warning": "^3.0.0",
"dom-helpers": "^5.2.0",
"prop-types": "^15.7.2",
"uncontrollable": "^7.2.1",
"warning": "^4.0.3"
}
},
"react-refresh": {
"react-refresh": {
"version": "0.8.3",
"version": "0.8.3",
"resolved": "https://registry.npmjs.org/react-refresh/-/react-refresh-0.8.3.tgz",
"resolved": "https://registry.npmjs.org/react-refresh/-/react-refresh-0.8.3.tgz",
...
@@ -31415,6 +31826,17 @@
...
@@ -31415,6 +31826,17 @@
"workbox-webpack-plugin": "5.1.4"
"workbox-webpack-plugin": "5.1.4"
}
}
},
},
"react-transition-group": {
"version": "4.4.1",
"resolved": "https://registry.npmjs.org/react-transition-group/-/react-transition-group-4.4.1.tgz",
"integrity": "sha512-Djqr7OQ2aPUiYurhPalTrVy9ddmFCCzwhqQmtN+J3+3DzLO209Fdr70QrN8Z3DsglWql6iY1lDWAfpFiBtuKGw==",
"requires": {
"@babel/runtime": "^7.5.5",
"dom-helpers": "^5.0.1",
"loose-envify": "^1.4.0",
"prop-types": "^15.6.2"
}
},
"read-pkg": {
"read-pkg": {
"version": "2.0.0",
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-2.0.0.tgz",
"resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-2.0.0.tgz",
...
@@ -33902,6 +34324,17 @@
...
@@ -33902,6 +34324,17 @@
"integrity": "sha512-V+evlYHZnQkaz8TRBuxTA92yZBPotr5H+WhQ7bD3hZUndx5tGOa1fuCgeSjxAzM1RiN5IzvadIXTVefuuwZCRg==",
"integrity": "sha512-V+evlYHZnQkaz8TRBuxTA92yZBPotr5H+WhQ7bD3hZUndx5tGOa1fuCgeSjxAzM1RiN5IzvadIXTVefuuwZCRg==",
"peer": true
"peer": true
},
},
"uncontrollable": {
"version": "7.2.1",
"resolved": "https://registry.npmjs.org/uncontrollable/-/uncontrollable-7.2.1.tgz",
"integrity": "sha512-svtcfoTADIB0nT9nltgjujTi7BzVmwjZClOmskKu/E8FW9BXzg9os8OLr4f8Dlnk0rYWJIWr4wv9eKUXiQvQwQ==",
"requires": {
"@babel/runtime": "^7.6.3",
"@types/react": ">=16.9.11",
"invariant": "^2.2.4",
"react-lifecycles-compat": "^3.0.4"
}
},
"unicode-canonical-property-names-ecmascript": {
"unicode-canonical-property-names-ecmascript": {
"version": "1.0.4",
"version": "1.0.4",
"resolved": "https://registry.npmjs.org/unicode-canonical-property-names-ecmascript/-/unicode-canonical-property-names-ecmascript-1.0.4.tgz",
"resolved": "https://registry.npmjs.org/unicode-canonical-property-names-ecmascript/-/unicode-canonical-property-names-ecmascript-1.0.4.tgz",
...
@@ -34239,6 +34672,14 @@
...
@@ -34239,6 +34672,14 @@
"makeerror": "1.0.x"
"makeerror": "1.0.x"
}
}
},
},
"warning": {
"version": "4.0.3",
"resolved": "https://registry.npmjs.org/warning/-/warning-4.0.3.tgz",
"integrity": "sha512-rpJyN222KWIvHJ/F53XSZv0Zl/accqHR8et1kpaMTD/fLCRxtV8iX8czMzY7sVZupTI3zcUTg8eycS2kNF9l6w==",
"requires": {
"loose-envify": "^1.0.0"
}
},
"watchpack": {
"watchpack": {
"version": "1.7.5",
"version": "1.7.5",
"resolved": "https://registry.npmjs.org/watchpack/-/watchpack-1.7.5.tgz",
"resolved": "https://registry.npmjs.org/watchpack/-/watchpack-1.7.5.tgz",
src/component/Main.jsx
View file @
565f3c48
...
@@ -25,7 +25,7 @@ export default function Main() {
...
@@ -25,7 +25,7 @@ export default function Main() {
<
AuthRoute
exact
path=
"/products/new"
>
<
AuthRoute
exact
path=
"/products/new"
>
<
ProductForm
method=
"POST"
/>
<
ProductForm
method=
"POST"
/>
</
AuthRoute
>
</
AuthRoute
>
<
AuthRoute
exact
path=
"/products/edit/:
sku
"
>
<
AuthRoute
exact
path=
"/products/edit/:
productId
"
>
<
ProductForm
method=
"PUT"
/>
<
ProductForm
method=
"PUT"
/>
</
AuthRoute
>
</
AuthRoute
>
<
AuthRoute
<
AuthRoute
...
@@ -39,7 +39,9 @@ export default function Main() {
...
@@ -39,7 +39,9 @@ export default function Main() {
<
Redirect
to=
"/products"
/>
<
Redirect
to=
"/products"
/>
</
AuthRoute
>
</
AuthRoute
>
<
AuthRoute
path=
"/searchResults"
component=
{
SearchResults
}
/>
<
AuthRoute
path=
"/searchResults"
component=
{
SearchResults
}
/>
<
AuthRoute
>
404 PAGE
</
AuthRoute
>
<
AuthRoute
>
<
h1
>
404 Page Not Found
</
h1
>
</
AuthRoute
>
</
Switch
>
</
Switch
>
</
div
>
</
div
>
);
);
...
...
src/component/ProductForm.jsx
View file @
565f3c48
import
React
,
{
useEffect
,
useState
}
from
"react"
;
import
React
,
{
useEffect
,
useState
}
from
"react"
;
import
{
useHistory
,
useParams
}
from
"react-router"
;
import
{
useHistory
,
useParams
}
from
"react-router"
;
import
Config
from
"../config"
;
import
emptyProduct
from
"../emptProduct"
;
import
Config
from
'../config'
;
const
emptyForm
=
{
const
emptyForm
=
{
sku
:
""
,
...
emptyProduct
,
upc
:
""
,
imageFile
:
""
,
productName
:
""
,
brand
:
""
,
category
:
""
,
price
:
0.0
,
availableStock
:
0
,
productDescription
:
""
,
productImageUrl
:
""
,
productImage
:
""
,
};
};
ProductForm
.
defaultProps
=
{
ProductForm
.
defaultProps
=
{
...
@@ -21,27 +14,33 @@ ProductForm.defaultProps = {
...
@@ -21,27 +14,33 @@ ProductForm.defaultProps = {
export
default
function
ProductForm
(
props
)
{
export
default
function
ProductForm
(
props
)
{
const
{
method
}
=
props
;
const
{
method
}
=
props
;
const
[
form
,
setForm
]
=
useState
(
emptyForm
);
const
[
form
,
setForm
]
=
useState
({
...
emptyForm
});
const
[
imageMode
,
setImageMode
]
=
useState
(
"url"
);
const
[
errors
,
setErrors
]
=
useState
([]);
const
[
errors
,
setErrors
]
=
useState
([]);
const
history
=
useHistory
();
const
history
=
useHistory
();
const
{
sku
}
=
useParams
(
);
const
{
productId
}
=
useParams
(
"productId"
);
useEffect
(()
=>
{
useEffect
(()
=>
{
fetch
(
`
${
Config
.
inventoryUrl
}
/
${
sku
}
`
).
then
((
res
)
=>
{
fetch
(
`
http://localhost:8080/api/products/
${
productId
}
/
`
).
then
((
res
)
=>
{
if
(
res
.
ok
)
{
if
(
res
.
ok
)
{
res
console
.
log
(
res
);
.
json
()
res
.
json
().
then
((
data
)
=>
{
.
then
((
data
)
=>
Object
.
keys
(
data
).
forEach
((
key
)
=>
{
setForm
({
...
data
,
availableStock
:
data
.
stock
,
productImage
:
""
})
if
(
data
[
key
]
===
null
)
{
)
;
data
[
key
]
=
""
;
}
}
});
});
},
[
sku
]);
console
.
log
(
data
);
setForm
({
...
data
,
availableStock
:
data
.
stock
});
});
}
});
},
[
productId
]);
const
validate
=
()
=>
{
const
validate
=
()
=>
{
setErrors
([]);
setErrors
([]);
const
errs
=
[];
const
errs
=
[];
console
.
log
(
form
)
if
(
form
.
sku
.
length
<
3
)
{
if
(
form
.
sku
.
length
<
3
)
{
errs
.
push
(
"SKU must be at least 3 characters"
);
errs
.
push
(
"SKU must be at least 3 characters"
);
}
}
...
@@ -70,12 +69,17 @@ export default function ProductForm(props) {
...
@@ -70,12 +69,17 @@ export default function ProductForm(props) {
const
onSubmit
=
(
e
)
=>
{
const
onSubmit
=
(
e
)
=>
{
e
.
preventDefault
();
e
.
preventDefault
();
validate
();
validate
();
if
(
imageMode
===
"url"
)
{
delete
form
.
imageFile
;
}
else
{
delete
form
.
prodImgUrl
;
}
if
(
errors
.
length
===
0
)
{
if
(
errors
.
length
===
0
)
{
// console.log(form);
// console.log(form);
const
url
=
const
url
=
method
===
"PUT"
method
===
"PUT"
?
`
${
Config
.
inventoryUrl
}
/
${
sku
}
`
?
`
${
Config
.
inventoryUrl
}
/
${
productId
}
`
:
`
${
Config
.
inventoryUrl
}
`
;
:
`
${
Config
.
inventoryUrl
}
`
;
fetch
(
url
,
{
fetch
(
url
,
{
method
,
method
,
...
@@ -124,6 +128,7 @@ export default function ProductForm(props) {
...
@@ -124,6 +128,7 @@ export default function ProductForm(props) {
type=
"text"
type=
"text"
className=
"form-control"
className=
"form-control"
id=
"productSku"
id=
"productSku"
disabled=
{
method
===
"PUT"
?
true
:
false
}
value=
{
form
.
sku
}
value=
{
form
.
sku
}
onChange=
{
(
e
)
=>
setForm
({
...
form
,
sku
:
e
.
target
.
value
})
}
onChange=
{
(
e
)
=>
setForm
({
...
form
,
sku
:
e
.
target
.
value
})
}
/>
/>
...
@@ -191,12 +196,12 @@ export default function ProductForm(props) {
...
@@ -191,12 +196,12 @@ export default function ProductForm(props) {
</
div
>
</
div
>
</
div
>
</
div
>
<
div
className=
"col-6"
>
<
div
className=
"col-6"
>
<
label
htmlFor=
"productDesc
ription
"
className=
"form-label"
>
<
label
htmlFor=
"productDesc"
className=
"form-label"
>
Description
Description
</
label
>
</
label
>
<
textarea
<
textarea
name=
"productDesc
r
iption"
name=
"productDesciption"
id=
"productDesc
ription
"
id=
"productDesc"
cols=
"40"
cols=
"40"
rows=
"7"
rows=
"7"
className=
"form-control"
className=
"form-control"
...
@@ -229,51 +234,70 @@ export default function ProductForm(props) {
...
@@ -229,51 +234,70 @@ export default function ProductForm(props) {
<
input
<
input
disabled=
{
method
===
"PUT"
?
true
:
false
}
disabled=
{
method
===
"PUT"
?
true
:
false
}
required
required
name=
"
s
tock"
name=
"
availableS
tock"
type=
"number"
type=
"number"
className=
"form-control"
className=
"form-control"
id=
"stock"
id=
"stock"
value=
{
form
.
availableStock
}
value=
{
form
.
availableStock
}
onChange=
{
(
e
)
=>
onChange=
{
(
e
)
=>
setForm
({
...
form
,
availableStock
:
e
.
target
.
value
})
}
setForm
({
...
form
,
availableStock
:
e
.
target
.
value
})
}
/>
/>
</
div
>
</
div
>
</
div
>
</
div
>
{
imageMode
===
"upload"
?
(
<
div
className=
"row mt-3"
>
<
div
className=
"row mt-3"
>
<
div
>
<
label
htmlFor=
"productImage"
className=
"form-label"
>
<
label
htmlFor=
"productImage"
className=
"form-label"
>
Product Imag
e
Image Fil
e
</
label
>
</
label
>
<
input
<
input
id=
"productImageUrl
"
id=
"productImage
"
name=
"productImageUrl
"
name=
"imageFile
"
className=
"form-control form-control-lg"
className=
"form-control form-control-lg"
type=
"url"
type=
"file"
placeholder=
"Enter image URL here or upload image below..."
value=
{
form
.
imageFile
}
value=
{
form
.
productImageUrl
}
onChange=
{
(
e
)
=>
onChange=
{
(
e
)
=>
setForm
({
setForm
({
...
form
,
imageFile
:
e
.
target
.
value
})
...
form
,
productImageUrl
:
e
.
target
.
value
,
productImage
:
""
,
})
}
}
></
input
>
></
input
>
<
button
type=
"button"
className=
"btn btn-outline-primary mt-3"
onClick=
{
()
=>
{
setForm
({
...
form
,
imageFile
:
""
});
setImageMode
(
"url"
);
}
}
>
Specify Image URL
</
button
>
</
div
>
</
div
>
)
:
null
}
{
imageMode
===
"url"
?
(
<
div
className=
"row mt-3"
>
<
div
>
<
label
htmlFor=
"prodImgUrl"
className=
"form-label"
>
Image URL
</
label
>
<
input
<
input
id=
"productImage
"
name=
"productImageUrl
"
name=
"productImage
"
type=
"text
"
className=
"form-control form-control-lg
"
className=
"form-control
"
type=
"file
"
id=
"prodImgUrl
"
value=
{
form
.
productImage
}
value=
{
form
.
productImageUrl
}
onChange=
{
(
e
)
=>
onChange=
{
(
e
)
=>
setForm
({
setForm
({
...
form
,
productImageUrl
:
e
.
target
.
value
})
...
form
,
productImage
:
e
.
target
.
value
,
productImageUrl
:
""
,
})
}
}
></
input
>
/>
<
button
type=
"button"
className=
"btn btn-outline-primary mt-3"
onClick=
{
()
=>
setImageMode
(
"upload"
)
}
>
Upload Image
</
button
>
</
div
>
</
div
>
</
div
>
)
:
null
}
<
div
className=
"row mt-3"
>
<
div
className=
"row mt-3"
>
<
div
className=
"col-12"
>
<
div
className=
"col-12"
>
...
...
src/component/ProductGrid.jsx
View file @
565f3c48
...
@@ -3,7 +3,8 @@ import Product from "./Product.jsx";
...
@@ -3,7 +3,8 @@ import Product from "./Product.jsx";
import
{
Col
,
Container
,
Row
}
from
"react-bootstrap"
;
import
{
Col
,
Container
,
Row
}
from
"react-bootstrap"
;
import
"./../styles/ProductGrid.css"
;
import
"./../styles/ProductGrid.css"
;
import
Config
from
"../config.js"
;
import
Config
from
"../config.js"
;
import
{
set
}
from
"react-hook-form"
;
import
{
Link
}
from
"react-router-dom"
;
export
default
function
ProductGrid
({
productData
})
{
export
default
function
ProductGrid
({
productData
})
{
const
[
products
,
setProducts
]
=
useState
([]);
const
[
products
,
setProducts
]
=
useState
([]);
...
@@ -18,11 +19,16 @@ export default function ProductGrid({ productData }) {
...
@@ -18,11 +19,16 @@ export default function ProductGrid({ productData }) {
useEffect
(()
=>
fetchProducts
(),
[]);
useEffect
(()
=>
fetchProducts
(),
[]);
return
(
return
(
<
div
>
<
div
class=
"container flex-column d-flex justify-content-center"
>
<
div
className=
"container mt-3 d-flex justify-content-between align-items-center"
>
<
h1
id=
"title"
className=
"text-center"
>
<
h1
id=
"title"
className=
"text-center"
>
Inventory
Inventory
</
h1
>
</
h1
>
<
Container
id=
"prod-grid"
className=
"mt-3"
>
<
Link
type=
"link"
className=
"btn btn-success"
to=
"/products/new"
>
+ New Product
</
Link
>
</
div
>
<
Container
id=
"prod-grid"
className=
"mt-3 mx-auto"
>
<
Row
xs=
{
1
}
sm=
{
2
}
md=
{
3
}
lg=
{
4
}
>
<
Row
xs=
{
1
}
sm=
{
2
}
md=
{
3
}
lg=
{
4
}
>
{
products
.
map
((
product
)
=>
{
{
products
.
map
((
product
)
=>
{
return
(
return
(
...
...
src/emptProduct.js
0 → 100644
View file @
565f3c48
const
emptyProduct
=
{
sku
:
""
,
upc
:
""
,
productName
:
""
,
brand
:
""
,
category
:
""
,
price
:
0.0
,
availableStock
:
0
,
productDesciption
:
""
,
productImageUrl
:
""
,
};
export
default
emptyProduct
;
yarn.lock
View file @
565f3c48
This source diff could not be displayed because it is too large. You can
view the blob
instead.
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment