diff --git a/.github/workflows/dev.yml b/.github/workflows/dev.yml index 65d90850..7be4efe2 100644 --- a/.github/workflows/dev.yml +++ b/.github/workflows/dev.yml @@ -41,7 +41,9 @@ jobs: # SAML_PRIVATE_KEY: ${{ secrets.SAML_PRIVATE_KEY }} JWT_PUBLIC_KEY: ${{ secrets.JWT_PUBLIC_KEY }} JWT_PRIVATE_KEY: ${{ secrets.JWT_PRIVATE_KEY }} - CSB_ENROLLMENT_PERIOD: closed + CSB_APPLICATION_FORM_OPEN: true + CSB_PAYMENT_REQUEST_FORM_OPEN: true + CSB_CLOSE_OUT_FORM_OPEN: true FORMIO_PKG_AUTH_TOKEN: ${{ secrets.FORMIO_PKG_AUTH_TOKEN }} FORMIO_BASE_URL: ${{ secrets.FORMIO_BASE_URL }} FORMIO_PROJECT_NAME: ${{ secrets.FORMIO_PROJECT_NAME }} @@ -118,10 +120,12 @@ jobs: cf set-env $APP_NAME "SAML_ENTITY_ID" "$SAML_ENTITY_ID" > /dev/null cf set-env $APP_NAME "SAML_IDP_CERT" "$SAML_IDP_CERT" > /dev/null cf set-env $APP_NAME "SAML_PUBLIC_KEY" "$SAML_PUBLIC_KEY" > /dev/null - cf set-env $APP_NAME "SAML_PRIVATE_KEY" "$SAML_PRIVATE_KEY" > /dev/null + # cf set-env $APP_NAME "SAML_PRIVATE_KEY" "$SAML_PRIVATE_KEY" > /dev/null cf set-env $APP_NAME "JWT_PUBLIC_KEY" "$JWT_PUBLIC_KEY" > /dev/null cf set-env $APP_NAME "JWT_PRIVATE_KEY" "$JWT_PRIVATE_KEY" > /dev/null - cf set-env $APP_NAME "CSB_ENROLLMENT_PERIOD" "$CSB_ENROLLMENT_PERIOD" > /dev/null + cf set-env $APP_NAME "CSB_APPLICATION_FORM_OPEN" "$CSB_APPLICATION_FORM_OPEN" > /dev/null + cf set-env $APP_NAME "CSB_PAYMENT_REQUEST_FORM_OPEN" "$CSB_PAYMENT_REQUEST_FORM_OPEN" > /dev/null + cf set-env $APP_NAME "CSB_CLOSE_OUT_FORM_OPEN" "$CSB_CLOSE_OUT_FORM_OPEN" > /dev/null cf set-env $APP_NAME "FORMIO_BASE_URL" "$FORMIO_BASE_URL" > /dev/null cf set-env $APP_NAME "FORMIO_PROJECT_NAME" "$FORMIO_PROJECT_NAME" > /dev/null cf set-env $APP_NAME "FORMIO_APPLICATION_FORM_PATH" "$FORMIO_APPLICATION_FORM_PATH" > /dev/null diff --git a/.github/workflows/proto.yml b/.github/workflows/proto.yml index 60d9fc03..759014eb 100644 --- a/.github/workflows/proto.yml +++ b/.github/workflows/proto.yml @@ -38,9 +38,13 @@ jobs: SAML_ENTITY_ID: ${{ secrets.SAML_ENTITY_ID }} SAML_IDP_CERT: ${{ secrets.SAML_IDP_CERT }} SAML_PUBLIC_KEY: ${{ secrets.SAML_PUBLIC_KEY }} + # SAML_PRIVATE_KEY: ${{ secrets.SAML_PRIVATE_KEY }} JWT_PUBLIC_KEY: ${{ secrets.JWT_PUBLIC_KEY }} JWT_PRIVATE_KEY: ${{ secrets.JWT_PRIVATE_KEY }} CSB_ENROLLMENT_PERIOD: open + CSB_APPLICATION_FORM_OPEN: true + CSB_PAYMENT_REQUEST_FORM_OPEN: true + CSB_CLOSE_OUT_FORM_OPEN: true FORMIO_PKG_AUTH_TOKEN: ${{ secrets.FORMIO_PKG_AUTH_TOKEN }} FORMIO_BASE_URL: ${{ secrets.FORMIO_BASE_URL }} FORMIO_PROJECT_NAME: ${{ secrets.FORMIO_PROJECT_NAME }} @@ -117,9 +121,12 @@ jobs: cf set-env $APP_NAME "SAML_ENTITY_ID" "$SAML_ENTITY_ID" > /dev/null cf set-env $APP_NAME "SAML_IDP_CERT" "$SAML_IDP_CERT" > /dev/null cf set-env $APP_NAME "SAML_PUBLIC_KEY" "$SAML_PUBLIC_KEY" > /dev/null + # cf set-env $APP_NAME "SAML_PRIVATE_KEY" "$SAML_PRIVATE_KEY" > /dev/null cf set-env $APP_NAME "JWT_PUBLIC_KEY" "$JWT_PUBLIC_KEY" > /dev/null cf set-env $APP_NAME "JWT_PRIVATE_KEY" "$JWT_PRIVATE_KEY" > /dev/null - cf set-env $APP_NAME "CSB_ENROLLMENT_PERIOD" "$CSB_ENROLLMENT_PERIOD" > /dev/null + cf set-env $APP_NAME "CSB_APPLICATION_FORM_OPEN" "$CSB_APPLICATION_FORM_OPEN" > /dev/null + cf set-env $APP_NAME "CSB_PAYMENT_REQUEST_FORM_OPEN" "$CSB_PAYMENT_REQUEST_FORM_OPEN" > /dev/null + cf set-env $APP_NAME "CSB_CLOSE_OUT_FORM_OPEN" "$CSB_CLOSE_OUT_FORM_OPEN" > /dev/null cf set-env $APP_NAME "FORMIO_BASE_URL" "$FORMIO_BASE_URL" > /dev/null cf set-env $APP_NAME "FORMIO_PROJECT_NAME" "$FORMIO_PROJECT_NAME" > /dev/null cf set-env $APP_NAME "FORMIO_APPLICATION_FORM_PATH" "$FORMIO_APPLICATION_FORM_PATH" > /dev/null diff --git a/.github/workflows/staging.yml b/.github/workflows/staging.yml index b14179eb..4ec6b963 100644 --- a/.github/workflows/staging.yml +++ b/.github/workflows/staging.yml @@ -41,7 +41,9 @@ jobs: SAML_PRIVATE_KEY: ${{ secrets.SAML_PRIVATE_KEY }} JWT_PUBLIC_KEY: ${{ secrets.JWT_PUBLIC_KEY }} JWT_PRIVATE_KEY: ${{ secrets.JWT_PRIVATE_KEY }} - CSB_ENROLLMENT_PERIOD: closed + CSB_APPLICATION_FORM_OPEN: true + CSB_PAYMENT_REQUEST_FORM_OPEN: true + CSB_CLOSE_OUT_FORM_OPEN: true FORMIO_PKG_AUTH_TOKEN: ${{ secrets.FORMIO_PKG_AUTH_TOKEN }} FORMIO_BASE_URL: ${{ secrets.FORMIO_BASE_URL }} FORMIO_PROJECT_NAME: ${{ secrets.FORMIO_PROJECT_NAME }} @@ -121,7 +123,9 @@ jobs: cf set-env $APP_NAME "SAML_PRIVATE_KEY" "$SAML_PRIVATE_KEY" > /dev/null cf set-env $APP_NAME "JWT_PUBLIC_KEY" "$JWT_PUBLIC_KEY" > /dev/null cf set-env $APP_NAME "JWT_PRIVATE_KEY" "$JWT_PRIVATE_KEY" > /dev/null - cf set-env $APP_NAME "CSB_ENROLLMENT_PERIOD" "$CSB_ENROLLMENT_PERIOD" > /dev/null + cf set-env $APP_NAME "CSB_APPLICATION_FORM_OPEN" "$CSB_APPLICATION_FORM_OPEN" > /dev/null + cf set-env $APP_NAME "CSB_PAYMENT_REQUEST_FORM_OPEN" "$CSB_PAYMENT_REQUEST_FORM_OPEN" > /dev/null + cf set-env $APP_NAME "CSB_CLOSE_OUT_FORM_OPEN" "$CSB_CLOSE_OUT_FORM_OPEN" > /dev/null cf set-env $APP_NAME "FORMIO_BASE_URL" "$FORMIO_BASE_URL" > /dev/null cf set-env $APP_NAME "FORMIO_PROJECT_NAME" "$FORMIO_PROJECT_NAME" > /dev/null cf set-env $APP_NAME "FORMIO_APPLICATION_FORM_PATH" "$FORMIO_APPLICATION_FORM_PATH" > /dev/null diff --git a/app/client/package-lock.json b/app/client/package-lock.json index 318e9349..4fc6ded5 100644 --- a/app/client/package-lock.json +++ b/app/client/package-lock.json @@ -1,43 +1,48 @@ { "name": "epa-csb-client", - "version": "0.1.0", + "version": "2.1.0", "lockfileVersion": 2, "requires": true, "packages": { "": { "name": "epa-csb-client", - "version": "0.1.0", + "version": "2.1.0", "license": "CC0-1.0", "dependencies": { "@formio/premium": "1.18.4", - "@formio/react": "5.2.0", - "@formio/uswds": "2.4.6", - "@reach/alert-dialog": "0.16.2", - "@reach/dialog": "0.16.2", - "@reach/tooltip": "0.16.2", - "@testing-library/jest-dom": "5.16.4", - "@testing-library/react": "12.1.4", - "@testing-library/user-event": "14.2.3", - "@types/jest": "28.1.5", - "@types/lodash": "4.14.182", - "@types/node": "18.0.4", - "@types/react": "18.0.15", - "@types/react-dom": "18.0.6", - "bootstrap": "5.1.3", + "@formio/react": "5.2.3", + "@formio/uswds": "2.4.8", + "@reach/alert-dialog": "0.18.0", + "@reach/dialog": "0.18.0", + "@reach/tooltip": "0.18.0", + "@testing-library/jest-dom": "5.16.5", + "@testing-library/react": "12.1.5", + "@testing-library/user-event": "14.4.3", + "@types/jest": "29.2.3", + "@types/lodash": "4.14.191", + "@types/node": "18.11.10", + "@types/react": "18.0.26", + "@types/react-dom": "18.0.9", + "bootstrap": "5.2.3", "formiojs": "4.14.5", "lodash": "4.17.21", "react": "17.0.2", "react-dom": "17.0.2", - "react-idle-timer": "5.4.1", - "react-markdown": "8.0.3", - "react-router-dom": "6.3.0", + "react-idle-timer": "5.4.2", + "react-markdown": "8.0.4", + "react-router-dom": "6.4.4", "react-scripts": "5.0.1", "remark-gfm": "3.0.1", - "typescript": "4.7.4", + "typescript": "4.9.3", "uswds": "2.13.3", - "web-vitals": "2.1.4" + "web-vitals": "3.1.0" } }, + "node_modules/@adobe/css-tools": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/@adobe/css-tools/-/css-tools-4.0.1.tgz", + "integrity": "sha512-+u76oB43nOHrF4DDWRLWDCtci7f3QJoEBigemIdIeTi1ODqjx6Tad9NCVnPRwewWlKkVab5PlK8DCtPTyX7S8g==" + }, "node_modules/@ampproject/remapping": { "version": "2.1.2", "resolved": "https://registry.npmjs.org/@ampproject/remapping/-/remapping-2.1.2.tgz", @@ -2087,15 +2092,15 @@ } }, "node_modules/@formio/react": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/@formio/react/-/react-5.2.0.tgz", - "integrity": "sha512-0qKm8e2ojMwkVOgvbC9YSJvPuF52swn7wQJs21Y7amtph08RH/JgwPn2alQMcPPDuuYFU8Dpo2qy0X69tJfFPw==", + "version": "5.2.3", + "resolved": "https://registry.npmjs.org/@formio/react/-/react-5.2.3.tgz", + "integrity": "sha512-4ET7UZfDkdV/k7o7+NO85X2eUp5J8pVFime1chKaQC50YK127fHScBLLEknWVuIY4jUA1yyjwJ2oIkKXJRkKUQ==", "dependencies": { "babel-polyfill": "^6.26.0", - "core-js": "^3.19.3", + "core-js": "^3.21.1", "eventemitter2": "^6.4.5", "lodash": "^4.17.21", - "prop-types": "^15.7.2" + "prop-types": "^15.8.1" }, "peerDependencies": { "formiojs": "^4.12.4-rc.2", @@ -2109,9 +2114,9 @@ "integrity": "sha512-RwMEVXkyz+B6RivflrrKIqvvnGR/eZDLQs74u67StcrzO6n3/5D2J8XqTQRSUzQzr5QV6Wq0eZ51z/+mGm6THw==" }, "node_modules/@formio/uswds": { - "version": "2.4.6", - "resolved": "https://registry.npmjs.org/@formio/uswds/-/uswds-2.4.6.tgz", - "integrity": "sha512-FTnwiHDroOP+msMYSog1IB0Gr4G2Tzgqx2nov/P9RaQ03hQ3NxN+DlzoSYcZkRqiEfMq7T8ge96GaECVoU9fDA==" + "version": "2.4.8", + "resolved": "https://registry.npmjs.org/@formio/uswds/-/uswds-2.4.8.tgz", + "integrity": "sha512-sBEwGxbcs52w9yZQV2Bg8Z89e5aV4fqH1b+UxeM31KduXlqLuG7KHMbd6ZA8ifyUiR8bGwBoZXGHSlXhTIlgMQ==" }, "node_modules/@formio/vanilla-text-mask": { "version": "5.1.1", @@ -2419,6 +2424,25 @@ "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" } }, + "node_modules/@jest/expect-utils": { + "version": "29.3.1", + "resolved": "https://registry.npmjs.org/@jest/expect-utils/-/expect-utils-29.3.1.tgz", + "integrity": "sha512-wlrznINZI5sMjwvUoLVk617ll/UYfGIZNxmbU+Pa7wmkL4vYzhV9R2pwVqUh4NWWuLQWkI8+8mOkxs//prKQ3g==", + "dependencies": { + "jest-get-type": "^29.2.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/@jest/expect-utils/node_modules/jest-get-type": { + "version": "29.2.0", + "resolved": "https://registry.npmjs.org/jest-get-type/-/jest-get-type-29.2.0.tgz", + "integrity": "sha512-uXNJlg8hKFEnDgFsrCjznB+sTxdkuqiCL6zMgA75qEbAJjJYTs9XPrvDctrEig2GDow22T/LvHgO57iJhXB/UA==", + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, "node_modules/@jest/fake-timers": { "version": "27.5.1", "resolved": "https://registry.npmjs.org/@jest/fake-timers/-/fake-timers-27.5.1.tgz", @@ -2564,14 +2588,14 @@ } }, "node_modules/@jest/schemas": { - "version": "28.1.3", - "resolved": "https://registry.npmjs.org/@jest/schemas/-/schemas-28.1.3.tgz", - "integrity": "sha512-/l/VWsdt/aBXgjshLWOFyFt3IVdYypu5y2Wn2rOO1un6nkqIn8SLXzgIMYXFyYsRWDyF5EthmKJMIdJvk08grg==", + "version": "29.0.0", + "resolved": "https://registry.npmjs.org/@jest/schemas/-/schemas-29.0.0.tgz", + "integrity": "sha512-3Ab5HgYIIAnS0HjqJHQYZS+zXc4tUmTmBH3z83ajI6afXp8X3ZtdLX+nXx+I7LNkJD7uN9LAVhgnjDgZa2z0kA==", "dependencies": { "@sinclair/typebox": "^0.24.1" }, "engines": { - "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, "node_modules/@jest/source-map": { @@ -2916,25 +2940,24 @@ } }, "node_modules/@popperjs/core": { - "version": "2.11.4", - "resolved": "https://registry.npmjs.org/@popperjs/core/-/core-2.11.4.tgz", - "integrity": "sha512-q/ytXxO5NKvyT37pmisQAItCFqA7FD/vNb8dgaJy3/630Fsc+Mz9/9f2SziBoIZ30TJooXyTwZmhi1zjXmObYg==", + "version": "2.11.6", + "resolved": "https://registry.npmjs.org/@popperjs/core/-/core-2.11.6.tgz", + "integrity": "sha512-50/17A98tWUfQ176raKiOGXuYpLyyVMkxxG6oylzL3BPOlA6ADGdK7EYunSa4I064xerltq9TGXs8HmOk5E+vw==", "funding": { "type": "opencollective", "url": "https://opencollective.com/popperjs" } }, "node_modules/@reach/alert-dialog": { - "version": "0.16.2", - "resolved": "https://registry.npmjs.org/@reach/alert-dialog/-/alert-dialog-0.16.2.tgz", - "integrity": "sha512-r38jO2AGgNAdgVUfeoCPdu+jJVw9px9mb24Z+uhejKe6xakNtiHHiFmKlZLytEpXuzQDh36U+AeSLyKfo0wA6g==", + "version": "0.18.0", + "resolved": "https://registry.npmjs.org/@reach/alert-dialog/-/alert-dialog-0.18.0.tgz", + "integrity": "sha512-F37h9LzqiCO8jUUfMFr+lG5VCbaVlGYQWuwiUoOqoI9oNMjrz0dQdmpqzXoK44TPyyvF8ad8S1OvRG5oK7bvzw==", "dependencies": { - "@reach/auto-id": "0.16.0", - "@reach/dialog": "0.16.2", - "@reach/utils": "0.16.0", - "invariant": "^2.2.4", - "prop-types": "^15.7.2", - "tslib": "^2.3.0" + "@reach/auto-id": "0.18.0", + "@reach/dialog": "0.18.0", + "@reach/polymorphic": "0.18.0", + "@reach/utils": "0.18.0", + "tiny-invariant": "^1.2.0" }, "peerDependencies": { "react": "^16.8.0 || 17.x", @@ -2942,12 +2965,11 @@ } }, "node_modules/@reach/auto-id": { - "version": "0.16.0", - "resolved": "https://registry.npmjs.org/@reach/auto-id/-/auto-id-0.16.0.tgz", - "integrity": "sha512-5ssbeP5bCkM39uVsfQCwBBL+KT8YColdnMN5/Eto6Rj7929ql95R3HZUOkKIvj7mgPtEb60BLQxd1P3o6cjbmg==", + "version": "0.18.0", + "resolved": "https://registry.npmjs.org/@reach/auto-id/-/auto-id-0.18.0.tgz", + "integrity": "sha512-XwY1IwhM7mkHZFghhjiqjQ6dstbOdpbFLdggeke75u8/8icT8uEHLbovFUgzKjy9qPvYwZIB87rLiR8WdtOXCg==", "dependencies": { - "@reach/utils": "0.16.0", - "tslib": "^2.3.0" + "@reach/utils": "0.18.0" }, "peerDependencies": { "react": "^16.8.0 || 17.x", @@ -2955,35 +2977,81 @@ } }, "node_modules/@reach/dialog": { - "version": "0.16.2", - "resolved": "https://registry.npmjs.org/@reach/dialog/-/dialog-0.16.2.tgz", - "integrity": "sha512-qq8oX0cROgTb8LjOKWzzNm4SqaN9b89lJHr7UyVo2aQ6WbeNzZBxqXhGywFP7dkR+hNqOJnrA59PXFWhfttA9A==", + "version": "0.18.0", + "resolved": "https://registry.npmjs.org/@reach/dialog/-/dialog-0.18.0.tgz", + "integrity": "sha512-hWhzmBK8VJj+yf6OivFqHFZIV4q9TISZrkPaglKE5oFYtrr75lxWjrBTA+BshL0r/FfKodvNtdT8yq4vj/6Gcw==", "dependencies": { - "@reach/portal": "0.16.2", - "@reach/utils": "0.16.0", - "prop-types": "^15.7.2", - "react-focus-lock": "^2.5.2", - "react-remove-scroll": "^2.4.3", - "tslib": "^2.3.0" + "@reach/polymorphic": "0.18.0", + "@reach/portal": "0.18.0", + "@reach/utils": "0.18.0", + "react-focus-lock": "2.5.2", + "react-remove-scroll": "2.4.3" }, "peerDependencies": { "react": "^16.8.0 || 17.x", "react-dom": "^16.8.0 || 17.x" } }, + "node_modules/@reach/dialog/node_modules/@types/react": { + "version": "17.0.52", + "resolved": "https://registry.npmjs.org/@types/react/-/react-17.0.52.tgz", + "integrity": "sha512-vwk8QqVODi0VaZZpDXQCmEmiOuyjEFPY7Ttaw5vjM112LOq37yz1CDJGrRJwA1fYEq4Iitd5rnjd1yWAc/bT+A==", + "optional": true, + "peer": true, + "dependencies": { + "@types/prop-types": "*", + "@types/scheduler": "*", + "csstype": "^3.0.2" + } + }, + "node_modules/@reach/dialog/node_modules/react-remove-scroll": { + "version": "2.4.3", + "resolved": "https://registry.npmjs.org/react-remove-scroll/-/react-remove-scroll-2.4.3.tgz", + "integrity": "sha512-lGWYXfV6jykJwbFpsuPdexKKzp96f3RbvGapDSIdcyGvHb7/eqyn46C7/6h+rUzYar1j5mdU+XECITHXCKBk9Q==", + "dependencies": { + "react-remove-scroll-bar": "^2.1.0", + "react-style-singleton": "^2.1.0", + "tslib": "^1.0.0", + "use-callback-ref": "^1.2.3", + "use-sidecar": "^1.0.1" + }, + "engines": { + "node": ">=8.5.0" + }, + "peerDependencies": { + "@types/react": "^16.8.0 || ^17.0.0", + "react": "^16.8.0 || ^17.0.0" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/@reach/dialog/node_modules/tslib": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", + "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==" + }, "node_modules/@reach/observe-rect": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/@reach/observe-rect/-/observe-rect-1.2.0.tgz", "integrity": "sha512-Ba7HmkFgfQxZqqaeIWWkNK0rEhpxVQHIoVyW1YDSkGsGIXzcaW4deC8B0pZrNSSyLTdIk7y+5olKt5+g0GmFIQ==" }, + "node_modules/@reach/polymorphic": { + "version": "0.18.0", + "resolved": "https://registry.npmjs.org/@reach/polymorphic/-/polymorphic-0.18.0.tgz", + "integrity": "sha512-N9iAjdMbE//6rryZZxAPLRorzDcGBnluf7YQij6XDLiMtfCj1noa7KyLpEc/5XCIB/EwhX3zCluFAwloBKdblA==", + "peerDependencies": { + "react": "^16.8.0 || 17.x" + } + }, "node_modules/@reach/portal": { - "version": "0.16.2", - "resolved": "https://registry.npmjs.org/@reach/portal/-/portal-0.16.2.tgz", - "integrity": "sha512-9ur/yxNkuVYTIjAcfi46LdKUvH0uYZPfEp4usWcpt6PIp+WDF57F/5deMe/uGi/B/nfDweQu8VVwuMVrCb97JQ==", + "version": "0.18.0", + "resolved": "https://registry.npmjs.org/@reach/portal/-/portal-0.18.0.tgz", + "integrity": "sha512-TImozRapd576ofRk30Le2L3lRTFXF1p47B182wnp5eMTdZa74JX138BtNGEPJFOyrMaVmguVF8SSwZ6a0fon1Q==", "dependencies": { - "@reach/utils": "0.16.0", - "tiny-warning": "^1.0.3", - "tslib": "^2.3.0" + "@reach/utils": "0.18.0" }, "peerDependencies": { "react": "^16.8.0 || 17.x", @@ -2991,15 +3059,12 @@ } }, "node_modules/@reach/rect": { - "version": "0.16.0", - "resolved": "https://registry.npmjs.org/@reach/rect/-/rect-0.16.0.tgz", - "integrity": "sha512-/qO9jQDzpOCdrSxVPR6l674mRHNTqfEjkaxZHluwJ/2qGUtYsA0GSZiF/+wX/yOWeBif1ycxJDa6HusAMJZC5Q==", + "version": "0.18.0", + "resolved": "https://registry.npmjs.org/@reach/rect/-/rect-0.18.0.tgz", + "integrity": "sha512-Xk8urN4NLn3F70da/DtByMow83qO6DF6vOxpLjuDBqud+kjKgxAU9vZMBSZJyH37+F8mZinRnHyXtlLn5njQOg==", "dependencies": { "@reach/observe-rect": "1.2.0", - "@reach/utils": "0.16.0", - "prop-types": "^15.7.2", - "tiny-warning": "^1.0.3", - "tslib": "^2.3.0" + "@reach/utils": "0.18.0" }, "peerDependencies": { "react": "^16.8.0 || 17.x", @@ -3007,18 +3072,16 @@ } }, "node_modules/@reach/tooltip": { - "version": "0.16.2", - "resolved": "https://registry.npmjs.org/@reach/tooltip/-/tooltip-0.16.2.tgz", - "integrity": "sha512-wtJPnbJ6l4pmudMpQHGU9v1NS4ncDgcwRNi9re9KsIdsM525zccZvHQLteBKYiaW4ib7k09t2dbwhyNU9oa0Iw==", + "version": "0.18.0", + "resolved": "https://registry.npmjs.org/@reach/tooltip/-/tooltip-0.18.0.tgz", + "integrity": "sha512-yugoTmTjB3qoMk/nUvcnw99MqpyE2TQMOXE29qnQhSqHriRwQhfftjXlTAGTSzsUJmbyms3A/1gQW0X61kjFZw==", "dependencies": { - "@reach/auto-id": "0.16.0", - "@reach/portal": "0.16.2", - "@reach/rect": "0.16.0", - "@reach/utils": "0.16.0", - "@reach/visually-hidden": "0.16.0", - "prop-types": "^15.7.2", - "tiny-warning": "^1.0.3", - "tslib": "^2.3.0" + "@reach/auto-id": "0.18.0", + "@reach/polymorphic": "0.18.0", + "@reach/portal": "0.18.0", + "@reach/rect": "0.18.0", + "@reach/utils": "0.18.0", + "@reach/visually-hidden": "0.18.0" }, "peerDependencies": { "react": "^16.8.0 || 17.x", @@ -3026,29 +3089,32 @@ } }, "node_modules/@reach/utils": { - "version": "0.16.0", - "resolved": "https://registry.npmjs.org/@reach/utils/-/utils-0.16.0.tgz", - "integrity": "sha512-PCggBet3qaQmwFNcmQ/GqHSefadAFyNCUekq9RrWoaU9hh/S4iaFgf2MBMdM47eQj5i/Bk0Mm07cP/XPFlkN+Q==", - "dependencies": { - "tiny-warning": "^1.0.3", - "tslib": "^2.3.0" - }, + "version": "0.18.0", + "resolved": "https://registry.npmjs.org/@reach/utils/-/utils-0.18.0.tgz", + "integrity": "sha512-KdVMdpTgDyK8FzdKO9SCpiibuy/kbv3pwgfXshTI6tEcQT1OOwj7BAksnzGC0rPz0UholwC+AgkqEl3EJX3M1A==", "peerDependencies": { "react": "^16.8.0 || 17.x", "react-dom": "^16.8.0 || 17.x" } }, "node_modules/@reach/visually-hidden": { - "version": "0.16.0", - "resolved": "https://registry.npmjs.org/@reach/visually-hidden/-/visually-hidden-0.16.0.tgz", - "integrity": "sha512-IIayZ3jzJtI5KfcfRVtOMFkw2ef/1dMT8D9BUuFcU2ORZAWLNvnzj1oXNoIfABKl5wtsLjY6SGmkYQ+tMPN8TA==", + "version": "0.18.0", + "resolved": "https://registry.npmjs.org/@reach/visually-hidden/-/visually-hidden-0.18.0.tgz", + "integrity": "sha512-NsJ3oeHJtPc6UOeV6MHMuzQ5sl1ouKhW85i3C0S7VM+klxVlYScBZ2J4UVnWB50A2c+evdVpCnld2YeuyYYwBw==", "dependencies": { - "prop-types": "^15.7.2", - "tslib": "^2.3.0" + "@reach/polymorphic": "0.18.0" }, "peerDependencies": { - "react": "^16.8.0 || 17.x", - "react-dom": "^16.8.0 || 17.x" + "react": "^16.8.0 || 17.x || 18.x", + "react-dom": "^16.8.0 || 17.x || 18.x" + } + }, + "node_modules/@remix-run/router": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/@remix-run/router/-/router-1.0.4.tgz", + "integrity": "sha512-gTL8H5USTAKOyVA4xczzDJnC3HMssdFa3tRlwBicXynx9XfiXwneHnYQogwSKpdCkjXISrEKSTtX62rLpNEVQg==", + "engines": { + "node": ">=14" } }, "node_modules/@rollup/plugin-babel": { @@ -3131,9 +3197,9 @@ "integrity": "sha512-oe5WJEDaVsW8fBlGT7udrSCgOwWfoYHQOmSpnh8X+0GXpqqcRCP8k4y+Dxb0taWJDPpB+rdDUtumIiBwkY9qGA==" }, "node_modules/@sinclair/typebox": { - "version": "0.24.19", - "resolved": "https://registry.npmjs.org/@sinclair/typebox/-/typebox-0.24.19.tgz", - "integrity": "sha512-gHJu8cdYTD5p4UqmQHrxaWrtb/jkH5imLXzuBypWhKzNkW0qfmgz+w1xaJccWVuJta1YYUdlDiPHXRTR4Ku0MQ==" + "version": "0.24.51", + "resolved": "https://registry.npmjs.org/@sinclair/typebox/-/typebox-0.24.51.tgz", + "integrity": "sha512-1P1OROm/rdubP5aFDSZQILU0vrLCJ4fvHt6EoqHEM+2D/G5MK3bIaymUKLit8Js9gbns5UyJnkP/TZROLw4tUA==" }, "node_modules/@sinonjs/commons": { "version": "1.8.3", @@ -3465,15 +3531,15 @@ } }, "node_modules/@testing-library/jest-dom": { - "version": "5.16.4", - "resolved": "https://registry.npmjs.org/@testing-library/jest-dom/-/jest-dom-5.16.4.tgz", - "integrity": "sha512-Gy+IoFutbMQcky0k+bqqumXZ1cTGswLsFqmNLzNdSKkU9KGV2u9oXhukCbbJ9/LRPKiqwxEE8VpV/+YZlfkPUA==", + "version": "5.16.5", + "resolved": "https://registry.npmjs.org/@testing-library/jest-dom/-/jest-dom-5.16.5.tgz", + "integrity": "sha512-N5ixQ2qKpi5OLYfwQmUb/5mSV9LneAcaUfp32pn4yCnpb8r/Yz0pXFPck21dIicKmi+ta5WRAknkZCfA8refMA==", "dependencies": { + "@adobe/css-tools": "^4.0.1", "@babel/runtime": "^7.9.2", "@types/testing-library__jest-dom": "^5.9.1", "aria-query": "^5.0.0", "chalk": "^3.0.0", - "css": "^3.0.0", "css.escape": "^1.5.1", "dom-accessibility-api": "^0.5.6", "lodash": "^4.17.15", @@ -3555,26 +3621,44 @@ } }, "node_modules/@testing-library/react": { - "version": "12.1.4", - "resolved": "https://registry.npmjs.org/@testing-library/react/-/react-12.1.4.tgz", - "integrity": "sha512-jiPKOm7vyUw311Hn/HlNQ9P8/lHNtArAx0PisXyFixDDvfl8DbD6EUdbshK5eqauvBSvzZd19itqQ9j3nferJA==", + "version": "12.1.5", + "resolved": "https://registry.npmjs.org/@testing-library/react/-/react-12.1.5.tgz", + "integrity": "sha512-OfTXCJUFgjd/digLUuPxa0+/3ZxsQmE7ub9kcbW/wi96Bh3o/p5vrETcBGfP17NWPGqeYYl5LTRpwyGoMC4ysg==", "dependencies": { "@babel/runtime": "^7.12.5", "@testing-library/dom": "^8.0.0", - "@types/react-dom": "*" + "@types/react-dom": "<18.0.0" }, "engines": { "node": ">=12" }, "peerDependencies": { - "react": "*", - "react-dom": "*" + "react": "<18.0.0", + "react-dom": "<18.0.0" + } + }, + "node_modules/@testing-library/react/node_modules/@types/react": { + "version": "17.0.52", + "resolved": "https://registry.npmjs.org/@types/react/-/react-17.0.52.tgz", + "integrity": "sha512-vwk8QqVODi0VaZZpDXQCmEmiOuyjEFPY7Ttaw5vjM112LOq37yz1CDJGrRJwA1fYEq4Iitd5rnjd1yWAc/bT+A==", + "dependencies": { + "@types/prop-types": "*", + "@types/scheduler": "*", + "csstype": "^3.0.2" + } + }, + "node_modules/@testing-library/react/node_modules/@types/react-dom": { + "version": "17.0.18", + "resolved": "https://registry.npmjs.org/@types/react-dom/-/react-dom-17.0.18.tgz", + "integrity": "sha512-rLVtIfbwyur2iFKykP2w0pl/1unw26b5td16d5xMgp7/yjTHomkyxPYChFoCr/FtEX1lN9wY6lFj1qvKdS5kDw==", + "dependencies": { + "@types/react": "^17" } }, "node_modules/@testing-library/user-event": { - "version": "14.2.3", - "resolved": "https://registry.npmjs.org/@testing-library/user-event/-/user-event-14.2.3.tgz", - "integrity": "sha512-07Ly+NsFDTvjNdvl5bLBA5oHeGIIHCKc7CniGuKnHrjvqcTPVqPEo4z6a8iYydZ0WvDA6ZA0fnhYrqCLbsm0+A==", + "version": "14.4.3", + "resolved": "https://registry.npmjs.org/@testing-library/user-event/-/user-event-14.4.3.tgz", + "integrity": "sha512-kCUc5MEwaEMakkO5x7aoD+DLi02ehmEM2QCGWvNqAS1dV/fAvORWEjnjsEIvml59M7Y5kCkWN6fCCyPOe8OL6Q==", "engines": { "node": ">=12", "npm": ">=6" @@ -3778,12 +3862,36 @@ } }, "node_modules/@types/jest": { - "version": "28.1.5", - "resolved": "https://registry.npmjs.org/@types/jest/-/jest-28.1.5.tgz", - "integrity": "sha512-TLAC2zXxGnohSP3GxgIyJn7yrTeRPDEyVFyCY1NE2wzg392auI+69uk5EPGjUXuhkq/K208J/TWpLG7J8ebIEQ==", + "version": "29.2.3", + "resolved": "https://registry.npmjs.org/@types/jest/-/jest-29.2.3.tgz", + "integrity": "sha512-6XwoEbmatfyoCjWRX7z0fKMmgYKe9+/HrviJ5k0X/tjJWHGAezZOfYaxqQKuzG/TvQyr+ktjm4jgbk0s4/oF2w==", + "dependencies": { + "expect": "^29.0.0", + "pretty-format": "^29.0.0" + } + }, + "node_modules/@types/jest/node_modules/@jest/types": { + "version": "29.3.1", + "resolved": "https://registry.npmjs.org/@jest/types/-/types-29.3.1.tgz", + "integrity": "sha512-d0S0jmmTpjnhCmNpApgX3jrUZgZ22ivKJRvL2lli5hpCRoNnp1f85r2/wpKfXuYu8E7Jjh1hGfhPyup1NM5AmA==", + "dependencies": { + "@jest/schemas": "^29.0.0", + "@types/istanbul-lib-coverage": "^2.0.0", + "@types/istanbul-reports": "^3.0.0", + "@types/node": "*", + "@types/yargs": "^17.0.8", + "chalk": "^4.0.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/@types/jest/node_modules/@types/yargs": { + "version": "17.0.15", + "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-17.0.15.tgz", + "integrity": "sha512-ZHc4W2dnEQPfhn06TBEdWaiUHEZAocYaiVMfwOipY5jcJt/251wVrKCBWBetGZWO5CF8tdb7L3DmdxVlZ2BOIg==", "dependencies": { - "jest-matcher-utils": "^28.0.0", - "pretty-format": "^28.0.0" + "@types/yargs-parser": "*" } }, "node_modules/@types/jest/node_modules/ansi-styles": { @@ -3832,11 +3940,26 @@ "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" }, "node_modules/@types/jest/node_modules/diff-sequences": { - "version": "28.1.1", - "resolved": "https://registry.npmjs.org/diff-sequences/-/diff-sequences-28.1.1.tgz", - "integrity": "sha512-FU0iFaH/E23a+a718l8Qa/19bF9p06kgE0KipMOMadwa3SjnaElKzPaUC0vnibs6/B/9ni97s61mcejk8W1fQw==", + "version": "29.3.1", + "resolved": "https://registry.npmjs.org/diff-sequences/-/diff-sequences-29.3.1.tgz", + "integrity": "sha512-hlM3QR272NXCi4pq+N4Kok4kOp6EsgOM3ZSpJI7Da3UAs+Ttsi8MRmB6trM/lhyzUxGfOgnpkHtgqm5Q/CTcfQ==", "engines": { - "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/@types/jest/node_modules/expect": { + "version": "29.3.1", + "resolved": "https://registry.npmjs.org/expect/-/expect-29.3.1.tgz", + "integrity": "sha512-gGb1yTgU30Q0O/tQq+z30KBWv24ApkMgFUpvKBkyLUBL68Wv8dHdJxTBZFl/iT8K/bqDHvUYRH6IIN3rToopPA==", + "dependencies": { + "@jest/expect-utils": "^29.3.1", + "jest-get-type": "^29.2.0", + "jest-matcher-utils": "^29.3.1", + "jest-message-util": "^29.3.1", + "jest-util": "^29.3.1" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, "node_modules/@types/jest/node_modules/has-flag": { @@ -3848,53 +3971,87 @@ } }, "node_modules/@types/jest/node_modules/jest-diff": { - "version": "28.1.3", - "resolved": "https://registry.npmjs.org/jest-diff/-/jest-diff-28.1.3.tgz", - "integrity": "sha512-8RqP1B/OXzjjTWkqMX67iqgwBVJRgCyKD3L9nq+6ZqJMdvjE8RgHktqZ6jNrkdMT+dJuYNI3rhQpxaz7drJHfw==", + "version": "29.3.1", + "resolved": "https://registry.npmjs.org/jest-diff/-/jest-diff-29.3.1.tgz", + "integrity": "sha512-vU8vyiO7568tmin2lA3r2DP8oRvzhvRcD4DjpXc6uGveQodyk7CKLhQlCSiwgx3g0pFaE88/KLZ0yaTWMc4Uiw==", "dependencies": { "chalk": "^4.0.0", - "diff-sequences": "^28.1.1", - "jest-get-type": "^28.0.2", - "pretty-format": "^28.1.3" + "diff-sequences": "^29.3.1", + "jest-get-type": "^29.2.0", + "pretty-format": "^29.3.1" }, "engines": { - "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, "node_modules/@types/jest/node_modules/jest-get-type": { - "version": "28.0.2", - "resolved": "https://registry.npmjs.org/jest-get-type/-/jest-get-type-28.0.2.tgz", - "integrity": "sha512-ioj2w9/DxSYHfOm5lJKCdcAmPJzQXmbM/Url3rhlghrPvT3tt+7a/+oXc9azkKmLvoiXjtV83bEWqi+vs5nlPA==", + "version": "29.2.0", + "resolved": "https://registry.npmjs.org/jest-get-type/-/jest-get-type-29.2.0.tgz", + "integrity": "sha512-uXNJlg8hKFEnDgFsrCjznB+sTxdkuqiCL6zMgA75qEbAJjJYTs9XPrvDctrEig2GDow22T/LvHgO57iJhXB/UA==", "engines": { - "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, "node_modules/@types/jest/node_modules/jest-matcher-utils": { - "version": "28.1.3", - "resolved": "https://registry.npmjs.org/jest-matcher-utils/-/jest-matcher-utils-28.1.3.tgz", - "integrity": "sha512-kQeJ7qHemKfbzKoGjHHrRKH6atgxMk8Enkk2iPQ3XwO6oE/KYD8lMYOziCkeSB9G4adPM4nR1DE8Tf5JeWH6Bw==", + "version": "29.3.1", + "resolved": "https://registry.npmjs.org/jest-matcher-utils/-/jest-matcher-utils-29.3.1.tgz", + "integrity": "sha512-fkRMZUAScup3txIKfMe3AIZZmPEjWEdsPJFK3AIy5qRohWqQFg1qrmKfYXR9qEkNc7OdAu2N4KPHibEmy4HPeQ==", + "dependencies": { + "chalk": "^4.0.0", + "jest-diff": "^29.3.1", + "jest-get-type": "^29.2.0", + "pretty-format": "^29.3.1" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/@types/jest/node_modules/jest-message-util": { + "version": "29.3.1", + "resolved": "https://registry.npmjs.org/jest-message-util/-/jest-message-util-29.3.1.tgz", + "integrity": "sha512-lMJTbgNcDm5z+6KDxWtqOFWlGQxD6XaYwBqHR8kmpkP+WWWG90I35kdtQHY67Ay5CSuydkTBbJG+tH9JShFCyA==", + "dependencies": { + "@babel/code-frame": "^7.12.13", + "@jest/types": "^29.3.1", + "@types/stack-utils": "^2.0.0", + "chalk": "^4.0.0", + "graceful-fs": "^4.2.9", + "micromatch": "^4.0.4", + "pretty-format": "^29.3.1", + "slash": "^3.0.0", + "stack-utils": "^2.0.3" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/@types/jest/node_modules/jest-util": { + "version": "29.3.1", + "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-29.3.1.tgz", + "integrity": "sha512-7YOVZaiX7RJLv76ZfHt4nbNEzzTRiMW/IiOG7ZOKmTXmoGBxUDefgMAxQubu6WPVqP5zSzAdZG0FfLcC7HOIFQ==", "dependencies": { + "@jest/types": "^29.3.1", + "@types/node": "*", "chalk": "^4.0.0", - "jest-diff": "^28.1.3", - "jest-get-type": "^28.0.2", - "pretty-format": "^28.1.3" + "ci-info": "^3.2.0", + "graceful-fs": "^4.2.9", + "picomatch": "^2.2.3" }, "engines": { - "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, "node_modules/@types/jest/node_modules/pretty-format": { - "version": "28.1.3", - "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-28.1.3.tgz", - "integrity": "sha512-8gFb/To0OmxHR9+ZTb14Df2vNxdGCX8g1xWGUTqUw5TiZvcQf5sHKObd5UcPyLLyowNwDAMTF3XWOG1B6mxl1Q==", + "version": "29.3.1", + "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-29.3.1.tgz", + "integrity": "sha512-FyLnmb1cYJV8biEIiRyzRFvs2lry7PPIvOqKVe1GCUEYg4YGmlx1qG9EJNMxArYm7piII4qb8UV1Pncq5dxmcg==", "dependencies": { - "@jest/schemas": "^28.1.3", - "ansi-regex": "^5.0.1", + "@jest/schemas": "^29.0.0", "ansi-styles": "^5.0.0", "react-is": "^18.0.0" }, "engines": { - "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, "node_modules/@types/jest/node_modules/pretty-format/node_modules/ansi-styles": { @@ -3935,9 +4092,9 @@ "integrity": "sha1-7ihweulOEdK4J7y+UnC86n8+ce4=" }, "node_modules/@types/lodash": { - "version": "4.14.182", - "resolved": "https://registry.npmjs.org/@types/lodash/-/lodash-4.14.182.tgz", - "integrity": "sha512-/THyiqyQAP9AfARo4pF+aCGcyiQ94tX/Is2I7HofNRqoYLgN1PBoOWu2/zTA5zMxzP5EFutMtWtGAFRKUe961Q==" + "version": "4.14.191", + "resolved": "https://registry.npmjs.org/@types/lodash/-/lodash-4.14.191.tgz", + "integrity": "sha512-BdZ5BCCvho3EIXw6wUCXHe7rS53AIDPLE+JzwgT+OsJk53oBfbSmZZ7CX4VaRoN78N+TJpFi9QPlfIVNmJYWxQ==" }, "node_modules/@types/mdast": { "version": "3.0.10", @@ -3963,9 +4120,9 @@ "integrity": "sha512-iiUgKzV9AuaEkZqkOLDIvlQiL6ltuZd9tGcW3gwpnX8JbuiuhFlEGmmFXEXkN50Cvq7Os88IY2v0dkDqXYWVgA==" }, "node_modules/@types/node": { - "version": "18.0.4", - "resolved": "https://registry.npmjs.org/@types/node/-/node-18.0.4.tgz", - "integrity": "sha512-M0+G6V0Y4YV8cqzHssZpaNCqvYwlCiulmm0PwpNLF55r/+cT8Ol42CHRU1SEaYFH2rTwiiE1aYg/2g2rrtGdPA==" + "version": "18.11.10", + "resolved": "https://registry.npmjs.org/@types/node/-/node-18.11.10.tgz", + "integrity": "sha512-juG3RWMBOqcOuXC643OAdSA525V44cVgGV6dUDuiFtss+8Fk5x1hI93Rsld43VeJVIeqlP9I7Fn9/qaVqoEAuQ==" }, "node_modules/@types/parse-json": { "version": "4.0.0", @@ -3998,9 +4155,9 @@ "integrity": "sha512-EEhsLsD6UsDM1yFhAvy0Cjr6VwmpMWqFBCb9w07wVugF7w9nfajxLuVmngTIpgS6svCnm6Vaw+MZhoDCKnOfsw==" }, "node_modules/@types/react": { - "version": "18.0.15", - "resolved": "https://registry.npmjs.org/@types/react/-/react-18.0.15.tgz", - "integrity": "sha512-iz3BtLuIYH1uWdsv6wXYdhozhqj20oD4/Hk2DNXIn1kFsmp9x8d9QB6FnPhfkbhd2PgEONt9Q1x/ebkwjfFLow==", + "version": "18.0.26", + "resolved": "https://registry.npmjs.org/@types/react/-/react-18.0.26.tgz", + "integrity": "sha512-hCR3PJQsAIXyxhTNSiDFY//LhnMZWpNNr5etoCqx/iUfGc5gXWtQR2Phl908jVR6uPXacojQWTg4qRpkxTuGug==", "dependencies": { "@types/prop-types": "*", "@types/scheduler": "*", @@ -4008,9 +4165,9 @@ } }, "node_modules/@types/react-dom": { - "version": "18.0.6", - "resolved": "https://registry.npmjs.org/@types/react-dom/-/react-dom-18.0.6.tgz", - "integrity": "sha512-/5OFZgfIPSwy+YuIBP/FgJnQnsxhZhjjrnxudMddeblOouIodEQ75X14Rr4wGSG/bknL+Omy9iWlLo1u/9GzAA==", + "version": "18.0.9", + "resolved": "https://registry.npmjs.org/@types/react-dom/-/react-dom-18.0.9.tgz", + "integrity": "sha512-qnVvHxASt/H7i+XG1U1xMiY5t+IHcPGUK7TDMDzom08xa7e86eCeKOiLZezwCKVxJn6NEiiy2ekgX8aQssjIKg==", "dependencies": { "@types/react": "*" } @@ -4844,17 +5001,6 @@ "resolved": "https://registry.npmjs.org/atoa/-/atoa-1.0.0.tgz", "integrity": "sha1-DMDpGkgOc4+SPrwQNnZHF3mzSkk=" }, - "node_modules/atob": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/atob/-/atob-2.1.2.tgz", - "integrity": "sha512-Wm6ukoaOGJi/73p/cl2GvLjTI5JM1k/O14isD73YML8StrH/7/lRFgmg8nICZgD3bZZvjwCGxtMOD3wWNAu8cg==", - "bin": { - "atob": "bin/atob.js" - }, - "engines": { - "node": ">= 4.5.0" - } - }, "node_modules/autocompleter": { "version": "6.1.2", "resolved": "https://registry.npmjs.org/autocompleter/-/autocompleter-6.1.2.tgz", @@ -5388,15 +5534,21 @@ "integrity": "sha1-aN/1++YMUes3cl6p4+0xDcwed24=" }, "node_modules/bootstrap": { - "version": "5.1.3", - "resolved": "https://registry.npmjs.org/bootstrap/-/bootstrap-5.1.3.tgz", - "integrity": "sha512-fcQztozJ8jToQWXxVuEyXWW+dSo8AiXWKwiSSrKWsRB/Qt+Ewwza+JWoLKiTuQLaEPhdNAJ7+Dosc9DOIqNy7Q==", - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/bootstrap" - }, + "version": "5.2.3", + "resolved": "https://registry.npmjs.org/bootstrap/-/bootstrap-5.2.3.tgz", + "integrity": "sha512-cEKPM+fwb3cT8NzQZYEu4HilJ3anCrWqh3CHAok1p9jXqMPsPTBhU25fBckEJHJ/p+tTxTFTsFQGM+gaHpi3QQ==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/twbs" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/bootstrap" + } + ], "peerDependencies": { - "@popperjs/core": "^2.10.2" + "@popperjs/core": "^2.11.6" } }, "node_modules/brace-expansion": { @@ -6026,16 +6178,6 @@ "node": ">=8" } }, - "node_modules/css": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/css/-/css-3.0.0.tgz", - "integrity": "sha512-DG9pFfwOrzc+hawpmqX/dHYHJG+Bsdb0klhyi1sDneOgGOXy9wQIC8hzyVp1e4NRYDBdxcylvywPkkXCHAzTyQ==", - "dependencies": { - "inherits": "^2.0.4", - "source-map": "^0.6.1", - "source-map-resolve": "^0.6.0" - } - }, "node_modules/css-blank-pseudo": { "version": "3.0.3", "resolved": "https://registry.npmjs.org/css-blank-pseudo/-/css-blank-pseudo-3.0.3.tgz", @@ -6273,14 +6415,6 @@ "resolved": "https://registry.npmjs.org/css.escape/-/css.escape-1.5.1.tgz", "integrity": "sha1-QuJ9T6BK4y+TGktNQZH6nN3ul8s=" }, - "node_modules/css/node_modules/source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/cssdb": { "version": "6.3.1", "resolved": "https://registry.npmjs.org/cssdb/-/cssdb-6.3.1.tgz", @@ -6499,14 +6633,6 @@ "url": "https://github.com/sponsors/wooorm" } }, - "node_modules/decode-uri-component": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/decode-uri-component/-/decode-uri-component-0.2.0.tgz", - "integrity": "sha1-6zkTMzRYd1y4TNGh+uBiEGu4dUU=", - "engines": { - "node": ">=0.10" - } - }, "node_modules/dedent": { "version": "0.7.0", "resolved": "https://registry.npmjs.org/dedent/-/dedent-0.7.0.tgz", @@ -8171,9 +8297,9 @@ "integrity": "sha512-WIWGi2L3DyTUvUrwRKgGi9TwxQMUEqPOPQBVi71R96jZXJdFskXEmf54BoZaS1kknGODoIGASGEzBUYdyMCBJg==" }, "node_modules/focus-lock": { - "version": "0.11.2", - "resolved": "https://registry.npmjs.org/focus-lock/-/focus-lock-0.11.2.tgz", - "integrity": "sha512-pZ2bO++NWLHhiKkgP1bEXHhR1/OjVcSvlCJ98aNJDFeb7H5OOQaO+SKOZle6041O9rv2tmbrO4JzClAvDUHf0g==", + "version": "0.9.2", + "resolved": "https://registry.npmjs.org/focus-lock/-/focus-lock-0.9.2.tgz", + "integrity": "sha512-YtHxjX7a0IC0ZACL5wsX8QdncXofWpGPNoVMuI/nZUrPGp6LmNI6+D5j0pPj+v8Kw5EpweA+T5yImK0rnWf7oQ==", "dependencies": { "tslib": "^2.0.3" }, @@ -8769,14 +8895,6 @@ "he": "bin/he" } }, - "node_modules/history": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/history/-/history-5.3.0.tgz", - "integrity": "sha512-ZqaKwjjrAYUYfLG+htGaIIZ4nioX2L70ZUMIFysS3xvBsSG4x/n1V6TXV3N8ZYNuFGlDirFg32T7B6WOUPDYcQ==", - "dependencies": { - "@babel/runtime": "^7.7.6" - } - }, "node_modules/hoopy": { "version": "0.1.4", "resolved": "https://registry.npmjs.org/hoopy/-/hoopy-0.1.4.tgz", @@ -15103,31 +15221,25 @@ "integrity": "sha512-/6UZ2qgEyH2aqzYZgQPxEnz33NJ2gNsnHA2o5+o4wW9bLM/JYQitNP9xPhsXwC08hMMovfGe/8retsdDsczPRg==" }, "node_modules/react-focus-lock": { - "version": "2.9.1", - "resolved": "https://registry.npmjs.org/react-focus-lock/-/react-focus-lock-2.9.1.tgz", - "integrity": "sha512-pSWOQrUmiKLkffPO6BpMXN7SNKXMsuOakl652IBuALAu1esk+IcpJyM+ALcYzPTTFz1rD0R54aB9A4HuP5t1Wg==", + "version": "2.5.2", + "resolved": "https://registry.npmjs.org/react-focus-lock/-/react-focus-lock-2.5.2.tgz", + "integrity": "sha512-WzpdOnEqjf+/A3EH9opMZWauag7gV0BxFl+EY4ElA4qFqYsUsBLnmo2sELbN5OC30S16GAWMy16B9DLPpdJKAQ==", "dependencies": { "@babel/runtime": "^7.0.0", - "focus-lock": "^0.11.2", + "focus-lock": "^0.9.1", "prop-types": "^15.6.2", - "react-clientside-effect": "^1.2.6", - "use-callback-ref": "^1.3.0", - "use-sidecar": "^1.1.2" + "react-clientside-effect": "^1.2.5", + "use-callback-ref": "^1.2.5", + "use-sidecar": "^1.0.5" }, "peerDependencies": { - "@types/react": "^16.8.0 || ^17.0.0 || ^18.0.0", - "react": "^16.8.0 || ^17.0.0 || ^18.0.0" - }, - "peerDependenciesMeta": { - "@types/react": { - "optional": true - } + "react": "^16.8.0 || ^17.0.0" } }, "node_modules/react-idle-timer": { - "version": "5.4.1", - "resolved": "https://registry.npmjs.org/react-idle-timer/-/react-idle-timer-5.4.1.tgz", - "integrity": "sha512-Pn0ede5OBeUxkIdnGevKAcVtdMnzRzFgBI6k2DC3gDbDCqRSePblxKH6Lbb0ncLzwaw9hnZfe3/Z8Bj1HA8khA==", + "version": "5.4.2", + "resolved": "https://registry.npmjs.org/react-idle-timer/-/react-idle-timer-5.4.2.tgz", + "integrity": "sha512-ofCS/qpFjm6ZguEyePvtf9YMDnLj7zZfeLXRWGRpsC6Ga47H4dm7EvoUW8MsozGEGy8zCvPK0Sk6YuAnwLEzRQ==", "peerDependencies": { "react": ">=16", "react-dom": ">=16" @@ -15139,9 +15251,9 @@ "integrity": "sha512-w2GsyukL62IJnlaff/nRegPQR94C/XXamvMWmSHRJ4y7Ts/4ocGRmTHvOs8PSE6pB3dWOrD/nueuU5sduBsQ4w==" }, "node_modules/react-markdown": { - "version": "8.0.3", - "resolved": "https://registry.npmjs.org/react-markdown/-/react-markdown-8.0.3.tgz", - "integrity": "sha512-We36SfqaKoVNpN1QqsZwWSv/OZt5J15LNgTLWynwAN5b265hrQrsjMtlRNwUvS+YyR3yDM8HpTNc4pK9H/Gc0A==", + "version": "8.0.4", + "resolved": "https://registry.npmjs.org/react-markdown/-/react-markdown-8.0.4.tgz", + "integrity": "sha512-2oxHa6oDxc1apg/Gnc1Goh06t3B617xeywqI/92wmDV9FELI6ayRkwge7w7DoEqM0gRpZGTNU6xQG+YpJISnVg==", "dependencies": { "@types/hast": "^2.0.0", "@types/prop-types": "^15.0.0", @@ -15181,34 +15293,10 @@ "node": ">=0.10.0" } }, - "node_modules/react-remove-scroll": { - "version": "2.5.5", - "resolved": "https://registry.npmjs.org/react-remove-scroll/-/react-remove-scroll-2.5.5.tgz", - "integrity": "sha512-ImKhrzJJsyXJfBZ4bzu8Bwpka14c/fQt0k+cyFp/PBhTfyDnU5hjOtM4AG/0AMyy8oKzOTR0lDgJIM7pYXI0kw==", - "dependencies": { - "react-remove-scroll-bar": "^2.3.3", - "react-style-singleton": "^2.2.1", - "tslib": "^2.1.0", - "use-callback-ref": "^1.3.0", - "use-sidecar": "^1.1.2" - }, - "engines": { - "node": ">=10" - }, - "peerDependencies": { - "@types/react": "^16.8.0 || ^17.0.0 || ^18.0.0", - "react": "^16.8.0 || ^17.0.0 || ^18.0.0" - }, - "peerDependenciesMeta": { - "@types/react": { - "optional": true - } - } - }, "node_modules/react-remove-scroll-bar": { - "version": "2.3.3", - "resolved": "https://registry.npmjs.org/react-remove-scroll-bar/-/react-remove-scroll-bar-2.3.3.tgz", - "integrity": "sha512-i9GMNWwpz8XpUpQ6QlevUtFjHGqnPG4Hxs+wlIJntu/xcsZVEpJcIV71K3ZkqNy2q3GfgvkD7y6t/Sv8ofYSbw==", + "version": "2.3.4", + "resolved": "https://registry.npmjs.org/react-remove-scroll-bar/-/react-remove-scroll-bar-2.3.4.tgz", + "integrity": "sha512-63C4YQBUt0m6ALadE9XV56hV8BgJWDmmTPY758iIJjfQKt2nYwoUrPk0LXRXcB/yIj82T1/Ixfdpdk68LwIB0A==", "dependencies": { "react-style-singleton": "^2.2.1", "tslib": "^2.0.0" @@ -15227,23 +15315,29 @@ } }, "node_modules/react-router": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/react-router/-/react-router-6.3.0.tgz", - "integrity": "sha512-7Wh1DzVQ+tlFjkeo+ujvjSqSJmkt1+8JO+T5xklPlgrh70y7ogx75ODRW0ThWhY7S+6yEDks8TYrtQe/aoboBQ==", + "version": "6.4.4", + "resolved": "https://registry.npmjs.org/react-router/-/react-router-6.4.4.tgz", + "integrity": "sha512-SA6tSrUCRfuLWeYsTJDuriRqfFIsrSvuH7SqAJHegx9ZgxadE119rU8oOX/rG5FYEthpdEaEljdjDlnBxvfr+Q==", "dependencies": { - "history": "^5.2.0" + "@remix-run/router": "1.0.4" + }, + "engines": { + "node": ">=14" }, "peerDependencies": { "react": ">=16.8" } }, "node_modules/react-router-dom": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/react-router-dom/-/react-router-dom-6.3.0.tgz", - "integrity": "sha512-uaJj7LKytRxZNQV8+RbzJWnJ8K2nPsOOEuX7aQstlMZKQT0164C+X2w6bnkqU3sjtLvpd5ojrezAyfZ1+0sStw==", + "version": "6.4.4", + "resolved": "https://registry.npmjs.org/react-router-dom/-/react-router-dom-6.4.4.tgz", + "integrity": "sha512-0Axverhw5d+4SBhLqLpzPhNkmv7gahUwlUVIOrRLGJ4/uwt30JVajVJXqv2Qr/LCwyvHhQc7YyK1Do8a9Jj7qA==", "dependencies": { - "history": "^5.2.0", - "react-router": "6.3.0" + "@remix-run/router": "1.0.4", + "react-router": "6.4.4" + }, + "engines": { + "node": ">=14" }, "peerDependencies": { "react": ">=16.8", @@ -16204,16 +16298,6 @@ "webpack": "^5.0.0" } }, - "node_modules/source-map-resolve": { - "version": "0.6.0", - "resolved": "https://registry.npmjs.org/source-map-resolve/-/source-map-resolve-0.6.0.tgz", - "integrity": "sha512-KXBr9d/fO/bWo97NXsPIAW1bFSBOuCnjbNTBMO7N59hsv5i9yzRDfcYwwt0l04+VqnKC+EwzvJZIP/qkuMgR/w==", - "deprecated": "See https://github.com/lydell/source-map-resolve#deprecated", - "dependencies": { - "atob": "^2.1.2", - "decode-uri-component": "^0.2.0" - } - }, "node_modules/source-map-support": { "version": "0.5.21", "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.21.tgz", @@ -16937,7 +17021,7 @@ "node_modules/text-mask-addons": { "version": "3.8.0", "resolved": "https://registry.npmjs.org/text-mask-addons/-/text-mask-addons-3.8.0.tgz", - "integrity": "sha1-F7Ye9mWk82gR8uofAaIjtL5hqyY=" + "integrity": "sha512-VSZSdc/tKn4zGxgpJ+uNBzoW1t472AoAFIlbw1K7hSNXz0DfSBYDJNRxLqgxOfWw1BY2z6DQpm7g0sYZn5qLpg==" }, "node_modules/text-table": { "version": "0.2.0", @@ -16964,10 +17048,10 @@ "resolved": "https://registry.npmjs.org/timsort/-/timsort-0.3.0.tgz", "integrity": "sha1-QFQRqOfmM5/mTbmiNN4R3DHgK9Q=" }, - "node_modules/tiny-warning": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/tiny-warning/-/tiny-warning-1.0.3.tgz", - "integrity": "sha512-lBN9zLN/oAf68o3zNXYrdCt1kP8WsiGW8Oo2ka41b2IM5JL/S1CTyX1rW0mb/zSuJun0ZUrDxx4sqvYS2FWzPA==" + "node_modules/tiny-invariant": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/tiny-invariant/-/tiny-invariant-1.3.1.tgz", + "integrity": "sha512-AD5ih2NlSssTCwsMznbvwMZpJ1cbhkGd2uueNxzv2jDlEeZdU04JQfRnggJQ8DrcVBGjAsCKwFBbDlVNtEMlzw==" }, "node_modules/tippy.js": { "version": "6.3.7", @@ -17184,9 +17268,9 @@ } }, "node_modules/typescript": { - "version": "4.7.4", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.7.4.tgz", - "integrity": "sha512-C0WQT0gezHuw6AdY1M2jxUO83Rjf0HP7Sk1DtXj6j1EwkQNZrHAg2XPWlq62oqEhYvONq5pkC2Y9oPljWToLmQ==", + "version": "4.9.3", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.9.3.tgz", + "integrity": "sha512-CIfGzTelbKNEnLpLdGFgdyKhG23CKdKgQPOBc+OUNrkJ2vr+KSzsSV5kq5iWhEQbok+quxgGzrAtGWCyU7tHnA==", "bin": { "tsc": "bin/tsc", "tsserver": "bin/tsserver" @@ -17643,9 +17727,9 @@ } }, "node_modules/web-vitals": { - "version": "2.1.4", - "resolved": "https://registry.npmjs.org/web-vitals/-/web-vitals-2.1.4.tgz", - "integrity": "sha512-sVWcwhU5mX6crfI5Vd2dC4qchyTqxV8URinzt25XqVh+bHEPGH4C3NPrNionCP7Obx59wrYEbNlw4Z8sjALzZg==" + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/web-vitals/-/web-vitals-3.1.0.tgz", + "integrity": "sha512-zCeQ+bOjWjJbXv5ZL0r8Py3XP2doCQMZXNKlBGfUjPAVZWokApdeF/kFlK1peuKlCt8sL9TFkKzyXE9/cmNJQA==" }, "node_modules/webidl-conversions": { "version": "6.1.0", @@ -18549,6 +18633,11 @@ } }, "dependencies": { + "@adobe/css-tools": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/@adobe/css-tools/-/css-tools-4.0.1.tgz", + "integrity": "sha512-+u76oB43nOHrF4DDWRLWDCtci7f3QJoEBigemIdIeTi1ODqjx6Tad9NCVnPRwewWlKkVab5PlK8DCtPTyX7S8g==" + }, "@ampproject/remapping": { "version": "2.1.2", "resolved": "https://registry.npmjs.org/@ampproject/remapping/-/remapping-2.1.2.tgz", @@ -19931,15 +20020,15 @@ } }, "@formio/react": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/@formio/react/-/react-5.2.0.tgz", - "integrity": "sha512-0qKm8e2ojMwkVOgvbC9YSJvPuF52swn7wQJs21Y7amtph08RH/JgwPn2alQMcPPDuuYFU8Dpo2qy0X69tJfFPw==", + "version": "5.2.3", + "resolved": "https://registry.npmjs.org/@formio/react/-/react-5.2.3.tgz", + "integrity": "sha512-4ET7UZfDkdV/k7o7+NO85X2eUp5J8pVFime1chKaQC50YK127fHScBLLEknWVuIY4jUA1yyjwJ2oIkKXJRkKUQ==", "requires": { "babel-polyfill": "^6.26.0", - "core-js": "^3.19.3", + "core-js": "^3.21.1", "eventemitter2": "^6.4.5", "lodash": "^4.17.21", - "prop-types": "^15.7.2" + "prop-types": "^15.8.1" } }, "@formio/semantic": { @@ -19948,9 +20037,9 @@ "integrity": "sha512-RwMEVXkyz+B6RivflrrKIqvvnGR/eZDLQs74u67StcrzO6n3/5D2J8XqTQRSUzQzr5QV6Wq0eZ51z/+mGm6THw==" }, "@formio/uswds": { - "version": "2.4.6", - "resolved": "https://registry.npmjs.org/@formio/uswds/-/uswds-2.4.6.tgz", - "integrity": "sha512-FTnwiHDroOP+msMYSog1IB0Gr4G2Tzgqx2nov/P9RaQ03hQ3NxN+DlzoSYcZkRqiEfMq7T8ge96GaECVoU9fDA==" + "version": "2.4.8", + "resolved": "https://registry.npmjs.org/@formio/uswds/-/uswds-2.4.8.tgz", + "integrity": "sha512-sBEwGxbcs52w9yZQV2Bg8Z89e5aV4fqH1b+UxeM31KduXlqLuG7KHMbd6ZA8ifyUiR8bGwBoZXGHSlXhTIlgMQ==" }, "@formio/vanilla-text-mask": { "version": "5.1.1", @@ -20178,6 +20267,21 @@ "jest-mock": "^27.5.1" } }, + "@jest/expect-utils": { + "version": "29.3.1", + "resolved": "https://registry.npmjs.org/@jest/expect-utils/-/expect-utils-29.3.1.tgz", + "integrity": "sha512-wlrznINZI5sMjwvUoLVk617ll/UYfGIZNxmbU+Pa7wmkL4vYzhV9R2pwVqUh4NWWuLQWkI8+8mOkxs//prKQ3g==", + "requires": { + "jest-get-type": "^29.2.0" + }, + "dependencies": { + "jest-get-type": { + "version": "29.2.0", + "resolved": "https://registry.npmjs.org/jest-get-type/-/jest-get-type-29.2.0.tgz", + "integrity": "sha512-uXNJlg8hKFEnDgFsrCjznB+sTxdkuqiCL6zMgA75qEbAJjJYTs9XPrvDctrEig2GDow22T/LvHgO57iJhXB/UA==" + } + } + }, "@jest/fake-timers": { "version": "27.5.1", "resolved": "https://registry.npmjs.org/@jest/fake-timers/-/fake-timers-27.5.1.tgz", @@ -20284,9 +20388,9 @@ } }, "@jest/schemas": { - "version": "28.1.3", - "resolved": "https://registry.npmjs.org/@jest/schemas/-/schemas-28.1.3.tgz", - "integrity": "sha512-/l/VWsdt/aBXgjshLWOFyFt3IVdYypu5y2Wn2rOO1un6nkqIn8SLXzgIMYXFyYsRWDyF5EthmKJMIdJvk08grg==", + "version": "29.0.0", + "resolved": "https://registry.npmjs.org/@jest/schemas/-/schemas-29.0.0.tgz", + "integrity": "sha512-3Ab5HgYIIAnS0HjqJHQYZS+zXc4tUmTmBH3z83ajI6afXp8X3ZtdLX+nXx+I7LNkJD7uN9LAVhgnjDgZa2z0kA==", "requires": { "@sinclair/typebox": "^0.24.1" } @@ -20530,43 +20634,71 @@ } }, "@popperjs/core": { - "version": "2.11.4", - "resolved": "https://registry.npmjs.org/@popperjs/core/-/core-2.11.4.tgz", - "integrity": "sha512-q/ytXxO5NKvyT37pmisQAItCFqA7FD/vNb8dgaJy3/630Fsc+Mz9/9f2SziBoIZ30TJooXyTwZmhi1zjXmObYg==" + "version": "2.11.6", + "resolved": "https://registry.npmjs.org/@popperjs/core/-/core-2.11.6.tgz", + "integrity": "sha512-50/17A98tWUfQ176raKiOGXuYpLyyVMkxxG6oylzL3BPOlA6ADGdK7EYunSa4I064xerltq9TGXs8HmOk5E+vw==" }, "@reach/alert-dialog": { - "version": "0.16.2", - "resolved": "https://registry.npmjs.org/@reach/alert-dialog/-/alert-dialog-0.16.2.tgz", - "integrity": "sha512-r38jO2AGgNAdgVUfeoCPdu+jJVw9px9mb24Z+uhejKe6xakNtiHHiFmKlZLytEpXuzQDh36U+AeSLyKfo0wA6g==", + "version": "0.18.0", + "resolved": "https://registry.npmjs.org/@reach/alert-dialog/-/alert-dialog-0.18.0.tgz", + "integrity": "sha512-F37h9LzqiCO8jUUfMFr+lG5VCbaVlGYQWuwiUoOqoI9oNMjrz0dQdmpqzXoK44TPyyvF8ad8S1OvRG5oK7bvzw==", "requires": { - "@reach/auto-id": "0.16.0", - "@reach/dialog": "0.16.2", - "@reach/utils": "0.16.0", - "invariant": "^2.2.4", - "prop-types": "^15.7.2", - "tslib": "^2.3.0" + "@reach/auto-id": "0.18.0", + "@reach/dialog": "0.18.0", + "@reach/polymorphic": "0.18.0", + "@reach/utils": "0.18.0", + "tiny-invariant": "^1.2.0" } }, "@reach/auto-id": { - "version": "0.16.0", - "resolved": "https://registry.npmjs.org/@reach/auto-id/-/auto-id-0.16.0.tgz", - "integrity": "sha512-5ssbeP5bCkM39uVsfQCwBBL+KT8YColdnMN5/Eto6Rj7929ql95R3HZUOkKIvj7mgPtEb60BLQxd1P3o6cjbmg==", + "version": "0.18.0", + "resolved": "https://registry.npmjs.org/@reach/auto-id/-/auto-id-0.18.0.tgz", + "integrity": "sha512-XwY1IwhM7mkHZFghhjiqjQ6dstbOdpbFLdggeke75u8/8icT8uEHLbovFUgzKjy9qPvYwZIB87rLiR8WdtOXCg==", "requires": { - "@reach/utils": "0.16.0", - "tslib": "^2.3.0" + "@reach/utils": "0.18.0" } }, "@reach/dialog": { - "version": "0.16.2", - "resolved": "https://registry.npmjs.org/@reach/dialog/-/dialog-0.16.2.tgz", - "integrity": "sha512-qq8oX0cROgTb8LjOKWzzNm4SqaN9b89lJHr7UyVo2aQ6WbeNzZBxqXhGywFP7dkR+hNqOJnrA59PXFWhfttA9A==", + "version": "0.18.0", + "resolved": "https://registry.npmjs.org/@reach/dialog/-/dialog-0.18.0.tgz", + "integrity": "sha512-hWhzmBK8VJj+yf6OivFqHFZIV4q9TISZrkPaglKE5oFYtrr75lxWjrBTA+BshL0r/FfKodvNtdT8yq4vj/6Gcw==", "requires": { - "@reach/portal": "0.16.2", - "@reach/utils": "0.16.0", - "prop-types": "^15.7.2", - "react-focus-lock": "^2.5.2", - "react-remove-scroll": "^2.4.3", - "tslib": "^2.3.0" + "@reach/polymorphic": "0.18.0", + "@reach/portal": "0.18.0", + "@reach/utils": "0.18.0", + "react-focus-lock": "2.5.2", + "react-remove-scroll": "2.4.3" + }, + "dependencies": { + "@types/react": { + "version": "17.0.52", + "resolved": "https://registry.npmjs.org/@types/react/-/react-17.0.52.tgz", + "integrity": "sha512-vwk8QqVODi0VaZZpDXQCmEmiOuyjEFPY7Ttaw5vjM112LOq37yz1CDJGrRJwA1fYEq4Iitd5rnjd1yWAc/bT+A==", + "optional": true, + "peer": true, + "requires": { + "@types/prop-types": "*", + "@types/scheduler": "*", + "csstype": "^3.0.2" + } + }, + "react-remove-scroll": { + "version": "2.4.3", + "resolved": "https://registry.npmjs.org/react-remove-scroll/-/react-remove-scroll-2.4.3.tgz", + "integrity": "sha512-lGWYXfV6jykJwbFpsuPdexKKzp96f3RbvGapDSIdcyGvHb7/eqyn46C7/6h+rUzYar1j5mdU+XECITHXCKBk9Q==", + "requires": { + "react-remove-scroll-bar": "^2.1.0", + "react-style-singleton": "^2.1.0", + "tslib": "^1.0.0", + "use-callback-ref": "^1.2.3", + "use-sidecar": "^1.0.1" + } + }, + "tslib": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", + "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==" + } } }, "@reach/observe-rect": { @@ -20574,61 +20706,61 @@ "resolved": "https://registry.npmjs.org/@reach/observe-rect/-/observe-rect-1.2.0.tgz", "integrity": "sha512-Ba7HmkFgfQxZqqaeIWWkNK0rEhpxVQHIoVyW1YDSkGsGIXzcaW4deC8B0pZrNSSyLTdIk7y+5olKt5+g0GmFIQ==" }, + "@reach/polymorphic": { + "version": "0.18.0", + "resolved": "https://registry.npmjs.org/@reach/polymorphic/-/polymorphic-0.18.0.tgz", + "integrity": "sha512-N9iAjdMbE//6rryZZxAPLRorzDcGBnluf7YQij6XDLiMtfCj1noa7KyLpEc/5XCIB/EwhX3zCluFAwloBKdblA==", + "requires": {} + }, "@reach/portal": { - "version": "0.16.2", - "resolved": "https://registry.npmjs.org/@reach/portal/-/portal-0.16.2.tgz", - "integrity": "sha512-9ur/yxNkuVYTIjAcfi46LdKUvH0uYZPfEp4usWcpt6PIp+WDF57F/5deMe/uGi/B/nfDweQu8VVwuMVrCb97JQ==", + "version": "0.18.0", + "resolved": "https://registry.npmjs.org/@reach/portal/-/portal-0.18.0.tgz", + "integrity": "sha512-TImozRapd576ofRk30Le2L3lRTFXF1p47B182wnp5eMTdZa74JX138BtNGEPJFOyrMaVmguVF8SSwZ6a0fon1Q==", "requires": { - "@reach/utils": "0.16.0", - "tiny-warning": "^1.0.3", - "tslib": "^2.3.0" + "@reach/utils": "0.18.0" } }, "@reach/rect": { - "version": "0.16.0", - "resolved": "https://registry.npmjs.org/@reach/rect/-/rect-0.16.0.tgz", - "integrity": "sha512-/qO9jQDzpOCdrSxVPR6l674mRHNTqfEjkaxZHluwJ/2qGUtYsA0GSZiF/+wX/yOWeBif1ycxJDa6HusAMJZC5Q==", + "version": "0.18.0", + "resolved": "https://registry.npmjs.org/@reach/rect/-/rect-0.18.0.tgz", + "integrity": "sha512-Xk8urN4NLn3F70da/DtByMow83qO6DF6vOxpLjuDBqud+kjKgxAU9vZMBSZJyH37+F8mZinRnHyXtlLn5njQOg==", "requires": { "@reach/observe-rect": "1.2.0", - "@reach/utils": "0.16.0", - "prop-types": "^15.7.2", - "tiny-warning": "^1.0.3", - "tslib": "^2.3.0" + "@reach/utils": "0.18.0" } }, "@reach/tooltip": { - "version": "0.16.2", - "resolved": "https://registry.npmjs.org/@reach/tooltip/-/tooltip-0.16.2.tgz", - "integrity": "sha512-wtJPnbJ6l4pmudMpQHGU9v1NS4ncDgcwRNi9re9KsIdsM525zccZvHQLteBKYiaW4ib7k09t2dbwhyNU9oa0Iw==", + "version": "0.18.0", + "resolved": "https://registry.npmjs.org/@reach/tooltip/-/tooltip-0.18.0.tgz", + "integrity": "sha512-yugoTmTjB3qoMk/nUvcnw99MqpyE2TQMOXE29qnQhSqHriRwQhfftjXlTAGTSzsUJmbyms3A/1gQW0X61kjFZw==", "requires": { - "@reach/auto-id": "0.16.0", - "@reach/portal": "0.16.2", - "@reach/rect": "0.16.0", - "@reach/utils": "0.16.0", - "@reach/visually-hidden": "0.16.0", - "prop-types": "^15.7.2", - "tiny-warning": "^1.0.3", - "tslib": "^2.3.0" + "@reach/auto-id": "0.18.0", + "@reach/polymorphic": "0.18.0", + "@reach/portal": "0.18.0", + "@reach/rect": "0.18.0", + "@reach/utils": "0.18.0", + "@reach/visually-hidden": "0.18.0" } }, "@reach/utils": { - "version": "0.16.0", - "resolved": "https://registry.npmjs.org/@reach/utils/-/utils-0.16.0.tgz", - "integrity": "sha512-PCggBet3qaQmwFNcmQ/GqHSefadAFyNCUekq9RrWoaU9hh/S4iaFgf2MBMdM47eQj5i/Bk0Mm07cP/XPFlkN+Q==", - "requires": { - "tiny-warning": "^1.0.3", - "tslib": "^2.3.0" - } + "version": "0.18.0", + "resolved": "https://registry.npmjs.org/@reach/utils/-/utils-0.18.0.tgz", + "integrity": "sha512-KdVMdpTgDyK8FzdKO9SCpiibuy/kbv3pwgfXshTI6tEcQT1OOwj7BAksnzGC0rPz0UholwC+AgkqEl3EJX3M1A==", + "requires": {} }, "@reach/visually-hidden": { - "version": "0.16.0", - "resolved": "https://registry.npmjs.org/@reach/visually-hidden/-/visually-hidden-0.16.0.tgz", - "integrity": "sha512-IIayZ3jzJtI5KfcfRVtOMFkw2ef/1dMT8D9BUuFcU2ORZAWLNvnzj1oXNoIfABKl5wtsLjY6SGmkYQ+tMPN8TA==", + "version": "0.18.0", + "resolved": "https://registry.npmjs.org/@reach/visually-hidden/-/visually-hidden-0.18.0.tgz", + "integrity": "sha512-NsJ3oeHJtPc6UOeV6MHMuzQ5sl1ouKhW85i3C0S7VM+klxVlYScBZ2J4UVnWB50A2c+evdVpCnld2YeuyYYwBw==", "requires": { - "prop-types": "^15.7.2", - "tslib": "^2.3.0" + "@reach/polymorphic": "0.18.0" } }, + "@remix-run/router": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/@remix-run/router/-/router-1.0.4.tgz", + "integrity": "sha512-gTL8H5USTAKOyVA4xczzDJnC3HMssdFa3tRlwBicXynx9XfiXwneHnYQogwSKpdCkjXISrEKSTtX62rLpNEVQg==" + }, "@rollup/plugin-babel": { "version": "5.3.1", "resolved": "https://registry.npmjs.org/@rollup/plugin-babel/-/plugin-babel-5.3.1.tgz", @@ -20683,9 +20815,9 @@ "integrity": "sha512-oe5WJEDaVsW8fBlGT7udrSCgOwWfoYHQOmSpnh8X+0GXpqqcRCP8k4y+Dxb0taWJDPpB+rdDUtumIiBwkY9qGA==" }, "@sinclair/typebox": { - "version": "0.24.19", - "resolved": "https://registry.npmjs.org/@sinclair/typebox/-/typebox-0.24.19.tgz", - "integrity": "sha512-gHJu8cdYTD5p4UqmQHrxaWrtb/jkH5imLXzuBypWhKzNkW0qfmgz+w1xaJccWVuJta1YYUdlDiPHXRTR4Ku0MQ==" + "version": "0.24.51", + "resolved": "https://registry.npmjs.org/@sinclair/typebox/-/typebox-0.24.51.tgz", + "integrity": "sha512-1P1OROm/rdubP5aFDSZQILU0vrLCJ4fvHt6EoqHEM+2D/G5MK3bIaymUKLit8Js9gbns5UyJnkP/TZROLw4tUA==" }, "@sinonjs/commons": { "version": "1.8.3", @@ -20894,15 +21026,15 @@ } }, "@testing-library/jest-dom": { - "version": "5.16.4", - "resolved": "https://registry.npmjs.org/@testing-library/jest-dom/-/jest-dom-5.16.4.tgz", - "integrity": "sha512-Gy+IoFutbMQcky0k+bqqumXZ1cTGswLsFqmNLzNdSKkU9KGV2u9oXhukCbbJ9/LRPKiqwxEE8VpV/+YZlfkPUA==", + "version": "5.16.5", + "resolved": "https://registry.npmjs.org/@testing-library/jest-dom/-/jest-dom-5.16.5.tgz", + "integrity": "sha512-N5ixQ2qKpi5OLYfwQmUb/5mSV9LneAcaUfp32pn4yCnpb8r/Yz0pXFPck21dIicKmi+ta5WRAknkZCfA8refMA==", "requires": { + "@adobe/css-tools": "^4.0.1", "@babel/runtime": "^7.9.2", "@types/testing-library__jest-dom": "^5.9.1", "aria-query": "^5.0.0", "chalk": "^3.0.0", - "css": "^3.0.0", "css.escape": "^1.5.1", "dom-accessibility-api": "^0.5.6", "lodash": "^4.17.15", @@ -20960,19 +21092,39 @@ } }, "@testing-library/react": { - "version": "12.1.4", - "resolved": "https://registry.npmjs.org/@testing-library/react/-/react-12.1.4.tgz", - "integrity": "sha512-jiPKOm7vyUw311Hn/HlNQ9P8/lHNtArAx0PisXyFixDDvfl8DbD6EUdbshK5eqauvBSvzZd19itqQ9j3nferJA==", + "version": "12.1.5", + "resolved": "https://registry.npmjs.org/@testing-library/react/-/react-12.1.5.tgz", + "integrity": "sha512-OfTXCJUFgjd/digLUuPxa0+/3ZxsQmE7ub9kcbW/wi96Bh3o/p5vrETcBGfP17NWPGqeYYl5LTRpwyGoMC4ysg==", "requires": { "@babel/runtime": "^7.12.5", "@testing-library/dom": "^8.0.0", - "@types/react-dom": "*" + "@types/react-dom": "<18.0.0" + }, + "dependencies": { + "@types/react": { + "version": "17.0.52", + "resolved": "https://registry.npmjs.org/@types/react/-/react-17.0.52.tgz", + "integrity": "sha512-vwk8QqVODi0VaZZpDXQCmEmiOuyjEFPY7Ttaw5vjM112LOq37yz1CDJGrRJwA1fYEq4Iitd5rnjd1yWAc/bT+A==", + "requires": { + "@types/prop-types": "*", + "@types/scheduler": "*", + "csstype": "^3.0.2" + } + }, + "@types/react-dom": { + "version": "17.0.18", + "resolved": "https://registry.npmjs.org/@types/react-dom/-/react-dom-17.0.18.tgz", + "integrity": "sha512-rLVtIfbwyur2iFKykP2w0pl/1unw26b5td16d5xMgp7/yjTHomkyxPYChFoCr/FtEX1lN9wY6lFj1qvKdS5kDw==", + "requires": { + "@types/react": "^17" + } + } } }, "@testing-library/user-event": { - "version": "14.2.3", - "resolved": "https://registry.npmjs.org/@testing-library/user-event/-/user-event-14.2.3.tgz", - "integrity": "sha512-07Ly+NsFDTvjNdvl5bLBA5oHeGIIHCKc7CniGuKnHrjvqcTPVqPEo4z6a8iYydZ0WvDA6ZA0fnhYrqCLbsm0+A==", + "version": "14.4.3", + "resolved": "https://registry.npmjs.org/@testing-library/user-event/-/user-event-14.4.3.tgz", + "integrity": "sha512-kCUc5MEwaEMakkO5x7aoD+DLi02ehmEM2QCGWvNqAS1dV/fAvORWEjnjsEIvml59M7Y5kCkWN6fCCyPOe8OL6Q==", "requires": {} }, "@tootallnate/once": { @@ -21164,14 +21316,35 @@ } }, "@types/jest": { - "version": "28.1.5", - "resolved": "https://registry.npmjs.org/@types/jest/-/jest-28.1.5.tgz", - "integrity": "sha512-TLAC2zXxGnohSP3GxgIyJn7yrTeRPDEyVFyCY1NE2wzg392auI+69uk5EPGjUXuhkq/K208J/TWpLG7J8ebIEQ==", + "version": "29.2.3", + "resolved": "https://registry.npmjs.org/@types/jest/-/jest-29.2.3.tgz", + "integrity": "sha512-6XwoEbmatfyoCjWRX7z0fKMmgYKe9+/HrviJ5k0X/tjJWHGAezZOfYaxqQKuzG/TvQyr+ktjm4jgbk0s4/oF2w==", "requires": { - "jest-matcher-utils": "^28.0.0", - "pretty-format": "^28.0.0" + "expect": "^29.0.0", + "pretty-format": "^29.0.0" }, "dependencies": { + "@jest/types": { + "version": "29.3.1", + "resolved": "https://registry.npmjs.org/@jest/types/-/types-29.3.1.tgz", + "integrity": "sha512-d0S0jmmTpjnhCmNpApgX3jrUZgZ22ivKJRvL2lli5hpCRoNnp1f85r2/wpKfXuYu8E7Jjh1hGfhPyup1NM5AmA==", + "requires": { + "@jest/schemas": "^29.0.0", + "@types/istanbul-lib-coverage": "^2.0.0", + "@types/istanbul-reports": "^3.0.0", + "@types/node": "*", + "@types/yargs": "^17.0.8", + "chalk": "^4.0.0" + } + }, + "@types/yargs": { + "version": "17.0.15", + "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-17.0.15.tgz", + "integrity": "sha512-ZHc4W2dnEQPfhn06TBEdWaiUHEZAocYaiVMfwOipY5jcJt/251wVrKCBWBetGZWO5CF8tdb7L3DmdxVlZ2BOIg==", + "requires": { + "@types/yargs-parser": "*" + } + }, "ansi-styles": { "version": "4.3.0", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", @@ -21203,9 +21376,21 @@ "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" }, "diff-sequences": { - "version": "28.1.1", - "resolved": "https://registry.npmjs.org/diff-sequences/-/diff-sequences-28.1.1.tgz", - "integrity": "sha512-FU0iFaH/E23a+a718l8Qa/19bF9p06kgE0KipMOMadwa3SjnaElKzPaUC0vnibs6/B/9ni97s61mcejk8W1fQw==" + "version": "29.3.1", + "resolved": "https://registry.npmjs.org/diff-sequences/-/diff-sequences-29.3.1.tgz", + "integrity": "sha512-hlM3QR272NXCi4pq+N4Kok4kOp6EsgOM3ZSpJI7Da3UAs+Ttsi8MRmB6trM/lhyzUxGfOgnpkHtgqm5Q/CTcfQ==" + }, + "expect": { + "version": "29.3.1", + "resolved": "https://registry.npmjs.org/expect/-/expect-29.3.1.tgz", + "integrity": "sha512-gGb1yTgU30Q0O/tQq+z30KBWv24ApkMgFUpvKBkyLUBL68Wv8dHdJxTBZFl/iT8K/bqDHvUYRH6IIN3rToopPA==", + "requires": { + "@jest/expect-utils": "^29.3.1", + "jest-get-type": "^29.2.0", + "jest-matcher-utils": "^29.3.1", + "jest-message-util": "^29.3.1", + "jest-util": "^29.3.1" + } }, "has-flag": { "version": "4.0.0", @@ -21213,39 +21398,67 @@ "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==" }, "jest-diff": { - "version": "28.1.3", - "resolved": "https://registry.npmjs.org/jest-diff/-/jest-diff-28.1.3.tgz", - "integrity": "sha512-8RqP1B/OXzjjTWkqMX67iqgwBVJRgCyKD3L9nq+6ZqJMdvjE8RgHktqZ6jNrkdMT+dJuYNI3rhQpxaz7drJHfw==", + "version": "29.3.1", + "resolved": "https://registry.npmjs.org/jest-diff/-/jest-diff-29.3.1.tgz", + "integrity": "sha512-vU8vyiO7568tmin2lA3r2DP8oRvzhvRcD4DjpXc6uGveQodyk7CKLhQlCSiwgx3g0pFaE88/KLZ0yaTWMc4Uiw==", "requires": { "chalk": "^4.0.0", - "diff-sequences": "^28.1.1", - "jest-get-type": "^28.0.2", - "pretty-format": "^28.1.3" + "diff-sequences": "^29.3.1", + "jest-get-type": "^29.2.0", + "pretty-format": "^29.3.1" } }, "jest-get-type": { - "version": "28.0.2", - "resolved": "https://registry.npmjs.org/jest-get-type/-/jest-get-type-28.0.2.tgz", - "integrity": "sha512-ioj2w9/DxSYHfOm5lJKCdcAmPJzQXmbM/Url3rhlghrPvT3tt+7a/+oXc9azkKmLvoiXjtV83bEWqi+vs5nlPA==" + "version": "29.2.0", + "resolved": "https://registry.npmjs.org/jest-get-type/-/jest-get-type-29.2.0.tgz", + "integrity": "sha512-uXNJlg8hKFEnDgFsrCjznB+sTxdkuqiCL6zMgA75qEbAJjJYTs9XPrvDctrEig2GDow22T/LvHgO57iJhXB/UA==" }, "jest-matcher-utils": { - "version": "28.1.3", - "resolved": "https://registry.npmjs.org/jest-matcher-utils/-/jest-matcher-utils-28.1.3.tgz", - "integrity": "sha512-kQeJ7qHemKfbzKoGjHHrRKH6atgxMk8Enkk2iPQ3XwO6oE/KYD8lMYOziCkeSB9G4adPM4nR1DE8Tf5JeWH6Bw==", + "version": "29.3.1", + "resolved": "https://registry.npmjs.org/jest-matcher-utils/-/jest-matcher-utils-29.3.1.tgz", + "integrity": "sha512-fkRMZUAScup3txIKfMe3AIZZmPEjWEdsPJFK3AIy5qRohWqQFg1qrmKfYXR9qEkNc7OdAu2N4KPHibEmy4HPeQ==", + "requires": { + "chalk": "^4.0.0", + "jest-diff": "^29.3.1", + "jest-get-type": "^29.2.0", + "pretty-format": "^29.3.1" + } + }, + "jest-message-util": { + "version": "29.3.1", + "resolved": "https://registry.npmjs.org/jest-message-util/-/jest-message-util-29.3.1.tgz", + "integrity": "sha512-lMJTbgNcDm5z+6KDxWtqOFWlGQxD6XaYwBqHR8kmpkP+WWWG90I35kdtQHY67Ay5CSuydkTBbJG+tH9JShFCyA==", "requires": { + "@babel/code-frame": "^7.12.13", + "@jest/types": "^29.3.1", + "@types/stack-utils": "^2.0.0", "chalk": "^4.0.0", - "jest-diff": "^28.1.3", - "jest-get-type": "^28.0.2", - "pretty-format": "^28.1.3" + "graceful-fs": "^4.2.9", + "micromatch": "^4.0.4", + "pretty-format": "^29.3.1", + "slash": "^3.0.0", + "stack-utils": "^2.0.3" + } + }, + "jest-util": { + "version": "29.3.1", + "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-29.3.1.tgz", + "integrity": "sha512-7YOVZaiX7RJLv76ZfHt4nbNEzzTRiMW/IiOG7ZOKmTXmoGBxUDefgMAxQubu6WPVqP5zSzAdZG0FfLcC7HOIFQ==", + "requires": { + "@jest/types": "^29.3.1", + "@types/node": "*", + "chalk": "^4.0.0", + "ci-info": "^3.2.0", + "graceful-fs": "^4.2.9", + "picomatch": "^2.2.3" } }, "pretty-format": { - "version": "28.1.3", - "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-28.1.3.tgz", - "integrity": "sha512-8gFb/To0OmxHR9+ZTb14Df2vNxdGCX8g1xWGUTqUw5TiZvcQf5sHKObd5UcPyLLyowNwDAMTF3XWOG1B6mxl1Q==", + "version": "29.3.1", + "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-29.3.1.tgz", + "integrity": "sha512-FyLnmb1cYJV8biEIiRyzRFvs2lry7PPIvOqKVe1GCUEYg4YGmlx1qG9EJNMxArYm7piII4qb8UV1Pncq5dxmcg==", "requires": { - "@jest/schemas": "^28.1.3", - "ansi-regex": "^5.0.1", + "@jest/schemas": "^29.0.0", "ansi-styles": "^5.0.0", "react-is": "^18.0.0" }, @@ -21283,9 +21496,9 @@ "integrity": "sha1-7ihweulOEdK4J7y+UnC86n8+ce4=" }, "@types/lodash": { - "version": "4.14.182", - "resolved": "https://registry.npmjs.org/@types/lodash/-/lodash-4.14.182.tgz", - "integrity": "sha512-/THyiqyQAP9AfARo4pF+aCGcyiQ94tX/Is2I7HofNRqoYLgN1PBoOWu2/zTA5zMxzP5EFutMtWtGAFRKUe961Q==" + "version": "4.14.191", + "resolved": "https://registry.npmjs.org/@types/lodash/-/lodash-4.14.191.tgz", + "integrity": "sha512-BdZ5BCCvho3EIXw6wUCXHe7rS53AIDPLE+JzwgT+OsJk53oBfbSmZZ7CX4VaRoN78N+TJpFi9QPlfIVNmJYWxQ==" }, "@types/mdast": { "version": "3.0.10", @@ -21311,9 +21524,9 @@ "integrity": "sha512-iiUgKzV9AuaEkZqkOLDIvlQiL6ltuZd9tGcW3gwpnX8JbuiuhFlEGmmFXEXkN50Cvq7Os88IY2v0dkDqXYWVgA==" }, "@types/node": { - "version": "18.0.4", - "resolved": "https://registry.npmjs.org/@types/node/-/node-18.0.4.tgz", - "integrity": "sha512-M0+G6V0Y4YV8cqzHssZpaNCqvYwlCiulmm0PwpNLF55r/+cT8Ol42CHRU1SEaYFH2rTwiiE1aYg/2g2rrtGdPA==" + "version": "18.11.10", + "resolved": "https://registry.npmjs.org/@types/node/-/node-18.11.10.tgz", + "integrity": "sha512-juG3RWMBOqcOuXC643OAdSA525V44cVgGV6dUDuiFtss+8Fk5x1hI93Rsld43VeJVIeqlP9I7Fn9/qaVqoEAuQ==" }, "@types/parse-json": { "version": "4.0.0", @@ -21346,9 +21559,9 @@ "integrity": "sha512-EEhsLsD6UsDM1yFhAvy0Cjr6VwmpMWqFBCb9w07wVugF7w9nfajxLuVmngTIpgS6svCnm6Vaw+MZhoDCKnOfsw==" }, "@types/react": { - "version": "18.0.15", - "resolved": "https://registry.npmjs.org/@types/react/-/react-18.0.15.tgz", - "integrity": "sha512-iz3BtLuIYH1uWdsv6wXYdhozhqj20oD4/Hk2DNXIn1kFsmp9x8d9QB6FnPhfkbhd2PgEONt9Q1x/ebkwjfFLow==", + "version": "18.0.26", + "resolved": "https://registry.npmjs.org/@types/react/-/react-18.0.26.tgz", + "integrity": "sha512-hCR3PJQsAIXyxhTNSiDFY//LhnMZWpNNr5etoCqx/iUfGc5gXWtQR2Phl908jVR6uPXacojQWTg4qRpkxTuGug==", "requires": { "@types/prop-types": "*", "@types/scheduler": "*", @@ -21356,9 +21569,9 @@ } }, "@types/react-dom": { - "version": "18.0.6", - "resolved": "https://registry.npmjs.org/@types/react-dom/-/react-dom-18.0.6.tgz", - "integrity": "sha512-/5OFZgfIPSwy+YuIBP/FgJnQnsxhZhjjrnxudMddeblOouIodEQ75X14Rr4wGSG/bknL+Omy9iWlLo1u/9GzAA==", + "version": "18.0.9", + "resolved": "https://registry.npmjs.org/@types/react-dom/-/react-dom-18.0.9.tgz", + "integrity": "sha512-qnVvHxASt/H7i+XG1U1xMiY5t+IHcPGUK7TDMDzom08xa7e86eCeKOiLZezwCKVxJn6NEiiy2ekgX8aQssjIKg==", "requires": { "@types/react": "*" } @@ -21985,11 +22198,6 @@ "resolved": "https://registry.npmjs.org/atoa/-/atoa-1.0.0.tgz", "integrity": "sha1-DMDpGkgOc4+SPrwQNnZHF3mzSkk=" }, - "atob": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/atob/-/atob-2.1.2.tgz", - "integrity": "sha512-Wm6ukoaOGJi/73p/cl2GvLjTI5JM1k/O14isD73YML8StrH/7/lRFgmg8nICZgD3bZZvjwCGxtMOD3wWNAu8cg==" - }, "autocompleter": { "version": "6.1.2", "resolved": "https://registry.npmjs.org/autocompleter/-/autocompleter-6.1.2.tgz", @@ -22407,9 +22615,9 @@ "integrity": "sha1-aN/1++YMUes3cl6p4+0xDcwed24=" }, "bootstrap": { - "version": "5.1.3", - "resolved": "https://registry.npmjs.org/bootstrap/-/bootstrap-5.1.3.tgz", - "integrity": "sha512-fcQztozJ8jToQWXxVuEyXWW+dSo8AiXWKwiSSrKWsRB/Qt+Ewwza+JWoLKiTuQLaEPhdNAJ7+Dosc9DOIqNy7Q==", + "version": "5.2.3", + "resolved": "https://registry.npmjs.org/bootstrap/-/bootstrap-5.2.3.tgz", + "integrity": "sha512-cEKPM+fwb3cT8NzQZYEu4HilJ3anCrWqh3CHAok1p9jXqMPsPTBhU25fBckEJHJ/p+tTxTFTsFQGM+gaHpi3QQ==", "requires": {} }, "brace-expansion": { @@ -22884,23 +23092,6 @@ "resolved": "https://registry.npmjs.org/crypto-random-string/-/crypto-random-string-2.0.0.tgz", "integrity": "sha512-v1plID3y9r/lPhviJ1wrXpLeyUIGAZ2SHNYTEapm7/8A9nLPoyvVp3RK/EPFqn5kEznyWgYZNsRtYYIWbuG8KA==" }, - "css": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/css/-/css-3.0.0.tgz", - "integrity": "sha512-DG9pFfwOrzc+hawpmqX/dHYHJG+Bsdb0klhyi1sDneOgGOXy9wQIC8hzyVp1e4NRYDBdxcylvywPkkXCHAzTyQ==", - "requires": { - "inherits": "^2.0.4", - "source-map": "^0.6.1", - "source-map-resolve": "^0.6.0" - }, - "dependencies": { - "source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==" - } - } - }, "css-blank-pseudo": { "version": "3.0.3", "resolved": "https://registry.npmjs.org/css-blank-pseudo/-/css-blank-pseudo-3.0.3.tgz", @@ -23211,11 +23402,6 @@ "character-entities": "^2.0.0" } }, - "decode-uri-component": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/decode-uri-component/-/decode-uri-component-0.2.0.tgz", - "integrity": "sha1-6zkTMzRYd1y4TNGh+uBiEGu4dUU=" - }, "dedent": { "version": "0.7.0", "resolved": "https://registry.npmjs.org/dedent/-/dedent-0.7.0.tgz", @@ -24469,9 +24655,9 @@ "integrity": "sha512-WIWGi2L3DyTUvUrwRKgGi9TwxQMUEqPOPQBVi71R96jZXJdFskXEmf54BoZaS1kknGODoIGASGEzBUYdyMCBJg==" }, "focus-lock": { - "version": "0.11.2", - "resolved": "https://registry.npmjs.org/focus-lock/-/focus-lock-0.11.2.tgz", - "integrity": "sha512-pZ2bO++NWLHhiKkgP1bEXHhR1/OjVcSvlCJ98aNJDFeb7H5OOQaO+SKOZle6041O9rv2tmbrO4JzClAvDUHf0g==", + "version": "0.9.2", + "resolved": "https://registry.npmjs.org/focus-lock/-/focus-lock-0.9.2.tgz", + "integrity": "sha512-YtHxjX7a0IC0ZACL5wsX8QdncXofWpGPNoVMuI/nZUrPGp6LmNI6+D5j0pPj+v8Kw5EpweA+T5yImK0rnWf7oQ==", "requires": { "tslib": "^2.0.3" } @@ -24882,14 +25068,6 @@ "resolved": "https://registry.npmjs.org/he/-/he-1.2.0.tgz", "integrity": "sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==" }, - "history": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/history/-/history-5.3.0.tgz", - "integrity": "sha512-ZqaKwjjrAYUYfLG+htGaIIZ4nioX2L70ZUMIFysS3xvBsSG4x/n1V6TXV3N8ZYNuFGlDirFg32T7B6WOUPDYcQ==", - "requires": { - "@babel/runtime": "^7.7.6" - } - }, "hoopy": { "version": "0.1.4", "resolved": "https://registry.npmjs.org/hoopy/-/hoopy-0.1.4.tgz", @@ -29245,22 +29423,22 @@ "integrity": "sha512-/6UZ2qgEyH2aqzYZgQPxEnz33NJ2gNsnHA2o5+o4wW9bLM/JYQitNP9xPhsXwC08hMMovfGe/8retsdDsczPRg==" }, "react-focus-lock": { - "version": "2.9.1", - "resolved": "https://registry.npmjs.org/react-focus-lock/-/react-focus-lock-2.9.1.tgz", - "integrity": "sha512-pSWOQrUmiKLkffPO6BpMXN7SNKXMsuOakl652IBuALAu1esk+IcpJyM+ALcYzPTTFz1rD0R54aB9A4HuP5t1Wg==", + "version": "2.5.2", + "resolved": "https://registry.npmjs.org/react-focus-lock/-/react-focus-lock-2.5.2.tgz", + "integrity": "sha512-WzpdOnEqjf+/A3EH9opMZWauag7gV0BxFl+EY4ElA4qFqYsUsBLnmo2sELbN5OC30S16GAWMy16B9DLPpdJKAQ==", "requires": { "@babel/runtime": "^7.0.0", - "focus-lock": "^0.11.2", + "focus-lock": "^0.9.1", "prop-types": "^15.6.2", - "react-clientside-effect": "^1.2.6", - "use-callback-ref": "^1.3.0", - "use-sidecar": "^1.1.2" + "react-clientside-effect": "^1.2.5", + "use-callback-ref": "^1.2.5", + "use-sidecar": "^1.0.5" } }, "react-idle-timer": { - "version": "5.4.1", - "resolved": "https://registry.npmjs.org/react-idle-timer/-/react-idle-timer-5.4.1.tgz", - "integrity": "sha512-Pn0ede5OBeUxkIdnGevKAcVtdMnzRzFgBI6k2DC3gDbDCqRSePblxKH6Lbb0ncLzwaw9hnZfe3/Z8Bj1HA8khA==", + "version": "5.4.2", + "resolved": "https://registry.npmjs.org/react-idle-timer/-/react-idle-timer-5.4.2.tgz", + "integrity": "sha512-ofCS/qpFjm6ZguEyePvtf9YMDnLj7zZfeLXRWGRpsC6Ga47H4dm7EvoUW8MsozGEGy8zCvPK0Sk6YuAnwLEzRQ==", "requires": {} }, "react-is": { @@ -29269,9 +29447,9 @@ "integrity": "sha512-w2GsyukL62IJnlaff/nRegPQR94C/XXamvMWmSHRJ4y7Ts/4ocGRmTHvOs8PSE6pB3dWOrD/nueuU5sduBsQ4w==" }, "react-markdown": { - "version": "8.0.3", - "resolved": "https://registry.npmjs.org/react-markdown/-/react-markdown-8.0.3.tgz", - "integrity": "sha512-We36SfqaKoVNpN1QqsZwWSv/OZt5J15LNgTLWynwAN5b265hrQrsjMtlRNwUvS+YyR3yDM8HpTNc4pK9H/Gc0A==", + "version": "8.0.4", + "resolved": "https://registry.npmjs.org/react-markdown/-/react-markdown-8.0.4.tgz", + "integrity": "sha512-2oxHa6oDxc1apg/Gnc1Goh06t3B617xeywqI/92wmDV9FELI6ayRkwge7w7DoEqM0gRpZGTNU6xQG+YpJISnVg==", "requires": { "@types/hast": "^2.0.0", "@types/prop-types": "^15.0.0", @@ -29302,42 +29480,30 @@ "resolved": "https://registry.npmjs.org/react-refresh/-/react-refresh-0.11.0.tgz", "integrity": "sha512-F27qZr8uUqwhWZboondsPx8tnC3Ct3SxZA3V5WyEvujRyyNv0VYPhoBg1gZ8/MV5tubQp76Trw8lTv9hzRBa+A==" }, - "react-remove-scroll": { - "version": "2.5.5", - "resolved": "https://registry.npmjs.org/react-remove-scroll/-/react-remove-scroll-2.5.5.tgz", - "integrity": "sha512-ImKhrzJJsyXJfBZ4bzu8Bwpka14c/fQt0k+cyFp/PBhTfyDnU5hjOtM4AG/0AMyy8oKzOTR0lDgJIM7pYXI0kw==", - "requires": { - "react-remove-scroll-bar": "^2.3.3", - "react-style-singleton": "^2.2.1", - "tslib": "^2.1.0", - "use-callback-ref": "^1.3.0", - "use-sidecar": "^1.1.2" - } - }, "react-remove-scroll-bar": { - "version": "2.3.3", - "resolved": "https://registry.npmjs.org/react-remove-scroll-bar/-/react-remove-scroll-bar-2.3.3.tgz", - "integrity": "sha512-i9GMNWwpz8XpUpQ6QlevUtFjHGqnPG4Hxs+wlIJntu/xcsZVEpJcIV71K3ZkqNy2q3GfgvkD7y6t/Sv8ofYSbw==", + "version": "2.3.4", + "resolved": "https://registry.npmjs.org/react-remove-scroll-bar/-/react-remove-scroll-bar-2.3.4.tgz", + "integrity": "sha512-63C4YQBUt0m6ALadE9XV56hV8BgJWDmmTPY758iIJjfQKt2nYwoUrPk0LXRXcB/yIj82T1/Ixfdpdk68LwIB0A==", "requires": { "react-style-singleton": "^2.2.1", "tslib": "^2.0.0" } }, "react-router": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/react-router/-/react-router-6.3.0.tgz", - "integrity": "sha512-7Wh1DzVQ+tlFjkeo+ujvjSqSJmkt1+8JO+T5xklPlgrh70y7ogx75ODRW0ThWhY7S+6yEDks8TYrtQe/aoboBQ==", + "version": "6.4.4", + "resolved": "https://registry.npmjs.org/react-router/-/react-router-6.4.4.tgz", + "integrity": "sha512-SA6tSrUCRfuLWeYsTJDuriRqfFIsrSvuH7SqAJHegx9ZgxadE119rU8oOX/rG5FYEthpdEaEljdjDlnBxvfr+Q==", "requires": { - "history": "^5.2.0" + "@remix-run/router": "1.0.4" } }, "react-router-dom": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/react-router-dom/-/react-router-dom-6.3.0.tgz", - "integrity": "sha512-uaJj7LKytRxZNQV8+RbzJWnJ8K2nPsOOEuX7aQstlMZKQT0164C+X2w6bnkqU3sjtLvpd5ojrezAyfZ1+0sStw==", + "version": "6.4.4", + "resolved": "https://registry.npmjs.org/react-router-dom/-/react-router-dom-6.4.4.tgz", + "integrity": "sha512-0Axverhw5d+4SBhLqLpzPhNkmv7gahUwlUVIOrRLGJ4/uwt30JVajVJXqv2Qr/LCwyvHhQc7YyK1Do8a9Jj7qA==", "requires": { - "history": "^5.2.0", - "react-router": "6.3.0" + "@remix-run/router": "1.0.4", + "react-router": "6.4.4" } }, "react-scripts": { @@ -30044,15 +30210,6 @@ "source-map-js": "^1.0.1" } }, - "source-map-resolve": { - "version": "0.6.0", - "resolved": "https://registry.npmjs.org/source-map-resolve/-/source-map-resolve-0.6.0.tgz", - "integrity": "sha512-KXBr9d/fO/bWo97NXsPIAW1bFSBOuCnjbNTBMO7N59hsv5i9yzRDfcYwwt0l04+VqnKC+EwzvJZIP/qkuMgR/w==", - "requires": { - "atob": "^2.1.2", - "decode-uri-component": "^0.2.0" - } - }, "source-map-support": { "version": "0.5.21", "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.21.tgz", @@ -30579,7 +30736,7 @@ "text-mask-addons": { "version": "3.8.0", "resolved": "https://registry.npmjs.org/text-mask-addons/-/text-mask-addons-3.8.0.tgz", - "integrity": "sha1-F7Ye9mWk82gR8uofAaIjtL5hqyY=" + "integrity": "sha512-VSZSdc/tKn4zGxgpJ+uNBzoW1t472AoAFIlbw1K7hSNXz0DfSBYDJNRxLqgxOfWw1BY2z6DQpm7g0sYZn5qLpg==" }, "text-table": { "version": "0.2.0", @@ -30606,10 +30763,10 @@ "resolved": "https://registry.npmjs.org/timsort/-/timsort-0.3.0.tgz", "integrity": "sha1-QFQRqOfmM5/mTbmiNN4R3DHgK9Q=" }, - "tiny-warning": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/tiny-warning/-/tiny-warning-1.0.3.tgz", - "integrity": "sha512-lBN9zLN/oAf68o3zNXYrdCt1kP8WsiGW8Oo2ka41b2IM5JL/S1CTyX1rW0mb/zSuJun0ZUrDxx4sqvYS2FWzPA==" + "tiny-invariant": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/tiny-invariant/-/tiny-invariant-1.3.1.tgz", + "integrity": "sha512-AD5ih2NlSssTCwsMznbvwMZpJ1cbhkGd2uueNxzv2jDlEeZdU04JQfRnggJQ8DrcVBGjAsCKwFBbDlVNtEMlzw==" }, "tippy.js": { "version": "6.3.7", @@ -30777,9 +30934,9 @@ } }, "typescript": { - "version": "4.7.4", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.7.4.tgz", - "integrity": "sha512-C0WQT0gezHuw6AdY1M2jxUO83Rjf0HP7Sk1DtXj6j1EwkQNZrHAg2XPWlq62oqEhYvONq5pkC2Y9oPljWToLmQ==" + "version": "4.9.3", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.9.3.tgz", + "integrity": "sha512-CIfGzTelbKNEnLpLdGFgdyKhG23CKdKgQPOBc+OUNrkJ2vr+KSzsSV5kq5iWhEQbok+quxgGzrAtGWCyU7tHnA==" }, "unbox-primitive": { "version": "1.0.1", @@ -31101,9 +31258,9 @@ } }, "web-vitals": { - "version": "2.1.4", - "resolved": "https://registry.npmjs.org/web-vitals/-/web-vitals-2.1.4.tgz", - "integrity": "sha512-sVWcwhU5mX6crfI5Vd2dC4qchyTqxV8URinzt25XqVh+bHEPGH4C3NPrNionCP7Obx59wrYEbNlw4Z8sjALzZg==" + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/web-vitals/-/web-vitals-3.1.0.tgz", + "integrity": "sha512-zCeQ+bOjWjJbXv5ZL0r8Py3XP2doCQMZXNKlBGfUjPAVZWokApdeF/kFlK1peuKlCt8sL9TFkKzyXE9/cmNJQA==" }, "webidl-conversions": { "version": "6.1.0", diff --git a/app/client/package.json b/app/client/package.json index 3c6aa9dc..b5383c75 100644 --- a/app/client/package.json +++ b/app/client/package.json @@ -1,6 +1,6 @@ { "name": "epa-csb-client", - "version": "2.0.0", + "version": "2.1.0", "description": "U.S. EPA Clean School Bus data collection system (client app)", "homepage": ".", "license": "CC0-1.0", @@ -18,32 +18,32 @@ }, "dependencies": { "@formio/premium": "1.18.4", - "@formio/react": "5.2.0", - "@formio/uswds": "2.4.6", - "@reach/alert-dialog": "0.16.2", - "@reach/dialog": "0.16.2", - "@reach/tooltip": "0.16.2", - "@testing-library/jest-dom": "5.16.4", - "@testing-library/react": "12.1.4", - "@testing-library/user-event": "14.2.3", - "@types/jest": "28.1.5", - "@types/lodash": "4.14.182", - "@types/node": "18.0.4", - "@types/react": "18.0.15", - "@types/react-dom": "18.0.6", - "bootstrap": "5.1.3", + "@formio/react": "5.2.3", + "@formio/uswds": "2.4.8", + "@reach/alert-dialog": "0.18.0", + "@reach/dialog": "0.18.0", + "@reach/tooltip": "0.18.0", + "@testing-library/jest-dom": "5.16.5", + "@testing-library/react": "12.1.5", + "@testing-library/user-event": "14.4.3", + "@types/jest": "29.2.3", + "@types/lodash": "4.14.191", + "@types/node": "18.11.10", + "@types/react": "18.0.26", + "@types/react-dom": "18.0.9", + "bootstrap": "5.2.3", "formiojs": "4.14.5", "lodash": "4.17.21", "react": "17.0.2", "react-dom": "17.0.2", - "react-idle-timer": "5.4.1", - "react-markdown": "8.0.3", - "react-router-dom": "6.3.0", + "react-idle-timer": "5.4.2", + "react-markdown": "8.0.4", + "react-router-dom": "6.4.4", "react-scripts": "5.0.1", "remark-gfm": "3.0.1", - "typescript": "4.7.4", + "typescript": "4.9.3", "uswds": "2.13.3", - "web-vitals": "2.1.4" + "web-vitals": "3.1.0" }, "proxy": "http://localhost:3001", "eslintConfig": { diff --git a/app/client/src/components/app.tsx b/app/client/src/components/app.tsx index c23fbcae..ada99ad6 100644 --- a/app/client/src/components/app.tsx +++ b/app/client/src/components/app.tsx @@ -141,7 +141,12 @@ function useInactivityDialog(callback: () => void) { payload: { dismissable: false, heading: "Inactivity Warning", - description: `You will be automatically logged out in ${logoutTimer} seconds due to inactivity.`, + description: ( +

+ You will be automatically logged out in {logoutTimer} seconds due + to inactivity. +

+ ), confirmText: "Stay logged in", confirmedAction: () => { callback(); diff --git a/app/client/src/components/confirmationDialog.tsx b/app/client/src/components/confirmationDialog.tsx index d6e697b7..9ec73bbb 100644 --- a/app/client/src/components/confirmationDialog.tsx +++ b/app/client/src/components/confirmationDialog.tsx @@ -16,8 +16,9 @@ export function ConfirmationDialog() { heading, description, confirmText, - cancelText, + dismissText, confirmedAction, + dismissedAction, } = useDialogState(); const dialogDispatch = useDialogDispatch(); @@ -27,6 +28,7 @@ export function ConfirmationDialog() { { + dismissable && dismissedAction && dismissedAction(); dismissable && dialogDispatch({ type: "RESET_DIALOG" }); }} leastDestructiveRef={cancelRef} @@ -39,9 +41,7 @@ export function ConfirmationDialog() { -
-

{description}

-
+
{description}
@@ -58,14 +58,17 @@ export function ConfirmationDialog() { - {dismissable && cancelText && ( + {dismissable && dismissText && (
  • )} @@ -77,7 +80,10 @@ export function ConfirmationDialog() { - ) : enrollmentClosed || application.formio.state === "submitted" ? ( - - - - View - - + + ) : application.formio.state === "submitted" || !applicationFormOpen ? ( + ) : application.formio.state === "draft" ? ( - - - - Edit - - + ) : null} - + {application.bap?.rebateId ? ( {application.bap.rebateId} @@ -492,51 +495,23 @@ function ApplicationSubmission({ rebate }: { rebate: Rebate }) { )} - + Application
    - - { - applicationHasBeenSelected || - applicationNeedsEdits || - applicationHasBeenWithdrawn - ? application.bap?.rebateStatus - : application.formio.state === "draft" - ? "Draft" - : application.formio.state === "submitted" - ? "Submitted" - : application.formio.state // fallback, not used - } - + {statusText} - + <> {Boolean(applicantUEI) ? ( applicantUEI @@ -599,7 +574,7 @@ save the form for the EFT indicator to be displayed. */ - + <> {Boolean(applicantOrganizationName) ? ( applicantOrganizationName @@ -621,7 +596,7 @@ save the form for the EFT indicator to be displayed. */ - + {last_updated_by}
    {date} @@ -633,23 +608,28 @@ save the form for the EFT indicator to be displayed. */ function PaymentRequestSubmission({ rebate }: { rebate: Rebate }) { const navigate = useNavigate(); + const { csbData } = useCsbState(); const { epaUserData } = useUserState(); const { samEntities } = useBapState(); const pageMessageDispatch = usePageMessageDispatch(); + // NOTE: used to display a loading indicator inside the new Payment Request button const [postDataResponsePending, setPostDataResponsePending] = useState(false); + if (csbData.status !== "success") return null; if (epaUserData.status !== "success") return null; if (samEntities.status !== "success") return null; + const paymentRequestFormOpen = + csbData.data.submissionPeriodOpen.paymentRequest; + const email = epaUserData.data.mail; const { application, paymentRequest } = rebate; - const applicationHasBeenSelected = - application.bap?.rebateStatus === "Selected"; + const applicationSelected = application.bap?.status === "Accepted"; - const applicationHasBeenSelectedButNoPaymentRequest = - applicationHasBeenSelected && !Boolean(paymentRequest.formio); + const applicationSelectedButNoPaymentRequest = + applicationSelected && !Boolean(paymentRequest.formio); /** matched SAM.gov entity for the application */ const entity = samEntities.data.entities.find((entity) => { @@ -660,7 +640,7 @@ function PaymentRequestSubmission({ rebate }: { rebate: Rebate }) { ); }); - if (applicationHasBeenSelectedButNoPaymentRequest) { + if (applicationSelectedButNoPaymentRequest) { return ( @@ -682,7 +662,7 @@ function PaymentRequestSubmission({ rebate }: { rebate: Rebate }) { entity, comboKey: application.bap.comboKey, rebateId: application.bap.rebateId, // CSB Rebate ID (6 digits) - reviewItemId: application.bap.reviewItemId, // CSB Rebate ID w/ form/version ID (9 digits) + reviewItemId: application.bap.reviewItemId, // CSB Rebate ID with form/version ID (9 digits) applicationFormModified: application.bap.modified, }) .then((res) => { @@ -726,26 +706,62 @@ function PaymentRequestSubmission({ rebate }: { rebate: Rebate }) { const date = new Date(paymentRequest.formio.modified).toLocaleDateString(); const time = new Date(paymentRequest.formio.modified).toLocaleTimeString(); - /** - * The application has been updated since the last time the BAP's submissions - * ETL process has last succesfully run. - */ - const paymentRequestHasBeenUpdated = paymentRequest.bap?.modified - ? new Date(paymentRequest.formio.modified) > - new Date(paymentRequest.bap.modified) - : false; + const applicationNeedsEdits = submissionNeedsEdits({ + formio: application.formio, + bap: application.bap, + }); - const paymentRequestNeedsEdits = - paymentRequest.bap?.rebateStatus === "Edits Requested" && - (paymentRequest.formio.state === "draft" || - (paymentRequest.formio.state === "submitted" && - !paymentRequestHasBeenUpdated)); + const paymentRequestNeedsEdits = submissionNeedsEdits({ + formio: paymentRequest.formio, + bap: paymentRequest.bap, + }); + + const paymentRequestNeedsClarification = + paymentRequest.bap?.status === "Needs Clarification"; const paymentRequestHasBeenWithdrawn = - paymentRequest.bap?.rebateStatus === "Withdrawn"; + paymentRequest.bap?.status === "Withdrawn"; + + const paymentRequestFundingNotApproved = + paymentRequest.bap?.status === "Coordinator Denied"; - const statusClassNames = - paymentRequest.formio.state === "submitted" ? "text-italic" : ""; + const paymentRequestFundingApproved = + paymentRequest.bap?.status === "Accepted"; + + const statusTableCellClassNames = + paymentRequest.formio.state === "submitted" || !paymentRequestFormOpen + ? "text-italic" + : ""; + + const statusIcon = paymentRequestNeedsEdits + ? `${icons}#priority_high` // ! + : paymentRequestHasBeenWithdrawn + ? `${icons}#close` // ✕ + : paymentRequestFundingNotApproved + ? `${icons}#cancel` // ✕ inside a circle + : paymentRequestFundingApproved + ? `${icons}#check_circle` // check inside a circle + : paymentRequest.formio.state === "draft" + ? `${icons}#more_horiz` // three horizontal dots + : paymentRequest.formio.state === "submitted" + ? `${icons}#check` // check + : `${icons}#remove`; // — (fallback, not used) + + const statusText = paymentRequestNeedsEdits + ? "Edits Requested" + : paymentRequestHasBeenWithdrawn + ? "Withdrawn" + : paymentRequestFundingNotApproved + ? "Funding Not Approved" + : paymentRequestFundingApproved + ? "Funding Approved" + : paymentRequest.formio.state === "draft" + ? "Draft" + : paymentRequest.formio.state === "submitted" + ? "Submitted" + : ""; // fallback, not used + + const paymentRequestFormUrl = `/payment-request/${hidden_bap_rebate_id}`; return ( - - {paymentRequestNeedsEdits ? ( - - ) : paymentRequest.formio.state === "submitted" ? ( - - - - View - - + + {applicationNeedsEdits ? ( + + ) : paymentRequestNeedsEdits ? ( + + ) : paymentRequest.formio.state === "submitted" || + !paymentRequestFormOpen ? ( + ) : paymentRequest.formio.state === "draft" ? ( - - - - Edit - - + ) : null} -   +   - + Payment Request
    - - - { - paymentRequestNeedsEdits || paymentRequestHasBeenWithdrawn - ? paymentRequest.bap?.rebateStatus - : paymentRequest.formio.state === "draft" - ? "Draft" - : paymentRequest.formio.state === "submitted" - ? "Submitted" - : paymentRequest.formio.state // fallback, not used - } - + ) : ( + <> + + {statusText} + + )} -   +   -   +   - + {hidden_current_user_email}
    {date} @@ -883,20 +825,15 @@ function PaymentRequestSubmission({ rebate }: { rebate: Rebate }) { } export function AllRebates() { + const location = useLocation(); const [searchParams] = useSearchParams(); const { content } = useContentState(); - const { epaUserData } = useUserState(); - const { csbData } = useCsbState(); - const { - samEntities, - applicationSubmissions: bapApplicationSubmissions, - paymentRequestSubmissions: bapPaymentRequestSubmissions, - } = useBapState(); + const { formSubmissions: bapFormSubmissions } = useBapState(); const { applicationSubmissions: formioApplicationSubmissions, paymentRequestSubmissions: formioPaymentRequestSubmissions, - } = useFormioState(); + } = useFormioSubmissionsState(); const pageMessageDispatch = usePageMessageDispatch(); // reset page message state since it's used across pages @@ -904,63 +841,50 @@ export function AllRebates() { pageMessageDispatch({ type: "RESET_MESSAGE" }); }, [pageMessageDispatch]); - useFetchedFormioApplicationSubmissions(); - useFetchedBapApplicationSubmissions(); + const submissionSuccessMessage = + (location.state as LocationState)?.submissionSuccessMessage || null; - useFetchedFormioPaymentRequestSubmissions(); - useFetchedBapPaymentRequestSubmissions(); + if (submissionSuccessMessage) { + pageMessageDispatch({ + type: "DISPLAY_MESSAGE", + payload: { type: "success", text: submissionSuccessMessage }, + }); + } - const submissions = useCombinedSubmissions(); - const sortedSubmissions = useSortedSubmissions(submissions); + useFetchedFormSubmissions(); - // log combined 'sortedSubmissions' array if 'debug' search parameter exists + const combinedRebates = useCombinedSubmissions(); + const sortedRebates = useSortedRebates(combinedRebates); + + // log combined 'sortedRebates' array if 'debug' search parameter exists useEffect(() => { - const submissionsAreSet = sortedSubmissions.length > 0; - if (searchParams.has("debug") && submissionsAreSet) { - console.log(sortedSubmissions); + if (searchParams.has("debug") && sortedRebates.length > 0) { + console.log(sortedRebates); } - }, [searchParams, sortedSubmissions]); + }, [searchParams, sortedRebates]); if ( - csbData.status !== "success" || - epaUserData.status !== "success" || - samEntities.status === "idle" || - samEntities.status === "pending" || + bapFormSubmissions.status === "idle" || + bapFormSubmissions.status === "pending" || formioApplicationSubmissions.status === "idle" || formioApplicationSubmissions.status === "pending" || - bapApplicationSubmissions.status === "idle" || - bapApplicationSubmissions.status === "pending" || formioPaymentRequestSubmissions.status === "idle" || - formioPaymentRequestSubmissions.status === "pending" || - bapPaymentRequestSubmissions.status === "idle" || - bapPaymentRequestSubmissions.status === "pending" + formioPaymentRequestSubmissions.status === "pending" ) { return ; } - if (samEntities.status === "failure") { - return ; - } - if ( + bapFormSubmissions.status === "failure" || formioApplicationSubmissions.status === "failure" || - bapApplicationSubmissions.status === "failure" + formioPaymentRequestSubmissions.status === "failure" ) { - return ; - } - - if ( - formioPaymentRequestSubmissions.status === "failure" || - bapPaymentRequestSubmissions.status === "failure" - ) { - return ( - - ); + return ; } return ( <> - {sortedSubmissions.length === 0 ? ( + {sortedRebates.length === 0 ? (
    @@ -1044,14 +968,14 @@ export function AllRebates() { - {sortedSubmissions.map((rebate, index) => ( + {sortedRebates.map((rebate, index) => ( {/* blank row after all rebates but the last one */} - {index !== sortedSubmissions.length - 1 && ( + {index !== sortedRebates.length - 1 && (   diff --git a/app/client/src/routes/applicationForm.tsx b/app/client/src/routes/applicationForm.tsx index 2ca3888a..7c9fab84 100644 --- a/app/client/src/routes/applicationForm.tsx +++ b/app/client/src/routes/applicationForm.tsx @@ -1,29 +1,36 @@ import { useMemo, useEffect, useState, useRef } from "react"; -import { useNavigate, useParams } from "react-router-dom"; +import { useNavigate, useParams, useSearchParams } from "react-router-dom"; import { Formio, Form } from "@formio/react"; import { cloneDeep, isEqual } from "lodash"; import icons from "uswds/img/sprite.svg"; // --- -import { serverUrl, getData, postData } from "../config"; +import { serverUrl, messages, getData, postData } from "../config"; import { getUserInfo } from "../utilities"; -import { useFetchedBapApplicationSubmissions } from "routes/allRebates"; +import { + submissionNeedsEdits, + useFetchedFormSubmissions, + useCombinedSubmissions, + useSortedRebates, +} from "routes/allRebates"; import { Loading } from "components/loading"; import { Message } from "components/message"; import { MarkdownContent } from "components/markdownContent"; import { useContentState } from "contexts/content"; +import { useDialogDispatch } from "contexts/dialog"; import { useUserState } from "contexts/user"; import { useCsbState } from "contexts/csb"; import { useBapState } from "contexts/bap"; +import { useFormioSubmissionsState } from "contexts/formioSubmissions"; +import { + FormioSubmissionData, + FormioFetchedResponse, + useFormioFormState, + useFormioFormDispatch, +} from "contexts/formioForm"; import { usePageMessageState, usePageMessageDispatch, } from "contexts/pageMessage"; -import { - FormioSubmissionData, - FormioFetchedResponse, - usePageFormioState, - usePageFormioDispatch, -} from "contexts/pageFormio"; function PageMessage() { const { displayed, type, text } = usePageMessageState(); @@ -51,26 +58,45 @@ export function ApplicationForm() { function ApplicationFormContent({ email }: { email: string }) { const navigate = useNavigate(); const { mongoId } = useParams<"mongoId">(); // MongoDB ObjectId string + const [searchParams] = useSearchParams(); const { content } = useContentState(); const { csbData } = useCsbState(); - const { samEntities, applicationSubmissions: bapApplicationSubmissions } = - useBapState(); - const { formio } = usePageFormioState(); + const { samEntities, formSubmissions: bapFormSubmissions } = useBapState(); + const { + applicationSubmissions: formioApplicationSubmissions, + paymentRequestSubmissions: formioPaymentRequestSubmissions, + } = useFormioSubmissionsState(); + const { formio } = useFormioFormState(); + const dialogDispatch = useDialogDispatch(); + const formioFormDispatch = useFormioFormDispatch(); const pageMessageDispatch = usePageMessageDispatch(); - const pageFormioDispatch = usePageFormioDispatch(); + + // reset formio form state since it's used across pages + useEffect(() => { + formioFormDispatch({ type: "RESET_FORMIO_DATA" }); + }, [formioFormDispatch]); // reset page message state since it's used across pages useEffect(() => { pageMessageDispatch({ type: "RESET_MESSAGE" }); }, [pageMessageDispatch]); - // reset page formio state since it's used across pages + useFetchedFormSubmissions(); + + const combinedRebates = useCombinedSubmissions(); + const sortedRebates = useSortedRebates(combinedRebates); + + // log combined 'sortedRebates' array if 'debug' search parameter exists useEffect(() => { - pageFormioDispatch({ type: "RESET_FORMIO_DATA" }); - }, [pageFormioDispatch]); + if (searchParams.has("debug") && sortedRebates.length > 0) { + console.log(sortedRebates); + } + }, [searchParams, sortedRebates]); - useFetchedBapApplicationSubmissions(); + // create ref to store when form is being submitted, so it can be referenced + // in the Form component's `onSubmit` event prop, to prevent double submits + const formIsBeingSubmitted = useRef(false); // set when form submission data is initially fetched, and then re-set each // time a successful update of the submission data is posted to forms.gov @@ -89,7 +115,7 @@ function ApplicationFormContent({ email }: { email: string }) { useState({}); useEffect(() => { - pageFormioDispatch({ type: "FETCH_FORMIO_DATA_REQUEST" }); + formioFormDispatch({ type: "FETCH_FORMIO_DATA_REQUEST" }); getData(`${serverUrl}/api/formio-application-submission/${mongoId}`) .then((res: FormioFetchedResponse) => { @@ -113,15 +139,15 @@ function ApplicationFormContent({ email }: { email: string }) { return data; }); - pageFormioDispatch({ + formioFormDispatch({ type: "FETCH_FORMIO_DATA_SUCCESS", payload: { data: res }, }); }) .catch((err) => { - pageFormioDispatch({ type: "FETCH_FORMIO_DATA_FAILURE" }); + formioFormDispatch({ type: "FETCH_FORMIO_DATA_FAILURE" }); }); - }, [mongoId, pageFormioDispatch]); + }, [mongoId, formioFormDispatch]); if (formio.status === "idle") { return null; @@ -150,28 +176,134 @@ function ApplicationFormContent({ email }: { email: string }) { if ( email === "" || csbData.status !== "success" || - samEntities.status !== "success" || - bapApplicationSubmissions.status !== "success" + samEntities.status !== "success" + ) { + return ; + } + + if ( + bapFormSubmissions.status === "idle" || + bapFormSubmissions.status === "pending" || + formioApplicationSubmissions.status === "idle" || + formioApplicationSubmissions.status === "pending" || + formioPaymentRequestSubmissions.status === "idle" || + formioPaymentRequestSubmissions.status === "pending" ) { return ; } - const { enrollmentClosed } = csbData.data; + if ( + bapFormSubmissions.status === "failure" || + formioApplicationSubmissions.status === "failure" || + formioPaymentRequestSubmissions.status === "failure" + ) { + return ; + } + + const applicationFormOpen = csbData.data.submissionPeriodOpen.application; - const match = bapApplicationSubmissions.data.find((bapSubmission) => { - return bapSubmission.CSB_Form_ID__c === mongoId; + const rebate = sortedRebates.find((item) => { + return item.application.formio._id === mongoId; }); - const bap = { - rebateId: match?.Parent_Rebate_ID__c || null, - rebateStatus: match?.Parent_CSB_Rebate__r?.CSB_Rebate_Status__c || null, - }; + const applicationNeedsEdits = !rebate + ? false + : submissionNeedsEdits({ + formio: rebate.application.formio, + bap: rebate.application.bap, + }); + + const applicationNeedsEditsAndPaymentRequestExists = + applicationNeedsEdits && rebate?.paymentRequest.formio; + + // NOTE: If the Application form submission needs edits and there's a + // corresponding Payment Request form submission, display a confirmation + // dialog prompting the user to delete the Payment Request form submission, + // as it's data will no longer valid when the Application form submission's + // data is changed. + if (applicationNeedsEditsAndPaymentRequestExists) { + dialogDispatch({ + type: "DISPLAY_DIALOG", + payload: { + dismissable: true, + heading: "Submission Edits Requested", + description: ( + <> +

    + This Application form submission requires edits, but before you + can make edits, the associated Payment Request form submission + needs to be deleted. +

    +

    + If you’d like to view the Payment Request form submission instead, + please close this dialog box, and you will be re-directed to the + associated Payment Request form submission page. +

    +

    + If you’d like to proceed with deleting the associated Payment + Request Form submission, please select the{" "} + Delete Payment Request Form Submission button + below, and the Payment Request Form submission will be deleted. +

    +

    + + Please note: once deleted, the submission will be removed from + your dashboard and cannot be recovered. + +

    + + ), + confirmText: "Delete Payment Request Form Submission", + confirmedAction: () => { + const paymentRequest = rebate.paymentRequest.formio; + + if (!paymentRequest) { + const text = `Please notify the helpdesk that a problem exists preventing the deletion of Payment Request form submission ${rebate.rebateId}.`; + pageMessageDispatch({ + type: "DISPLAY_MESSAGE", + payload: { type: "error", text }, + }); + + // NOTE: logging rebate for helpdesk debugging purposes + console.log(rebate); + return; + } + + const text = `Deleting Payment Request form submission ${rebate.rebateId}...`; + pageMessageDispatch({ + type: "DISPLAY_MESSAGE", + payload: { type: "info", text }, + }); + + postData( + `${serverUrl}/api/delete-formio-payment-request-submission`, + { + mongoId: paymentRequest._id, + rebateId: paymentRequest.data.hidden_bap_rebate_id, + comboKey: paymentRequest.data.bap_hidden_entity_combo_key, + } + ) + .then((res) => { + window.location.reload(); + }) + .catch((err) => { + const text = `Error deleting Payment Request form submission ${rebate.rebateId}. Please reload the page to attempt the deletion again, or contact the helpdesk if the problem persists.`; + pageMessageDispatch({ + type: "DISPLAY_MESSAGE", + payload: { type: "error", text }, + }); + }); + }, + dismissedAction: () => navigate(`/payment-request/${rebate.rebateId}`), + }, + }); - const submissionNeedsEdits = bap.rebateStatus === "Edits Requested"; + return ; + } const formIsReadOnly = - (enrollmentClosed && !submissionNeedsEdits) || - submission.state === "submitted"; + (submission.state === "submitted" || !applicationFormOpen) && + !applicationNeedsEdits; const entityComboKey = storedSubmissionData.bap_hidden_entity_combo_key; const entity = samEntities.data.entities.find((entity) => { @@ -215,7 +347,7 @@ function ApplicationFormContent({ email }: { email: string }) {
    - {bap.rebateId && ( + {rebate?.application.bap?.rebateId && (
  • - Rebate ID: {bap.rebateId} + Rebate ID: {rebate.application.bap.rebateId}
  • )} @@ -254,6 +386,12 @@ function ApplicationFormContent({ email }: { email: string }) { }) => { if (formIsReadOnly) return; + // account for when form is being submitted to prevent double submits + if (formIsBeingSubmitted.current) return; + if (onSubmitSubmission.state === "submitted") { + formIsBeingSubmitted.current = true; + } + const data = { ...onSubmitSubmission.data }; // remove `ncesDataSource` and `ncesDataLookup` fields @@ -293,19 +431,8 @@ function ApplicationFormContent({ email }: { email: string }) { setPendingSubmissionData({}); if (onSubmitSubmission.state === "submitted") { - pageMessageDispatch({ - type: "DISPLAY_MESSAGE", - payload: { - type: "success", - text: "Form successfully submitted.", - }, - }); - - setTimeout(() => { - pageMessageDispatch({ type: "RESET_MESSAGE" }); - navigate("/"); - }, 5000); - return; + const submissionSuccessMessage = `Application Form ${mongoId} successfully submitted.`; + navigate("/", { state: { submissionSuccessMessage } }); } if (onSubmitSubmission.state === "draft") { @@ -323,6 +450,8 @@ function ApplicationFormContent({ email }: { email: string }) { } }) .catch((err) => { + formIsBeingSubmitted.current = false; + pageMessageDispatch({ type: "DISPLAY_MESSAGE", payload: { diff --git a/app/client/src/routes/helpdesk.tsx b/app/client/src/routes/helpdesk.tsx index 35a18836..17754dcf 100644 --- a/app/client/src/routes/helpdesk.tsx +++ b/app/client/src/routes/helpdesk.tsx @@ -16,9 +16,9 @@ import { useUserState } from "contexts/user"; import { useCsbState } from "contexts/csb"; import { FormioFetchedResponse, - usePageFormioState, - usePageFormioDispatch, -} from "contexts/pageFormio"; + useFormioFormState, + useFormioFormDispatch, +} from "contexts/formioForm"; type FormType = "application" | "payment-request" | "close-out"; @@ -29,14 +29,14 @@ export function Helpdesk() { const dialogDispatch = useDialogDispatch(); const { epaUserData } = useUserState(); const { csbData } = useCsbState(); - const { formio } = usePageFormioState(); - const pageFormioDispatch = usePageFormioDispatch(); + const { formio } = useFormioFormState(); + const formioFormDispatch = useFormioFormDispatch(); const helpdeskAccess = useHelpdeskAccess(); - // reset page formio state since it's used across pages + // reset formio form state since it's used across pages useEffect(() => { - pageFormioDispatch({ type: "RESET_FORMIO_DATA" }); - }, [pageFormioDispatch]); + formioFormDispatch({ type: "RESET_FORMIO_DATA" }); + }, [formioFormDispatch]); const [formType, setFormType] = useState("application"); const [searchId, setSearchId] = useState(""); @@ -55,7 +55,10 @@ export function Helpdesk() { navigate("/", { replace: true }); } - const { enrollmentClosed } = csbData.data; + const applicationFormOpen = csbData.data.submissionPeriodOpen.application; + const paymentRequestFormOpen = + csbData.data.submissionPeriodOpen.paymentRequest; + const closeOutFormOpen = csbData.data.submissionPeriodOpen.closeOut; const { formSchema, submission } = formio.data; @@ -80,7 +83,7 @@ export function Helpdesk() { checked={formType === "application"} onChange={(ev) => { setFormType(ev.target.value as FormType); - pageFormioDispatch({ type: "RESET_FORMIO_DATA" }); + formioFormDispatch({ type: "RESET_FORMIO_DATA" }); }} />