diff --git a/angular.json b/angular.json
index 78adc84..29f760e 100644
--- a/angular.json
+++ b/angular.json
@@ -31,6 +31,7 @@
"src/assets"
],
"styles": [
+ "@angular/material/prebuilt-themes/pink-bluegrey.css",
"src/styles.scss"
],
"scripts": []
@@ -99,6 +100,7 @@
"src/assets"
],
"styles": [
+ "@angular/material/prebuilt-themes/pink-bluegrey.css",
"src/styles.scss"
],
"scripts": []
@@ -106,5 +108,8 @@
}
}
}
+ },
+ "cli": {
+ "analytics": false
}
}
diff --git a/package-lock.json b/package-lock.json
index 771611c..f46170e 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -9,10 +9,12 @@
"version": "0.0.0",
"dependencies": {
"@angular/animations": "^16.1.1",
+ "@angular/cdk": "^16.1.1",
"@angular/common": "^16.1.1",
"@angular/compiler": "^16.1.1",
"@angular/core": "^16.1.1",
"@angular/forms": "^16.1.1",
+ "@angular/material": "^16.1.1",
"@angular/platform-browser": "^16.1.1",
"@angular/platform-browser-dynamic": "^16.1.1",
"@angular/router": "^16.1.1",
@@ -463,6 +465,22 @@
"@angular/core": "16.1.1"
}
},
+ "node_modules/@angular/cdk": {
+ "version": "16.1.1",
+ "resolved": "https://registry.npmjs.org/@angular/cdk/-/cdk-16.1.1.tgz",
+ "integrity": "sha512-nVIeooGspNLT8XySfGZ4e8HYO/TsFemrjNVKb3G9+7KxY4tvE5dkGbJjx5TStEQoSzjfNbCscO89lHIaQ7+aMA==",
+ "dependencies": {
+ "tslib": "^2.3.0"
+ },
+ "optionalDependencies": {
+ "parse5": "^7.1.2"
+ },
+ "peerDependencies": {
+ "@angular/common": "^16.0.0 || ^17.0.0",
+ "@angular/core": "^16.0.0 || ^17.0.0",
+ "rxjs": "^6.5.3 || ^7.4.0"
+ }
+ },
"node_modules/@angular/cli": {
"version": "16.1.0",
"resolved": "https://registry.npmjs.org/@angular/cli/-/cli-16.1.0.tgz",
@@ -606,6 +624,70 @@
"rxjs": "^6.5.3 || ^7.4.0"
}
},
+ "node_modules/@angular/material": {
+ "version": "16.1.1",
+ "resolved": "https://registry.npmjs.org/@angular/material/-/material-16.1.1.tgz",
+ "integrity": "sha512-fVFsxYdCQ9PtDR2Cx6q7XqRFnMKz/OGUaC0pPa/RVuBnUbC+GaapDHd4Suy8NF/skX/xl46rZVEKrRumaWM8FA==",
+ "dependencies": {
+ "@material/animation": "15.0.0-canary.90291f2e2.0",
+ "@material/auto-init": "15.0.0-canary.90291f2e2.0",
+ "@material/banner": "15.0.0-canary.90291f2e2.0",
+ "@material/base": "15.0.0-canary.90291f2e2.0",
+ "@material/button": "15.0.0-canary.90291f2e2.0",
+ "@material/card": "15.0.0-canary.90291f2e2.0",
+ "@material/checkbox": "15.0.0-canary.90291f2e2.0",
+ "@material/chips": "15.0.0-canary.90291f2e2.0",
+ "@material/circular-progress": "15.0.0-canary.90291f2e2.0",
+ "@material/data-table": "15.0.0-canary.90291f2e2.0",
+ "@material/density": "15.0.0-canary.90291f2e2.0",
+ "@material/dialog": "15.0.0-canary.90291f2e2.0",
+ "@material/dom": "15.0.0-canary.90291f2e2.0",
+ "@material/drawer": "15.0.0-canary.90291f2e2.0",
+ "@material/elevation": "15.0.0-canary.90291f2e2.0",
+ "@material/fab": "15.0.0-canary.90291f2e2.0",
+ "@material/feature-targeting": "15.0.0-canary.90291f2e2.0",
+ "@material/floating-label": "15.0.0-canary.90291f2e2.0",
+ "@material/form-field": "15.0.0-canary.90291f2e2.0",
+ "@material/icon-button": "15.0.0-canary.90291f2e2.0",
+ "@material/image-list": "15.0.0-canary.90291f2e2.0",
+ "@material/layout-grid": "15.0.0-canary.90291f2e2.0",
+ "@material/line-ripple": "15.0.0-canary.90291f2e2.0",
+ "@material/linear-progress": "15.0.0-canary.90291f2e2.0",
+ "@material/list": "15.0.0-canary.90291f2e2.0",
+ "@material/menu": "15.0.0-canary.90291f2e2.0",
+ "@material/menu-surface": "15.0.0-canary.90291f2e2.0",
+ "@material/notched-outline": "15.0.0-canary.90291f2e2.0",
+ "@material/radio": "15.0.0-canary.90291f2e2.0",
+ "@material/ripple": "15.0.0-canary.90291f2e2.0",
+ "@material/rtl": "15.0.0-canary.90291f2e2.0",
+ "@material/segmented-button": "15.0.0-canary.90291f2e2.0",
+ "@material/select": "15.0.0-canary.90291f2e2.0",
+ "@material/shape": "15.0.0-canary.90291f2e2.0",
+ "@material/slider": "15.0.0-canary.90291f2e2.0",
+ "@material/snackbar": "15.0.0-canary.90291f2e2.0",
+ "@material/switch": "15.0.0-canary.90291f2e2.0",
+ "@material/tab": "15.0.0-canary.90291f2e2.0",
+ "@material/tab-bar": "15.0.0-canary.90291f2e2.0",
+ "@material/tab-indicator": "15.0.0-canary.90291f2e2.0",
+ "@material/tab-scroller": "15.0.0-canary.90291f2e2.0",
+ "@material/textfield": "15.0.0-canary.90291f2e2.0",
+ "@material/theme": "15.0.0-canary.90291f2e2.0",
+ "@material/tooltip": "15.0.0-canary.90291f2e2.0",
+ "@material/top-app-bar": "15.0.0-canary.90291f2e2.0",
+ "@material/touch-target": "15.0.0-canary.90291f2e2.0",
+ "@material/typography": "15.0.0-canary.90291f2e2.0",
+ "tslib": "^2.3.0"
+ },
+ "peerDependencies": {
+ "@angular/animations": "^16.0.0 || ^17.0.0",
+ "@angular/cdk": "16.1.1",
+ "@angular/common": "^16.0.0 || ^17.0.0",
+ "@angular/core": "^16.0.0 || ^17.0.0",
+ "@angular/forms": "^16.0.0 || ^17.0.0",
+ "@angular/platform-browser": "^16.0.0 || ^17.0.0",
+ "rxjs": "^6.5.3 || ^7.4.0"
+ }
+ },
"node_modules/@angular/platform-browser": {
"version": "16.1.1",
"resolved": "https://registry.npmjs.org/@angular/platform-browser/-/platform-browser-16.1.1.tgz",
@@ -2996,6 +3078,758 @@
"integrity": "sha512-Hcv+nVC0kZnQ3tD9GVu5xSMR4VVYOteQIr/hwFPVEvPdlXqgGEuRjiheChHgdM+JyqdgNcmzZOX/tnl0JOiI7A==",
"dev": true
},
+ "node_modules/@material/animation": {
+ "version": "15.0.0-canary.90291f2e2.0",
+ "resolved": "https://registry.npmjs.org/@material/animation/-/animation-15.0.0-canary.90291f2e2.0.tgz",
+ "integrity": "sha512-tr1y4KYZ2Ml9lFU9b91r5jivDCbh0N3Zv6VFe0frphztlZO5Lqx7MCxsliQ7NwQjqpXg3MkD6ZusVNvnMyo+LA==",
+ "dependencies": {
+ "tslib": "^2.1.0"
+ }
+ },
+ "node_modules/@material/auto-init": {
+ "version": "15.0.0-canary.90291f2e2.0",
+ "resolved": "https://registry.npmjs.org/@material/auto-init/-/auto-init-15.0.0-canary.90291f2e2.0.tgz",
+ "integrity": "sha512-ZslBlje2LajaL5d7JCxUoWCKOBOsZYT33CamqPoDeY0Cjl77t3O+8B9YPHF8libytI8j9lrrDrTItQr53PHeHw==",
+ "dependencies": {
+ "@material/base": "15.0.0-canary.90291f2e2.0",
+ "tslib": "^2.1.0"
+ }
+ },
+ "node_modules/@material/banner": {
+ "version": "15.0.0-canary.90291f2e2.0",
+ "resolved": "https://registry.npmjs.org/@material/banner/-/banner-15.0.0-canary.90291f2e2.0.tgz",
+ "integrity": "sha512-mVtGop9rBXRD6UYkMD7y+OJwd3MA73w7BJ/oJIKFij2q2fn/5hZba6vQ6d6YGUGv+iJPP/S/HaiMQuRE5yyoqA==",
+ "dependencies": {
+ "@material/base": "15.0.0-canary.90291f2e2.0",
+ "@material/button": "15.0.0-canary.90291f2e2.0",
+ "@material/dom": "15.0.0-canary.90291f2e2.0",
+ "@material/elevation": "15.0.0-canary.90291f2e2.0",
+ "@material/feature-targeting": "15.0.0-canary.90291f2e2.0",
+ "@material/ripple": "15.0.0-canary.90291f2e2.0",
+ "@material/rtl": "15.0.0-canary.90291f2e2.0",
+ "@material/shape": "15.0.0-canary.90291f2e2.0",
+ "@material/theme": "15.0.0-canary.90291f2e2.0",
+ "@material/tokens": "15.0.0-canary.90291f2e2.0",
+ "@material/typography": "15.0.0-canary.90291f2e2.0",
+ "tslib": "^2.1.0"
+ }
+ },
+ "node_modules/@material/base": {
+ "version": "15.0.0-canary.90291f2e2.0",
+ "resolved": "https://registry.npmjs.org/@material/base/-/base-15.0.0-canary.90291f2e2.0.tgz",
+ "integrity": "sha512-DNelmohDScmGvWWS/J05dkIJb/dKOVkA6s0URgPrnTFKXNSavPsmwj7hWzYB5kusz3ZrXJBYBJsE6VqkRRXl0w==",
+ "dependencies": {
+ "tslib": "^2.1.0"
+ }
+ },
+ "node_modules/@material/button": {
+ "version": "15.0.0-canary.90291f2e2.0",
+ "resolved": "https://registry.npmjs.org/@material/button/-/button-15.0.0-canary.90291f2e2.0.tgz",
+ "integrity": "sha512-m3YqCh33kcPGYehCKviDy7RxQIEM2m8Exo6AswPPsxd95jSN3rAeF+pXopoXW5QTOqyKHqHymTKTRYYvwvZHYg==",
+ "dependencies": {
+ "@material/density": "15.0.0-canary.90291f2e2.0",
+ "@material/dom": "15.0.0-canary.90291f2e2.0",
+ "@material/elevation": "15.0.0-canary.90291f2e2.0",
+ "@material/feature-targeting": "15.0.0-canary.90291f2e2.0",
+ "@material/focus-ring": "15.0.0-canary.90291f2e2.0",
+ "@material/ripple": "15.0.0-canary.90291f2e2.0",
+ "@material/rtl": "15.0.0-canary.90291f2e2.0",
+ "@material/shape": "15.0.0-canary.90291f2e2.0",
+ "@material/theme": "15.0.0-canary.90291f2e2.0",
+ "@material/tokens": "15.0.0-canary.90291f2e2.0",
+ "@material/touch-target": "15.0.0-canary.90291f2e2.0",
+ "@material/typography": "15.0.0-canary.90291f2e2.0",
+ "tslib": "^2.1.0"
+ }
+ },
+ "node_modules/@material/card": {
+ "version": "15.0.0-canary.90291f2e2.0",
+ "resolved": "https://registry.npmjs.org/@material/card/-/card-15.0.0-canary.90291f2e2.0.tgz",
+ "integrity": "sha512-8Z8KQDmEIwt5IK0n+9C9Be9p4mWLKBXILbH+c6XcMCTemmUxH6cTTax1MwuAmqBGuIq3WE3g7qDpdzjFLTC2kw==",
+ "dependencies": {
+ "@material/dom": "15.0.0-canary.90291f2e2.0",
+ "@material/elevation": "15.0.0-canary.90291f2e2.0",
+ "@material/feature-targeting": "15.0.0-canary.90291f2e2.0",
+ "@material/ripple": "15.0.0-canary.90291f2e2.0",
+ "@material/rtl": "15.0.0-canary.90291f2e2.0",
+ "@material/shape": "15.0.0-canary.90291f2e2.0",
+ "@material/theme": "15.0.0-canary.90291f2e2.0",
+ "@material/tokens": "15.0.0-canary.90291f2e2.0",
+ "tslib": "^2.1.0"
+ }
+ },
+ "node_modules/@material/checkbox": {
+ "version": "15.0.0-canary.90291f2e2.0",
+ "resolved": "https://registry.npmjs.org/@material/checkbox/-/checkbox-15.0.0-canary.90291f2e2.0.tgz",
+ "integrity": "sha512-hCilHX0vLedMgeRSOskf+JjdfLIUvEg597LEkTJHnTtJkhwypvol8OwP3eqz3TyJ3qGimIi/sFPKdMBn1Uk4AQ==",
+ "dependencies": {
+ "@material/animation": "15.0.0-canary.90291f2e2.0",
+ "@material/base": "15.0.0-canary.90291f2e2.0",
+ "@material/density": "15.0.0-canary.90291f2e2.0",
+ "@material/dom": "15.0.0-canary.90291f2e2.0",
+ "@material/feature-targeting": "15.0.0-canary.90291f2e2.0",
+ "@material/focus-ring": "15.0.0-canary.90291f2e2.0",
+ "@material/ripple": "15.0.0-canary.90291f2e2.0",
+ "@material/rtl": "15.0.0-canary.90291f2e2.0",
+ "@material/theme": "15.0.0-canary.90291f2e2.0",
+ "@material/touch-target": "15.0.0-canary.90291f2e2.0",
+ "tslib": "^2.1.0"
+ }
+ },
+ "node_modules/@material/chips": {
+ "version": "15.0.0-canary.90291f2e2.0",
+ "resolved": "https://registry.npmjs.org/@material/chips/-/chips-15.0.0-canary.90291f2e2.0.tgz",
+ "integrity": "sha512-TMtlzuadWP/YMRYg8mpqmaD9M9GzRL5ulHHgYO5F4kaZmI3L+3zvaPvUme/x5qwPkIJUO9S21NxxGAsp9X+ZJQ==",
+ "dependencies": {
+ "@material/animation": "15.0.0-canary.90291f2e2.0",
+ "@material/base": "15.0.0-canary.90291f2e2.0",
+ "@material/checkbox": "15.0.0-canary.90291f2e2.0",
+ "@material/density": "15.0.0-canary.90291f2e2.0",
+ "@material/dom": "15.0.0-canary.90291f2e2.0",
+ "@material/elevation": "15.0.0-canary.90291f2e2.0",
+ "@material/feature-targeting": "15.0.0-canary.90291f2e2.0",
+ "@material/focus-ring": "15.0.0-canary.90291f2e2.0",
+ "@material/ripple": "15.0.0-canary.90291f2e2.0",
+ "@material/rtl": "15.0.0-canary.90291f2e2.0",
+ "@material/shape": "15.0.0-canary.90291f2e2.0",
+ "@material/theme": "15.0.0-canary.90291f2e2.0",
+ "@material/tokens": "15.0.0-canary.90291f2e2.0",
+ "@material/touch-target": "15.0.0-canary.90291f2e2.0",
+ "@material/typography": "15.0.0-canary.90291f2e2.0",
+ "safevalues": "^0.3.4",
+ "tslib": "^2.1.0"
+ }
+ },
+ "node_modules/@material/circular-progress": {
+ "version": "15.0.0-canary.90291f2e2.0",
+ "resolved": "https://registry.npmjs.org/@material/circular-progress/-/circular-progress-15.0.0-canary.90291f2e2.0.tgz",
+ "integrity": "sha512-znCz3cXC8rmC+1k1ZEeZNOhngm7O7kVG2PoANaE79NN9taDtCTyBGGeocJ4Kza3tb01vxJ2/tuQXC39GNFkHFg==",
+ "dependencies": {
+ "@material/animation": "15.0.0-canary.90291f2e2.0",
+ "@material/base": "15.0.0-canary.90291f2e2.0",
+ "@material/dom": "15.0.0-canary.90291f2e2.0",
+ "@material/feature-targeting": "15.0.0-canary.90291f2e2.0",
+ "@material/progress-indicator": "15.0.0-canary.90291f2e2.0",
+ "@material/rtl": "15.0.0-canary.90291f2e2.0",
+ "@material/theme": "15.0.0-canary.90291f2e2.0",
+ "tslib": "^2.1.0"
+ }
+ },
+ "node_modules/@material/data-table": {
+ "version": "15.0.0-canary.90291f2e2.0",
+ "resolved": "https://registry.npmjs.org/@material/data-table/-/data-table-15.0.0-canary.90291f2e2.0.tgz",
+ "integrity": "sha512-9YU6KkOeKs2ARPXZdg7Cv6nPwLkEyBIN331ZB92apcbQpTMJMhR3uuW8SSw4p7aXCE6CJjREsCc0KuYAnFSa2A==",
+ "dependencies": {
+ "@material/animation": "15.0.0-canary.90291f2e2.0",
+ "@material/base": "15.0.0-canary.90291f2e2.0",
+ "@material/checkbox": "15.0.0-canary.90291f2e2.0",
+ "@material/density": "15.0.0-canary.90291f2e2.0",
+ "@material/dom": "15.0.0-canary.90291f2e2.0",
+ "@material/elevation": "15.0.0-canary.90291f2e2.0",
+ "@material/feature-targeting": "15.0.0-canary.90291f2e2.0",
+ "@material/icon-button": "15.0.0-canary.90291f2e2.0",
+ "@material/linear-progress": "15.0.0-canary.90291f2e2.0",
+ "@material/list": "15.0.0-canary.90291f2e2.0",
+ "@material/menu": "15.0.0-canary.90291f2e2.0",
+ "@material/rtl": "15.0.0-canary.90291f2e2.0",
+ "@material/select": "15.0.0-canary.90291f2e2.0",
+ "@material/shape": "15.0.0-canary.90291f2e2.0",
+ "@material/theme": "15.0.0-canary.90291f2e2.0",
+ "@material/tokens": "15.0.0-canary.90291f2e2.0",
+ "@material/touch-target": "15.0.0-canary.90291f2e2.0",
+ "@material/typography": "15.0.0-canary.90291f2e2.0",
+ "tslib": "^2.1.0"
+ }
+ },
+ "node_modules/@material/density": {
+ "version": "15.0.0-canary.90291f2e2.0",
+ "resolved": "https://registry.npmjs.org/@material/density/-/density-15.0.0-canary.90291f2e2.0.tgz",
+ "integrity": "sha512-z2L49vc5tbIGe7tUHwbmzoPvOugsTNVP24WWwBwtg9PRuK4Td5HIsMGYqSzSuwFJvDWQK9Ugvl37jGZSv4vxog==",
+ "dependencies": {
+ "tslib": "^2.1.0"
+ }
+ },
+ "node_modules/@material/dialog": {
+ "version": "15.0.0-canary.90291f2e2.0",
+ "resolved": "https://registry.npmjs.org/@material/dialog/-/dialog-15.0.0-canary.90291f2e2.0.tgz",
+ "integrity": "sha512-n0o4MELpVqJHbJDPBYeXf3xeL9a8hbzHmfXYLDI1MUhDIr4xgSkckKdCRc2IFda/g7kxjAgcUTga9EFWqns2qA==",
+ "dependencies": {
+ "@material/animation": "15.0.0-canary.90291f2e2.0",
+ "@material/base": "15.0.0-canary.90291f2e2.0",
+ "@material/button": "15.0.0-canary.90291f2e2.0",
+ "@material/dom": "15.0.0-canary.90291f2e2.0",
+ "@material/elevation": "15.0.0-canary.90291f2e2.0",
+ "@material/feature-targeting": "15.0.0-canary.90291f2e2.0",
+ "@material/icon-button": "15.0.0-canary.90291f2e2.0",
+ "@material/ripple": "15.0.0-canary.90291f2e2.0",
+ "@material/rtl": "15.0.0-canary.90291f2e2.0",
+ "@material/shape": "15.0.0-canary.90291f2e2.0",
+ "@material/theme": "15.0.0-canary.90291f2e2.0",
+ "@material/tokens": "15.0.0-canary.90291f2e2.0",
+ "@material/touch-target": "15.0.0-canary.90291f2e2.0",
+ "@material/typography": "15.0.0-canary.90291f2e2.0",
+ "tslib": "^2.1.0"
+ }
+ },
+ "node_modules/@material/dom": {
+ "version": "15.0.0-canary.90291f2e2.0",
+ "resolved": "https://registry.npmjs.org/@material/dom/-/dom-15.0.0-canary.90291f2e2.0.tgz",
+ "integrity": "sha512-90JKk/Ncnqn2dKopNxs1uruiiQZzgLTZQF3a8jxa/w3RQd3Ac9ET1KqmaJSfzXaxgebm+1RZfL9lL+ANEfLWwQ==",
+ "dependencies": {
+ "@material/feature-targeting": "15.0.0-canary.90291f2e2.0",
+ "@material/rtl": "15.0.0-canary.90291f2e2.0",
+ "tslib": "^2.1.0"
+ }
+ },
+ "node_modules/@material/drawer": {
+ "version": "15.0.0-canary.90291f2e2.0",
+ "resolved": "https://registry.npmjs.org/@material/drawer/-/drawer-15.0.0-canary.90291f2e2.0.tgz",
+ "integrity": "sha512-7MJbjUxqpQG9J52xWGVKRhSI/0/7Uhf7l2P9VI2WFb5Fz0IeUupXlw2k1Ktb97nxSjMe9OazjtVUgzBNwOad/Q==",
+ "dependencies": {
+ "@material/animation": "15.0.0-canary.90291f2e2.0",
+ "@material/base": "15.0.0-canary.90291f2e2.0",
+ "@material/dom": "15.0.0-canary.90291f2e2.0",
+ "@material/elevation": "15.0.0-canary.90291f2e2.0",
+ "@material/feature-targeting": "15.0.0-canary.90291f2e2.0",
+ "@material/list": "15.0.0-canary.90291f2e2.0",
+ "@material/ripple": "15.0.0-canary.90291f2e2.0",
+ "@material/rtl": "15.0.0-canary.90291f2e2.0",
+ "@material/shape": "15.0.0-canary.90291f2e2.0",
+ "@material/theme": "15.0.0-canary.90291f2e2.0",
+ "@material/typography": "15.0.0-canary.90291f2e2.0",
+ "tslib": "^2.1.0"
+ }
+ },
+ "node_modules/@material/elevation": {
+ "version": "15.0.0-canary.90291f2e2.0",
+ "resolved": "https://registry.npmjs.org/@material/elevation/-/elevation-15.0.0-canary.90291f2e2.0.tgz",
+ "integrity": "sha512-4eYbCDc6IfgfguNmRc5GT4QMCfOEwj+K3BAraABcbpuCzEQ5nCClsVrPbRLfPnhWbQrFc2/eBglB8wsrNTjVBw==",
+ "dependencies": {
+ "@material/animation": "15.0.0-canary.90291f2e2.0",
+ "@material/base": "15.0.0-canary.90291f2e2.0",
+ "@material/feature-targeting": "15.0.0-canary.90291f2e2.0",
+ "@material/rtl": "15.0.0-canary.90291f2e2.0",
+ "@material/theme": "15.0.0-canary.90291f2e2.0",
+ "tslib": "^2.1.0"
+ }
+ },
+ "node_modules/@material/fab": {
+ "version": "15.0.0-canary.90291f2e2.0",
+ "resolved": "https://registry.npmjs.org/@material/fab/-/fab-15.0.0-canary.90291f2e2.0.tgz",
+ "integrity": "sha512-YJuJRdqe57DnJ4qyc04flknuGeN+7Nc9ciFZE6snPn84wD6J1khscb21yRARbALDki18kbfnJNrNbzHkYaEMZg==",
+ "dependencies": {
+ "@material/animation": "15.0.0-canary.90291f2e2.0",
+ "@material/dom": "15.0.0-canary.90291f2e2.0",
+ "@material/elevation": "15.0.0-canary.90291f2e2.0",
+ "@material/feature-targeting": "15.0.0-canary.90291f2e2.0",
+ "@material/focus-ring": "15.0.0-canary.90291f2e2.0",
+ "@material/ripple": "15.0.0-canary.90291f2e2.0",
+ "@material/rtl": "15.0.0-canary.90291f2e2.0",
+ "@material/shape": "15.0.0-canary.90291f2e2.0",
+ "@material/theme": "15.0.0-canary.90291f2e2.0",
+ "@material/tokens": "15.0.0-canary.90291f2e2.0",
+ "@material/touch-target": "15.0.0-canary.90291f2e2.0",
+ "@material/typography": "15.0.0-canary.90291f2e2.0",
+ "tslib": "^2.1.0"
+ }
+ },
+ "node_modules/@material/feature-targeting": {
+ "version": "15.0.0-canary.90291f2e2.0",
+ "resolved": "https://registry.npmjs.org/@material/feature-targeting/-/feature-targeting-15.0.0-canary.90291f2e2.0.tgz",
+ "integrity": "sha512-mjUemPnMLXPooDcPHxxc2uhVUzm7X3NDsE0x0QJnsHDwuejakaRLghVcRDX3x1VmL/p52Eu5HrgW2FryFEiVhQ==",
+ "dependencies": {
+ "tslib": "^2.1.0"
+ }
+ },
+ "node_modules/@material/floating-label": {
+ "version": "15.0.0-canary.90291f2e2.0",
+ "resolved": "https://registry.npmjs.org/@material/floating-label/-/floating-label-15.0.0-canary.90291f2e2.0.tgz",
+ "integrity": "sha512-dYtgNlXkO0H9Vn76oESZZg1KOa2XIOLhVxhV/qPYrhntET534i7TyajmVk54ncuSSoLPZrbrwrhhR2fUJWxZIg==",
+ "dependencies": {
+ "@material/animation": "15.0.0-canary.90291f2e2.0",
+ "@material/base": "15.0.0-canary.90291f2e2.0",
+ "@material/dom": "15.0.0-canary.90291f2e2.0",
+ "@material/feature-targeting": "15.0.0-canary.90291f2e2.0",
+ "@material/rtl": "15.0.0-canary.90291f2e2.0",
+ "@material/theme": "15.0.0-canary.90291f2e2.0",
+ "@material/typography": "15.0.0-canary.90291f2e2.0",
+ "tslib": "^2.1.0"
+ }
+ },
+ "node_modules/@material/focus-ring": {
+ "version": "15.0.0-canary.90291f2e2.0",
+ "resolved": "https://registry.npmjs.org/@material/focus-ring/-/focus-ring-15.0.0-canary.90291f2e2.0.tgz",
+ "integrity": "sha512-U7ERDgHi33ZRmqsiO6syFaWsCUGneltX2sYVtLpQnxME7pKFzi22GdUUIslhgHOFjSMBFF9av2Y79VFbyj9BaQ==",
+ "dependencies": {
+ "@material/dom": "15.0.0-canary.90291f2e2.0",
+ "@material/feature-targeting": "15.0.0-canary.90291f2e2.0",
+ "@material/rtl": "15.0.0-canary.90291f2e2.0"
+ }
+ },
+ "node_modules/@material/form-field": {
+ "version": "15.0.0-canary.90291f2e2.0",
+ "resolved": "https://registry.npmjs.org/@material/form-field/-/form-field-15.0.0-canary.90291f2e2.0.tgz",
+ "integrity": "sha512-KTj+EOobLcPUYy4nR+t0c2Cjvs7jCI4F1w8XuV0bbmSa6Sxh02tMKY2Xa7Lx55A/uUrsUfViMdP60OLzi7HgjQ==",
+ "dependencies": {
+ "@material/base": "15.0.0-canary.90291f2e2.0",
+ "@material/feature-targeting": "15.0.0-canary.90291f2e2.0",
+ "@material/ripple": "15.0.0-canary.90291f2e2.0",
+ "@material/rtl": "15.0.0-canary.90291f2e2.0",
+ "@material/theme": "15.0.0-canary.90291f2e2.0",
+ "@material/typography": "15.0.0-canary.90291f2e2.0",
+ "tslib": "^2.1.0"
+ }
+ },
+ "node_modules/@material/icon-button": {
+ "version": "15.0.0-canary.90291f2e2.0",
+ "resolved": "https://registry.npmjs.org/@material/icon-button/-/icon-button-15.0.0-canary.90291f2e2.0.tgz",
+ "integrity": "sha512-bpqiVPkf/LJEP7iIV5VL9Th0chCIQKTeOuw0mK8HmYucuvqq+k76oPsUcE7mvxRvuKyVh6KJ9fTHAkjse0y7cg==",
+ "dependencies": {
+ "@material/base": "15.0.0-canary.90291f2e2.0",
+ "@material/density": "15.0.0-canary.90291f2e2.0",
+ "@material/dom": "15.0.0-canary.90291f2e2.0",
+ "@material/elevation": "15.0.0-canary.90291f2e2.0",
+ "@material/feature-targeting": "15.0.0-canary.90291f2e2.0",
+ "@material/focus-ring": "15.0.0-canary.90291f2e2.0",
+ "@material/ripple": "15.0.0-canary.90291f2e2.0",
+ "@material/rtl": "15.0.0-canary.90291f2e2.0",
+ "@material/theme": "15.0.0-canary.90291f2e2.0",
+ "@material/touch-target": "15.0.0-canary.90291f2e2.0",
+ "tslib": "^2.1.0"
+ }
+ },
+ "node_modules/@material/image-list": {
+ "version": "15.0.0-canary.90291f2e2.0",
+ "resolved": "https://registry.npmjs.org/@material/image-list/-/image-list-15.0.0-canary.90291f2e2.0.tgz",
+ "integrity": "sha512-JobM4lWsf9grgbqrLuUtJ5fr8BkG02r9c2oFMl5++dtjtLdXWnUIWbiofna8CeqDFQCKXsCk4Jw8ydSKZvj/3A==",
+ "dependencies": {
+ "@material/feature-targeting": "15.0.0-canary.90291f2e2.0",
+ "@material/shape": "15.0.0-canary.90291f2e2.0",
+ "@material/theme": "15.0.0-canary.90291f2e2.0",
+ "@material/typography": "15.0.0-canary.90291f2e2.0",
+ "tslib": "^2.1.0"
+ }
+ },
+ "node_modules/@material/layout-grid": {
+ "version": "15.0.0-canary.90291f2e2.0",
+ "resolved": "https://registry.npmjs.org/@material/layout-grid/-/layout-grid-15.0.0-canary.90291f2e2.0.tgz",
+ "integrity": "sha512-f5DSHGf1ka6vHu+8VoTvcU9NkR8fdN2wHmPnITZHQXPVvR6SKoyDzdAf2gacmiTYy69ZFmmJeMcdfNnbcPPUJw==",
+ "dependencies": {
+ "tslib": "^2.1.0"
+ }
+ },
+ "node_modules/@material/line-ripple": {
+ "version": "15.0.0-canary.90291f2e2.0",
+ "resolved": "https://registry.npmjs.org/@material/line-ripple/-/line-ripple-15.0.0-canary.90291f2e2.0.tgz",
+ "integrity": "sha512-cWpS7l/pFg6cUzL7Lx3ywF6RYF6ESYPkiGlDo9kFERv8lVA2/3m4NF4d9b4kC9h9OWx1b1CaUFRFGD07okgI+g==",
+ "dependencies": {
+ "@material/animation": "15.0.0-canary.90291f2e2.0",
+ "@material/base": "15.0.0-canary.90291f2e2.0",
+ "@material/feature-targeting": "15.0.0-canary.90291f2e2.0",
+ "@material/theme": "15.0.0-canary.90291f2e2.0",
+ "tslib": "^2.1.0"
+ }
+ },
+ "node_modules/@material/linear-progress": {
+ "version": "15.0.0-canary.90291f2e2.0",
+ "resolved": "https://registry.npmjs.org/@material/linear-progress/-/linear-progress-15.0.0-canary.90291f2e2.0.tgz",
+ "integrity": "sha512-nK5RYn8NFZi/+fznLYoEdY6tSzXiJqOU0tX5by7hStURhP2g/RM5SQaJwyjEmHdorfCUIStgmKsN4rB5aMnxdw==",
+ "dependencies": {
+ "@material/animation": "15.0.0-canary.90291f2e2.0",
+ "@material/base": "15.0.0-canary.90291f2e2.0",
+ "@material/dom": "15.0.0-canary.90291f2e2.0",
+ "@material/feature-targeting": "15.0.0-canary.90291f2e2.0",
+ "@material/progress-indicator": "15.0.0-canary.90291f2e2.0",
+ "@material/rtl": "15.0.0-canary.90291f2e2.0",
+ "@material/theme": "15.0.0-canary.90291f2e2.0",
+ "tslib": "^2.1.0"
+ }
+ },
+ "node_modules/@material/list": {
+ "version": "15.0.0-canary.90291f2e2.0",
+ "resolved": "https://registry.npmjs.org/@material/list/-/list-15.0.0-canary.90291f2e2.0.tgz",
+ "integrity": "sha512-h2c6G5aPH1bhgl2yBYAW4y86pl+yVl3YdqU0ixemQ5/2uB/t92imUbI+gKH5LzlbuJKenk3rZJ5eaV+t5zTS1A==",
+ "dependencies": {
+ "@material/base": "15.0.0-canary.90291f2e2.0",
+ "@material/density": "15.0.0-canary.90291f2e2.0",
+ "@material/dom": "15.0.0-canary.90291f2e2.0",
+ "@material/feature-targeting": "15.0.0-canary.90291f2e2.0",
+ "@material/ripple": "15.0.0-canary.90291f2e2.0",
+ "@material/rtl": "15.0.0-canary.90291f2e2.0",
+ "@material/shape": "15.0.0-canary.90291f2e2.0",
+ "@material/theme": "15.0.0-canary.90291f2e2.0",
+ "@material/tokens": "15.0.0-canary.90291f2e2.0",
+ "@material/typography": "15.0.0-canary.90291f2e2.0",
+ "tslib": "^2.1.0"
+ }
+ },
+ "node_modules/@material/menu": {
+ "version": "15.0.0-canary.90291f2e2.0",
+ "resolved": "https://registry.npmjs.org/@material/menu/-/menu-15.0.0-canary.90291f2e2.0.tgz",
+ "integrity": "sha512-yfpBN4Hg59pHMNplh2LIe8t+/qsfyP0iRAtJoCK90SBwX43kv65u22+3vEJmYzm3Ey/m3S3YRFXTFQRQnn9cmA==",
+ "dependencies": {
+ "@material/base": "15.0.0-canary.90291f2e2.0",
+ "@material/dom": "15.0.0-canary.90291f2e2.0",
+ "@material/elevation": "15.0.0-canary.90291f2e2.0",
+ "@material/feature-targeting": "15.0.0-canary.90291f2e2.0",
+ "@material/list": "15.0.0-canary.90291f2e2.0",
+ "@material/menu-surface": "15.0.0-canary.90291f2e2.0",
+ "@material/ripple": "15.0.0-canary.90291f2e2.0",
+ "@material/rtl": "15.0.0-canary.90291f2e2.0",
+ "@material/shape": "15.0.0-canary.90291f2e2.0",
+ "@material/theme": "15.0.0-canary.90291f2e2.0",
+ "@material/tokens": "15.0.0-canary.90291f2e2.0",
+ "tslib": "^2.1.0"
+ }
+ },
+ "node_modules/@material/menu-surface": {
+ "version": "15.0.0-canary.90291f2e2.0",
+ "resolved": "https://registry.npmjs.org/@material/menu-surface/-/menu-surface-15.0.0-canary.90291f2e2.0.tgz",
+ "integrity": "sha512-AkRpOjFOJi2ROZPvFo1z8ik61eEyJEew8NuvlzCE4S3BX/RNFrYVh4W5ylo030S01ALCS5zhVOeekxa/4eokZA==",
+ "dependencies": {
+ "@material/animation": "15.0.0-canary.90291f2e2.0",
+ "@material/base": "15.0.0-canary.90291f2e2.0",
+ "@material/elevation": "15.0.0-canary.90291f2e2.0",
+ "@material/feature-targeting": "15.0.0-canary.90291f2e2.0",
+ "@material/rtl": "15.0.0-canary.90291f2e2.0",
+ "@material/shape": "15.0.0-canary.90291f2e2.0",
+ "@material/theme": "15.0.0-canary.90291f2e2.0",
+ "tslib": "^2.1.0"
+ }
+ },
+ "node_modules/@material/notched-outline": {
+ "version": "15.0.0-canary.90291f2e2.0",
+ "resolved": "https://registry.npmjs.org/@material/notched-outline/-/notched-outline-15.0.0-canary.90291f2e2.0.tgz",
+ "integrity": "sha512-4lpoIoFJ8cb++M1iQpZ+8iypUuTruzyBAkOvoaNjk7EftEV+aS3K6XntGNtlUZoB/fFho3mAUVjT19IHFWD03A==",
+ "dependencies": {
+ "@material/base": "15.0.0-canary.90291f2e2.0",
+ "@material/feature-targeting": "15.0.0-canary.90291f2e2.0",
+ "@material/floating-label": "15.0.0-canary.90291f2e2.0",
+ "@material/rtl": "15.0.0-canary.90291f2e2.0",
+ "@material/shape": "15.0.0-canary.90291f2e2.0",
+ "@material/theme": "15.0.0-canary.90291f2e2.0",
+ "tslib": "^2.1.0"
+ }
+ },
+ "node_modules/@material/progress-indicator": {
+ "version": "15.0.0-canary.90291f2e2.0",
+ "resolved": "https://registry.npmjs.org/@material/progress-indicator/-/progress-indicator-15.0.0-canary.90291f2e2.0.tgz",
+ "integrity": "sha512-trQLSstZIA0C64adW/HycycD+PtMfg6iZCIVuTNlZr7PR2Yc1EjuGyA7ts+iXBHZ0TxVshRbDYMwcDogP0rc1w==",
+ "dependencies": {
+ "tslib": "^2.1.0"
+ }
+ },
+ "node_modules/@material/radio": {
+ "version": "15.0.0-canary.90291f2e2.0",
+ "resolved": "https://registry.npmjs.org/@material/radio/-/radio-15.0.0-canary.90291f2e2.0.tgz",
+ "integrity": "sha512-Ypl4BZ9w1NdbiiEUV3Xw2pb97prMPGEE+5Lm719sVsaFmI4yCKgtsWNEbCbKixborh2ZDZWGCzgMyUQHf3a8xA==",
+ "dependencies": {
+ "@material/animation": "15.0.0-canary.90291f2e2.0",
+ "@material/base": "15.0.0-canary.90291f2e2.0",
+ "@material/density": "15.0.0-canary.90291f2e2.0",
+ "@material/dom": "15.0.0-canary.90291f2e2.0",
+ "@material/feature-targeting": "15.0.0-canary.90291f2e2.0",
+ "@material/focus-ring": "15.0.0-canary.90291f2e2.0",
+ "@material/ripple": "15.0.0-canary.90291f2e2.0",
+ "@material/theme": "15.0.0-canary.90291f2e2.0",
+ "@material/touch-target": "15.0.0-canary.90291f2e2.0",
+ "tslib": "^2.1.0"
+ }
+ },
+ "node_modules/@material/ripple": {
+ "version": "15.0.0-canary.90291f2e2.0",
+ "resolved": "https://registry.npmjs.org/@material/ripple/-/ripple-15.0.0-canary.90291f2e2.0.tgz",
+ "integrity": "sha512-8yCR/V+7SJ9om0cvAOULF/i5+gPQeT+cuPoCZJQRWq9IndfCmQPY3Zmy26reIT/zEyCebAvMG4/WtU4rc+jxyw==",
+ "dependencies": {
+ "@material/animation": "15.0.0-canary.90291f2e2.0",
+ "@material/base": "15.0.0-canary.90291f2e2.0",
+ "@material/dom": "15.0.0-canary.90291f2e2.0",
+ "@material/feature-targeting": "15.0.0-canary.90291f2e2.0",
+ "@material/rtl": "15.0.0-canary.90291f2e2.0",
+ "@material/theme": "15.0.0-canary.90291f2e2.0",
+ "tslib": "^2.1.0"
+ }
+ },
+ "node_modules/@material/rtl": {
+ "version": "15.0.0-canary.90291f2e2.0",
+ "resolved": "https://registry.npmjs.org/@material/rtl/-/rtl-15.0.0-canary.90291f2e2.0.tgz",
+ "integrity": "sha512-HkUhD8K03BxWVw21WDViWo01Chi22cZ1rmlsdCtggkxdVjtDhTbYm/3XvRnxt4RVpr6KaYQgRXI/52T5RtBUnw==",
+ "dependencies": {
+ "@material/theme": "15.0.0-canary.90291f2e2.0",
+ "tslib": "^2.1.0"
+ }
+ },
+ "node_modules/@material/segmented-button": {
+ "version": "15.0.0-canary.90291f2e2.0",
+ "resolved": "https://registry.npmjs.org/@material/segmented-button/-/segmented-button-15.0.0-canary.90291f2e2.0.tgz",
+ "integrity": "sha512-u1DF+jbysX6wCqt7dDnHgEo2XhNrwkqHq6YsMOFVCoo54PHt3gpwhD89DONqQJKspkdvZuxYHzpqRtV0GIzYDQ==",
+ "dependencies": {
+ "@material/base": "15.0.0-canary.90291f2e2.0",
+ "@material/elevation": "15.0.0-canary.90291f2e2.0",
+ "@material/feature-targeting": "15.0.0-canary.90291f2e2.0",
+ "@material/ripple": "15.0.0-canary.90291f2e2.0",
+ "@material/theme": "15.0.0-canary.90291f2e2.0",
+ "@material/touch-target": "15.0.0-canary.90291f2e2.0",
+ "@material/typography": "15.0.0-canary.90291f2e2.0",
+ "tslib": "^2.1.0"
+ }
+ },
+ "node_modules/@material/select": {
+ "version": "15.0.0-canary.90291f2e2.0",
+ "resolved": "https://registry.npmjs.org/@material/select/-/select-15.0.0-canary.90291f2e2.0.tgz",
+ "integrity": "sha512-CCaftyi3eIJl2XqBfHbzj8W2jgTMBzSM2+q4WthA+7z0fYQI4JIHQVHO5YKQG5J9MR1VjYQ0Gy0GNotZLAcoOQ==",
+ "dependencies": {
+ "@material/animation": "15.0.0-canary.90291f2e2.0",
+ "@material/base": "15.0.0-canary.90291f2e2.0",
+ "@material/density": "15.0.0-canary.90291f2e2.0",
+ "@material/dom": "15.0.0-canary.90291f2e2.0",
+ "@material/elevation": "15.0.0-canary.90291f2e2.0",
+ "@material/feature-targeting": "15.0.0-canary.90291f2e2.0",
+ "@material/floating-label": "15.0.0-canary.90291f2e2.0",
+ "@material/line-ripple": "15.0.0-canary.90291f2e2.0",
+ "@material/list": "15.0.0-canary.90291f2e2.0",
+ "@material/menu": "15.0.0-canary.90291f2e2.0",
+ "@material/menu-surface": "15.0.0-canary.90291f2e2.0",
+ "@material/notched-outline": "15.0.0-canary.90291f2e2.0",
+ "@material/ripple": "15.0.0-canary.90291f2e2.0",
+ "@material/rtl": "15.0.0-canary.90291f2e2.0",
+ "@material/shape": "15.0.0-canary.90291f2e2.0",
+ "@material/theme": "15.0.0-canary.90291f2e2.0",
+ "@material/tokens": "15.0.0-canary.90291f2e2.0",
+ "@material/typography": "15.0.0-canary.90291f2e2.0",
+ "tslib": "^2.1.0"
+ }
+ },
+ "node_modules/@material/shape": {
+ "version": "15.0.0-canary.90291f2e2.0",
+ "resolved": "https://registry.npmjs.org/@material/shape/-/shape-15.0.0-canary.90291f2e2.0.tgz",
+ "integrity": "sha512-UEB168x8ovLvH4eoBtRnoCT9QvnxB/ZMpOKW1+C+xWisis6Wy9AX0wKT5T6wIpffYYCaBJuhI+ExX2134rAxJw==",
+ "dependencies": {
+ "@material/feature-targeting": "15.0.0-canary.90291f2e2.0",
+ "@material/rtl": "15.0.0-canary.90291f2e2.0",
+ "@material/theme": "15.0.0-canary.90291f2e2.0",
+ "tslib": "^2.1.0"
+ }
+ },
+ "node_modules/@material/slider": {
+ "version": "15.0.0-canary.90291f2e2.0",
+ "resolved": "https://registry.npmjs.org/@material/slider/-/slider-15.0.0-canary.90291f2e2.0.tgz",
+ "integrity": "sha512-krbdGHcROlvnZ0X7HT0d+PvJummczeShQeWeV/ZezXnQM7bQoy86qfwtX4ai1dIXYkF9qKTFlta2zZezTJyf5g==",
+ "dependencies": {
+ "@material/animation": "15.0.0-canary.90291f2e2.0",
+ "@material/base": "15.0.0-canary.90291f2e2.0",
+ "@material/dom": "15.0.0-canary.90291f2e2.0",
+ "@material/elevation": "15.0.0-canary.90291f2e2.0",
+ "@material/feature-targeting": "15.0.0-canary.90291f2e2.0",
+ "@material/ripple": "15.0.0-canary.90291f2e2.0",
+ "@material/rtl": "15.0.0-canary.90291f2e2.0",
+ "@material/theme": "15.0.0-canary.90291f2e2.0",
+ "@material/tokens": "15.0.0-canary.90291f2e2.0",
+ "@material/typography": "15.0.0-canary.90291f2e2.0",
+ "tslib": "^2.1.0"
+ }
+ },
+ "node_modules/@material/snackbar": {
+ "version": "15.0.0-canary.90291f2e2.0",
+ "resolved": "https://registry.npmjs.org/@material/snackbar/-/snackbar-15.0.0-canary.90291f2e2.0.tgz",
+ "integrity": "sha512-f1+HaSaAkALtQqEr6WMUqfwOsJr5nOUjP15GA+sTs9SD7yzwqMeWsVriBdWXVRe0zNgew6sfBM+cLjg2w4VAOQ==",
+ "dependencies": {
+ "@material/animation": "15.0.0-canary.90291f2e2.0",
+ "@material/base": "15.0.0-canary.90291f2e2.0",
+ "@material/button": "15.0.0-canary.90291f2e2.0",
+ "@material/dom": "15.0.0-canary.90291f2e2.0",
+ "@material/elevation": "15.0.0-canary.90291f2e2.0",
+ "@material/feature-targeting": "15.0.0-canary.90291f2e2.0",
+ "@material/icon-button": "15.0.0-canary.90291f2e2.0",
+ "@material/ripple": "15.0.0-canary.90291f2e2.0",
+ "@material/rtl": "15.0.0-canary.90291f2e2.0",
+ "@material/shape": "15.0.0-canary.90291f2e2.0",
+ "@material/theme": "15.0.0-canary.90291f2e2.0",
+ "@material/tokens": "15.0.0-canary.90291f2e2.0",
+ "@material/typography": "15.0.0-canary.90291f2e2.0",
+ "tslib": "^2.1.0"
+ }
+ },
+ "node_modules/@material/switch": {
+ "version": "15.0.0-canary.90291f2e2.0",
+ "resolved": "https://registry.npmjs.org/@material/switch/-/switch-15.0.0-canary.90291f2e2.0.tgz",
+ "integrity": "sha512-94/+Zp2VjlLVJXY7u8VHPcJMHPRVNAwHydiGrKvnJ+6LfbLxAcILNBP9RVKqqqOWQeDxB4ApUl+0TV2Lj6mOzA==",
+ "dependencies": {
+ "@material/animation": "15.0.0-canary.90291f2e2.0",
+ "@material/base": "15.0.0-canary.90291f2e2.0",
+ "@material/density": "15.0.0-canary.90291f2e2.0",
+ "@material/dom": "15.0.0-canary.90291f2e2.0",
+ "@material/elevation": "15.0.0-canary.90291f2e2.0",
+ "@material/feature-targeting": "15.0.0-canary.90291f2e2.0",
+ "@material/focus-ring": "15.0.0-canary.90291f2e2.0",
+ "@material/ripple": "15.0.0-canary.90291f2e2.0",
+ "@material/rtl": "15.0.0-canary.90291f2e2.0",
+ "@material/shape": "15.0.0-canary.90291f2e2.0",
+ "@material/theme": "15.0.0-canary.90291f2e2.0",
+ "@material/tokens": "15.0.0-canary.90291f2e2.0",
+ "safevalues": "^0.3.4",
+ "tslib": "^2.1.0"
+ }
+ },
+ "node_modules/@material/tab": {
+ "version": "15.0.0-canary.90291f2e2.0",
+ "resolved": "https://registry.npmjs.org/@material/tab/-/tab-15.0.0-canary.90291f2e2.0.tgz",
+ "integrity": "sha512-zju6UP038Ddi3XAfliYy58A3OvkQ+zSlOdNOd5l82oMArLYEFi3t51QTjKVjV1wokr6ZQ3Chs4kcrgwVTElYtg==",
+ "dependencies": {
+ "@material/base": "15.0.0-canary.90291f2e2.0",
+ "@material/elevation": "15.0.0-canary.90291f2e2.0",
+ "@material/feature-targeting": "15.0.0-canary.90291f2e2.0",
+ "@material/focus-ring": "15.0.0-canary.90291f2e2.0",
+ "@material/ripple": "15.0.0-canary.90291f2e2.0",
+ "@material/rtl": "15.0.0-canary.90291f2e2.0",
+ "@material/tab-indicator": "15.0.0-canary.90291f2e2.0",
+ "@material/theme": "15.0.0-canary.90291f2e2.0",
+ "@material/tokens": "15.0.0-canary.90291f2e2.0",
+ "@material/typography": "15.0.0-canary.90291f2e2.0",
+ "tslib": "^2.1.0"
+ }
+ },
+ "node_modules/@material/tab-bar": {
+ "version": "15.0.0-canary.90291f2e2.0",
+ "resolved": "https://registry.npmjs.org/@material/tab-bar/-/tab-bar-15.0.0-canary.90291f2e2.0.tgz",
+ "integrity": "sha512-dTC7oGZg6KuDK2OXO7luJWqshtNY2YgImwZbQ9a1vZZrIGMRHdu+ZtP6RVH2srFVlNIWjzcxfLgNrG+U027RdA==",
+ "dependencies": {
+ "@material/animation": "15.0.0-canary.90291f2e2.0",
+ "@material/base": "15.0.0-canary.90291f2e2.0",
+ "@material/density": "15.0.0-canary.90291f2e2.0",
+ "@material/elevation": "15.0.0-canary.90291f2e2.0",
+ "@material/feature-targeting": "15.0.0-canary.90291f2e2.0",
+ "@material/tab": "15.0.0-canary.90291f2e2.0",
+ "@material/tab-indicator": "15.0.0-canary.90291f2e2.0",
+ "@material/tab-scroller": "15.0.0-canary.90291f2e2.0",
+ "@material/theme": "15.0.0-canary.90291f2e2.0",
+ "@material/tokens": "15.0.0-canary.90291f2e2.0",
+ "@material/typography": "15.0.0-canary.90291f2e2.0",
+ "tslib": "^2.1.0"
+ }
+ },
+ "node_modules/@material/tab-indicator": {
+ "version": "15.0.0-canary.90291f2e2.0",
+ "resolved": "https://registry.npmjs.org/@material/tab-indicator/-/tab-indicator-15.0.0-canary.90291f2e2.0.tgz",
+ "integrity": "sha512-GXdFO6rO1crXcj+todijzZQVACW4EC72XwLAl6z69TKBgZrhwCoZ6RgzX6vIXSs+KoZ0eIyQLr+yQQx1JjDd4w==",
+ "dependencies": {
+ "@material/animation": "15.0.0-canary.90291f2e2.0",
+ "@material/base": "15.0.0-canary.90291f2e2.0",
+ "@material/feature-targeting": "15.0.0-canary.90291f2e2.0",
+ "@material/theme": "15.0.0-canary.90291f2e2.0",
+ "tslib": "^2.1.0"
+ }
+ },
+ "node_modules/@material/tab-scroller": {
+ "version": "15.0.0-canary.90291f2e2.0",
+ "resolved": "https://registry.npmjs.org/@material/tab-scroller/-/tab-scroller-15.0.0-canary.90291f2e2.0.tgz",
+ "integrity": "sha512-R6trOZpkfk54VV0w0NjMMDcZPQgbnARxCoHLrWeSzv5KOMoiDyWji7FFpLc4fynX/F2lNg8xHpEolpugNRW/1g==",
+ "dependencies": {
+ "@material/animation": "15.0.0-canary.90291f2e2.0",
+ "@material/base": "15.0.0-canary.90291f2e2.0",
+ "@material/dom": "15.0.0-canary.90291f2e2.0",
+ "@material/feature-targeting": "15.0.0-canary.90291f2e2.0",
+ "@material/tab": "15.0.0-canary.90291f2e2.0",
+ "tslib": "^2.1.0"
+ }
+ },
+ "node_modules/@material/textfield": {
+ "version": "15.0.0-canary.90291f2e2.0",
+ "resolved": "https://registry.npmjs.org/@material/textfield/-/textfield-15.0.0-canary.90291f2e2.0.tgz",
+ "integrity": "sha512-ipxPH8DRh9+cn4MOtAYvGsRLP5RJH/gB/BWh/BiJwjI38Djt4FK4LDHbx7fFo/C8hoj7UNs/BWaSLllyxuWKcg==",
+ "dependencies": {
+ "@material/animation": "15.0.0-canary.90291f2e2.0",
+ "@material/base": "15.0.0-canary.90291f2e2.0",
+ "@material/density": "15.0.0-canary.90291f2e2.0",
+ "@material/dom": "15.0.0-canary.90291f2e2.0",
+ "@material/feature-targeting": "15.0.0-canary.90291f2e2.0",
+ "@material/floating-label": "15.0.0-canary.90291f2e2.0",
+ "@material/line-ripple": "15.0.0-canary.90291f2e2.0",
+ "@material/notched-outline": "15.0.0-canary.90291f2e2.0",
+ "@material/ripple": "15.0.0-canary.90291f2e2.0",
+ "@material/rtl": "15.0.0-canary.90291f2e2.0",
+ "@material/shape": "15.0.0-canary.90291f2e2.0",
+ "@material/theme": "15.0.0-canary.90291f2e2.0",
+ "@material/tokens": "15.0.0-canary.90291f2e2.0",
+ "@material/typography": "15.0.0-canary.90291f2e2.0",
+ "tslib": "^2.1.0"
+ }
+ },
+ "node_modules/@material/theme": {
+ "version": "15.0.0-canary.90291f2e2.0",
+ "resolved": "https://registry.npmjs.org/@material/theme/-/theme-15.0.0-canary.90291f2e2.0.tgz",
+ "integrity": "sha512-rDSZ0bPoJothI8nRPQWB4Cyu7DTmc8qIuvFm3OOD4uI/2n+yIFqktS6X+6YF82LeKt4uMTZE+Ce/l51bb8UJGA==",
+ "dependencies": {
+ "@material/feature-targeting": "15.0.0-canary.90291f2e2.0",
+ "tslib": "^2.1.0"
+ }
+ },
+ "node_modules/@material/tokens": {
+ "version": "15.0.0-canary.90291f2e2.0",
+ "resolved": "https://registry.npmjs.org/@material/tokens/-/tokens-15.0.0-canary.90291f2e2.0.tgz",
+ "integrity": "sha512-ZTis8UeSRrm/4iQ6BujtcTf1J2bs2H+SAEnugtZSQiX8pyf90gQvylEoTuMPdUs1+YJ273cn04ipHdkq3OHaew==",
+ "dependencies": {
+ "@material/elevation": "15.0.0-canary.90291f2e2.0"
+ }
+ },
+ "node_modules/@material/tooltip": {
+ "version": "15.0.0-canary.90291f2e2.0",
+ "resolved": "https://registry.npmjs.org/@material/tooltip/-/tooltip-15.0.0-canary.90291f2e2.0.tgz",
+ "integrity": "sha512-H3XsrctgRriNwt++NN+Zy6/JhyRznWo2pXiTFnOlaYwHOiGIFCNZR0A/0vf/3Kpf0GYhTfkJEFJMosUSZidSDg==",
+ "dependencies": {
+ "@material/animation": "15.0.0-canary.90291f2e2.0",
+ "@material/base": "15.0.0-canary.90291f2e2.0",
+ "@material/button": "15.0.0-canary.90291f2e2.0",
+ "@material/dom": "15.0.0-canary.90291f2e2.0",
+ "@material/elevation": "15.0.0-canary.90291f2e2.0",
+ "@material/feature-targeting": "15.0.0-canary.90291f2e2.0",
+ "@material/rtl": "15.0.0-canary.90291f2e2.0",
+ "@material/shape": "15.0.0-canary.90291f2e2.0",
+ "@material/theme": "15.0.0-canary.90291f2e2.0",
+ "@material/tokens": "15.0.0-canary.90291f2e2.0",
+ "@material/typography": "15.0.0-canary.90291f2e2.0",
+ "safevalues": "^0.3.4",
+ "tslib": "^2.1.0"
+ }
+ },
+ "node_modules/@material/top-app-bar": {
+ "version": "15.0.0-canary.90291f2e2.0",
+ "resolved": "https://registry.npmjs.org/@material/top-app-bar/-/top-app-bar-15.0.0-canary.90291f2e2.0.tgz",
+ "integrity": "sha512-ZiJjK4WpIsE0MZTWokP9r4C9/oDqzUhKRn3ef2WCeJEIU3Vjg4t0xBTnST2vIrcBGw1s7WP1gfaxb3DSXSxzpw==",
+ "dependencies": {
+ "@material/animation": "15.0.0-canary.90291f2e2.0",
+ "@material/base": "15.0.0-canary.90291f2e2.0",
+ "@material/elevation": "15.0.0-canary.90291f2e2.0",
+ "@material/ripple": "15.0.0-canary.90291f2e2.0",
+ "@material/rtl": "15.0.0-canary.90291f2e2.0",
+ "@material/shape": "15.0.0-canary.90291f2e2.0",
+ "@material/theme": "15.0.0-canary.90291f2e2.0",
+ "@material/typography": "15.0.0-canary.90291f2e2.0",
+ "tslib": "^2.1.0"
+ }
+ },
+ "node_modules/@material/touch-target": {
+ "version": "15.0.0-canary.90291f2e2.0",
+ "resolved": "https://registry.npmjs.org/@material/touch-target/-/touch-target-15.0.0-canary.90291f2e2.0.tgz",
+ "integrity": "sha512-IpRFf4umZ4ZNxrP+qJkRY9syh7TFZmU4c7EbAlANAJ0/8rlkEo7WJiqa9P1p4nFaT4eMo4n5g+qRI0Dkb9zW5g==",
+ "dependencies": {
+ "@material/base": "15.0.0-canary.90291f2e2.0",
+ "@material/feature-targeting": "15.0.0-canary.90291f2e2.0",
+ "@material/rtl": "15.0.0-canary.90291f2e2.0",
+ "@material/theme": "15.0.0-canary.90291f2e2.0",
+ "tslib": "^2.1.0"
+ }
+ },
+ "node_modules/@material/typography": {
+ "version": "15.0.0-canary.90291f2e2.0",
+ "resolved": "https://registry.npmjs.org/@material/typography/-/typography-15.0.0-canary.90291f2e2.0.tgz",
+ "integrity": "sha512-tv1HWkJYi5T0470k8vbBb+nefdPgsaIO04ocWMf7luvmfE+MZIaR13RxdupLJ4k5otrdydL3/wEaCNhQ+Ipnvw==",
+ "dependencies": {
+ "@material/feature-targeting": "15.0.0-canary.90291f2e2.0",
+ "@material/theme": "15.0.0-canary.90291f2e2.0",
+ "tslib": "^2.1.0"
+ }
+ },
"node_modules/@ngtools/webpack": {
"version": "16.1.0",
"resolved": "https://registry.npmjs.org/@ngtools/webpack/-/webpack-16.1.0.tgz",
@@ -5374,7 +6208,7 @@
"version": "4.5.0",
"resolved": "https://registry.npmjs.org/entities/-/entities-4.5.0.tgz",
"integrity": "sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==",
- "dev": true,
+ "devOptional": true,
"engines": {
"node": ">=0.12"
},
@@ -8853,6 +9687,18 @@
"node": ">= 0.10"
}
},
+ "node_modules/parse5": {
+ "version": "7.1.2",
+ "resolved": "https://registry.npmjs.org/parse5/-/parse5-7.1.2.tgz",
+ "integrity": "sha512-Czj1WaSVpaoj0wbhMzLmWD69anp2WH7FXMB9n1Sy8/ZFF9jolSQVMu1Ij5WIyGmcBmhk7EOndpO4mIpihVqAXw==",
+ "devOptional": true,
+ "dependencies": {
+ "entities": "^4.4.0"
+ },
+ "funding": {
+ "url": "https://github.com/inikulin/parse5?sponsor=1"
+ }
+ },
"node_modules/parse5-html-rewriting-stream": {
"version": "7.0.0",
"resolved": "https://registry.npmjs.org/parse5-html-rewriting-stream/-/parse5-html-rewriting-stream-7.0.0.tgz",
@@ -8867,18 +9713,6 @@
"url": "https://github.com/inikulin/parse5?sponsor=1"
}
},
- "node_modules/parse5-html-rewriting-stream/node_modules/parse5": {
- "version": "7.1.2",
- "resolved": "https://registry.npmjs.org/parse5/-/parse5-7.1.2.tgz",
- "integrity": "sha512-Czj1WaSVpaoj0wbhMzLmWD69anp2WH7FXMB9n1Sy8/ZFF9jolSQVMu1Ij5WIyGmcBmhk7EOndpO4mIpihVqAXw==",
- "dev": true,
- "dependencies": {
- "entities": "^4.4.0"
- },
- "funding": {
- "url": "https://github.com/inikulin/parse5?sponsor=1"
- }
- },
"node_modules/parse5-sax-parser": {
"version": "7.0.0",
"resolved": "https://registry.npmjs.org/parse5-sax-parser/-/parse5-sax-parser-7.0.0.tgz",
@@ -8891,18 +9725,6 @@
"url": "https://github.com/inikulin/parse5?sponsor=1"
}
},
- "node_modules/parse5-sax-parser/node_modules/parse5": {
- "version": "7.1.2",
- "resolved": "https://registry.npmjs.org/parse5/-/parse5-7.1.2.tgz",
- "integrity": "sha512-Czj1WaSVpaoj0wbhMzLmWD69anp2WH7FXMB9n1Sy8/ZFF9jolSQVMu1Ij5WIyGmcBmhk7EOndpO4mIpihVqAXw==",
- "dev": true,
- "dependencies": {
- "entities": "^4.4.0"
- },
- "funding": {
- "url": "https://github.com/inikulin/parse5?sponsor=1"
- }
- },
"node_modules/parseurl": {
"version": "1.3.3",
"resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz",
@@ -9754,6 +10576,11 @@
"integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==",
"dev": true
},
+ "node_modules/safevalues": {
+ "version": "0.3.4",
+ "resolved": "https://registry.npmjs.org/safevalues/-/safevalues-0.3.4.tgz",
+ "integrity": "sha512-LRneZZRXNgjzwG4bDQdOTSbze3fHm1EAKN/8bePxnlEZiBmkYEDggaHbuvHI9/hoqHbGfsEA7tWS9GhYHZBBsw=="
+ },
"node_modules/sass": {
"version": "1.63.2",
"resolved": "https://registry.npmjs.org/sass/-/sass-1.63.2.tgz",
diff --git a/package.json b/package.json
index c5066ca..62945ee 100644
--- a/package.json
+++ b/package.json
@@ -11,17 +11,19 @@
"private": true,
"dependencies": {
"@angular/animations": "^16.1.1",
+ "@angular/cdk": "^16.1.1",
"@angular/common": "^16.1.1",
"@angular/compiler": "^16.1.1",
"@angular/core": "^16.1.1",
"@angular/forms": "^16.1.1",
+ "@angular/material": "^16.1.1",
"@angular/platform-browser": "^16.1.1",
"@angular/platform-browser-dynamic": "^16.1.1",
"@angular/router": "^16.1.1",
"rxjs": "~7.4.0",
"tslib": "^2.3.0",
- "zone.js": "~0.13.1",
- "uuid": "^8.3.2"
+ "uuid": "^8.3.2",
+ "zone.js": "~0.13.1"
},
"devDependencies": {
"@angular-devkit/build-angular": "^16.1.0",
diff --git a/src/app/app.component.html b/src/app/app.component.html
index 9d46558..a256080 100644
--- a/src/app/app.component.html
+++ b/src/app/app.component.html
@@ -1,39 +1,49 @@
-
- User Import
-
+User Import
-
-
-
- |
- Naam
- |
-
- E-mail
- |
-
- Rol
- |
-
- Status
- |
-
-
- |
- {{dataRow.name}}
- |
-
- {{dataRow.email}}
- |
-
- {{dataRow.role}}
- |
-
- ...
- |
-
+
+
+ | Naam |
+ {{ element.name }} |
+
+
+
+ E-mail |
+ {{ element.email }} |
+
+
+
+ Rol |
+ {{ element.role }} |
+
+
+
+ Status |
+
+
+ {{ element.status }}
+
+
+ |
+
+
+
-
\ No newline at end of file
+
diff --git a/src/app/app.component.ts b/src/app/app.component.ts
index 11155df..d64472a 100644
--- a/src/app/app.component.ts
+++ b/src/app/app.component.ts
@@ -1,38 +1,86 @@
import { Component, OnInit } from '@angular/core';
import { rawData } from './raw-data';
-import { MockApiService } from './mock-api.service';
+import { MockApiService, RoleTypeEnum } from './mock-api.service';
+import { EMPTY, catchError, switchMap, tap, throwError } from 'rxjs';
+import { MatDialog } from '@angular/material/dialog';
+import { HerstelformComponent } from './herstelform/herstel.form.component';
+
+export interface AdjustData {
+ name: string;
+ email: string;
+ role: string;
+ status?: string;
+ error?: string;
+}
@Component({
selector: 'app-root',
templateUrl: './app.component.html',
- styleUrls: ['./app.component.css']
+ styleUrls: ['./app.component.css'],
})
export class AppComponent implements OnInit {
-
- rawData: {name: string, email: string, role: string}[];
+ adjustedData: AdjustData[];
+ showData: AdjustData[];
- constructor(
- private mockApi: MockApiService
- ){}
+ constructor(private mockApi: MockApiService, public dialog: MatDialog) {}
- ngOnInit(){
+ ngOnInit() {
this.loadRawData();
}
-
- private loadRawData(){
-
- // get the rawData from the provided file
- this.rawData = rawData;
+ private loadRawData() {
+ this.adjustedData = rawData;
+ this.showData = [...this.adjustedData];
}
- clickSubmit(){
-
- // this is probably not right
- for(let dataRow of this.rawData){
- this.mockApi.createUser(dataRow.name, dataRow.email).subscribe();
+ clickSubmit() {
+ for (let dataRow of this.adjustedData) {
+ this.mockApi
+ .createUser(dataRow.name, dataRow.email)
+ .pipe(
+ switchMap((user) =>
+ this.mockApi.createRole(user.id, dataRow.role as RoleTypeEnum)
+ ),
+ tap(() => (dataRow.status = 'Goed')),
+ switchMap((role) =>
+ role.roleType === RoleTypeEnum.student
+ ? this.mockApi.createPortfolio(role.userId)
+ : EMPTY
+ ),
+ catchError((error) => throwError(() => error))
+ )
+ .subscribe({
+ error: (e) => {
+ dataRow.status = 'Fout';
+ dataRow.error = e;
+ },
+ complete: () => {
+ this.adjustedData.splice(
+ this.adjustedData.findIndex((data) => data.status === 'Goed'),
+ 1
+ );
+ this.showData = [...this.adjustedData];
+ },
+ });
}
-
}
+ corrigeerData(data: AdjustData): void {
+ const index = this.adjustedData.indexOf(data);
+ const dialogRef = this.dialog.open(HerstelformComponent, {
+ data: {
+ name: data.name,
+ email: data.email,
+ role: data.role,
+ error: data.error,
+ },
+ });
+
+ dialogRef.afterClosed().subscribe((result) => {
+ if (result) {
+ this.adjustedData[index] = result;
+ this.showData = [...this.adjustedData];
+ }
+ });
+ }
}
diff --git a/src/app/app.module.ts b/src/app/app.module.ts
index f657163..64b15b7 100644
--- a/src/app/app.module.ts
+++ b/src/app/app.module.ts
@@ -2,15 +2,31 @@ import { BrowserModule } from '@angular/platform-browser';
import { NgModule } from '@angular/core';
import { AppComponent } from './app.component';
+import { MatTableModule } from '@angular/material/table';
+import { MatButtonModule } from '@angular/material/button';
+import {
+ MatDialogModule,
+} from '@angular/material/dialog';
+import { FormsModule } from '@angular/forms';
+import { MatInputModule } from '@angular/material/input';
+import { MatFormFieldModule } from '@angular/material/form-field';
+import { HerstelformComponent } from './herstelform/herstel.form.component';
+import { BrowserAnimationsModule } from '@angular/platform-browser/animations';
@NgModule({
- declarations: [
- AppComponent
- ],
+ declarations: [AppComponent, HerstelformComponent],
imports: [
- BrowserModule
+ BrowserModule,
+ MatTableModule,
+ MatButtonModule,
+ MatDialogModule,
+ MatFormFieldModule,
+ MatInputModule,
+ FormsModule,
+ MatButtonModule,
+ BrowserAnimationsModule,
],
providers: [],
- bootstrap: [AppComponent]
+ bootstrap: [AppComponent],
})
-export class AppModule { }
+export class AppModule {}
diff --git a/src/app/herstelform/herstel.form.component.css b/src/app/herstelform/herstel.form.component.css
new file mode 100644
index 0000000..e69de29
diff --git a/src/app/herstelform/herstel.form.component.html b/src/app/herstelform/herstel.form.component.html
new file mode 100644
index 0000000..2d94502
--- /dev/null
+++ b/src/app/herstelform/herstel.form.component.html
@@ -0,0 +1,17 @@
+{{data.error}}
+
+
+ Naam
+
+ Email
+
+ Role
+
+
+
+
+
+
+
diff --git a/src/app/herstelform/herstel.form.component.spec.ts b/src/app/herstelform/herstel.form.component.spec.ts
new file mode 100644
index 0000000..fc8fc48
--- /dev/null
+++ b/src/app/herstelform/herstel.form.component.spec.ts
@@ -0,0 +1,28 @@
+/* tslint:disable:no-unused-variable */
+import { async, ComponentFixture, TestBed } from '@angular/core/testing';
+import { By } from '@angular/platform-browser';
+import { DebugElement } from '@angular/core';
+
+import { Herstel.formComponent } from './herstel.form.component';
+
+describe('Herstel.formComponent', () => {
+ let component: Herstel.formComponent;
+ let fixture: ComponentFixture;
+
+ beforeEach(async(() => {
+ TestBed.configureTestingModule({
+ declarations: [ Herstel.formComponent ]
+ })
+ .compileComponents();
+ }));
+
+ beforeEach(() => {
+ fixture = TestBed.createComponent(Herstel.formComponent);
+ component = fixture.componentInstance;
+ fixture.detectChanges();
+ });
+
+ it('should create', () => {
+ expect(component).toBeTruthy();
+ });
+});
diff --git a/src/app/herstelform/herstel.form.component.ts b/src/app/herstelform/herstel.form.component.ts
new file mode 100644
index 0000000..ab8ec83
--- /dev/null
+++ b/src/app/herstelform/herstel.form.component.ts
@@ -0,0 +1,21 @@
+import { Component, Inject } from '@angular/core';
+import { MAT_DIALOG_DATA, MatDialogRef} from '@angular/material/dialog';
+import { AdjustData } from '../app.component';
+
+@Component({
+ selector: 'app-herstelform',
+ templateUrl: './herstel.form.component.html',
+ styleUrls: ['./herstel.form.component.css']
+})
+export class HerstelformComponent {
+
+ constructor(
+ public dialogRef: MatDialogRef,
+ @Inject(MAT_DIALOG_DATA) public data: AdjustData,
+ ) {}
+
+ onNoClick(): void {
+ this.dialogRef.close();
+ }
+
+}
diff --git a/src/index.html b/src/index.html
index 24b82d4..8e6c0fb 100644
--- a/src/index.html
+++ b/src/index.html
@@ -1,14 +1,26 @@
-
+
-
-
- UserImport
-
+
+
+ UserImport
+
-
-
+
+
+
+
+
+
+
+
-
-
-
+
+
+
diff --git a/src/styles.scss b/src/styles.scss
index 90d4ee0..7e7239a 100644
--- a/src/styles.scss
+++ b/src/styles.scss
@@ -1 +1,4 @@
/* You can add global styles to this file, and also import other style files */
+
+html, body { height: 100%; }
+body { margin: 0; font-family: Roboto, "Helvetica Neue", sans-serif; }