diff --git a/api/emailLayout.js b/api/emailLayout.js index b110c32e..050c6f9f 100644 --- a/api/emailLayout.js +++ b/api/emailLayout.js @@ -17,6 +17,10 @@ function EmailLayout() { ${value}\n`; }; + this.tableRowNoLabel = function(value) { + return `${value}\n`; + }; + this.dateFormat = function(isoDateStr) { // HTML5 date is ALWAYS formatted yyyy-mm-dd. // ISO Date is ALWAYS formatted yyyy-mm-ddT00:00:00.000Z. @@ -265,6 +269,17 @@ function EmailLayout() { } + this.requestAdditional = function(additionalOptions) + { + let result = this.tableHeader('Additional Records Specified'); + + additionalOptions.forEach(options =>{ + result += this.tableRowNoLabel(options.name); + }); + + return result; + } + this.adoptiveParents = function(data) { const mother = this.joinBySpace(data.motherFirstName, data.motherLastName); const father = this.joinBySpace(data.fatherFirstName, data.fatherLastName); @@ -382,13 +397,17 @@ function EmailLayout() { ); } -if(data.requestData.selectAbout.yourself && !data.requestData.selectAbout.child && !data.requestData.selectAbout.another) -{ - content += this.requesttopic(data.requestData.selectedtopics,data.requestData.requestType.adoption, - data.requestData.requestType.childprotectionchild,data.requestData.requestType.childprotectionparent, - data.requestData.requestType.fosterparent,data.requestData.requestType.youthincarechild,data.requestData.requestType.youthincareparent - ) -} + if(data.requestData.selectAbout.yourself) + { + content += this.requesttopic(data.requestData.selectedtopics,data.requestData.requestType.adoption, + data.requestData.requestType.childprotectionchild,data.requestData.requestType.childprotectionparent, + data.requestData.requestType.fosterparent,data.requestData.requestType.youthincarechild,data.requestData.requestType.youthincareparent + ) + } + + if(data.requestData.selectedadditionaloptions && data.requestData.selectedadditionaloptions.length > 0) { + content += this.requestAdditional(data.requestData.selectedadditionaloptions); + } // if we have 'childInformation' then include the block if (data.requestData.selectAbout.child) { diff --git a/api/package-lock.json b/api/package-lock.json index 5bafbcde..8e8acb99 100644 --- a/api/package-lock.json +++ b/api/package-lock.json @@ -450,6 +450,16 @@ "node": ">=8" } }, + "node_modules/@istanbuljs/load-nyc-config/node_modules/argparse": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", + "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", + "dev": true, + "license": "MIT", + "dependencies": { + "sprintf-js": "~1.0.2" + } + }, "node_modules/@istanbuljs/load-nyc-config/node_modules/find-up": { "version": "4.1.0", "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", @@ -769,9 +779,9 @@ } }, "node_modules/@types/lodash": { - "version": "4.17.7", - "resolved": "https://registry.npmjs.org/@types/lodash/-/lodash-4.17.7.tgz", - "integrity": "sha512-8wTvZawATi/lsmNu10/j2hk1KEP0IvjubqPE3cu1Xz7xfXXt5oCq3SNUz4fMIP4XGF9Ky+Ue2tBA3hcS7LSBlA==", + "version": "4.17.9", + "resolved": "https://registry.npmjs.org/@types/lodash/-/lodash-4.17.9.tgz", + "integrity": "sha512-w9iWudx1XWOHW5lQRS9iKpK/XuRhnN+0T7HvdCCd802FYkT1AMTnxndJHGrNJwRoRHkslGr4S29tjm1cT7x/7w==", "license": "MIT" }, "node_modules/@types/mime": { @@ -781,9 +791,9 @@ "license": "MIT" }, "node_modules/@types/node": { - "version": "22.5.5", - "resolved": "https://registry.npmjs.org/@types/node/-/node-22.5.5.tgz", - "integrity": "sha512-Xjs4y5UPO/CLdzpgR6GirZJx36yScjh73+2NlLlkFRSoQN8B0DpfXPdZGnvVmLRLOsqDpOfTNv7D9trgGhmOIA==", + "version": "22.6.1", + "resolved": "https://registry.npmjs.org/@types/node/-/node-22.6.1.tgz", + "integrity": "sha512-V48tCfcKb/e6cVUigLAaJDAILdMP0fUW6BidkPK4GpGjXcfbnoHasCZDwz3N3yVt5we2RHm4XTQCpv0KJz9zqw==", "license": "MIT", "dependencies": { "undici-types": "~6.19.2" @@ -1241,9 +1251,9 @@ } }, "node_modules/caniuse-lite": { - "version": "1.0.30001660", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001660.tgz", - "integrity": "sha512-GacvNTTuATm26qC74pt+ad1fW15mlQ/zuTzzY1ZoIzECTP8HURDfF43kNxPgf7H1jmelCBQTTbBNxdSXOA7Bqg==", + "version": "1.0.30001663", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001663.tgz", + "integrity": "sha512-o9C3X27GLKbLeTYZ6HBOLU1tsAcBZsLis28wrVzddShCS16RujjHp9GDHKZqrB3meE0YjhawvMFsGb/igqiPzA==", "dev": true, "funding": [ { @@ -1717,9 +1727,9 @@ } }, "node_modules/electron-to-chromium": { - "version": "1.5.24", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.24.tgz", - "integrity": "sha512-0x0wLCmpdKFCi9ulhvYZebgcPmHTkFVUfU2wzDykadkslKwT4oAmDTHEKLnlrDsMGZe4B+ksn8quZfZjYsBetA==", + "version": "1.5.28", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.28.tgz", + "integrity": "sha512-VufdJl+rzaKZoYVUijN13QcXVF5dWPZANeFTLNy+OSpHdDL5ynXTF35+60RSBbaQYB1ae723lQXHCrf4pyLsMw==", "dev": true, "license": "ISC" }, @@ -2013,17 +2023,33 @@ } }, "node_modules/foreground-child": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/foreground-child/-/foreground-child-2.0.0.tgz", - "integrity": "sha512-dCIq9FpEcyQyXKCkyzmlPTFNgrCzPudOe+mhvJU5zAtlBnGVy2yKxtfsxK2tQBThwq225jcvBjpw1Gr40uzZCA==", + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/foreground-child/-/foreground-child-3.3.0.tgz", + "integrity": "sha512-Ld2g8rrAyMYFXBhEqMz8ZAHBi4J4uS1i/CxGMDnjyFWddMXLVcDp051DZfu+t7+ab7Wv6SMqpWmyFIj5UbfFvg==", "dev": true, "license": "ISC", "dependencies": { "cross-spawn": "^7.0.0", - "signal-exit": "^3.0.2" + "signal-exit": "^4.0.1" }, "engines": { - "node": ">=8.0.0" + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/foreground-child/node_modules/signal-exit": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-4.1.0.tgz", + "integrity": "sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==", + "dev": true, + "license": "ISC", + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" } }, "node_modules/form-data": { @@ -2685,6 +2711,28 @@ "node": ">=8" } }, + "node_modules/istanbul-lib-processinfo/node_modules/glob": { + "version": "7.2.3", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", + "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", + "deprecated": "Glob versions prior to v9 are no longer supported", + "dev": true, + "license": "ISC", + "dependencies": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.1.1", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + }, + "engines": { + "node": "*" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, "node_modules/istanbul-lib-processinfo/node_modules/rimraf": { "version": "3.0.2", "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", @@ -3361,9 +3409,9 @@ } }, "node_modules/nodemon": { - "version": "3.1.5", - "resolved": "https://registry.npmjs.org/nodemon/-/nodemon-3.1.5.tgz", - "integrity": "sha512-V5UtfYc7hjFD4SI3EzD5TR8ChAHEZ+Ns7Z5fBk8fAbTVAj+q3G+w7sHJrHxXBkVn6ApLVTljau8wfHwqmGUjMw==", + "version": "3.1.7", + "resolved": "https://registry.npmjs.org/nodemon/-/nodemon-3.1.7.tgz", + "integrity": "sha512-hLj7fuMow6f0lbB0cD14Lz2xNjwsyruH251Pk4t/yIitCFJbmY1myuLlHm/q06aST4jg6EgAh74PIBBrRqpVAQ==", "dev": true, "license": "MIT", "dependencies": { @@ -3423,9 +3471,9 @@ } }, "node_modules/nyc": { - "version": "17.0.0", - "resolved": "https://registry.npmjs.org/nyc/-/nyc-17.0.0.tgz", - "integrity": "sha512-ISp44nqNCaPugLLGGfknzQwSwt10SSS5IMoPR7GLoMAyS18Iw5js8U7ga2VF9lYuMZ42gOHr3UddZw4WZltxKg==", + "version": "17.1.0", + "resolved": "https://registry.npmjs.org/nyc/-/nyc-17.1.0.tgz", + "integrity": "sha512-U42vQ4czpKa0QdI1hu950XuNhYqgoM+ZF1HT+VuUHL9hPfDPVvNQyltmMqdE9bUHMVa+8yNbc3QKTj8zQhlVxQ==", "dev": true, "license": "ISC", "dependencies": { @@ -3436,7 +3484,7 @@ "decamelize": "^1.2.0", "find-cache-dir": "^3.2.0", "find-up": "^4.1.0", - "foreground-child": "^2.0.0", + "foreground-child": "^3.3.0", "get-package-type": "^0.1.0", "glob": "^7.1.6", "istanbul-lib-coverage": "^3.0.0", @@ -3586,6 +3634,13 @@ "node": ">=8" } }, + "node_modules/nyc/node_modules/y18n": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/y18n/-/y18n-4.0.3.tgz", + "integrity": "sha512-JKhqTOwSrqNA1NY5lSztJ1GrBiUodLMmIZuLiDaMRJ+itFd+ABVE8XBjOvIWL+rSqNDC74LCSFmlb/U4UZ4hJQ==", + "dev": true, + "license": "ISC" + }, "node_modules/nyc/node_modules/yargs": { "version": "15.4.1", "resolved": "https://registry.npmjs.org/yargs/-/yargs-15.4.1.tgz", @@ -3910,6 +3965,48 @@ "node": ">=8" } }, + "node_modules/pkg-dir/node_modules/locate-path": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", + "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", + "dev": true, + "license": "MIT", + "dependencies": { + "p-locate": "^4.1.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/pkg-dir/node_modules/p-limit": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", + "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", + "dev": true, + "license": "MIT", + "dependencies": { + "p-try": "^2.0.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/pkg-dir/node_modules/p-locate": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", + "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", + "dev": true, + "license": "MIT", + "dependencies": { + "p-limit": "^2.2.0" + }, + "engines": { + "node": ">=8" + } + }, "node_modules/pocket-registry": { "version": "1.1.8", "resolved": "https://registry.npmjs.org/pocket-registry/-/pocket-registry-1.1.8.tgz", @@ -4530,6 +4627,20 @@ "node": ">=8" } }, + "node_modules/spawn-wrap/node_modules/foreground-child": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/foreground-child/-/foreground-child-2.0.0.tgz", + "integrity": "sha512-dCIq9FpEcyQyXKCkyzmlPTFNgrCzPudOe+mhvJU5zAtlBnGVy2yKxtfsxK2tQBThwq225jcvBjpw1Gr40uzZCA==", + "dev": true, + "license": "ISC", + "dependencies": { + "cross-spawn": "^7.0.0", + "signal-exit": "^3.0.2" + }, + "engines": { + "node": ">=8.0.0" + } + }, "node_modules/spawn-wrap/node_modules/glob": { "version": "7.2.3", "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", @@ -4622,6 +4733,13 @@ "node": ">= 10.x" } }, + "node_modules/sprintf-js": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", + "integrity": "sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==", + "dev": true, + "license": "BSD-3-Clause" + }, "node_modules/sshpk": { "version": "1.18.0", "resolved": "https://registry.npmjs.org/sshpk/-/sshpk-1.18.0.tgz", @@ -5081,6 +5199,12 @@ "string_decoder": "~0.10.x" } }, + "node_modules/wav/node_modules/string_decoder": { + "version": "0.10.31", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz", + "integrity": "sha512-ev2QzSzWPYmy9GuqfIVildA4OdcGLeFZQrq5ys6RtiuF+RQQiZWr8TZNyAcuVXyQRYfEO+MsoB/1BuQVhOJuoQ==", + "license": "MIT" + }, "node_modules/wbuf": { "version": "1.7.3", "resolved": "https://registry.npmjs.org/wbuf/-/wbuf-1.7.3.tgz", diff --git a/web/package-lock.json b/web/package-lock.json index 985edb3b..315cf092 100644 --- a/web/package-lock.json +++ b/web/package-lock.json @@ -14,6 +14,7 @@ "@angular/compiler": "^18.2.1", "@angular/core": "^18.2.1", "@angular/forms": "^18.2.1", + "@angular/material": "^18.2.1", "@angular/platform-browser": "^18.2.1", "@angular/platform-browser-dynamic": "^18.2.1", "@angular/router": "^18.2.1", @@ -72,13 +73,13 @@ } }, "node_modules/@angular-devkit/architect": { - "version": "0.1802.3", - "resolved": "https://registry.npmjs.org/@angular-devkit/architect/-/architect-0.1802.3.tgz", - "integrity": "sha512-WQ2AmkUKy1bqrDlNfozW8+VT2Tv/Fdmu4GIXps3ytZANyAKiIvTzmmql2cRCXXraa9FNMjLWNvz+qolDxWVdYQ==", + "version": "0.1802.5", + "resolved": "https://registry.npmjs.org/@angular-devkit/architect/-/architect-0.1802.5.tgz", + "integrity": "sha512-c7sVoW85Yqj7IYvNKxtNSGS5I7gWpORorg/xxLZX3OkHWXDrwYbb5LN/2p5/Aytxyb0aXl4o5fFOu6CUwcaLUw==", "dev": true, "license": "MIT", "dependencies": { - "@angular-devkit/core": "18.2.3", + "@angular-devkit/core": "18.2.5", "rxjs": "7.8.1" }, "engines": { @@ -88,17 +89,17 @@ } }, "node_modules/@angular-devkit/build-angular": { - "version": "18.2.3", - "resolved": "https://registry.npmjs.org/@angular-devkit/build-angular/-/build-angular-18.2.3.tgz", - "integrity": "sha512-uUQba0SIskKORHcPayt7LpqPRKD//48EW92SgGHEArn2KklM+FSYBOA9OtrJeZ/UAcoJpdLDtvyY4+S7oFzomg==", + "version": "18.2.5", + "resolved": "https://registry.npmjs.org/@angular-devkit/build-angular/-/build-angular-18.2.5.tgz", + "integrity": "sha512-dIvb0AHoRIMM6tLuG4t6lDDslSAYP77wqytodsN317UzFOuuCPernXbO8NJs+QHxj09nPsem1T5vnvpO2E/PVQ==", "dev": true, "license": "MIT", "dependencies": { "@ampproject/remapping": "2.3.0", - "@angular-devkit/architect": "0.1802.3", - "@angular-devkit/build-webpack": "0.1802.3", - "@angular-devkit/core": "18.2.3", - "@angular/build": "18.2.3", + "@angular-devkit/architect": "0.1802.5", + "@angular-devkit/build-webpack": "0.1802.5", + "@angular-devkit/core": "18.2.5", + "@angular/build": "18.2.5", "@babel/core": "7.25.2", "@babel/generator": "7.25.0", "@babel/helper-annotate-as-pure": "7.24.7", @@ -109,7 +110,7 @@ "@babel/preset-env": "7.25.3", "@babel/runtime": "7.25.0", "@discoveryjs/json-ext": "0.6.1", - "@ngtools/webpack": "18.2.3", + "@ngtools/webpack": "18.2.5", "@vitejs/plugin-basic-ssl": "1.1.0", "ansi-colors": "4.1.3", "autoprefixer": "10.4.20", @@ -149,7 +150,7 @@ "terser": "5.31.6", "tree-kill": "1.2.2", "tslib": "2.6.3", - "vite": "5.4.0", + "vite": "5.4.6", "watchpack": "2.4.1", "webpack": "5.94.0", "webpack-dev-middleware": "7.4.2", @@ -234,13 +235,13 @@ "license": "0BSD" }, "node_modules/@angular-devkit/build-webpack": { - "version": "0.1802.3", - "resolved": "https://registry.npmjs.org/@angular-devkit/build-webpack/-/build-webpack-0.1802.3.tgz", - "integrity": "sha512-/Nixv9uAg6v/OPoZa0PB0zi+iezzBkgLrnrJnestny5B536l9WRtsw97RjeQDu+x2BClQsxNe8NL2A7EvjVD6w==", + "version": "0.1802.5", + "resolved": "https://registry.npmjs.org/@angular-devkit/build-webpack/-/build-webpack-0.1802.5.tgz", + "integrity": "sha512-6qkcrWBdkxojCVHGWcdJaz4G+7QTjFvmc+3g8xvLc9sYvJq1I059gfXhDnC0FxiA0MT4cY/26ECYWUHTD5CJLQ==", "dev": true, "license": "MIT", "dependencies": { - "@angular-devkit/architect": "0.1802.3", + "@angular-devkit/architect": "0.1802.5", "rxjs": "7.8.1" }, "engines": { @@ -254,9 +255,9 @@ } }, "node_modules/@angular-devkit/core": { - "version": "18.2.3", - "resolved": "https://registry.npmjs.org/@angular-devkit/core/-/core-18.2.3.tgz", - "integrity": "sha512-vbFs+ofNK9OWeMIcFarFjegXVklhtSdLTEFKZ9trDVr8alTJdjI9AiYa6OOUTDAyq0hqYxV26xlCisWAPe7s5w==", + "version": "18.2.5", + "resolved": "https://registry.npmjs.org/@angular-devkit/core/-/core-18.2.5.tgz", + "integrity": "sha512-r9TumPlJ8PvA2+yz4sp+bUHgtznaVKzhvXTN5qL1k4YP8LJ7iZWMR2FOP+HjukHZOTsenzmV9pszbogabqwoZQ==", "dev": true, "license": "MIT", "dependencies": { @@ -282,13 +283,13 @@ } }, "node_modules/@angular-devkit/schematics": { - "version": "18.2.3", - "resolved": "https://registry.npmjs.org/@angular-devkit/schematics/-/schematics-18.2.3.tgz", - "integrity": "sha512-N3tRAzBW2yWQhebvc1Ha18XTMSXOQTfr8HNjx7Fasx0Fg1tNyGR612MJNZw6je/PqyItKeUHOhztvFMfCQjRyg==", + "version": "18.2.5", + "resolved": "https://registry.npmjs.org/@angular-devkit/schematics/-/schematics-18.2.5.tgz", + "integrity": "sha512-NUmz2UQ1Xl4cf4j1AgkwIfsCjBzAPgfeC3IBrD29hSOBE1Y3j6auqjBkvw50v6mbSPxESND995Xy13HpK1Xflw==", "dev": true, "license": "MIT", "dependencies": { - "@angular-devkit/core": "18.2.3", + "@angular-devkit/core": "18.2.5", "jsonc-parser": "3.3.1", "magic-string": "0.30.11", "ora": "5.4.1", @@ -301,9 +302,9 @@ } }, "node_modules/@angular/animations": { - "version": "18.2.3", - "resolved": "https://registry.npmjs.org/@angular/animations/-/animations-18.2.3.tgz", - "integrity": "sha512-rIATopHr83lYR0X05buHeHssq9CGw0I0YPIQcpUTGnlqIpJcQVCf7jCFn4KGZrE9V55hFY3MD4S28njlwCToQQ==", + "version": "18.2.5", + "resolved": "https://registry.npmjs.org/@angular/animations/-/animations-18.2.5.tgz", + "integrity": "sha512-IlXtW/Nj48ZzjHUzH1TykZcSR64ScJx39T3IHnjV2z/bVATzZ36JGoadQHdqpJNKBodYJNgtJCGLCbgAvGWY2g==", "license": "MIT", "dependencies": { "tslib": "^2.3.0" @@ -312,18 +313,18 @@ "node": "^18.19.1 || ^20.11.1 || >=22.0.0" }, "peerDependencies": { - "@angular/core": "18.2.3" + "@angular/core": "18.2.5" } }, "node_modules/@angular/build": { - "version": "18.2.3", - "resolved": "https://registry.npmjs.org/@angular/build/-/build-18.2.3.tgz", - "integrity": "sha512-USrD2Zvcb1te2dnqhH7JZ5XeJDg/t7fjUHR4f93vvMrnrncwCjLoHbHpz01HCHfcIVRgsYUdAmAi1iG7vpak7w==", + "version": "18.2.5", + "resolved": "https://registry.npmjs.org/@angular/build/-/build-18.2.5.tgz", + "integrity": "sha512-XWkmjzgeUga0SJ0lYSYcTuYOWTyqcln2mNfBp7Ae/GZ+/7+APbedsIZEiZGZwveOIyOpTM5wguNSoe9khDl5Ig==", "dev": true, "license": "MIT", "dependencies": { "@ampproject/remapping": "2.3.0", - "@angular-devkit/architect": "0.1802.3", + "@angular-devkit/architect": "0.1802.5", "@babel/core": "7.25.2", "@babel/helper-annotate-as-pure": "7.24.7", "@babel/helper-split-export-declaration": "7.24.7", @@ -345,7 +346,7 @@ "rollup": "4.20.0", "sass": "1.77.6", "semver": "7.6.3", - "vite": "5.4.0", + "vite": "5.4.6", "watchpack": "2.4.1" }, "engines": { @@ -385,9 +386,9 @@ } }, "node_modules/@angular/cdk": { - "version": "18.2.3", - "resolved": "https://registry.npmjs.org/@angular/cdk/-/cdk-18.2.3.tgz", - "integrity": "sha512-lUcpYTxPZuntJ1FK7V2ugapCGMIhT6TUDjIGgXfS9AxGSSKgwr8HNs6Ze9pcjYC44UhP40sYAZuiaFwmE60A2A==", + "version": "18.2.5", + "resolved": "https://registry.npmjs.org/@angular/cdk/-/cdk-18.2.5.tgz", + "integrity": "sha512-HLg5cfrIrgNIJJ+0v3kLieHeLPJLFNOBO359holXOrKUPRG+XQ3CT8EzSvREFm1XkaSEsDC0+dnG0ouNhOPFpQ==", "license": "MIT", "dependencies": { "tslib": "^2.3.0" @@ -402,18 +403,18 @@ } }, "node_modules/@angular/cli": { - "version": "18.2.3", - "resolved": "https://registry.npmjs.org/@angular/cli/-/cli-18.2.3.tgz", - "integrity": "sha512-40258vuliH6+p8QSByZe5EcIXSj0iR3PNF6yuusClR/ByToHOnmuPw7WC+AYr0ooozmqlim/EjQe4/037OUB3w==", + "version": "18.2.5", + "resolved": "https://registry.npmjs.org/@angular/cli/-/cli-18.2.5.tgz", + "integrity": "sha512-97uNs0HsOdnMaTlNJKFjIBUXw0wz43uYvSSKmIpBt7eq1LaPLju1G/qpDIHx2YwhMClPrXXrW2H/xdvqZiIw+w==", "dev": true, "license": "MIT", "dependencies": { - "@angular-devkit/architect": "0.1802.3", - "@angular-devkit/core": "18.2.3", - "@angular-devkit/schematics": "18.2.3", + "@angular-devkit/architect": "0.1802.5", + "@angular-devkit/core": "18.2.5", + "@angular-devkit/schematics": "18.2.5", "@inquirer/prompts": "5.3.8", "@listr2/prompt-adapter-inquirer": "2.0.15", - "@schematics/angular": "18.2.3", + "@schematics/angular": "18.2.5", "@yarnpkg/lockfile": "1.1.0", "ini": "4.1.3", "jsonc-parser": "3.3.1", @@ -436,9 +437,9 @@ } }, "node_modules/@angular/common": { - "version": "18.2.3", - "resolved": "https://registry.npmjs.org/@angular/common/-/common-18.2.3.tgz", - "integrity": "sha512-NFL4yXXImSCH7i1xnHykUjHa9vl9827fGiwSV2mnf7LjSUsyDzFD8/54dNuYN9OY8AUD+PnK0YdNro6cczVyIA==", + "version": "18.2.5", + "resolved": "https://registry.npmjs.org/@angular/common/-/common-18.2.5.tgz", + "integrity": "sha512-m+KJrtbFXTE36jP/po6UAMeUR/enQxRHpVGLCRcIcE7VWVH1ZcOvoW1yqh2A6k+KxWXeajlq/Z04nnMhcoxMRw==", "license": "MIT", "dependencies": { "tslib": "^2.3.0" @@ -447,14 +448,14 @@ "node": "^18.19.1 || ^20.11.1 || >=22.0.0" }, "peerDependencies": { - "@angular/core": "18.2.3", + "@angular/core": "18.2.5", "rxjs": "^6.5.3 || ^7.4.0" } }, "node_modules/@angular/compiler": { - "version": "18.2.3", - "resolved": "https://registry.npmjs.org/@angular/compiler/-/compiler-18.2.3.tgz", - "integrity": "sha512-Il3ljs0j1GaYoqYFdShjUP1ryck5xTOaA8uQuRgqwU0FOwEDfugSAM3Qf7nJx/sgxTM0Lm/Nrdv2u6i1gZWeuQ==", + "version": "18.2.5", + "resolved": "https://registry.npmjs.org/@angular/compiler/-/compiler-18.2.5.tgz", + "integrity": "sha512-vcqe9x4dGGAnMfPhEpcZyiSVgAiqJeK80LqP1vWoAmBR+HeOqAilSv6SflcLAtuTzwgzMMAvD2T+SMCgUvaqww==", "license": "MIT", "dependencies": { "tslib": "^2.3.0" @@ -463,7 +464,7 @@ "node": "^18.19.1 || ^20.11.1 || >=22.0.0" }, "peerDependencies": { - "@angular/core": "18.2.3" + "@angular/core": "18.2.5" }, "peerDependenciesMeta": { "@angular/core": { @@ -472,9 +473,9 @@ } }, "node_modules/@angular/compiler-cli": { - "version": "18.2.3", - "resolved": "https://registry.npmjs.org/@angular/compiler-cli/-/compiler-cli-18.2.3.tgz", - "integrity": "sha512-BcmqYKnkcJTkGjuPztClZNQve7tdI290J5F3iZBx6c7/vaw8EU8EGZtpWYZpgiVn5S6jhcKyc1dLF9ggO9vftg==", + "version": "18.2.5", + "resolved": "https://registry.npmjs.org/@angular/compiler-cli/-/compiler-cli-18.2.5.tgz", + "integrity": "sha512-CCCtZobUTUfId/RTYtuDCw5R1oK0w65hdAUMRP1MdGmd8bb8DKJA86u1QCWwozL3rbXlIIX4ognQ6urQ43k/Gw==", "dev": true, "license": "MIT", "dependencies": { @@ -496,14 +497,14 @@ "node": "^18.19.1 || ^20.11.1 || >=22.0.0" }, "peerDependencies": { - "@angular/compiler": "18.2.3", + "@angular/compiler": "18.2.5", "typescript": ">=5.4 <5.6" } }, "node_modules/@angular/core": { - "version": "18.2.3", - "resolved": "https://registry.npmjs.org/@angular/core/-/core-18.2.3.tgz", - "integrity": "sha512-VGhMJxj7d0rYpqVfQrcGRB7EE/BCziotft/I/YPl6bOMPSAvMukG7DXQuJdYpNrr62ks78mlzHlZX/cdmB9Prw==", + "version": "18.2.5", + "resolved": "https://registry.npmjs.org/@angular/core/-/core-18.2.5.tgz", + "integrity": "sha512-5BLVc5gXxzanQkADNS9WPsor3vNF5nQcyIHBi5VScErwM5vVZ7ATH1iZwaOg1ykDEVTFVhKDwD0X1aaqGDbhmQ==", "license": "MIT", "dependencies": { "tslib": "^2.3.0" @@ -517,9 +518,9 @@ } }, "node_modules/@angular/forms": { - "version": "18.2.3", - "resolved": "https://registry.npmjs.org/@angular/forms/-/forms-18.2.3.tgz", - "integrity": "sha512-+OBaAH0e8hue9eyLnbgpxg1/X9fps6bwXECfJ0nL5BDPU5itZ428YJbEnj5bTx0hEbqfTRiV4LgexdI+D9eOpw==", + "version": "18.2.5", + "resolved": "https://registry.npmjs.org/@angular/forms/-/forms-18.2.5.tgz", + "integrity": "sha512-ohKeH+EZCCIyGSiFYlraWLzssGAZc13P92cuYpXB62322PkcA5u0IT72mML9JWGKRqF2zteVsw4koWHVxXM5mA==", "license": "MIT", "dependencies": { "tslib": "^2.3.0" @@ -528,26 +529,44 @@ "node": "^18.19.1 || ^20.11.1 || >=22.0.0" }, "peerDependencies": { - "@angular/common": "18.2.3", - "@angular/core": "18.2.3", - "@angular/platform-browser": "18.2.3", + "@angular/common": "18.2.5", + "@angular/core": "18.2.5", + "@angular/platform-browser": "18.2.5", "rxjs": "^6.5.3 || ^7.4.0" } }, "node_modules/@angular/language-service": { - "version": "18.2.3", - "resolved": "https://registry.npmjs.org/@angular/language-service/-/language-service-18.2.3.tgz", - "integrity": "sha512-bTZ1O7s0uJqKdd9ImCleRS9Wg6yVy2ZXchnS5ap2gYJx51MJgwOM/fL6is0OsovtZG/UJaKK5FeEqUUxNqZJVA==", + "version": "18.2.5", + "resolved": "https://registry.npmjs.org/@angular/language-service/-/language-service-18.2.5.tgz", + "integrity": "sha512-JE6ck4UWXayiG8ptJJtkrKCjy+5Ftktgsoj4QGdQzMhbpia7Wge5XDj28o+bwEFndRnP6ihRtud63IvOz9aKFQ==", "dev": true, "license": "MIT", "engines": { "node": "^18.19.1 || ^20.11.1 || >=22.0.0" } }, + "node_modules/@angular/material": { + "version": "18.2.1", + "resolved": "https://registry.npmjs.org/@angular/material/-/material-18.2.1.tgz", + "integrity": "sha512-DBSJGqLttT9vYpLGWTuuRoOKd1mNelS0jnNo7jNZyMpjcGfuhNzmPtYiBkXfNsAl7YoXoUmX8+4uh1JZspQGqA==", + "license": "MIT", + "dependencies": { + "tslib": "^2.3.0" + }, + "peerDependencies": { + "@angular/animations": "^18.0.0 || ^19.0.0", + "@angular/cdk": "18.2.1", + "@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.2.3", - "resolved": "https://registry.npmjs.org/@angular/platform-browser/-/platform-browser-18.2.3.tgz", - "integrity": "sha512-M2ob4zN7tAcL2mx7U6KnZNqNFPFl9MlPBE0FrjQjIzAjU0wSYPIJXmaPu9aMUp9niyo+He5iX98I+URi2Yc99g==", + "version": "18.2.5", + "resolved": "https://registry.npmjs.org/@angular/platform-browser/-/platform-browser-18.2.5.tgz", + "integrity": "sha512-PoX9idwnOpTJBlujzZ2nFGOsmCnZzOH7uNSWIR7trdoq0b1AFXfrxlCQ36qWamk7bbhJI4H28L8YTmKew/nXDA==", "license": "MIT", "dependencies": { "tslib": "^2.3.0" @@ -556,9 +575,9 @@ "node": "^18.19.1 || ^20.11.1 || >=22.0.0" }, "peerDependencies": { - "@angular/animations": "18.2.3", - "@angular/common": "18.2.3", - "@angular/core": "18.2.3" + "@angular/animations": "18.2.5", + "@angular/common": "18.2.5", + "@angular/core": "18.2.5" }, "peerDependenciesMeta": { "@angular/animations": { @@ -567,9 +586,9 @@ } }, "node_modules/@angular/platform-browser-dynamic": { - "version": "18.2.3", - "resolved": "https://registry.npmjs.org/@angular/platform-browser-dynamic/-/platform-browser-dynamic-18.2.3.tgz", - "integrity": "sha512-nWi9ZxN4KpbJkttIckFO1PCoW0+gb/18xFO+JWyLBAtcbsudj/Mv0P/fdOaSfQdLkPhZfORr3ZcfiTkhmuGyEg==", + "version": "18.2.5", + "resolved": "https://registry.npmjs.org/@angular/platform-browser-dynamic/-/platform-browser-dynamic-18.2.5.tgz", + "integrity": "sha512-5u0IuAt1r5e2u2vSKhp3phnaf6hH89B/q7GErfPse1sdDfNI6wHVppxai28PAfAj9gwooJun6MjFWhJFLzS44A==", "license": "MIT", "dependencies": { "tslib": "^2.3.0" @@ -578,16 +597,16 @@ "node": "^18.19.1 || ^20.11.1 || >=22.0.0" }, "peerDependencies": { - "@angular/common": "18.2.3", - "@angular/compiler": "18.2.3", - "@angular/core": "18.2.3", - "@angular/platform-browser": "18.2.3" + "@angular/common": "18.2.5", + "@angular/compiler": "18.2.5", + "@angular/core": "18.2.5", + "@angular/platform-browser": "18.2.5" } }, "node_modules/@angular/router": { - "version": "18.2.3", - "resolved": "https://registry.npmjs.org/@angular/router/-/router-18.2.3.tgz", - "integrity": "sha512-fvD9eSDIiIbeYoUokoWkXzu7/ZaxlzKPUHFqX1JuKuH5ciQDeT/d7lp4mj31Bxammhohzi3+z12THJYsCkj/iQ==", + "version": "18.2.5", + "resolved": "https://registry.npmjs.org/@angular/router/-/router-18.2.5.tgz", + "integrity": "sha512-OjZV1PTiSwT0ytmR0ykveLYzs4uQWf0EuIclZmWqM/bb8Q4P+gJl7/sya05nGnZsj6nHGOL0e/LhSZ3N+5p6qg==", "license": "MIT", "dependencies": { "tslib": "^2.3.0" @@ -596,9 +615,9 @@ "node": "^18.19.1 || ^20.11.1 || >=22.0.0" }, "peerDependencies": { - "@angular/common": "18.2.3", - "@angular/core": "18.2.3", - "@angular/platform-browser": "18.2.3", + "@angular/common": "18.2.5", + "@angular/core": "18.2.5", + "@angular/platform-browser": "18.2.5", "rxjs": "^6.5.3 || ^7.4.0" } }, @@ -3039,19 +3058,18 @@ } }, "node_modules/@inquirer/core": { - "version": "9.1.0", - "resolved": "https://registry.npmjs.org/@inquirer/core/-/core-9.1.0.tgz", - "integrity": "sha512-RZVfH//2ytTjmaBIzeKT1zefcQZzuruwkpTwwbe/i2jTl4o9M+iML5ChULzz6iw1Ok8iUBBsRCjY2IEbD8Ft4w==", + "version": "9.2.1", + "resolved": "https://registry.npmjs.org/@inquirer/core/-/core-9.2.1.tgz", + "integrity": "sha512-F2VBt7W/mwqEU4bL0RnHNZmC/OxzNx9cOYxHqnXX3MP6ruYvZUZAW9imgN9+h/uBT/oP8Gh888J2OZSbjSeWcg==", "dev": true, "license": "MIT", "dependencies": { - "@inquirer/figures": "^1.0.5", - "@inquirer/type": "^1.5.3", + "@inquirer/figures": "^1.0.6", + "@inquirer/type": "^2.0.0", "@types/mute-stream": "^0.0.4", - "@types/node": "^22.5.2", + "@types/node": "^22.5.5", "@types/wrap-ansi": "^3.0.0", "ansi-escapes": "^4.3.2", - "cli-spinners": "^2.9.2", "cli-width": "^4.1.0", "mute-stream": "^1.0.0", "signal-exit": "^4.1.0", @@ -3063,10 +3081,23 @@ "node": ">=18" } }, + "node_modules/@inquirer/core/node_modules/@inquirer/type": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/@inquirer/type/-/type-2.0.0.tgz", + "integrity": "sha512-XvJRx+2KR3YXyYtPUUy+qd9i7p+GO9Ko6VIIpWlBrpWwXDv8WLFeHTxz35CfQFUiBMLXlGHhGzys7lqit9gWag==", + "dev": true, + "license": "MIT", + "dependencies": { + "mute-stream": "^1.0.0" + }, + "engines": { + "node": ">=18" + } + }, "node_modules/@inquirer/core/node_modules/@types/node": { - "version": "22.5.4", - "resolved": "https://registry.npmjs.org/@types/node/-/node-22.5.4.tgz", - "integrity": "sha512-FDuKUJQm/ju9fT/SeX/6+gBzoPzlVCzfzmGkwKvRHQVxi4BntVbyIwf6a4Xn62mrvndLiml6z/UBXIdEVjQLXg==", + "version": "22.6.1", + "resolved": "https://registry.npmjs.org/@types/node/-/node-22.6.1.tgz", + "integrity": "sha512-V48tCfcKb/e6cVUigLAaJDAILdMP0fUW6BidkPK4GpGjXcfbnoHasCZDwz3N3yVt5we2RHm4XTQCpv0KJz9zqw==", "dev": true, "license": "MIT", "dependencies": { @@ -3104,9 +3135,9 @@ } }, "node_modules/@inquirer/figures": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/@inquirer/figures/-/figures-1.0.5.tgz", - "integrity": "sha512-79hP/VWdZ2UVc9bFGJnoQ/lQMpL74mGgzSYX1xUqCVk7/v73vJCMw1VuyWN1jGkZ9B3z7THAbySqGbCNefcjfA==", + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/@inquirer/figures/-/figures-1.0.6.tgz", + "integrity": "sha512-yfZzps3Cso2UbM7WlxKwZQh2Hs6plrbjs1QnzQDZhK2DgyCo6D8AaHps9olkNcUFlcYERMqU3uJSp1gmy3s/qQ==", "dev": true, "license": "MIT", "engines": { @@ -3227,9 +3258,9 @@ } }, "node_modules/@inquirer/type": { - "version": "1.5.3", - "resolved": "https://registry.npmjs.org/@inquirer/type/-/type-1.5.3.tgz", - "integrity": "sha512-xUQ14WQGR/HK5ei+2CvgcwoH9fQ4PgPGmVFSN0pc1+fVyDL3MREhyAY7nxEErSu6CkllBM3D7e3e+kOvtu+eIg==", + "version": "1.5.5", + "resolved": "https://registry.npmjs.org/@inquirer/type/-/type-1.5.5.tgz", + "integrity": "sha512-MzICLu4yS7V8AA61sANROZ9vT1H3ooca5dSmI1FjZkzq7o/koMsRfQSzRtFo+F3Ao4Sf1C0bpLKejpKB/+j6MA==", "dev": true, "license": "MIT", "dependencies": { @@ -3665,9 +3696,9 @@ ] }, "node_modules/@ngtools/webpack": { - "version": "18.2.3", - "resolved": "https://registry.npmjs.org/@ngtools/webpack/-/webpack-18.2.3.tgz", - "integrity": "sha512-DDuBHcu23qckt43SexBJaPEIeMc/HKaFOidILZM9D4gU4C9VroMActdR218dvQ802QfL0S46t5Ykz8ENprIfjA==", + "version": "18.2.5", + "resolved": "https://registry.npmjs.org/@ngtools/webpack/-/webpack-18.2.5.tgz", + "integrity": "sha512-L0n4eHObeqEOYRfSP+e4SeF/dmwxOIFy9xYvYCOUwOLrW4b3+a1+kkT30pqyfL72LFtpf0cmUwaWEFIcWl5PCg==", "dev": true, "license": "MIT", "engines": { @@ -3838,9 +3869,9 @@ } }, "node_modules/@npmcli/package-json": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/@npmcli/package-json/-/package-json-5.2.0.tgz", - "integrity": "sha512-qe/kiqqkW0AGtvBjL8TJKZk/eBBSpnJkUWvHdQ9jM2lKHXRYYJuyNpJPlJw3c8QjC2ow6NZYiLExhUaeJelbxQ==", + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/@npmcli/package-json/-/package-json-5.2.1.tgz", + "integrity": "sha512-f7zYC6kQautXHvNbLEWgD/uGu1+xCn9izgqBfgItWSx22U0ZDekxN08A1vM8cTxj/cRVe0Q94Ode+tdoYmIOOQ==", "dev": true, "license": "ISC", "dependencies": { @@ -4232,14 +4263,14 @@ ] }, "node_modules/@schematics/angular": { - "version": "18.2.3", - "resolved": "https://registry.npmjs.org/@schematics/angular/-/angular-18.2.3.tgz", - "integrity": "sha512-whSON70z9HYb4WboVXmPFE/RLKJJQLWNzNcUyi8OSDZkQbJnYgPp0///n738m26Y/XeJDv11q1gESy+Zl2AdUw==", + "version": "18.2.5", + "resolved": "https://registry.npmjs.org/@schematics/angular/-/angular-18.2.5.tgz", + "integrity": "sha512-tBXhk9OGT4U6VsBNbuCNl2ITDOF3NYdGrEieIHU+lHSkpJNGZUIGxCgXCETXkmXDq1pe4wFZSKelWjeqYDfX0g==", "dev": true, "license": "MIT", "dependencies": { - "@angular-devkit/core": "18.2.3", - "@angular-devkit/schematics": "18.2.3", + "@angular-devkit/core": "18.2.5", + "@angular-devkit/schematics": "18.2.5", "jsonc-parser": "3.3.1" }, "engines": { @@ -4573,9 +4604,9 @@ "license": "MIT" }, "node_modules/@types/qs": { - "version": "6.9.15", - "resolved": "https://registry.npmjs.org/@types/qs/-/qs-6.9.15.tgz", - "integrity": "sha512-uXHQKES6DQKKCLh441Xv/dwxOq1TVS3JPUMlEqoEglvlhR6Mxnlew/Xq/LRVHpLyk7iK3zODe1qYHIMltO7XGg==", + "version": "6.9.16", + "resolved": "https://registry.npmjs.org/@types/qs/-/qs-6.9.16.tgz", + "integrity": "sha512-7i+zxXdPD0T4cKDuxCUXJ4wHcsJLwENa6Z3dCu8cfCK743OGy5Nu1RmAGqDPsoTDINVEcdXKRvR/zre+P2Ku1A==", "dev": true, "license": "MIT" }, @@ -5944,9 +5975,9 @@ } }, "node_modules/caniuse-lite": { - "version": "1.0.30001660", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001660.tgz", - "integrity": "sha512-GacvNTTuATm26qC74pt+ad1fW15mlQ/zuTzzY1ZoIzECTP8HURDfF43kNxPgf7H1jmelCBQTTbBNxdSXOA7Bqg==", + "version": "1.0.30001663", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001663.tgz", + "integrity": "sha512-o9C3X27GLKbLeTYZ6HBOLU1tsAcBZsLis28wrVzddShCS16RujjHp9GDHKZqrB3meE0YjhawvMFsGb/igqiPzA==", "dev": true, "funding": [ { @@ -7665,9 +7696,9 @@ "license": "MIT" }, "node_modules/electron-to-chromium": { - "version": "1.5.19", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.19.tgz", - "integrity": "sha512-kpLJJi3zxTR1U828P+LIUDZ5ohixyo68/IcYOHLqnbTPr/wdgn4i1ECvmALN9E16JPA6cvCG5UG79gVwVdEK5w==", + "version": "1.5.27", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.27.tgz", + "integrity": "sha512-o37j1vZqCoEgBuWWXLHQgTN/KDKe7zwpiY5CPeq2RvUqOyJw9xnrULzZAEVQ5p4h+zjMk7hgtOoPdnLxr7m/jw==", "dev": true, "license": "ISC" }, @@ -7734,9 +7765,9 @@ } }, "node_modules/engine.io": { - "version": "6.5.5", - "resolved": "https://registry.npmjs.org/engine.io/-/engine.io-6.5.5.tgz", - "integrity": "sha512-C5Pn8Wk+1vKBoHghJODM63yk8MvrO9EWZUfkAt5HAqIgPE4/8FF0PEGHXtEd40l223+cE5ABWuPzm38PHFXfMA==", + "version": "6.6.1", + "resolved": "https://registry.npmjs.org/engine.io/-/engine.io-6.6.1.tgz", + "integrity": "sha512-NEpDCw9hrvBW+hVEOK4T7v0jFJ++KgtPl4jKFwsZVfG1XhS0dCrSb3VMb9gPAd7VAdW52VT1EnaNiU2vM8C0og==", "dev": true, "license": "MIT", "dependencies": { @@ -7766,9 +7797,9 @@ } }, "node_modules/engine.io/node_modules/@types/node": { - "version": "22.5.4", - "resolved": "https://registry.npmjs.org/@types/node/-/node-22.5.4.tgz", - "integrity": "sha512-FDuKUJQm/ju9fT/SeX/6+gBzoPzlVCzfzmGkwKvRHQVxi4BntVbyIwf6a4Xn62mrvndLiml6z/UBXIdEVjQLXg==", + "version": "22.6.1", + "resolved": "https://registry.npmjs.org/@types/node/-/node-22.6.1.tgz", + "integrity": "sha512-V48tCfcKb/e6cVUigLAaJDAILdMP0fUW6BidkPK4GpGjXcfbnoHasCZDwz3N3yVt5we2RHm4XTQCpv0KJz9zqw==", "dev": true, "license": "MIT", "dependencies": { @@ -8158,9 +8189,9 @@ "license": "Apache-2.0" }, "node_modules/express": { - "version": "4.20.0", - "resolved": "https://registry.npmjs.org/express/-/express-4.20.0.tgz", - "integrity": "sha512-pLdae7I6QqShF5PnNTCVn4hI91Dx0Grkn2+IAsMTgMIKuQVte2dN9PeGSSAME2FR8anOhVA62QDIUaWVfEXVLw==", + "version": "4.21.0", + "resolved": "https://registry.npmjs.org/express/-/express-4.21.0.tgz", + "integrity": "sha512-VqcNGcj/Id5ZT1LZ/cfihi3ttTn+NJmkli2eZADigjq29qTlWi/hAQ43t/VLPq8+UX06FCEx3ByOYet6ZFblng==", "dev": true, "license": "MIT", "dependencies": { @@ -8176,7 +8207,7 @@ "encodeurl": "~2.0.0", "escape-html": "~1.0.3", "etag": "~1.8.1", - "finalhandler": "1.2.0", + "finalhandler": "1.3.1", "fresh": "0.5.2", "http-errors": "2.0.0", "merge-descriptors": "1.0.3", @@ -8185,11 +8216,11 @@ "parseurl": "~1.3.3", "path-to-regexp": "0.1.10", "proxy-addr": "~2.0.7", - "qs": "6.11.0", + "qs": "6.13.0", "range-parser": "~1.2.1", "safe-buffer": "5.2.1", "send": "0.19.0", - "serve-static": "1.16.0", + "serve-static": "1.16.2", "setprototypeof": "1.2.0", "statuses": "2.0.1", "type-is": "~1.6.18", @@ -8231,14 +8262,14 @@ } }, "node_modules/express/node_modules/finalhandler": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.2.0.tgz", - "integrity": "sha512-5uXcUVftlQMFnWC9qu/svkWv3GTd2PfUhK/3PLkYNAe7FbqJMt3515HaxE6eRL74GdsriiwujiawdaB1BpEISg==", + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.3.1.tgz", + "integrity": "sha512-6BN9trH7bp3qvnrRyzsBz+g3lZxTNZTbVO2EV1CS0WIcDbawYVdYvGflME/9QP0h0pYlCDBCTjYa9nZzMDpyxQ==", "dev": true, "license": "MIT", "dependencies": { "debug": "2.6.9", - "encodeurl": "~1.0.2", + "encodeurl": "~2.0.0", "escape-html": "~1.0.3", "on-finished": "2.4.1", "parseurl": "~1.3.3", @@ -8249,16 +8280,6 @@ "node": ">= 0.8" } }, - "node_modules/express/node_modules/finalhandler/node_modules/encodeurl": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz", - "integrity": "sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 0.8" - } - }, "node_modules/express/node_modules/ms": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", @@ -8266,22 +8287,6 @@ "dev": true, "license": "MIT" }, - "node_modules/express/node_modules/qs": { - "version": "6.11.0", - "resolved": "https://registry.npmjs.org/qs/-/qs-6.11.0.tgz", - "integrity": "sha512-MvjoMCJwEarSbUYk5O+nmoSzSutSsTwF85zcHPQ9OrlFoZOYIjaqBAJIqIXjptyD5vThxGq52Xu/MaJzRkIk4Q==", - "dev": true, - "license": "BSD-3-Clause", - "dependencies": { - "side-channel": "^1.0.4" - }, - "engines": { - "node": ">=0.6" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, "node_modules/express/node_modules/safe-buffer": { "version": "5.2.1", "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", @@ -11338,9 +11343,9 @@ } }, "node_modules/memfs": { - "version": "4.11.1", - "resolved": "https://registry.npmjs.org/memfs/-/memfs-4.11.1.tgz", - "integrity": "sha512-LZcMTBAgqUUKNXZagcZxvXXfgF1bHX7Y7nQ0QyEiNbRJgE29GhgPd8Yna1VQcLlPiHt/5RFJMWYN9Uv/VPNvjQ==", + "version": "4.12.0", + "resolved": "https://registry.npmjs.org/memfs/-/memfs-4.12.0.tgz", + "integrity": "sha512-74wDsex5tQDSClVkeK1vtxqYCAgCoXxx+K4NSHzgU/muYVYByFqa+0RnrPO9NM6naWm1+G9JmZ0p6QHhXmeYfA==", "dev": true, "license": "Apache-2.0", "dependencies": { @@ -13684,9 +13689,9 @@ "license": "MIT" }, "node_modules/pump": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.1.tgz", - "integrity": "sha512-2ynnAmUu45oUSq51AQbeugLkMSKaz8FqVpZ6ykTqzOVkzXe8u/ezkGsYrFJqKZx+D9cVxoDrSbR7CeAwxFa5cQ==", + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.2.tgz", + "integrity": "sha512-tUPXtzlGM8FE3P0ZL6DVs/3P58k9nk8/jZeQCurTJylQA8qFYzHFfhBJkuqyE0FifOsQ0uKWekiZ5g8wtr28cw==", "dev": true, "license": "MIT", "dependencies": { @@ -13921,9 +13926,9 @@ "license": "MIT" }, "node_modules/regenerate-unicode-properties": { - "version": "10.1.1", - "resolved": "https://registry.npmjs.org/regenerate-unicode-properties/-/regenerate-unicode-properties-10.1.1.tgz", - "integrity": "sha512-X007RyZLsCJVVrjgEFVpLUTZwyOZk3oiL75ZcuYjlIWd6rNJtOjkBwQc5AsRrpbKVkxN6sklw/k/9m2jJYOf8Q==", + "version": "10.2.0", + "resolved": "https://registry.npmjs.org/regenerate-unicode-properties/-/regenerate-unicode-properties-10.2.0.tgz", + "integrity": "sha512-DqHn3DwbmmPVzeKj9woBadqmXxLvQoQIwu7nopMc72ztvxVmVk2SBhSnx67zuye5TP+lJsb/TBQsjLKhnDf3MA==", "dev": true, "license": "MIT", "dependencies": { @@ -14698,67 +14703,25 @@ "license": "ISC" }, "node_modules/serve-static": { - "version": "1.16.0", - "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.16.0.tgz", - "integrity": "sha512-pDLK8zwl2eKaYrs8mrPZBJua4hMplRWJ1tIFksVC3FtBEBnl8dxgeHtsaMS8DhS9i4fLObaon6ABoc4/hQGdPA==", + "version": "1.16.2", + "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.16.2.tgz", + "integrity": "sha512-VqpjJZKadQB/PEbEwvFdO43Ax5dFBZ2UECszz8bQ7pi7wt//PWe1P6MN7eCnjsatYtBT6EuiClbjSWP2WrIoTw==", "dev": true, "license": "MIT", "dependencies": { - "encodeurl": "~1.0.2", + "encodeurl": "~2.0.0", "escape-html": "~1.0.3", "parseurl": "~1.3.3", - "send": "0.18.0" + "send": "0.19.0" }, "engines": { "node": ">= 0.8.0" } }, - "node_modules/serve-static/node_modules/debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "dev": true, - "license": "MIT", - "dependencies": { - "ms": "2.0.0" - } - }, - "node_modules/serve-static/node_modules/debug/node_modules/ms": { + "node_modules/serve-static/node_modules/encodeurl": { "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", - "dev": true, - "license": "MIT" - }, - "node_modules/serve-static/node_modules/send": { - "version": "0.18.0", - "resolved": "https://registry.npmjs.org/send/-/send-0.18.0.tgz", - "integrity": "sha512-qqWzuOjSFOuqPjFe4NOsMLafToQQwBSOEpS+FwEt3A2V3vKubTquT3vmLTQpFgMXp8AlFWFuP1qKaJZOtPpVXg==", - "dev": true, - "license": "MIT", - "dependencies": { - "debug": "2.6.9", - "depd": "2.0.0", - "destroy": "1.2.0", - "encodeurl": "~1.0.2", - "escape-html": "~1.0.3", - "etag": "~1.8.1", - "fresh": "0.5.2", - "http-errors": "2.0.0", - "mime": "1.6.0", - "ms": "2.1.3", - "on-finished": "2.4.1", - "range-parser": "~1.2.1", - "statuses": "2.0.1" - }, - "engines": { - "node": ">= 0.8.0" - } - }, - "node_modules/serve-static/node_modules/statuses": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.1.tgz", - "integrity": "sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==", + "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-2.0.0.tgz", + "integrity": "sha512-Q0n9HRi4m6JuGIV1eFlmvJB7ZEVxu93IrMyiMsGC0lrMJMWzRgx6WGquyfQgZVb31vhGgXnfmPNNXmxnOkRBrg==", "dev": true, "license": "MIT", "engines": { @@ -14955,9 +14918,9 @@ } }, "node_modules/socket.io": { - "version": "4.7.5", - "resolved": "https://registry.npmjs.org/socket.io/-/socket.io-4.7.5.tgz", - "integrity": "sha512-DmeAkF6cwM9jSfmp6Dr/5/mfMwb5Z5qRrSXLpo3Fq5SqyU8CMF15jIN4ZhfSwu35ksM1qmHZDQ/DK5XTccSTvA==", + "version": "4.8.0", + "resolved": "https://registry.npmjs.org/socket.io/-/socket.io-4.8.0.tgz", + "integrity": "sha512-8U6BEgGjQOfGz3HHTYaC/L1GaxDCJ/KM0XTkJly0EhZ5U/du9uNEZy4ZgYzEzIqlx2CMm25CrCqr1ck899eLNA==", "dev": true, "license": "MIT", "dependencies": { @@ -14965,7 +14928,7 @@ "base64id": "~2.0.0", "cors": "~2.8.5", "debug": "~4.3.2", - "engine.io": "~6.5.2", + "engine.io": "~6.6.0", "socket.io-adapter": "~2.5.2", "socket.io-parser": "~4.2.4" }, @@ -15976,9 +15939,9 @@ } }, "node_modules/ua-parser-js": { - "version": "0.7.38", - "resolved": "https://registry.npmjs.org/ua-parser-js/-/ua-parser-js-0.7.38.tgz", - "integrity": "sha512-fYmIy7fKTSFAhG3fuPlubeGaMoAd6r0rSnfEsO5nEY55i26KSLt9EH7PLQiiqPUhNqYIJvSkTy1oArIcXAbPbA==", + "version": "0.7.39", + "resolved": "https://registry.npmjs.org/ua-parser-js/-/ua-parser-js-0.7.39.tgz", + "integrity": "sha512-IZ6acm6RhQHNibSt7+c09hhvsKy9WUr4DVbeq9U8o71qxyYtJpQeDxQnMrVqnIFMLcQjHO0I9wgfO2vIahht4w==", "dev": true, "funding": [ { @@ -15995,6 +15958,9 @@ } ], "license": "MIT", + "bin": { + "ua-parser-js": "script/cli.js" + }, "engines": { "node": "*" } @@ -16007,9 +15973,9 @@ "license": "MIT" }, "node_modules/unicode-canonical-property-names-ecmascript": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/unicode-canonical-property-names-ecmascript/-/unicode-canonical-property-names-ecmascript-2.0.0.tgz", - "integrity": "sha512-yY5PpDlfVIU5+y/BSCxAJRBIS1Zc2dDG3Ujq+sR0U+JjUevW2JhocOF+soROYDSaAezOzOKuyyixhD6mBknSmQ==", + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/unicode-canonical-property-names-ecmascript/-/unicode-canonical-property-names-ecmascript-2.0.1.tgz", + "integrity": "sha512-dA8WbNeb2a6oQzAQ55YlT5vQAWGV9WXOsi3SskE3bcCdM0P4SDd+24zS/OCacdRq5BkdsRj9q3Pg6YyQoxIGqg==", "dev": true, "license": "MIT", "engines": { @@ -16031,9 +15997,9 @@ } }, "node_modules/unicode-match-property-value-ecmascript": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/unicode-match-property-value-ecmascript/-/unicode-match-property-value-ecmascript-2.1.0.tgz", - "integrity": "sha512-qxkjQt6qjg/mYscYMC0XKRn3Rh0wFPlfxB0xkt9CfyTvpX1Ra0+rAmdX2QyAobptSEvuy4RtpPRui6XkV+8wjA==", + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/unicode-match-property-value-ecmascript/-/unicode-match-property-value-ecmascript-2.2.0.tgz", + "integrity": "sha512-4IehN3V/+kkr5YeSSDDQG8QLqO26XpL2XP3GQtqwlT/QYSECAwFztxVHjlbh0+gjJ3XmNLS0zDsbgs9jWKExLg==", "dev": true, "license": "MIT", "engines": { @@ -16254,15 +16220,15 @@ } }, "node_modules/vite": { - "version": "5.4.0", - "resolved": "https://registry.npmjs.org/vite/-/vite-5.4.0.tgz", - "integrity": "sha512-5xokfMX0PIiwCMCMb9ZJcMyh5wbBun0zUzKib+L65vAZ8GY9ePZMXxFrHbr/Kyll2+LSCY7xtERPpxkBDKngwg==", + "version": "5.4.6", + "resolved": "https://registry.npmjs.org/vite/-/vite-5.4.6.tgz", + "integrity": "sha512-IeL5f8OO5nylsgzd9tq4qD2QqI0k2CQLGrWD0rCN0EQJZpBK5vJAx0I+GDkMOXxQX/OfFHMuLIx6ddAxGX/k+Q==", "dev": true, "license": "MIT", "dependencies": { "esbuild": "^0.21.3", - "postcss": "^8.4.40", - "rollup": "^4.13.0" + "postcss": "^8.4.43", + "rollup": "^4.20.0" }, "bin": { "vite": "bin/vite.js" @@ -16743,6 +16709,35 @@ "@esbuild/win32-x64": "0.21.5" } }, + "node_modules/vite/node_modules/postcss": { + "version": "8.4.47", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.47.tgz", + "integrity": "sha512-56rxCq7G/XfB4EkXq9Egn5GCqugWvDFjafDOThIdMBsI15iqPqR5r15TfSr1YPYeEI19YeaXMCbY6u88Y76GLQ==", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/postcss" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "license": "MIT", + "dependencies": { + "nanoid": "^3.3.7", + "picocolors": "^1.1.0", + "source-map-js": "^1.2.1" + }, + "engines": { + "node": "^10 || ^12 || >=14" + } + }, "node_modules/void-elements": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/void-elements/-/void-elements-2.0.1.tgz", diff --git a/web/package.json b/web/package.json index 93a7433d..b117a3d9 100644 --- a/web/package.json +++ b/web/package.json @@ -6,8 +6,8 @@ "start": "concurrently \"npm run start-api\" \"npm run start-ui\"", "start-ui": "ng serve", "start-api": "cd api && npm run start-dev", - "build": "ng build --configuration=production", - "build-dev": "ng build", + "build": "export NODE_OPTIONS=--openssl-legacy-provider; ng build --configuration=production", + "build-dev": "export NODE_OPTIONS=--openssl-legacy-provider; ng build", "test": "ng test --watch=false --browsers=ChromeHeadlessNoSB", "test-dev": "ng test --watch=true", "cov": "http-server -c-1 -o -p 9875 ./coverage/bcfoi", @@ -23,6 +23,7 @@ "@angular/compiler": "^18.2.1", "@angular/core": "^18.2.1", "@angular/forms": "^18.2.1", + "@angular/material": "^18.2.1", "@angular/platform-browser": "^18.2.1", "@angular/platform-browser-dynamic": "^18.2.1", "@angular/router": "^18.2.1", diff --git a/web/src/app/app-routing.module.ts b/web/src/app/app-routing.module.ts index d4686d78..d758c483 100644 --- a/web/src/app/app-routing.module.ts +++ b/web/src/app/app-routing.module.ts @@ -96,7 +96,6 @@ const routes: Routes = [ { path: 'personal/fosterparent/contact-info-options', component: ContactInfoOptionsComponent }, { path: 'personal/adoption/contact-info-options', component: ContactInfoOptionsComponent }, - { path: 'personal/review-submit', component: ReviewSubmitComponent }, { path: 'personal/youthincarechild/review-submit', component: ReviewSubmitComponent }, { path: 'personal/childprotectionparent/review-submit', component: ReviewSubmitComponent }, @@ -117,6 +116,7 @@ const routes: Routes = [ { path: 'personal/child/proof-of-guardianship', component: ProofOfGuardianshipComponent }, { path: 'personal/child/child-information', component: ChildInformationComponent }, { path: 'personal/child/verify-your-identity', component: VerifyYourIdentityComponent }, + { path: 'personal/child/request-topic', component: RequestTopicComponent }, { path: 'personal/child/ministry-confirmation', component: MinistryConfirmationComponent }, { path: 'personal/child/description-timeframe', component: DescriptionTimeframeComponent }, { path: 'personal/child/adoptive-parents', component: AdoptiveParentsComponent }, @@ -142,24 +142,137 @@ const routes: Routes = [ { path: 'personal/yourself-child/proof-of-permission', component: ProofOfGuardianshipComponent }, { path: 'personal/yourself-child/another-information', component: AnotherInformationComponent }, { path: 'personal/yourself-child/verify-your-identity', component: VerifyYourIdentityComponent }, + + { path: 'personal/yourself-child/request-topic', component: RequestTopicComponent }, + { path: 'personal/yourself-child/childprotectionparent', component: ChildProtectionParent }, + { path: 'personal/yourself-child/childprotectionchild', component: ChildProtectionChild }, + { path: 'personal/yourself-child/youthincareparent', component: YouthInCareParent }, + { path: 'personal/yourself-child/youthincarechild', component: YouthInCareChild }, + { path: 'personal/yourself-child/fosterparent', component: FosterParent }, + { path: 'personal/yourself-child/adoption', component: Adoption }, + { path: 'personal/yourself-child/ministry-confirmation', component: MinistryConfirmationComponent }, - { path: 'personal/yourself-child/description-timeframe', component: DescriptionTimeframeComponent }, + { path: 'personal/yourself-child/youthincarechild/ministry-confirmation', component: MinistryConfirmationComponent }, + { path: 'personal/yourself-child/childprotectionparent/ministry-confirmation', component: MinistryConfirmationComponent }, + { path: 'personal/yourself-child/childprotectionchild/ministry-confirmation', component: MinistryConfirmationComponent }, + { path: 'personal/yourself-child/youthincareparent/ministry-confirmation', component: MinistryConfirmationComponent }, + { path: 'personal/yourself-child/fosterparent/ministry-confirmation', component: MinistryConfirmationComponent }, + { path: 'personal/yourself-child/adoption/ministry-confirmation', component: MinistryConfirmationComponent }, + + { path: 'personal/yourself-child/youthincarechild/description-timeframe', component: DescriptionTimeframeComponent }, + { path: 'personal/yourself-child/description-timeframe', component: DescriptionTimeframeComponent }, + { path: 'personal/yourself-child/childprotectionparent/description-timeframe', component: DescriptionTimeframeComponent }, + { path: 'personal/yourself-child/childprotectionchild/description-timeframe', component: DescriptionTimeframeComponent }, + { path: 'personal/yourself-child/youthincareparent/description-timeframe', component: DescriptionTimeframeComponent }, + { path: 'personal/yourself-child/fosterparent/description-timeframe', component: DescriptionTimeframeComponent }, + { path: 'personal/yourself-child/adoption/description-timeframe', component: DescriptionTimeframeComponent }, + { path: 'personal/yourself-child/adoptive-parents', component: AdoptiveParentsComponent }, + { path: 'personal/yourself-child/youthincarechild/adoptive-parents', component: AdoptiveParentsComponent }, + { path: 'personal/yourself-child/childprotectionparent/adoptive-parents', component: AdoptiveParentsComponent }, + { path: 'personal/yourself-child/childprotectionchild/adoptive-parents', component: AdoptiveParentsComponent }, + { path: 'personal/yourself-child/youthincareparent/adoptive-parents', component: AdoptiveParentsComponent }, + { path: 'personal/yourself-child/fosterparent/adoptive-parents', component: AdoptiveParentsComponent }, + { path: 'personal/yourself-child/adoption/adoptive-parents', component: AdoptiveParentsComponent }, + { path: 'personal/yourself-child/contact-info-options', component: ContactInfoOptionsComponent }, + { path: 'personal/yourself-child/youthincarechild/contact-info-options', component: ContactInfoOptionsComponent }, + { path: 'personal/yourself-child/childprotectionparent/contact-info-options', component: ContactInfoOptionsComponent }, + { path: 'personal/yourself-child/childprotectionchild/contact-info-options', component: ContactInfoOptionsComponent }, + { path: 'personal/yourself-child/youthincareparent/contact-info-options', component: ContactInfoOptionsComponent }, + { path: 'personal/yourself-child/fosterparent/contact-info-options', component: ContactInfoOptionsComponent }, + { path: 'personal/yourself-child/adoption/contact-info-options', component: ContactInfoOptionsComponent }, + { path: 'personal/yourself-child/review-submit', component: ReviewSubmitComponent }, + { path: 'personal/yourself-child/youthincarechild/review-submit', component: ReviewSubmitComponent }, + { path: 'personal/yourself-child/childprotectionparent/review-submit', component: ReviewSubmitComponent }, + { path: 'personal/yourself-child/childprotectionchild/review-submit', component: ReviewSubmitComponent }, + { path: 'personal/yourself-child/youthincareparent/review-submit', component: ReviewSubmitComponent }, + { path: 'personal/yourself-child/fosterparent/review-submit', component: ReviewSubmitComponent }, + { path: 'personal/yourself-child/adoption/review-submit', component: ReviewSubmitComponent }, + { path: 'personal/yourself-child/submit-complete', component: ReviewSubmitCompleteComponent}, + { path: 'personal/yourself-child/youthincarechild/submit-complete', component: ReviewSubmitCompleteComponent }, + { path: 'personal/yourself-child/childprotectionparent/submit-complete', component: ReviewSubmitCompleteComponent }, + { path: 'personal/yourself-child/childprotectionchild/submit-complete', component: ReviewSubmitCompleteComponent }, + { path: 'personal/yourself-child/youthincareparent/submit-complete', component: ReviewSubmitCompleteComponent }, + { path: 'personal/yourself-child/fosterparent/submit-complete', component: ReviewSubmitCompleteComponent }, + { path: 'personal/yourself-child/adoption/submit-complete', component: ReviewSubmitCompleteComponent }, + + { path: 'personal/yourself-child/ministry-confirmation', component: MinistryConfirmationComponent }, + { path: 'personal/yourself-child/description-timeframe', component: DescriptionTimeframeComponent }, + { path: 'personal/yourself-child/adoptive-parents', component: AdoptiveParentsComponent }, + { path: 'personal/yourself-child/contact-info-options', component: ContactInfoOptionsComponent }, + { path: 'personal/yourself-child/review-submit', component: ReviewSubmitComponent }, + // { path: 'personal/yourself-child/submit-complete', component: ReviewSubmitCompleteComponent}, // Personal / Yourself & Another Person { path: 'personal/yourself-another/proof-of-permission', component: ProofOfGuardianshipComponent }, { path: 'personal/yourself-another/another-information', component: AnotherInformationComponent }, { path: 'personal/yourself-another/verify-your-identity', component: VerifyYourIdentityComponent }, { path: 'personal/yourself-another/request-topic', component: RequestTopicComponent }, + + { path: 'personal/yourself-another/childprotectionparent', component: ChildProtectionParent }, + { path: 'personal/yourself-another/childprotectionchild', component: ChildProtectionChild }, + { path: 'personal/yourself-another/youthincareparent', component: YouthInCareParent }, + { path: 'personal/yourself-another/youthincarechild', component: YouthInCareChild }, + { path: 'personal/yourself-another/fosterparent', component: FosterParent }, + { path: 'personal/yourself-another/adoption', component: Adoption }, + { path: 'personal/yourself-another/ministry-confirmation', component: MinistryConfirmationComponent }, - { path: 'personal/yourself-another/description-timeframe', component: DescriptionTimeframeComponent }, + { path: 'personal/yourself-another/youthincarechild/ministry-confirmation', component: MinistryConfirmationComponent }, + { path: 'personal/yourself-another/childprotectionparent/ministry-confirmation', component: MinistryConfirmationComponent }, + { path: 'personal/yourself-another/childprotectionchild/ministry-confirmation', component: MinistryConfirmationComponent }, + { path: 'personal/yourself-another/youthincareparent/ministry-confirmation', component: MinistryConfirmationComponent }, + { path: 'personal/yourself-another/fosterparent/ministry-confirmation', component: MinistryConfirmationComponent }, + { path: 'personal/yourself-another/adoption/ministry-confirmation', component: MinistryConfirmationComponent }, + + { path: 'personal/yourself-another/youthincarechild/description-timeframe', component: DescriptionTimeframeComponent }, + { path: 'personal/yourself-another/description-timeframe', component: DescriptionTimeframeComponent }, + { path: 'personal/yourself-another/childprotectionparent/description-timeframe', component: DescriptionTimeframeComponent }, + { path: 'personal/yourself-another/childprotectionchild/description-timeframe', component: DescriptionTimeframeComponent }, + { path: 'personal/yourself-another/youthincareparent/description-timeframe', component: DescriptionTimeframeComponent }, + { path: 'personal/yourself-another/fosterparent/description-timeframe', component: DescriptionTimeframeComponent }, + { path: 'personal/yourself-another/adoption/description-timeframe', component: DescriptionTimeframeComponent }, + { path: 'personal/yourself-another/adoptive-parents', component: AdoptiveParentsComponent }, + { path: 'personal/yourself-another/youthincarechild/adoptive-parents', component: AdoptiveParentsComponent }, + { path: 'personal/yourself-another/childprotectionparent/adoptive-parents', component: AdoptiveParentsComponent }, + { path: 'personal/yourself-another/childprotectionchild/adoptive-parents', component: AdoptiveParentsComponent }, + { path: 'personal/yourself-another/youthincareparent/adoptive-parents', component: AdoptiveParentsComponent }, + { path: 'personal/yourself-another/fosterparent/adoptive-parents', component: AdoptiveParentsComponent }, + { path: 'personal/yourself-another/adoption/adoptive-parents', component: AdoptiveParentsComponent }, + { path: 'personal/yourself-another/contact-info-options', component: ContactInfoOptionsComponent }, + { path: 'personal/yourself-another/youthincarechild/contact-info-options', component: ContactInfoOptionsComponent }, + { path: 'personal/yourself-another/childprotectionparent/contact-info-options', component: ContactInfoOptionsComponent }, + { path: 'personal/yourself-another/childprotectionchild/contact-info-options', component: ContactInfoOptionsComponent }, + { path: 'personal/yourself-another/youthincareparent/contact-info-options', component: ContactInfoOptionsComponent }, + { path: 'personal/yourself-another/fosterparent/contact-info-options', component: ContactInfoOptionsComponent }, + { path: 'personal/yourself-another/adoption/contact-info-options', component: ContactInfoOptionsComponent }, + { path: 'personal/yourself-another/review-submit', component: ReviewSubmitComponent }, + { path: 'personal/yourself-another/youthincarechild/review-submit', component: ReviewSubmitComponent }, + { path: 'personal/yourself-another/childprotectionparent/review-submit', component: ReviewSubmitComponent }, + { path: 'personal/yourself-another/childprotectionchild/review-submit', component: ReviewSubmitComponent }, + { path: 'personal/yourself-another/youthincareparent/review-submit', component: ReviewSubmitComponent }, + { path: 'personal/yourself-another/fosterparent/review-submit', component: ReviewSubmitComponent }, + { path: 'personal/yourself-another/adoption/review-submit', component: ReviewSubmitComponent }, + { path: 'personal/yourself-another/submit-complete', component: ReviewSubmitCompleteComponent}, + { path: 'personal/yourself-another/youthincarechild/submit-complete', component: ReviewSubmitCompleteComponent }, + { path: 'personal/yourself-another/childprotectionparent/submit-complete', component: ReviewSubmitCompleteComponent }, + { path: 'personal/yourself-another/childprotectionchild/submit-complete', component: ReviewSubmitCompleteComponent }, + { path: 'personal/yourself-another/youthincareparent/submit-complete', component: ReviewSubmitCompleteComponent }, + { path: 'personal/yourself-another/fosterparent/submit-complete', component: ReviewSubmitCompleteComponent }, + { path: 'personal/yourself-another/adoption/submit-complete', component: ReviewSubmitCompleteComponent }, + + { path: 'personal/yourself-another/ministry-confirmation', component: MinistryConfirmationComponent }, + { path: 'personal/yourself-another/description-timeframe', component: DescriptionTimeframeComponent }, + { path: 'personal/yourself-another/adoptive-parents', component: AdoptiveParentsComponent }, + { path: 'personal/yourself-another/contact-info-options', component: ContactInfoOptionsComponent }, + { path: 'personal/yourself-another/review-submit', component: ReviewSubmitComponent }, + // { path: 'personal/yourself-another/submit-complete', component: ReviewSubmitCompleteComponent}, // Personal / Child & Another Person { path: 'personal/child-another/proof-of-guardianship', component: ProofOfGuardianshipComponent }, @@ -167,6 +280,7 @@ const routes: Routes = [ { path: 'personal/child-another/proof-of-permission', component: ProofOfGuardianshipComponent }, { path: 'personal/child-another/another-information', component: AnotherInformationComponent }, { path: 'personal/child-another/verify-your-identity', component: VerifyYourIdentityComponent }, + { path: 'personal/child-another/request-topic', component: RequestTopicComponent }, { path: 'personal/child-another/ministry-confirmation', component: MinistryConfirmationComponent }, { path: 'personal/child-another/description-timeframe', component: DescriptionTimeframeComponent }, { path: 'personal/child-another/adoptive-parents', component: AdoptiveParentsComponent }, @@ -180,12 +294,69 @@ const routes: Routes = [ { path: 'personal/yourself-child-another/proof-of-permission', component: ProofOfGuardianshipComponent }, { path: 'personal/yourself-child-another/another-information', component: AnotherInformationComponent }, { path: 'personal/yourself-child-another/verify-your-identity', component: VerifyYourIdentityComponent }, + + { path: 'personal/yourself-child-another/request-topic', component: RequestTopicComponent }, + { path: 'personal/yourself-child-another/childprotectionparent', component: ChildProtectionParent }, + { path: 'personal/yourself-child-another/childprotectionchild', component: ChildProtectionChild }, + { path: 'personal/yourself-child-another/youthincareparent', component: YouthInCareParent }, + { path: 'personal/yourself-child-another/youthincarechild', component: YouthInCareChild }, + { path: 'personal/yourself-child-another/fosterparent', component: FosterParent }, + { path: 'personal/yourself-child-another/adoption', component: Adoption }, + { path: 'personal/yourself-child-another/ministry-confirmation', component: MinistryConfirmationComponent }, - { path: 'personal/yourself-child-another/description-timeframe', component: DescriptionTimeframeComponent }, + { path: 'personal/yourself-child-another/youthincarechild/ministry-confirmation', component: MinistryConfirmationComponent }, + { path: 'personal/yourself-child-another/childprotectionparent/ministry-confirmation', component: MinistryConfirmationComponent }, + { path: 'personal/yourself-child-another/childprotectionchild/ministry-confirmation', component: MinistryConfirmationComponent }, + { path: 'personal/yourself-child-another/youthincareparent/ministry-confirmation', component: MinistryConfirmationComponent }, + { path: 'personal/yourself-child-another/fosterparent/ministry-confirmation', component: MinistryConfirmationComponent }, + { path: 'personal/yourself-child-another/adoption/ministry-confirmation', component: MinistryConfirmationComponent }, + + { path: 'personal/yourself-child-another/youthincarechild/description-timeframe', component: DescriptionTimeframeComponent }, + { path: 'personal/yourself-child-another/description-timeframe', component: DescriptionTimeframeComponent }, + { path: 'personal/yourself-child-another/childprotectionparent/description-timeframe', component: DescriptionTimeframeComponent }, + { path: 'personal/yourself-child-another/childprotectionchild/description-timeframe', component: DescriptionTimeframeComponent }, + { path: 'personal/yourself-child-another/youthincareparent/description-timeframe', component: DescriptionTimeframeComponent }, + { path: 'personal/yourself-child-another/fosterparent/description-timeframe', component: DescriptionTimeframeComponent }, + { path: 'personal/yourself-child-another/adoption/description-timeframe', component: DescriptionTimeframeComponent }, + { path: 'personal/yourself-child-another/adoptive-parents', component: AdoptiveParentsComponent }, + { path: 'personal/yourself-child-another/youthincarechild/adoptive-parents', component: AdoptiveParentsComponent }, + { path: 'personal/yourself-child-another/childprotectionparent/adoptive-parents', component: AdoptiveParentsComponent }, + { path: 'personal/yourself-child-another/childprotectionchild/adoptive-parents', component: AdoptiveParentsComponent }, + { path: 'personal/yourself-child-another/youthincareparent/adoptive-parents', component: AdoptiveParentsComponent }, + { path: 'personal/yourself-child-another/fosterparent/adoptive-parents', component: AdoptiveParentsComponent }, + { path: 'personal/yourself-child-another/adoption/adoptive-parents', component: AdoptiveParentsComponent }, + { path: 'personal/yourself-child-another/contact-info-options', component: ContactInfoOptionsComponent }, + { path: 'personal/yourself-child-another/youthincarechild/contact-info-options', component: ContactInfoOptionsComponent }, + { path: 'personal/yourself-child-another/childprotectionparent/contact-info-options', component: ContactInfoOptionsComponent }, + { path: 'personal/yourself-child-another/childprotectionchild/contact-info-options', component: ContactInfoOptionsComponent }, + { path: 'personal/yourself-child-another/youthincareparent/contact-info-options', component: ContactInfoOptionsComponent }, + { path: 'personal/yourself-child-another/fosterparent/contact-info-options', component: ContactInfoOptionsComponent }, + { path: 'personal/yourself-child-another/adoption/contact-info-options', component: ContactInfoOptionsComponent }, + { path: 'personal/yourself-child-another/review-submit', component: ReviewSubmitComponent }, + { path: 'personal/yourself-child-another/youthincarechild/review-submit', component: ReviewSubmitComponent }, + { path: 'personal/yourself-child-another/childprotectionparent/review-submit', component: ReviewSubmitComponent }, + { path: 'personal/yourself-child-another/childprotectionchild/review-submit', component: ReviewSubmitComponent }, + { path: 'personal/yourself-child-another/youthincareparent/review-submit', component: ReviewSubmitComponent }, + { path: 'personal/yourself-child-another/fosterparent/review-submit', component: ReviewSubmitComponent }, + { path: 'personal/yourself-child-another/adoption/review-submit', component: ReviewSubmitComponent }, + { path: 'personal/yourself-child-another/submit-complete', component: ReviewSubmitCompleteComponent}, + { path: 'personal/yourself-child-another/youthincarechild/submit-complete', component: ReviewSubmitCompleteComponent }, + { path: 'personal/yourself-child-another/childprotectionparent/submit-complete', component: ReviewSubmitCompleteComponent }, + { path: 'personal/yourself-child-another/childprotectionchild/submit-complete', component: ReviewSubmitCompleteComponent }, + { path: 'personal/yourself-child-another/youthincareparent/submit-complete', component: ReviewSubmitCompleteComponent }, + { path: 'personal/yourself-child-another/fosterparent/submit-complete', component: ReviewSubmitCompleteComponent }, + { path: 'personal/yourself-child-another/adoption/submit-complete', component: ReviewSubmitCompleteComponent }, + + { path: 'personal/yourself-child-another/ministry-confirmation', component: MinistryConfirmationComponent }, + { path: 'personal/yourself-child-another/description-timeframe', component: DescriptionTimeframeComponent }, + { path: 'personal/yourself-child-another/adoptive-parents', component: AdoptiveParentsComponent }, + { path: 'personal/yourself-child-another/contact-info-options', component: ContactInfoOptionsComponent }, + { path: 'personal/yourself-child-another/review-submit', component: ReviewSubmitComponent }, + // { path: 'personal/yourself-child-another/submit-complete', component: ReviewSubmitCompleteComponent}, // Include routing for a 404 routing back to the landing page! { path: '**', redirectTo: '' } diff --git a/web/src/app/app.module.ts b/web/src/app/app.module.ts index cfb19744..c6f3959a 100644 --- a/web/src/app/app.module.ts +++ b/web/src/app/app.module.ts @@ -15,13 +15,22 @@ import { FooterComponent } from "./footer/footer.component"; import { ReactiveFormsModule } from "@angular/forms"; import { SigninComponent } from "./route-components/signin/signin.component"; import { AppConfigService } from "./services/app-config.service"; +import { MatDialogModule } from "@angular/material/dialog"; +import { DelayWarningDialog } from "./route-components/contact-info-options/delay-warning-dialog.component"; export function init_app(appConfigService: AppConfigService) { return () => appConfigService.load(); } @NgModule({ - declarations: [AppComponent, CoreHeaderComponent, ProgressBarComponent, FooterComponent, SigninComponent], + declarations: [ + AppComponent, + CoreHeaderComponent, + ProgressBarComponent, + FooterComponent, + SigninComponent, + DelayWarningDialog, + ], imports: [ BrowserModule, BrowserAnimationsModule, @@ -31,6 +40,7 @@ export function init_app(appConfigService: AppConfigService) { RouteComponentsModule, // NgxWebstorageModule.forRoot(), ReactiveFormsModule, + MatDialogModule, ], providers: [ TransomApiClientService, diff --git a/web/src/app/route-components/contact-info-options/contact-info-options.component.ts b/web/src/app/route-components/contact-info-options/contact-info-options.component.ts index 334c6933..b8ed69d6 100644 --- a/web/src/app/route-components/contact-info-options/contact-info-options.component.ts +++ b/web/src/app/route-components/contact-info-options/contact-info-options.component.ts @@ -4,6 +4,8 @@ import { FoiRequest } from "src/app/models/FoiRequest"; import { FormBuilder, FormGroup, Validators } from "@angular/forms"; import { DataService } from "src/app/services/data.service"; import { KeycloakService } from "../../services/keycloak.service"; +import { MatDialog } from "@angular/material/dialog"; +import { DelayWarningDialog } from "./delay-warning-dialog.component"; @Component({ templateUrl: "./contact-info-options.component.html", @@ -16,8 +18,15 @@ export class ContactInfoOptionsComponent implements OnInit { targetKey: string = "contactInfoOptions"; isAuthenticated: boolean = false; tip = ""; + hasmcfdspecificrecordsrequests: boolean = false; + // readonly dialog = inject(MatDialog); - constructor(private fb: FormBuilder, private dataService: DataService, private keycloak: KeycloakService) {} + constructor( + private fb: FormBuilder, + private dataService: DataService, + private keycloak: KeycloakService, + public dialog: MatDialog + ) {} ngOnInit() { // Update email if the user is authenticated @@ -45,6 +54,14 @@ export class ContactInfoOptionsComponent implements OnInit { this.foiRequest.requestData.contactInfoOptions.email = token.email; } this.foiForm.patchValue(this.foiRequest.requestData[this.targetKey], { emitEvent: true }); + this.hasmcfdspecificrecordsrequests = + this.foiRequest.requestData.selectedtopics != undefined && this.foiRequest.requestData.selectedtopics.length > 0; + + if (this.hasmcfdspecificrecordsrequests) { + setTimeout(() => { + this.openDialog(); + }, 500); + } } /** @@ -86,4 +103,12 @@ export class ContactInfoOptionsComponent implements OnInit { } this.base.goFoiBack(); } + + openDialog() { + const dialogRef = this.dialog.open(DelayWarningDialog); + + // dialogRef.afterClosed().subscribe(result => { + // console.log(`Dialog result: ${result}`); + // }); + } } diff --git a/web/src/app/route-components/contact-info-options/delay-warning-dialog.component.ts b/web/src/app/route-components/contact-info-options/delay-warning-dialog.component.ts new file mode 100644 index 00000000..660e9228 --- /dev/null +++ b/web/src/app/route-components/contact-info-options/delay-warning-dialog.component.ts @@ -0,0 +1,8 @@ +import { Component, OnInit, ViewChild } from '@angular/core'; + +@Component({ + selector: 'delay-warning-dialog', + templateUrl: 'delay-warning-dialog.html', + styleUrls: ['./delay-warning-dialog.scss'] + }) + export class DelayWarningDialog {} \ No newline at end of file diff --git a/web/src/app/route-components/contact-info-options/delay-warning-dialog.html b/web/src/app/route-components/contact-info-options/delay-warning-dialog.html new file mode 100644 index 00000000..ee681f7c --- /dev/null +++ b/web/src/app/route-components/contact-info-options/delay-warning-dialog.html @@ -0,0 +1,37 @@ + + + \ No newline at end of file diff --git a/web/src/app/route-components/contact-info-options/delay-warning-dialog.scss b/web/src/app/route-components/contact-info-options/delay-warning-dialog.scss new file mode 100644 index 00000000..3d0cbb78 --- /dev/null +++ b/web/src/app/route-components/contact-info-options/delay-warning-dialog.scss @@ -0,0 +1,6 @@ +.popup-content { + background-color: white; + padding: 35px; + border: 10px solid black; + border-radius: 10px; +} \ No newline at end of file diff --git a/web/src/app/route-components/contact-info/contact-info.component.html b/web/src/app/route-components/contact-info/contact-info.component.html index 097f3d79..e380141e 100644 --- a/web/src/app/route-components/contact-info/contact-info.component.html +++ b/web/src/app/route-components/contact-info/contact-info.component.html @@ -68,7 +68,7 @@

Your name

An Indigenous Governing Entity is not required to pay application fees. Indigenous governing entity “means an Indigenous entity that exercises governmental functions, - and includes but is not limited to an Indigenous governing body as defined in the Declaration on the Rights of Indigenous Peoples Act." + and includes but is not limited to an Indigenous governing body as defined in the Declaration on the Rights of Indigenous Peoples Act.” You have previously selected your type of records. Please describe or provide any additional information that would assist the ministry in searching for your requested records on the below description. + + We protect the identities of people who raise child protection concerns and the Freedom of Information and Protection of Privacy Act supports this. If you ask for a reporter's name, we will reply under Section 8 of the Act which means we will not confirm, deny, or provide any information. +

Describe the records you are looking for:

@@ -13,11 +16,27 @@

Describe the records you are looking for:

>Be as specific as possible. A good description of records will be brief and detailed.

When possible, please include: Key words, file types, file numbers, previous FOI request numbers, categories of records to exclude, and the purpose records may have been created for.

When possible, please do not include: Any special characters, including quotation marks or bullet points.

- For example: Briefing notes prepared for the minister on a specific topic.
- (Asking for ‘Any and all records’ can result in a high volume of unnecessary records and may result in additional processing fees.)

- To see examples of other requests: - You can browse the Open Information +
+ For example: Briefing notes prepared for the minister on a specific topic.
+ (Asking for ‘Any and all records’ can result in a high volume of unnecessary records and may result in additional processing fees.)

+ To see examples of other requests: + You can browse the Open Information +
+
+ We want to respond to your request as quickly as possible and so we will remove handwritten notes, receipts, and other family members’ information. You can still request this information by checking the appropriate box below, however this may cause delays in the delivery of your records.

+ Please note that checking any boxes may cause delays in the delivery of your records.

+
+
+ +
+
+
+
diff --git a/web/src/app/route-components/description-timeframe/description-timeframe.component.scss b/web/src/app/route-components/description-timeframe/description-timeframe.component.scss index b4dd3cdf..779a7339 100644 --- a/web/src/app/route-components/description-timeframe/description-timeframe.component.scss +++ b/web/src/app/route-components/description-timeframe/description-timeframe.component.scss @@ -1,3 +1,12 @@ .inline-label { margin-top: 0; +} + +.optiontext{ + display: inline; + padding-left: 5px; +} + +.optiondescription{ + padding-left: 21px; } \ No newline at end of file diff --git a/web/src/app/route-components/description-timeframe/description-timeframe.component.ts b/web/src/app/route-components/description-timeframe/description-timeframe.component.ts index 35b2a91b..ca01b023 100644 --- a/web/src/app/route-components/description-timeframe/description-timeframe.component.ts +++ b/web/src/app/route-components/description-timeframe/description-timeframe.component.ts @@ -3,6 +3,8 @@ import { BaseComponent } from "src/app/utils-components/base/base.component"; import { FoiRequest } from "src/app/models/FoiRequest"; import { FormBuilder, Validators, FormGroup } from "@angular/forms"; import { DataService } from "src/app/services/data.service"; +import { Observable } from "rxjs"; +import { map } from "rxjs/operators"; @Component({ templateUrl: "./description-timeframe.component.html", @@ -19,6 +21,10 @@ export class DescriptionTimeframeComponent implements OnInit { showPublicServiceEmployeeNumber: boolean = false; showCorrectionalServiceNumber: boolean = false; hasmcfdspecificrecordsrequests: boolean = false; + // showAdditionOptions: boolean = false; + selectedOptions: Array = []; + additionalOptions: Observable; + delayFactors: Array = []; constructor(private fb: FormBuilder, private dataService: DataService) {} @@ -29,6 +35,7 @@ export class DescriptionTimeframeComponent implements OnInit { toDate: [null, [Validators.required, this.base.noFutureValidator, this.base.toDateValidator]], correctionalServiceNumber: [null, Validators.maxLength(255)], publicServiceEmployeeNumber: [null, Validators.maxLength(255)], + requestAdditionalOpt: [null], }); this.foiRequest = this.dataService.getCurrentState(this.targetKey, "requestType", "requestTopic", "ministry"); @@ -42,11 +49,13 @@ export class DescriptionTimeframeComponent implements OnInit { this.personalRequest = this.foiRequest.requestData.requestType.requestType === "personal"; if (this.personalRequest) { + this.delayFactors = this.dataService.getDelayFactors(); this.showPublicServiceEmployeeNumber = !!currentMinistries.find((m) => m.code === "PSA"); this.showCorrectionalServiceNumber = !!currentMinistries.find((m) => m.code === "PSSG"); this.hasmcfdspecificrecordsrequests = this.foiRequest.requestData.selectedtopics != undefined && this.foiRequest.requestData.selectedtopics.length > 0; + // this.showAdditionOptions = this.hasmcfdspecificrecordsrequests && this.hasDelayFactors(this.foiRequest.requestData.selectedtopics, this.delayFactors); } let ministryTopic = "General Request"; @@ -65,6 +74,37 @@ export class DescriptionTimeframeComponent implements OnInit { this.foiForm.valueChanges.subscribe(() => { this.base.continueDisabled = !this.foiForm.valid; }); + + let selectedAdditionalOptions = this.foiRequest.requestData.selectedadditionaloptions; + this.additionalOptions = this.dataService.getAdditionalOptions().pipe( + map((_options) => { + _options.forEach((opt) => { + opt.selected = + opt.selected || + (selectedAdditionalOptions ? !!selectedAdditionalOptions.find((ms) => ms.value === opt.value) : false); + }); + + return _options; + }) + ); + } + + selectopt(item: any, _checked) { + item.selected = !item.selected; + + var itemindex: number = -1; + if (this.foiRequest.requestData.selectedadditionaloptions !== undefined) { + let current = this.foiRequest.requestData.selectedadditionaloptions.find((st) => st.value === item.value); + itemindex = this.foiRequest.requestData.selectedadditionaloptions.indexOf(current); + } else { + this.foiRequest.requestData.selectedadditionaloptions = []; + } + + if (!this.foiRequest.requestData.selectedadditionaloptions.includes(item) && itemindex === -1) { + this.foiRequest.requestData.selectedadditionaloptions.push(item); + } else { + this.foiRequest.requestData.selectedadditionaloptions.splice(itemindex, 1); + } } doContinue() { @@ -100,4 +140,16 @@ export class DescriptionTimeframeComponent implements OnInit { inputMaxDate(): string { return new Date().toISOString().split("T")[0]; } + + // hasDelayFactors(selectedTopics: Array, delayFactors: Array) { + // selectedTopics.forEach( + // topic => { + // if(delayFactors.includes(topic.value)) { + // return true; + // } + // } + // ); + + // return false; + // } } diff --git a/web/src/app/route-components/general-info/general-info.component.html b/web/src/app/route-components/general-info/general-info.component.html index e7dc2c86..66044dd1 100644 --- a/web/src/app/route-components/general-info/general-info.component.html +++ b/web/src/app/route-components/general-info/general-info.component.html @@ -10,7 +10,7 @@

Fees

Indigenous governing entities (IGE) are not required to pay application fees. Indigenous governing entity “means an Indigenous entity that exercises governmental functions, - and includes but is not limited to an Indigenous governing body as defined in the Declaration on the Rights of Indigenous Peoples Act. + and includes but is not limited to an Indigenous governing body as defined in the Declaration on the Rights of Indigenous Peoples Act.”
  • There are no means to waive an application fee.
  • There are no fees for personal FOI requests.
  • @@ -23,15 +23,15 @@

    Fees

    Tips for avoiding a processing fee