Commit f9119eaf authored by 伊藤雄大's avatar 伊藤雄大

Initial commit

parent 47b82738
......@@ -27,7 +27,8 @@
"index": "src/index.html",
"browser": "src/main.ts",
"polyfills": [
"zone.js"
"zone.js",
"@angular/localize/init"
],
"tsConfig": "tsconfig.app.json",
"assets": [
......@@ -37,9 +38,15 @@
}
],
"styles": [
"./node_modules/jqwidgets-ng/jqwidgets/styles/jqx.base.css",
"@angular/material/prebuilt-themes/azure-blue.css",
"node_modules/bootstrap/dist/css/bootstrap.min.css",
"src/styles.css"
],
"scripts": []
"scripts": [
"node_modules/bootstrap/dist/js/bootstrap.min.js",
"node_modules/jquery/dist/jquery.min.js"
]
},
"configurations": {
"production": {
......@@ -85,7 +92,8 @@
"options": {
"polyfills": [
"zone.js",
"zone.js/testing"
"zone.js/testing",
"@angular/localize/init"
],
"tsConfig": "tsconfig.spec.json",
"assets": [
......@@ -95,9 +103,15 @@
}
],
"styles": [
"src/styles.css"
"./node_modules/jqwidgets-ng/jqwidgets/styles/jqx.base.css",
"@angular/material/prebuilt-themes/azure-blue.css",
"src/styles.css",
"node_modules/bootstrap/dist/css/bootstrap.min.css"
],
"scripts": []
"scripts": [
"node_modules/bootstrap/dist/js/bootstrap.min.js",
"node_modules/jquery/dist/jquery.min.js"
]
}
}
}
......
......@@ -9,13 +9,21 @@
"version": "0.0.0",
"dependencies": {
"@angular/animations": "^18.0.0",
"@angular/cdk": "^18.0.3",
"@angular/common": "^18.0.0",
"@angular/compiler": "^18.0.0",
"@angular/core": "^18.0.0",
"@angular/forms": "^18.0.0",
"@angular/material": "^18.0.3",
"@angular/platform-browser": "^18.0.0",
"@angular/platform-browser-dynamic": "^18.0.0",
"@angular/router": "^18.0.0",
"@ng-bootstrap/ng-bootstrap": "^17.0.0",
"@popperjs/core": "^2.11.8",
"ag-grid-angular": "^31.3.2",
"bootstrap": "^5.3.2",
"jquery": "^3.7.1",
"jqwidgets-ng": "^19.2.2",
"rxjs": "~7.8.0",
"tslib": "^2.3.0",
"zone.js": "~0.14.3"
......@@ -24,6 +32,7 @@
"@angular-devkit/build-angular": "^18.0.4",
"@angular/cli": "^18.0.4",
"@angular/compiler-cli": "^18.0.0",
"@angular/localize": "^18.0.0",
"@types/jasmine": "~5.1.0",
"jasmine-core": "~5.1.0",
"karma": "~6.4.0",
......@@ -38,7 +47,6 @@
"version": "2.3.0",
"resolved": "https://registry.npmjs.org/@ampproject/remapping/-/remapping-2.3.0.tgz",
"integrity": "sha512-30iZtAPgz+LTIYoeivqYo853f02jBYSd5uGnGpkFV0M3xOt9aN73erkgYAmZU43x4VfqcnLxW9Kpg3R5LC4YYw==",
"dev": true,
"license": "Apache-2.0",
"dependencies": {
"@jridgewell/gen-mapping": "^0.3.5",
......@@ -353,6 +361,23 @@
}
}
},
"node_modules/@angular/cdk": {
"version": "18.0.3",
"resolved": "https://registry.npmjs.org/@angular/cdk/-/cdk-18.0.3.tgz",
"integrity": "sha512-F6kXAoIWUbvhvbSGnMxrKJZsI7rhGKDXVFFf9m+ZQAbqboSyDbbszux7Em4CEh27LaXYNFltUcKdCQ3hdp7Kig==",
"license": "MIT",
"dependencies": {
"tslib": "^2.3.0"
},
"optionalDependencies": {
"parse5": "^7.1.2"
},
"peerDependencies": {
"@angular/common": "^18.0.0 || ^19.0.0",
"@angular/core": "^18.0.0 || ^19.0.0",
"rxjs": "^6.5.3 || ^7.4.0"
}
},
"node_modules/@angular/cli": {
"version": "18.0.4",
"resolved": "https://registry.npmjs.org/@angular/cli/-/cli-18.0.4.tgz",
......@@ -427,7 +452,6 @@
"version": "18.0.3",
"resolved": "https://registry.npmjs.org/@angular/compiler-cli/-/compiler-cli-18.0.3.tgz",
"integrity": "sha512-mxwQEeP94YBM6C9A2YfkV7ug1sHgh0fU/TSBpQcm5ni4cZiVPu6q/+Ft7hyFTKe2p3tKQme33+xVjsWhtOCx0A==",
"dev": true,
"license": "MIT",
"dependencies": {
"@babel/core": "7.24.7",
......@@ -456,7 +480,6 @@
"version": "7.24.7",
"resolved": "https://registry.npmjs.org/@babel/core/-/core-7.24.7.tgz",
"integrity": "sha512-nykK+LEK86ahTkX/3TgauT0ikKoNCfKHEaZYTUVupJdTLzGNvrblu4u6fa7DhZONAltdf8e662t/abY8idrd/g==",
"dev": true,
"license": "MIT",
"dependencies": {
"@ampproject/remapping": "^2.2.0",
......@@ -487,14 +510,12 @@
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-2.0.0.tgz",
"integrity": "sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==",
"dev": true,
"license": "MIT"
},
"node_modules/@angular/compiler-cli/node_modules/@babel/core/node_modules/semver": {
"version": "6.3.1",
"resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz",
"integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==",
"dev": true,
"license": "ISC",
"bin": {
"semver": "bin/semver.js"
......@@ -504,7 +525,6 @@
"version": "7.24.7",
"resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.24.7.tgz",
"integrity": "sha512-oipXieGC3i45Y1A41t4tAqpnEZWgB/lC6Ehh6+rOviR5XWpTtMmLN+fGjz9vOiNRt0p6RtO6DtD0pdU3vpqdSA==",
"dev": true,
"license": "MIT",
"dependencies": {
"@babel/types": "^7.24.7",
......@@ -550,6 +570,156 @@
"rxjs": "^6.5.3 || ^7.4.0"
}
},
"node_modules/@angular/localize": {
"version": "18.0.3",
"resolved": "https://registry.npmjs.org/@angular/localize/-/localize-18.0.3.tgz",
"integrity": "sha512-IrqLmuJncctJsgj5Z3uO68vuQBxdLdEB2B9p0SfX/oiWg2wYScKirePS5chsj3ZciwVWH5wc06cEzlZ+bSgNSA==",
"license": "MIT",
"dependencies": {
"@babel/core": "7.24.7",
"@types/babel__core": "7.20.5",
"fast-glob": "3.3.2",
"yargs": "^17.2.1"
},
"bin": {
"localize-extract": "tools/bundles/src/extract/cli.js",
"localize-migrate": "tools/bundles/src/migrate/cli.js",
"localize-translate": "tools/bundles/src/translate/cli.js"
},
"engines": {
"node": "^18.19.1 || ^20.11.1 || >=22.0.0"
},
"peerDependencies": {
"@angular/compiler": "18.0.3",
"@angular/compiler-cli": "18.0.3"
}
},
"node_modules/@angular/localize/node_modules/@babel/core": {
"version": "7.24.7",
"resolved": "https://registry.npmjs.org/@babel/core/-/core-7.24.7.tgz",
"integrity": "sha512-nykK+LEK86ahTkX/3TgauT0ikKoNCfKHEaZYTUVupJdTLzGNvrblu4u6fa7DhZONAltdf8e662t/abY8idrd/g==",
"license": "MIT",
"dependencies": {
"@ampproject/remapping": "^2.2.0",
"@babel/code-frame": "^7.24.7",
"@babel/generator": "^7.24.7",
"@babel/helper-compilation-targets": "^7.24.7",
"@babel/helper-module-transforms": "^7.24.7",
"@babel/helpers": "^7.24.7",
"@babel/parser": "^7.24.7",
"@babel/template": "^7.24.7",
"@babel/traverse": "^7.24.7",
"@babel/types": "^7.24.7",
"convert-source-map": "^2.0.0",
"debug": "^4.1.0",
"gensync": "^1.0.0-beta.2",
"json5": "^2.2.3",
"semver": "^6.3.1"
},
"engines": {
"node": ">=6.9.0"
},
"funding": {
"type": "opencollective",
"url": "https://opencollective.com/babel"
}
},
"node_modules/@angular/localize/node_modules/@babel/generator": {
"version": "7.24.7",
"resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.24.7.tgz",
"integrity": "sha512-oipXieGC3i45Y1A41t4tAqpnEZWgB/lC6Ehh6+rOviR5XWpTtMmLN+fGjz9vOiNRt0p6RtO6DtD0pdU3vpqdSA==",
"license": "MIT",
"dependencies": {
"@babel/types": "^7.24.7",
"@jridgewell/gen-mapping": "^0.3.5",
"@jridgewell/trace-mapping": "^0.3.25",
"jsesc": "^2.5.1"
},
"engines": {
"node": ">=6.9.0"
}
},
"node_modules/@angular/localize/node_modules/convert-source-map": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-2.0.0.tgz",
"integrity": "sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==",
"license": "MIT"
},
"node_modules/@angular/localize/node_modules/semver": {
"version": "6.3.1",
"resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz",
"integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==",
"license": "ISC",
"bin": {
"semver": "bin/semver.js"
}
},
"node_modules/@angular/material": {
"version": "18.0.3",
"resolved": "https://registry.npmjs.org/@angular/material/-/material-18.0.3.tgz",
"integrity": "sha512-VIlK+0CxreAkDmr05TKelTr11I7yUtGPwRTFaWfQtXNkYEwGE1iuZGz3Iz8otxvHsTLC74Er4vMSYndwJvMyjQ==",
"license": "MIT",
"dependencies": {
"@material/animation": "15.0.0-canary.7f224ddd4.0",
"@material/auto-init": "15.0.0-canary.7f224ddd4.0",
"@material/banner": "15.0.0-canary.7f224ddd4.0",
"@material/base": "15.0.0-canary.7f224ddd4.0",
"@material/button": "15.0.0-canary.7f224ddd4.0",
"@material/card": "15.0.0-canary.7f224ddd4.0",
"@material/checkbox": "15.0.0-canary.7f224ddd4.0",
"@material/chips": "15.0.0-canary.7f224ddd4.0",
"@material/circular-progress": "15.0.0-canary.7f224ddd4.0",
"@material/data-table": "15.0.0-canary.7f224ddd4.0",
"@material/density": "15.0.0-canary.7f224ddd4.0",
"@material/dialog": "15.0.0-canary.7f224ddd4.0",
"@material/dom": "15.0.0-canary.7f224ddd4.0",
"@material/drawer": "15.0.0-canary.7f224ddd4.0",
"@material/elevation": "15.0.0-canary.7f224ddd4.0",
"@material/fab": "15.0.0-canary.7f224ddd4.0",
"@material/feature-targeting": "15.0.0-canary.7f224ddd4.0",
"@material/floating-label": "15.0.0-canary.7f224ddd4.0",
"@material/form-field": "15.0.0-canary.7f224ddd4.0",
"@material/icon-button": "15.0.0-canary.7f224ddd4.0",
"@material/image-list": "15.0.0-canary.7f224ddd4.0",
"@material/layout-grid": "15.0.0-canary.7f224ddd4.0",
"@material/line-ripple": "15.0.0-canary.7f224ddd4.0",
"@material/linear-progress": "15.0.0-canary.7f224ddd4.0",
"@material/list": "15.0.0-canary.7f224ddd4.0",
"@material/menu": "15.0.0-canary.7f224ddd4.0",
"@material/menu-surface": "15.0.0-canary.7f224ddd4.0",
"@material/notched-outline": "15.0.0-canary.7f224ddd4.0",
"@material/radio": "15.0.0-canary.7f224ddd4.0",
"@material/ripple": "15.0.0-canary.7f224ddd4.0",
"@material/rtl": "15.0.0-canary.7f224ddd4.0",
"@material/segmented-button": "15.0.0-canary.7f224ddd4.0",
"@material/select": "15.0.0-canary.7f224ddd4.0",
"@material/shape": "15.0.0-canary.7f224ddd4.0",
"@material/slider": "15.0.0-canary.7f224ddd4.0",
"@material/snackbar": "15.0.0-canary.7f224ddd4.0",
"@material/switch": "15.0.0-canary.7f224ddd4.0",
"@material/tab": "15.0.0-canary.7f224ddd4.0",
"@material/tab-bar": "15.0.0-canary.7f224ddd4.0",
"@material/tab-indicator": "15.0.0-canary.7f224ddd4.0",
"@material/tab-scroller": "15.0.0-canary.7f224ddd4.0",
"@material/textfield": "15.0.0-canary.7f224ddd4.0",
"@material/theme": "15.0.0-canary.7f224ddd4.0",
"@material/tokens": "15.0.0-canary.7f224ddd4.0",
"@material/tooltip": "15.0.0-canary.7f224ddd4.0",
"@material/top-app-bar": "15.0.0-canary.7f224ddd4.0",
"@material/touch-target": "15.0.0-canary.7f224ddd4.0",
"@material/typography": "15.0.0-canary.7f224ddd4.0",
"tslib": "^2.3.0"
},
"peerDependencies": {
"@angular/animations": "^18.0.0 || ^19.0.0",
"@angular/cdk": "18.0.3",
"@angular/common": "^18.0.0 || ^19.0.0",
"@angular/core": "^18.0.0 || ^19.0.0",
"@angular/forms": "^18.0.0 || ^19.0.0",
"@angular/platform-browser": "^18.0.0 || ^19.0.0",
"rxjs": "^6.5.3 || ^7.4.0"
}
},
"node_modules/@angular/platform-browser": {
"version": "18.0.3",
"resolved": "https://registry.npmjs.org/@angular/platform-browser/-/platform-browser-18.0.3.tgz",
......@@ -612,7 +782,6 @@
"version": "7.24.7",
"resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.24.7.tgz",
"integrity": "sha512-BcYH1CVJBO9tvyIZ2jVeXgSIMvGZ2FDRvDdOIVQyuklNKSsx+eppDEBq/g47Ayw+RqNFE+URvOShmf+f/qwAlA==",
"dev": true,
"license": "MIT",
"dependencies": {
"@babel/highlight": "^7.24.7",
......@@ -626,7 +795,6 @@
"version": "7.24.7",
"resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.24.7.tgz",
"integrity": "sha512-qJzAIcv03PyaWqxRgO4mSU3lihncDT296vnyuE2O8uA4w3UHWI4S3hgeZd1L8W1Bft40w9JxJ2b412iDUFFRhw==",
"dev": true,
"license": "MIT",
"engines": {
"node": ">=6.9.0"
......@@ -636,7 +804,6 @@
"version": "7.24.5",
"resolved": "https://registry.npmjs.org/@babel/core/-/core-7.24.5.tgz",
"integrity": "sha512-tVQRucExLQ02Boi4vdPp49svNGcfL2GhdTCT9aldhXgCJVAI21EtRfBettiuLUwce/7r6bFdgs6JFkcdTiFttA==",
"dev": true,
"license": "MIT",
"dependencies": {
"@ampproject/remapping": "^2.2.0",
......@@ -667,14 +834,12 @@
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-2.0.0.tgz",
"integrity": "sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==",
"dev": true,
"license": "MIT"
},
"node_modules/@babel/core/node_modules/semver": {
"version": "6.3.1",
"resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz",
"integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==",
"dev": true,
"license": "ISC",
"bin": {
"semver": "bin/semver.js"
......@@ -684,7 +849,6 @@
"version": "7.24.5",
"resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.24.5.tgz",
"integrity": "sha512-x32i4hEXvr+iI0NEoEfDKzlemF8AmtOP8CcrRaEcpzysWuoEb1KknpcvMsHKPONoKZiDuItklgWhB18xEhr9PA==",
"dev": true,
"license": "MIT",
"dependencies": {
"@babel/types": "^7.24.5",
......@@ -727,7 +891,6 @@
"version": "7.24.7",
"resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.24.7.tgz",
"integrity": "sha512-ctSdRHBi20qWOfy27RUb4Fhp07KSJ3sXcuSvTrXrc4aG8NSYDo1ici3Vhg9bg69y5bj0Mr1lh0aeEgTvc12rMg==",
"dev": true,
"license": "MIT",
"dependencies": {
"@babel/compat-data": "^7.24.7",
......@@ -744,7 +907,6 @@
"version": "6.3.1",
"resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz",
"integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==",
"dev": true,
"license": "ISC",
"bin": {
"semver": "bin/semver.js"
......@@ -872,7 +1034,6 @@
"version": "7.24.7",
"resolved": "https://registry.npmjs.org/@babel/helper-environment-visitor/-/helper-environment-visitor-7.24.7.tgz",
"integrity": "sha512-DoiN84+4Gnd0ncbBOM9AZENV4a5ZiL39HYMyZJGZ/AZEykHYdJw0wW3kdcsh9/Kn+BRXHLkkklZ51ecPKmI1CQ==",
"dev": true,
"license": "MIT",
"dependencies": {
"@babel/types": "^7.24.7"
......@@ -885,7 +1046,6 @@
"version": "7.24.7",
"resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.24.7.tgz",
"integrity": "sha512-FyoJTsj/PEUWu1/TYRiXTIHc8lbw+TDYkZuoE43opPS5TrI7MyONBE1oNvfguEXAD9yhQRrVBnXdXzSLQl9XnA==",
"dev": true,
"license": "MIT",
"dependencies": {
"@babel/template": "^7.24.7",
......@@ -899,7 +1059,6 @@
"version": "7.24.7",
"resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.24.7.tgz",
"integrity": "sha512-MJJwhkoGy5c4ehfoRyrJ/owKeMl19U54h27YYftT0o2teQ3FJ3nQUf/I3LlJsX4l3qlw7WRXUmiyajvHXoTubQ==",
"dev": true,
"license": "MIT",
"dependencies": {
"@babel/types": "^7.24.7"
......@@ -926,7 +1085,6 @@
"version": "7.24.7",
"resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.24.7.tgz",
"integrity": "sha512-8AyH3C+74cgCVVXow/myrynrAGv+nTVg5vKu2nZph9x7RcRwzmh0VFallJuFTZ9mx6u4eSdXZfcOzSqTUm0HCA==",
"dev": true,
"license": "MIT",
"dependencies": {
"@babel/traverse": "^7.24.7",
......@@ -940,7 +1098,6 @@
"version": "7.24.7",
"resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.24.7.tgz",
"integrity": "sha512-1fuJEwIrp+97rM4RWdO+qrRsZlAeL1lQJoPqtCYWv0NL115XM93hIH4CSRln2w52SqvmY5hqdtauB6QFCDiZNQ==",
"dev": true,
"license": "MIT",
"dependencies": {
"@babel/helper-environment-visitor": "^7.24.7",
......@@ -960,7 +1117,6 @@
"version": "7.24.7",
"resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.24.7.tgz",
"integrity": "sha512-oy5V7pD+UvfkEATUKvIjvIAH/xCzfsFVw7ygW2SI6NClZzquT+mwdTfgfdbUiceh6iQO0CHtCPsyze/MZ2YbAA==",
"dev": true,
"license": "MIT",
"dependencies": {
"@babel/types": "^7.24.7"
......@@ -1045,7 +1201,6 @@
"version": "7.24.7",
"resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.24.7.tgz",
"integrity": "sha512-zBAIvbCMh5Ts+b86r/CjU+4XGYIs+R1j951gxI3KmmxBMhCg4oQMsv6ZXQ64XOm/cvzfU1FmoCyt6+owc5QMYg==",
"dev": true,
"license": "MIT",
"dependencies": {
"@babel/traverse": "^7.24.7",
......@@ -1086,7 +1241,6 @@
"version": "7.24.7",
"resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.24.7.tgz",
"integrity": "sha512-7MbVt6xrwFQbunH2DNQsAP5sTGxfqQtErvBIvIMi6EQnbgUOuVYanvREcmFrOPhoXBrTtjhhP+lW+o5UfK+tDg==",
"dev": true,
"license": "MIT",
"engines": {
"node": ">=6.9.0"
......@@ -1096,7 +1250,6 @@
"version": "7.24.7",
"resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.24.7.tgz",
"integrity": "sha512-rR+PBcQ1SMQDDyF6X0wxtG8QyLCgUB0eRAGguqRLfkCA87l7yAP7ehq8SNj96OOGTO8OBV70KhuFYcIkHXOg0w==",
"dev": true,
"license": "MIT",
"engines": {
"node": ">=6.9.0"
......@@ -1106,7 +1259,6 @@
"version": "7.24.7",
"resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.24.7.tgz",
"integrity": "sha512-yy1/KvjhV/ZCL+SM7hBrvnZJ3ZuT9OuZgIJAGpPEToANvc3iM6iDvBnRjtElWibHU6n8/LPR/EjX9EtIEYO3pw==",
"dev": true,
"license": "MIT",
"engines": {
"node": ">=6.9.0"
......@@ -1132,7 +1284,6 @@
"version": "7.24.7",
"resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.24.7.tgz",
"integrity": "sha512-NlmJJtvcw72yRJRcnCmGvSi+3jDEg8qFu3z0AFoymmzLx5ERVWyzd9kVXr7Th9/8yIJi2Zc6av4Tqz3wFs8QWg==",
"dev": true,
"license": "MIT",
"dependencies": {
"@babel/template": "^7.24.7",
......@@ -1146,7 +1297,6 @@
"version": "7.24.7",
"resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.24.7.tgz",
"integrity": "sha512-EStJpq4OuY8xYfhGVXngigBJRWxftKX9ksiGDnmlY3o7B/V7KIAc9X4oiK87uPJSc/vs5L869bem5fhZa8caZw==",
"dev": true,
"license": "MIT",
"dependencies": {
"@babel/helper-validator-identifier": "^7.24.7",
......@@ -1162,7 +1312,6 @@
"version": "7.24.7",
"resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.24.7.tgz",
"integrity": "sha512-9uUYRm6OqQrCqQdG1iCBwBPZgN8ciDBro2nIOFaiRz1/BCxaI7CNvQbDHvsArAC7Tw9Hda/B3U+6ui9u4HWXPw==",
"dev": true,
"license": "MIT",
"bin": {
"parser": "bin/babel-parser.js"
......@@ -2539,7 +2688,6 @@
"version": "7.24.7",
"resolved": "https://registry.npmjs.org/@babel/template/-/template-7.24.7.tgz",
"integrity": "sha512-jYqfPrU9JTF0PmPy1tLYHW4Mp4KlgxJD9l2nP9fD6yT/ICi554DmrWBAEYpIelzjHf1msDP3PxJIRt/nFNfBig==",
"dev": true,
"license": "MIT",
"dependencies": {
"@babel/code-frame": "^7.24.7",
......@@ -2554,7 +2702,6 @@
"version": "7.24.7",
"resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.24.7.tgz",
"integrity": "sha512-yb65Ed5S/QAcewNPh0nZczy9JdYXkkAbIsEo+P7BE7yO3txAY30Y/oPa3QkQ5It3xVG2kpKMg9MsdxZaO31uKA==",
"dev": true,
"license": "MIT",
"dependencies": {
"@babel/code-frame": "^7.24.7",
......@@ -2576,7 +2723,6 @@
"version": "7.24.7",
"resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.24.7.tgz",
"integrity": "sha512-oipXieGC3i45Y1A41t4tAqpnEZWgB/lC6Ehh6+rOviR5XWpTtMmLN+fGjz9vOiNRt0p6RtO6DtD0pdU3vpqdSA==",
"dev": true,
"license": "MIT",
"dependencies": {
"@babel/types": "^7.24.7",
......@@ -2592,7 +2738,6 @@
"version": "7.24.7",
"resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.24.7.tgz",
"integrity": "sha512-oy5V7pD+UvfkEATUKvIjvIAH/xCzfsFVw7ygW2SI6NClZzquT+mwdTfgfdbUiceh6iQO0CHtCPsyze/MZ2YbAA==",
"dev": true,
"license": "MIT",
"dependencies": {
"@babel/types": "^7.24.7"
......@@ -2605,7 +2750,6 @@
"version": "7.24.7",
"resolved": "https://registry.npmjs.org/@babel/types/-/types-7.24.7.tgz",
"integrity": "sha512-XEFXSlxiG5td2EJRe8vOmRbaXVgfcBlszKujvVmWIK/UpywWljQCfzAv3RQCGujWQ1RD4YYWEAqDXfuJiy8f5Q==",
"dev": true,
"license": "MIT",
"dependencies": {
"@babel/helper-string-parser": "^7.24.7",
......@@ -3171,7 +3315,6 @@
"version": "0.3.5",
"resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.5.tgz",
"integrity": "sha512-IzL8ZoEDIBRWEzlCcRhOaCupYyN5gdIK+Q6fbFdPDg6HqX6jpkItn7DFIpW9LQzXG6Df9sA7+OKnq0qlz/GaQg==",
"dev": true,
"license": "MIT",
"dependencies": {
"@jridgewell/set-array": "^1.2.1",
......@@ -3186,7 +3329,6 @@
"version": "3.1.2",
"resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.2.tgz",
"integrity": "sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==",
"dev": true,
"license": "MIT",
"engines": {
"node": ">=6.0.0"
......@@ -3196,7 +3338,6 @@
"version": "1.2.1",
"resolved": "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.2.1.tgz",
"integrity": "sha512-R8gLRTZeyp03ymzP/6Lil/28tGeGEzhx1q2k703KGWRAI1VdvPIXdG70VJc2pAMw3NA6JKL5hhFu1sJX0Mnn/A==",
"dev": true,
"license": "MIT",
"engines": {
"node": ">=6.0.0"
......@@ -3217,14 +3358,12 @@
"version": "1.4.15",
"resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.15.tgz",
"integrity": "sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg==",
"dev": true,
"license": "MIT"
},
"node_modules/@jridgewell/trace-mapping": {
"version": "0.3.25",
"resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.25.tgz",
"integrity": "sha512-vNk6aEwybGtawWmy/PzwnGDOjCkLWSD2wqvjGGAgOAwCGWySYXfYoxt00IJkTF+8Lb57DwOb3Aa0o9CApepiYQ==",
"dev": true,
"license": "MIT",
"dependencies": {
"@jridgewell/resolve-uri": "^3.1.0",
......@@ -3392,6 +3531,808 @@
"win32"
]
},
"node_modules/@material/animation": {
"version": "15.0.0-canary.7f224ddd4.0",
"resolved": "https://registry.npmjs.org/@material/animation/-/animation-15.0.0-canary.7f224ddd4.0.tgz",
"integrity": "sha512-1GSJaPKef+7HRuV+HusVZHps64cmZuOItDbt40tjJVaikcaZvwmHlcTxRIqzcRoCdt5ZKHh3NoO7GB9Khg4Jnw==",
"license": "MIT",
"dependencies": {
"tslib": "^2.1.0"
}
},
"node_modules/@material/auto-init": {
"version": "15.0.0-canary.7f224ddd4.0",
"resolved": "https://registry.npmjs.org/@material/auto-init/-/auto-init-15.0.0-canary.7f224ddd4.0.tgz",
"integrity": "sha512-t7ZGpRJ3ec0QDUO0nJu/SMgLW7qcuG2KqIsEYD1Ej8qhI2xpdR2ydSDQOkVEitXmKoGol1oq4nYSBjTlB65GqA==",
"license": "MIT",
"dependencies": {
"@material/base": "15.0.0-canary.7f224ddd4.0",
"tslib": "^2.1.0"
}
},
"node_modules/@material/banner": {
"version": "15.0.0-canary.7f224ddd4.0",
"resolved": "https://registry.npmjs.org/@material/banner/-/banner-15.0.0-canary.7f224ddd4.0.tgz",
"integrity": "sha512-g9wBUZzYBizyBcBQXTIafnRUUPi7efU9gPJfzeGgkynXiccP/vh5XMmH+PBxl5v+4MlP/d4cZ2NUYoAN7UTqSA==",
"license": "MIT",
"dependencies": {
"@material/base": "15.0.0-canary.7f224ddd4.0",
"@material/button": "15.0.0-canary.7f224ddd4.0",
"@material/dom": "15.0.0-canary.7f224ddd4.0",
"@material/elevation": "15.0.0-canary.7f224ddd4.0",
"@material/feature-targeting": "15.0.0-canary.7f224ddd4.0",
"@material/ripple": "15.0.0-canary.7f224ddd4.0",
"@material/rtl": "15.0.0-canary.7f224ddd4.0",
"@material/shape": "15.0.0-canary.7f224ddd4.0",
"@material/theme": "15.0.0-canary.7f224ddd4.0",
"@material/tokens": "15.0.0-canary.7f224ddd4.0",
"@material/typography": "15.0.0-canary.7f224ddd4.0",
"tslib": "^2.1.0"
}
},
"node_modules/@material/base": {
"version": "15.0.0-canary.7f224ddd4.0",
"resolved": "https://registry.npmjs.org/@material/base/-/base-15.0.0-canary.7f224ddd4.0.tgz",
"integrity": "sha512-I9KQOKXpLfJkP8MqZyr8wZIzdPHrwPjFvGd9zSK91/vPyE4hzHRJc/0njsh9g8Lm9PRYLbifXX+719uTbHxx+A==",
"license": "MIT",
"dependencies": {
"tslib": "^2.1.0"
}
},
"node_modules/@material/button": {
"version": "15.0.0-canary.7f224ddd4.0",
"resolved": "https://registry.npmjs.org/@material/button/-/button-15.0.0-canary.7f224ddd4.0.tgz",
"integrity": "sha512-BHB7iyHgRVH+JF16+iscR+Qaic+p7LU1FOLgP8KucRlpF9tTwIxQA6mJwGRi5gUtcG+vyCmzVS+hIQ6DqT/7BA==",
"license": "MIT",
"dependencies": {
"@material/density": "15.0.0-canary.7f224ddd4.0",
"@material/dom": "15.0.0-canary.7f224ddd4.0",
"@material/elevation": "15.0.0-canary.7f224ddd4.0",
"@material/feature-targeting": "15.0.0-canary.7f224ddd4.0",
"@material/focus-ring": "15.0.0-canary.7f224ddd4.0",
"@material/ripple": "15.0.0-canary.7f224ddd4.0",
"@material/rtl": "15.0.0-canary.7f224ddd4.0",
"@material/shape": "15.0.0-canary.7f224ddd4.0",
"@material/theme": "15.0.0-canary.7f224ddd4.0",
"@material/tokens": "15.0.0-canary.7f224ddd4.0",
"@material/touch-target": "15.0.0-canary.7f224ddd4.0",
"@material/typography": "15.0.0-canary.7f224ddd4.0",
"tslib": "^2.1.0"
}
},
"node_modules/@material/card": {
"version": "15.0.0-canary.7f224ddd4.0",
"resolved": "https://registry.npmjs.org/@material/card/-/card-15.0.0-canary.7f224ddd4.0.tgz",
"integrity": "sha512-kt7y9/IWOtJTr3Z/AoWJT3ZLN7CLlzXhx2udCLP9ootZU2bfGK0lzNwmo80bv/pJfrY9ihQKCtuGTtNxUy+vIw==",
"license": "MIT",
"dependencies": {
"@material/dom": "15.0.0-canary.7f224ddd4.0",
"@material/elevation": "15.0.0-canary.7f224ddd4.0",
"@material/feature-targeting": "15.0.0-canary.7f224ddd4.0",
"@material/ripple": "15.0.0-canary.7f224ddd4.0",
"@material/rtl": "15.0.0-canary.7f224ddd4.0",
"@material/shape": "15.0.0-canary.7f224ddd4.0",
"@material/theme": "15.0.0-canary.7f224ddd4.0",
"@material/tokens": "15.0.0-canary.7f224ddd4.0",
"tslib": "^2.1.0"
}
},
"node_modules/@material/checkbox": {
"version": "15.0.0-canary.7f224ddd4.0",
"resolved": "https://registry.npmjs.org/@material/checkbox/-/checkbox-15.0.0-canary.7f224ddd4.0.tgz",
"integrity": "sha512-rURcrL5O1u6hzWR+dNgiQ/n89vk6tdmdP3mZgnxJx61q4I/k1yijKqNJSLrkXH7Rto3bM5NRKMOlgvMvVd7UMQ==",
"license": "MIT",
"dependencies": {
"@material/animation": "15.0.0-canary.7f224ddd4.0",
"@material/base": "15.0.0-canary.7f224ddd4.0",
"@material/density": "15.0.0-canary.7f224ddd4.0",
"@material/dom": "15.0.0-canary.7f224ddd4.0",
"@material/feature-targeting": "15.0.0-canary.7f224ddd4.0",
"@material/focus-ring": "15.0.0-canary.7f224ddd4.0",
"@material/ripple": "15.0.0-canary.7f224ddd4.0",
"@material/rtl": "15.0.0-canary.7f224ddd4.0",
"@material/theme": "15.0.0-canary.7f224ddd4.0",
"@material/touch-target": "15.0.0-canary.7f224ddd4.0",
"tslib": "^2.1.0"
}
},
"node_modules/@material/chips": {
"version": "15.0.0-canary.7f224ddd4.0",
"resolved": "https://registry.npmjs.org/@material/chips/-/chips-15.0.0-canary.7f224ddd4.0.tgz",
"integrity": "sha512-AYAivV3GSk/T/nRIpH27sOHFPaSMrE3L0WYbnb5Wa93FgY8a0fbsFYtSH2QmtwnzXveg+B1zGTt7/xIIcynKdQ==",
"license": "MIT",
"dependencies": {
"@material/animation": "15.0.0-canary.7f224ddd4.0",
"@material/base": "15.0.0-canary.7f224ddd4.0",
"@material/checkbox": "15.0.0-canary.7f224ddd4.0",
"@material/density": "15.0.0-canary.7f224ddd4.0",
"@material/dom": "15.0.0-canary.7f224ddd4.0",
"@material/elevation": "15.0.0-canary.7f224ddd4.0",
"@material/feature-targeting": "15.0.0-canary.7f224ddd4.0",
"@material/focus-ring": "15.0.0-canary.7f224ddd4.0",
"@material/ripple": "15.0.0-canary.7f224ddd4.0",
"@material/rtl": "15.0.0-canary.7f224ddd4.0",
"@material/shape": "15.0.0-canary.7f224ddd4.0",
"@material/theme": "15.0.0-canary.7f224ddd4.0",
"@material/tokens": "15.0.0-canary.7f224ddd4.0",
"@material/touch-target": "15.0.0-canary.7f224ddd4.0",
"@material/typography": "15.0.0-canary.7f224ddd4.0",
"safevalues": "^0.3.4",
"tslib": "^2.1.0"
}
},
"node_modules/@material/circular-progress": {
"version": "15.0.0-canary.7f224ddd4.0",
"resolved": "https://registry.npmjs.org/@material/circular-progress/-/circular-progress-15.0.0-canary.7f224ddd4.0.tgz",
"integrity": "sha512-DJrqCKb+LuGtjNvKl8XigvyK02y36GRkfhMUYTcJEi3PrOE00bwXtyj7ilhzEVshQiXg6AHGWXtf5UqwNrx3Ow==",
"license": "MIT",
"dependencies": {
"@material/animation": "15.0.0-canary.7f224ddd4.0",
"@material/base": "15.0.0-canary.7f224ddd4.0",
"@material/dom": "15.0.0-canary.7f224ddd4.0",
"@material/feature-targeting": "15.0.0-canary.7f224ddd4.0",
"@material/progress-indicator": "15.0.0-canary.7f224ddd4.0",
"@material/rtl": "15.0.0-canary.7f224ddd4.0",
"@material/theme": "15.0.0-canary.7f224ddd4.0",
"tslib": "^2.1.0"
}
},
"node_modules/@material/data-table": {
"version": "15.0.0-canary.7f224ddd4.0",
"resolved": "https://registry.npmjs.org/@material/data-table/-/data-table-15.0.0-canary.7f224ddd4.0.tgz",
"integrity": "sha512-/2WZsuBIq9z9RWYF5Jo6b7P6u0fwit+29/mN7rmAZ6akqUR54nXyNfoSNiyydMkzPlZZsep5KrSHododDhBZbA==",
"license": "MIT",
"dependencies": {
"@material/animation": "15.0.0-canary.7f224ddd4.0",
"@material/base": "15.0.0-canary.7f224ddd4.0",
"@material/checkbox": "15.0.0-canary.7f224ddd4.0",
"@material/density": "15.0.0-canary.7f224ddd4.0",
"@material/dom": "15.0.0-canary.7f224ddd4.0",
"@material/elevation": "15.0.0-canary.7f224ddd4.0",
"@material/feature-targeting": "15.0.0-canary.7f224ddd4.0",
"@material/icon-button": "15.0.0-canary.7f224ddd4.0",
"@material/linear-progress": "15.0.0-canary.7f224ddd4.0",
"@material/list": "15.0.0-canary.7f224ddd4.0",
"@material/menu": "15.0.0-canary.7f224ddd4.0",
"@material/rtl": "15.0.0-canary.7f224ddd4.0",
"@material/select": "15.0.0-canary.7f224ddd4.0",
"@material/shape": "15.0.0-canary.7f224ddd4.0",
"@material/theme": "15.0.0-canary.7f224ddd4.0",
"@material/tokens": "15.0.0-canary.7f224ddd4.0",
"@material/touch-target": "15.0.0-canary.7f224ddd4.0",
"@material/typography": "15.0.0-canary.7f224ddd4.0",
"tslib": "^2.1.0"
}
},
"node_modules/@material/density": {
"version": "15.0.0-canary.7f224ddd4.0",
"resolved": "https://registry.npmjs.org/@material/density/-/density-15.0.0-canary.7f224ddd4.0.tgz",
"integrity": "sha512-o9EXmGKVpiQ6mHhyV3oDDzc78Ow3E7v8dlaOhgaDSXgmqaE8v5sIlLNa/LKSyUga83/fpGk3QViSGXotpQx0jA==",
"license": "MIT",
"dependencies": {
"tslib": "^2.1.0"
}
},
"node_modules/@material/dialog": {
"version": "15.0.0-canary.7f224ddd4.0",
"resolved": "https://registry.npmjs.org/@material/dialog/-/dialog-15.0.0-canary.7f224ddd4.0.tgz",
"integrity": "sha512-u0XpTlv1JqWC/bQ3DavJ1JguofTelLT2wloj59l3/1b60jv42JQ6Am7jU3I8/SIUB1MKaW7dYocXjDWtWJakLA==",
"license": "MIT",
"dependencies": {
"@material/animation": "15.0.0-canary.7f224ddd4.0",
"@material/base": "15.0.0-canary.7f224ddd4.0",
"@material/button": "15.0.0-canary.7f224ddd4.0",
"@material/dom": "15.0.0-canary.7f224ddd4.0",
"@material/elevation": "15.0.0-canary.7f224ddd4.0",
"@material/feature-targeting": "15.0.0-canary.7f224ddd4.0",
"@material/icon-button": "15.0.0-canary.7f224ddd4.0",
"@material/ripple": "15.0.0-canary.7f224ddd4.0",
"@material/rtl": "15.0.0-canary.7f224ddd4.0",
"@material/shape": "15.0.0-canary.7f224ddd4.0",
"@material/theme": "15.0.0-canary.7f224ddd4.0",
"@material/tokens": "15.0.0-canary.7f224ddd4.0",
"@material/touch-target": "15.0.0-canary.7f224ddd4.0",
"@material/typography": "15.0.0-canary.7f224ddd4.0",
"tslib": "^2.1.0"
}
},
"node_modules/@material/dom": {
"version": "15.0.0-canary.7f224ddd4.0",
"resolved": "https://registry.npmjs.org/@material/dom/-/dom-15.0.0-canary.7f224ddd4.0.tgz",
"integrity": "sha512-mQ1HT186GPQSkRg5S18i70typ5ZytfjL09R0gJ2Qg5/G+MLCGi7TAjZZSH65tuD/QGOjel4rDdWOTmYbPYV6HA==",
"license": "MIT",
"dependencies": {
"@material/feature-targeting": "15.0.0-canary.7f224ddd4.0",
"@material/rtl": "15.0.0-canary.7f224ddd4.0",
"tslib": "^2.1.0"
}
},
"node_modules/@material/drawer": {
"version": "15.0.0-canary.7f224ddd4.0",
"resolved": "https://registry.npmjs.org/@material/drawer/-/drawer-15.0.0-canary.7f224ddd4.0.tgz",
"integrity": "sha512-qyO0W0KBftfH8dlLR0gVAgv7ZHNvU8ae11Ao6zJif/YxcvK4+gph1z8AO4H410YmC2kZiwpSKyxM1iQCCzbb4g==",
"license": "MIT",
"dependencies": {
"@material/animation": "15.0.0-canary.7f224ddd4.0",
"@material/base": "15.0.0-canary.7f224ddd4.0",
"@material/dom": "15.0.0-canary.7f224ddd4.0",
"@material/elevation": "15.0.0-canary.7f224ddd4.0",
"@material/feature-targeting": "15.0.0-canary.7f224ddd4.0",
"@material/list": "15.0.0-canary.7f224ddd4.0",
"@material/ripple": "15.0.0-canary.7f224ddd4.0",
"@material/rtl": "15.0.0-canary.7f224ddd4.0",
"@material/shape": "15.0.0-canary.7f224ddd4.0",
"@material/theme": "15.0.0-canary.7f224ddd4.0",
"@material/typography": "15.0.0-canary.7f224ddd4.0",
"tslib": "^2.1.0"
}
},
"node_modules/@material/elevation": {
"version": "15.0.0-canary.7f224ddd4.0",
"resolved": "https://registry.npmjs.org/@material/elevation/-/elevation-15.0.0-canary.7f224ddd4.0.tgz",
"integrity": "sha512-tV6s4/pUBECedaI36Yj18KmRCk1vfue/JP/5yYRlFNnLMRVISePbZaKkn/BHXVf+26I3W879+XqIGlDVdmOoMA==",
"license": "MIT",
"dependencies": {
"@material/animation": "15.0.0-canary.7f224ddd4.0",
"@material/base": "15.0.0-canary.7f224ddd4.0",
"@material/feature-targeting": "15.0.0-canary.7f224ddd4.0",
"@material/rtl": "15.0.0-canary.7f224ddd4.0",
"@material/theme": "15.0.0-canary.7f224ddd4.0",
"tslib": "^2.1.0"
}
},
"node_modules/@material/fab": {
"version": "15.0.0-canary.7f224ddd4.0",
"resolved": "https://registry.npmjs.org/@material/fab/-/fab-15.0.0-canary.7f224ddd4.0.tgz",
"integrity": "sha512-4h76QrzfZTcPdd+awDPZ4Q0YdSqsXQnS540TPtyXUJ/5G99V6VwGpjMPIxAsW0y+pmI9UkLL/srrMaJec+7r4Q==",
"license": "MIT",
"dependencies": {
"@material/animation": "15.0.0-canary.7f224ddd4.0",
"@material/dom": "15.0.0-canary.7f224ddd4.0",
"@material/elevation": "15.0.0-canary.7f224ddd4.0",
"@material/feature-targeting": "15.0.0-canary.7f224ddd4.0",
"@material/focus-ring": "15.0.0-canary.7f224ddd4.0",
"@material/ripple": "15.0.0-canary.7f224ddd4.0",
"@material/rtl": "15.0.0-canary.7f224ddd4.0",
"@material/shape": "15.0.0-canary.7f224ddd4.0",
"@material/theme": "15.0.0-canary.7f224ddd4.0",
"@material/tokens": "15.0.0-canary.7f224ddd4.0",
"@material/touch-target": "15.0.0-canary.7f224ddd4.0",
"@material/typography": "15.0.0-canary.7f224ddd4.0",
"tslib": "^2.1.0"
}
},
"node_modules/@material/feature-targeting": {
"version": "15.0.0-canary.7f224ddd4.0",
"resolved": "https://registry.npmjs.org/@material/feature-targeting/-/feature-targeting-15.0.0-canary.7f224ddd4.0.tgz",
"integrity": "sha512-SAjtxYh6YlKZriU83diDEQ7jNSP2MnxKsER0TvFeyG1vX/DWsUyYDOIJTOEa9K1N+fgJEBkNK8hY55QhQaspew==",
"license": "MIT",
"dependencies": {
"tslib": "^2.1.0"
}
},
"node_modules/@material/floating-label": {
"version": "15.0.0-canary.7f224ddd4.0",
"resolved": "https://registry.npmjs.org/@material/floating-label/-/floating-label-15.0.0-canary.7f224ddd4.0.tgz",
"integrity": "sha512-0KMo5ijjYaEHPiZ2pCVIcbaTS2LycvH9zEhEMKwPPGssBCX7iz5ffYQFk7e5yrQand1r3jnQQgYfHAwtykArnQ==",
"license": "MIT",
"dependencies": {
"@material/animation": "15.0.0-canary.7f224ddd4.0",
"@material/base": "15.0.0-canary.7f224ddd4.0",
"@material/dom": "15.0.0-canary.7f224ddd4.0",
"@material/feature-targeting": "15.0.0-canary.7f224ddd4.0",
"@material/rtl": "15.0.0-canary.7f224ddd4.0",
"@material/theme": "15.0.0-canary.7f224ddd4.0",
"@material/typography": "15.0.0-canary.7f224ddd4.0",
"tslib": "^2.1.0"
}
},
"node_modules/@material/focus-ring": {
"version": "15.0.0-canary.7f224ddd4.0",
"resolved": "https://registry.npmjs.org/@material/focus-ring/-/focus-ring-15.0.0-canary.7f224ddd4.0.tgz",
"integrity": "sha512-Jmg1nltq4J6S6A10EGMZnvufrvU3YTi+8R8ZD9lkSbun0Fm2TVdICQt/Auyi6An9zP66oQN6c31eqO6KfIPsDg==",
"license": "MIT",
"dependencies": {
"@material/dom": "15.0.0-canary.7f224ddd4.0",
"@material/feature-targeting": "15.0.0-canary.7f224ddd4.0",
"@material/rtl": "15.0.0-canary.7f224ddd4.0"
}
},
"node_modules/@material/form-field": {
"version": "15.0.0-canary.7f224ddd4.0",
"resolved": "https://registry.npmjs.org/@material/form-field/-/form-field-15.0.0-canary.7f224ddd4.0.tgz",
"integrity": "sha512-fEPWgDQEPJ6WF7hNnIStxucHR9LE4DoDSMqCsGWS2Yu+NLZYLuCEecgR0UqQsl1EQdNRaFh8VH93KuxGd2hiPg==",
"license": "MIT",
"dependencies": {
"@material/base": "15.0.0-canary.7f224ddd4.0",
"@material/feature-targeting": "15.0.0-canary.7f224ddd4.0",
"@material/ripple": "15.0.0-canary.7f224ddd4.0",
"@material/rtl": "15.0.0-canary.7f224ddd4.0",
"@material/theme": "15.0.0-canary.7f224ddd4.0",
"@material/typography": "15.0.0-canary.7f224ddd4.0",
"tslib": "^2.1.0"
}
},
"node_modules/@material/icon-button": {
"version": "15.0.0-canary.7f224ddd4.0",
"resolved": "https://registry.npmjs.org/@material/icon-button/-/icon-button-15.0.0-canary.7f224ddd4.0.tgz",
"integrity": "sha512-DcK7IL4ICY/DW+48YQZZs9g0U1kRaW0Wb0BxhvppDMYziHo/CTpFdle4gjyuTyRxPOdHQz5a97ru48Z9O4muTw==",
"license": "MIT",
"dependencies": {
"@material/base": "15.0.0-canary.7f224ddd4.0",
"@material/density": "15.0.0-canary.7f224ddd4.0",
"@material/dom": "15.0.0-canary.7f224ddd4.0",
"@material/elevation": "15.0.0-canary.7f224ddd4.0",
"@material/feature-targeting": "15.0.0-canary.7f224ddd4.0",
"@material/focus-ring": "15.0.0-canary.7f224ddd4.0",
"@material/ripple": "15.0.0-canary.7f224ddd4.0",
"@material/rtl": "15.0.0-canary.7f224ddd4.0",
"@material/theme": "15.0.0-canary.7f224ddd4.0",
"@material/touch-target": "15.0.0-canary.7f224ddd4.0",
"tslib": "^2.1.0"
}
},
"node_modules/@material/image-list": {
"version": "15.0.0-canary.7f224ddd4.0",
"resolved": "https://registry.npmjs.org/@material/image-list/-/image-list-15.0.0-canary.7f224ddd4.0.tgz",
"integrity": "sha512-voMjG2p80XbjL1B2lmF65zO5gEgJOVKClLdqh4wbYzYfwY/SR9c8eLvlYG7DLdFaFBl/7gGxD8TvvZ329HUFPw==",
"license": "MIT",
"dependencies": {
"@material/feature-targeting": "15.0.0-canary.7f224ddd4.0",
"@material/shape": "15.0.0-canary.7f224ddd4.0",
"@material/theme": "15.0.0-canary.7f224ddd4.0",
"@material/typography": "15.0.0-canary.7f224ddd4.0",
"tslib": "^2.1.0"
}
},
"node_modules/@material/layout-grid": {
"version": "15.0.0-canary.7f224ddd4.0",
"resolved": "https://registry.npmjs.org/@material/layout-grid/-/layout-grid-15.0.0-canary.7f224ddd4.0.tgz",
"integrity": "sha512-veDABLxMn2RmvfnUO2RUmC1OFfWr4cU+MrxKPoDD2hl3l3eDYv5fxws6r5T1JoSyXoaN+oEZpheS0+M9Ure8Pg==",
"license": "MIT",
"dependencies": {
"tslib": "^2.1.0"
}
},
"node_modules/@material/line-ripple": {
"version": "15.0.0-canary.7f224ddd4.0",
"resolved": "https://registry.npmjs.org/@material/line-ripple/-/line-ripple-15.0.0-canary.7f224ddd4.0.tgz",
"integrity": "sha512-f60hVJhIU6I3/17Tqqzch1emUKEcfVVgHVqADbU14JD+oEIz429ZX9ksZ3VChoU3+eejFl+jVdZMLE/LrAuwpg==",
"license": "MIT",
"dependencies": {
"@material/animation": "15.0.0-canary.7f224ddd4.0",
"@material/base": "15.0.0-canary.7f224ddd4.0",
"@material/feature-targeting": "15.0.0-canary.7f224ddd4.0",
"@material/theme": "15.0.0-canary.7f224ddd4.0",
"tslib": "^2.1.0"
}
},
"node_modules/@material/linear-progress": {
"version": "15.0.0-canary.7f224ddd4.0",
"resolved": "https://registry.npmjs.org/@material/linear-progress/-/linear-progress-15.0.0-canary.7f224ddd4.0.tgz",
"integrity": "sha512-pRDEwPQielDiC9Sc5XhCXrGxP8wWOnAO8sQlMebfBYHYqy5hhiIzibezS8CSaW4MFQFyXmCmpmqWlbqGYRmiyg==",
"license": "MIT",
"dependencies": {
"@material/animation": "15.0.0-canary.7f224ddd4.0",
"@material/base": "15.0.0-canary.7f224ddd4.0",
"@material/dom": "15.0.0-canary.7f224ddd4.0",
"@material/feature-targeting": "15.0.0-canary.7f224ddd4.0",
"@material/progress-indicator": "15.0.0-canary.7f224ddd4.0",
"@material/rtl": "15.0.0-canary.7f224ddd4.0",
"@material/theme": "15.0.0-canary.7f224ddd4.0",
"tslib": "^2.1.0"
}
},
"node_modules/@material/list": {
"version": "15.0.0-canary.7f224ddd4.0",
"resolved": "https://registry.npmjs.org/@material/list/-/list-15.0.0-canary.7f224ddd4.0.tgz",
"integrity": "sha512-Is0NV91sJlXF5pOebYAtWLF4wU2MJDbYqztML/zQNENkQxDOvEXu3nWNb3YScMIYJJXvARO0Liur5K4yPagS1Q==",
"license": "MIT",
"dependencies": {
"@material/base": "15.0.0-canary.7f224ddd4.0",
"@material/density": "15.0.0-canary.7f224ddd4.0",
"@material/dom": "15.0.0-canary.7f224ddd4.0",
"@material/feature-targeting": "15.0.0-canary.7f224ddd4.0",
"@material/ripple": "15.0.0-canary.7f224ddd4.0",
"@material/rtl": "15.0.0-canary.7f224ddd4.0",
"@material/shape": "15.0.0-canary.7f224ddd4.0",
"@material/theme": "15.0.0-canary.7f224ddd4.0",
"@material/tokens": "15.0.0-canary.7f224ddd4.0",
"@material/typography": "15.0.0-canary.7f224ddd4.0",
"tslib": "^2.1.0"
}
},
"node_modules/@material/menu": {
"version": "15.0.0-canary.7f224ddd4.0",
"resolved": "https://registry.npmjs.org/@material/menu/-/menu-15.0.0-canary.7f224ddd4.0.tgz",
"integrity": "sha512-D11QU1dXqLbh5X1zKlEhS3QWh0b5BPNXlafc5MXfkdJHhOiieb7LC9hMJhbrHtj24FadJ7evaFW/T2ugJbJNnQ==",
"license": "MIT",
"dependencies": {
"@material/base": "15.0.0-canary.7f224ddd4.0",
"@material/dom": "15.0.0-canary.7f224ddd4.0",
"@material/elevation": "15.0.0-canary.7f224ddd4.0",
"@material/feature-targeting": "15.0.0-canary.7f224ddd4.0",
"@material/list": "15.0.0-canary.7f224ddd4.0",
"@material/menu-surface": "15.0.0-canary.7f224ddd4.0",
"@material/ripple": "15.0.0-canary.7f224ddd4.0",
"@material/rtl": "15.0.0-canary.7f224ddd4.0",
"@material/shape": "15.0.0-canary.7f224ddd4.0",
"@material/theme": "15.0.0-canary.7f224ddd4.0",
"@material/tokens": "15.0.0-canary.7f224ddd4.0",
"tslib": "^2.1.0"
}
},
"node_modules/@material/menu-surface": {
"version": "15.0.0-canary.7f224ddd4.0",
"resolved": "https://registry.npmjs.org/@material/menu-surface/-/menu-surface-15.0.0-canary.7f224ddd4.0.tgz",
"integrity": "sha512-7RZHvw0gbwppaAJ/Oh5SWmfAKJ62aw1IMB3+3MRwsb5PLoV666wInYa+zJfE4i7qBeOn904xqT2Nko5hY0ssrg==",
"license": "MIT",
"dependencies": {
"@material/animation": "15.0.0-canary.7f224ddd4.0",
"@material/base": "15.0.0-canary.7f224ddd4.0",
"@material/elevation": "15.0.0-canary.7f224ddd4.0",
"@material/feature-targeting": "15.0.0-canary.7f224ddd4.0",
"@material/rtl": "15.0.0-canary.7f224ddd4.0",
"@material/shape": "15.0.0-canary.7f224ddd4.0",
"@material/theme": "15.0.0-canary.7f224ddd4.0",
"tslib": "^2.1.0"
}
},
"node_modules/@material/notched-outline": {
"version": "15.0.0-canary.7f224ddd4.0",
"resolved": "https://registry.npmjs.org/@material/notched-outline/-/notched-outline-15.0.0-canary.7f224ddd4.0.tgz",
"integrity": "sha512-Yg2usuKB2DKlKIBISbie9BFsOVuffF71xjbxPbybvqemxqUBd+bD5/t6H1fLE+F8/NCu5JMigho4ewUU+0RCiw==",
"license": "MIT",
"dependencies": {
"@material/base": "15.0.0-canary.7f224ddd4.0",
"@material/feature-targeting": "15.0.0-canary.7f224ddd4.0",
"@material/floating-label": "15.0.0-canary.7f224ddd4.0",
"@material/rtl": "15.0.0-canary.7f224ddd4.0",
"@material/shape": "15.0.0-canary.7f224ddd4.0",
"@material/theme": "15.0.0-canary.7f224ddd4.0",
"tslib": "^2.1.0"
}
},
"node_modules/@material/progress-indicator": {
"version": "15.0.0-canary.7f224ddd4.0",
"resolved": "https://registry.npmjs.org/@material/progress-indicator/-/progress-indicator-15.0.0-canary.7f224ddd4.0.tgz",
"integrity": "sha512-UPbDjE5CqT+SqTs0mNFG6uFEw7wBlgYmh+noSkQ6ty/EURm8lF125dmi4dv4kW0+octonMXqkGtAoZwLIHKf/w==",
"license": "MIT",
"dependencies": {
"tslib": "^2.1.0"
}
},
"node_modules/@material/radio": {
"version": "15.0.0-canary.7f224ddd4.0",
"resolved": "https://registry.npmjs.org/@material/radio/-/radio-15.0.0-canary.7f224ddd4.0.tgz",
"integrity": "sha512-wR1X0Sr0KmQLu6+YOFKAI84G3L6psqd7Kys5kfb8WKBM36zxO5HQXC5nJm/Y0rdn22ixzsIz2GBo0MNU4V4k1A==",
"license": "MIT",
"dependencies": {
"@material/animation": "15.0.0-canary.7f224ddd4.0",
"@material/base": "15.0.0-canary.7f224ddd4.0",
"@material/density": "15.0.0-canary.7f224ddd4.0",
"@material/dom": "15.0.0-canary.7f224ddd4.0",
"@material/feature-targeting": "15.0.0-canary.7f224ddd4.0",
"@material/focus-ring": "15.0.0-canary.7f224ddd4.0",
"@material/ripple": "15.0.0-canary.7f224ddd4.0",
"@material/theme": "15.0.0-canary.7f224ddd4.0",
"@material/touch-target": "15.0.0-canary.7f224ddd4.0",
"tslib": "^2.1.0"
}
},
"node_modules/@material/ripple": {
"version": "15.0.0-canary.7f224ddd4.0",
"resolved": "https://registry.npmjs.org/@material/ripple/-/ripple-15.0.0-canary.7f224ddd4.0.tgz",
"integrity": "sha512-JqOsWM1f4aGdotP0rh1vZlPZTg6lZgh39FIYHFMfOwfhR+LAikUJ+37ciqZuewgzXB6iiRO6a8aUH6HR5SJYPg==",
"license": "MIT",
"dependencies": {
"@material/animation": "15.0.0-canary.7f224ddd4.0",
"@material/base": "15.0.0-canary.7f224ddd4.0",
"@material/dom": "15.0.0-canary.7f224ddd4.0",
"@material/feature-targeting": "15.0.0-canary.7f224ddd4.0",
"@material/rtl": "15.0.0-canary.7f224ddd4.0",
"@material/theme": "15.0.0-canary.7f224ddd4.0",
"tslib": "^2.1.0"
}
},
"node_modules/@material/rtl": {
"version": "15.0.0-canary.7f224ddd4.0",
"resolved": "https://registry.npmjs.org/@material/rtl/-/rtl-15.0.0-canary.7f224ddd4.0.tgz",
"integrity": "sha512-UVf14qAtmPiaaZjuJtmN36HETyoKWmsZM/qn1L5ciR2URb8O035dFWnz4ZWFMmAYBno/L7JiZaCkPurv2ZNrGA==",
"license": "MIT",
"dependencies": {
"@material/theme": "15.0.0-canary.7f224ddd4.0",
"tslib": "^2.1.0"
}
},
"node_modules/@material/segmented-button": {
"version": "15.0.0-canary.7f224ddd4.0",
"resolved": "https://registry.npmjs.org/@material/segmented-button/-/segmented-button-15.0.0-canary.7f224ddd4.0.tgz",
"integrity": "sha512-LCnVRUSAhELTKI/9hSvyvIvQIpPpqF29BV+O9yM4WoNNmNWqTulvuiv7grHZl6Z+kJuxSg4BGbsPxxb9dXozPg==",
"license": "MIT",
"dependencies": {
"@material/base": "15.0.0-canary.7f224ddd4.0",
"@material/elevation": "15.0.0-canary.7f224ddd4.0",
"@material/feature-targeting": "15.0.0-canary.7f224ddd4.0",
"@material/ripple": "15.0.0-canary.7f224ddd4.0",
"@material/theme": "15.0.0-canary.7f224ddd4.0",
"@material/touch-target": "15.0.0-canary.7f224ddd4.0",
"@material/typography": "15.0.0-canary.7f224ddd4.0",
"tslib": "^2.1.0"
}
},
"node_modules/@material/select": {
"version": "15.0.0-canary.7f224ddd4.0",
"resolved": "https://registry.npmjs.org/@material/select/-/select-15.0.0-canary.7f224ddd4.0.tgz",
"integrity": "sha512-WioZtQEXRpglum0cMSzSqocnhsGRr+ZIhvKb3FlaNrTaK8H3Y4QA7rVjv3emRtrLOOjaT6/RiIaUMTo9AGzWQQ==",
"license": "MIT",
"dependencies": {
"@material/animation": "15.0.0-canary.7f224ddd4.0",
"@material/base": "15.0.0-canary.7f224ddd4.0",
"@material/density": "15.0.0-canary.7f224ddd4.0",
"@material/dom": "15.0.0-canary.7f224ddd4.0",
"@material/elevation": "15.0.0-canary.7f224ddd4.0",
"@material/feature-targeting": "15.0.0-canary.7f224ddd4.0",
"@material/floating-label": "15.0.0-canary.7f224ddd4.0",
"@material/line-ripple": "15.0.0-canary.7f224ddd4.0",
"@material/list": "15.0.0-canary.7f224ddd4.0",
"@material/menu": "15.0.0-canary.7f224ddd4.0",
"@material/menu-surface": "15.0.0-canary.7f224ddd4.0",
"@material/notched-outline": "15.0.0-canary.7f224ddd4.0",
"@material/ripple": "15.0.0-canary.7f224ddd4.0",
"@material/rtl": "15.0.0-canary.7f224ddd4.0",
"@material/shape": "15.0.0-canary.7f224ddd4.0",
"@material/theme": "15.0.0-canary.7f224ddd4.0",
"@material/tokens": "15.0.0-canary.7f224ddd4.0",
"@material/typography": "15.0.0-canary.7f224ddd4.0",
"tslib": "^2.1.0"
}
},
"node_modules/@material/shape": {
"version": "15.0.0-canary.7f224ddd4.0",
"resolved": "https://registry.npmjs.org/@material/shape/-/shape-15.0.0-canary.7f224ddd4.0.tgz",
"integrity": "sha512-8z8l1W3+cymObunJoRhwFPKZ+FyECfJ4MJykNiaZq7XJFZkV6xNmqAVrrbQj93FtLsECn9g4PjjIomguVn/OEw==",
"license": "MIT",
"dependencies": {
"@material/feature-targeting": "15.0.0-canary.7f224ddd4.0",
"@material/rtl": "15.0.0-canary.7f224ddd4.0",
"@material/theme": "15.0.0-canary.7f224ddd4.0",
"tslib": "^2.1.0"
}
},
"node_modules/@material/slider": {
"version": "15.0.0-canary.7f224ddd4.0",
"resolved": "https://registry.npmjs.org/@material/slider/-/slider-15.0.0-canary.7f224ddd4.0.tgz",
"integrity": "sha512-QU/WSaSWlLKQRqOhJrPgm29wqvvzRusMqwAcrCh1JTrCl+xwJ43q5WLDfjYhubeKtrEEgGu9tekkAiYfMG7EBw==",
"license": "MIT",
"dependencies": {
"@material/animation": "15.0.0-canary.7f224ddd4.0",
"@material/base": "15.0.0-canary.7f224ddd4.0",
"@material/dom": "15.0.0-canary.7f224ddd4.0",
"@material/elevation": "15.0.0-canary.7f224ddd4.0",
"@material/feature-targeting": "15.0.0-canary.7f224ddd4.0",
"@material/ripple": "15.0.0-canary.7f224ddd4.0",
"@material/rtl": "15.0.0-canary.7f224ddd4.0",
"@material/theme": "15.0.0-canary.7f224ddd4.0",
"@material/tokens": "15.0.0-canary.7f224ddd4.0",
"@material/typography": "15.0.0-canary.7f224ddd4.0",
"tslib": "^2.1.0"
}
},
"node_modules/@material/snackbar": {
"version": "15.0.0-canary.7f224ddd4.0",
"resolved": "https://registry.npmjs.org/@material/snackbar/-/snackbar-15.0.0-canary.7f224ddd4.0.tgz",
"integrity": "sha512-sm7EbVKddaXpT/aXAYBdPoN0k8yeg9+dprgBUkrdqGzWJAeCkxb4fv2B3He88YiCtvkTz2KLY4CThPQBSEsMFQ==",
"license": "MIT",
"dependencies": {
"@material/animation": "15.0.0-canary.7f224ddd4.0",
"@material/base": "15.0.0-canary.7f224ddd4.0",
"@material/button": "15.0.0-canary.7f224ddd4.0",
"@material/dom": "15.0.0-canary.7f224ddd4.0",
"@material/elevation": "15.0.0-canary.7f224ddd4.0",
"@material/feature-targeting": "15.0.0-canary.7f224ddd4.0",
"@material/icon-button": "15.0.0-canary.7f224ddd4.0",
"@material/ripple": "15.0.0-canary.7f224ddd4.0",
"@material/rtl": "15.0.0-canary.7f224ddd4.0",
"@material/shape": "15.0.0-canary.7f224ddd4.0",
"@material/theme": "15.0.0-canary.7f224ddd4.0",
"@material/tokens": "15.0.0-canary.7f224ddd4.0",
"@material/typography": "15.0.0-canary.7f224ddd4.0",
"tslib": "^2.1.0"
}
},
"node_modules/@material/switch": {
"version": "15.0.0-canary.7f224ddd4.0",
"resolved": "https://registry.npmjs.org/@material/switch/-/switch-15.0.0-canary.7f224ddd4.0.tgz",
"integrity": "sha512-lEDJfRvkVyyeHWIBfoxYjJVl+WlEAE2kZ/+6OqB1FW0OV8ftTODZGhHRSzjVBA1/p4FPuhAtKtoK9jTpa4AZjA==",
"license": "MIT",
"dependencies": {
"@material/animation": "15.0.0-canary.7f224ddd4.0",
"@material/base": "15.0.0-canary.7f224ddd4.0",
"@material/density": "15.0.0-canary.7f224ddd4.0",
"@material/dom": "15.0.0-canary.7f224ddd4.0",
"@material/elevation": "15.0.0-canary.7f224ddd4.0",
"@material/feature-targeting": "15.0.0-canary.7f224ddd4.0",
"@material/focus-ring": "15.0.0-canary.7f224ddd4.0",
"@material/ripple": "15.0.0-canary.7f224ddd4.0",
"@material/rtl": "15.0.0-canary.7f224ddd4.0",
"@material/shape": "15.0.0-canary.7f224ddd4.0",
"@material/theme": "15.0.0-canary.7f224ddd4.0",
"@material/tokens": "15.0.0-canary.7f224ddd4.0",
"safevalues": "^0.3.4",
"tslib": "^2.1.0"
}
},
"node_modules/@material/tab": {
"version": "15.0.0-canary.7f224ddd4.0",
"resolved": "https://registry.npmjs.org/@material/tab/-/tab-15.0.0-canary.7f224ddd4.0.tgz",
"integrity": "sha512-E1xGACImyCLurhnizyOTCgOiVezce4HlBFAI6YhJo/AyVwjN2Dtas4ZLQMvvWWqpyhITNkeYdOchwCC1mrz3AQ==",
"license": "MIT",
"dependencies": {
"@material/base": "15.0.0-canary.7f224ddd4.0",
"@material/elevation": "15.0.0-canary.7f224ddd4.0",
"@material/feature-targeting": "15.0.0-canary.7f224ddd4.0",
"@material/focus-ring": "15.0.0-canary.7f224ddd4.0",
"@material/ripple": "15.0.0-canary.7f224ddd4.0",
"@material/rtl": "15.0.0-canary.7f224ddd4.0",
"@material/tab-indicator": "15.0.0-canary.7f224ddd4.0",
"@material/theme": "15.0.0-canary.7f224ddd4.0",
"@material/tokens": "15.0.0-canary.7f224ddd4.0",
"@material/typography": "15.0.0-canary.7f224ddd4.0",
"tslib": "^2.1.0"
}
},
"node_modules/@material/tab-bar": {
"version": "15.0.0-canary.7f224ddd4.0",
"resolved": "https://registry.npmjs.org/@material/tab-bar/-/tab-bar-15.0.0-canary.7f224ddd4.0.tgz",
"integrity": "sha512-p1Asb2NzrcECvAQU3b2SYrpyJGyJLQWR+nXTYzDKE8WOpLIRCXap2audNqD7fvN/A20UJ1J8U01ptrvCkwJ4eA==",
"license": "MIT",
"dependencies": {
"@material/animation": "15.0.0-canary.7f224ddd4.0",
"@material/base": "15.0.0-canary.7f224ddd4.0",
"@material/density": "15.0.0-canary.7f224ddd4.0",
"@material/elevation": "15.0.0-canary.7f224ddd4.0",
"@material/feature-targeting": "15.0.0-canary.7f224ddd4.0",
"@material/tab": "15.0.0-canary.7f224ddd4.0",
"@material/tab-indicator": "15.0.0-canary.7f224ddd4.0",
"@material/tab-scroller": "15.0.0-canary.7f224ddd4.0",
"@material/theme": "15.0.0-canary.7f224ddd4.0",
"@material/tokens": "15.0.0-canary.7f224ddd4.0",
"@material/typography": "15.0.0-canary.7f224ddd4.0",
"tslib": "^2.1.0"
}
},
"node_modules/@material/tab-indicator": {
"version": "15.0.0-canary.7f224ddd4.0",
"resolved": "https://registry.npmjs.org/@material/tab-indicator/-/tab-indicator-15.0.0-canary.7f224ddd4.0.tgz",
"integrity": "sha512-h9Td3MPqbs33spcPS7ecByRHraYgU4tNCZpZzZXw31RypjKvISDv/PS5wcA4RmWqNGih78T7xg4QIGsZg4Pk4w==",
"license": "MIT",
"dependencies": {
"@material/animation": "15.0.0-canary.7f224ddd4.0",
"@material/base": "15.0.0-canary.7f224ddd4.0",
"@material/feature-targeting": "15.0.0-canary.7f224ddd4.0",
"@material/theme": "15.0.0-canary.7f224ddd4.0",
"tslib": "^2.1.0"
}
},
"node_modules/@material/tab-scroller": {
"version": "15.0.0-canary.7f224ddd4.0",
"resolved": "https://registry.npmjs.org/@material/tab-scroller/-/tab-scroller-15.0.0-canary.7f224ddd4.0.tgz",
"integrity": "sha512-LFeYNjQpdXecwECd8UaqHYbhscDCwhGln5Yh+3ctvcEgvmDPNjhKn/DL3sWprWvG8NAhP6sHMrsGhQFVdCWtTg==",
"license": "MIT",
"dependencies": {
"@material/animation": "15.0.0-canary.7f224ddd4.0",
"@material/base": "15.0.0-canary.7f224ddd4.0",
"@material/dom": "15.0.0-canary.7f224ddd4.0",
"@material/feature-targeting": "15.0.0-canary.7f224ddd4.0",
"@material/tab": "15.0.0-canary.7f224ddd4.0",
"tslib": "^2.1.0"
}
},
"node_modules/@material/textfield": {
"version": "15.0.0-canary.7f224ddd4.0",
"resolved": "https://registry.npmjs.org/@material/textfield/-/textfield-15.0.0-canary.7f224ddd4.0.tgz",
"integrity": "sha512-AExmFvgE5nNF0UA4l2cSzPghtxSUQeeoyRjFLHLy+oAaE4eKZFrSy0zEpqPeWPQpEMDZk+6Y+6T3cOFYBeSvsw==",
"license": "MIT",
"dependencies": {
"@material/animation": "15.0.0-canary.7f224ddd4.0",
"@material/base": "15.0.0-canary.7f224ddd4.0",
"@material/density": "15.0.0-canary.7f224ddd4.0",
"@material/dom": "15.0.0-canary.7f224ddd4.0",
"@material/feature-targeting": "15.0.0-canary.7f224ddd4.0",
"@material/floating-label": "15.0.0-canary.7f224ddd4.0",
"@material/line-ripple": "15.0.0-canary.7f224ddd4.0",
"@material/notched-outline": "15.0.0-canary.7f224ddd4.0",
"@material/ripple": "15.0.0-canary.7f224ddd4.0",
"@material/rtl": "15.0.0-canary.7f224ddd4.0",
"@material/shape": "15.0.0-canary.7f224ddd4.0",
"@material/theme": "15.0.0-canary.7f224ddd4.0",
"@material/tokens": "15.0.0-canary.7f224ddd4.0",
"@material/typography": "15.0.0-canary.7f224ddd4.0",
"tslib": "^2.1.0"
}
},
"node_modules/@material/theme": {
"version": "15.0.0-canary.7f224ddd4.0",
"resolved": "https://registry.npmjs.org/@material/theme/-/theme-15.0.0-canary.7f224ddd4.0.tgz",
"integrity": "sha512-hs45hJoE9yVnoVOcsN1jklyOa51U4lzWsEnQEuJTPOk2+0HqCQ0yv/q0InpSnm2i69fNSyZC60+8HADZGF8ugQ==",
"license": "MIT",
"dependencies": {
"@material/feature-targeting": "15.0.0-canary.7f224ddd4.0",
"tslib": "^2.1.0"
}
},
"node_modules/@material/tokens": {
"version": "15.0.0-canary.7f224ddd4.0",
"resolved": "https://registry.npmjs.org/@material/tokens/-/tokens-15.0.0-canary.7f224ddd4.0.tgz",
"integrity": "sha512-r9TDoicmcT7FhUXC4eYMFnt9TZsz0G8T3wXvkKncLppYvZ517gPyD/1+yhuGfGOxAzxTrM66S/oEc1fFE2q4hw==",
"license": "MIT",
"dependencies": {
"@material/elevation": "15.0.0-canary.7f224ddd4.0"
}
},
"node_modules/@material/tooltip": {
"version": "15.0.0-canary.7f224ddd4.0",
"resolved": "https://registry.npmjs.org/@material/tooltip/-/tooltip-15.0.0-canary.7f224ddd4.0.tgz",
"integrity": "sha512-8qNk3pmPLTnam3XYC1sZuplQXW9xLn4Z4MI3D+U17Q7pfNZfoOugGr+d2cLA9yWAEjVJYB0mj8Yu86+udo4N9w==",
"license": "MIT",
"dependencies": {
"@material/animation": "15.0.0-canary.7f224ddd4.0",
"@material/base": "15.0.0-canary.7f224ddd4.0",
"@material/button": "15.0.0-canary.7f224ddd4.0",
"@material/dom": "15.0.0-canary.7f224ddd4.0",
"@material/elevation": "15.0.0-canary.7f224ddd4.0",
"@material/feature-targeting": "15.0.0-canary.7f224ddd4.0",
"@material/rtl": "15.0.0-canary.7f224ddd4.0",
"@material/shape": "15.0.0-canary.7f224ddd4.0",
"@material/theme": "15.0.0-canary.7f224ddd4.0",
"@material/tokens": "15.0.0-canary.7f224ddd4.0",
"@material/typography": "15.0.0-canary.7f224ddd4.0",
"safevalues": "^0.3.4",
"tslib": "^2.1.0"
}
},
"node_modules/@material/top-app-bar": {
"version": "15.0.0-canary.7f224ddd4.0",
"resolved": "https://registry.npmjs.org/@material/top-app-bar/-/top-app-bar-15.0.0-canary.7f224ddd4.0.tgz",
"integrity": "sha512-SARR5/ClYT4CLe9qAXakbr0i0cMY0V3V4pe3ElIJPfL2Z2c4wGR1mTR8m2LxU1MfGKK8aRoUdtfKaxWejp+eNA==",
"license": "MIT",
"dependencies": {
"@material/animation": "15.0.0-canary.7f224ddd4.0",
"@material/base": "15.0.0-canary.7f224ddd4.0",
"@material/elevation": "15.0.0-canary.7f224ddd4.0",
"@material/ripple": "15.0.0-canary.7f224ddd4.0",
"@material/rtl": "15.0.0-canary.7f224ddd4.0",
"@material/shape": "15.0.0-canary.7f224ddd4.0",
"@material/theme": "15.0.0-canary.7f224ddd4.0",
"@material/typography": "15.0.0-canary.7f224ddd4.0",
"tslib": "^2.1.0"
}
},
"node_modules/@material/touch-target": {
"version": "15.0.0-canary.7f224ddd4.0",
"resolved": "https://registry.npmjs.org/@material/touch-target/-/touch-target-15.0.0-canary.7f224ddd4.0.tgz",
"integrity": "sha512-BJo/wFKHPYLGsRaIpd7vsQwKr02LtO2e89Psv0on/p0OephlNIgeB9dD9W+bQmaeZsZ6liKSKRl6wJWDiK71PA==",
"license": "MIT",
"dependencies": {
"@material/base": "15.0.0-canary.7f224ddd4.0",
"@material/feature-targeting": "15.0.0-canary.7f224ddd4.0",
"@material/rtl": "15.0.0-canary.7f224ddd4.0",
"@material/theme": "15.0.0-canary.7f224ddd4.0",
"tslib": "^2.1.0"
}
},
"node_modules/@material/typography": {
"version": "15.0.0-canary.7f224ddd4.0",
"resolved": "https://registry.npmjs.org/@material/typography/-/typography-15.0.0-canary.7f224ddd4.0.tgz",
"integrity": "sha512-kBaZeCGD50iq1DeRRH5OM5Jl7Gdk+/NOfKArkY4ksBZvJiStJ7ACAhpvb8MEGm4s3jvDInQFLsDq3hL+SA79sQ==",
"license": "MIT",
"dependencies": {
"@material/feature-targeting": "15.0.0-canary.7f224ddd4.0",
"@material/theme": "15.0.0-canary.7f224ddd4.0",
"tslib": "^2.1.0"
}
},
"node_modules/@msgpackr-extract/msgpackr-extract-darwin-arm64": {
"version": "3.0.3",
"resolved": "https://registry.npmjs.org/@msgpackr-extract/msgpackr-extract-darwin-arm64/-/msgpackr-extract-darwin-arm64-3.0.3.tgz",
......@@ -3476,6 +4417,23 @@
"win32"
]
},
"node_modules/@ng-bootstrap/ng-bootstrap": {
"version": "17.0.0",
"resolved": "https://registry.npmjs.org/@ng-bootstrap/ng-bootstrap/-/ng-bootstrap-17.0.0.tgz",
"integrity": "sha512-hTbBtozJlpevF1RO6J2adCoXiAkMTPV3wmXIyK05dVha4VsKjHibgaL6YldToKoh6ElQnIYkPEIJHX9z5EtyMw==",
"license": "MIT",
"dependencies": {
"tslib": "^2.3.0"
},
"peerDependencies": {
"@angular/common": "^18.0.0",
"@angular/core": "^18.0.0",
"@angular/forms": "^18.0.0",
"@angular/localize": "^18.0.0",
"@popperjs/core": "^2.11.8",
"rxjs": "^6.5.3 || ^7.4.0"
}
},
"node_modules/@ngtools/webpack": {
"version": "18.0.4",
"resolved": "https://registry.npmjs.org/@ngtools/webpack/-/webpack-18.0.4.tgz",
......@@ -3497,7 +4455,6 @@
"version": "2.1.5",
"resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz",
"integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==",
"dev": true,
"license": "MIT",
"dependencies": {
"@nodelib/fs.stat": "2.0.5",
......@@ -3511,7 +4468,6 @@
"version": "2.0.5",
"resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz",
"integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==",
"dev": true,
"license": "MIT",
"engines": {
"node": ">= 8"
......@@ -3521,7 +4477,6 @@
"version": "1.2.8",
"resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz",
"integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==",
"dev": true,
"license": "MIT",
"dependencies": {
"@nodelib/fs.scandir": "2.1.5",
......@@ -3827,6 +4782,16 @@
"node": ">=14"
}
},
"node_modules/@popperjs/core": {
"version": "2.11.8",
"resolved": "https://registry.npmjs.org/@popperjs/core/-/core-2.11.8.tgz",
"integrity": "sha512-P1st0aksCrn9sGZhp8GMYwBnQsbvAWsZAX44oXNNvLHGqAOcoVxmjZiohstwQ7SqKnbR47akdNi+uleWD8+g6A==",
"license": "MIT",
"funding": {
"type": "opencollective",
"url": "https://opencollective.com/popperjs"
}
},
"node_modules/@rollup/rollup-android-arm-eabi": {
"version": "4.18.0",
"resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.18.0.tgz",
......@@ -4205,6 +5170,47 @@
"url": "https://github.com/sponsors/isaacs"
}
},
"node_modules/@types/babel__core": {
"version": "7.20.5",
"resolved": "https://registry.npmjs.org/@types/babel__core/-/babel__core-7.20.5.tgz",
"integrity": "sha512-qoQprZvz5wQFJwMDqeseRXWv3rqMvhgpbXFfVyWhbx9X47POIA6i/+dXefEmZKoAgOaTdaIgNSMqMIU61yRyzA==",
"license": "MIT",
"dependencies": {
"@babel/parser": "^7.20.7",
"@babel/types": "^7.20.7",
"@types/babel__generator": "*",
"@types/babel__template": "*",
"@types/babel__traverse": "*"
}
},
"node_modules/@types/babel__generator": {
"version": "7.6.8",
"resolved": "https://registry.npmjs.org/@types/babel__generator/-/babel__generator-7.6.8.tgz",
"integrity": "sha512-ASsj+tpEDsEiFr1arWrlN6V3mdfjRMZt6LtK/Vp/kreFLnr5QH5+DhvD5nINYZXzwJvXeGq+05iUXcAzVrqWtw==",
"license": "MIT",
"dependencies": {
"@babel/types": "^7.0.0"
}
},
"node_modules/@types/babel__template": {
"version": "7.4.4",
"resolved": "https://registry.npmjs.org/@types/babel__template/-/babel__template-7.4.4.tgz",
"integrity": "sha512-h/NUaSyG5EyxBIp8YRxo4RMe2/qQgvyowRwVMzhYhBCONbW8PUsg4lkFMrhgZhUe5z3L3MiLDuvyJ/CaPa2A8A==",
"license": "MIT",
"dependencies": {
"@babel/parser": "^7.1.0",
"@babel/types": "^7.0.0"
}
},
"node_modules/@types/babel__traverse": {
"version": "7.20.6",
"resolved": "https://registry.npmjs.org/@types/babel__traverse/-/babel__traverse-7.20.6.tgz",
"integrity": "sha512-r1bzfrm0tomOI8g1SzvCaQHo6Lcv6zu0EA+W2kHrt8dyrHQxGzBBL4kdkzIS+jBMV+EYcMAEAqXqYaLJq5rOZg==",
"license": "MIT",
"dependencies": {
"@babel/types": "^7.20.7"
}
},
"node_modules/@types/body-parser": {
"version": "1.19.5",
"resolved": "https://registry.npmjs.org/@types/body-parser/-/body-parser-1.19.5.tgz",
......@@ -4722,6 +5728,27 @@
"node": ">=8.9.0"
}
},
"node_modules/ag-grid-angular": {
"version": "31.3.2",
"resolved": "https://registry.npmjs.org/ag-grid-angular/-/ag-grid-angular-31.3.2.tgz",
"integrity": "sha512-k8nMrOGcoZeTNY7lXoPIWgn2ANE+v169v9X6XqddlJgYWoRrommG1Av2zSxPYUqayLzV0z/mKTHv7UjdLtnCGw==",
"license": "MIT",
"dependencies": {
"tslib": "^2.3.0"
},
"peerDependencies": {
"@angular/common": ">= 14.0.0",
"@angular/core": ">= 14.0.0",
"ag-grid-community": "31.3.2"
}
},
"node_modules/ag-grid-community": {
"version": "31.3.2",
"resolved": "https://registry.npmjs.org/ag-grid-community/-/ag-grid-community-31.3.2.tgz",
"integrity": "sha512-GxqFRD0OcjaVRE1gwLgoP0oERNPH8Lk8wKJ1txulsxysEQ5dZWHhiIoXXSiHjvOCVMkK/F5qzY6HNrn6VeDMTQ==",
"license": "MIT",
"peer": true
},
"node_modules/agent-base": {
"version": "7.1.1",
"resolved": "https://registry.npmjs.org/agent-base/-/agent-base-7.1.1.tgz",
......@@ -4840,7 +5867,6 @@
"version": "5.0.1",
"resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz",
"integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==",
"dev": true,
"license": "MIT",
"engines": {
"node": ">=8"
......@@ -4850,7 +5876,6 @@
"version": "3.2.1",
"resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz",
"integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==",
"dev": true,
"license": "MIT",
"dependencies": {
"color-convert": "^1.9.0"
......@@ -4863,7 +5888,6 @@
"version": "3.1.3",
"resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.3.tgz",
"integrity": "sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==",
"dev": true,
"license": "ISC",
"dependencies": {
"normalize-path": "^3.0.0",
......@@ -4877,7 +5901,6 @@
"version": "2.3.1",
"resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz",
"integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==",
"dev": true,
"license": "MIT",
"engines": {
"node": ">=8.6"
......@@ -5087,7 +6110,6 @@
"version": "2.3.0",
"resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.3.0.tgz",
"integrity": "sha512-Ceh+7ox5qe7LJuLHoY0feh3pHuUDHAcRUeyL2VYghZwfpkNIy/+8Ocg0a3UuSoYzavmylwuLWQOf3hl0jjMMIw==",
"dev": true,
"license": "MIT",
"engines": {
"node": ">=8"
......@@ -5168,6 +6190,25 @@
"dev": true,
"license": "ISC"
},
"node_modules/bootstrap": {
"version": "5.3.3",
"resolved": "https://registry.npmjs.org/bootstrap/-/bootstrap-5.3.3.tgz",
"integrity": "sha512-8HLCdWgyoMguSO9o+aH+iuZ+aht+mzW0u3HIMzVu7Srrpv7EBBxTnrFlSCskwdY1+EOFQSm7uMJhNQHkdPcmjg==",
"funding": [
{
"type": "github",
"url": "https://github.com/sponsors/twbs"
},
{
"type": "opencollective",
"url": "https://opencollective.com/bootstrap"
}
],
"license": "MIT",
"peerDependencies": {
"@popperjs/core": "^2.11.8"
}
},
"node_modules/brace-expansion": {
"version": "1.1.11",
"resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz",
......@@ -5183,7 +6224,6 @@
"version": "3.0.3",
"resolved": "https://registry.npmjs.org/braces/-/braces-3.0.3.tgz",
"integrity": "sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==",
"dev": true,
"license": "MIT",
"dependencies": {
"fill-range": "^7.1.1"
......@@ -5196,7 +6236,6 @@
"version": "4.23.1",
"resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.23.1.tgz",
"integrity": "sha512-TUfofFo/KsK/bWZ9TWQ5O26tsWW4Uhmt8IYklbnUa70udB6P2wA7w7o4PY4muaEPBQaAX+CEnmmIA41NVHtPVw==",
"dev": true,
"funding": [
{
"type": "opencollective",
......@@ -5411,7 +6450,6 @@
"version": "1.0.30001636",
"resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001636.tgz",
"integrity": "sha512-bMg2vmr8XBsbL6Lr0UHXy/21m84FTxDLWn2FSqMd5PrlbMxwJlQnC2YWYxVgp66PZE+BBNF2jYQUBKCo1FDeZg==",
"dev": true,
"funding": [
{
"type": "opencollective",
......@@ -5432,7 +6470,6 @@
"version": "2.4.2",
"resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz",
"integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==",
"dev": true,
"license": "MIT",
"dependencies": {
"ansi-styles": "^3.2.1",
......@@ -5454,7 +6491,6 @@
"version": "3.6.0",
"resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.6.0.tgz",
"integrity": "sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw==",
"dev": true,
"license": "MIT",
"dependencies": {
"anymatch": "~3.1.2",
......@@ -5545,7 +6581,6 @@
"version": "8.0.1",
"resolved": "https://registry.npmjs.org/cliui/-/cliui-8.0.1.tgz",
"integrity": "sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==",
"dev": true,
"license": "ISC",
"dependencies": {
"string-width": "^4.2.0",
......@@ -5560,7 +6595,6 @@
"version": "4.3.0",
"resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz",
"integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==",
"dev": true,
"license": "MIT",
"dependencies": {
"color-convert": "^2.0.1"
......@@ -5576,7 +6610,6 @@
"version": "2.0.1",
"resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz",
"integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==",
"dev": true,
"license": "MIT",
"dependencies": {
"color-name": "~1.1.4"
......@@ -5589,14 +6622,12 @@
"version": "1.1.4",
"resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz",
"integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==",
"dev": true,
"license": "MIT"
},
"node_modules/cliui/node_modules/wrap-ansi": {
"version": "7.0.0",
"resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz",
"integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==",
"dev": true,
"license": "MIT",
"dependencies": {
"ansi-styles": "^4.0.0",
......@@ -5639,7 +6670,6 @@
"version": "1.9.3",
"resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz",
"integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==",
"dev": true,
"license": "MIT",
"dependencies": {
"color-name": "1.1.3"
......@@ -5649,7 +6679,6 @@
"version": "1.1.3",
"resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz",
"integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==",
"dev": true,
"license": "MIT"
},
"node_modules/colorette": {
......@@ -5816,7 +6845,6 @@
"version": "1.9.0",
"resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.9.0.tgz",
"integrity": "sha512-ASFBup0Mz1uyiIjANan1jzLQami9z1PoYSZCiiYW2FczPbenXc45FZdBZLzOT+r6+iciuEModtmCti+hjaAk0A==",
"dev": true,
"license": "MIT"
},
"node_modules/cookie": {
......@@ -6192,7 +7220,6 @@
"version": "4.3.5",
"resolved": "https://registry.npmjs.org/debug/-/debug-4.3.5.tgz",
"integrity": "sha512-pt0bNEmneDIvdL1Xsd9oDQ/wrQRkXDT4AUWlNZNPKvW5x/jyO9VFXkJUP07vQ2upmw5PlaITaPKc31jK13V+jg==",
"dev": true,
"license": "MIT",
"dependencies": {
"ms": "2.1.2"
......@@ -6451,14 +7478,12 @@
"version": "1.4.807",
"resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.807.tgz",
"integrity": "sha512-kSmJl2ZwhNf/bcIuCH/imtNOKlpkLDn2jqT5FJ+/0CXjhnFaOa9cOe9gHKKy71eM49izwuQjZhKk+lWQ1JxB7A==",
"dev": true,
"license": "ISC"
},
"node_modules/emoji-regex": {
"version": "8.0.0",
"resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz",
"integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==",
"dev": true,
"license": "MIT"
},
"node_modules/emojis-list": {
......@@ -6563,7 +7588,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,
"license": "BSD-2-Clause",
"engines": {
"node": ">=0.12"
......@@ -6699,7 +7724,6 @@
"version": "3.1.2",
"resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.2.tgz",
"integrity": "sha512-ErCHMCae19vR8vQGe50xIsVomy19rg6gFu3+r3jkEO46suLMWBksvVyoGgQV+jOfl84ZSOSlmv6Gxa89PmTGmA==",
"dev": true,
"license": "MIT",
"engines": {
"node": ">=6"
......@@ -6716,7 +7740,6 @@
"version": "1.0.5",
"resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz",
"integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==",
"dev": true,
"license": "MIT",
"engines": {
"node": ">=0.8.0"
......@@ -6983,7 +8006,6 @@
"version": "3.3.2",
"resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.3.2.tgz",
"integrity": "sha512-oX2ruAFQwf/Orj8m737Y5adxDQO0LAB7/S5MnxCdTNDd4p6BsyIVsv9JQsATbTSq8KHRpLwIHbVlUNatxd+1Ow==",
"dev": true,
"license": "MIT",
"dependencies": {
"@nodelib/fs.stat": "^2.0.2",
......@@ -7007,7 +8029,6 @@
"version": "1.17.1",
"resolved": "https://registry.npmjs.org/fastq/-/fastq-1.17.1.tgz",
"integrity": "sha512-sRVD3lWVIXWg6By68ZN7vho9a1pQcN/WBFaAAsDDFzlJjvoGx0P8z7V1t72grFJfJhu3YPZBuu25f7Kaw2jN1w==",
"dev": true,
"license": "ISC",
"dependencies": {
"reusify": "^1.0.4"
......@@ -7030,7 +8051,6 @@
"version": "7.1.1",
"resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.1.1.tgz",
"integrity": "sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==",
"dev": true,
"license": "MIT",
"dependencies": {
"to-regex-range": "^5.0.1"
......@@ -7260,7 +8280,6 @@
"version": "2.3.3",
"resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz",
"integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==",
"dev": true,
"hasInstallScript": true,
"license": "MIT",
"optional": true,
......@@ -7285,7 +8304,6 @@
"version": "1.0.0-beta.2",
"resolved": "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.2.tgz",
"integrity": "sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==",
"dev": true,
"license": "MIT",
"engines": {
"node": ">=6.9.0"
......@@ -7295,7 +8313,6 @@
"version": "2.0.5",
"resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz",
"integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==",
"dev": true,
"license": "ISC",
"engines": {
"node": "6.* || 8.* || >= 10.*"
......@@ -7370,7 +8387,6 @@
"version": "5.1.2",
"resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz",
"integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==",
"dev": true,
"license": "ISC",
"dependencies": {
"is-glob": "^4.0.1"
......@@ -7390,7 +8406,6 @@
"version": "11.12.0",
"resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz",
"integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==",
"dev": true,
"license": "MIT",
"engines": {
"node": ">=4"
......@@ -7447,7 +8462,6 @@
"version": "3.0.0",
"resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz",
"integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==",
"dev": true,
"license": "MIT",
"engines": {
"node": ">=4"
......@@ -8022,7 +9036,6 @@
"version": "2.1.0",
"resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz",
"integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==",
"dev": true,
"license": "MIT",
"dependencies": {
"binary-extensions": "^2.0.0"
......@@ -8064,7 +9077,6 @@
"version": "2.1.1",
"resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz",
"integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==",
"dev": true,
"license": "MIT",
"engines": {
"node": ">=0.10.0"
......@@ -8074,7 +9086,6 @@
"version": "3.0.0",
"resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz",
"integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==",
"dev": true,
"license": "MIT",
"engines": {
"node": ">=8"
......@@ -8084,7 +9095,6 @@
"version": "4.0.3",
"resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz",
"integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==",
"dev": true,
"license": "MIT",
"dependencies": {
"is-extglob": "^2.1.1"
......@@ -8162,7 +9172,6 @@
"version": "7.0.0",
"resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz",
"integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==",
"dev": true,
"license": "MIT",
"engines": {
"node": ">=0.12.0"
......@@ -8468,11 +9477,22 @@
"jiti": "bin/jiti.js"
}
},
"node_modules/jquery": {
"version": "3.7.1",
"resolved": "https://registry.npmjs.org/jquery/-/jquery-3.7.1.tgz",
"integrity": "sha512-m4avr8yL8kmFN8psrbFFFmB/If14iN5o9nw/NgnnM+kybDJpRsAynV2BsfpTYrTRysYUdADVD7CkUUizgkpLfg==",
"license": "MIT"
},
"node_modules/jqwidgets-ng": {
"version": "19.2.2",
"resolved": "https://registry.npmjs.org/jqwidgets-ng/-/jqwidgets-ng-19.2.2.tgz",
"integrity": "sha512-spAofOasftpMVq8uTWOe0hhU4iM2pIBRyIf00dajAOfHNBQjCMqK4aRBUMAAPZZ3yjWj3FOrfpnshEaWWRQ1ZA==",
"license": "https://www.jqwidgets.com/license/"
},
"node_modules/js-tokens": {
"version": "4.0.0",
"resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz",
"integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==",
"dev": true,
"license": "MIT"
},
"node_modules/js-yaml": {
......@@ -8500,7 +9520,6 @@
"version": "2.5.2",
"resolved": "https://registry.npmjs.org/jsesc/-/jsesc-2.5.2.tgz",
"integrity": "sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==",
"dev": true,
"license": "MIT",
"bin": {
"jsesc": "bin/jsesc"
......@@ -8530,7 +9549,6 @@
"version": "2.2.3",
"resolved": "https://registry.npmjs.org/json5/-/json5-2.2.3.tgz",
"integrity": "sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==",
"dev": true,
"license": "MIT",
"bin": {
"json5": "lib/cli.js"
......@@ -9131,7 +10149,6 @@
"version": "5.1.1",
"resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz",
"integrity": "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==",
"dev": true,
"license": "ISC",
"dependencies": {
"yallist": "^3.0.2"
......@@ -9235,7 +10252,6 @@
"version": "1.4.1",
"resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz",
"integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==",
"dev": true,
"license": "MIT",
"engines": {
"node": ">= 8"
......@@ -9255,7 +10271,6 @@
"version": "4.0.7",
"resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.7.tgz",
"integrity": "sha512-LPP/3KorzCwBxfeUuZmaR6bG2kdeHSbe0P2tY3FLRU4vYrjYz5hI4QZwV0njUx3jeuKe67YukQ1LSPZBKDqO/Q==",
"dev": true,
"license": "MIT",
"dependencies": {
"braces": "^3.0.3",
......@@ -9269,7 +10284,6 @@
"version": "2.3.1",
"resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz",
"integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==",
"dev": true,
"license": "MIT",
"engines": {
"node": ">=8.6"
......@@ -9576,7 +10590,6 @@
"version": "2.1.2",
"resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz",
"integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==",
"dev": true,
"license": "MIT"
},
"node_modules/msgpackr": {
......@@ -9904,7 +10917,6 @@
"version": "2.0.14",
"resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.14.tgz",
"integrity": "sha512-y10wOWt8yZpqXmOgRo77WaHEmhYQYGNA6y421PKsKYWEK8aW+cqAphborZDhqfyKrbZEN92CN1X2KbafY2s7Yw==",
"dev": true,
"license": "MIT"
},
"node_modules/nopt": {
......@@ -9943,7 +10955,6 @@
"version": "3.0.0",
"resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz",
"integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==",
"dev": true,
"license": "MIT",
"engines": {
"node": ">=0.10.0"
......@@ -10472,7 +11483,7 @@
"version": "7.1.2",
"resolved": "https://registry.npmjs.org/parse5/-/parse5-7.1.2.tgz",
"integrity": "sha512-Czj1WaSVpaoj0wbhMzLmWD69anp2WH7FXMB9n1Sy8/ZFF9jolSQVMu1Ij5WIyGmcBmhk7EOndpO4mIpihVqAXw==",
"dev": true,
"devOptional": true,
"license": "MIT",
"dependencies": {
"entities": "^4.4.0"
......@@ -10604,7 +11615,6 @@
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.1.tgz",
"integrity": "sha512-anP1Z8qwhkbmu7MFP5iTt+wQKXgwzf7zTyGlcdzabySa9vd0Xt392U0rVmz9poOaBj0uHJKyyo9/upk0HrEQew==",
"dev": true,
"license": "ISC"
},
"node_modules/picomatch": {
......@@ -10994,7 +12004,6 @@
"version": "1.2.3",
"resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz",
"integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==",
"dev": true,
"funding": [
{
"type": "github",
......@@ -11066,7 +12075,6 @@
"version": "3.6.0",
"resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz",
"integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==",
"dev": true,
"license": "MIT",
"dependencies": {
"picomatch": "^2.2.1"
......@@ -11079,7 +12087,6 @@
"version": "2.3.1",
"resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz",
"integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==",
"dev": true,
"license": "MIT",
"engines": {
"node": ">=8.6"
......@@ -11092,7 +12099,6 @@
"version": "0.2.2",
"resolved": "https://registry.npmjs.org/reflect-metadata/-/reflect-metadata-0.2.2.tgz",
"integrity": "sha512-urBwgfrvVP/eAyXx4hluJivBKzuEbSQs9rKWCrCkbSxNv8mxPcUZKeuoF3Uy4mJl3Lwprp6yy5/39VWigZ4K6Q==",
"dev": true,
"license": "Apache-2.0"
},
"node_modules/regenerate": {
......@@ -11183,7 +12189,6 @@
"version": "2.1.1",
"resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz",
"integrity": "sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==",
"dev": true,
"license": "MIT",
"engines": {
"node": ">=0.10.0"
......@@ -11304,7 +12309,6 @@
"version": "1.0.4",
"resolved": "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz",
"integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==",
"dev": true,
"license": "MIT",
"engines": {
"iojs": ">=1.0.0",
......@@ -11398,7 +12402,6 @@
"version": "1.2.0",
"resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz",
"integrity": "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==",
"dev": true,
"funding": [
{
"type": "github",
......@@ -11455,6 +12458,12 @@
"dev": true,
"license": "MIT"
},
"node_modules/safevalues": {
"version": "0.3.4",
"resolved": "https://registry.npmjs.org/safevalues/-/safevalues-0.3.4.tgz",
"integrity": "sha512-LRneZZRXNgjzwG4bDQdOTSbze3fHm1EAKN/8bePxnlEZiBmkYEDggaHbuvHI9/hoqHbGfsEA7tWS9GhYHZBBsw==",
"license": "Apache-2.0"
},
"node_modules/sass": {
"version": "1.77.2",
"resolved": "https://registry.npmjs.org/sass/-/sass-1.77.2.tgz",
......@@ -11585,7 +12594,6 @@
"version": "7.6.2",
"resolved": "https://registry.npmjs.org/semver/-/semver-7.6.2.tgz",
"integrity": "sha512-FNAIBWCx9qcRhoHcgcJ0gvU7SN1lYU2ZXuSfl04bSC5OpvDHFyJCjdNHomPXxjQlCBU67YW64PzY7/VIEH7F2w==",
"dev": true,
"license": "ISC",
"bin": {
"semver": "bin/semver.js"
......@@ -12195,7 +13203,6 @@
"version": "4.2.3",
"resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz",
"integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==",
"dev": true,
"license": "MIT",
"dependencies": {
"emoji-regex": "^8.0.0",
......@@ -12226,7 +13233,6 @@
"version": "6.0.1",
"resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz",
"integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==",
"dev": true,
"license": "MIT",
"dependencies": {
"ansi-regex": "^5.0.1"
......@@ -12263,7 +13269,6 @@
"version": "5.5.0",
"resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz",
"integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==",
"dev": true,
"license": "MIT",
"dependencies": {
"has-flag": "^3.0.0"
......@@ -12538,7 +13543,6 @@
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz",
"integrity": "sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog==",
"dev": true,
"license": "MIT",
"engines": {
"node": ">=4"
......@@ -12548,7 +13552,6 @@
"version": "5.0.1",
"resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz",
"integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==",
"dev": true,
"license": "MIT",
"dependencies": {
"is-number": "^7.0.0"
......@@ -12652,7 +13655,6 @@
"version": "5.4.5",
"resolved": "https://registry.npmjs.org/typescript/-/typescript-5.4.5.tgz",
"integrity": "sha512-vcI4UpRgg81oIRUFwR0WSIHKt11nJ7SAVlYNIu+QpqeyXP+gpQJy/Z4+F0aGxSE4MqwjyXvW/TzgkLAx2AGHwQ==",
"dev": true,
"license": "Apache-2.0",
"bin": {
"tsc": "bin/tsc",
......@@ -12797,7 +13799,6 @@
"version": "1.0.16",
"resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.0.16.tgz",
"integrity": "sha512-KVbTxlBYlckhF5wgfyZXTWnMn7MMZjMu9XG8bPlliUOP9ThaF4QnhP8qrjrH7DRzHfSk0oQv1wToW+iA5GajEQ==",
"dev": true,
"funding": [
{
"type": "opencollective",
......@@ -14000,7 +15001,6 @@
"version": "5.0.8",
"resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz",
"integrity": "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==",
"dev": true,
"license": "ISC",
"engines": {
"node": ">=10"
......@@ -14010,14 +15010,12 @@
"version": "3.1.1",
"resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz",
"integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==",
"dev": true,
"license": "ISC"
},
"node_modules/yargs": {
"version": "17.7.2",
"resolved": "https://registry.npmjs.org/yargs/-/yargs-17.7.2.tgz",
"integrity": "sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w==",
"dev": true,
"license": "MIT",
"dependencies": {
"cliui": "^8.0.1",
......@@ -14036,7 +15034,6 @@
"version": "21.1.1",
"resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-21.1.1.tgz",
"integrity": "sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==",
"dev": true,
"license": "ISC",
"engines": {
"node": ">=12"
......
......@@ -11,13 +11,21 @@
"private": true,
"dependencies": {
"@angular/animations": "^18.0.0",
"@angular/cdk": "^18.0.3",
"@angular/common": "^18.0.0",
"@angular/compiler": "^18.0.0",
"@angular/core": "^18.0.0",
"@angular/forms": "^18.0.0",
"@angular/material": "^18.0.3",
"@angular/platform-browser": "^18.0.0",
"@angular/platform-browser-dynamic": "^18.0.0",
"@angular/router": "^18.0.0",
"@ng-bootstrap/ng-bootstrap": "^17.0.0",
"@popperjs/core": "^2.11.8",
"ag-grid-angular": "^31.3.2",
"bootstrap": "^5.3.2",
"jquery": "^3.7.1",
"jqwidgets-ng": "^19.2.2",
"rxjs": "~7.8.0",
"tslib": "^2.3.0",
"zone.js": "~0.14.3"
......@@ -26,6 +34,7 @@
"@angular-devkit/build-angular": "^18.0.4",
"@angular/cli": "^18.0.4",
"@angular/compiler-cli": "^18.0.0",
"@angular/localize": "^18.0.0",
"@types/jasmine": "~5.1.0",
"jasmine-core": "~5.1.0",
"karma": "~6.4.0",
......
import { NgModule } from '@angular/core';
import { RouterModule, Routes } from '@angular/router';
import { TopComponent } from './top/top.component';
import { MenuComponent } from './menu/menu.component';
const routes: Routes = [];
const routes: Routes = [
{ path: '', redirectTo: '/top', pathMatch: 'full' },
{ path: 'top', component: TopComponent },
{ path: 'menu', component: MenuComponent }
];
@NgModule({
imports: [RouterModule.forRoot(routes)],
......
<!-- * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * -->
<!-- * * * * * * * * * * * The content below * * * * * * * * * * * -->
<!-- * * * * * * * * * * is only a placeholder * * * * * * * * * * -->
<!-- * * * * * * * * * * and can be replaced. * * * * * * * * * * -->
<!-- * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * -->
<!-- * * * * * * * * * Delete the template below * * * * * * * * * -->
<!-- * * * * * * * to get started with your project! * * * * * * * -->
<!-- * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * -->
<style>
:host {
--bright-blue: oklch(51.01% 0.274 263.83);
--electric-violet: oklch(53.18% 0.28 296.97);
--french-violet: oklch(47.66% 0.246 305.88);
--vivid-pink: oklch(69.02% 0.277 332.77);
--hot-red: oklch(61.42% 0.238 15.34);
--orange-red: oklch(63.32% 0.24 31.68);
--gray-900: oklch(19.37% 0.006 300.98);
--gray-700: oklch(36.98% 0.014 302.71);
--gray-400: oklch(70.9% 0.015 304.04);
--red-to-pink-to-purple-vertical-gradient: linear-gradient(
180deg,
var(--orange-red) 0%,
var(--vivid-pink) 50%,
var(--electric-violet) 100%
);
--red-to-pink-to-purple-horizontal-gradient: linear-gradient(
90deg,
var(--orange-red) 0%,
var(--vivid-pink) 50%,
var(--electric-violet) 100%
);
--pill-accent: var(--bright-blue);
font-family: "Inter", -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto,
Helvetica, Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji",
"Segoe UI Symbol";
box-sizing: border-box;
-webkit-font-smoothing: antialiased;
-moz-osx-font-smoothing: grayscale;
}
h1 {
font-size: 3.125rem;
color: var(--gray-900);
font-weight: 500;
line-height: 100%;
letter-spacing: -0.125rem;
margin: 0;
font-family: "Inter Tight", -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto,
Helvetica, Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji",
"Segoe UI Symbol";
}
p {
margin: 0;
color: var(--gray-700);
}
main {
width: 100%;
min-height: 100%;
display: flex;
justify-content: center;
align-items: center;
padding: 1rem;
box-sizing: inherit;
position: relative;
}
.angular-logo {
max-width: 9.2rem;
}
.content {
display: flex;
justify-content: space-around;
width: 100%;
max-width: 700px;
margin-bottom: 3rem;
}
.content h1 {
margin-top: 1.75rem;
}
.content p {
margin-top: 1.5rem;
}
.divider {
width: 1px;
background: var(--red-to-pink-to-purple-vertical-gradient);
margin-inline: 0.5rem;
}
.pill-group {
display: flex;
flex-direction: column;
align-items: start;
flex-wrap: wrap;
gap: 1.25rem;
}
.pill {
display: flex;
align-items: center;
--pill-accent: var(--bright-blue);
background: color-mix(in srgb, var(--pill-accent) 5%, transparent);
color: var(--pill-accent);
padding-inline: 0.75rem;
padding-block: 0.375rem;
border-radius: 2.75rem;
border: 0;
transition: background 0.3s ease;
font-family: var(--inter-font);
font-size: 0.875rem;
font-style: normal;
font-weight: 500;
line-height: 1.4rem;
letter-spacing: -0.00875rem;
text-decoration: none;
}
.pill:hover {
background: color-mix(in srgb, var(--pill-accent) 15%, transparent);
}
.pill-group .pill:nth-child(6n + 1) {
--pill-accent: var(--bright-blue);
}
.pill-group .pill:nth-child(6n + 2) {
--pill-accent: var(--french-violet);
}
.pill-group .pill:nth-child(6n + 3),
.pill-group .pill:nth-child(6n + 4),
.pill-group .pill:nth-child(6n + 5) {
--pill-accent: var(--hot-red);
}
.pill-group svg {
margin-inline-start: 0.25rem;
}
.social-links {
display: flex;
align-items: center;
gap: 0.73rem;
margin-top: 1.5rem;
}
.social-links path {
transition: fill 0.3s ease;
fill: var(--gray-400);
}
.social-links a:hover svg path {
fill: var(--gray-900);
}
@media screen and (max-width: 650px) {
.content {
flex-direction: column;
width: max-content;
}
.divider {
height: 1px;
width: 100%;
background: var(--red-to-pink-to-purple-horizontal-gradient);
margin-block: 1.5rem;
}
}
</style>
<main class="main">
<div class="content">
<div class="left-side">
<svg
xmlns="http://www.w3.org/2000/svg"
viewBox="0 0 982 239"
fill="none"
class="angular-logo"
>
<g clip-path="url(#a)">
<path
fill="url(#b)"
d="M388.676 191.625h30.849L363.31 31.828h-35.758l-56.215 159.797h30.848l13.174-39.356h60.061l13.256 39.356Zm-65.461-62.675 21.602-64.311h1.227l21.602 64.311h-44.431Zm126.831-7.527v70.202h-28.23V71.839h27.002v20.374h1.392c2.782-6.71 7.2-12.028 13.255-15.956 6.056-3.927 13.584-5.89 22.503-5.89 8.264 0 15.465 1.8 21.684 5.318 6.137 3.518 10.964 8.673 14.319 15.382 3.437 6.71 5.074 14.81 4.992 24.383v76.175h-28.23v-71.92c0-8.019-2.046-14.237-6.219-18.819-4.173-4.5-9.819-6.791-17.102-6.791-4.91 0-9.328 1.063-13.174 3.272-3.846 2.128-6.792 5.237-9.001 9.328-2.046 4.009-3.191 8.918-3.191 14.728ZM589.233 239c-10.147 0-18.82-1.391-26.103-4.091-7.282-2.7-13.092-6.382-17.511-10.964-4.418-4.582-7.528-9.655-9.164-15.219l25.448-6.136c1.145 2.372 2.782 4.663 4.991 6.954 2.209 2.291 5.155 4.255 8.837 5.81 3.683 1.554 8.428 2.291 14.074 2.291 8.019 0 14.647-1.964 19.884-5.81 5.237-3.845 7.856-10.227 7.856-19.064v-22.665h-1.391c-1.473 2.946-3.601 5.892-6.383 9.001-2.782 3.109-6.464 5.645-10.965 7.691-4.582 2.046-10.228 3.109-17.101 3.109-9.165 0-17.511-2.209-25.039-6.545-7.446-4.337-13.42-10.883-17.757-19.474-4.418-8.673-6.628-19.473-6.628-32.565 0-13.091 2.21-24.301 6.628-33.383 4.419-9.082 10.311-15.955 17.839-20.7 7.528-4.746 15.874-7.037 25.039-7.037 7.037 0 12.846 1.145 17.347 3.518 4.582 2.373 8.182 5.236 10.883 8.51 2.7 3.272 4.746 6.382 6.137 9.327h1.554v-19.8h27.821v121.749c0 10.228-2.454 18.737-7.364 25.447-4.91 6.709-11.538 11.7-20.048 15.055-8.509 3.355-18.165 4.991-28.884 4.991Zm.245-71.266c5.974 0 11.047-1.473 15.302-4.337 4.173-2.945 7.446-7.118 9.573-12.519 2.21-5.482 3.274-12.027 3.274-19.637 0-7.609-1.064-14.155-3.274-19.8-2.127-5.646-5.318-10.064-9.491-13.255-4.174-3.11-9.329-4.746-15.384-4.746s-11.537 1.636-15.792 4.91c-4.173 3.272-7.365 7.772-9.492 13.418-2.128 5.727-3.191 12.191-3.191 19.392 0 7.2 1.063 13.745 3.273 19.228 2.127 5.482 5.318 9.736 9.573 12.764 4.174 3.027 9.41 4.582 15.629 4.582Zm141.56-26.51V71.839h28.23v119.786h-27.412v-21.273h-1.227c-2.7 6.709-7.119 12.191-13.338 16.446-6.137 4.255-13.747 6.382-22.748 6.382-7.855 0-14.81-1.718-20.783-5.237-5.974-3.518-10.72-8.591-14.075-15.382-3.355-6.709-5.073-14.891-5.073-24.464V71.839h28.312v71.921c0 7.609 2.046 13.664 6.219 18.083 4.173 4.5 9.655 6.709 16.365 6.709 4.173 0 8.183-.982 12.111-3.028 3.927-2.045 7.118-5.072 9.655-9.082 2.537-4.091 3.764-9.164 3.764-15.218Zm65.707-109.395v159.796h-28.23V31.828h28.23Zm44.841 162.169c-7.61 0-14.402-1.391-20.457-4.091-6.055-2.7-10.883-6.791-14.32-12.109-3.518-5.319-5.237-11.946-5.237-19.801 0-6.791 1.228-12.355 3.765-16.773 2.536-4.419 5.891-7.937 10.228-10.637 4.337-2.618 9.164-4.664 14.647-6.055 5.4-1.391 11.046-2.373 16.856-3.027 7.037-.737 12.683-1.391 17.102-1.964 4.337-.573 7.528-1.555 9.574-2.782 1.963-1.309 3.027-3.273 3.027-5.973v-.491c0-5.891-1.718-10.391-5.237-13.664-3.518-3.191-8.51-4.828-15.056-4.828-6.955 0-12.356 1.473-16.447 4.5-4.009 3.028-6.71 6.546-8.183 10.719l-26.348-3.764c2.046-7.282 5.483-13.336 10.31-18.328 4.746-4.909 10.638-8.59 17.511-11.045 6.955-2.455 14.565-3.682 22.912-3.682 5.809 0 11.537.654 17.265 2.045s10.965 3.6 15.711 6.71c4.746 3.109 8.51 7.282 11.455 12.6 2.864 5.318 4.337 11.946 4.337 19.883v80.184h-27.166v-16.446h-.9c-1.719 3.355-4.092 6.464-7.201 9.328-3.109 2.864-6.955 5.237-11.619 6.955-4.828 1.718-10.229 2.536-16.529 2.536Zm7.364-20.701c5.646 0 10.556-1.145 14.729-3.354 4.173-2.291 7.364-5.237 9.655-9.001 2.292-3.763 3.355-7.854 3.355-12.273v-14.155c-.9.737-2.373 1.391-4.5 2.046-2.128.654-4.419 1.145-7.037 1.636-2.619.491-5.155.9-7.692 1.227-2.537.328-4.746.655-6.628.901-4.173.572-8.019 1.472-11.292 2.781-3.355 1.31-5.973 3.11-7.855 5.401-1.964 2.291-2.864 5.318-2.864 8.918 0 5.237 1.882 9.164 5.728 11.782 3.682 2.782 8.51 4.091 14.401 4.091Zm64.643 18.328V71.839h27.412v19.965h1.227c2.21-6.955 5.974-12.274 11.292-16.038 5.319-3.763 11.456-5.645 18.329-5.645 1.555 0 3.355.082 5.237.163 1.964.164 3.601.328 4.91.573v25.938c-1.227-.41-3.109-.819-5.646-1.146a58.814 58.814 0 0 0-7.446-.49c-5.155 0-9.738 1.145-13.829 3.354-4.091 2.209-7.282 5.236-9.655 9.164-2.373 3.927-3.519 8.427-3.519 13.5v70.448h-28.312ZM222.077 39.192l-8.019 125.923L137.387 0l84.69 39.192Zm-53.105 162.825-57.933 33.056-57.934-33.056 11.783-28.556h92.301l11.783 28.556ZM111.039 62.675l30.357 73.803H80.681l30.358-73.803ZM7.937 165.115 0 39.192 84.69 0 7.937 165.115Z"
/>
<path
fill="url(#c)"
d="M388.676 191.625h30.849L363.31 31.828h-35.758l-56.215 159.797h30.848l13.174-39.356h60.061l13.256 39.356Zm-65.461-62.675 21.602-64.311h1.227l21.602 64.311h-44.431Zm126.831-7.527v70.202h-28.23V71.839h27.002v20.374h1.392c2.782-6.71 7.2-12.028 13.255-15.956 6.056-3.927 13.584-5.89 22.503-5.89 8.264 0 15.465 1.8 21.684 5.318 6.137 3.518 10.964 8.673 14.319 15.382 3.437 6.71 5.074 14.81 4.992 24.383v76.175h-28.23v-71.92c0-8.019-2.046-14.237-6.219-18.819-4.173-4.5-9.819-6.791-17.102-6.791-4.91 0-9.328 1.063-13.174 3.272-3.846 2.128-6.792 5.237-9.001 9.328-2.046 4.009-3.191 8.918-3.191 14.728ZM589.233 239c-10.147 0-18.82-1.391-26.103-4.091-7.282-2.7-13.092-6.382-17.511-10.964-4.418-4.582-7.528-9.655-9.164-15.219l25.448-6.136c1.145 2.372 2.782 4.663 4.991 6.954 2.209 2.291 5.155 4.255 8.837 5.81 3.683 1.554 8.428 2.291 14.074 2.291 8.019 0 14.647-1.964 19.884-5.81 5.237-3.845 7.856-10.227 7.856-19.064v-22.665h-1.391c-1.473 2.946-3.601 5.892-6.383 9.001-2.782 3.109-6.464 5.645-10.965 7.691-4.582 2.046-10.228 3.109-17.101 3.109-9.165 0-17.511-2.209-25.039-6.545-7.446-4.337-13.42-10.883-17.757-19.474-4.418-8.673-6.628-19.473-6.628-32.565 0-13.091 2.21-24.301 6.628-33.383 4.419-9.082 10.311-15.955 17.839-20.7 7.528-4.746 15.874-7.037 25.039-7.037 7.037 0 12.846 1.145 17.347 3.518 4.582 2.373 8.182 5.236 10.883 8.51 2.7 3.272 4.746 6.382 6.137 9.327h1.554v-19.8h27.821v121.749c0 10.228-2.454 18.737-7.364 25.447-4.91 6.709-11.538 11.7-20.048 15.055-8.509 3.355-18.165 4.991-28.884 4.991Zm.245-71.266c5.974 0 11.047-1.473 15.302-4.337 4.173-2.945 7.446-7.118 9.573-12.519 2.21-5.482 3.274-12.027 3.274-19.637 0-7.609-1.064-14.155-3.274-19.8-2.127-5.646-5.318-10.064-9.491-13.255-4.174-3.11-9.329-4.746-15.384-4.746s-11.537 1.636-15.792 4.91c-4.173 3.272-7.365 7.772-9.492 13.418-2.128 5.727-3.191 12.191-3.191 19.392 0 7.2 1.063 13.745 3.273 19.228 2.127 5.482 5.318 9.736 9.573 12.764 4.174 3.027 9.41 4.582 15.629 4.582Zm141.56-26.51V71.839h28.23v119.786h-27.412v-21.273h-1.227c-2.7 6.709-7.119 12.191-13.338 16.446-6.137 4.255-13.747 6.382-22.748 6.382-7.855 0-14.81-1.718-20.783-5.237-5.974-3.518-10.72-8.591-14.075-15.382-3.355-6.709-5.073-14.891-5.073-24.464V71.839h28.312v71.921c0 7.609 2.046 13.664 6.219 18.083 4.173 4.5 9.655 6.709 16.365 6.709 4.173 0 8.183-.982 12.111-3.028 3.927-2.045 7.118-5.072 9.655-9.082 2.537-4.091 3.764-9.164 3.764-15.218Zm65.707-109.395v159.796h-28.23V31.828h28.23Zm44.841 162.169c-7.61 0-14.402-1.391-20.457-4.091-6.055-2.7-10.883-6.791-14.32-12.109-3.518-5.319-5.237-11.946-5.237-19.801 0-6.791 1.228-12.355 3.765-16.773 2.536-4.419 5.891-7.937 10.228-10.637 4.337-2.618 9.164-4.664 14.647-6.055 5.4-1.391 11.046-2.373 16.856-3.027 7.037-.737 12.683-1.391 17.102-1.964 4.337-.573 7.528-1.555 9.574-2.782 1.963-1.309 3.027-3.273 3.027-5.973v-.491c0-5.891-1.718-10.391-5.237-13.664-3.518-3.191-8.51-4.828-15.056-4.828-6.955 0-12.356 1.473-16.447 4.5-4.009 3.028-6.71 6.546-8.183 10.719l-26.348-3.764c2.046-7.282 5.483-13.336 10.31-18.328 4.746-4.909 10.638-8.59 17.511-11.045 6.955-2.455 14.565-3.682 22.912-3.682 5.809 0 11.537.654 17.265 2.045s10.965 3.6 15.711 6.71c4.746 3.109 8.51 7.282 11.455 12.6 2.864 5.318 4.337 11.946 4.337 19.883v80.184h-27.166v-16.446h-.9c-1.719 3.355-4.092 6.464-7.201 9.328-3.109 2.864-6.955 5.237-11.619 6.955-4.828 1.718-10.229 2.536-16.529 2.536Zm7.364-20.701c5.646 0 10.556-1.145 14.729-3.354 4.173-2.291 7.364-5.237 9.655-9.001 2.292-3.763 3.355-7.854 3.355-12.273v-14.155c-.9.737-2.373 1.391-4.5 2.046-2.128.654-4.419 1.145-7.037 1.636-2.619.491-5.155.9-7.692 1.227-2.537.328-4.746.655-6.628.901-4.173.572-8.019 1.472-11.292 2.781-3.355 1.31-5.973 3.11-7.855 5.401-1.964 2.291-2.864 5.318-2.864 8.918 0 5.237 1.882 9.164 5.728 11.782 3.682 2.782 8.51 4.091 14.401 4.091Zm64.643 18.328V71.839h27.412v19.965h1.227c2.21-6.955 5.974-12.274 11.292-16.038 5.319-3.763 11.456-5.645 18.329-5.645 1.555 0 3.355.082 5.237.163 1.964.164 3.601.328 4.91.573v25.938c-1.227-.41-3.109-.819-5.646-1.146a58.814 58.814 0 0 0-7.446-.49c-5.155 0-9.738 1.145-13.829 3.354-4.091 2.209-7.282 5.236-9.655 9.164-2.373 3.927-3.519 8.427-3.519 13.5v70.448h-28.312ZM222.077 39.192l-8.019 125.923L137.387 0l84.69 39.192Zm-53.105 162.825-57.933 33.056-57.934-33.056 11.783-28.556h92.301l11.783 28.556ZM111.039 62.675l30.357 73.803H80.681l30.358-73.803ZM7.937 165.115 0 39.192 84.69 0 7.937 165.115Z"
/>
</g>
<defs>
<radialGradient
id="c"
cx="0"
cy="0"
r="1"
gradientTransform="rotate(118.122 171.182 60.81) scale(205.794)"
gradientUnits="userSpaceOnUse"
>
<stop stop-color="#FF41F8" />
<stop offset=".707" stop-color="#FF41F8" stop-opacity=".5" />
<stop offset="1" stop-color="#FF41F8" stop-opacity="0" />
</radialGradient>
<linearGradient
id="b"
x1="0"
x2="982"
y1="192"
y2="192"
gradientUnits="userSpaceOnUse"
>
<stop stop-color="#F0060B" />
<stop offset="0" stop-color="#F0070C" />
<stop offset=".526" stop-color="#CC26D5" />
<stop offset="1" stop-color="#7702FF" />
</linearGradient>
<clipPath id="a"><path fill="#fff" d="M0 0h982v239H0z" /></clipPath>
</defs>
</svg>
<h1>Hello, {{ title }}</h1>
<p>Congratulations! Your app is running. 🎉</p>
</div>
<div class="divider" role="separator" aria-label="Divider"></div>
<div class="right-side">
<div class="pill-group">
@for (item of [
{ title: 'Explore the Docs', link: 'https://angular.dev' },
{ title: 'Learn with Tutorials', link: 'https://angular.dev/tutorials' },
{ title: 'CLI Docs', link: 'https://angular.dev/tools/cli' },
{ title: 'Angular Language Service', link: 'https://angular.dev/tools/language-service' },
{ title: 'Angular DevTools', link: 'https://angular.dev/tools/devtools' },
]; track item.title) {
<a
class="pill"
[href]="item.link"
target="_blank"
rel="noopener"
>
<span>{{ item.title }}</span>
<svg
xmlns="http://www.w3.org/2000/svg"
height="14"
viewBox="0 -960 960 960"
width="14"
fill="currentColor"
>
<path
d="M200-120q-33 0-56.5-23.5T120-200v-560q0-33 23.5-56.5T200-840h280v80H200v560h560v-280h80v280q0 33-23.5 56.5T760-120H200Zm188-212-56-56 372-372H560v-80h280v280h-80v-144L388-332Z"
/>
</svg>
</a>
}
</div>
<div class="social-links">
<a
href="https://github.com/angular/angular"
aria-label="Github"
target="_blank"
rel="noopener"
>
<svg
width="25"
height="24"
viewBox="0 0 25 24"
fill="none"
xmlns="http://www.w3.org/2000/svg"
alt="Github"
>
<path
d="M12.3047 0C5.50634 0 0 5.50942 0 12.3047C0 17.7423 3.52529 22.3535 8.41332 23.9787C9.02856 24.0946 9.25414 23.7142 9.25414 23.3871C9.25414 23.0949 9.24389 22.3207 9.23876 21.2953C5.81601 22.0377 5.09414 19.6444 5.09414 19.6444C4.53427 18.2243 3.72524 17.8449 3.72524 17.8449C2.61064 17.082 3.81137 17.0973 3.81137 17.0973C5.04697 17.1835 5.69604 18.3647 5.69604 18.3647C6.79321 20.2463 8.57636 19.7029 9.27978 19.3881C9.39052 18.5924 9.70736 18.0499 10.0591 17.7423C7.32641 17.4347 4.45429 16.3765 4.45429 11.6618C4.45429 10.3185 4.9311 9.22133 5.72065 8.36C5.58222 8.04931 5.16694 6.79833 5.82831 5.10337C5.82831 5.10337 6.85883 4.77319 9.2121 6.36459C10.1965 6.09082 11.2424 5.95546 12.2883 5.94931C13.3342 5.95546 14.3801 6.09082 15.3644 6.36459C17.7023 4.77319 18.7328 5.10337 18.7328 5.10337C19.3942 6.79833 18.9789 8.04931 18.8559 8.36C19.6403 9.22133 20.1171 10.3185 20.1171 11.6618C20.1171 16.3888 17.2409 17.4296 14.5031 17.7321C14.9338 18.1012 15.3337 18.8559 15.3337 20.0084C15.3337 21.6552 15.3183 22.978 15.3183 23.3779C15.3183 23.7009 15.5336 24.0854 16.1642 23.9623C21.0871 22.3484 24.6094 17.7341 24.6094 12.3047C24.6094 5.50942 19.0999 0 12.3047 0Z"
/>
</svg>
</a>
<a
href="https://twitter.com/angular"
aria-label="Twitter"
target="_blank"
rel="noopener"
>
<svg
width="24"
height="24"
viewBox="0 0 24 24"
fill="none"
xmlns="http://www.w3.org/2000/svg"
alt="Twitter"
>
<path
d="M18.244 2.25h3.308l-7.227 8.26 8.502 11.24H16.17l-5.214-6.817L4.99 21.75H1.68l7.73-8.835L1.254 2.25H8.08l4.713 6.231zm-1.161 17.52h1.833L7.084 4.126H5.117z"
/>
</svg>
</a>
<a
href="https://www.youtube.com/channel/UCbn1OgGei-DV7aSRo_HaAiw"
aria-label="Youtube"
target="_blank"
rel="noopener"
>
<svg
width="29"
height="20"
viewBox="0 0 29 20"
fill="none"
xmlns="http://www.w3.org/2000/svg"
alt="Youtube"
>
<path
fill-rule="evenodd"
clip-rule="evenodd"
d="M27.4896 1.52422C27.9301 1.96749 28.2463 2.51866 28.4068 3.12258C29.0004 5.35161 29.0004 10 29.0004 10C29.0004 10 29.0004 14.6484 28.4068 16.8774C28.2463 17.4813 27.9301 18.0325 27.4896 18.4758C27.0492 18.9191 26.5 19.2389 25.8972 19.4032C23.6778 20 14.8068 20 14.8068 20C14.8068 20 5.93586 20 3.71651 19.4032C3.11363 19.2389 2.56449 18.9191 2.12405 18.4758C1.68361 18.0325 1.36732 17.4813 1.20683 16.8774C0.613281 14.6484 0.613281 10 0.613281 10C0.613281 10 0.613281 5.35161 1.20683 3.12258C1.36732 2.51866 1.68361 1.96749 2.12405 1.52422C2.56449 1.08095 3.11363 0.76113 3.71651 0.596774C5.93586 0 14.8068 0 14.8068 0C14.8068 0 23.6778 0 25.8972 0.596774C26.5 0.76113 27.0492 1.08095 27.4896 1.52422ZM19.3229 10L11.9036 5.77905V14.221L19.3229 10Z"
/>
</svg>
</a>
</div>
</div>
</div>
</main>
<!-- * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * -->
<!-- * * * * * * * * * * * The content above * * * * * * * * * * * * -->
<!-- * * * * * * * * * * is only a placeholder * * * * * * * * * * * -->
<!-- * * * * * * * * * * and can be replaced. * * * * * * * * * * * -->
<!-- * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * -->
<!-- * * * * * * * * * * End of Placeholder * * * * * * * * * * * * -->
<!-- * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * -->
<router-outlet />
\ No newline at end of file
import { NgModule } from '@angular/core';
import { BrowserModule } from '@angular/platform-browser';
import { FormsModule, ReactiveFormsModule } from '@angular/forms';
import { AppRoutingModule } from './app-routing.module';
import { AppComponent } from './app.component';
import { NgbModule } from '@ng-bootstrap/ng-bootstrap';
import { jqxGridModule } from 'jqwidgets-ng/jqxgrid';
import { CommonModule } from '@angular/common';
import { CdkListbox, CdkOption } from '@angular/cdk/listbox';
import { TopComponent } from './top/top.component';
import { HeaderComponent } from './header/header.component';
import { MenuComponent } from './menu/menu.component';
import { provideAnimationsAsync } from '@angular/platform-browser/animations/async';
import { StaffListComponent } from './menu/staff-list/staff-list.component';
import { UserListComponent } from './menu/user-list/user-list.component';
import { RoleMstComponent } from './menu/master/role-mst/role-mst.component';
import { PassFareComponent } from './menu/master/pass-fare/pass-fare.component';
import { StaffRegistComponent } from './menu/staff-regist/staff-regist.component'
@NgModule({
declarations: [
AppComponent
AppComponent,
TopComponent,
HeaderComponent,
MenuComponent,
StaffListComponent,
UserListComponent,
RoleMstComponent,
PassFareComponent,
StaffRegistComponent
],
imports: [
BrowserModule,
AppRoutingModule
AppRoutingModule,
NgbModule,
FormsModule,
jqxGridModule,
CommonModule,
CdkListbox,
CdkOption,
ReactiveFormsModule
],
providers: [
provideAnimationsAsync()
],
providers: [],
bootstrap: [AppComponent]
})
export class AppModule { }
.header {
background-color: #0caccd;
color: white;
height: 40px;
}
<div class="header">
<table width="100%">
<tr>
<td style="padding-left:10px;padding-top:5px;">
タッチ決済サービス
</td>
@if (mode === 1) {
<td class="logout" style="text-align: right;">
<div (click)="onClickLogout()">ログアウト</div>
</td>
}
</tr>
</table>
</div>
\ No newline at end of file
import { ComponentFixture, TestBed } from '@angular/core/testing';
import { HeaderComponent } from './header.component';
describe('HeaderComponent', () => {
let component: HeaderComponent;
let fixture: ComponentFixture<HeaderComponent>;
beforeEach(async () => {
await TestBed.configureTestingModule({
declarations: [HeaderComponent]
})
.compileComponents();
fixture = TestBed.createComponent(HeaderComponent);
component = fixture.componentInstance;
fixture.detectChanges();
});
it('should create', () => {
expect(component).toBeTruthy();
});
});
import { Component, Input } from '@angular/core';
import { RouteService } from '../service/route.service';
/**
* ヘッダ
*/
@Component({
selector: 'app-header',
templateUrl: './header.component.html',
styleUrl: './header.component.css'
})
export class HeaderComponent {
//モード(0:タイトルのみ、1:ログアウトあり)
@Input() mode: number = 0;
/**
* コンストラクタ
* @param routeService 画面遷移サービス
*/
constructor(private routeService: RouteService) { }
/**
* ログアウト
*/
onClickLogout(): void {
this.routeService.navigateTop();
}
}
.listbox-container {
display: block;
width: 600px;
border: 1px solid black;
}
.listbox-invalid {
border-color: red;
}
.listbox-label {
display: block;
padding: 5px;
}
.listbox-invalid .label {
color: red;
}
.listbox {
list-style: none;
padding: 0;
margin: 0;
height: 500px;
overflow: auto;
}
.option {
position: relative;
padding: 5px 5px 5px 25px;
}
.option[aria-selected="true"]::before {
content: "";
display: block;
width: 20px;
height: 20px;
background-image: url('data:image/svg+xml;utf8,<svg xmlns="http://www.w3.org/2000/svg" height="24" width="24"><path d="m9.55 18-5.7-5.7 1.425-1.425L9.55 15.15l9.175-9.175L20.15 7.4Z"/></svg>'); /* stylelint-disable-line */
background-size: cover;
position: absolute;
left: 2px;
}
.option:focus {
background: rgba(0, 0, 0, 0.2);
}
.listbox-errors {
color: red;
}
.label {
width: 80px;
}
.input-item {
width: 35%;
}
<table style="margin-top:10px;margin-left:10px;">
<tr>
<td>
<table>
<tr>
<td>
<span>事業所</span>
</td>
<td>
<select class="form-select" [(ngModel)]="agencyId" (change)="onChangeAgency()">
@for (item of agencyList|keyvalue;track item.key) {
<option [value]="item.key">{{item.value}}</option>
}
</select>
</td>
<td style="padding-left:10px;">
<span>路線</span>
</td>
<td>
<select class="form-select" [(ngModel)]="routeId" (change)="onChangeRoute()">
@for (item of routeList|keyvalue;track item.key) {
<option [value]="item.key">{{item.value}}</option>
}
</select>
</td>
</tr>
</table>
<div class="listbox-container" style="margin-top:10px;" [class.listbox-invalid]="invalid | async">
<ul cdkListbox [formControl]="formControl" class="listbox">
@for (item of passFareList; track item) {
<li [cdkOption]="item" class="option" (click)="onClickSel(item)">
<table>
<tr>
<td>
{{item.useTermName}}
</td>
<td style="padding-left:10px;">
{{item.routeName}}
</td>
<td style="padding-left:10px;">
{{item.getonStopName}}
</td>
<td style="padding-left:10px;">
{{item.getoffStopName}}
</td>
<td style="padding-left:10px;">
{{item.fare|number}}円
</td>
</tr>
</table>
</li>
}
</ul>
</div>
</td>
<td style="padding-left:10px;">
<div>
<input type="button" class="common-button rounded" value="追加" (click)="onClickAdd()">
</div>
<div style="margin-top:5px;">
<input type="button" class="common-button rounded" value="更新" (click)="onClickUpdate()">
</div>
<div style="margin-top:5px;">
<input type="button" class="common-button rounded" value="削除" (click)="onClickDel()">
</div>
</td>
<td style="padding-left:10px;">
<table>
<tr>
<td class="label">
<span>使用期間</span>
</td>
<td class="input-item">
<select class="form-select" [(ngModel)]="useTermId">
@for(item of useTermList|keyvalue;track item.key) {
<option [value]="item.key">{{item.value}}</option>
}
</select>
</td>
<td></td>
<td class="input-item"></td>
</tr>
<tr>
<td class="label">
<span>区間</span>
</td>
<td class="input-item">
<select class="form-select" [(ngModel)]="getonStopId">
@for(item of stopList|keyvalue;track item.key) {
<option [value]="item.key">{{item.value}}</option>
}
</select>
</td>
<td>
<span></span>
</td>
<td class="input-item">
<select class="form-select" [(ngModel)]="getoffStopId">
@for(item of stopList|keyvalue;track item.key) {
<option [value]="item.key">{{item.value}}</option>
}
</select>
</td>
</tr>
<tr>
<td class="label">
<span>金額</span>
</td>
<td class="input-item">
<input type="number" class="form-control" [(ngModel)]="fare">
</td>
<td>
<span></span>
</td>
<td class="input-item"></td>
</tr>
</table>
</td>
</tr>
</table>
\ No newline at end of file
import { ComponentFixture, TestBed } from '@angular/core/testing';
import { PassFareComponent } from './pass-fare.component';
describe('PassFareComponent', () => {
let component: PassFareComponent;
let fixture: ComponentFixture<PassFareComponent>;
beforeEach(async () => {
await TestBed.configureTestingModule({
declarations: [PassFareComponent]
})
.compileComponents();
fixture = TestBed.createComponent(PassFareComponent);
component = fixture.componentInstance;
fixture.detectChanges();
});
it('should create', () => {
expect(component).toBeTruthy();
});
});
import { Component, OnInit } from '@angular/core';
import { PassFareModel } from '../../../model/pass-fare.model';
import { FormControl, Validators } from '@angular/forms';
import { Observable } from 'rxjs';
/**
* 定期運賃マスタメンテ
*/
@Component({
selector: 'app-pass-fare',
templateUrl: './pass-fare.component.html',
styleUrl: './pass-fare.component.css'
})
export class PassFareComponent implements OnInit {
invalid?: Observable<boolean>;
formControl = new FormControl<PassFareModel[]>([], Validators.required);
//事業所一覧
agencyList?: Map<string, string>;
//路線一覧
routeList?: Map<string, string>;
//使用期間一覧
useTermList?: Map<string, string>;
//停留所一覧
stopList?: Map<string, string>
//定期運賃情報
passFareList: PassFareModel[] = [];
//事業所ID
agencyId?: string;
//路線ID
routeId?: string;
//使用期間ID
useTermId?: string;
//乗車停留所ID
getonStopId?: string;
//降車停留所ID
getoffStopId?: string;
//運賃
fare: number = 0;
/**
* コンストラクタ
*/
constructor() { }
/**
* 初期処理
*/
ngOnInit(): void {
//事業所一覧
this.agencyList = new Map();
for (let i = 0; i < 5; i++) {
let str = String(i + 1);
this.agencyList.set(str, "事業所" + str);
}
this.agencyId = "1";
this.onChangeAgency();
}
/**
* 事業者選択
*/
onChangeAgency(): void {
//路線一覧
this.routeList = new Map();
for (let i = 0; i < 5; i++) {
let str = String(i + 1);
this.routeList.set(str, "路線" + str);
}
this.routeId = "1";
this.onChangeRoute();
//使用期間
this.useTermList = new Map();
this.useTermList.set("1", "1ヶ月");
this.useTermList.set("3", "3ヶ月");
this.useTermList.set("6", "6ヶ月");
//停留所
this.stopList = new Map();
for (let i = 0; i < 5; i++) {
let str = String(i + 1);
this.stopList.set(str, "停留所" + str);
}
}
/**
* 路線選択
*/
onChangeRoute(): void {
//停留所
this.stopList = new Map();
for (let i = 0; i < 5; i++) {
let str = String(i + 1);
this.stopList.set(str, "停留所" + str);
}
this.passFareList = new Array();
for (let i = 0; i < 10; i++) {
let model: PassFareModel = new PassFareModel();
model.id = String(i + 1);
model.agencyId = this.agencyId;
model.routeId = this.routeId;
model.useTermId = "1";
model.useTermName = "1ヶ月";
model.routeName = "【◯◯系統】△△行き";
model.getonStopId = "1";
model.getonStopName = "テスト乗車停留所";
model.getoffStopId = "5";
model.getoffStopName = "テスト降車停留所";
model.fare = 600;
this.passFareList.push(model);
}
}
/**
* 一覧選択
* @param model 選択情報
*/
onClickSel(model: PassFareModel): void {
this.useTermId = model.useTermId;
this.getonStopId = model.getonStopId;
this.getoffStopId = model.getoffStopId;
this.fare = model.fare;
}
/**
* 追加
*/
onClickAdd(): void {
let model: PassFareModel = new PassFareModel();
model.id = String(this.passFareList.length + 1);
model.agencyId = this.agencyId;
model.routeId = this.routeId;
if (typeof this.routeId !== 'undefined') {
model.routeName = this.routeList?.get(this.routeId);
}
model.useTermId = this.useTermId;
if (typeof this.useTermId !== 'undefined') {
model.useTermName = this.useTermList?.get(this.useTermId);
}
model.getonStopId = this.getonStopId;
if (typeof this.getonStopId !== 'undefined') {
model.getonStopName = this.stopList?.get(this.getonStopId);
}
model.getoffStopId = this.getoffStopId;
if (typeof this.getoffStopId !== 'undefined') {
model.getoffStopName = this.stopList?.get(this.getoffStopId);
}
model.fare = this.fare;
this.passFareList.push(model);
}
/**
* 更新
*/
onClickUpdate(): void {
let list = this.formControl.value;
if (list !== null) {
let model = list[0];
for (let i = 0; i < this.passFareList.length; i++) {
if (this.passFareList[i].id === model.id) {
this.passFareList[i].useTermId = this.useTermId;
if (typeof this.useTermId !== 'undefined') {
this.passFareList[i].useTermName = this.useTermList?.get(this.useTermId);
}
this.passFareList[i].getonStopId = this.getonStopId;
if (typeof this.getonStopId !== 'undefined') {
this.passFareList[i].getonStopName = this.stopList?.get(this.getonStopId);
}
this.passFareList[i].getoffStopId = this.getoffStopId;
if (typeof this.getoffStopId !== 'undefined') {
this.passFareList[i].getoffStopName = this.stopList?.get(this.getoffStopId);
}
this.passFareList[i].fare = this.fare;
break;
}
}
}
}
/**
* 削除
*/
onClickDel(): void {
let list = this.formControl.value;
if (list !== null) {
let model = list[0];
let newList = new Array();
for (let i = 0; i < this.passFareList.length; i++) {
if (this.passFareList[i].id !== model.id) {
newList.push(this.passFareList[i]);
}
}
this.passFareList = newList;
this.useTermId = "";
this.getonStopId = "";
this.getoffStopId = "";
this.fare = 0;
}
}
}
.listbox-container {
display: block;
width: 250px;
border: 1px solid black;
}
.listbox-invalid {
border-color: red;
}
.listbox-label {
display: block;
padding: 5px;
}
.listbox-invalid .label {
color: red;
}
.listbox {
list-style: none;
padding: 0;
margin: 0;
height: 200px;
overflow: auto;
}
.option {
position: relative;
padding: 5px 5px 5px 25px;
}
.option[aria-selected="true"]::before {
content: "";
display: block;
width: 20px;
height: 20px;
background-image: url('data:image/svg+xml;utf8,<svg xmlns="http://www.w3.org/2000/svg" height="24" width="24"><path d="m9.55 18-5.7-5.7 1.425-1.425L9.55 15.15l9.175-9.175L20.15 7.4Z"/></svg>'); /* stylelint-disable-line */
background-size: cover;
position: absolute;
left: 2px;
}
.option:focus {
background: rgba(0, 0, 0, 0.2);
}
.listbox-errors {
color: red;
}
<table style="margin-top:10px;margin-left:10px;">
<tr>
<td>
<div class="listbox-container" [class.listbox-invalid]="invalid | async">
<ul cdkListbox [formControl]="formControl" class="listbox">
@for (item of roleList; track item) {
<li [cdkOption]="item" class="option" (click)="onClickSel(item)">{{item.name}}</li>
}
</ul>
</div>
</td>
<td style="padding-left:10px;">
<div>
<input type="button" class="common-button rounded" value="追加" (click)="onClickAdd()">
</div>
<div style="margin-top:5px;">
<input type="button" class="common-button rounded" value="更新" (click)="onClickUpdate()">
</div>
<div style="margin-top:5px;">
<input type="button" class="common-button rounded" value="削除" (click)="onClickDel()">
</div>
</td>
<td style="padding-left:10px;">
<table>
<tr>
<td>
<span>権限</span>
</td>
<td>
<input type="text" class="form-control" [(ngModel)]="roleName">
</td>
</tr>
<tr>
<td style="padding-top:10px;">
<span>事業所担当者</span>
</td>
<td style="padding-top:10px;">
<div class="form-check form-check-inline">
<input class="form-check-input" type="radio" id="staffNo" name="staffRole" [value]="0"
[(ngModel)]="staffRole">
<label class="form-check-label" for="staffNo">閲覧不可</label>
</div>
<div class="form-check form-check-inline">
<input class="form-check-input" type="radio" id="staffOnly" name="staffRole" [value]="1"
[(ngModel)]="staffRole">
<label class="form-check-label" for="staffOnly">自事業所のみ</label>
</div>
<div class="form-check form-check-inline">
<input class="form-check-input" type="radio" id="staffAll" name="staffRole" [value]="2"
[(ngModel)]="staffRole">
<label class="form-check-label" for="staffAll">全事業所</label>
</div>
</td>
</tr>
<tr>
<td style="padding-top:10px;">
<span>利用者検索</span>
</td>
<td style="padding-top:10px;">
<div class="form-check form-check-inline">
<input class="form-check-input" type="radio" id="userNo" name="userRole" [value]="0"
[(ngModel)]="userRole">
<label class="form-check-label" for="userNo">閲覧不可</label>
</div>
<div class="form-check form-check-inline">
<input class="form-check-input" type="radio" id="userOnly" name="userRole" [value]="1"
[(ngModel)]="userRole">
<label class="form-check-label" for="userOnly">自事業所のみ</label>
</div>
<div class="form-check form-check-inline">
<input class="form-check-input" type="radio" id="userAll" name="userRole" [value]="2"
[(ngModel)]="userRole">
<label class="form-check-label" for="userAll">全事業所</label>
</div>
</td>
</tr>
<tr>
<td style="padding-top:10px;">
<span>定期券検索</span>
</td>
<td style="padding-top:10px;">
<div class="form-check form-check-inline">
<input class="form-check-input" type="radio" id="passNo" name="passRole" [value]="0"
[(ngModel)]="passRole">
<label class="form-check-label" for="passNo">閲覧不可</label>
</div>
<div class="form-check form-check-inline">
<input class="form-check-input" type="radio" id="passOnly" name="passRole" [value]="1"
[(ngModel)]="passRole">
<label class="form-check-label" for="passOnly">自事業所のみ</label>
</div>
<div class="form-check form-check-inline">
<input class="form-check-input" type="radio" id="passAll" name="passRole" [value]="2"
[(ngModel)]="passRole">
<label class="form-check-label" for="passAll">全事業所</label>
</div>
</td>
</tr>
<tr>
<td style="padding-top:10px;">
<span>乗降履歴</span>
</td>
<td style="padding-top:10px;">
<div class="form-check form-check-inline">
<input class="form-check-input" type="radio" id="historyNo" name="historyRole" [value]="0"
[(ngModel)]="historyRole">
<label class="form-check-label" for="historyNo">閲覧不可</label>
</div>
<div class="form-check form-check-inline">
<input class="form-check-input" type="radio" id="historyOnly" name="historyRole" [value]="1"
[(ngModel)]="historyRole">
<label class="form-check-label" for="historyOnly">自事業所のみ</label>
</div>
<div class="form-check form-check-inline">
<input class="form-check-input" type="radio" id="historyAll" name="historyRole" [value]="2"
[(ngModel)]="historyRole">
<label class="form-check-label" for="historyAll">全事業所</label>
</div>
</td>
</tr>
<tr>
<td style="padding-top:10px;">
<span>拒否リスト</span>
</td>
<td style="padding-top:10px;">
<div class="form-check form-check-inline">
<input class="form-check-input" type="radio" id="denyListNo" name="denyListRole" [value]="0"
[(ngModel)]="denyListRole">
<label class="form-check-label" for="denyListNo">閲覧不可</label>
</div>
<div class="form-check form-check-inline">
<input class="form-check-input" type="radio" id="denyListOnly" name="denyListRole"
[value]="1" [(ngModel)]="denyListRole">
<label class="form-check-label" for="denyListOnly">自事業所のみ</label>
</div>
<div class="form-check form-check-inline">
<input class="form-check-input" type="radio" id="denyListAll" name="denyListRole"
[value]="2" [(ngModel)]="denyListRole">
<label class="form-check-label" for="denyListAll">全事業所</label>
</div>
</td>
</tr>
<tr>
<td style="padding-top:10px;">
<span>マスタメンテ</span>
</td>
<td style="padding-top:10px;">
<div class="form-check form-check-inline">
<input class="form-check-input" type="radio" id="masterNo" name="masterRole" [value]="0"
[(ngModel)]="masterRole">
<label class="form-check-label" for="masterNo">不可</label>
</div>
<div class="form-check form-check-inline">
<input class="form-check-input" type="radio" id="masterOk" name="masterRole" [value]="1"
[(ngModel)]="masterRole">
<label class="form-check-label" for="masterOk"></label>
</div>
</td>
</tr>
</table>
</td>
</tr>
</table>
\ No newline at end of file
import { ComponentFixture, TestBed } from '@angular/core/testing';
import { RoleMstComponent } from './role-mst.component';
describe('RoleMstComponent', () => {
let component: RoleMstComponent;
let fixture: ComponentFixture<RoleMstComponent>;
beforeEach(async () => {
await TestBed.configureTestingModule({
declarations: [RoleMstComponent]
})
.compileComponents();
fixture = TestBed.createComponent(RoleMstComponent);
component = fixture.componentInstance;
fixture.detectChanges();
});
it('should create', () => {
expect(component).toBeTruthy();
});
});
import { Component, OnInit } from '@angular/core';
import { RoleModel } from '../../../model/role.model';
import { FormControl, Validators } from '@angular/forms';
import { Observable } from 'rxjs';
import { map } from 'rxjs/operators';
/**
* 権限マスタ
*/
@Component({
selector: 'app-role-mst',
templateUrl: './role-mst.component.html',
styleUrl: './role-mst.component.css'
})
export class RoleMstComponent implements OnInit {
invalid?: Observable<boolean>;
formControl = new FormControl<RoleModel[]>([], Validators.required);
//権限一覧
roleList: RoleModel[] = [];
//権限名
roleName?: string;
//事業所担当者
staffRole: number = 0;
//利用者検索
userRole: number = 0;
//定期券検索
passRole: number = 0;
//乗降履歴
historyRole: number = 0;
//拒否リスト
denyListRole: number = 0;
//マスタメンテ
masterRole: number = 0;
/**
* コンストラクタ
*/
constructor() {
this.invalid = this.formControl.valueChanges.pipe(
map(() => this.formControl.touched && !this.formControl.valid),
);
}
/**
* 初期化
*/
ngOnInit(): void {
this.roleList = new Array();
let model: RoleModel = new RoleModel;
model.roleId = "1";
model.name = "担当";
model.staffRole = 0;
model.userRole = 1;
model.passRole = 1;
model.historyRole = 1;
model.denyListRole = 1;
model.masterRole = 0;
this.roleList.push(model);
model = new RoleModel;
model.roleId = "2";
model.name = "事業所管理者";
model.staffRole = 1;
model.userRole = 1;
model.passRole = 1;
model.historyRole = 1;
model.denyListRole = 1;
model.masterRole = 0;
this.roleList.push(model);
model = new RoleModel;
model.roleId = "3";
model.name = "システム管理者";
model.staffRole = 2;
model.userRole = 2;
model.passRole = 2;
model.historyRole = 2;
model.denyListRole = 2;
model.masterRole = 1;
this.roleList.push(model);
}
/**
* 追加
*/
onClickAdd(): void {
let model: RoleModel = new RoleModel();
model.roleId = String(this.roleList.length + 1);
model.name = this.roleName;
model.staffRole = this.staffRole;
model.userRole = this.userRole;
model.passRole = this.passRole;
model.historyRole = this.historyRole;
model.denyListRole = this.denyListRole;
model.masterRole = this.masterRole;
this.roleList.push(model);
}
/**
* 更新
*/
onClickUpdate(): void {
let list = this.formControl.value;
if (list !== null) {
let model = list[0];
for (let i = 0; i < this.roleList.length; i++) {
if (this.roleList[i].roleId === model.roleId) {
this.roleList[i].name = this.roleName;
this.roleList[i].staffRole = this.staffRole;
this.roleList[i].userRole = this.userRole;
this.roleList[i].passRole = this.passRole;
this.roleList[i].historyRole = this.historyRole;
this.roleList[i].denyListRole = this.denyListRole;
this.roleList[i].masterRole = this.masterRole;
break;
}
}
}
}
/**
* 削除
*/
onClickDel(): void {
let list = this.formControl.value;
if (list !== null) {
let model = list[0];
let newList = new Array();
for (let i = 0; i < this.roleList.length; i++) {
if (this.roleList[i].roleId !== model.roleId) {
newList.push(this.roleList[i]);
}
}
this.roleList = newList;
this.roleName = "";
this.staffRole = 0;
this.userRole = 0;
this.passRole = 0;
this.historyRole = 0;
this.denyListRole = 0;
this.masterRole = 0;
}
}
/**
* 選択
* @param model 権限情報
*/
onClickSel(model: RoleModel): void {
this.roleName = model.name;
this.staffRole = model.staffRole;
this.userRole = model.userRole;
this.passRole = model.passRole;
this.historyRole = model.historyRole;
this.denyListRole = model.denyListRole;
this.masterRole = model.masterRole;
}
}
html {
height: 100%;
}
body {
height: 100%;
margin: 0;
}
<app-header [mode]="1"></app-header>
<div class="container" style="max-width:100%;height:96%;">
<div class="row h-100">
<div class="col-md-auto border">
<div class="common-link" type="button" style="margin-top:20px;" (click)="onClickBusiness()">事業所担当者</div>
<div class="common-link" type="button" style="margin-top:10px;" (click)=" onClickUser()">利用者検索</div>
<div class="common-link" type="button" style="margin-top:10px;" (click)="onClickRoleMst()">権限マスタ</div>
<div class="common-link" type="button" style="margin-top:10px;" (click)="onClickPassFare()">定期券運賃マスタ</div>
</div>
<div class="col">
@if (mode === 0) {
<app-staff-list (clickNew)="onClickNew()" (clickEdit)="onClickEdit($event)"></app-staff-list>
} @else if (mode === 1) {
<app-user-list></app-user-list>
} @else if (mode === 2) {
<app-staff-regist [mode]="staffEditMode" (clickBack)="onClickRegist()"></app-staff-regist>
} @else if (mode === 3) {
<app-role-mst></app-role-mst>
} @else if (mode === 4) {
<app-pass-fare></app-pass-fare>
}
</div>
</div>
</div>
\ No newline at end of file
import { ComponentFixture, TestBed } from '@angular/core/testing';
import { MenuComponent } from './menu.component';
describe('MenuComponent', () => {
let component: MenuComponent;
let fixture: ComponentFixture<MenuComponent>;
beforeEach(async () => {
await TestBed.configureTestingModule({
declarations: [MenuComponent]
})
.compileComponents();
fixture = TestBed.createComponent(MenuComponent);
component = fixture.componentInstance;
fixture.detectChanges();
});
it('should create', () => {
expect(component).toBeTruthy();
});
});
import { FlatTreeControl } from '@angular/cdk/tree';
import { Component } from '@angular/core';
interface ExampleFlatNode {
expandable: boolean;
name: string;
level: number;
}
@Component({
selector: 'app-menu',
templateUrl: './menu.component.html',
styleUrl: './menu.component.css'
})
export class MenuComponent {
//モード(0:事業所担当者、1:利用者検索、2:利用者登録・更新、3:権限マスタ、4:定期券運賃マスタ)
mode: number = 0;
//担当者編集モード(0:登録、1:編集)
staffEditMode: number = 0;
/**
* 事業所担当者
*/
onClickBusiness(): void {
this.mode = 0;
}
/**
* 利用者検索
*/
onClickUser(): void {
this.mode = 1;
}
/**
* 新規
*/
onClickNew(): void {
this.mode = 2;
}
/**
* 編集
* @param row 行番号
*/
onClickEdit(row: number): void {
this.mode = 2;
}
/**
* 担当者登録後
*/
onClickRegist(): void {
this.mode = 0;
}
/**
* 権限マスタ
*/
onClickRoleMst(): void {
this.mode = 3;
}
/**
* 定期券運賃マスタ
*/
onClickPassFare(): void {
this.mode = 4;
}
}
@import "jqwidgets-ng/jqwidgets/styles/jqx.base.css";
<table style="margin-top:10px;margin-left:10px;">
<tr>
<td>
<span>事業所</span>
</td>
<td style="padding-left:10px;">
<select class="form-select" [(ngModel)]="agencyId">
@for (item of agencyList|keyvalue;track item.key) {
<option [value]="item.key">{{item.value}}</option>
}
</select>
</td>
<td style="padding-left:10px;">
<input type="button" class="btn common-button" value="検索" (click)="onClickSearch()" />
</td>
</tr>
</table>
<table style="margin-top:10px;">
<tr>
<td>
<input type="button" class="btn common-button" value="新規" (click)="onClickNew()" />
</td>
<td>
<input type="button" class="btn common-button" value="削除" (click)="onClickDel()" />
</td>
</tr>
</table>
<jqxGrid style="margin-top:20px;" [width]="770" [selectionmode]="'checkbox'" [source]="source" [theme]="'material'"
[autoheight]="true" [pageable]="true" [altrows]="true" [filterable]="true" [sortable]="true" [columns]="columns"
#grid></jqxGrid>
\ No newline at end of file
import { ComponentFixture, TestBed } from '@angular/core/testing';
import { StaffListComponent } from './staff-list.component';
describe('StaffListComponent', () => {
let component: StaffListComponent;
let fixture: ComponentFixture<StaffListComponent>;
beforeEach(async () => {
await TestBed.configureTestingModule({
declarations: [StaffListComponent]
})
.compileComponents();
fixture = TestBed.createComponent(StaffListComponent);
component = fixture.componentInstance;
fixture.detectChanges();
});
it('should create', () => {
expect(component).toBeTruthy();
});
});
import { Component, EventEmitter, OnInit, Output, ViewChild } from '@angular/core';
import { StaffInfoModel } from '../../model/staff-info.model';
import { jqxGridComponent } from 'jqwidgets-ng/jqxgrid';
/**
* 事業所担当者一覧
*/
@Component({
selector: 'app-staff-list',
templateUrl: './staff-list.component.html',
styleUrl: './staff-list.component.css'
})
export class StaffListComponent implements OnInit {
@Output() clickNew: EventEmitter<void> = new EventEmitter();
@Output() clickEdit: EventEmitter<number> = new EventEmitter();
@ViewChild('grid', { static: false }) myGrid?: jqxGridComponent;
//事業所ID
agencyId: string = "";
//事業所一覧
agencyList: Map<string, string> = new Map();
//担当者一覧
staffList: StaffInfoModel[] = [];
source: any = {
datatype: 'json',
datafields: [
{ name: 'update', type: 'string' },
{ name: 'email', type: 'string' },
{ name: 'name', type: 'string' },
{ name: 'company', type: 'string' },
{ name: 'department', type: 'string' },
{ name: 'roleName', type: 'string' }
]
}
columns = [
{
text: '', datafield: 'update', width: 40, cellsrenderer: function (row: any, column: any, value: any) {
return '<input type="button" style="width:40px;height:100%;" data-row="' + row + '" onclick="onClickEdit(' + row + ')" value="編集">';
}
},
{ text: 'メールアドレス', datafield: 'email', width: 200, },
{ text: '氏名', datafield: 'name', width: 200 },
{ text: '会社', datafield: 'company', width: 100 },
{ text: '部署', datafield: 'department', width: 100 },
{ text: '権限', datafield: 'roleName', width: 100 }
];
/**
* コンストラクタ
*/
constructor() { }
/**
* 初期処理
*/
ngOnInit(): void {
this.agencyList = new Map();
for (let i = 0; i < 5; i++) {
let str = String(i + 1);
this.agencyList.set("000" + str, "事業所" + str);
if (i == 0) {
this.agencyId = "000" + str;
}
}
}
/**
* 検索
*/
onClickSearch(): void {
//担当者一覧取得
this.staffList = new Array();
for (let i = 0; i < 5; i++) {
let model = new StaffInfoModel();
model.email = "test" + String(i + 1) + "@test.com";
model.name = "山田 太郎";
model.company = "テスト会社";
model.department = "テスト部";
model.roleId = "0";
model.roleName = "システム管理者";
this.staffList.push(model);
}
this.source.localdata = JSON.stringify(this.staffList);
this.myGrid?.updatebounddata();
}
/**
* 新規
*/
onClickNew(): void {
this.clickNew.emit();
}
/**
* 編集
*/
onClickEdit(row: number): void {
this.clickEdit.emit(row);
}
/**
* 削除
*/
onClickDel(): void {
//TODO
if (typeof this.myGrid !== "undefined") {
let rows = this.myGrid.getselectedrowindexes();
for (let i = 0; i < rows.length; i++) {
console.log(rows[i]);
}
}
}
}
<table>
<tr>
<td style="padding-top:10px;padding-left:10px;">
<span>事業所</span>
</td>
<td style="padding-top:10px;padding-left:10px;">
<select class="form-select" [(ngModel)]="agencyId" [disabled]="mode === 1">
@for (item of agencyList|keyvalue;track item.key) {
<option [value]="item.key">{{item.value}}</option>
}
</select>
</td>
</tr>
<tr>
<td style="padding-top:10px;padding-left:10px;">
<span>メールアドレス</span>
</td>
<td style="padding-top:10px;padding-left:10px;">
<input type="email" class="form-control" [(ngModel)]="email" [disabled]="mode === 1">
</td>
</tr>
<tr>
<td style="padding-top:10px;padding-left:10px;">
<span>パスワード</span>
</td>
<td style="padding-top:10px;padding-left:10px;">
<input type="password" class="form-control" [(ngModel)]="password">
</td>
</tr>
<tr>
<td style="padding-top:10px;padding-left:10px;">
<span>氏名</span>
</td>
<td style="padding-top:10px;padding-left:10px;">
<input type="text" class="form-control" [(ngModel)]="name">
</td>
</tr>
<tr>
<td style="padding-top:10px;padding-left:10px;">
<span>部署</span>
</td>
<td style="padding-top:10px;padding-left:10px;">
<input type="text" class="form-control" [(ngModel)]="department">
</td>
</tr>
<tr>
<td style="padding-top:10px;padding-left:10px;">
権限
</td>
<td style="padding-top:10px;padding-left:10px;">
<select class="form-select" [(ngModel)]="roleId">
@for (item of roleList|keyvalue;track item.key) {
<option [value]="item.key">{{item.value}}</option>
}
</select>
</td>
</tr>
<tr>
<td colspan="2" style="padding-top:10px;">
<table>
<tr>
<td>
@if (mode === 0) {
<input type="button" class="btn common-button" value="登録" (click)="onClickRegist()">
} @else {
<input type="button" class="btn common-button" value="更新" (click)="onClickUpdate()">
}
</td>
<td>
<input type="button" class="btn common-button" value="戻る" (click)="onClickBack()">
</td>
</tr>
</table>
</td>
</tr>
</table>
\ No newline at end of file
import { ComponentFixture, TestBed } from '@angular/core/testing';
import { StaffRegistComponent } from './staff-regist.component';
describe('StaffRegistComponent', () => {
let component: StaffRegistComponent;
let fixture: ComponentFixture<StaffRegistComponent>;
beforeEach(async () => {
await TestBed.configureTestingModule({
declarations: [StaffRegistComponent]
})
.compileComponents();
fixture = TestBed.createComponent(StaffRegistComponent);
component = fixture.componentInstance;
fixture.detectChanges();
});
it('should create', () => {
expect(component).toBeTruthy();
});
});
import { Component, EventEmitter, Input, OnInit, Output } from '@angular/core';
@Component({
selector: 'app-staff-regist',
templateUrl: './staff-regist.component.html',
styleUrl: './staff-regist.component.css'
})
export class StaffRegistComponent implements OnInit {
@Input() mode: number = 0;
@Output() clickBack: EventEmitter<void> = new EventEmitter();
//事業所ID
agencyId?: string;
//事業所一覧
agencyList?: Map<string, string>
//メールアドレス
email?: string;
//パスワード
password?: string;
//氏名
name?: string;
//部署
department?: string;
//権限
roleId?: string;
//権限一覧
roleList?: Map<string, string>
/**
* コンストラクタ
*/
constructor() { }
/**
* 初期処理
*/
ngOnInit(): void {
//事業所一覧
this.agencyList = new Map();
for (let i = 0; i < 5; i++) {
let str = String(i + 1);
this.agencyList?.set(str, "事業所" + str)
}
//権限一覧
this.roleList = new Map();
for (let i = 0; i < 3; i++) {
let str = String(i + 1);
this.roleList?.set(str, "権限" + str)
}
}
/**
* 登録
*/
onClickRegist(): void {
//担当者登録
this.clickBack.emit();
}
/**
* 更新
*/
onClickUpdate(): void {
//担当者更新
this.clickBack.emit();
}
/**
* 戻る
*/
onClickBack(): void {
this.clickBack.emit();
}
}
<table style="margin-top:10px;margin-left:10px;">
<tr>
<td>
<span>利用者名</span>
</td>
<td style="padding-left:10px;">
<input type="text" class="form-control" [(ngModel)]="userName" />
</td>
<td style="padding-left:10px;">
<input type="button" class="btn common-button" value="検索" (click)="onClickSearch()" />
</td>
</tr>
</table>
<jqxGrid style="margin-top:20px;" [width]="940" [source]="source" [theme]="'material'" [autoheight]="true"
[pageable]="true" [altrows]="true" [filterable]="true" [sortable]="true" [columns]="columns" #grid></jqxGrid>
\ No newline at end of file
import { ComponentFixture, TestBed } from '@angular/core/testing';
import { UserListComponent } from './user-list.component';
describe('UserListComponent', () => {
let component: UserListComponent;
let fixture: ComponentFixture<UserListComponent>;
beforeEach(async () => {
await TestBed.configureTestingModule({
declarations: [UserListComponent]
})
.compileComponents();
fixture = TestBed.createComponent(UserListComponent);
component = fixture.componentInstance;
fixture.detectChanges();
});
it('should create', () => {
expect(component).toBeTruthy();
});
});
import { Component, ViewChild } from '@angular/core';
import { UserInfoModel } from '../../model/user-info.model';
import { jqxGridComponent } from 'jqwidgets-ng/jqxgrid';
/**
* 利用者検索画面
*/
@Component({
selector: 'app-user-list',
templateUrl: './user-list.component.html',
styleUrl: './user-list.component.css'
})
export class UserListComponent {
@ViewChild('grid', { static: false }) myGrid?: jqxGridComponent;
//利用者名
userName?: string;
//利用者一覧
userList: UserInfoModel[] = [];
source: any = {
datatype: 'json',
datafields: [
{ name: 'name', type: 'string' },
{ name: 'nameKana', type: 'string' },
{ name: 'email', type: 'string' },
{ name: 'phoneNumber', type: 'string' },
{ name: 'pass', type: 'string' },
{ name: 'history', type: 'string' },
{ name: 'denyList', type: 'string' }
]
}
columns = [
{ text: '氏名', datafield: 'name', width: 200, },
{ text: 'フリガナ', datafield: 'nameKana', width: 200 },
{ text: 'メールアドレス', datafield: 'email', width: 200 },
{ text: '電話番号', datafield: 'phoneNumber', width: 100 },
{
text: '', datafield: 'pass', width: 80, cellsrenderer: function (row: any, column: any, value: any) {
return '<input type="button" style="width:80px;height:100%;" data-row="' + row + '" onclick="onClickPass(' + row + ')" value="定期券">';
}
},
{
text: '', datafield: 'history', width: 80, cellsrenderer: function (row: any, column: any, value: any) {
return '<input type="button" style="width:80px;height:100%;" data-row="' + row + '" onclick="onClickHistory(' + row + ')" value="乗降履歴">';
}
},
{
text: '', datafield: 'denyList', width: 80, cellsrenderer: function (row: any, column: any, value: any) {
return '<input type="button" style="width:80px;height:100%;" data-row="' + row + '" onclick="onClickHistory(' + row + ')" value="拒否リスト">';
}
}
];
/**
* コンストラクタ
*/
constructor() { }
/**
* 検索
*/
onClickSearch(): void {
this.userList = new Array();
for (let i = 0; i < 10; i++) {
let str = String(i + 1);
let model = new UserInfoModel();
model.name = "山田太郎" + str;
model.nameKana = "ヤマダタロウ" + str;
model.email = "tarou_yamada" + str + "@test.com";
model.phoneNumber = "09088882456";
this.userList.push(model);
}
this.source.localdata = JSON.stringify(this.userList);
this.myGrid?.updatebounddata();
}
}
/**
* 定期券運賃情報
*/
export class PassFareModel {
//ID
id?: string;
//事業者ID
agencyId?: string;
//経路ID
routeId?: string;
//経路名
routeName?: string;
//使用期間ID
useTermId?: string;
//使用期間名
useTermName?: string;
//乗車停留所ID
getonStopId?: string;
//乗車停留所名
getonStopName?: string;
//降車停留所ID
getoffStopId?: string;
//降車停留所名
getoffStopName?: string;
//運賃
fare: number = 0;
}
\ No newline at end of file
/**
* 権限情報
*/
export class RoleModel {
//権限ID
roleId: string = "";
//権限名
name?: string;
//担当者管理(0:閲覧不可、1:自事業所のみ、2:全事業所)
staffRole: number = 0;
//利用者検索(0:閲覧不可、1:自事業所のみ、2:全事業所)
userRole: number = 0;
//定期券検索(0:閲覧不可、1:自事業所のみ、2:全事業所)
passRole: number = 0;
//乗降履歴(0:閲覧不可、1:自事業所のみ、2:全事業所)
historyRole: number = 0;
//拒否リスト(0:閲覧不可、1:自事業所のみ、2:全事業所)
denyListRole: number = 0;
//マスタメンテ(0:不可、1:可)
masterRole: number = 0;
}
\ No newline at end of file
/**
* スタッフ情報
*/
export class StaffInfoModel {
//選択状態
select: boolean = false;
//メールアドレス
email?: string;
//スタッフ氏名
name?: string;
//会社名
company?: string;
//部署
department?: string;
//権限ID
roleId?: string;
//権限名
roleName?: string;
}
\ No newline at end of file
/**
* 利用者情報
*/
export class UserInfoModel {
//氏名
name?: string;
//フリガナ
nameKana?: string;
//メールアドレス
email?: string;
//電話番号
phoneNumber?: string;
}
\ No newline at end of file
import { TestBed } from '@angular/core/testing';
import { RouteService } from './route.service';
describe('RouteService', () => {
let service: RouteService;
beforeEach(() => {
TestBed.configureTestingModule({});
service = TestBed.inject(RouteService);
});
it('should be created', () => {
expect(service).toBeTruthy();
});
});
import { Injectable } from '@angular/core';
import { Router } from '@angular/router';
/**
* 画面遷移サービス
*/
@Injectable({
providedIn: 'root'
})
export class RouteService {
/**
* コンストラクタ
* @param router ルーター
*/
constructor(private router: Router) { }
navigateTop(): void {
this.router.navigate(['top'])
}
/**
* メニューへ遷移
*/
navigateMenu(): void {
this.router.navigate(['menu'])
}
}
.login-block {
width: 400px;
}
<app-header></app-header>
<div class="mx-auto login-block" style="margin-top:20px;">
<table>
<tr>
<td>
<span>メールアドレス</span>
</td>
<td style="padding-left:10px;">
<input type="email" class="form-control" [(ngModel)]="email" />
</td>
</tr>
<tr>
<td>
<span>パスワード</span>
</td>
<td style="padding-left:10px;">
<input type="password" class="form-control" [(ngModel)]="password" />
</td>
</tr>
<tr>
<td colspan="2" align="center" style="padding-top:20px;">
<input type="button" class="btn common-button" value="ログイン" (click)="onClickLogin()" />
</td>
</tr>
</table>
</div>
\ No newline at end of file
import { ComponentFixture, TestBed } from '@angular/core/testing';
import { TopComponent } from './top.component';
describe('TopComponent', () => {
let component: TopComponent;
let fixture: ComponentFixture<TopComponent>;
beforeEach(async () => {
await TestBed.configureTestingModule({
declarations: [TopComponent]
})
.compileComponents();
fixture = TestBed.createComponent(TopComponent);
component = fixture.componentInstance;
fixture.detectChanges();
});
it('should create', () => {
expect(component).toBeTruthy();
});
});
import { Component } from '@angular/core';
import { RouteService } from '../service/route.service';
/**
* ログイン画面
*/
@Component({
selector: 'app-top',
templateUrl: './top.component.html',
styleUrl: './top.component.css'
})
export class TopComponent {
//メールアドレス
email?: string;
//パスワード
password?: string;
/**
* コンストラクタ
*/
constructor(private routeService: RouteService) {
}
/**
* ログイン
*/
onClickLogin(): void {
this.routeService.navigateMenu();
}
}
......@@ -6,6 +6,8 @@
<base href="/">
<meta name="viewport" content="width=device-width, initial-scale=1">
<link rel="icon" type="image/x-icon" href="favicon.ico">
<link href="https://fonts.googleapis.com/css2?family=Roboto:wght@300;400;500&display=swap" rel="stylesheet">
<link href="https://fonts.googleapis.com/icon?family=Material+Icons" rel="stylesheet">
</head>
<body>
<app-root></app-root>
......
/// <reference types="@angular/localize" />
import { platformBrowserDynamic } from '@angular/platform-browser-dynamic';
import { AppModule } from './app/app.module';
......
/* You can add global styles to this file, and also import other style files */
.common-button {
background-color: #f19024;
color: white;
height: 40px;
padding-left: 20px;
padding-right: 20px;
}
.common-link {
text-decoration: underline;
color: #0caccd;
}
html,
body {
height: 100%;
}
body {
margin: 0;
font-family: Roboto, "Helvetica Neue", sans-serif;
}
......@@ -4,7 +4,9 @@
"extends": "./tsconfig.json",
"compilerOptions": {
"outDir": "./out-tsc/app",
"types": []
"types": [
"@angular/localize"
]
},
"files": [
"src/main.ts"
......
......@@ -5,7 +5,8 @@
"compilerOptions": {
"outDir": "./out-tsc/spec",
"types": [
"jasmine"
"jasmine",
"@angular/localize"
]
},
"include": [
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment