diff --git a/.circleci/config.yml b/.circleci/config.yml index a84aa2642c..96c04af147 100644 --- a/.circleci/config.yml +++ b/.circleci/config.yml @@ -37,7 +37,8 @@ jobs: steps: - checkout - - browser-tools/install-chrome + - browser-tools/install-chrome: + chrome-version: "114.0.5735.90" - browser-tools/install-chromedriver - run: command: | @@ -284,17 +285,17 @@ parameters: default: false workflows: - test: + primary: when: not: << pipeline.parameters.is-nightly-run >> jobs: - lint - test - # - dependency-check + - dependency-check - deploy: requires: - test - # - dependency-check + - dependency-check nightly-run: when: << pipeline.parameters.is-nightly-run >> diff --git a/deploy-config/fecfile-web-app-dev-manifest.yml b/deploy-config/fecfile-web-app-dev-manifest.yml index 522d1a47be..c3df5b4ccc 100644 --- a/deploy-config/fecfile-web-app-dev-manifest.yml +++ b/deploy-config/fecfile-web-app-dev-manifest.yml @@ -3,6 +3,7 @@ applications: instances: 2 memory: 128M buildpack: https://github.com/cloudfoundry/nginx-buildpack.git + stack: cflinuxfs4 routes: - route: fecfile-web-app-dev.app.cloud.gov diff --git a/deploy-config/fecfile-web-app-prod-manifest.yml b/deploy-config/fecfile-web-app-prod-manifest.yml index e05a02b409..128c0531bc 100644 --- a/deploy-config/fecfile-web-app-prod-manifest.yml +++ b/deploy-config/fecfile-web-app-prod-manifest.yml @@ -3,6 +3,7 @@ applications: instances: 2 memory: 128M buildpack: https://github.com/cloudfoundry/nginx-buildpack.git + stack: cflinuxfs4 routes: - route: fecfile-web-app-prod.app.cloud.gov diff --git a/deploy-config/fecfile-web-app-stage-manifest.yml b/deploy-config/fecfile-web-app-stage-manifest.yml index 30f2ad37a6..427ba44016 100644 --- a/deploy-config/fecfile-web-app-stage-manifest.yml +++ b/deploy-config/fecfile-web-app-stage-manifest.yml @@ -3,6 +3,7 @@ applications: instances: 2 memory: 128M buildpack: https://github.com/cloudfoundry/nginx-buildpack.git + stack: cflinuxfs4 routes: - route: fecfile-web-app-stage.app.cloud.gov diff --git a/front-end/cypress.config.ts b/front-end/cypress.config.ts index f4f8804ebc..eee884ee41 100644 --- a/front-end/cypress.config.ts +++ b/front-end/cypress.config.ts @@ -5,6 +5,7 @@ import * as fs from 'fs'; export default defineConfig({ defaultCommandTimeout: 10000, projectId: 'x5egpz', + video: false, videosFolder: 'cypress/videos', screenshotsFolder: 'cypress/screenshots', screenshotOnRunFailure: true, @@ -45,7 +46,6 @@ export default defineConfig({ }); return require('./cypress/plugins/index.ts')(on, config); }, - baseUrl: 'http://localhost:4200', - experimentalSessionAndOrigin: true, + baseUrl: 'http://localhost:4200' }, }); diff --git a/front-end/cypress/e2e/pages/contactListPage.ts b/front-end/cypress/e2e/pages/contactListPage.ts index 6a6f9c3b76..cd0b172f42 100644 --- a/front-end/cypress/e2e/pages/contactListPage.ts +++ b/front-end/cypress/e2e/pages/contactListPage.ts @@ -86,17 +86,13 @@ export class ContactListPage { if (formData['contact_type'] == 'Candidate') { cy.get(alias).find('#candidate_id').safeType(formData['candidate_id']); - PageUtils.dropdownSetValue("p-dropdown[formcontrolname='candidate_office']", formData['candidate_office'], alias); + PageUtils.dropdownSetValue("p-dropdown[inputid='candidate_office']", formData['candidate_office'], alias); if (formData['candidate_office'] != 'Presidential') { - PageUtils.dropdownSetValue("p-dropdown[formcontrolname='candidate_state']", formData['candidate_state'], alias); + PageUtils.dropdownSetValue("p-dropdown[inputid='candidate_state']", formData['candidate_state'], alias); if (formData['candidate_office'] == 'House') { - PageUtils.dropdownSetValue( - "p-dropdown[formcontrolname='candidate_district']", - formData['candidate_district'], - alias - ); + PageUtils.dropdownSetValue("p-dropdown[inputid='candidate_district']", formData['candidate_district'], alias); } } } diff --git a/front-end/cypress/e2e/pages/f3xTransactionListPage.ts b/front-end/cypress/e2e/pages/f3xTransactionListPage.ts index f1f02cac6b..0de0e64cc3 100644 --- a/front-end/cypress/e2e/pages/f3xTransactionListPage.ts +++ b/front-end/cypress/e2e/pages/f3xTransactionListPage.ts @@ -4,3 +4,16 @@ export class TransactionListPage { cy.contains('button', menuItem).click(); } } + +export enum TransactionTableColumns { + line_number = 0, + transaction_type = 1, + name = 2, + date = 3, + memo_code = 4, + amount = 5, + aggregate = 6, + transaction_id = 7, + parent_id = 8, + actions = 9, +} diff --git a/front-end/cypress/e2e/pages/profileAccountPage.ts b/front-end/cypress/e2e/pages/profileAccountPage.ts index 4557990a03..0879784232 100644 --- a/front-end/cypress/e2e/pages/profileAccountPage.ts +++ b/front-end/cypress/e2e/pages/profileAccountPage.ts @@ -1,7 +1,9 @@ export class ProfileAccountPage { static goToPage() { + cy.intercept('/profile').as('account'); cy.visit('/dashboard'); - cy.get('.p-menubar').find('.p-menuitem-link').contains('Profile').click(); + cy.get('.p-menubar').find('.p-menuitem-link > span > .header-navbar-icon[alt="Profile"]').click(); cy.get('[href="/profile/account"]').click(); + cy.location('pathname').should('include', '/account'); } } diff --git a/front-end/cypress/e2e/pages/profileUserListPage.ts b/front-end/cypress/e2e/pages/profileUserListPage.ts index 0cbf235b5c..6db9151cad 100644 --- a/front-end/cypress/e2e/pages/profileUserListPage.ts +++ b/front-end/cypress/e2e/pages/profileUserListPage.ts @@ -1,7 +1,8 @@ export class ProfileUserListPage { static goToPage() { cy.visit('/dashboard'); - cy.get('.p-menubar').find('.p-menuitem-link').contains('Profile').click(); + cy.get('.p-menubar').find('.p-menuitem-link > span > .header-navbar-icon[alt="Profile"]').click(); cy.get('[href="/committee/users"]').click(); + cy.location('pathname').should('include', '/users'); } } diff --git a/front-end/cypress/e2e/profile.cy.ts b/front-end/cypress/e2e/profile.cy.ts index b38fa5d88e..feaf5612fd 100644 --- a/front-end/cypress/e2e/profile.cy.ts +++ b/front-end/cypress/e2e/profile.cy.ts @@ -7,7 +7,7 @@ describe('Manage profile', () => { LoginPage.login(); }); - xit('Can view the Account Info page', () => { + it('Can view the Account Info page', () => { ProfileAccountPage.goToPage(); cy.runLighthouse('profile', 'account-info'); diff --git a/front-end/cypress/e2e/reports-f3x-transactions.cy.ts b/front-end/cypress/e2e/reports-f3x-transactions.cy.ts index 006e0cc0d6..144c9b44da 100644 --- a/front-end/cypress/e2e/reports-f3x-transactions.cy.ts +++ b/front-end/cypress/e2e/reports-f3x-transactions.cy.ts @@ -1,5 +1,6 @@ import { ContactListPage, defaultFormData as defaultContactFormData } from './pages/contactListPage'; import { defaultFormData as defaultReportFormData, F3xCreateReportPage } from './pages/f3xCreateReportPage'; +import { TransactionTableColumns } from './pages/f3xTransactionListPage'; import { LoginPage } from './pages/loginPage'; import { PageUtils } from './pages/pageUtils'; import { ReportListPage } from './pages/reportListPage'; @@ -152,7 +153,7 @@ describe('Transactions', () => { ...{ purpose_description: '' }, }; TransactionDetailPage.enterFormData(formTransactionData); - PageUtils.dropdownSetValue('[data-test="navigation-control-dropdown"]', 'Partnership Memo'); + PageUtils.dropdownSetValue('[data-test="navigation-control-dropdown"]', 'Partnership Attribution'); cy.contains('Confirm').should('exist'); PageUtils.clickButton('Continue'); @@ -172,8 +173,8 @@ describe('Transactions', () => { // Create a second memo transaction so we can check the aggregate value PageUtils.clickLink('Partnership Receipt'); - PageUtils.dropdownSetValue('[data-test="navigation-control-dropdown"]', 'Partnership Memo'); - cy.contains('Partnership Memo').wait(500); + PageUtils.dropdownSetValue('[data-test="navigation-control-dropdown"]', 'Partnership Attribution'); + cy.contains('Partnership Attribution').wait(500); cy.get('[role="searchbox"]').type(defaultContactFormData['last_name'].slice(0, 1)); cy.contains(defaultContactFormData['last_name']).should('exist'); cy.contains(defaultContactFormData['last_name']).click(); @@ -182,22 +183,28 @@ describe('Transactions', () => { // Assert transaction list table is correct cy.get('tbody tr').eq(0).as('row-1'); - cy.get('@row-1').find('td').eq(0).should('contain', 'Partnership Memo'); - cy.get('@row-1').find('td').eq(0).should('not.contain', 'Unitemized'); - cy.get('@row-1').find('td').eq(3).should('contain', 'Y'); - cy.get('@row-1').find('td').eq(5).should('contain', '$201.10'); + cy.get('@row-1') + .find('td') + .eq(TransactionTableColumns.transaction_type) + .should('contain', 'Partnership Attribution'); + cy.get('@row-1').find('td').eq(TransactionTableColumns.transaction_type).should('not.contain', 'Unitemized'); + cy.get('@row-1').find('td').eq(TransactionTableColumns.memo_code).should('contain', 'Y'); + cy.get('@row-1').find('td').eq(TransactionTableColumns.aggregate).should('contain', '$201.10'); cy.get('tbody tr').eq(1).as('row-2'); - cy.get('@row-2').find('td').eq(0).should('contain', 'Partnership Memo'); - cy.get('@row-2').find('td').eq(0).should('contain', 'Unitemized'); - cy.get('@row-2').find('td').eq(3).should('contain', 'Y'); - cy.get('@row-2').find('td').eq(5).should('contain', '$100.55'); + cy.get('@row-2').find('td').eq(TransactionTableColumns.transaction_type).should('contain', 'Partnership Receipt'); + cy.get('@row-2').find('td').eq(TransactionTableColumns.transaction_type).should('contain', 'Unitemized'); + cy.get('@row-2').find('td').eq(TransactionTableColumns.memo_code).should('not.contain', 'Y'); + cy.get('@row-2').find('td').eq(TransactionTableColumns.aggregate).should('contain', '$100.55'); cy.get('tbody tr').eq(2).as('row-3'); - cy.get('@row-3').find('td').eq(0).should('contain', 'Partnership Receipt'); - cy.get('@row-3').find('td').eq(0).should('contain', 'Unitemized'); - cy.get('@row-3').find('td').eq(3).should('not.contain', 'Y'); - cy.get('@row-3').find('td').eq(5).should('contain', '$100.55'); + cy.get('@row-3') + .find('td') + .eq(TransactionTableColumns.transaction_type) + .should('contain', 'Partnership Attribution'); + cy.get('@row-3').find('td').eq(TransactionTableColumns.transaction_type).should('contain', 'Unitemized'); + cy.get('@row-3').find('td').eq(TransactionTableColumns.memo_code).should('contain', 'Y'); + cy.get('@row-3').find('td').eq(TransactionTableColumns.aggregate).should('contain', '$100.55'); // Check form values of receipt form PageUtils.clickLink('Partnership Receipt'); @@ -211,7 +218,7 @@ describe('Transactions', () => { PageUtils.clickButton('Cancel'); // Check form values of memo form - cy.get('tbody tr').first().contains('a', 'Partnership Memo').click(); + cy.get('tbody tr').first().contains('a', 'Partnership Attribution').click(); cy.get('#entity_type_dropdown > div.p-disabled').should('exist'); cy.get('#entity_type_dropdown').should('contain', 'Individual'); ContactListPage.assertFormData(defaultContactFormData, true); @@ -276,11 +283,6 @@ describe('Transactions', () => { const transactionFormData = { ...defaultTransactionFormData, - ...{ - electionType: 'General', - electionYear: 2024, - election_other_description: PageUtils.randomString(10), - }, }; TransactionDetailPage.enterFormData(transactionFormData); PageUtils.clickButton('Save'); @@ -356,7 +358,6 @@ describe('Transactions', () => { PageUtils.clickLink('Earmark Receipt'); // Enter STEP ONE transaction - PageUtils.clickLink('STEP ONE'); cy.get('p-accordiontab').first().as('stepOneAccordion'); PageUtils.clickLink('Create a new contact', '@stepOneAccordion'); ContactListPage.enterFormData(defaultContactFormData, true, '@stepOneAccordion'); @@ -386,23 +387,22 @@ describe('Transactions', () => { // Assert transaction list table is correct cy.get('tbody tr').eq(0).as('row-1'); - cy.get('@row-1').find('td').eq(0).should('contain', 'Earmark Memo'); - cy.get('@row-1').find('td').eq(1).should('contain', defaultContactFormData['name']); - cy.get('@row-1').find('td').eq(3).should('contain', 'Y'); - cy.get('@row-1').find('td').eq(5).should('contain', '$100.55'); - - cy.get('tbody tr').eq(1).as('row-2'); - cy.get('@row-2').find('td').eq(0).should('contain', 'Earmark Receipt'); - cy.get('@row-2') + cy.get('@row-1').find('td').eq(TransactionTableColumns.transaction_type).should('contain', 'Earmark Receipt'); + cy.get('@row-1') .find('td') - .eq(1) + .eq(TransactionTableColumns.name) .should('contain', `${defaultContactFormData['last_name']}, ${defaultContactFormData['first_name']}`); - cy.get('@row-2').find('td').eq(3).should('not.contain', 'Y'); - cy.get('@row-2').find('td').eq(5).should('contain', '$100.55'); + cy.get('@row-1').find('td').eq(TransactionTableColumns.memo_code).should('not.contain', 'Y'); + cy.get('@row-1').find('td').eq(TransactionTableColumns.aggregate).should('contain', '$100.55'); + + cy.get('tbody tr').eq(1).as('row-2'); + cy.get('@row-2').find('td').eq(TransactionTableColumns.transaction_type).should('contain', 'Earmark Memo'); + cy.get('@row-2').find('td').eq(TransactionTableColumns.name).should('contain', defaultContactFormData['name']); + cy.get('@row-2').find('td').eq(TransactionTableColumns.memo_code).should('contain', 'Y'); + cy.get('@row-2').find('td').eq(TransactionTableColumns.aggregate).should('contain', '$100.55'); // Check form values of receipt edit form PageUtils.clickLink('Earmark Receipt'); - PageUtils.clickLink('STEP ONE'); cy.get('@stepOneAccordion').find('#entity_type_dropdown > div.p-disabled').should('exist'); cy.get('@stepOneAccordion').find('#entity_type_dropdown').should('contain', 'Individual'); ContactListPage.assertFormData(defaultContactFormData, true, '@stepOneAccordion'); @@ -438,7 +438,6 @@ describe('Transactions', () => { PageUtils.clickLink('PAC Earmark Receipt'); // Enter STEP ONE transaction - PageUtils.clickLink('STEP ONE'); cy.get('p-accordiontab').first().as('stepOneAccordion'); PageUtils.clickLink('Create a new contact', '@stepOneAccordion'); const stepOneContactFormData = { ...defaultContactFormData, ...{ contact_type: 'Committee' } }; @@ -470,19 +469,19 @@ describe('Transactions', () => { // Assert transaction list table is correct cy.get('tbody tr').eq(0).as('row-1'); - cy.get('@row-1').find('td').eq(0).should('contain', 'PAC Earmark Memo'); - cy.get('@row-1') - .find('td') - .eq(1) - .should('contain', `${stepOneContactFormData['last_name']}, ${stepOneContactFormData['first_name']}`); - cy.get('@row-1').find('td').eq(3).should('contain', 'Y'); - cy.get('@row-1').find('td').eq(5).should('contain', '$100.55'); + cy.get('@row-1').find('td').eq(TransactionTableColumns.transaction_type).should('contain', 'PAC Earmark Receipt'); + cy.get('@row-1').find('td').eq(TransactionTableColumns.name).should('contain', defaultContactFormData['name']); + cy.get('@row-1').find('td').eq(TransactionTableColumns.memo_code).should('not.contain', 'Y'); + cy.get('@row-1').find('td').eq(TransactionTableColumns.aggregate).should('contain', '$100.55'); cy.get('tbody tr').eq(1).as('row-2'); - cy.get('@row-2').find('td').eq(0).should('contain', 'PAC Earmark Receipt'); - cy.get('@row-2').find('td').eq(1).should('contain', defaultContactFormData['name']); - cy.get('@row-2').find('td').eq(3).should('not.contain', 'Y'); - cy.get('@row-2').find('td').eq(5).should('contain', '$100.55'); + cy.get('@row-2').find('td').eq(TransactionTableColumns.transaction_type).should('contain', 'PAC Earmark Memo'); + cy.get('@row-2') + .find('td') + .eq(TransactionTableColumns.name) + .should('contain', `${stepOneContactFormData['last_name']}, ${stepOneContactFormData['first_name']}`); + cy.get('@row-2').find('td').eq(TransactionTableColumns.memo_code).should('contain', 'Y'); + cy.get('@row-2').find('td').eq(TransactionTableColumns.aggregate).should('contain', '$100.55'); // Check form values of receipt edit form PageUtils.clickLink('PAC Earmark Receipt'); @@ -555,7 +554,7 @@ describe('Transactions', () => { ...{ purpose_description: '' }, }; TransactionDetailPage.enterFormData(tier2TransactionData); - PageUtils.dropdownSetValue('[data-test="navigation-control-dropdown"]', 'Partnership Individual'); + PageUtils.dropdownSetValue('[data-test="navigation-control-dropdown"]', 'Individual'); cy.contains('Confirm').should('exist'); PageUtils.clickButton('Continue'); @@ -579,23 +578,32 @@ describe('Transactions', () => { // Assert transaction list table is correct cy.get('tbody tr').eq(0).as('row-1'); - cy.get('@row-1').find('td').eq(0).should('contain', 'Partnership Individual Joint Fundraising Transfer Memo'); - cy.get('@row-1').find('td').eq(0).should('contain', 'Unitemized'); - cy.get('@row-1').find('td').eq(3).should('contain', 'Y'); - cy.get('@row-1').find('td').eq(5).should('contain', '$100.55'); + cy.get('@row-1') + .find('td') + .as('joint_fundraising_transfer_link') + .eq(TransactionTableColumns.transaction_type) + .should('contain', 'Joint Fundraising Transfer'); + cy.get('@row-1').find('td').eq(TransactionTableColumns.transaction_type).should('not.contain', 'Unitemized'); + cy.get('@row-1').find('td').eq(TransactionTableColumns.memo_code).should('not.contain', 'Y'); + cy.get('@row-1').find('td').eq(TransactionTableColumns.aggregate).should('contain', '$100.55'); cy.get('tbody tr').eq(1).as('row-2'); - cy.get('@row-2').find('td').eq(0).should('contain', 'Partnership Receipt Joint Fundraising Transfer Memo'); - cy.get('@row-2').find('td').eq(0).should('contain', 'Unitemized'); - cy.get('@row-2').find('td').eq(3).should('contain', 'Y'); - cy.get('@row-2').find('td').eq(5).should('contain', '$100.55'); + cy.get('@row-2') + .find('td') + .eq(TransactionTableColumns.transaction_type) + .should('contain', 'Partnership Receipt Joint Fundraising Transfer Memo'); + cy.get('@row-2').find('td').eq(TransactionTableColumns.transaction_type).should('contain', 'Unitemized'); + cy.get('@row-2').find('td').eq(TransactionTableColumns.memo_code).should('contain', 'Y'); + cy.get('@row-2').find('td').eq(TransactionTableColumns.aggregate).should('contain', '$100.55'); cy.get('tbody tr').eq(2).as('row-3'); - cy.get('@row-3').find('td').as('joint_fundraising_transfer_link').eq( - 0).should('contain', 'Joint Fundraising Transfer'); - cy.get('@row-3').find('td').eq(0).should('not.contain', 'Unitemized'); - cy.get('@row-3').find('td').eq(3).should('not.contain', 'Y'); - cy.get('@row-3').find('td').eq(5).should('contain', '$100.55'); + cy.get('@row-3') + .find('td') + .eq(TransactionTableColumns.transaction_type) + .should('contain', 'Individual Joint Fundraising Transfer Memo'); + cy.get('@row-3').find('td').eq(TransactionTableColumns.transaction_type).should('not.contain', 'Unitemized'); + cy.get('@row-3').find('td').eq(TransactionTableColumns.memo_code).should('contain', 'Y'); + cy.get('@row-3').find('td').eq(TransactionTableColumns.aggregate).should('contain', '$100.55'); // Check form values of receipt form PageUtils.clickLink('Joint Fundraising Transfer', '@joint_fundraising_transfer_link'); diff --git a/front-end/cypress/e2e/reports-f3x.cy.ts b/front-end/cypress/e2e/reports-f3x.cy.ts index 518342000d..fb8a0cc5f2 100644 --- a/front-end/cypress/e2e/reports-f3x.cy.ts +++ b/front-end/cypress/e2e/reports-f3x.cy.ts @@ -104,7 +104,7 @@ describe('Manage reports', () => { cy.get('app-error-messages[fieldname="coverage_through_date"]').should('contain', errorMessage); }); - it('Create report with previous existing report types disabled', () => { + xit('Create report with previous existing report types disabled', () => { // Create report #1 ReportListPage.clickCreateButton(); const formData = { ...defaultFormData }; diff --git a/front-end/cypress/tsconfig.json b/front-end/cypress/tsconfig.json index 79d78d7ec9..50638f5e54 100644 --- a/front-end/cypress/tsconfig.json +++ b/front-end/cypress/tsconfig.json @@ -3,6 +3,7 @@ "include": ["**/*.ts"], "compilerOptions": { "sourceMap": false, - "types": ["cypress"] + "types": ["cypress"], + "target": "ES6" } } diff --git a/front-end/package-lock.json b/front-end/package-lock.json index 407ce2cbe9..d70e2f5195 100644 --- a/front-end/package-lock.json +++ b/front-end/package-lock.json @@ -23,7 +23,7 @@ "@types/ws": "8.5.4", "bootstrap": "5.1.3", "class-transformer": "^0.5.1", - "fecfile-validate": "https://github.com/fecgov/fecfile-validate#d3aa0b66f11cfc8e09b6e1fb81f7678db15fd0ae", + "fecfile-validate": "https://github.com/fecgov/fecfile-validate#d313a8bf821a2bc0957b16a7c899544de898281e", "intl-tel-input": "^17.0.18", "jwt-decode": "^3.1.2", "lodash": "^4.17.21", @@ -48,8 +48,8 @@ "@angular-eslint/template-parser": "^16.0.3", "@angular/cli": "^16.1.0", "@angular/compiler-cli": "~16.1.1", - "@cypress-audit/lighthouse": "^1.3.1", - "@cypress/schematic": "^1.6.0", + "@cypress-audit/lighthouse": "^1.4.2", + "@cypress/schematic": "^2.5.0", "@types/intl-tel-input": "^17.0.5", "@types/jasmine": "~3.10.0", "@types/lodash": "^4.14.178", @@ -57,8 +57,8 @@ "@types/node": "^12.11.1", "@typescript-eslint/eslint-plugin": "^5.43.0", "@typescript-eslint/parser": "^5.43.0", - "cypress": "^10.10.0", - "cypress-mochawesome-reporter": "^3.2.3", + "cypress": "^12.17.0", + "cypress-mochawesome-reporter": "^3.5.1", "eslint": "^8.28.0", "glob": "^7.2.0", "jasmine-core": "~4.0.0", @@ -95,12 +95,12 @@ } }, "node_modules/@angular-devkit/architect": { - "version": "0.1601.3", - "resolved": "https://registry.npmjs.org/@angular-devkit/architect/-/architect-0.1601.3.tgz", - "integrity": "sha512-HvW51cCEoIYe2mYqcmnm2RZiMMFbFn7iIdsjbCJe7etFhcG+Y3hGDZMh4IFSiQiss+pwPSYOvQY2zwGrndMgLw==", + "version": "0.1601.7", + "resolved": "https://registry.npmjs.org/@angular-devkit/architect/-/architect-0.1601.7.tgz", + "integrity": "sha512-uFa7/TTPYoYLqgiRi5HZJaOXterVe9A83Sd+e3NXMmvT6oTMyLv0/t0Luhjic6c4vFrNnF3ECkrlGs2qW4TslA==", "dev": true, "dependencies": { - "@angular-devkit/core": "16.1.3", + "@angular-devkit/core": "16.1.7", "rxjs": "7.8.1" }, "engines": { @@ -110,17 +110,17 @@ } }, "node_modules/@angular-devkit/build-angular": { - "version": "16.1.3", - "resolved": "https://registry.npmjs.org/@angular-devkit/build-angular/-/build-angular-16.1.3.tgz", - "integrity": "sha512-1scrdUdKRa9TkJ9jev/KRzFttbLUVACQvVRL0G67nUAdtJ/bQX8eui85axpCNPFihK4ReSW3R4lrgcVC2NUSoA==", + "version": "16.1.7", + "resolved": "https://registry.npmjs.org/@angular-devkit/build-angular/-/build-angular-16.1.7.tgz", + "integrity": "sha512-zUkPH3QDpA//hhMjMm9pKcbhO2gZjy4EkWrPglvR6G6a0myZc6/rEYK3W8gQWP1jiYiha/PiGnxTb+XeN/74tQ==", "dev": true, "dependencies": { "@ampproject/remapping": "2.2.1", - "@angular-devkit/architect": "0.1601.3", - "@angular-devkit/build-webpack": "0.1601.3", - "@angular-devkit/core": "16.1.3", + "@angular-devkit/architect": "0.1601.7", + "@angular-devkit/build-webpack": "0.1601.7", + "@angular-devkit/core": "16.1.7", "@babel/core": "7.22.5", - "@babel/generator": "7.22.5", + "@babel/generator": "7.22.7", "@babel/helper-annotate-as-pure": "7.22.5", "@babel/helper-split-export-declaration": "7.22.5", "@babel/plugin-proposal-async-generator-functions": "7.20.7", @@ -130,7 +130,7 @@ "@babel/runtime": "7.22.5", "@babel/template": "7.22.5", "@discoveryjs/json-ext": "0.5.7", - "@ngtools/webpack": "16.1.3", + "@ngtools/webpack": "16.1.7", "@vitejs/plugin-basic-ssl": "1.0.1", "ansi-colors": "4.1.3", "autoprefixer": "10.4.14", @@ -232,9 +232,9 @@ } }, "node_modules/@angular-devkit/build-angular/node_modules/@types/node": { - "version": "20.3.2", - "resolved": "https://registry.npmjs.org/@types/node/-/node-20.3.2.tgz", - "integrity": "sha512-vOBLVQeCQfIcF/2Y7eKFTqrMnizK5lRNQ7ykML/5RuwVXVWxYkgwS7xbt4B6fKCUPgbSL5FSsjHQpaGQP/dQmw==", + "version": "20.4.7", + "resolved": "https://registry.npmjs.org/@types/node/-/node-20.4.7.tgz", + "integrity": "sha512-bUBrPjEry2QUTsnuEjzjbS7voGWCc30W0qzgMf90GPeDGFRakvrz47ju+oqDAKCXLUCe39u57/ORMl/O/04/9g==", "dev": true, "optional": true, "peer": true @@ -306,12 +306,12 @@ } }, "node_modules/@angular-devkit/build-webpack": { - "version": "0.1601.3", - "resolved": "https://registry.npmjs.org/@angular-devkit/build-webpack/-/build-webpack-0.1601.3.tgz", - "integrity": "sha512-744+72vi/Vx010VxizGgilhpnDCOG29qyhMmu7BkUhtpq8E8eQn2HU3nPpxAqrg3bKVAwD7v3F111MVIhub8kA==", + "version": "0.1601.7", + "resolved": "https://registry.npmjs.org/@angular-devkit/build-webpack/-/build-webpack-0.1601.7.tgz", + "integrity": "sha512-BFqjL9mz0gtS10ucwmx7fFb1PprBzt6glN7ZEGhx58tterW68N9zZNFHR0AXmWoyVp/1B2oJWmqAQ52fakyshg==", "dev": true, "dependencies": { - "@angular-devkit/architect": "0.1601.3", + "@angular-devkit/architect": "0.1601.7", "rxjs": "7.8.1" }, "engines": { @@ -325,9 +325,9 @@ } }, "node_modules/@angular-devkit/core": { - "version": "16.1.3", - "resolved": "https://registry.npmjs.org/@angular-devkit/core/-/core-16.1.3.tgz", - "integrity": "sha512-cFhNdJHumNMZGD3NYxOtNuMGRQXeDnKbwvK+IJmKAttXt8na6EvURR/ZxZOI7rl/YRVX+vcNSdtXz3hE6g+Isw==", + "version": "16.1.7", + "resolved": "https://registry.npmjs.org/@angular-devkit/core/-/core-16.1.7.tgz", + "integrity": "sha512-AXc9/F57Nf/A26yGu+w7PhNYriTvwazPTQsVPW/SBcTcpBa/hAsBTbPl8o8ErRJneJIoYqy/EIuabf9iiU8bRA==", "dev": true, "dependencies": { "ajv": "8.12.0", @@ -351,12 +351,12 @@ } }, "node_modules/@angular-devkit/schematics": { - "version": "16.1.3", - "resolved": "https://registry.npmjs.org/@angular-devkit/schematics/-/schematics-16.1.3.tgz", - "integrity": "sha512-hWEuQnfQOgcSs4YX6iF4QR/34ROeSPaMi7lQOYg33hStg+pnk/JDdIU0f2nrIIz3t0jqAj+5VXVLBJvOCd84vg==", + "version": "16.1.7", + "resolved": "https://registry.npmjs.org/@angular-devkit/schematics/-/schematics-16.1.7.tgz", + "integrity": "sha512-FQ/svSrUyalHVxgudoXAJbwgdPZ1iaEc6My4s4ti2HFtw0vqPw7Dh9bkRiMN3/MGMAdvsUIBiz8oSELZhuJTJg==", "dev": true, "dependencies": { - "@angular-devkit/core": "16.1.3", + "@angular-devkit/core": "16.1.7", "jsonc-parser": "3.2.0", "magic-string": "0.30.0", "ora": "5.4.1", @@ -369,13 +369,13 @@ } }, "node_modules/@angular-eslint/builder": { - "version": "16.0.3", - "resolved": "https://registry.npmjs.org/@angular-eslint/builder/-/builder-16.0.3.tgz", - "integrity": "sha512-pv/CrnOHHOnBqhyBmqUPsIHKXOHYMJztxYJ83tjxeXL5Moyu5e6CBMIQ58UtqmgWfEIA3n7owYy9KvHTJcemyQ==", + "version": "16.1.0", + "resolved": "https://registry.npmjs.org/@angular-eslint/builder/-/builder-16.1.0.tgz", + "integrity": "sha512-KIkE2SI1twFKoCiF/k2VR3ojOcc7TD1xPyY4kbUrx/Gxp+XEzar7O29I/ztzL4eHPBM+Uh3/NwS/jvjjBxjgAg==", "dev": true, "dependencies": { - "@nx/devkit": "16.2.2", - "nx": "16.2.2" + "@nx/devkit": "16.5.1", + "nx": "16.5.1" }, "peerDependencies": { "eslint": "^7.20.0 || ^8.0.0", @@ -383,19 +383,19 @@ } }, "node_modules/@angular-eslint/bundled-angular-compiler": { - "version": "16.0.3", - "resolved": "https://registry.npmjs.org/@angular-eslint/bundled-angular-compiler/-/bundled-angular-compiler-16.0.3.tgz", - "integrity": "sha512-8zwY6ustiPXBEF3+jELKVwGk6j2HJn7GHbqAhDFR02YiE27iRMSGTHIAWGs6ZI7F1JgfrIsOHrUgzC1x95K6rg==", + "version": "16.1.0", + "resolved": "https://registry.npmjs.org/@angular-eslint/bundled-angular-compiler/-/bundled-angular-compiler-16.1.0.tgz", + "integrity": "sha512-5EFAWXuFJADr3imo/ZYshY8s0K7U7wyysnE2LXnpT9PAi5rmkzt70UNZNRuamCbXr4tdIiu+fXWOj7tUuJKnnw==", "dev": true }, "node_modules/@angular-eslint/eslint-plugin": { - "version": "16.0.3", - "resolved": "https://registry.npmjs.org/@angular-eslint/eslint-plugin/-/eslint-plugin-16.0.3.tgz", - "integrity": "sha512-1c+dFytcQDOA2wJ8/rtydMV6UYq1BgVfOcBXOr0WJxC9g8Cad9czcUOkW41WGrTp5kICMliV0ypH5eEaCM2WDQ==", + "version": "16.1.0", + "resolved": "https://registry.npmjs.org/@angular-eslint/eslint-plugin/-/eslint-plugin-16.1.0.tgz", + "integrity": "sha512-BFzzJJlgQgWc8avdSBkaDWAzNSUqcwWy0L1iZSBdXGoIOxj72kLbwe99emb8M+rUfCveljQkeM2pcYu8XLbJIA==", "dev": true, "dependencies": { - "@angular-eslint/utils": "16.0.3", - "@typescript-eslint/utils": "5.59.7" + "@angular-eslint/utils": "16.1.0", + "@typescript-eslint/utils": "5.62.0" }, "peerDependencies": { "eslint": "^7.20.0 || ^8.0.0", @@ -403,16 +403,16 @@ } }, "node_modules/@angular-eslint/eslint-plugin-template": { - "version": "16.0.3", - "resolved": "https://registry.npmjs.org/@angular-eslint/eslint-plugin-template/-/eslint-plugin-template-16.0.3.tgz", - "integrity": "sha512-OKTMWOjC7F5tdv7gm2tlmgyr/uVyS1RWJZn4X/6D6p0kOpiDXmajtbYHD5tzbshX2Ep62Nt+rg8+1XGHrU0ScA==", + "version": "16.1.0", + "resolved": "https://registry.npmjs.org/@angular-eslint/eslint-plugin-template/-/eslint-plugin-template-16.1.0.tgz", + "integrity": "sha512-wQHWR5vqWGgO7mqoG5ixXeplIlz/OmxBJE9QMLPTZE8GdaTx8+F/5J37OWh84zCpD3mOa/FHYZxBDm2MfUmA1Q==", "dev": true, "dependencies": { - "@angular-eslint/bundled-angular-compiler": "16.0.3", - "@angular-eslint/utils": "16.0.3", - "@typescript-eslint/type-utils": "5.59.7", - "@typescript-eslint/utils": "5.59.7", - "aria-query": "5.1.3", + "@angular-eslint/bundled-angular-compiler": "16.1.0", + "@angular-eslint/utils": "16.1.0", + "@typescript-eslint/type-utils": "5.62.0", + "@typescript-eslint/utils": "5.62.0", + "aria-query": "5.3.0", "axobject-query": "3.1.1" }, "peerDependencies": { @@ -421,16 +421,16 @@ } }, "node_modules/@angular-eslint/schematics": { - "version": "16.0.3", - "resolved": "https://registry.npmjs.org/@angular-eslint/schematics/-/schematics-16.0.3.tgz", - "integrity": "sha512-vRdSY0ovE+wfTvYeguPp/QAxvGejLADO8CzJkas0PxdCQiyLuTscKsYE82XcvX2kitMexvH71lNF0ggnGoMRXA==", + "version": "16.1.0", + "resolved": "https://registry.npmjs.org/@angular-eslint/schematics/-/schematics-16.1.0.tgz", + "integrity": "sha512-L1tmP3R2krHyveaRXAvn/SeDoBFNpS1VtPPrzZm1NYr1qPcAxf3NtG2nnoyVFu6WZGt59ZGHNQ/dZxnXvm0UGg==", "dev": true, "dependencies": { - "@angular-eslint/eslint-plugin": "16.0.3", - "@angular-eslint/eslint-plugin-template": "16.0.3", - "@nx/devkit": "16.2.2", + "@angular-eslint/eslint-plugin": "16.1.0", + "@angular-eslint/eslint-plugin-template": "16.1.0", + "@nx/devkit": "16.5.1", "ignore": "5.2.4", - "nx": "16.2.2", + "nx": "16.5.1", "strip-json-comments": "3.1.1", "tmp": "0.2.1" }, @@ -439,12 +439,12 @@ } }, "node_modules/@angular-eslint/template-parser": { - "version": "16.0.3", - "resolved": "https://registry.npmjs.org/@angular-eslint/template-parser/-/template-parser-16.0.3.tgz", - "integrity": "sha512-IAWdwp/S9QC3EMiVxSS0E3ABy9PSidN3PW0Ll2EtM3mzXMYlpZXmxqd+B1xV/xKWzhk1Mp04QX8hHfG6Vq+qaQ==", + "version": "16.1.0", + "resolved": "https://registry.npmjs.org/@angular-eslint/template-parser/-/template-parser-16.1.0.tgz", + "integrity": "sha512-DOQtzVehtbO7+BQ+FMOXRsxGRjHb3ve6M+S4qASKTiI+twtONjRODcHezD3N4PDkjpKPbOnk7YnFsHur5csUNw==", "dev": true, "dependencies": { - "@angular-eslint/bundled-angular-compiler": "16.0.3", + "@angular-eslint/bundled-angular-compiler": "16.1.0", "eslint-scope": "^7.0.0" }, "peerDependencies": { @@ -453,13 +453,13 @@ } }, "node_modules/@angular-eslint/utils": { - "version": "16.0.3", - "resolved": "https://registry.npmjs.org/@angular-eslint/utils/-/utils-16.0.3.tgz", - "integrity": "sha512-QsbUVHJLk+fE08/D4y3wOyGk1iX2LVSygw+uzilbaAXfjD5/c0Ei5FbVx2mMYPk+aOl4yrvGQW3dmetMiAR0MQ==", + "version": "16.1.0", + "resolved": "https://registry.npmjs.org/@angular-eslint/utils/-/utils-16.1.0.tgz", + "integrity": "sha512-u5XscYUq1F/7RuwyVIV2a280QL27lyQz434VYR+Np/oO21NGj5jxoRKb55xhXT9EFVs5Sy4JYeEUp6S75J/cUw==", "dev": true, "dependencies": { - "@angular-eslint/bundled-angular-compiler": "16.0.3", - "@typescript-eslint/utils": "5.59.7" + "@angular-eslint/bundled-angular-compiler": "16.1.0", + "@typescript-eslint/utils": "5.62.0" }, "peerDependencies": { "eslint": "^7.20.0 || ^8.0.0", @@ -467,9 +467,9 @@ } }, "node_modules/@angular/animations": { - "version": "16.1.3", - "resolved": "https://registry.npmjs.org/@angular/animations/-/animations-16.1.3.tgz", - "integrity": "sha512-ET6ahrlbOyTYXOTouKs2VJxx0CMTrYkfz0HfI6IHnSKBC6wguDxXYnamMouHgrCkDDEB5qClfGHyS9se0AOX4w==", + "version": "16.1.8", + "resolved": "https://registry.npmjs.org/@angular/animations/-/animations-16.1.8.tgz", + "integrity": "sha512-aIAf8EAZomgXMF6AP0wTPAc04Cvw+nL9nkEVwQNVxMByZpcbnnqHWHokLD8es8DzlwDT+EIZS4wZMBA4XUmPyA==", "dependencies": { "tslib": "^2.3.0" }, @@ -477,7 +477,7 @@ "node": "^16.14.0 || >=18.10.0" }, "peerDependencies": { - "@angular/core": "16.1.3" + "@angular/core": "16.1.8" } }, "node_modules/@angular/cdk": { @@ -497,15 +497,15 @@ } }, "node_modules/@angular/cli": { - "version": "16.1.3", - "resolved": "https://registry.npmjs.org/@angular/cli/-/cli-16.1.3.tgz", - "integrity": "sha512-D0gU12z/N2oJ+s6pggAnWYrTUZ+2duGb3Y5oUyClsubz7JWpAwHjSZpb8exPUrgYhr+qIEMGO685y1JazJQ2tA==", + "version": "16.1.7", + "resolved": "https://registry.npmjs.org/@angular/cli/-/cli-16.1.7.tgz", + "integrity": "sha512-RNmRytkCFqmkGiiy6IrLEvKkipTEeZW1Un2aKbaPBM8qqfZCeUx8TfU+G4DI4w1jvJ8IwzkYQLAi4NPk1DPxmQ==", "dev": true, "dependencies": { - "@angular-devkit/architect": "0.1601.3", - "@angular-devkit/core": "16.1.3", - "@angular-devkit/schematics": "16.1.3", - "@schematics/angular": "16.1.3", + "@angular-devkit/architect": "0.1601.7", + "@angular-devkit/core": "16.1.7", + "@angular-devkit/schematics": "16.1.7", + "@schematics/angular": "16.1.7", "@yarnpkg/lockfile": "1.1.0", "ansi-colors": "4.1.3", "ini": "4.1.1", @@ -531,9 +531,9 @@ } }, "node_modules/@angular/common": { - "version": "16.1.3", - "resolved": "https://registry.npmjs.org/@angular/common/-/common-16.1.3.tgz", - "integrity": "sha512-ZzJ6EwQHUkiZYV0zH/UxyUYW5uxomsyk7tdtqZIxAR5m2ktYkQ5XlqgPjBO8voF54Rs5Ot43RkPCLesbZyJDsw==", + "version": "16.1.8", + "resolved": "https://registry.npmjs.org/@angular/common/-/common-16.1.8.tgz", + "integrity": "sha512-Zm+Ysxdf74VwG3mbAqs2v1QFUR+h9RyJBXF5VFABEpgFw7NUOBKrayjJmKjgZ0TBAmL2+nXehJgcPph3zNp3sg==", "dependencies": { "tslib": "^2.3.0" }, @@ -541,14 +541,14 @@ "node": "^16.14.0 || >=18.10.0" }, "peerDependencies": { - "@angular/core": "16.1.3", + "@angular/core": "16.1.8", "rxjs": "^6.5.3 || ^7.4.0" } }, "node_modules/@angular/compiler": { - "version": "16.1.3", - "resolved": "https://registry.npmjs.org/@angular/compiler/-/compiler-16.1.3.tgz", - "integrity": "sha512-7Ckvssk9+s5xLyXvp72IwAw5vd/Osa3tR6oiQatdbw+O3XjLO04QycoGXwkp/fYVexGsjFyOn6QJ5n1F/PYPbQ==", + "version": "16.1.8", + "resolved": "https://registry.npmjs.org/@angular/compiler/-/compiler-16.1.8.tgz", + "integrity": "sha512-jF2zk3LjrcI/xpjJG6yoLiL2t2l5227i8SjhRUawAL1sy0xtb/PiSLjCNhuSgyixbB/8az/YezZe11MSg48FDg==", "dependencies": { "tslib": "^2.3.0" }, @@ -556,7 +556,7 @@ "node": "^16.14.0 || >=18.10.0" }, "peerDependencies": { - "@angular/core": "16.1.3" + "@angular/core": "16.1.8" }, "peerDependenciesMeta": { "@angular/core": { @@ -565,9 +565,9 @@ } }, "node_modules/@angular/compiler-cli": { - "version": "16.1.3", - "resolved": "https://registry.npmjs.org/@angular/compiler-cli/-/compiler-cli-16.1.3.tgz", - "integrity": "sha512-aUqnIV9rRTBNgiQRS0Gv6lhghaGj1vpVRyXgiE4VnTR9uBONSsGKMNALYBBhXRTSk2e0cvutt0ubLgmNpdyWyQ==", + "version": "16.1.8", + "resolved": "https://registry.npmjs.org/@angular/compiler-cli/-/compiler-cli-16.1.8.tgz", + "integrity": "sha512-Whk3RBnEYwN0c6Mo7hU6JDpHSyKONmIQEN8ViHJXwmyHK8w+/Z27iBw10QiyWUMtYb4tIM1xSLhRFAwH/3WnPQ==", "dev": true, "dependencies": { "@babel/core": "7.22.5", @@ -588,14 +588,14 @@ "node": "^16.14.0 || >=18.10.0" }, "peerDependencies": { - "@angular/compiler": "16.1.3", + "@angular/compiler": "16.1.8", "typescript": ">=4.9.3 <5.2" } }, "node_modules/@angular/core": { - "version": "16.1.3", - "resolved": "https://registry.npmjs.org/@angular/core/-/core-16.1.3.tgz", - "integrity": "sha512-yhRo9hVS8KhfcEgzciWuRWF4Pnnko98bmSJTqd7u8Kys6z3Uj0qgXMssXHIPUALe3mQKjVkdSZPLIZ9/CaVn/Q==", + "version": "16.1.8", + "resolved": "https://registry.npmjs.org/@angular/core/-/core-16.1.8.tgz", + "integrity": "sha512-XtOpY9HA85hPGrPwe1rgE8NJ3bFWbuJFx4SUlzB66k9B5jo8bD2Dxl/0id55RFS5gmvCe/Qhh0zoGyMpkWjMHA==", "dependencies": { "tslib": "^2.3.0" }, @@ -608,9 +608,9 @@ } }, "node_modules/@angular/forms": { - "version": "16.1.3", - "resolved": "https://registry.npmjs.org/@angular/forms/-/forms-16.1.3.tgz", - "integrity": "sha512-9tJHgoi/Jmeo30zfnReVZWFcd1WthR+QwYUNwPev+ys58u1mB0cDGORvROySmC2YUyXFSpXt8sxwyWCkYvaV2w==", + "version": "16.1.8", + "resolved": "https://registry.npmjs.org/@angular/forms/-/forms-16.1.8.tgz", + "integrity": "sha512-V36q42ExvL93T7oYvRf4Z2z2V/kOm0wgaFgkNSiBHgIpuwvrAZ9nRZBui5Fqdnep3xKYd980vAaTtACA1blv3Q==", "dependencies": { "tslib": "^2.3.0" }, @@ -618,16 +618,16 @@ "node": "^16.14.0 || >=18.10.0" }, "peerDependencies": { - "@angular/common": "16.1.3", - "@angular/core": "16.1.3", - "@angular/platform-browser": "16.1.3", + "@angular/common": "16.1.8", + "@angular/core": "16.1.8", + "@angular/platform-browser": "16.1.8", "rxjs": "^6.5.3 || ^7.4.0" } }, "node_modules/@angular/platform-browser": { - "version": "16.1.3", - "resolved": "https://registry.npmjs.org/@angular/platform-browser/-/platform-browser-16.1.3.tgz", - "integrity": "sha512-qZA6Lua2fpBe+KD/QArY/4hilypSZFcTcJsPjZwIzo5pavXqYDI8BVghwh5dcZoUa56hVRDJjv+XW6kl8m9Tdw==", + "version": "16.1.8", + "resolved": "https://registry.npmjs.org/@angular/platform-browser/-/platform-browser-16.1.8.tgz", + "integrity": "sha512-wfUCVU7DLMHy5Rw7LY8KSTuLk0ff2bWElT6WSAKXXFEPjQiWuXbbIe+gglJX5HFQQHoyVwNbsSDIIgEp535Kvw==", "dependencies": { "tslib": "^2.3.0" }, @@ -635,9 +635,9 @@ "node": "^16.14.0 || >=18.10.0" }, "peerDependencies": { - "@angular/animations": "16.1.3", - "@angular/common": "16.1.3", - "@angular/core": "16.1.3" + "@angular/animations": "16.1.8", + "@angular/common": "16.1.8", + "@angular/core": "16.1.8" }, "peerDependenciesMeta": { "@angular/animations": { @@ -646,9 +646,9 @@ } }, "node_modules/@angular/platform-browser-dynamic": { - "version": "16.1.3", - "resolved": "https://registry.npmjs.org/@angular/platform-browser-dynamic/-/platform-browser-dynamic-16.1.3.tgz", - "integrity": "sha512-UHxSWpPB5+FSv8zm8T+4ZikLqyy+VE6GlOLp/DdgEz77j81rz2C1pMqozwTnVbD16XbI4rhTp+RFY3C9ArWOtw==", + "version": "16.1.8", + "resolved": "https://registry.npmjs.org/@angular/platform-browser-dynamic/-/platform-browser-dynamic-16.1.8.tgz", + "integrity": "sha512-mhQH78Zn/oFe+U8DmVvPJ0/7neDlnKcgktQ7f1vFNibRLqkmHW/o1vZ0B7CAmO+yzGbB8mt+RBCFAfA7g3oRDg==", "dependencies": { "tslib": "^2.3.0" }, @@ -656,16 +656,16 @@ "node": "^16.14.0 || >=18.10.0" }, "peerDependencies": { - "@angular/common": "16.1.3", - "@angular/compiler": "16.1.3", - "@angular/core": "16.1.3", - "@angular/platform-browser": "16.1.3" + "@angular/common": "16.1.8", + "@angular/compiler": "16.1.8", + "@angular/core": "16.1.8", + "@angular/platform-browser": "16.1.8" } }, "node_modules/@angular/router": { - "version": "16.1.3", - "resolved": "https://registry.npmjs.org/@angular/router/-/router-16.1.3.tgz", - "integrity": "sha512-bkn8cWGBKKZidDaP+R7g/S/6miSfH8iP24d2k86Awo+vaO+7G/5WWGfKJMKK8UNM/A5ueX6ugAZrMHpQ9e6Y4w==", + "version": "16.1.8", + "resolved": "https://registry.npmjs.org/@angular/router/-/router-16.1.8.tgz", + "integrity": "sha512-p11Mz0qQbl26fcEEQ9LEUZhKrca9kqSwMWgxBRMWZl0AgtbWQadiVdjiQY0rvpohI7qSO8m3s7CFIQLKIOEvYQ==", "dependencies": { "tslib": "^2.3.0" }, @@ -673,9 +673,9 @@ "node": "^16.14.0 || >=18.10.0" }, "peerDependencies": { - "@angular/common": "16.1.3", - "@angular/core": "16.1.3", - "@angular/platform-browser": "16.1.3", + "@angular/common": "16.1.8", + "@angular/core": "16.1.8", + "@angular/platform-browser": "16.1.8", "rxjs": "^6.5.3 || ^7.4.0" } }, @@ -698,9 +698,9 @@ } }, "node_modules/@babel/compat-data": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.22.5.tgz", - "integrity": "sha512-4Jc/YuIaYqKnDDz892kPIledykKg12Aw1PYX5i/TY28anJtacvM1Rrr8wbieB9GfEJwlzqT0hUEao0CxEebiDA==", + "version": "7.22.9", + "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.22.9.tgz", + "integrity": "sha512-5UamI7xkUcJ3i9qVDS+KFDEK8/7oJ55/sJMB1Ge7IEapr7KfdfV/HErR+koZwOfd+SgtFKOKRhRakdg++DcJpQ==", "dev": true, "engines": { "node": ">=6.9.0" @@ -737,18 +737,18 @@ } }, "node_modules/@babel/core/node_modules/semver": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", - "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", "dev": true, "bin": { "semver": "bin/semver.js" } }, "node_modules/@babel/generator": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.22.5.tgz", - "integrity": "sha512-+lcUbnTRhd0jOewtFSedLyiPsD5tswKkbgcezOqqWFUVNEwoUTlpPOBmvhG7OXWLR4jMdv0czPGH5XbflnD1EA==", + "version": "7.22.7", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.22.7.tgz", + "integrity": "sha512-p+jPjMG+SI8yvIaxGgeW24u7q9+5+TGpZh8/CuB7RhBKd7RCy8FayNEFNNKrNK/eUcY/4ExQqLmyrvBXKsIcwQ==", "dev": true, "dependencies": { "@babel/types": "^7.22.5", @@ -785,16 +785,16 @@ } }, "node_modules/@babel/helper-compilation-targets": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.22.5.tgz", - "integrity": "sha512-Ji+ywpHeuqxB8WDxraCiqR0xfhYjiDE/e6k7FuIaANnoOFxAHskHChz4vA1mJC9Lbm01s1PVAGhQY4FUKSkGZw==", + "version": "7.22.9", + "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.22.9.tgz", + "integrity": "sha512-7qYrNM6HjpnPHJbopxmb8hSPoZ0gsX8IvUS32JGVoy+pU9e5N0nLr1VjJoR6kA4d9dmGLxNYOjeB8sUDal2WMw==", "dev": true, "dependencies": { - "@babel/compat-data": "^7.22.5", + "@babel/compat-data": "^7.22.9", "@babel/helper-validator-option": "^7.22.5", - "browserslist": "^4.21.3", + "browserslist": "^4.21.9", "lru-cache": "^5.1.1", - "semver": "^6.3.0" + "semver": "^6.3.1" }, "engines": { "node": ">=6.9.0" @@ -804,18 +804,18 @@ } }, "node_modules/@babel/helper-compilation-targets/node_modules/semver": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", - "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", "dev": true, "bin": { "semver": "bin/semver.js" } }, "node_modules/@babel/helper-create-class-features-plugin": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.22.5.tgz", - "integrity": "sha512-xkb58MyOYIslxu3gKmVXmjTtUPvBU4odYzbiIQbWwLKIHCsx6UGZGX6F1IznMFVnDdirseUZopzN+ZRt8Xb33Q==", + "version": "7.22.9", + "resolved": "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.22.9.tgz", + "integrity": "sha512-Pwyi89uO4YrGKxL/eNJ8lfEH55DnRloGPOseaA8NFNL6jAUnn+KccaISiFazCj5IolPPDjGSdzQzXVzODVRqUQ==", "dev": true, "dependencies": { "@babel/helper-annotate-as-pure": "^7.22.5", @@ -823,10 +823,10 @@ "@babel/helper-function-name": "^7.22.5", "@babel/helper-member-expression-to-functions": "^7.22.5", "@babel/helper-optimise-call-expression": "^7.22.5", - "@babel/helper-replace-supers": "^7.22.5", + "@babel/helper-replace-supers": "^7.22.9", "@babel/helper-skip-transparent-expression-wrappers": "^7.22.5", - "@babel/helper-split-export-declaration": "^7.22.5", - "semver": "^6.3.0" + "@babel/helper-split-export-declaration": "^7.22.6", + "semver": "^6.3.1" }, "engines": { "node": ">=6.9.0" @@ -835,24 +835,36 @@ "@babel/core": "^7.0.0" } }, + "node_modules/@babel/helper-create-class-features-plugin/node_modules/@babel/helper-split-export-declaration": { + "version": "7.22.6", + "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.22.6.tgz", + "integrity": "sha512-AsUnxuLhRYsisFiaJwvp1QF+I3KjD5FOxut14q/GzovUe6orHLesW2C7d754kRm53h5gqrz6sFl6sxc4BVtE/g==", + "dev": true, + "dependencies": { + "@babel/types": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + } + }, "node_modules/@babel/helper-create-class-features-plugin/node_modules/semver": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", - "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", "dev": true, "bin": { "semver": "bin/semver.js" } }, "node_modules/@babel/helper-create-regexp-features-plugin": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.22.5.tgz", - "integrity": "sha512-1VpEFOIbMRaXyDeUwUfmTIxExLwQ+zkW+Bh5zXpApA3oQedBx9v/updixWxnx/bZpKw7u8VxWjb/qWpIcmPq8A==", + "version": "7.22.9", + "resolved": "https://registry.npmjs.org/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.22.9.tgz", + "integrity": "sha512-+svjVa/tFwsNSG4NEy1h85+HQ5imbT92Q5/bgtS7P0GTQlP8WuFdqsiABmQouhiFGyV66oGxZFpeYHza1rNsKw==", "dev": true, "dependencies": { "@babel/helper-annotate-as-pure": "^7.22.5", "regexpu-core": "^5.3.1", - "semver": "^6.3.0" + "semver": "^6.3.1" }, "engines": { "node": ">=6.9.0" @@ -862,38 +874,28 @@ } }, "node_modules/@babel/helper-create-regexp-features-plugin/node_modules/semver": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", - "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", "dev": true, "bin": { "semver": "bin/semver.js" } }, "node_modules/@babel/helper-define-polyfill-provider": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.4.0.tgz", - "integrity": "sha512-RnanLx5ETe6aybRi1cO/edaRH+bNYWaryCEmjDDYyNr4wnSzyOp8T0dWipmqVHKEY3AbVKUom50AKSlj1zmKbg==", + "version": "0.4.2", + "resolved": "https://registry.npmjs.org/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.4.2.tgz", + "integrity": "sha512-k0qnnOqHn5dK9pZpfD5XXZ9SojAITdCKRn2Lp6rnDGzIbaP0rHyMPk/4wsSxVBVz4RfN0q6VpXWP2pDGIoQ7hw==", "dev": true, "dependencies": { - "@babel/helper-compilation-targets": "^7.17.7", - "@babel/helper-plugin-utils": "^7.16.7", + "@babel/helper-compilation-targets": "^7.22.6", + "@babel/helper-plugin-utils": "^7.22.5", "debug": "^4.1.1", "lodash.debounce": "^4.0.8", - "resolve": "^1.14.2", - "semver": "^6.1.2" + "resolve": "^1.14.2" }, "peerDependencies": { - "@babel/core": "^7.4.0-0" - } - }, - "node_modules/@babel/helper-define-polyfill-provider/node_modules/semver": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", - "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", - "dev": true, - "bin": { - "semver": "bin/semver.js" + "@babel/core": "^7.4.0 || ^8.0.0-0 <8.0.0" } }, "node_modules/@babel/helper-environment-visitor": { @@ -955,18 +957,30 @@ } }, "node_modules/@babel/helper-module-transforms": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.22.5.tgz", - "integrity": "sha512-+hGKDt/Ze8GFExiVHno/2dvG5IdstpzCq0y4Qc9OJ25D4q3pKfiIP/4Vp3/JvhDkLKsDK2api3q3fpIgiIF5bw==", + "version": "7.22.9", + "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.22.9.tgz", + "integrity": "sha512-t+WA2Xn5K+rTeGtC8jCsdAH52bjggG5TKRuRrAGNM/mjIbO4GxvlLMFOEz9wXY5I2XQ60PMFsAG2WIcG82dQMQ==", "dev": true, "dependencies": { "@babel/helper-environment-visitor": "^7.22.5", "@babel/helper-module-imports": "^7.22.5", "@babel/helper-simple-access": "^7.22.5", - "@babel/helper-split-export-declaration": "^7.22.5", - "@babel/helper-validator-identifier": "^7.22.5", - "@babel/template": "^7.22.5", - "@babel/traverse": "^7.22.5", + "@babel/helper-split-export-declaration": "^7.22.6", + "@babel/helper-validator-identifier": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/helper-module-transforms/node_modules/@babel/helper-split-export-declaration": { + "version": "7.22.6", + "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.22.6.tgz", + "integrity": "sha512-AsUnxuLhRYsisFiaJwvp1QF+I3KjD5FOxut14q/GzovUe6orHLesW2C7d754kRm53h5gqrz6sFl6sxc4BVtE/g==", + "dev": true, + "dependencies": { "@babel/types": "^7.22.5" }, "engines": { @@ -995,15 +1009,14 @@ } }, "node_modules/@babel/helper-remap-async-to-generator": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.22.5.tgz", - "integrity": "sha512-cU0Sq1Rf4Z55fgz7haOakIyM7+x/uCFwXpLPaeRzfoUtAEAuUZjZvFPjL/rk5rW693dIgn2hng1W7xbT7lWT4g==", + "version": "7.22.9", + "resolved": "https://registry.npmjs.org/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.22.9.tgz", + "integrity": "sha512-8WWC4oR4Px+tr+Fp0X3RHDVfINGpF3ad1HIbrc8A77epiR6eMMc6jsgozkzT2uDiOOdoS9cLIQ+XD2XvI2WSmQ==", "dev": true, "dependencies": { "@babel/helper-annotate-as-pure": "^7.22.5", "@babel/helper-environment-visitor": "^7.22.5", - "@babel/helper-wrap-function": "^7.22.5", - "@babel/types": "^7.22.5" + "@babel/helper-wrap-function": "^7.22.9" }, "engines": { "node": ">=6.9.0" @@ -1013,20 +1026,20 @@ } }, "node_modules/@babel/helper-replace-supers": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.22.5.tgz", - "integrity": "sha512-aLdNM5I3kdI/V9xGNyKSF3X/gTyMUBohTZ+/3QdQKAA9vxIiy12E+8E2HoOP1/DjeqU+g6as35QHJNMDDYpuCg==", + "version": "7.22.9", + "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.22.9.tgz", + "integrity": "sha512-LJIKvvpgPOPUThdYqcX6IXRuIcTkcAub0IaDRGCZH0p5GPUp7PhRU9QVgFcDDd51BaPkk77ZjqFwh6DZTAEmGg==", "dev": true, "dependencies": { "@babel/helper-environment-visitor": "^7.22.5", "@babel/helper-member-expression-to-functions": "^7.22.5", - "@babel/helper-optimise-call-expression": "^7.22.5", - "@babel/template": "^7.22.5", - "@babel/traverse": "^7.22.5", - "@babel/types": "^7.22.5" + "@babel/helper-optimise-call-expression": "^7.22.5" }, "engines": { "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" } }, "node_modules/@babel/helper-simple-access": { @@ -1093,14 +1106,13 @@ } }, "node_modules/@babel/helper-wrap-function": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/helper-wrap-function/-/helper-wrap-function-7.22.5.tgz", - "integrity": "sha512-bYqLIBSEshYcYQyfks8ewYA8S30yaGSeRslcvKMvoUk6HHPySbxHq9YRi6ghhzEU+yhQv9bP/jXnygkStOcqZw==", + "version": "7.22.9", + "resolved": "https://registry.npmjs.org/@babel/helper-wrap-function/-/helper-wrap-function-7.22.9.tgz", + "integrity": "sha512-sZ+QzfauuUEfxSEjKFmi3qDSHgLsTPK/pEpoD/qonZKOtTPTLbf59oabPQ4rKekt9lFcj/hTZaOhWwFYrgjk+Q==", "dev": true, "dependencies": { "@babel/helper-function-name": "^7.22.5", "@babel/template": "^7.22.5", - "@babel/traverse": "^7.22.5", "@babel/types": "^7.22.5" }, "engines": { @@ -1108,13 +1120,13 @@ } }, "node_modules/@babel/helpers": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.22.5.tgz", - "integrity": "sha512-pSXRmfE1vzcUIDFQcSGA5Mr+GxBV9oiRKDuDxXvWQQBCh8HoIjs/2DlDB7H8smac1IVrB9/xdXj2N3Wol9Cr+Q==", + "version": "7.22.6", + "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.22.6.tgz", + "integrity": "sha512-YjDs6y/fVOYFV8hAf1rxd1QvR9wJe1pDBZ2AREKq/SDayfPzgk0PBnVuTCE5X1acEpMMNOVUqoe+OwiZGJ+OaA==", "dev": true, "dependencies": { "@babel/template": "^7.22.5", - "@babel/traverse": "^7.22.5", + "@babel/traverse": "^7.22.6", "@babel/types": "^7.22.5" }, "engines": { @@ -1136,9 +1148,9 @@ } }, "node_modules/@babel/parser": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.22.5.tgz", - "integrity": "sha512-DFZMC9LJUG9PLOclRC32G63UXwzqS2koQC8dkx+PLdmt1xSePYpbT/NbsrJy8Q/muXz7o/h/d4A7Fuyixm559Q==", + "version": "7.22.7", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.22.7.tgz", + "integrity": "sha512-7NF8pOkHP5o2vpmGgNGcfAeCvOYhGLyA3Z4eBQkT1RJlWu47n63bCs93QfJ2hIAFCil7L5P2IWhs1oToVgrL0Q==", "dev": true, "bin": { "parser": "bin/babel-parser.js" @@ -1476,9 +1488,9 @@ } }, "node_modules/@babel/plugin-transform-async-generator-functions": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-generator-functions/-/plugin-transform-async-generator-functions-7.22.5.tgz", - "integrity": "sha512-gGOEvFzm3fWoyD5uZq7vVTD57pPJ3PczPUD/xCFGjzBpUosnklmXyKnGQbbbGs1NPNPskFex0j93yKbHt0cHyg==", + "version": "7.22.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-generator-functions/-/plugin-transform-async-generator-functions-7.22.7.tgz", + "integrity": "sha512-7HmE7pk/Fmke45TODvxvkxRMV9RazV+ZZzhOL9AG8G29TLrr3jkjwF7uJfxZ30EoXpO+LJkq4oA8NjO2DTnEDg==", "dev": true, "dependencies": { "@babel/helper-environment-visitor": "^7.22.5", @@ -1574,19 +1586,19 @@ } }, "node_modules/@babel/plugin-transform-classes": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-7.22.5.tgz", - "integrity": "sha512-2edQhLfibpWpsVBx2n/GKOz6JdGQvLruZQfGr9l1qes2KQaWswjBzhQF7UDUZMNaMMQeYnQzxwOMPsbYF7wqPQ==", + "version": "7.22.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-7.22.6.tgz", + "integrity": "sha512-58EgM6nuPNG6Py4Z3zSuu0xWu2VfodiMi72Jt5Kj2FECmaYk1RrTXA45z6KBFsu9tRgwQDwIiY4FXTt+YsSFAQ==", "dev": true, "dependencies": { "@babel/helper-annotate-as-pure": "^7.22.5", - "@babel/helper-compilation-targets": "^7.22.5", + "@babel/helper-compilation-targets": "^7.22.6", "@babel/helper-environment-visitor": "^7.22.5", "@babel/helper-function-name": "^7.22.5", "@babel/helper-optimise-call-expression": "^7.22.5", "@babel/helper-plugin-utils": "^7.22.5", "@babel/helper-replace-supers": "^7.22.5", - "@babel/helper-split-export-declaration": "^7.22.5", + "@babel/helper-split-export-declaration": "^7.22.6", "globals": "^11.1.0" }, "engines": { @@ -1596,6 +1608,18 @@ "@babel/core": "^7.0.0-0" } }, + "node_modules/@babel/plugin-transform-classes/node_modules/@babel/helper-split-export-declaration": { + "version": "7.22.6", + "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.22.6.tgz", + "integrity": "sha512-AsUnxuLhRYsisFiaJwvp1QF+I3KjD5FOxut14q/GzovUe6orHLesW2C7d754kRm53h5gqrz6sFl6sxc4BVtE/g==", + "dev": true, + "dependencies": { + "@babel/types": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + } + }, "node_modules/@babel/plugin-transform-computed-properties": { "version": "7.22.5", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.22.5.tgz", @@ -1982,9 +2006,9 @@ } }, "node_modules/@babel/plugin-transform-optional-chaining": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-optional-chaining/-/plugin-transform-optional-chaining-7.22.5.tgz", - "integrity": "sha512-AconbMKOMkyG+xCng2JogMCDcqW8wedQAqpVIL4cOSescZ7+iW8utC6YDZLMCSUIReEA733gzRSaOSXMAt/4WQ==", + "version": "7.22.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-optional-chaining/-/plugin-transform-optional-chaining-7.22.6.tgz", + "integrity": "sha512-Vd5HiWml0mDVtcLHIoEU5sw6HOUW/Zk0acLs/SAeuLzkGNOPc9DB4nkUajemhCmTIz3eiaKREZn2hQQqF79YTg==", "dev": true, "dependencies": { "@babel/helper-plugin-utils": "^7.22.5", @@ -2114,9 +2138,9 @@ } }, "node_modules/@babel/plugin-transform-runtime/node_modules/semver": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", - "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", "dev": true, "bin": { "semver": "bin/semver.js" @@ -2356,18 +2380,18 @@ } }, "node_modules/@babel/preset-env/node_modules/semver": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", - "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", "dev": true, "bin": { "semver": "bin/semver.js" } }, "node_modules/@babel/preset-modules": { - "version": "0.1.5", - "resolved": "https://registry.npmjs.org/@babel/preset-modules/-/preset-modules-0.1.5.tgz", - "integrity": "sha512-A57th6YRG7oR3cq/yt/Y84MvGgE0eJG2F1JLhKuyG+jFxEgrd/HAMJatiFtmOiZurz+0DkrvbheCLaV5f2JfjA==", + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/@babel/preset-modules/-/preset-modules-0.1.6.tgz", + "integrity": "sha512-ID2yj6K/4lKfhuU3+EX4UvNbIt7eACFbHmNUjzA+ep+B5971CknnA/9DEWKbRokfbbtblxxxXFJJrH47UEAMVg==", "dev": true, "dependencies": { "@babel/helper-plugin-utils": "^7.0.0", @@ -2377,7 +2401,7 @@ "esutils": "^2.0.2" }, "peerDependencies": { - "@babel/core": "^7.0.0-0" + "@babel/core": "^7.0.0-0 || ^8.0.0-0 <8.0.0" } }, "node_modules/@babel/regjsgen": { @@ -2413,18 +2437,18 @@ } }, "node_modules/@babel/traverse": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.22.5.tgz", - "integrity": "sha512-7DuIjPgERaNo6r+PZwItpjCZEa5vyw4eJGufeLxrPdBXBoLcCJCIasvK6pK/9DVNrLZTLFhUGqaC6X/PA007TQ==", + "version": "7.22.8", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.22.8.tgz", + "integrity": "sha512-y6LPR+wpM2I3qJrsheCTwhIinzkETbplIgPBbwvqPKc+uljeA5gP+3nP8irdYt1mjQaDnlIcG+dw8OjAco4GXw==", "dev": true, "dependencies": { "@babel/code-frame": "^7.22.5", - "@babel/generator": "^7.22.5", + "@babel/generator": "^7.22.7", "@babel/helper-environment-visitor": "^7.22.5", "@babel/helper-function-name": "^7.22.5", "@babel/helper-hoist-variables": "^7.22.5", - "@babel/helper-split-export-declaration": "^7.22.5", - "@babel/parser": "^7.22.5", + "@babel/helper-split-export-declaration": "^7.22.6", + "@babel/parser": "^7.22.7", "@babel/types": "^7.22.5", "debug": "^4.1.0", "globals": "^11.1.0" @@ -2433,6 +2457,18 @@ "node": ">=6.9.0" } }, + "node_modules/@babel/traverse/node_modules/@babel/helper-split-export-declaration": { + "version": "7.22.6", + "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.22.6.tgz", + "integrity": "sha512-AsUnxuLhRYsisFiaJwvp1QF+I3KjD5FOxut14q/GzovUe6orHLesW2C7d754kRm53h5gqrz6sFl6sxc4BVtE/g==", + "dev": true, + "dependencies": { + "@babel/types": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + } + }, "node_modules/@babel/types": { "version": "7.22.5", "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.22.5.tgz", @@ -2466,9 +2502,9 @@ } }, "node_modules/@cypress/request": { - "version": "2.88.11", - "resolved": "https://registry.npmjs.org/@cypress/request/-/request-2.88.11.tgz", - "integrity": "sha512-M83/wfQ1EkspjkE2lNWNV5ui2Cv7UCv1swW1DqljahbzLVWltcsexQh8jYtuS/vzFXP+HySntGM83ZXA9fn17w==", + "version": "2.88.12", + "resolved": "https://registry.npmjs.org/@cypress/request/-/request-2.88.12.tgz", + "integrity": "sha512-tOn+0mDZxASFM+cuAP9szGUGPI1HwWVSvdzm7V4cCsPdFTx6qMj29CwaQmRAMIEhORIUBFBsYROYJcveK4uOjA==", "dev": true, "dependencies": { "aws-sign2": "~0.7.0", @@ -2486,7 +2522,7 @@ "performance-now": "^2.1.0", "qs": "~6.10.3", "safe-buffer": "^5.1.2", - "tough-cookie": "~2.5.0", + "tough-cookie": "^4.1.3", "tunnel-agent": "^0.6.0", "uuid": "^8.3.2" }, @@ -2495,135 +2531,17 @@ } }, "node_modules/@cypress/schematic": { - "version": "1.7.0", - "resolved": "https://registry.npmjs.org/@cypress/schematic/-/schematic-1.7.0.tgz", - "integrity": "sha512-CouQrVlZ+uHVVBQtmNoMYU9LyoSAmQTOLDpVjrdTdMPpJH1mWnHCL5OCMt+FZLR+43KRiWEvDUjNqSza11oGsQ==", + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/@cypress/schematic/-/schematic-2.5.0.tgz", + "integrity": "sha512-Yt/fQxYIHl9lU8LSoJL92nIwTVyYG5uP4VqW4taTn3viVWvssjK7sRtTI/LRxOoeMYX2RRlXQyUbFEikByn0cQ==", "dev": true, "dependencies": { - "@angular-devkit/architect": "^0.1202.10", - "@angular-devkit/core": "^12.2.17", - "@angular-devkit/schematics": "^12.2.17", - "@schematics/angular": "^12.2.17", "jsonc-parser": "^3.0.0", "rxjs": "~6.6.0" }, "peerDependencies": { - "@angular/cli": ">=12", - "@angular/core": ">=12" - } - }, - "node_modules/@cypress/schematic/node_modules/@angular-devkit/architect": { - "version": "0.1202.18", - "resolved": "https://registry.npmjs.org/@angular-devkit/architect/-/architect-0.1202.18.tgz", - "integrity": "sha512-C4ASKe+xBjl91MJyHDLt3z7ICPF9FU6B0CeJ1phwrlSHK9lmFG99WGxEj/Tc82+vHyPhajqS5XJ38KyVAPBGzA==", - "dev": true, - "dependencies": { - "@angular-devkit/core": "12.2.18", - "rxjs": "6.6.7" - }, - "engines": { - "node": "^12.14.1 || >=14.0.0", - "npm": "^6.11.0 || ^7.5.6 || >=8.0.0", - "yarn": ">= 1.13.0" - } - }, - "node_modules/@cypress/schematic/node_modules/@angular-devkit/core": { - "version": "12.2.18", - "resolved": "https://registry.npmjs.org/@angular-devkit/core/-/core-12.2.18.tgz", - "integrity": "sha512-GDLHGe9HEY5SRS+NrKr14C8aHsRCiBFkBFSSbeohgLgcgSXzZHFoU84nDWrl3KZNP8oqcUSv5lHu6dLcf2fnww==", - "dev": true, - "dependencies": { - "ajv": "8.6.2", - "ajv-formats": "2.1.0", - "fast-json-stable-stringify": "2.1.0", - "magic-string": "0.25.7", - "rxjs": "6.6.7", - "source-map": "0.7.3" - }, - "engines": { - "node": "^12.14.1 || >=14.0.0", - "npm": "^6.11.0 || ^7.5.6 || >=8.0.0", - "yarn": ">= 1.13.0" - } - }, - "node_modules/@cypress/schematic/node_modules/@angular-devkit/schematics": { - "version": "12.2.18", - "resolved": "https://registry.npmjs.org/@angular-devkit/schematics/-/schematics-12.2.18.tgz", - "integrity": "sha512-bZ9NS5PgoVfetRC6WeQBHCY5FqPZ9y2TKHUo12sOB2YSL3tgWgh1oXyP8PtX34gasqsLjNULxEQsAQYEsiX/qQ==", - "dev": true, - "dependencies": { - "@angular-devkit/core": "12.2.18", - "ora": "5.4.1", - "rxjs": "6.6.7" - }, - "engines": { - "node": "^12.14.1 || >=14.0.0", - "npm": "^6.11.0 || ^7.5.6 || >=8.0.0", - "yarn": ">= 1.13.0" - } - }, - "node_modules/@cypress/schematic/node_modules/@schematics/angular": { - "version": "12.2.18", - "resolved": "https://registry.npmjs.org/@schematics/angular/-/angular-12.2.18.tgz", - "integrity": "sha512-niRS9Ly9y8uI0YmTSbo8KpdqCCiZ/ATMZWeS2id5M8JZvfXbngwiqJvojdSol0SWU+n1W4iA+lJBdt4gSKlD5w==", - "dev": true, - "dependencies": { - "@angular-devkit/core": "12.2.18", - "@angular-devkit/schematics": "12.2.18", - "jsonc-parser": "3.0.0" - }, - "engines": { - "node": "^12.14.1 || >=14.0.0", - "npm": "^6.11.0 || ^7.5.6 || >=8.0.0", - "yarn": ">= 1.13.0" - } - }, - "node_modules/@cypress/schematic/node_modules/ajv": { - "version": "8.6.2", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.6.2.tgz", - "integrity": "sha512-9807RlWAgT564wT+DjeyU5OFMPjmzxVobvDFmNAhY+5zD6A2ly3jDp6sgnfyDtlIQ+7H97oc/DGCzzfu9rjw9w==", - "dev": true, - "dependencies": { - "fast-deep-equal": "^3.1.1", - "json-schema-traverse": "^1.0.0", - "require-from-string": "^2.0.2", - "uri-js": "^4.2.2" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/epoberezkin" - } - }, - "node_modules/@cypress/schematic/node_modules/ajv-formats": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/ajv-formats/-/ajv-formats-2.1.0.tgz", - "integrity": "sha512-USH2jBb+C/hIpwD2iRjp0pe0k+MvzG0mlSn/FIdCgQhUb9ALPRjt2KIQdfZDS9r0ZIeUAg7gOu9KL0PFqGqr5Q==", - "dev": true, - "dependencies": { - "ajv": "^8.0.0" - }, - "peerDependencies": { - "ajv": "^8.0.0" - }, - "peerDependenciesMeta": { - "ajv": { - "optional": true - } - } - }, - "node_modules/@cypress/schematic/node_modules/jsonc-parser": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/jsonc-parser/-/jsonc-parser-3.0.0.tgz", - "integrity": "sha512-fQzRfAbIBnR0IQvftw9FJveWiHp72Fg20giDrHz6TdfB12UH/uue0D3hm57UB5KgAVuniLMCaS8P1IMj9NR7cA==", - "dev": true - }, - "node_modules/@cypress/schematic/node_modules/magic-string": { - "version": "0.25.7", - "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.25.7.tgz", - "integrity": "sha512-4CrMT5DOHTDk4HYDlzmwu4FVCcIYI8gauveasrdCu2IKIFOJ3f0v/8MDGJCDL9oD2ppz/Av1b0Nj345H9M+XIA==", - "dev": true, - "dependencies": { - "sourcemap-codec": "^1.4.4" + "@angular/cli": ">=14", + "@angular/core": ">=14" } }, "node_modules/@cypress/schematic/node_modules/rxjs": { @@ -2638,15 +2556,6 @@ "npm": ">=2.0.0" } }, - "node_modules/@cypress/schematic/node_modules/source-map": { - "version": "0.7.3", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.7.3.tgz", - "integrity": "sha512-CkCj6giN3S+n9qrYiBTX5gystlENnRW5jZeNLHpe6aue+SrHcG5VYwujhW9s4dY31mEGsxBDrHR6oI69fTXsaQ==", - "dev": true, - "engines": { - "node": ">= 8" - } - }, "node_modules/@cypress/schematic/node_modules/tslib": { "version": "1.14.1", "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", @@ -3049,23 +2958,23 @@ } }, "node_modules/@eslint-community/regexpp": { - "version": "4.5.1", - "resolved": "https://registry.npmjs.org/@eslint-community/regexpp/-/regexpp-4.5.1.tgz", - "integrity": "sha512-Z5ba73P98O1KUYCCJTUeVpja9RcGoMdncZ6T49FCUl2lN38JtCJ+3WgIDBv0AuY4WChU5PmtJmOCTlN6FZTFKQ==", + "version": "4.6.2", + "resolved": "https://registry.npmjs.org/@eslint-community/regexpp/-/regexpp-4.6.2.tgz", + "integrity": "sha512-pPTNuaAG3QMH+buKyBIGJs3g/S5y0caxw0ygM3YyE6yJFySwiGGSzA+mM3KJ8QQvzeLh3blwgSonkFjgQdxzMw==", "dev": true, "engines": { "node": "^12.0.0 || ^14.0.0 || >=16.0.0" } }, "node_modules/@eslint/eslintrc": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-2.0.3.tgz", - "integrity": "sha512-+5gy6OQfk+xx3q0d6jGZZC3f3KzAkXc/IanVxd1is/VIIziRqqt3ongQz0FiTUXqTk0c7aDB3OaFuKnuSoJicQ==", + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-2.1.1.tgz", + "integrity": "sha512-9t7ZA7NGGK8ckelF0PQCfcxIUzs1Md5rrO6U/c+FIQNanea5UZC0wqKXH4vHBccmu4ZJgZ2idtPeW7+Q2npOEA==", "dev": true, "dependencies": { "ajv": "^6.12.4", "debug": "^4.3.2", - "espree": "^9.5.2", + "espree": "^9.6.0", "globals": "^13.19.0", "ignore": "^5.2.0", "import-fresh": "^3.2.1", @@ -3148,9 +3057,9 @@ } }, "node_modules/@eslint/js": { - "version": "8.43.0", - "resolved": "https://registry.npmjs.org/@eslint/js/-/js-8.43.0.tgz", - "integrity": "sha512-s2UHCoiXfxMvmfzqoN+vrQ84ahUSYde9qNO1MdxmoEhyHWsfmwOpFlwYV+ePJEVc7gFnATGUi376WowX1N7tFg==", + "version": "8.46.0", + "resolved": "https://registry.npmjs.org/@eslint/js/-/js-8.46.0.tgz", + "integrity": "sha512-a8TLtmPi8xzPkCbp/OGFUo5yhRkHM2Ko9kOWP4znJr0WAhWyThaw3PnwX4vOTWOAMsV2uRt32PPDcEz63esSaA==", "dev": true, "engines": { "node": "^12.22.0 || ^14.17.0 || >=16.0.0" @@ -3343,9 +3252,9 @@ } }, "node_modules/@jridgewell/source-map": { - "version": "0.3.3", - "resolved": "https://registry.npmjs.org/@jridgewell/source-map/-/source-map-0.3.3.tgz", - "integrity": "sha512-b+fsZXeLYi9fEULmfBrhxn4IrPlINf8fiNarzTof004v3lFdntdwa9PF7vFJqm3mg7s+ScJMxXaE3Acp1irZcg==", + "version": "0.3.5", + "resolved": "https://registry.npmjs.org/@jridgewell/source-map/-/source-map-0.3.5.tgz", + "integrity": "sha512-UTYAUj/wviwdsMfzoSJspJxbkH5o1snzwX0//0ENX1u/55kkZZkcTZP6u9bwKGkv+dkk9at4m1Cpt0uY80kcpQ==", "dev": true, "dependencies": { "@jridgewell/gen-mapping": "^0.3.0", @@ -3381,22 +3290,22 @@ "dev": true }, "node_modules/@ngrx/effects": { - "version": "16.0.1", - "resolved": "https://registry.npmjs.org/@ngrx/effects/-/effects-16.0.1.tgz", - "integrity": "sha512-hpmON8p7kT44jIiruLBy3raFkYhNzQ45was0puKPkGhv41VrAoo44UcEn4Aysdx5yHaJc/CMCtI/+emFIpqgGA==", + "version": "16.1.0", + "resolved": "https://registry.npmjs.org/@ngrx/effects/-/effects-16.1.0.tgz", + "integrity": "sha512-sdLzxjdQcYht3SYiuhchF4uOxxZIy3h9TEoyVp6PZJmiLJqhMAmV9/+s3tPD7yKd4+4o4n+HeiLDOTlMxn3Bxg==", "dependencies": { "tslib": "^2.0.0" }, "peerDependencies": { "@angular/core": "^16.0.0", - "@ngrx/store": "16.0.1", + "@ngrx/store": "16.1.0", "rxjs": "^6.5.3 || ^7.5.0" } }, "node_modules/@ngrx/store": { - "version": "16.0.1", - "resolved": "https://registry.npmjs.org/@ngrx/store/-/store-16.0.1.tgz", - "integrity": "sha512-KkYzF3j29qKOzHcmiArRJgT+ABLqbddj1DuxerNq3A8zWnTDdC4YgNpDOKru8hQWb3pQ77ZbglLati5K9F8HnQ==", + "version": "16.1.0", + "resolved": "https://registry.npmjs.org/@ngrx/store/-/store-16.1.0.tgz", + "integrity": "sha512-cGwI5wy+irIudQubfrbaKrDbJxCvu+lZYlBmsOlpzevQLCa+ZjNLrN05J025P3KvUmfzX4StEpAc8Ord089Kig==", "dependencies": { "tslib": "^2.0.0" }, @@ -3406,9 +3315,9 @@ } }, "node_modules/@ngtools/webpack": { - "version": "16.1.3", - "resolved": "https://registry.npmjs.org/@ngtools/webpack/-/webpack-16.1.3.tgz", - "integrity": "sha512-YTL1RzP7ErJqskx+ZwdC/nWsOSBfC4yYWmMyWL2J0d+oJ3N2XIzrKVoDcZ4IVzv3Du+3zoGp0ups/wWXvfzM/Q==", + "version": "16.1.7", + "resolved": "https://registry.npmjs.org/@ngtools/webpack/-/webpack-16.1.7.tgz", + "integrity": "sha512-VRFH8crY969hKLIkYJKUuWjNIRCssq4QkKlUK4LCOLMd/xKNzl4H4EOsASKAQbBz58y6IUyh6b4utqMZ+oSTxA==", "dev": true, "engines": { "node": "^16.14.0 || >=18.10.0", @@ -3595,36 +3504,36 @@ } }, "node_modules/@nrwl/devkit": { - "version": "16.2.2", - "resolved": "https://registry.npmjs.org/@nrwl/devkit/-/devkit-16.2.2.tgz", - "integrity": "sha512-R8OSh33HtGycSuu0KshpH/tsTdi6j4w7DuIb+Sa59UDIkchpvMeNAz8tj/05Z2tTntDZnYqPkmCs6rkZ4PvY4Q==", + "version": "16.5.1", + "resolved": "https://registry.npmjs.org/@nrwl/devkit/-/devkit-16.5.1.tgz", + "integrity": "sha512-NB+DE/+AFJ7lKH/WBFyatJEhcZGj25F24ncDkwjZ6MzEiSOGOJS0LaV/R+VUsmS5EHTPXYOpn3zHWWAcJhyOmA==", "dev": true, "dependencies": { - "@nx/devkit": "16.2.2" + "@nx/devkit": "16.5.1" } }, "node_modules/@nrwl/tao": { - "version": "16.2.2", - "resolved": "https://registry.npmjs.org/@nrwl/tao/-/tao-16.2.2.tgz", - "integrity": "sha512-cPj6b+wSWs2WNFQ0p1fMyrvSLjkKJo7vXQTtd7MXNJT2NWEZdCtRy+nidZzjs7gKvVXGdZ8zDBXmCHWorOieXw==", + "version": "16.5.1", + "resolved": "https://registry.npmjs.org/@nrwl/tao/-/tao-16.5.1.tgz", + "integrity": "sha512-x+gi/fKdM6uQNIti9exFlm3V5LBP3Y8vOEziO42HdOigyrXa0S0HD2WMpccmp6PclYKhwEDUjKJ39xh5sdh4Ig==", "dev": true, "dependencies": { - "nx": "16.2.2" + "nx": "16.5.1" }, "bin": { "tao": "index.js" } }, "node_modules/@nx/devkit": { - "version": "16.2.2", - "resolved": "https://registry.npmjs.org/@nx/devkit/-/devkit-16.2.2.tgz", - "integrity": "sha512-MTYzetk4AQ9u2syEb9z+drDsu6U6NRAXVuUDMNg0tpZcbtE9bCSLH2ngfvTCqmLrAMBsJZRdv0twS1iepMhlAg==", + "version": "16.5.1", + "resolved": "https://registry.npmjs.org/@nx/devkit/-/devkit-16.5.1.tgz", + "integrity": "sha512-T1acZrVVmJw/sJ4PIGidCBYBiBqlg/jT9e8nIGXLSDS20xcLvfo4zBQf8UZLrmHglnwwpDpOWuVJCp2rYA5aDg==", "dev": true, "dependencies": { - "@nrwl/devkit": "16.2.2", + "@nrwl/devkit": "16.5.1", "ejs": "^3.1.7", "ignore": "^5.0.4", - "semver": "7.3.4", + "semver": "7.5.3", "tmp": "~0.2.1", "tslib": "^2.3.0" }, @@ -3632,43 +3541,10 @@ "nx": ">= 15 <= 17" } }, - "node_modules/@nx/devkit/node_modules/lru-cache": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", - "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", - "dev": true, - "dependencies": { - "yallist": "^4.0.0" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/@nx/devkit/node_modules/semver": { - "version": "7.3.4", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.4.tgz", - "integrity": "sha512-tCfb2WLjqFAtXn4KEdxIhalnRtoKFN7nAwj0B3ZXCbQloV2tq5eDbcTmT68JJD3nRJq24/XgxtQKFIpQdtvmVw==", - "dev": true, - "dependencies": { - "lru-cache": "^6.0.0" - }, - "bin": { - "semver": "bin/semver.js" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/@nx/devkit/node_modules/yallist": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", - "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", - "dev": true - }, "node_modules/@nx/nx-darwin-arm64": { - "version": "16.2.2", - "resolved": "https://registry.npmjs.org/@nx/nx-darwin-arm64/-/nx-darwin-arm64-16.2.2.tgz", - "integrity": "sha512-CKfyLl92mhWqpv1hRTj3WgjVBY6yj3Et5T31m1N0assNWdTfuSB4ycdWzdlxXHx3yptnTOD/FCymTpUQI0GZRQ==", + "version": "16.5.1", + "resolved": "https://registry.npmjs.org/@nx/nx-darwin-arm64/-/nx-darwin-arm64-16.5.1.tgz", + "integrity": "sha512-q98TFI4B/9N9PmKUr1jcbtD4yAFs1HfYd9jUXXTQOlfO9SbDjnrYJgZ4Fp9rMNfrBhgIQ4x1qx0AukZccKmH9Q==", "cpu": [ "arm64" ], @@ -3682,9 +3558,9 @@ } }, "node_modules/@nx/nx-darwin-x64": { - "version": "16.2.2", - "resolved": "https://registry.npmjs.org/@nx/nx-darwin-x64/-/nx-darwin-x64-16.2.2.tgz", - "integrity": "sha512-++uDfp/Oo8DDVU53DiJVkRNjNbOLzahDH6dINeA/3yTCU/IS0wXoaoclNZBReMWlDKTVvWgLF/eSbGINMqUHRg==", + "version": "16.5.1", + "resolved": "https://registry.npmjs.org/@nx/nx-darwin-x64/-/nx-darwin-x64-16.5.1.tgz", + "integrity": "sha512-j9HmL1l8k7EVJ3eOM5y8COF93gqrydpxCDoz23ZEtsY+JHY77VAiRQsmqBgEx9GGA2dXi9VEdS67B0+1vKariw==", "cpu": [ "x64" ], @@ -3697,10 +3573,26 @@ "node": ">= 10" } }, + "node_modules/@nx/nx-freebsd-x64": { + "version": "16.5.1", + "resolved": "https://registry.npmjs.org/@nx/nx-freebsd-x64/-/nx-freebsd-x64-16.5.1.tgz", + "integrity": "sha512-CXSPT01aVS869tvCCF2tZ7LnCa8l41wJ3mTVtWBkjmRde68E5Up093hklRMyXb3kfiDYlfIKWGwrV4r0eH6x1A==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">= 10" + } + }, "node_modules/@nx/nx-linux-arm-gnueabihf": { - "version": "16.2.2", - "resolved": "https://registry.npmjs.org/@nx/nx-linux-arm-gnueabihf/-/nx-linux-arm-gnueabihf-16.2.2.tgz", - "integrity": "sha512-A4XFk63Q7fxgZaHnigIeofp/xOT2ZGDoNUyzld+UTlyJyNcClcOcqrro74aKOCG7PH0D56oE06JW3g7GKszgsA==", + "version": "16.5.1", + "resolved": "https://registry.npmjs.org/@nx/nx-linux-arm-gnueabihf/-/nx-linux-arm-gnueabihf-16.5.1.tgz", + "integrity": "sha512-BhrumqJSZCWFfLFUKl4CAUwR0Y0G2H5EfFVGKivVecEQbb+INAek1aa6c89evg2/OvetQYsJ+51QknskwqvLsA==", "cpu": [ "arm" ], @@ -3714,9 +3606,9 @@ } }, "node_modules/@nx/nx-linux-arm64-gnu": { - "version": "16.2.2", - "resolved": "https://registry.npmjs.org/@nx/nx-linux-arm64-gnu/-/nx-linux-arm64-gnu-16.2.2.tgz", - "integrity": "sha512-aQpTLVSawFVr33pBWjj8elqvjA5uWvzDW7hGaFQPgWgmjxrtJikIAkcLjfNOz8XYjRAP4OZkTVh4/E3GUch0kQ==", + "version": "16.5.1", + "resolved": "https://registry.npmjs.org/@nx/nx-linux-arm64-gnu/-/nx-linux-arm64-gnu-16.5.1.tgz", + "integrity": "sha512-x7MsSG0W+X43WVv7JhiSq2eKvH2suNKdlUHEG09Yt0vm3z0bhtym1UCMUg3IUAK7jy9hhLeDaFVFkC6zo+H/XQ==", "cpu": [ "arm64" ], @@ -3730,9 +3622,9 @@ } }, "node_modules/@nx/nx-linux-arm64-musl": { - "version": "16.2.2", - "resolved": "https://registry.npmjs.org/@nx/nx-linux-arm64-musl/-/nx-linux-arm64-musl-16.2.2.tgz", - "integrity": "sha512-20vyNYQ2SYSaWdxORj9HdOyGxiqE8SauaFiBjjid6/e5mSyaSKu+HHGsvhDUqzlWn3OaABKBqx0iYa9Kmf3BOQ==", + "version": "16.5.1", + "resolved": "https://registry.npmjs.org/@nx/nx-linux-arm64-musl/-/nx-linux-arm64-musl-16.5.1.tgz", + "integrity": "sha512-J+/v/mFjOm74I0PNtH5Ka+fDd+/dWbKhpcZ2R1/6b9agzZk+Ff/SrwJcSYFXXWKbPX+uQ4RcJoytT06Zs3s0ow==", "cpu": [ "arm64" ], @@ -3746,9 +3638,9 @@ } }, "node_modules/@nx/nx-linux-x64-gnu": { - "version": "16.2.2", - "resolved": "https://registry.npmjs.org/@nx/nx-linux-x64-gnu/-/nx-linux-x64-gnu-16.2.2.tgz", - "integrity": "sha512-0G8kYpEmGHD+tT7RvUEvVXvPbvQD9GfEjeWEzZAdNAAMJu7JFjIo/oZDJYV7cMvXnC+tbpI9Gba5xfv8Al95eA==", + "version": "16.5.1", + "resolved": "https://registry.npmjs.org/@nx/nx-linux-x64-gnu/-/nx-linux-x64-gnu-16.5.1.tgz", + "integrity": "sha512-igooWJ5YxQ94Zft7IqgL+Lw0qHaY15Btw4gfK756g/YTYLZEt4tTvR1y6RnK/wdpE3sa68bFTLVBNCGTyiTiDQ==", "cpu": [ "x64" ], @@ -3762,9 +3654,9 @@ } }, "node_modules/@nx/nx-linux-x64-musl": { - "version": "16.2.2", - "resolved": "https://registry.npmjs.org/@nx/nx-linux-x64-musl/-/nx-linux-x64-musl-16.2.2.tgz", - "integrity": "sha512-Incv7DbKLfh6kakzMBuy6GYRgI+jEdZBRiFw0GoN9EsknmrPT/URn+w6uuicGGEXOLYpO3HUO3E374+b5Wz2zg==", + "version": "16.5.1", + "resolved": "https://registry.npmjs.org/@nx/nx-linux-x64-musl/-/nx-linux-x64-musl-16.5.1.tgz", + "integrity": "sha512-zF/exnPqFYbrLAduGhTmZ7zNEyADid2bzNQiIjJkh8Y6NpDwrQIwVIyvIxqynsjMrIs51kBH+8TUjKjj2Jgf5A==", "cpu": [ "x64" ], @@ -3778,9 +3670,9 @@ } }, "node_modules/@nx/nx-win32-arm64-msvc": { - "version": "16.2.2", - "resolved": "https://registry.npmjs.org/@nx/nx-win32-arm64-msvc/-/nx-win32-arm64-msvc-16.2.2.tgz", - "integrity": "sha512-8m+Usj9faCl0pdQLFeBGhbYUObT3/tno5oGMPtJLyRjITNvTZAaIS4FFctp/rwJPehDBRQsUxwMJ2JRaU4jQdA==", + "version": "16.5.1", + "resolved": "https://registry.npmjs.org/@nx/nx-win32-arm64-msvc/-/nx-win32-arm64-msvc-16.5.1.tgz", + "integrity": "sha512-qtqiLS9Y9TYyAbbpq58kRoOroko4ZXg5oWVqIWFHoxc5bGPweQSJCROEqd1AOl2ZDC6BxfuVHfhDDop1kK05WA==", "cpu": [ "arm64" ], @@ -3794,9 +3686,9 @@ } }, "node_modules/@nx/nx-win32-x64-msvc": { - "version": "16.2.2", - "resolved": "https://registry.npmjs.org/@nx/nx-win32-x64-msvc/-/nx-win32-x64-msvc-16.2.2.tgz", - "integrity": "sha512-liHtyVVOttcqHIV3Xrg/1AJzEgfiOCeqJsleHXHGgPr1fxPx7SIZaa3/QnDY1lNMN+t6Gvj0/r2Ba3iuptYD3Q==", + "version": "16.5.1", + "resolved": "https://registry.npmjs.org/@nx/nx-win32-x64-msvc/-/nx-win32-x64-msvc-16.5.1.tgz", + "integrity": "sha512-kUJBLakK7iyA9WfsGGQBVennA4jwf5XIgm0lu35oMOphtZIluvzItMt0EYBmylEROpmpEIhHq0P6J9FA+WH0Rg==", "cpu": [ "x64" ], @@ -3847,16 +3739,16 @@ } }, "node_modules/@puppeteer/browsers": { - "version": "1.4.3", - "resolved": "https://registry.npmjs.org/@puppeteer/browsers/-/browsers-1.4.3.tgz", - "integrity": "sha512-8Jfkpb8qhPQhMsNBmIY8b6+ic2kvcmHZlyvifmcNKBC5jNZf3MAKq3gryKfmrjFAYFl3naPjiKljPUq5wuolfQ==", + "version": "1.4.6", + "resolved": "https://registry.npmjs.org/@puppeteer/browsers/-/browsers-1.4.6.tgz", + "integrity": "sha512-x4BEjr2SjOPowNeiguzjozQbsc6h437ovD/wu+JpaenxVLm3jkgzHY2xOslMTp50HoTvQreMjiexiGQw1sqZlQ==", "dev": true, "dependencies": { "debug": "4.3.4", "extract-zip": "2.0.1", "progress": "2.0.3", - "proxy-agent": "6.2.1", - "tar-fs": "3.0.3", + "proxy-agent": "6.3.0", + "tar-fs": "3.0.4", "unbzip2-stream": "1.4.3", "yargs": "17.7.1" }, @@ -3908,13 +3800,13 @@ } }, "node_modules/@schematics/angular": { - "version": "16.1.3", - "resolved": "https://registry.npmjs.org/@schematics/angular/-/angular-16.1.3.tgz", - "integrity": "sha512-bNSxCLf6f+/dsQ1k3PhcZhrC/qgJSCpM6h3m6ATpjR+tYW/v7WR1OyE5r3DQmDe7NJSazBvpbrRtg8xjRsMzvw==", + "version": "16.1.7", + "resolved": "https://registry.npmjs.org/@schematics/angular/-/angular-16.1.7.tgz", + "integrity": "sha512-ynMh1o24ImTyHDsrwWzMwxIb5VUgk22ZD3SgcQ8I9ZSSPiFyCzNrbwz20+WqUfVtT0nsI+LWw9UaGPgwCLZnBQ==", "dev": true, "dependencies": { - "@angular-devkit/core": "16.1.3", - "@angular-devkit/schematics": "16.1.3", + "@angular-devkit/core": "16.1.7", + "@angular-devkit/schematics": "16.1.7", "jsonc-parser": "3.2.0" }, "engines": { @@ -4038,24 +3930,35 @@ "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", "dev": true }, + "node_modules/@sigstore/bundle": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/@sigstore/bundle/-/bundle-1.0.0.tgz", + "integrity": "sha512-yLvrWDOh6uMOUlFCTJIZEnwOT9Xte7NPXUqVexEKGSF5XtBAuSg5du0kn3dRR0p47a4ah10Y0mNt8+uyeQXrBQ==", + "dev": true, + "dependencies": { + "@sigstore/protobuf-specs": "^0.2.0" + }, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, "node_modules/@sigstore/protobuf-specs": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/@sigstore/protobuf-specs/-/protobuf-specs-0.1.0.tgz", - "integrity": "sha512-a31EnjuIDSX8IXBUib3cYLDRlPMU36AWX4xS8ysLaNu4ZzUesDiPt83pgrW2X1YLMe5L2HbDyaKK5BrL4cNKaQ==", + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/@sigstore/protobuf-specs/-/protobuf-specs-0.2.0.tgz", + "integrity": "sha512-8ZhZKAVfXjIspDWwm3D3Kvj0ddbJ0HqDZ/pOs5cx88HpT8mVsotFrg7H1UMnXOuDHz6Zykwxn4mxG3QLuN+RUg==", "dev": true, "engines": { "node": "^14.17.0 || ^16.13.0 || >=18.0.0" } }, "node_modules/@sigstore/tuf": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/@sigstore/tuf/-/tuf-1.0.0.tgz", - "integrity": "sha512-bLzi9GeZgMCvjJeLUIfs8LJYCxrPRA8IXQkzUtaFKKVPTz0mucRyqFcV2U20yg9K+kYAD0YSitzGfRZCFLjdHQ==", + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/@sigstore/tuf/-/tuf-1.0.3.tgz", + "integrity": "sha512-2bRovzs0nJZFlCN3rXirE4gwxCn97JNjMmwpecqlbgV9WcxX7WRuIrgzx/X7Ib7MYRbyUTpBYE0s2x6AmZXnlg==", "dev": true, "dependencies": { - "@sigstore/protobuf-specs": "^0.1.0", - "make-fetch-happen": "^11.0.1", - "tuf-js": "^1.1.3" + "@sigstore/protobuf-specs": "^0.2.0", + "tuf-js": "^1.1.7" }, "engines": { "node": "^14.17.0 || ^16.13.0 || >=18.0.0" @@ -4076,6 +3979,12 @@ "node": ">= 10" } }, + "node_modules/@tootallnate/quickjs-emscripten": { + "version": "0.23.0", + "resolved": "https://registry.npmjs.org/@tootallnate/quickjs-emscripten/-/quickjs-emscripten-0.23.0.tgz", + "integrity": "sha512-C5Mc6rdnsaJDjO3UpGW/CQTHtCKaYlScZTly4JIu97Jxo/odCiH0ITnDXSJPTOrEKk/ycSZ0AOgTmkDtkOsvIA==", + "dev": true + }, "node_modules/@tufjs/canonical-json": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/@tufjs/canonical-json/-/canonical-json-1.0.0.tgz", @@ -4108,9 +4017,9 @@ } }, "node_modules/@tufjs/models/node_modules/minimatch": { - "version": "9.0.2", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.2.tgz", - "integrity": "sha512-PZOT9g5v2ojiTL7r1xF6plNHLtOeTpSlDI007As2NlA2aYBMfVom17yqa6QzhmDP8QOhn7LjHTg7DFCVSSa6yg==", + "version": "9.0.3", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.3.tgz", + "integrity": "sha512-RHiac9mvaRw0x3AYRgDC1CxAP7HTcNrrECeA8YYJeWnpo+2Q5CegtZjaotWTWxDG3UeGA1coE05iH1mPjT/2mg==", "dev": true, "dependencies": { "brace-expansion": "^2.0.1" @@ -4176,9 +4085,9 @@ } }, "node_modules/@types/eslint": { - "version": "8.40.2", - "resolved": "https://registry.npmjs.org/@types/eslint/-/eslint-8.40.2.tgz", - "integrity": "sha512-PRVjQ4Eh9z9pmmtaq8nTjZjQwKFk7YIHIud3lRoKRBgUQjgjRmoGxxGEPXQkF+lH7QkHJRNr5F4aBgYCW0lqpQ==", + "version": "8.44.1", + "resolved": "https://registry.npmjs.org/@types/eslint/-/eslint-8.44.1.tgz", + "integrity": "sha512-XpNDc4Z5Tb4x+SW1MriMVeIsMoONHCkWFMkR/aPJbzEsxqHy+4Glu/BqTdPrApfDeMaXbtNh6bseNgl5KaWrSg==", "dev": true, "dependencies": { "@types/estree": "*", @@ -4271,9 +4180,9 @@ "dev": true }, "node_modules/@types/lodash": { - "version": "4.14.195", - "resolved": "https://registry.npmjs.org/@types/lodash/-/lodash-4.14.195.tgz", - "integrity": "sha512-Hwx9EUgdwf2GLarOjQp5ZH8ZmblzcbTBC2wtQWNKARBSxM9ezRIAUpeDTgoQRAFB0+8CNWXVA9+MaSOzOF3nPg==", + "version": "4.14.196", + "resolved": "https://registry.npmjs.org/@types/lodash/-/lodash-4.14.196.tgz", + "integrity": "sha512-22y3o88f4a94mKljsZcanlNWPzO0uBsBdzLAngf2tp533LzZcQzb6+eZPJ+vCTt+bqF2XnvT9gejTLsAcJAJyQ==", "dev": true }, "node_modules/@types/luxon": { @@ -4381,130 +4290,27 @@ "resolved": "https://registry.npmjs.org/@types/yauzl/-/yauzl-2.10.0.tgz", "integrity": "sha512-Cn6WYCm0tXv8p6k+A8PvbDG763EDpBoTzHdA+Q/MF6H3sapGjCm9NzoaJncJS9tUKSuCoDs9XHxYYsQDgxR6kw==", "dev": true, - "optional": true, - "dependencies": { - "@types/node": "*" - } - }, - "node_modules/@typescript-eslint/eslint-plugin": { - "version": "5.60.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-5.60.1.tgz", - "integrity": "sha512-KSWsVvsJsLJv3c4e73y/Bzt7OpqMCADUO846bHcuWYSYM19bldbAeDv7dYyV0jwkbMfJ2XdlzwjhXtuD7OY6bw==", - "dev": true, - "dependencies": { - "@eslint-community/regexpp": "^4.4.0", - "@typescript-eslint/scope-manager": "5.60.1", - "@typescript-eslint/type-utils": "5.60.1", - "@typescript-eslint/utils": "5.60.1", - "debug": "^4.3.4", - "grapheme-splitter": "^1.0.4", - "ignore": "^5.2.0", - "natural-compare-lite": "^1.4.0", - "semver": "^7.3.7", - "tsutils": "^3.21.0" - }, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - }, - "peerDependencies": { - "@typescript-eslint/parser": "^5.0.0", - "eslint": "^6.0.0 || ^7.0.0 || ^8.0.0" - }, - "peerDependenciesMeta": { - "typescript": { - "optional": true - } - } - }, - "node_modules/@typescript-eslint/eslint-plugin/node_modules/@typescript-eslint/type-utils": { - "version": "5.60.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-5.60.1.tgz", - "integrity": "sha512-vN6UztYqIu05nu7JqwQGzQKUJctzs3/Hg7E2Yx8rz9J+4LgtIDFWjjl1gm3pycH0P3mHAcEUBd23LVgfrsTR8A==", - "dev": true, - "dependencies": { - "@typescript-eslint/typescript-estree": "5.60.1", - "@typescript-eslint/utils": "5.60.1", - "debug": "^4.3.4", - "tsutils": "^3.21.0" - }, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - }, - "peerDependencies": { - "eslint": "*" - }, - "peerDependenciesMeta": { - "typescript": { - "optional": true - } - } - }, - "node_modules/@typescript-eslint/eslint-plugin/node_modules/@typescript-eslint/utils": { - "version": "5.60.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-5.60.1.tgz", - "integrity": "sha512-tiJ7FFdFQOWssFa3gqb94Ilexyw0JVxj6vBzaSpfN/8IhoKkDuSAenUKvsSHw2A/TMpJb26izIszTXaqygkvpQ==", - "dev": true, - "dependencies": { - "@eslint-community/eslint-utils": "^4.2.0", - "@types/json-schema": "^7.0.9", - "@types/semver": "^7.3.12", - "@typescript-eslint/scope-manager": "5.60.1", - "@typescript-eslint/types": "5.60.1", - "@typescript-eslint/typescript-estree": "5.60.1", - "eslint-scope": "^5.1.1", - "semver": "^7.3.7" - }, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - }, - "peerDependencies": { - "eslint": "^6.0.0 || ^7.0.0 || ^8.0.0" - } - }, - "node_modules/@typescript-eslint/eslint-plugin/node_modules/eslint-scope": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.1.1.tgz", - "integrity": "sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==", - "dev": true, - "dependencies": { - "esrecurse": "^4.3.0", - "estraverse": "^4.1.1" - }, - "engines": { - "node": ">=8.0.0" - } - }, - "node_modules/@typescript-eslint/eslint-plugin/node_modules/estraverse": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz", - "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==", - "dev": true, - "engines": { - "node": ">=4.0" + "optional": true, + "dependencies": { + "@types/node": "*" } }, - "node_modules/@typescript-eslint/parser": { - "version": "5.60.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-5.60.1.tgz", - "integrity": "sha512-pHWlc3alg2oSMGwsU/Is8hbm3XFbcrb6P5wIxcQW9NsYBfnrubl/GhVVD/Jm/t8HXhA2WncoIRfBtnCgRGV96Q==", + "node_modules/@typescript-eslint/eslint-plugin": { + "version": "5.62.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-5.62.0.tgz", + "integrity": "sha512-TiZzBSJja/LbhNPvk6yc0JrX9XqhQ0hdh6M2svYfsHGejaKFIAGd9MQ+ERIMzLGlN/kZoYIgdxFV0PuljTKXag==", "dev": true, "dependencies": { - "@typescript-eslint/scope-manager": "5.60.1", - "@typescript-eslint/types": "5.60.1", - "@typescript-eslint/typescript-estree": "5.60.1", - "debug": "^4.3.4" + "@eslint-community/regexpp": "^4.4.0", + "@typescript-eslint/scope-manager": "5.62.0", + "@typescript-eslint/type-utils": "5.62.0", + "@typescript-eslint/utils": "5.62.0", + "debug": "^4.3.4", + "graphemer": "^1.4.0", + "ignore": "^5.2.0", + "natural-compare-lite": "^1.4.0", + "semver": "^7.3.7", + "tsutils": "^3.21.0" }, "engines": { "node": "^12.22.0 || ^14.17.0 || >=16.0.0" @@ -4514,6 +4320,7 @@ "url": "https://opencollective.com/typescript-eslint" }, "peerDependencies": { + "@typescript-eslint/parser": "^5.0.0", "eslint": "^6.0.0 || ^7.0.0 || ^8.0.0" }, "peerDependenciesMeta": { @@ -4522,33 +4329,16 @@ } } }, - "node_modules/@typescript-eslint/scope-manager": { - "version": "5.60.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-5.60.1.tgz", - "integrity": "sha512-Dn/LnN7fEoRD+KspEOV0xDMynEmR3iSHdgNsarlXNLGGtcUok8L4N71dxUgt3YvlO8si7E+BJ5Fe3wb5yUw7DQ==", - "dev": true, - "dependencies": { - "@typescript-eslint/types": "5.60.1", - "@typescript-eslint/visitor-keys": "5.60.1" - }, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - } - }, - "node_modules/@typescript-eslint/type-utils": { - "version": "5.59.7", - "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-5.59.7.tgz", - "integrity": "sha512-ozuz/GILuYG7osdY5O5yg0QxXUAEoI4Go3Do5xeu+ERH9PorHBPSdvD3Tjp2NN2bNLh1NJQSsQu2TPu/Ly+HaQ==", + "node_modules/@typescript-eslint/parser": { + "version": "5.62.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-5.62.0.tgz", + "integrity": "sha512-VlJEV0fOQ7BExOsHYAGrgbEiZoi8D+Bl2+f6V2RrXerRSylnp+ZBHmPvaIa8cz0Ajx7WO7Z5RqfgYg7ED1nRhA==", "dev": true, "dependencies": { - "@typescript-eslint/typescript-estree": "5.59.7", - "@typescript-eslint/utils": "5.59.7", - "debug": "^4.3.4", - "tsutils": "^3.21.0" + "@typescript-eslint/scope-manager": "5.62.0", + "@typescript-eslint/types": "5.62.0", + "@typescript-eslint/typescript-estree": "5.62.0", + "debug": "^4.3.4" }, "engines": { "node": "^12.22.0 || ^14.17.0 || >=16.0.0" @@ -4558,7 +4348,7 @@ "url": "https://opencollective.com/typescript-eslint" }, "peerDependencies": { - "eslint": "*" + "eslint": "^6.0.0 || ^7.0.0 || ^8.0.0" }, "peerDependenciesMeta": { "typescript": { @@ -4566,11 +4356,15 @@ } } }, - "node_modules/@typescript-eslint/type-utils/node_modules/@typescript-eslint/types": { - "version": "5.59.7", - "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-5.59.7.tgz", - "integrity": "sha512-UnVS2MRRg6p7xOSATscWkKjlf/NDKuqo5TdbWck6rIRZbmKpVNTLALzNvcjIfHBE7736kZOFc/4Z3VcZwuOM/A==", + "node_modules/@typescript-eslint/scope-manager": { + "version": "5.62.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-5.62.0.tgz", + "integrity": "sha512-VXuvVvZeQCQb5Zgf4HAxc04q5j+WrNAtNh9OwCsCgpKqESMTu3tF/jhZ3xG6T4NZwWl65Bg8KuS2uEvhSfLl0w==", "dev": true, + "dependencies": { + "@typescript-eslint/types": "5.62.0", + "@typescript-eslint/visitor-keys": "5.62.0" + }, "engines": { "node": "^12.22.0 || ^14.17.0 || >=16.0.0" }, @@ -4579,18 +4373,15 @@ "url": "https://opencollective.com/typescript-eslint" } }, - "node_modules/@typescript-eslint/type-utils/node_modules/@typescript-eslint/typescript-estree": { - "version": "5.59.7", - "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-5.59.7.tgz", - "integrity": "sha512-4A1NtZ1I3wMN2UGDkU9HMBL+TIQfbrh4uS0WDMMpf3xMRursDbqEf1ahh6vAAe3mObt8k3ZATnezwG4pdtWuUQ==", + "node_modules/@typescript-eslint/type-utils": { + "version": "5.62.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-5.62.0.tgz", + "integrity": "sha512-xsSQreu+VnfbqQpW5vnCJdq1Z3Q0U31qiWmRhr98ONQmcp/yhiPJFPq8MXiJVLiksmOKSjIldZzkebzHuCGzew==", "dev": true, "dependencies": { - "@typescript-eslint/types": "5.59.7", - "@typescript-eslint/visitor-keys": "5.59.7", + "@typescript-eslint/typescript-estree": "5.62.0", + "@typescript-eslint/utils": "5.62.0", "debug": "^4.3.4", - "globby": "^11.1.0", - "is-glob": "^4.0.3", - "semver": "^7.3.7", "tsutils": "^3.21.0" }, "engines": { @@ -4600,33 +4391,19 @@ "type": "opencollective", "url": "https://opencollective.com/typescript-eslint" }, + "peerDependencies": { + "eslint": "*" + }, "peerDependenciesMeta": { "typescript": { "optional": true } } }, - "node_modules/@typescript-eslint/type-utils/node_modules/@typescript-eslint/visitor-keys": { - "version": "5.59.7", - "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-5.59.7.tgz", - "integrity": "sha512-tyN+X2jvMslUszIiYbF0ZleP+RqQsFVpGrKI6e0Eet1w8WmhsAtmzaqm8oM8WJQ1ysLwhnsK/4hYHJjOgJVfQQ==", - "dev": true, - "dependencies": { - "@typescript-eslint/types": "5.59.7", - "eslint-visitor-keys": "^3.3.0" - }, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - } - }, "node_modules/@typescript-eslint/types": { - "version": "5.60.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-5.60.1.tgz", - "integrity": "sha512-zDcDx5fccU8BA0IDZc71bAtYIcG9PowaOwaD8rjYbqwK7dpe/UMQl3inJ4UtUK42nOCT41jTSCwg76E62JpMcg==", + "version": "5.62.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-5.62.0.tgz", + "integrity": "sha512-87NVngcbVXUahrRTqIK27gD2t5Cu1yuCXxbLcFtCzZGlfyVWWh8mLHkoxzjsB6DDNnvdL+fW8MiwPEJyGJQDgQ==", "dev": true, "engines": { "node": "^12.22.0 || ^14.17.0 || >=16.0.0" @@ -4637,13 +4414,13 @@ } }, "node_modules/@typescript-eslint/typescript-estree": { - "version": "5.60.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-5.60.1.tgz", - "integrity": "sha512-hkX70J9+2M2ZT6fhti5Q2FoU9zb+GeZK2SLP1WZlvUDqdMbEKhexZODD1WodNRyO8eS+4nScvT0dts8IdaBzfw==", + "version": "5.62.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-5.62.0.tgz", + "integrity": "sha512-CmcQ6uY7b9y694lKdRB8FEel7JbU/40iSAPomu++SjLMntB+2Leay2LO6i8VnJk58MtE9/nQSFIH6jpyRWyYzA==", "dev": true, "dependencies": { - "@typescript-eslint/types": "5.60.1", - "@typescript-eslint/visitor-keys": "5.60.1", + "@typescript-eslint/types": "5.62.0", + "@typescript-eslint/visitor-keys": "5.62.0", "debug": "^4.3.4", "globby": "^11.1.0", "is-glob": "^4.0.3", @@ -4664,17 +4441,17 @@ } }, "node_modules/@typescript-eslint/utils": { - "version": "5.59.7", - "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-5.59.7.tgz", - "integrity": "sha512-yCX9WpdQKaLufz5luG4aJbOpdXf/fjwGMcLFXZVPUz3QqLirG5QcwwnIHNf8cjLjxK4qtzTO8udUtMQSAToQnQ==", + "version": "5.62.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-5.62.0.tgz", + "integrity": "sha512-n8oxjeb5aIbPFEtmQxQYOLI0i9n5ySBEY/ZEHHZqKQSFnxio1rv6dthascc9dLuwrL0RC5mPCxB7vnAVGAYWAQ==", "dev": true, "dependencies": { "@eslint-community/eslint-utils": "^4.2.0", "@types/json-schema": "^7.0.9", "@types/semver": "^7.3.12", - "@typescript-eslint/scope-manager": "5.59.7", - "@typescript-eslint/types": "5.59.7", - "@typescript-eslint/typescript-estree": "5.59.7", + "@typescript-eslint/scope-manager": "5.62.0", + "@typescript-eslint/types": "5.62.0", + "@typescript-eslint/typescript-estree": "5.62.0", "eslint-scope": "^5.1.1", "semver": "^7.3.7" }, @@ -4689,80 +4466,6 @@ "eslint": "^6.0.0 || ^7.0.0 || ^8.0.0" } }, - "node_modules/@typescript-eslint/utils/node_modules/@typescript-eslint/scope-manager": { - "version": "5.59.7", - "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-5.59.7.tgz", - "integrity": "sha512-FL6hkYWK9zBGdxT2wWEd2W8ocXMu3K94i3gvMrjXpx+koFYdYV7KprKfirpgY34vTGzEPPuKoERpP8kD5h7vZQ==", - "dev": true, - "dependencies": { - "@typescript-eslint/types": "5.59.7", - "@typescript-eslint/visitor-keys": "5.59.7" - }, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - } - }, - "node_modules/@typescript-eslint/utils/node_modules/@typescript-eslint/types": { - "version": "5.59.7", - "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-5.59.7.tgz", - "integrity": "sha512-UnVS2MRRg6p7xOSATscWkKjlf/NDKuqo5TdbWck6rIRZbmKpVNTLALzNvcjIfHBE7736kZOFc/4Z3VcZwuOM/A==", - "dev": true, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - } - }, - "node_modules/@typescript-eslint/utils/node_modules/@typescript-eslint/typescript-estree": { - "version": "5.59.7", - "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-5.59.7.tgz", - "integrity": "sha512-4A1NtZ1I3wMN2UGDkU9HMBL+TIQfbrh4uS0WDMMpf3xMRursDbqEf1ahh6vAAe3mObt8k3ZATnezwG4pdtWuUQ==", - "dev": true, - "dependencies": { - "@typescript-eslint/types": "5.59.7", - "@typescript-eslint/visitor-keys": "5.59.7", - "debug": "^4.3.4", - "globby": "^11.1.0", - "is-glob": "^4.0.3", - "semver": "^7.3.7", - "tsutils": "^3.21.0" - }, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - }, - "peerDependenciesMeta": { - "typescript": { - "optional": true - } - } - }, - "node_modules/@typescript-eslint/utils/node_modules/@typescript-eslint/visitor-keys": { - "version": "5.59.7", - "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-5.59.7.tgz", - "integrity": "sha512-tyN+X2jvMslUszIiYbF0ZleP+RqQsFVpGrKI6e0Eet1w8WmhsAtmzaqm8oM8WJQ1ysLwhnsK/4hYHJjOgJVfQQ==", - "dev": true, - "dependencies": { - "@typescript-eslint/types": "5.59.7", - "eslint-visitor-keys": "^3.3.0" - }, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - } - }, "node_modules/@typescript-eslint/utils/node_modules/eslint-scope": { "version": "5.1.1", "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.1.1.tgz", @@ -4786,12 +4489,12 @@ } }, "node_modules/@typescript-eslint/visitor-keys": { - "version": "5.60.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-5.60.1.tgz", - "integrity": "sha512-xEYIxKcultP6E/RMKqube11pGjXH1DCo60mQoWhVYyKfLkwbIVVjYxmOenNMxILx0TjCujPTjjnTIVzm09TXIw==", + "version": "5.62.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-5.62.0.tgz", + "integrity": "sha512-07ny+LHRzQXepkGg6w0mFY41fVUNBrL2Roj/++7V1txKugfjm/Ci/qSND03r2RhlJhJYMcTn9AhhSSqQp0Ysyw==", "dev": true, "dependencies": { - "@typescript-eslint/types": "5.60.1", + "@typescript-eslint/types": "5.62.0", "eslint-visitor-keys": "^3.3.0" }, "engines": { @@ -4967,13 +4670,16 @@ "dev": true }, "node_modules/@yarnpkg/parsers": { - "version": "3.0.0-rc.47.1", - "resolved": "https://registry.npmjs.org/@yarnpkg/parsers/-/parsers-3.0.0-rc.47.1.tgz", - "integrity": "sha512-qKP4Rp7mc0lbERrxTPiEkwZiwIUUg3OhjbM4qcVWnVp1/RUP13vF4P4jHGOQY/AhyGOZKDjdRpaupCYl+phLOQ==", + "version": "3.0.0-rc.46", + "resolved": "https://registry.npmjs.org/@yarnpkg/parsers/-/parsers-3.0.0-rc.46.tgz", + "integrity": "sha512-aiATs7pSutzda/rq8fnuPwTglyVwjM22bNnK2ZgjrpAjQHSSl3lztd2f9evst1W/qnC58DRz7T7QndUDumAR4Q==", "dev": true, "dependencies": { "js-yaml": "^3.10.0", "tslib": "^2.4.0" + }, + "engines": { + "node": ">=14.15.0" } }, "node_modules/@zkochan/js-yaml": { @@ -5020,9 +4726,9 @@ } }, "node_modules/acorn": { - "version": "8.9.0", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.9.0.tgz", - "integrity": "sha512-jaVNAFBHNLXspO543WnNNPZFRtavh3skAkITqD0/2aeMkKZTN+254PyhwxFYrk3vQ1xfY+2wbesJMs/JC8/PwQ==", + "version": "8.10.0", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.10.0.tgz", + "integrity": "sha512-F0SAmZ8iUtS//m8DmCTA0jlh6TDKkHQyK6xc6V4KDTyZKA9dnvX9/3sRTVQrWm79glUAZbnmmNcdYwUIHWVybw==", "dev": true, "bin": { "acorn": "bin/acorn" @@ -5049,15 +4755,6 @@ "acorn": "^6.0.0 || ^7.0.0 || ^8.0.0" } }, - "node_modules/acorn-walk": { - "version": "8.2.0", - "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-8.2.0.tgz", - "integrity": "sha512-k+iyHEuPgSw6SbuDpGQM+06HQUa04DZ3o+F6CSzXMvvI5KMvnaEqXe+YVe555R9nn6GPt404fos4wcgpw12SDA==", - "dev": true, - "engines": { - "node": ">=0.4.0" - } - }, "node_modules/adjust-sourcemap-loader": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/adjust-sourcemap-loader/-/adjust-sourcemap-loader-4.0.0.tgz", @@ -5287,12 +4984,12 @@ } }, "node_modules/aria-query": { - "version": "5.1.3", - "resolved": "https://registry.npmjs.org/aria-query/-/aria-query-5.1.3.tgz", - "integrity": "sha512-R5iJ5lkuHybztUfuOAznmboyjWq8O6sqNqtK7CLOqdydi54VNbORp49mb14KbWgG1QD3JFO9hJdZ+y4KutfdOQ==", + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/aria-query/-/aria-query-5.3.0.tgz", + "integrity": "sha512-b0P0sZPKtyu8HkeRAfCq0IfURZK+SuwMjY1UXGBU27wpAiTwQAIlq56IbIO+ytk/JjS1fMR14ee5WBBfKi5J6A==", "dev": true, "dependencies": { - "deep-equal": "^2.0.5" + "dequal": "^2.0.3" } }, "node_modules/array-buffer-byte-length": { @@ -5547,51 +5244,51 @@ } }, "node_modules/babel-plugin-polyfill-corejs2": { - "version": "0.4.3", - "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs2/-/babel-plugin-polyfill-corejs2-0.4.3.tgz", - "integrity": "sha512-bM3gHc337Dta490gg+/AseNB9L4YLHxq1nGKZZSHbhXv4aTYU2MD2cjza1Ru4S6975YLTaL1K8uJf6ukJhhmtw==", + "version": "0.4.5", + "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs2/-/babel-plugin-polyfill-corejs2-0.4.5.tgz", + "integrity": "sha512-19hwUH5FKl49JEsvyTcoHakh6BE0wgXLLptIyKZ3PijHc/Ci521wygORCUCCred+E/twuqRyAkE02BAWPmsHOg==", "dev": true, "dependencies": { - "@babel/compat-data": "^7.17.7", - "@babel/helper-define-polyfill-provider": "^0.4.0", - "semver": "^6.1.1" + "@babel/compat-data": "^7.22.6", + "@babel/helper-define-polyfill-provider": "^0.4.2", + "semver": "^6.3.1" }, "peerDependencies": { - "@babel/core": "^7.0.0-0" + "@babel/core": "^7.4.0 || ^8.0.0-0 <8.0.0" } }, "node_modules/babel-plugin-polyfill-corejs2/node_modules/semver": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", - "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", "dev": true, "bin": { "semver": "bin/semver.js" } }, "node_modules/babel-plugin-polyfill-corejs3": { - "version": "0.8.1", - "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.8.1.tgz", - "integrity": "sha512-ikFrZITKg1xH6pLND8zT14UPgjKHiGLqex7rGEZCH2EvhsneJaJPemmpQaIZV5AL03II+lXylw3UmddDK8RU5Q==", + "version": "0.8.3", + "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.8.3.tgz", + "integrity": "sha512-z41XaniZL26WLrvjy7soabMXrfPWARN25PZoriDEiLMxAp50AUW3t35BGQUMg5xK3UrpVTtagIDklxYa+MhiNA==", "dev": true, "dependencies": { - "@babel/helper-define-polyfill-provider": "^0.4.0", - "core-js-compat": "^3.30.1" + "@babel/helper-define-polyfill-provider": "^0.4.2", + "core-js-compat": "^3.31.0" }, "peerDependencies": { - "@babel/core": "^7.0.0-0" + "@babel/core": "^7.4.0 || ^8.0.0-0 <8.0.0" } }, "node_modules/babel-plugin-polyfill-regenerator": { - "version": "0.5.0", - "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-regenerator/-/babel-plugin-polyfill-regenerator-0.5.0.tgz", - "integrity": "sha512-hDJtKjMLVa7Z+LwnTCxoDLQj6wdc+B8dun7ayF2fYieI6OzfuvcLMB32ihJZ4UhCBwNYGl5bg/x/P9cMdnkc2g==", + "version": "0.5.2", + "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-regenerator/-/babel-plugin-polyfill-regenerator-0.5.2.tgz", + "integrity": "sha512-tAlOptU0Xj34V1Y2PNTL4Y0FOJMDB6bZmoW39FeCQIhigGLkqu3Fj6uiXpxIf6Ij274ENdYx64y6Au+ZKlb1IA==", "dev": true, "dependencies": { - "@babel/helper-define-polyfill-provider": "^0.4.0" + "@babel/helper-define-polyfill-provider": "^0.4.2" }, "peerDependencies": { - "@babel/core": "^7.0.0-0" + "@babel/core": "^7.4.0 || ^8.0.0-0 <8.0.0" } }, "node_modules/balanced-match": { @@ -5808,9 +5505,9 @@ "peer": true }, "node_modules/browserslist": { - "version": "4.21.9", - "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.21.9.tgz", - "integrity": "sha512-M0MFoZzbUrRU4KNfCrDLnvyE7gub+peetoTid3TBIqtunaDJyXlwhakT+/VkvSXcfIzFfK/nkCs4nmyTmxdNSg==", + "version": "4.21.10", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.21.10.tgz", + "integrity": "sha512-bipEBdZfVH5/pwrvqc+Ub0kUPVfGUhlKxbvfD+z1BDnPEO/X98ruXGA1WP5ASpAFKan7Qr6j736IacbZQuAlKQ==", "dev": true, "funding": [ { @@ -5827,9 +5524,9 @@ } ], "dependencies": { - "caniuse-lite": "^1.0.30001503", - "electron-to-chromium": "^1.4.431", - "node-releases": "^2.0.12", + "caniuse-lite": "^1.0.30001517", + "electron-to-chromium": "^1.4.477", + "node-releases": "^2.0.13", "update-browserslist-db": "^1.0.11" }, "bin": { @@ -5929,16 +5626,16 @@ } }, "node_modules/cacache/node_modules/glob": { - "version": "10.3.1", - "resolved": "https://registry.npmjs.org/glob/-/glob-10.3.1.tgz", - "integrity": "sha512-9BKYcEeIs7QwlCYs+Y3GBvqAMISufUS0i2ELd11zpZjxI5V9iyRj0HgzB5/cLf2NY4vcYBTYzJ7GIui7j/4DOw==", + "version": "10.3.3", + "resolved": "https://registry.npmjs.org/glob/-/glob-10.3.3.tgz", + "integrity": "sha512-92vPiMb/iqpmEgsOoIDvTjc50wf9CCCvMzsi6W0JLPeUKE8TWP1a73PgqSrqy7iAZxaSD1YdzU7QZR5LF51MJw==", "dev": true, "dependencies": { "foreground-child": "^3.1.0", "jackspeak": "^2.0.3", "minimatch": "^9.0.1", - "minipass": "^5.0.0 || ^6.0.2", - "path-scurry": "^1.10.0" + "minipass": "^5.0.0 || ^6.0.2 || ^7.0.0", + "path-scurry": "^1.10.1" }, "bin": { "glob": "dist/cjs/src/bin.js" @@ -5960,9 +5657,9 @@ } }, "node_modules/cacache/node_modules/minimatch": { - "version": "9.0.2", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.2.tgz", - "integrity": "sha512-PZOT9g5v2ojiTL7r1xF6plNHLtOeTpSlDI007As2NlA2aYBMfVom17yqa6QzhmDP8QOhn7LjHTg7DFCVSSa6yg==", + "version": "9.0.3", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.3.tgz", + "integrity": "sha512-RHiac9mvaRw0x3AYRgDC1CxAP7HTcNrrECeA8YYJeWnpo+2Q5CegtZjaotWTWxDG3UeGA1coE05iH1mPjT/2mg==", "dev": true, "dependencies": { "brace-expansion": "^2.0.1" @@ -5975,9 +5672,9 @@ } }, "node_modules/cachedir": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/cachedir/-/cachedir-2.3.0.tgz", - "integrity": "sha512-A+Fezp4zxnit6FanDmv9EqXNAi3vt9DWp51/71UEhXukb7QUuvtv9344h91dyAxuTLoSYJFU299qzR3tzwPAhw==", + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/cachedir/-/cachedir-2.4.0.tgz", + "integrity": "sha512-9EtFOZR8g22CL7BWjJ9BUx1+A/djkofnyW3aOXZORNW2kxoUpx2h+uN2cOqwPmFhnpVmxg+KW2OjOSgChTEvsQ==", "dev": true, "engines": { "node": ">=6" @@ -6015,9 +5712,9 @@ } }, "node_modules/caniuse-lite": { - "version": "1.0.30001509", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001509.tgz", - "integrity": "sha512-2uDDk+TRiTX5hMcUYT/7CSyzMZxjfGu0vAUjS2g0LSD8UoXOv0LtpH4LxGMemsiPq6LCVIUjNwVM0erkOkGCDA==", + "version": "1.0.30001519", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001519.tgz", + "integrity": "sha512-0QHgqR+Jv4bxHMp8kZ1Kn8CH55OikjKJ6JmKkZYP1F3D7w+lnFXF70nG5eNfsZS89jadi5Ywy5UCSKLAglIRkg==", "dev": true, "funding": [ { @@ -6335,9 +6032,9 @@ } }, "node_modules/commander": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/commander/-/commander-5.1.0.tgz", - "integrity": "sha512-P0CysNDQ7rtVw4QIQtm+MRxV66vKFSvlsQvGYXZWR3qFU0jlMKHZZZgw8e+8DSah4UDKMqnknRDQz+xuQXQ/Zg==", + "version": "6.2.1", + "resolved": "https://registry.npmjs.org/commander/-/commander-6.2.1.tgz", + "integrity": "sha512-U7VdrJFnJgo4xjrHpTzu0yrHPGImdsmD95ZlgYSEajAn2JKzDhDTPG9kBTefmObL2w/ngeZnilk+OV9CG3d7UA==", "dev": true, "engines": { "node": ">= 6" @@ -6564,6 +6261,34 @@ "webpack": "^5.1.0" } }, + "node_modules/copy-webpack-plugin/node_modules/fast-glob": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.3.1.tgz", + "integrity": "sha512-kNFPyjhh5cKjrUltxs+wFx+ZkbRaxxmZ+X0ZU31SOsxCEtP9VPgtq2teZw1DebupL5GmDaNQ6yKMMVcM41iqDg==", + "dev": true, + "dependencies": { + "@nodelib/fs.stat": "^2.0.2", + "@nodelib/fs.walk": "^1.2.3", + "glob-parent": "^5.1.2", + "merge2": "^1.3.0", + "micromatch": "^4.0.4" + }, + "engines": { + "node": ">=8.6.0" + } + }, + "node_modules/copy-webpack-plugin/node_modules/fast-glob/node_modules/glob-parent": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", + "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", + "dev": true, + "dependencies": { + "is-glob": "^4.0.1" + }, + "engines": { + "node": ">= 6" + } + }, "node_modules/copy-webpack-plugin/node_modules/glob-parent": { "version": "6.0.2", "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz", @@ -6577,14 +6302,14 @@ } }, "node_modules/copy-webpack-plugin/node_modules/globby": { - "version": "13.2.0", - "resolved": "https://registry.npmjs.org/globby/-/globby-13.2.0.tgz", - "integrity": "sha512-jWsQfayf13NvqKUIL3Ta+CIqMnvlaIDFveWE/dpOZ9+3AMEJozsxDvKA02zync9UuvOM8rOXzsD5GqKP4OnWPQ==", + "version": "13.2.2", + "resolved": "https://registry.npmjs.org/globby/-/globby-13.2.2.tgz", + "integrity": "sha512-Y1zNGV+pzQdh7H39l9zgB4PJqjRNqydvdYCDG4HFXM4XuvSaQQlEc91IU1yALL8gUTDomgBAfz3XJdmUS+oo0w==", "dev": true, "dependencies": { "dir-glob": "^3.0.1", - "fast-glob": "^3.2.11", - "ignore": "^5.2.0", + "fast-glob": "^3.3.0", + "ignore": "^5.2.4", "merge2": "^1.4.1", "slash": "^4.0.0" }, @@ -6608,12 +6333,12 @@ } }, "node_modules/core-js-compat": { - "version": "3.31.0", - "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.31.0.tgz", - "integrity": "sha512-hM7YCu1cU6Opx7MXNu0NuumM0ezNeAeRKadixyiQELWY3vT3De9S4J5ZBMraWV2vZnrE1Cirl0GtFtDtMUXzPw==", + "version": "3.32.0", + "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.32.0.tgz", + "integrity": "sha512-7a9a3D1k4UCVKnLhrgALyFcP7YCsLOQIxPd0dKjf/6GuPcgyiGP70ewWdCGrSK7evyhymi0qO4EqCmSJofDeYw==", "dev": true, "dependencies": { - "browserslist": "^4.21.5" + "browserslist": "^4.21.9" }, "funding": { "type": "opencollective", @@ -6761,12 +6486,12 @@ } }, "node_modules/cross-fetch": { - "version": "3.1.6", - "resolved": "https://registry.npmjs.org/cross-fetch/-/cross-fetch-3.1.6.tgz", - "integrity": "sha512-riRvo06crlE8HiqOwIpQhxwdOk4fOeR7FVM/wXoxchFEqMNUjvbs3bfo4OTgMEMHzppd4DxFBDbyySj8Cv781g==", + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/cross-fetch/-/cross-fetch-4.0.0.tgz", + "integrity": "sha512-e4a5N8lVvuLgAWgnCrLr2PP0YyDOTHa9H/Rj54dirp61qXnNq46m82bRhNqIA5VccJtWBvPTFRV3TtvHUKPB1g==", "dev": true, "dependencies": { - "node-fetch": "^2.6.11" + "node-fetch": "^2.6.12" } }, "node_modules/cross-spawn": { @@ -6871,15 +6596,15 @@ "dev": true }, "node_modules/cypress": { - "version": "10.11.0", - "resolved": "https://registry.npmjs.org/cypress/-/cypress-10.11.0.tgz", - "integrity": "sha512-lsaE7dprw5DoXM00skni6W5ElVVLGAdRUUdZjX2dYsGjbY/QnpzWZ95Zom1mkGg0hAaO/QVTZoFVS7Jgr/GUPA==", + "version": "12.17.3", + "resolved": "https://registry.npmjs.org/cypress/-/cypress-12.17.3.tgz", + "integrity": "sha512-/R4+xdIDjUSLYkiQfwJd630S81KIgicmQOLXotFxVXkl+eTeVO+3bHXxdi5KBh/OgC33HWN33kHX+0tQR/ZWpg==", "dev": true, "hasInstallScript": true, "dependencies": { - "@cypress/request": "^2.88.10", + "@cypress/request": "^2.88.11", "@cypress/xvfb": "^1.2.4", - "@types/node": "^14.14.31", + "@types/node": "^16.18.39", "@types/sinonjs__fake-timers": "8.1.1", "@types/sizzle": "^2.3.2", "arch": "^2.2.0", @@ -6891,10 +6616,10 @@ "check-more-types": "^2.24.0", "cli-cursor": "^3.1.0", "cli-table3": "~0.6.1", - "commander": "^5.1.0", + "commander": "^6.2.1", "common-tags": "^1.8.0", "dayjs": "^1.10.4", - "debug": "^4.3.2", + "debug": "^4.3.4", "enquirer": "^2.3.6", "eventemitter2": "6.4.7", "execa": "4.1.0", @@ -6909,12 +6634,12 @@ "listr2": "^3.8.3", "lodash": "^4.17.21", "log-symbols": "^4.0.0", - "minimist": "^1.2.6", + "minimist": "^1.2.8", "ospath": "^1.2.2", "pretty-bytes": "^5.6.0", "proxy-from-env": "1.0.0", "request-progress": "^3.0.0", - "semver": "^7.3.2", + "semver": "^7.5.3", "supports-color": "^8.1.1", "tmp": "~0.2.1", "untildify": "^4.0.0", @@ -6924,7 +6649,7 @@ "cypress": "bin/cypress" }, "engines": { - "node": ">=12.0.0" + "node": "^14.0.0 || ^16.0.0 || >=18.0.0" } }, "node_modules/cypress-mochawesome-reporter": { @@ -6963,9 +6688,9 @@ } }, "node_modules/cypress/node_modules/@types/node": { - "version": "14.18.52", - "resolved": "https://registry.npmjs.org/@types/node/-/node-14.18.52.tgz", - "integrity": "sha512-DGhiXKOHSFVVm+PJD+9Y0ObxXLeG6qwc0HoOn+ooQKeNNu+T2mEJCM5UBDUREKAggl9MHYjb5E71PAmx6MbzIg==", + "version": "16.18.39", + "resolved": "https://registry.npmjs.org/@types/node/-/node-16.18.39.tgz", + "integrity": "sha512-8q9ZexmdYYyc5/cfujaXb4YOucpQxAV4RMG0himLyDUOEr8Mr79VrqsFI+cQ2M2h89YIuy95lbxuYjxT4Hk4kQ==", "dev": true }, "node_modules/cypress/node_modules/ansi-styles": { @@ -7093,9 +6818,9 @@ } }, "node_modules/dayjs": { - "version": "1.11.8", - "resolved": "https://registry.npmjs.org/dayjs/-/dayjs-1.11.8.tgz", - "integrity": "sha512-LcgxzFoWMEPO7ggRv1Y2N31hUf2R0Vj7fuy/m+Bg1K8rr+KAs1AEy4y9jd5DXe8pbHgX+srkHNS7TH6Q6ZhYeQ==", + "version": "1.11.9", + "resolved": "https://registry.npmjs.org/dayjs/-/dayjs-1.11.9.tgz", + "integrity": "sha512-QvzAURSbQ0pKdIye2txOzNaHmxtUBXerpY0FJsFXUMKbIZeFm5ht1LS/jFsrncjnmtv8HsG0W2g6c0zUjZWmpA==", "dev": true }, "node_modules/debug": { @@ -7119,6 +6844,7 @@ "version": "1.0.1", "resolved": "https://registry.npmjs.org/debuglog/-/debuglog-1.0.1.tgz", "integrity": "sha512-syBZ+rnAK3EgMsH2aYEOLUW7mZSY9Gb+0wUMCFsZvcmiz+HigA0LOcq/HoQqVuGG+EKykunc7QG2bzrponfaSw==", + "deprecated": "Package no longer supported. Contact Support at https://www.npmjs.com/support for more info.", "dev": true, "engines": { "node": "*" @@ -7138,15 +6864,15 @@ } }, "node_modules/deep-equal": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/deep-equal/-/deep-equal-2.2.1.tgz", - "integrity": "sha512-lKdkdV6EOGoVn65XaOsPdH4rMxTZOnmFyuIkMjM1i5HHCbfjC97dawgTAy0deYNfuqUqW+Q5VrVaQYtUpSd6yQ==", + "version": "2.2.2", + "resolved": "https://registry.npmjs.org/deep-equal/-/deep-equal-2.2.2.tgz", + "integrity": "sha512-xjVyBf0w5vH0I42jdAZzOKVldmPgSulmiyPRywoyq7HXC9qdgo17kxJE+rdnif5Tz6+pIrpJI8dCpMNLIGkUiA==", "dev": true, "dependencies": { "array-buffer-byte-length": "^1.0.0", "call-bind": "^1.0.2", "es-get-iterator": "^1.1.3", - "get-intrinsic": "^1.2.0", + "get-intrinsic": "^1.2.1", "is-arguments": "^1.1.1", "is-array-buffer": "^3.0.2", "is-date-object": "^1.0.5", @@ -7274,15 +7000,14 @@ } }, "node_modules/degenerator": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/degenerator/-/degenerator-4.0.3.tgz", - "integrity": "sha512-2wY8vmCfxrQpe2PKGYdiWRre5HQRwsAXbAAWRbC+z2b80MEpnWc8A3a9k4TwqwN3Z/Fm3uhNm5vYUZIbMhyRxQ==", + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/degenerator/-/degenerator-5.0.1.tgz", + "integrity": "sha512-TllpMR/t0M5sqCXfj85i4XaAzxmS5tVA16dqvdkMwGmzI+dXLXnw3J+3Vdv7VKw+ThlTMboK6i9rnZ6Nntj5CQ==", "dev": true, "dependencies": { - "ast-types": "^0.13.2", - "escodegen": "^1.8.1", - "esprima": "^4.0.0", - "vm2": "^3.9.19" + "ast-types": "^0.13.4", + "escodegen": "^2.1.0", + "esprima": "^4.0.1" }, "engines": { "node": ">= 14" @@ -7312,6 +7037,15 @@ "node": ">= 0.8" } }, + "node_modules/dequal": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/dequal/-/dequal-2.0.3.tgz", + "integrity": "sha512-0je+qPKHEMohvfRTCEo3CrPG6cAzAYgmzKyxRiYSSDkS6eGJdyVJm7WaYA5ECaAD9wLB2T4EEeymA5aFVcYXCA==", + "dev": true, + "engines": { + "node": ">=6" + } + }, "node_modules/destroy": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.2.0.tgz", @@ -7533,9 +7267,9 @@ } }, "node_modules/electron-to-chromium": { - "version": "1.4.445", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.445.tgz", - "integrity": "sha512-++DB+9VK8SBJwC+X1zlMfJ1tMA3F0ipi39GdEp+x3cV2TyBihqAgad8cNMWtLDEkbH39nlDQP7PfGrDr3Dr7HA==", + "version": "1.4.484", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.484.tgz", + "integrity": "sha512-nO3ZEomTK2PO/3TUXgEx0A97xZTpKVf4p427lABHuCpT1IQ2N+njVh29DkQkCk6Q4m2wjU+faK4xAcfFndwjvw==", "dev": true }, "node_modules/emoji-regex": { @@ -7595,9 +7329,9 @@ } }, "node_modules/engine.io": { - "version": "6.5.1", - "resolved": "https://registry.npmjs.org/engine.io/-/engine.io-6.5.1.tgz", - "integrity": "sha512-mGqhI+D7YxS9KJMppR6Iuo37Ed3abhU8NdfgSvJSDUafQutrN+sPTncJYTyM9+tkhSmWodKtVYGPPHyXJEwEQA==", + "version": "6.5.2", + "resolved": "https://registry.npmjs.org/engine.io/-/engine.io-6.5.2.tgz", + "integrity": "sha512-IXsMcGpw/xRfjra46sVZVHiSWo/nJ/3g1337q9KNXtS6YRzbW5yIzTCb9DjhrBe7r3GZQR0I4+nq+4ODk5g/cA==", "dev": true, "dependencies": { "@types/cookie": "^0.4.1", @@ -7608,17 +7342,17 @@ "cookie": "~0.4.1", "cors": "~2.8.5", "debug": "~4.3.1", - "engine.io-parser": "~5.1.0", + "engine.io-parser": "~5.2.1", "ws": "~8.11.0" }, "engines": { - "node": ">=10.0.0" + "node": ">=10.2.0" } }, "node_modules/engine.io-parser": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/engine.io-parser/-/engine.io-parser-5.1.0.tgz", - "integrity": "sha512-enySgNiK5tyZFynt3z7iqBR+Bto9EVVVvDFuTT0ioHCGbzirZVGDGiQjZzEp8hWl6hd5FSVytJGuScX1C1C35w==", + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/engine.io-parser/-/engine.io-parser-5.2.1.tgz", + "integrity": "sha512-9JktcM3u18nU9N2Lz3bWeBgxVgOKpw7yhRaoxQA3FUDZzzw+9WlA6p4G4u0RixNkg14fH7EfEc/RhpurtiROTQ==", "dev": true, "engines": { "node": ">=10.0.0" @@ -7659,12 +7393,13 @@ } }, "node_modules/enquirer": { - "version": "2.3.6", - "resolved": "https://registry.npmjs.org/enquirer/-/enquirer-2.3.6.tgz", - "integrity": "sha512-yjNnPr315/FjS4zIsUxYguYUPP2e1NK4d7E7ZOLiyYCcbFBiTMyID+2wvm2w6+pZ/odMA7cRkjhsPbltwBOrLg==", + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/enquirer/-/enquirer-2.4.1.tgz", + "integrity": "sha512-rRqJg/6gd538VHvR3PSrdRBb/1Vy2YfzHqzvbhGIQpDRKIa4FgV/54b5Q1xYSxOOwKvjXweS26E0Q+nAMwp2pQ==", "dev": true, "dependencies": { - "ansi-colors": "^4.1.1" + "ansi-colors": "^4.1.1", + "strip-ansi": "^6.0.1" }, "engines": { "node": ">=8.6" @@ -7825,75 +7560,26 @@ } }, "node_modules/escodegen": { - "version": "1.14.3", - "resolved": "https://registry.npmjs.org/escodegen/-/escodegen-1.14.3.tgz", - "integrity": "sha512-qFcX0XJkdg+PB3xjZZG/wKSuT1PnQWx57+TVSjIMmILd2yC/6ByYElPwJnslDsuWuSAp4AwJGumarAAmJch5Kw==", + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/escodegen/-/escodegen-2.1.0.tgz", + "integrity": "sha512-2NlIDTwUWJN0mRPQOdtQBzbUHvdGY2P1VXSyU83Q3xKxM7WHX2Ql8dKq782Q9TgQUNOLEzEYu9bzLNj1q88I5w==", "dev": true, "dependencies": { "esprima": "^4.0.1", - "estraverse": "^4.2.0", - "esutils": "^2.0.2", - "optionator": "^0.8.1" + "estraverse": "^5.2.0", + "esutils": "^2.0.2" }, "bin": { "escodegen": "bin/escodegen.js", "esgenerate": "bin/esgenerate.js" }, "engines": { - "node": ">=4.0" + "node": ">=6.0" }, "optionalDependencies": { "source-map": "~0.6.1" } }, - "node_modules/escodegen/node_modules/estraverse": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz", - "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==", - "dev": true, - "engines": { - "node": ">=4.0" - } - }, - "node_modules/escodegen/node_modules/levn": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/levn/-/levn-0.3.0.tgz", - "integrity": "sha512-0OO4y2iOHix2W6ujICbKIaEQXvFQHue65vUG3pb5EUomzPI90z9hsA1VsO/dbIIpC53J8gxM9Q4Oho0jrCM/yA==", - "dev": true, - "dependencies": { - "prelude-ls": "~1.1.2", - "type-check": "~0.3.2" - }, - "engines": { - "node": ">= 0.8.0" - } - }, - "node_modules/escodegen/node_modules/optionator": { - "version": "0.8.3", - "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.8.3.tgz", - "integrity": "sha512-+IW9pACdk3XWmmTXG8m3upGUJst5XRGzxMRjXzAuJ1XnIFNvfhjjIuYkDvysnPQ7qzqVzLt78BCruntqRhWQbA==", - "dev": true, - "dependencies": { - "deep-is": "~0.1.3", - "fast-levenshtein": "~2.0.6", - "levn": "~0.3.0", - "prelude-ls": "~1.1.2", - "type-check": "~0.3.2", - "word-wrap": "~1.2.3" - }, - "engines": { - "node": ">= 0.8.0" - } - }, - "node_modules/escodegen/node_modules/prelude-ls": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.1.2.tgz", - "integrity": "sha512-ESF23V4SKG6lVSGZgYNpbsiaAkdab6ZgOxe52p7+Kid3W3u3bxR4Vfd/o21dmN7jSt0IwgZ4v5MUd26FEtXE9w==", - "dev": true, - "engines": { - "node": ">= 0.8.0" - } - }, "node_modules/escodegen/node_modules/source-map": { "version": "0.6.1", "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", @@ -7904,40 +7590,28 @@ "node": ">=0.10.0" } }, - "node_modules/escodegen/node_modules/type-check": { - "version": "0.3.2", - "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.3.2.tgz", - "integrity": "sha512-ZCmOJdvOWDBYJlzAoFkC+Q0+bUyEOS1ltgp1MGU03fqHG+dbi9tBFU2Rd9QKiDZFAYrhPh2JUf7rZRIuHRKtOg==", - "dev": true, - "dependencies": { - "prelude-ls": "~1.1.2" - }, - "engines": { - "node": ">= 0.8.0" - } - }, "node_modules/eslint": { - "version": "8.43.0", - "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.43.0.tgz", - "integrity": "sha512-aaCpf2JqqKesMFGgmRPessmVKjcGXqdlAYLLC3THM8t5nBRZRQ+st5WM/hoJXkdioEXLLbXgclUpM0TXo5HX5Q==", + "version": "8.46.0", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.46.0.tgz", + "integrity": "sha512-cIO74PvbW0qU8e0mIvk5IV3ToWdCq5FYG6gWPHHkx6gNdjlbAYvtfHmlCMXxjcoVaIdwy/IAt3+mDkZkfvb2Dg==", "dev": true, "dependencies": { "@eslint-community/eslint-utils": "^4.2.0", - "@eslint-community/regexpp": "^4.4.0", - "@eslint/eslintrc": "^2.0.3", - "@eslint/js": "8.43.0", + "@eslint-community/regexpp": "^4.6.1", + "@eslint/eslintrc": "^2.1.1", + "@eslint/js": "^8.46.0", "@humanwhocodes/config-array": "^0.11.10", "@humanwhocodes/module-importer": "^1.0.1", "@nodelib/fs.walk": "^1.2.8", - "ajv": "^6.10.0", + "ajv": "^6.12.4", "chalk": "^4.0.0", "cross-spawn": "^7.0.2", "debug": "^4.3.2", "doctrine": "^3.0.0", "escape-string-regexp": "^4.0.0", - "eslint-scope": "^7.2.0", - "eslint-visitor-keys": "^3.4.1", - "espree": "^9.5.2", + "eslint-scope": "^7.2.2", + "eslint-visitor-keys": "^3.4.2", + "espree": "^9.6.1", "esquery": "^1.4.2", "esutils": "^2.0.2", "fast-deep-equal": "^3.1.3", @@ -7947,7 +7621,6 @@ "globals": "^13.19.0", "graphemer": "^1.4.0", "ignore": "^5.2.0", - "import-fresh": "^3.0.0", "imurmurhash": "^0.1.4", "is-glob": "^4.0.0", "is-path-inside": "^3.0.3", @@ -7957,9 +7630,8 @@ "lodash.merge": "^4.6.2", "minimatch": "^3.1.2", "natural-compare": "^1.4.0", - "optionator": "^0.9.1", + "optionator": "^0.9.3", "strip-ansi": "^6.0.1", - "strip-json-comments": "^3.1.0", "text-table": "^0.2.0" }, "bin": { @@ -7973,9 +7645,9 @@ } }, "node_modules/eslint-scope": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-7.2.0.tgz", - "integrity": "sha512-DYj5deGlHBfMt15J7rdtyKNq/Nqlv5KfU4iodrQ019XESsRnwXH9KAE0y3cwtUHDo2ob7CypAnCqefh6vioWRw==", + "version": "7.2.2", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-7.2.2.tgz", + "integrity": "sha512-dOt21O7lTMhDM+X9mB4GX+DZrZtCUJPL/wlcTqxyrx5IvO0IYtILdtrQGQp+8n5S0gwSVmOf9NQrjMOgfQZlIg==", "dev": true, "dependencies": { "esrecurse": "^4.3.0", @@ -7989,9 +7661,9 @@ } }, "node_modules/eslint-visitor-keys": { - "version": "3.4.1", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.1.tgz", - "integrity": "sha512-pZnmmLwYzf+kWaM/Qgrvpen51upAktaaiI01nsJD/Yr3lMOdNtq0cxkrrg16w64VtisN6okbs7Q8AfGqj4c9fA==", + "version": "3.4.2", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.2.tgz", + "integrity": "sha512-8drBzUEyZ2llkpCA67iYrgEssKDUu68V8ChqqOfFupIaG/LCVPUT+CoGJpT77zJprs4T/W7p07LP7zAIMuweVw==", "dev": true, "engines": { "node": "^12.22.0 || ^14.17.0 || >=16.0.0" @@ -8223,12 +7895,12 @@ } }, "node_modules/espree": { - "version": "9.5.2", - "resolved": "https://registry.npmjs.org/espree/-/espree-9.5.2.tgz", - "integrity": "sha512-7OASN1Wma5fum5SrNhFMAMJxOUAbhyfQ8dQ//PJaJbNw0URTPWqIghHWt1MmAANKhHZIYOHruW4Kw4ruUWOdGw==", + "version": "9.6.1", + "resolved": "https://registry.npmjs.org/espree/-/espree-9.6.1.tgz", + "integrity": "sha512-oruZaFkjorTpF32kDSI5/75ViwGeZginGGy2NoOSg3Q9bnwlnmDm4HLnkl0RE3n+njDXR037aY1+x58Z/zFdwQ==", "dev": true, "dependencies": { - "acorn": "^8.8.0", + "acorn": "^8.9.0", "acorn-jsx": "^5.3.2", "eslint-visitor-keys": "^3.4.1" }, @@ -8656,8 +8328,8 @@ }, "node_modules/fecfile-validate": { "version": "0.0.1", - "resolved": "git+ssh://git@github.com/fecgov/fecfile-validate.git#d3aa0b66f11cfc8e09b6e1fb81f7678db15fd0ae", - "integrity": "sha512-USHjOYVVNSxsHzLJiftSeGfjo0JKMw/bGv8z3y+jrYoXVHKmNCBGZ/77vGhdhWkk249oY4I4qNx2JJ17c01h5A==", + "resolved": "git+ssh://git@github.com/fecgov/fecfile-validate.git#d313a8bf821a2bc0957b16a7c899544de898281e", + "integrity": "sha512-tTdvuQUVE8Df9YaCWXsSnPaD1OOaFHK41MNAmzuVNxUenTizZK5oyelL9Wi43WH04WgnRxG8h1k1ijp9uV+dsw==", "hasInstallScript": true, "license": "CC0-1.0", "dependencies": { @@ -8882,9 +8554,9 @@ } }, "node_modules/foreground-child/node_modules/signal-exit": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-4.0.2.tgz", - "integrity": "sha512-MY2/qGx4enyjprQnFaZsHib3Yadh3IXyV2C321GY0pjGfVBu4un0uDJkwgdxqO+Rdx8JMT8IfJIRwbYVz3Ob3Q==", + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-4.1.0.tgz", + "integrity": "sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==", "dev": true, "engines": { "node": ">=14" @@ -9277,12 +8949,6 @@ "integrity": "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==", "dev": true }, - "node_modules/grapheme-splitter": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/grapheme-splitter/-/grapheme-splitter-1.0.4.tgz", - "integrity": "sha512-bzh50DW9kTPM00T8y4o8vQg89Di9oLJVLW/KaOGIXJWP/iqCN6WKYkbNOF04vFLJhwcpYUh9ydh/+5vpOqV4YQ==", - "dev": true - }, "node_modules/graphemer": { "version": "1.4.0", "resolved": "https://registry.npmjs.org/graphemer/-/graphemer-1.4.0.tgz", @@ -9743,9 +9409,9 @@ } }, "node_modules/ignore-walk/node_modules/minimatch": { - "version": "9.0.2", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.2.tgz", - "integrity": "sha512-PZOT9g5v2ojiTL7r1xF6plNHLtOeTpSlDI007As2NlA2aYBMfVom17yqa6QzhmDP8QOhn7LjHTg7DFCVSSa6yg==", + "version": "9.0.3", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.3.tgz", + "integrity": "sha512-RHiac9mvaRw0x3AYRgDC1CxAP7HTcNrrECeA8YYJeWnpo+2Q5CegtZjaotWTWxDG3UeGA1coE05iH1mPjT/2mg==", "dev": true, "dependencies": { "brace-expansion": "^2.0.1" @@ -9777,9 +9443,9 @@ "dev": true }, "node_modules/immutable": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/immutable/-/immutable-4.3.0.tgz", - "integrity": "sha512-0AOCmOip+xgJwEVTQj1EfiDDOkPmuyllDuTuEX+DDXUgapLAsBIfkg3sxCYyCEA8mQqZrrxPUGjcOQ2JS3WLkg==", + "version": "4.3.2", + "resolved": "https://registry.npmjs.org/immutable/-/immutable-4.3.2.tgz", + "integrity": "sha512-oGXzbEDem9OOpDWZu88jGiYCvIsLHMvGw+8OXlpsvTFvIQplQbjg1B1cvKg8f7Hoch6+NGjpPsH1Fr+Mc2D1aA==", "dev": true }, "node_modules/import-fresh": { @@ -10354,16 +10020,12 @@ } }, "node_modules/is-typed-array": { - "version": "1.1.10", - "resolved": "https://registry.npmjs.org/is-typed-array/-/is-typed-array-1.1.10.tgz", - "integrity": "sha512-PJqgEHiWZvMpaFZ3uTc8kHPM4+4ADTlDniuQL7cU/UDA0Ql7F70yGfHph3cLNe+c9toaigv+DFzTJKhc2CtO6A==", + "version": "1.1.12", + "resolved": "https://registry.npmjs.org/is-typed-array/-/is-typed-array-1.1.12.tgz", + "integrity": "sha512-Z14TF2JNG8Lss5/HMqt0//T9JeHXttXy5pH/DBU4vi98ozO2btxzq9MwYDZYnKwU8nRsz/+GVFVRDq3DkVuSPg==", "dev": true, "dependencies": { - "available-typed-arrays": "^1.0.5", - "call-bind": "^1.0.2", - "for-each": "^0.3.3", - "gopd": "^1.0.1", - "has-tostringtag": "^1.0.0" + "which-typed-array": "^1.1.11" }, "engines": { "node": ">= 0.4" @@ -10495,26 +10157,26 @@ } }, "node_modules/istanbul-lib-instrument/node_modules/semver": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", - "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", "dev": true, "bin": { "semver": "bin/semver.js" } }, "node_modules/istanbul-lib-report": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/istanbul-lib-report/-/istanbul-lib-report-3.0.0.tgz", - "integrity": "sha512-wcdi+uAKzfiGT2abPpKZ0hSU1rGQjUQnLvtY5MpQ7QCTahD3VODhcu4wcfY1YtkGaDD5yuydOLINXsfbus9ROw==", + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/istanbul-lib-report/-/istanbul-lib-report-3.0.1.tgz", + "integrity": "sha512-GCfE1mtsHGOELCU8e/Z7YWzpmybrx/+dSTfLrvY8qRmaY6zXTKWn6WQIjaAFw069icm6GVMNkgu0NzI4iPZUNw==", "dev": true, "dependencies": { "istanbul-lib-coverage": "^3.0.0", - "make-dir": "^3.0.0", + "make-dir": "^4.0.0", "supports-color": "^7.1.0" }, "engines": { - "node": ">=8" + "node": ">=10" } }, "node_modules/istanbul-lib-report/node_modules/has-flag": { @@ -10526,6 +10188,21 @@ "node": ">=8" } }, + "node_modules/istanbul-lib-report/node_modules/make-dir": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-4.0.0.tgz", + "integrity": "sha512-hXdUTZYIVOt1Ex//jAQi+wTZZpUpwBj/0QsOzqegb3rGMMeJiSEu5xLHnYfBrRV4RH2+OCSOO95Is/7x1WJ4bw==", + "dev": true, + "dependencies": { + "semver": "^7.5.3" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/istanbul-lib-report/node_modules/supports-color": { "version": "7.2.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", @@ -10562,9 +10239,9 @@ } }, "node_modules/istanbul-reports": { - "version": "3.1.5", - "resolved": "https://registry.npmjs.org/istanbul-reports/-/istanbul-reports-3.1.5.tgz", - "integrity": "sha512-nUsEMa9pBt/NOHqbcbeJEgqIlY/K7rVWUX6Lql2orY5e9roQOthbR3vtY4zzf2orPELg80fnxxk9zUyPlgwD1w==", + "version": "3.1.6", + "resolved": "https://registry.npmjs.org/istanbul-reports/-/istanbul-reports-3.1.6.tgz", + "integrity": "sha512-TLgnMkKg3iTDsQ9PbPTdpfAK2DzjF9mqUG7RMgcQl8oFjad8ob4laGxv5XV5U9MAfx8D6tSJiUyuAwzLicaxlg==", "dev": true, "dependencies": { "html-escaper": "^2.0.0", @@ -10575,9 +10252,9 @@ } }, "node_modules/jackspeak": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/jackspeak/-/jackspeak-2.2.1.tgz", - "integrity": "sha512-MXbxovZ/Pm42f6cDIDkl3xpwv1AGwObKwfmjs2nQePiy85tP3fatofl3FC1aBsOtP/6fq5SbtgHwWcMsLP+bDw==", + "version": "2.2.2", + "resolved": "https://registry.npmjs.org/jackspeak/-/jackspeak-2.2.2.tgz", + "integrity": "sha512-mgNtVv4vUuaKA97yxUHoA3+FkuhtxkjdXEWOyB/N76fjy0FjezEt34oy3epBtvCvS+7DyKwqCFWx/oJLV5+kCg==", "dev": true, "dependencies": { "@isaacs/cliui": "^8.0.2" @@ -10725,9 +10402,9 @@ } }, "node_modules/jiti": { - "version": "1.18.2", - "resolved": "https://registry.npmjs.org/jiti/-/jiti-1.18.2.tgz", - "integrity": "sha512-QAdOptna2NYiSSpv0O/BwoHBSmz4YhpzJHyi+fnMRTXFjp7B8i/YG5Z8IfusxB1ufjcD2Sre1F3R+nX3fvy7gg==", + "version": "1.19.1", + "resolved": "https://registry.npmjs.org/jiti/-/jiti-1.19.1.tgz", + "integrity": "sha512-oVhqoRDaBXf7sjkll95LHVS6Myyyb1zaunVwk4Z0+WPSW4gjS0pl01zYKHScTuyEhQsFxV5L4DR5r+YqSyqyyg==", "dev": true, "bin": { "jiti": "bin/jiti.js" @@ -10740,9 +10417,9 @@ "dev": true }, "node_modules/js-library-detector": { - "version": "6.6.0", - "resolved": "https://registry.npmjs.org/js-library-detector/-/js-library-detector-6.6.0.tgz", - "integrity": "sha512-z8OkDmXALZ22bIzBtIW8cpJ39MV93/Zu1rWrFdhsNw+sity2rOLaGT2kfWWQ6mnRTWs4ddONY5kiroA8e98Gvg==", + "version": "6.7.0", + "resolved": "https://registry.npmjs.org/js-library-detector/-/js-library-detector-6.7.0.tgz", + "integrity": "sha512-c80Qupofp43y4cJ7+8TTDN/AsDwLi5oOm/plBrWI+iQt485vKXCco+yVmOwEgdo9VOdsYTuV0UlTeetVPTriXA==", "dev": true, "engines": { "node": ">=12" @@ -10965,9 +10642,9 @@ } }, "node_modules/karma-coverage/node_modules/semver": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", - "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", "dev": true, "bin": { "semver": "bin/semver.js" @@ -11183,9 +10860,9 @@ } }, "node_modules/less/node_modules/semver": { - "version": "5.7.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", - "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", + "version": "5.7.2", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.2.tgz", + "integrity": "sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==", "dev": true, "optional": true, "bin": { @@ -11246,9 +10923,9 @@ } }, "node_modules/license-checker/node_modules/semver": { - "version": "5.7.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", - "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", + "version": "5.7.2", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.2.tgz", + "integrity": "sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==", "dev": true, "bin": { "semver": "bin/semver" @@ -11272,9 +10949,9 @@ } }, "node_modules/lighthouse": { - "version": "10.3.0", - "resolved": "https://registry.npmjs.org/lighthouse/-/lighthouse-10.3.0.tgz", - "integrity": "sha512-YdTZJPjpiBNl9sPXxauA/jZqKEi6fjD0U11rm+2IBEtBYwovE/ULXiYK0N6q/KrNOIiTA4KQ1ssyCO8pZFFQ2A==", + "version": "10.4.0", + "resolved": "https://registry.npmjs.org/lighthouse/-/lighthouse-10.4.0.tgz", + "integrity": "sha512-XQWHEWkJ8YxSPsxttBJORy5+hQrzbvGkYfeP3fJjyYKioWkF2MXfFqNK4ZuV4jL8pBu7Z91qnQP6In0bq1yXww==", "dev": true, "dependencies": { "@sentry/node": "^6.17.4", @@ -11289,18 +10966,18 @@ "jpeg-js": "^0.4.4", "js-library-detector": "^6.6.0", "lighthouse-logger": "^1.4.1", - "lighthouse-stack-packs": "1.10.0", + "lighthouse-stack-packs": "1.11.0", "lodash": "^4.17.21", "lookup-closest-locale": "6.2.0", "metaviewport-parser": "0.3.0", "open": "^8.4.0", "parse-cache-control": "1.0.1", "ps-list": "^8.0.0", - "puppeteer-core": "^20.7.1", + "puppeteer-core": "^20.8.0", "robots-parser": "^3.0.0", "semver": "^5.3.0", "speedline-core": "^1.4.3", - "third-party-web": "^0.23.0", + "third-party-web": "^0.23.3", "ws": "^7.0.0", "yargs": "^17.3.1", "yargs-parser": "^21.0.0" @@ -11340,15 +11017,15 @@ "dev": true }, "node_modules/lighthouse-stack-packs": { - "version": "1.10.0", - "resolved": "https://registry.npmjs.org/lighthouse-stack-packs/-/lighthouse-stack-packs-1.10.0.tgz", - "integrity": "sha512-5nvJS+IkZUbnDpIeJLi1xdnCfftBFMkxXfA5HHlEC1EQFQ2a8YPos6vl11oERHuIlDFEnVkaOeNaSIrL2K/9Gg==", + "version": "1.11.0", + "resolved": "https://registry.npmjs.org/lighthouse-stack-packs/-/lighthouse-stack-packs-1.11.0.tgz", + "integrity": "sha512-sRr0z1S/I26VffRLq9KJsKtLk856YrJlNGmcJmbLX8dFn3MuzVPUbstuChEhqnSxZb8TZmVfthuXuwhG9vRoSw==", "dev": true }, "node_modules/lighthouse/node_modules/semver": { - "version": "5.7.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", - "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", + "version": "5.7.2", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.2.tgz", + "integrity": "sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==", "dev": true, "bin": { "semver": "bin/semver" @@ -11720,9 +11397,9 @@ } }, "node_modules/make-dir/node_modules/semver": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", - "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", "dev": true, "bin": { "semver": "bin/semver.js" @@ -12973,9 +12650,9 @@ "dev": true }, "node_modules/node-fetch": { - "version": "2.6.11", - "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.11.tgz", - "integrity": "sha512-4I6pdBY1EthSqDmJkiNk3JIT8cswwR9nfeW/cPdUagJYEQG7R95WRH74wpz7ma8Gh/9dI9FP+OU+0E4FvtA55w==", + "version": "2.6.12", + "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.12.tgz", + "integrity": "sha512-C/fGU2E8ToujUivIO0H+tpQ6HWo4eEmchoPIoXtxCrVghxdKq+QOHqEZW7tuP3KlV3bC8FRMO5nMCC7Zm1VP6g==", "dev": true, "dependencies": { "whatwg-url": "^5.0.0" @@ -13053,9 +12730,9 @@ } }, "node_modules/node-releases": { - "version": "2.0.12", - "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.12.tgz", - "integrity": "sha512-QzsYKWhXTWx8h1kIvqfnC++o0pEmpRQA/aenALsL2F4pqNVr7YzcdMlDij5WBnwftRbJCNJL/O7zdKaxKPHqgQ==", + "version": "2.0.13", + "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.13.tgz", + "integrity": "sha512-uYr7J37ae/ORWdZeQ1xxMJe3NtdmqMC/JZK+geofDrkLUApKRHPd18/TxtBOJ4A0/+uUIliorNrfYV6s1b02eQ==", "dev": true }, "node_modules/nopt": { @@ -13237,16 +12914,16 @@ } }, "node_modules/nx": { - "version": "16.2.2", - "resolved": "https://registry.npmjs.org/nx/-/nx-16.2.2.tgz", - "integrity": "sha512-gOcpqs6wf8YdFIq6P0IlMxBGr2c27pM55zpqO7epSlN6NqW6SOFKnZa+6z4NV9qmifMqzWPx2VF0BY54ARuqYg==", + "version": "16.5.1", + "resolved": "https://registry.npmjs.org/nx/-/nx-16.5.1.tgz", + "integrity": "sha512-I3hJRE4hG7JWAtncWwDEO3GVeGPpN0TtM8xH5ArZXyDuVeTth/i3TtJzdDzqXO1HHtIoAQN0xeq4n9cLuMil5g==", "dev": true, "hasInstallScript": true, "dependencies": { - "@nrwl/tao": "16.2.2", + "@nrwl/tao": "16.5.1", "@parcel/watcher": "2.0.4", "@yarnpkg/lockfile": "^1.1.0", - "@yarnpkg/parsers": "^3.0.0-rc.18", + "@yarnpkg/parsers": "3.0.0-rc.46", "@zkochan/js-yaml": "0.0.6", "axios": "^1.0.0", "chalk": "^4.1.0", @@ -13267,7 +12944,7 @@ "minimatch": "3.0.5", "npm-run-path": "^4.0.1", "open": "^8.4.0", - "semver": "7.3.4", + "semver": "7.5.3", "string-width": "^4.2.3", "strong-log-transformer": "^2.1.0", "tar-stream": "~2.2.0", @@ -13282,15 +12959,16 @@ "nx": "bin/nx.js" }, "optionalDependencies": { - "@nx/nx-darwin-arm64": "16.2.2", - "@nx/nx-darwin-x64": "16.2.2", - "@nx/nx-linux-arm-gnueabihf": "16.2.2", - "@nx/nx-linux-arm64-gnu": "16.2.2", - "@nx/nx-linux-arm64-musl": "16.2.2", - "@nx/nx-linux-x64-gnu": "16.2.2", - "@nx/nx-linux-x64-musl": "16.2.2", - "@nx/nx-win32-arm64-msvc": "16.2.2", - "@nx/nx-win32-x64-msvc": "16.2.2" + "@nx/nx-darwin-arm64": "16.5.1", + "@nx/nx-darwin-x64": "16.5.1", + "@nx/nx-freebsd-x64": "16.5.1", + "@nx/nx-linux-arm-gnueabihf": "16.5.1", + "@nx/nx-linux-arm64-gnu": "16.5.1", + "@nx/nx-linux-arm64-musl": "16.5.1", + "@nx/nx-linux-x64-gnu": "16.5.1", + "@nx/nx-linux-x64-musl": "16.5.1", + "@nx/nx-win32-arm64-msvc": "16.5.1", + "@nx/nx-win32-x64-msvc": "16.5.1" }, "peerDependencies": { "@swc-node/register": "^1.4.2", @@ -13360,6 +13038,18 @@ "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", "dev": true }, + "node_modules/nx/node_modules/enquirer": { + "version": "2.3.6", + "resolved": "https://registry.npmjs.org/enquirer/-/enquirer-2.3.6.tgz", + "integrity": "sha512-yjNnPr315/FjS4zIsUxYguYUPP2e1NK4d7E7ZOLiyYCcbFBiTMyID+2wvm2w6+pZ/odMA7cRkjhsPbltwBOrLg==", + "dev": true, + "dependencies": { + "ansi-colors": "^4.1.1" + }, + "engines": { + "node": ">=8.6" + } + }, "node_modules/nx/node_modules/fast-glob": { "version": "3.2.7", "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.2.7.tgz", @@ -13428,18 +13118,6 @@ "js-yaml": "bin/js-yaml.js" } }, - "node_modules/nx/node_modules/lru-cache": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", - "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", - "dev": true, - "dependencies": { - "yallist": "^4.0.0" - }, - "engines": { - "node": ">=10" - } - }, "node_modules/nx/node_modules/minimatch": { "version": "3.0.5", "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.5.tgz", @@ -13452,21 +13130,6 @@ "node": "*" } }, - "node_modules/nx/node_modules/semver": { - "version": "7.3.4", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.4.tgz", - "integrity": "sha512-tCfb2WLjqFAtXn4KEdxIhalnRtoKFN7nAwj0B3ZXCbQloV2tq5eDbcTmT68JJD3nRJq24/XgxtQKFIpQdtvmVw==", - "dev": true, - "dependencies": { - "lru-cache": "^6.0.0" - }, - "bin": { - "semver": "bin/semver.js" - }, - "engines": { - "node": ">=10" - } - }, "node_modules/nx/node_modules/supports-color": { "version": "7.2.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", @@ -13479,12 +13142,6 @@ "node": ">=8" } }, - "node_modules/nx/node_modules/yallist": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", - "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", - "dev": true - }, "node_modules/object-assign": { "version": "4.1.1", "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", @@ -13841,17 +13498,18 @@ } }, "node_modules/pac-proxy-agent": { - "version": "6.0.3", - "resolved": "https://registry.npmjs.org/pac-proxy-agent/-/pac-proxy-agent-6.0.3.tgz", - "integrity": "sha512-5Hr1KgPDoc21Vn3rsXBirwwDnF/iac1jN/zkpsOYruyT+ZgsUhUOgVwq3v9+ukjZd/yGm/0nzO1fDfl7rkGoHQ==", + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/pac-proxy-agent/-/pac-proxy-agent-7.0.0.tgz", + "integrity": "sha512-t4tRAMx0uphnZrio0S0Jw9zg3oDbz1zVhQ/Vy18FjLfP1XOLNUEjaVxYCYRI6NS+BsMBXKIzV6cTLOkO9AtywA==", "dev": true, "dependencies": { + "@tootallnate/quickjs-emscripten": "^0.23.0", "agent-base": "^7.0.2", "debug": "^4.3.4", "get-uri": "^6.0.1", "http-proxy-agent": "^7.0.0", "https-proxy-agent": "^7.0.0", - "pac-resolver": "^6.0.1", + "pac-resolver": "^7.0.0", "socks-proxy-agent": "^8.0.1" }, "engines": { @@ -13884,9 +13542,9 @@ } }, "node_modules/pac-proxy-agent/node_modules/https-proxy-agent": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-7.0.0.tgz", - "integrity": "sha512-0euwPCRyAPSgGdzD1IVN9nJYHtBhJwb6XPfbpQcYbPCwrBidX6GzxmchnaF4sfF/jPb74Ojx5g4yTg3sixlyPw==", + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-7.0.1.tgz", + "integrity": "sha512-Eun8zV0kcYS1g19r78osiQLEFIRspRUDd9tIfBCTBPBeMieF/EsJNL8VI3xOIdYRDEkjQnqOYPsZ2DsWsVsFwQ==", "dev": true, "dependencies": { "agent-base": "^7.0.2", @@ -13911,13 +13569,13 @@ } }, "node_modules/pac-resolver": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/pac-resolver/-/pac-resolver-6.0.1.tgz", - "integrity": "sha512-dg497MhVT7jZegPRuOScQ/z0aV/5WR0gTdRu1md+Irs9J9o+ls5jIuxjo1WfaTG+eQQkxyn5HMGvWK+w7EIBkQ==", + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/pac-resolver/-/pac-resolver-7.0.0.tgz", + "integrity": "sha512-Fd9lT9vJbHYRACT8OhCbZBbxr6KRSawSovFpy8nDGshaK99S/EBhVIHp9+crhxrsZOuvLpgL1n23iyPg6Rl2hg==", "dev": true, "dependencies": { - "degenerator": "^4.0.1", - "ip": "^1.1.5", + "degenerator": "^5.0.0", + "ip": "^1.1.8", "netmask": "^2.0.2" }, "engines": { @@ -14094,13 +13752,13 @@ "dev": true }, "node_modules/path-scurry": { - "version": "1.10.0", - "resolved": "https://registry.npmjs.org/path-scurry/-/path-scurry-1.10.0.tgz", - "integrity": "sha512-tZFEaRQbMLjwrsmidsGJ6wDMv0iazJWk6SfIKnY4Xru8auXgmJkOBa5DUbYFcFD2Rzk2+KDlIiF0GVXNCbgC7g==", + "version": "1.10.1", + "resolved": "https://registry.npmjs.org/path-scurry/-/path-scurry-1.10.1.tgz", + "integrity": "sha512-MkhCqzzBEpPvxxQ71Md0b1Kk51W01lrYvlMzSUaIzNsODdd7mqhiimSZlr+VegAz5Z6Vzt9Xg2ttE//XBhH3EQ==", "dev": true, "dependencies": { "lru-cache": "^9.1.1 || ^10.0.0", - "minipass": "^5.0.0 || ^6.0.2" + "minipass": "^5.0.0 || ^6.0.2 || ^7.0.0" }, "engines": { "node": ">=16 || 14 >=14.17" @@ -14377,9 +14035,9 @@ "integrity": "sha512-KDeO94CbWI4pKsPnYpA1FPjo79EsY9I+M8ywoPBSf9XMXoe/0crjbUK7jcQEDHuc0ZMRIZsxH3TYLv4TUtHmAA==" }, "node_modules/primeng": { - "version": "16.0.2", - "resolved": "https://registry.npmjs.org/primeng/-/primeng-16.0.2.tgz", - "integrity": "sha512-gLFUSQ0fV5948yM1fMCv9oGaJ54AS8+HHSMOeR2lHWFiZzomxjXR0MST9yyAQ0NjrOlhke3BBpl+zYjISBeEJg==", + "version": "16.1.0", + "resolved": "https://registry.npmjs.org/primeng/-/primeng-16.1.0.tgz", + "integrity": "sha512-qqYQ2xO6EmiBEqvlKHIWJPrC90HVVQGitnrGurpdT9f8/Mkz0YCCo4GwLElKyHZ52STd+cw2MtoXa1sJRVR30g==", "dependencies": { "tslib": "^2.3.0" }, @@ -14468,9 +14126,9 @@ } }, "node_modules/proxy-agent": { - "version": "6.2.1", - "resolved": "https://registry.npmjs.org/proxy-agent/-/proxy-agent-6.2.1.tgz", - "integrity": "sha512-OIbBKlRAT+ycCm6wAYIzMwPejzRtjy8F3QiDX0eKOA3e4pe3U9F/IvzcHP42bmgQxVv97juG+J8/gx+JIeCX/Q==", + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/proxy-agent/-/proxy-agent-6.3.0.tgz", + "integrity": "sha512-0LdR757eTj/JfuU7TL2YCuAZnxWXu3tkJbg4Oq3geW/qFNT/32T0sp2HnZ9O0lMR4q3vwAt0+xCA8SR0WAD0og==", "dev": true, "dependencies": { "agent-base": "^7.0.2", @@ -14478,7 +14136,7 @@ "http-proxy-agent": "^7.0.0", "https-proxy-agent": "^7.0.0", "lru-cache": "^7.14.1", - "pac-proxy-agent": "^6.0.3", + "pac-proxy-agent": "^7.0.0", "proxy-from-env": "^1.1.0", "socks-proxy-agent": "^8.0.1" }, @@ -14512,9 +14170,9 @@ } }, "node_modules/proxy-agent/node_modules/https-proxy-agent": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-7.0.0.tgz", - "integrity": "sha512-0euwPCRyAPSgGdzD1IVN9nJYHtBhJwb6XPfbpQcYbPCwrBidX6GzxmchnaF4sfF/jPb74Ojx5g4yTg3sixlyPw==", + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-7.0.1.tgz", + "integrity": "sha512-Eun8zV0kcYS1g19r78osiQLEFIRspRUDd9tIfBCTBPBeMieF/EsJNL8VI3xOIdYRDEkjQnqOYPsZ2DsWsVsFwQ==", "dev": true, "dependencies": { "agent-base": "^7.0.2", @@ -14603,16 +14261,16 @@ } }, "node_modules/puppeteer-core": { - "version": "20.7.4", - "resolved": "https://registry.npmjs.org/puppeteer-core/-/puppeteer-core-20.7.4.tgz", - "integrity": "sha512-7YZ1LmTo+5yM9uBNFTMJpE+lJjcIoNjKVarsYIk7o5WhgQNI9o5XgiQK5f71y1vWwr7sT/eGG75HXAehjnTBTg==", + "version": "20.9.0", + "resolved": "https://registry.npmjs.org/puppeteer-core/-/puppeteer-core-20.9.0.tgz", + "integrity": "sha512-H9fYZQzMTRrkboEfPmf7m3CLDN6JvbxXA3qTtS+dFt27tR+CsFHzPsT6pzp6lYL6bJbAPaR0HaPO6uSi+F94Pg==", "dev": true, "dependencies": { - "@puppeteer/browsers": "1.4.3", + "@puppeteer/browsers": "1.4.6", "chromium-bidi": "0.4.16", - "cross-fetch": "3.1.6", + "cross-fetch": "4.0.0", "debug": "4.3.4", - "devtools-protocol": "0.0.1135028", + "devtools-protocol": "0.0.1147663", "ws": "8.13.0" }, "engines": { @@ -14628,9 +14286,9 @@ } }, "node_modules/puppeteer-core/node_modules/devtools-protocol": { - "version": "0.0.1135028", - "resolved": "https://registry.npmjs.org/devtools-protocol/-/devtools-protocol-0.0.1135028.tgz", - "integrity": "sha512-jEcNGrh6lOXNRJvZb9RjeevtZGrgugPKSMJZxfyxWQnhlKawMPhMtk/dfC+Z/6xNXExlzTKlY5LzIAK/fRpQIw==", + "version": "0.0.1147663", + "resolved": "https://registry.npmjs.org/devtools-protocol/-/devtools-protocol-0.0.1147663.tgz", + "integrity": "sha512-hyWmRrexdhbZ1tcJUGpO95ivbRhWXz++F4Ko+n21AY5PNln2ovoJw+8ZMNDTtip+CNFQfrtLVh/w4009dXO/eQ==", "dev": true }, "node_modules/puppeteer-core/node_modules/ws": { @@ -14678,6 +14336,12 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/querystringify": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/querystringify/-/querystringify-2.2.0.tgz", + "integrity": "sha512-FIqgj2EUvTa7R50u0rGsyTftzjYmv/a3hO345bZNrqabNqjtgiDMgmo4mkUjd+nzU5oF3dClKqFIPUKybUyqoQ==", + "dev": true + }, "node_modules/queue-microtask": { "version": "1.2.3", "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz", @@ -14797,9 +14461,9 @@ } }, "node_modules/read-installed/node_modules/semver": { - "version": "5.7.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", - "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", + "version": "5.7.2", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.2.tgz", + "integrity": "sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==", "dev": true, "bin": { "semver": "bin/semver" @@ -14852,16 +14516,16 @@ } }, "node_modules/read-package-json/node_modules/glob": { - "version": "10.3.1", - "resolved": "https://registry.npmjs.org/glob/-/glob-10.3.1.tgz", - "integrity": "sha512-9BKYcEeIs7QwlCYs+Y3GBvqAMISufUS0i2ELd11zpZjxI5V9iyRj0HgzB5/cLf2NY4vcYBTYzJ7GIui7j/4DOw==", + "version": "10.3.3", + "resolved": "https://registry.npmjs.org/glob/-/glob-10.3.3.tgz", + "integrity": "sha512-92vPiMb/iqpmEgsOoIDvTjc50wf9CCCvMzsi6W0JLPeUKE8TWP1a73PgqSrqy7iAZxaSD1YdzU7QZR5LF51MJw==", "dev": true, "dependencies": { "foreground-child": "^3.1.0", "jackspeak": "^2.0.3", "minimatch": "^9.0.1", - "minipass": "^5.0.0 || ^6.0.2", - "path-scurry": "^1.10.0" + "minipass": "^5.0.0 || ^6.0.2 || ^7.0.0", + "path-scurry": "^1.10.1" }, "bin": { "glob": "dist/cjs/src/bin.js" @@ -14883,9 +14547,9 @@ } }, "node_modules/read-package-json/node_modules/minimatch": { - "version": "9.0.2", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.2.tgz", - "integrity": "sha512-PZOT9g5v2ojiTL7r1xF6plNHLtOeTpSlDI007As2NlA2aYBMfVom17yqa6QzhmDP8QOhn7LjHTg7DFCVSSa6yg==", + "version": "9.0.3", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.3.tgz", + "integrity": "sha512-RHiac9mvaRw0x3AYRgDC1CxAP7HTcNrrECeA8YYJeWnpo+2Q5CegtZjaotWTWxDG3UeGA1coE05iH1mPjT/2mg==", "dev": true, "dependencies": { "brace-expansion": "^2.0.1" @@ -15201,9 +14865,9 @@ } }, "node_modules/rollup": { - "version": "3.25.3", - "resolved": "https://registry.npmjs.org/rollup/-/rollup-3.25.3.tgz", - "integrity": "sha512-ZT279hx8gszBj9uy5FfhoG4bZx8c+0A1sbqtr7Q3KNWIizpTdDEPZbV2xcbvHsnFp4MavCQYZyzApJ+virB8Yw==", + "version": "3.27.2", + "resolved": "https://registry.npmjs.org/rollup/-/rollup-3.27.2.tgz", + "integrity": "sha512-YGwmHf7h2oUHkVBT248x0yt6vZkYQ3/rvE5iQuVBh3WO8GcJ6BNeOkpoX1yMHIiBm18EMLjBPIoUDkhgnyxGOQ==", "dev": true, "bin": { "rollup": "dist/bin/rollup" @@ -15648,15 +15312,15 @@ "dev": true }, "node_modules/sigstore": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/sigstore/-/sigstore-1.6.0.tgz", - "integrity": "sha512-QODKff/qW/TXOZI6V/Clqu74xnInAS6it05mufj4/fSewexLtfEntgLZZcBtUK44CDQyUE5TUXYy1ARYzlfG9g==", + "version": "1.8.0", + "resolved": "https://registry.npmjs.org/sigstore/-/sigstore-1.8.0.tgz", + "integrity": "sha512-ogU8qtQ3VFBawRJ8wjsBEX/vIFeHuGs1fm4jZtjWQwjo8pfAt7T/rh+udlAN4+QUe0IzA8qRSc/YZ7dHP6kh+w==", "dev": true, "dependencies": { - "@sigstore/protobuf-specs": "^0.1.0", - "@sigstore/tuf": "^1.0.0", - "make-fetch-happen": "^11.0.1", - "tuf-js": "^1.1.3" + "@sigstore/bundle": "^1.0.0", + "@sigstore/protobuf-specs": "^0.2.0", + "@sigstore/tuf": "^1.0.3", + "make-fetch-happen": "^11.0.1" }, "bin": { "sigstore": "bin/sigstore.js" @@ -15741,21 +15405,21 @@ } }, "node_modules/socket.io": { - "version": "4.7.1", - "resolved": "https://registry.npmjs.org/socket.io/-/socket.io-4.7.1.tgz", - "integrity": "sha512-W+utHys2w//dhFjy7iQQu9sGd3eokCjGbl2r59tyLqNiJJBdIebn3GAKEXBr3osqHTObJi2die/25bCx2zsaaw==", + "version": "4.7.2", + "resolved": "https://registry.npmjs.org/socket.io/-/socket.io-4.7.2.tgz", + "integrity": "sha512-bvKVS29/I5fl2FGLNHuXlQaUH/BlzX1IN6S+NKLNZpBsPZIDH+90eQmCs2Railn4YUiww4SzUedJ6+uzwFnKLw==", "dev": true, "dependencies": { "accepts": "~1.3.4", "base64id": "~2.0.0", "cors": "~2.8.5", "debug": "~4.3.2", - "engine.io": "~6.5.0", + "engine.io": "~6.5.2", "socket.io-adapter": "~2.5.2", "socket.io-parser": "~4.2.4" }, "engines": { - "node": ">=10.0.0" + "node": ">=10.2.0" } }, "node_modules/socket.io-adapter": { @@ -15916,13 +15580,6 @@ "node": ">=0.10.0" } }, - "node_modules/sourcemap-codec": { - "version": "1.4.8", - "resolved": "https://registry.npmjs.org/sourcemap-codec/-/sourcemap-codec-1.4.8.tgz", - "integrity": "sha512-9NykojV5Uih4lgo5So5dtw+f0JgJX30KCNI8gwhz2J9A15wD0Ml6tjHKwf6fTSa6fAdVBdZeNOs9eJ71qCk8vA==", - "deprecated": "Please use @jridgewell/sourcemap-codec instead", - "dev": true - }, "node_modules/spdx-compare": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/spdx-compare/-/spdx-compare-1.0.0.tgz", @@ -16317,20 +15974,20 @@ } }, "node_modules/tar-fs": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/tar-fs/-/tar-fs-3.0.3.tgz", - "integrity": "sha512-ZK36riGYnFI6LujIBfBRoDfeaaWUkStIFKwtPjnDWCKnsDE9kuQthG09aQjLjpzoRtVElEMZ/AIAURNb7N9mkA==", + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/tar-fs/-/tar-fs-3.0.4.tgz", + "integrity": "sha512-5AFQU8b9qLfZCX9zp2duONhPmZv0hGYiBPJsyUdqMjzq/mqVpy/rEUSeHk1+YitmxugaptgBh5oDGU3VsAJq4w==", "dev": true, "dependencies": { "mkdirp-classic": "^0.5.2", "pump": "^3.0.0", - "tar-stream": "^3.1.0" + "tar-stream": "^3.1.5" } }, "node_modules/tar-fs/node_modules/tar-stream": { - "version": "3.1.4", - "resolved": "https://registry.npmjs.org/tar-stream/-/tar-stream-3.1.4.tgz", - "integrity": "sha512-IlHr7ZOW6XaVBCrSCokUJG4IqUuRcWW76B8XbrtCotbaDh6zVGE7WPCzaSz1CN+acFmWiwoa+cE4RZsom0RzXg==", + "version": "3.1.6", + "resolved": "https://registry.npmjs.org/tar-stream/-/tar-stream-3.1.6.tgz", + "integrity": "sha512-B/UyjYwPpMBv+PaFSWAmtYjwdrlEaZQEhMIBFNC5oEG8lpiW8XjcSdmEaClj28ArfKScKHs2nshz3k2le6crsg==", "dev": true, "dependencies": { "b4a": "^1.6.4", @@ -16605,16 +16262,27 @@ } }, "node_modules/tough-cookie": { - "version": "2.5.0", - "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.5.0.tgz", - "integrity": "sha512-nlLsUzgm1kfLXSXfRZMc1KLAugd4hqJHDTvc2hDIwS3mZAfMEuMbc03SujMF+GEcpaX/qboeycw6iO8JwVv2+g==", + "version": "4.1.3", + "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-4.1.3.tgz", + "integrity": "sha512-aX/y5pVRkfRnfmuX+OdbSdXvPe6ieKX/G2s7e98f4poJHnqH3281gDPm/metm6E/WRamfx7WC4HUqkWHfQHprw==", "dev": true, "dependencies": { - "psl": "^1.1.28", - "punycode": "^2.1.1" + "psl": "^1.1.33", + "punycode": "^2.1.1", + "universalify": "^0.2.0", + "url-parse": "^1.5.3" }, "engines": { - "node": ">=0.8" + "node": ">=6" + } + }, + "node_modules/tough-cookie/node_modules/universalify": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.2.0.tgz", + "integrity": "sha512-CJ1QgKmNg3CwvAv/kOFmtnEN05f0D/cn9QntgNOQlQF9dgvVTHj3t+8JPdjqawCHk7V/KA+fbUqzZ9XWhcqPUg==", + "dev": true, + "engines": { + "node": ">= 4.0.0" } }, "node_modules/tr46": { @@ -16656,9 +16324,9 @@ } }, "node_modules/tslib": { - "version": "2.6.0", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.0.tgz", - "integrity": "sha512-7At1WUettjcSRHXCyYtTselblcHl9PJFFVKiCAy/bY97+BPZXSQ2wbq0P9s8tK2G7dFQfNnlJnPAiArVBVBsfA==" + "version": "2.6.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.1.tgz", + "integrity": "sha512-t0hLfiEKfMUoqhG+U1oid7Pva4bbDPHYfJNiB7BiIjRkj1pyC++4N3huJfqY6aRH6VTB0rvtzQwjM4K6qpfOig==" }, "node_modules/tsutils": { "version": "3.21.0", @@ -16948,6 +16616,16 @@ "punycode": "^2.1.0" } }, + "node_modules/url-parse": { + "version": "1.5.10", + "resolved": "https://registry.npmjs.org/url-parse/-/url-parse-1.5.10.tgz", + "integrity": "sha512-WypcfiRhfeUP9vvF0j6rw0J3hrWrw6iZv3+22h6iRMJ/8z1Tj6XfLP4DsUix5MhMPnXpiHDoKyoZ/bdCkwBCiQ==", + "dev": true, + "dependencies": { + "querystringify": "^2.1.1", + "requires-port": "^1.0.0" + } + }, "node_modules/util-deprecate": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", @@ -17007,9 +16685,9 @@ } }, "node_modules/validator": { - "version": "13.9.0", - "resolved": "https://registry.npmjs.org/validator/-/validator-13.9.0.tgz", - "integrity": "sha512-B+dGG8U3fdtM0/aNK4/X8CXq/EcxU2WPrPEkJGslb47qyHsxmbggTWK0yEA4qnYVNF+nxNlN88o14hIcPmSIEA==", + "version": "13.11.0", + "resolved": "https://registry.npmjs.org/validator/-/validator-13.11.0.tgz", + "integrity": "sha512-Ii+sehpSfZy+At5nPdnyMhx78fEoPDkR2XW/zimHEL3MyGJQOCQ7WeP20jPYRz7ZCpcKLB21NxuXHF3bxjStBQ==", "dev": true, "engines": { "node": ">= 0.10" @@ -17043,22 +16721,6 @@ "resolved": "https://registry.npmjs.org/vlq/-/vlq-1.0.1.tgz", "integrity": "sha512-gQpnTgkubC6hQgdIcRdYGDSDc+SaujOdyesZQMv6JlfQee/9Mp0Qhnys6WxDWvQnL5WZdT7o2Ul187aSt0Rq+w==" }, - "node_modules/vm2": { - "version": "3.9.19", - "resolved": "https://registry.npmjs.org/vm2/-/vm2-3.9.19.tgz", - "integrity": "sha512-J637XF0DHDMV57R6JyVsTak7nIL8gy5KH4r1HiwWLf/4GBbb5MKL5y7LpmF4A8E2nR6XmzpmMFQ7V7ppPTmUQg==", - "dev": true, - "dependencies": { - "acorn": "^8.7.0", - "acorn-walk": "^8.2.0" - }, - "bin": { - "vm2": "bin/vm2" - }, - "engines": { - "node": ">=6.0" - } - }, "node_modules/void-elements": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/void-elements/-/void-elements-2.0.1.tgz", @@ -17483,17 +17145,16 @@ "dev": true }, "node_modules/which-typed-array": { - "version": "1.1.9", - "resolved": "https://registry.npmjs.org/which-typed-array/-/which-typed-array-1.1.9.tgz", - "integrity": "sha512-w9c4xkx6mPidwp7180ckYWfMmvxpjlZuIudNtDf4N/tTAUB8VJbX25qZoAsrtGuYNnGw3pa0AXgbGKRB8/EceA==", + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/which-typed-array/-/which-typed-array-1.1.11.tgz", + "integrity": "sha512-qe9UWWpkeG5yzZ0tNYxDmd7vo58HDBc39mZ0xWWpolAGADdFOzkfamWLDxkOWcvHQKVmdTyQdLD4NOfjLWTKew==", "dev": true, "dependencies": { "available-typed-arrays": "^1.0.5", "call-bind": "^1.0.2", "for-each": "^0.3.3", "gopd": "^1.0.1", - "has-tostringtag": "^1.0.0", - "is-typed-array": "^1.1.10" + "has-tostringtag": "^1.0.0" }, "engines": { "node": ">= 0.4" @@ -17517,15 +17178,6 @@ "integrity": "sha512-CC1bOL87PIWSBhDcTrdeLo6eGT7mCFtrg0uIJtqJUFyK+eJnzl8A1niH56uu7KMa5XFrtiV+AQuHO3n7DsHnLQ==", "dev": true }, - "node_modules/word-wrap": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.3.tgz", - "integrity": "sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/workerpool": { "version": "6.2.1", "resolved": "https://registry.npmjs.org/workerpool/-/workerpool-6.2.1.tgz", @@ -17826,27 +17478,27 @@ } }, "@angular-devkit/architect": { - "version": "0.1601.3", - "resolved": "https://registry.npmjs.org/@angular-devkit/architect/-/architect-0.1601.3.tgz", - "integrity": "sha512-HvW51cCEoIYe2mYqcmnm2RZiMMFbFn7iIdsjbCJe7etFhcG+Y3hGDZMh4IFSiQiss+pwPSYOvQY2zwGrndMgLw==", + "version": "0.1601.7", + "resolved": "https://registry.npmjs.org/@angular-devkit/architect/-/architect-0.1601.7.tgz", + "integrity": "sha512-uFa7/TTPYoYLqgiRi5HZJaOXterVe9A83Sd+e3NXMmvT6oTMyLv0/t0Luhjic6c4vFrNnF3ECkrlGs2qW4TslA==", "dev": true, "requires": { - "@angular-devkit/core": "16.1.3", + "@angular-devkit/core": "16.1.7", "rxjs": "7.8.1" } }, "@angular-devkit/build-angular": { - "version": "16.1.3", - "resolved": "https://registry.npmjs.org/@angular-devkit/build-angular/-/build-angular-16.1.3.tgz", - "integrity": "sha512-1scrdUdKRa9TkJ9jev/KRzFttbLUVACQvVRL0G67nUAdtJ/bQX8eui85axpCNPFihK4ReSW3R4lrgcVC2NUSoA==", + "version": "16.1.7", + "resolved": "https://registry.npmjs.org/@angular-devkit/build-angular/-/build-angular-16.1.7.tgz", + "integrity": "sha512-zUkPH3QDpA//hhMjMm9pKcbhO2gZjy4EkWrPglvR6G6a0myZc6/rEYK3W8gQWP1jiYiha/PiGnxTb+XeN/74tQ==", "dev": true, "requires": { "@ampproject/remapping": "2.2.1", - "@angular-devkit/architect": "0.1601.3", - "@angular-devkit/build-webpack": "0.1601.3", - "@angular-devkit/core": "16.1.3", + "@angular-devkit/architect": "0.1601.7", + "@angular-devkit/build-webpack": "0.1601.7", + "@angular-devkit/core": "16.1.7", "@babel/core": "7.22.5", - "@babel/generator": "7.22.5", + "@babel/generator": "7.22.7", "@babel/helper-annotate-as-pure": "7.22.5", "@babel/helper-split-export-declaration": "7.22.5", "@babel/plugin-proposal-async-generator-functions": "7.20.7", @@ -17856,7 +17508,7 @@ "@babel/runtime": "7.22.5", "@babel/template": "7.22.5", "@discoveryjs/json-ext": "0.5.7", - "@ngtools/webpack": "16.1.3", + "@ngtools/webpack": "16.1.7", "@vitejs/plugin-basic-ssl": "1.0.1", "ansi-colors": "4.1.3", "autoprefixer": "10.4.14", @@ -17909,9 +17561,9 @@ }, "dependencies": { "@types/node": { - "version": "20.3.2", - "resolved": "https://registry.npmjs.org/@types/node/-/node-20.3.2.tgz", - "integrity": "sha512-vOBLVQeCQfIcF/2Y7eKFTqrMnizK5lRNQ7ykML/5RuwVXVWxYkgwS7xbt4B6fKCUPgbSL5FSsjHQpaGQP/dQmw==", + "version": "20.4.7", + "resolved": "https://registry.npmjs.org/@types/node/-/node-20.4.7.tgz", + "integrity": "sha512-bUBrPjEry2QUTsnuEjzjbS7voGWCc30W0qzgMf90GPeDGFRakvrz47ju+oqDAKCXLUCe39u57/ORMl/O/04/9g==", "dev": true, "optional": true, "peer": true @@ -17944,19 +17596,19 @@ } }, "@angular-devkit/build-webpack": { - "version": "0.1601.3", - "resolved": "https://registry.npmjs.org/@angular-devkit/build-webpack/-/build-webpack-0.1601.3.tgz", - "integrity": "sha512-744+72vi/Vx010VxizGgilhpnDCOG29qyhMmu7BkUhtpq8E8eQn2HU3nPpxAqrg3bKVAwD7v3F111MVIhub8kA==", + "version": "0.1601.7", + "resolved": "https://registry.npmjs.org/@angular-devkit/build-webpack/-/build-webpack-0.1601.7.tgz", + "integrity": "sha512-BFqjL9mz0gtS10ucwmx7fFb1PprBzt6glN7ZEGhx58tterW68N9zZNFHR0AXmWoyVp/1B2oJWmqAQ52fakyshg==", "dev": true, "requires": { - "@angular-devkit/architect": "0.1601.3", + "@angular-devkit/architect": "0.1601.7", "rxjs": "7.8.1" } }, "@angular-devkit/core": { - "version": "16.1.3", - "resolved": "https://registry.npmjs.org/@angular-devkit/core/-/core-16.1.3.tgz", - "integrity": "sha512-cFhNdJHumNMZGD3NYxOtNuMGRQXeDnKbwvK+IJmKAttXt8na6EvURR/ZxZOI7rl/YRVX+vcNSdtXz3hE6g+Isw==", + "version": "16.1.7", + "resolved": "https://registry.npmjs.org/@angular-devkit/core/-/core-16.1.7.tgz", + "integrity": "sha512-AXc9/F57Nf/A26yGu+w7PhNYriTvwazPTQsVPW/SBcTcpBa/hAsBTbPl8o8ErRJneJIoYqy/EIuabf9iiU8bRA==", "dev": true, "requires": { "ajv": "8.12.0", @@ -17967,12 +17619,12 @@ } }, "@angular-devkit/schematics": { - "version": "16.1.3", - "resolved": "https://registry.npmjs.org/@angular-devkit/schematics/-/schematics-16.1.3.tgz", - "integrity": "sha512-hWEuQnfQOgcSs4YX6iF4QR/34ROeSPaMi7lQOYg33hStg+pnk/JDdIU0f2nrIIz3t0jqAj+5VXVLBJvOCd84vg==", + "version": "16.1.7", + "resolved": "https://registry.npmjs.org/@angular-devkit/schematics/-/schematics-16.1.7.tgz", + "integrity": "sha512-FQ/svSrUyalHVxgudoXAJbwgdPZ1iaEc6My4s4ti2HFtw0vqPw7Dh9bkRiMN3/MGMAdvsUIBiz8oSELZhuJTJg==", "dev": true, "requires": { - "@angular-devkit/core": "16.1.3", + "@angular-devkit/core": "16.1.7", "jsonc-parser": "3.2.0", "magic-string": "0.30.0", "ora": "5.4.1", @@ -17980,84 +17632,84 @@ } }, "@angular-eslint/builder": { - "version": "16.0.3", - "resolved": "https://registry.npmjs.org/@angular-eslint/builder/-/builder-16.0.3.tgz", - "integrity": "sha512-pv/CrnOHHOnBqhyBmqUPsIHKXOHYMJztxYJ83tjxeXL5Moyu5e6CBMIQ58UtqmgWfEIA3n7owYy9KvHTJcemyQ==", + "version": "16.1.0", + "resolved": "https://registry.npmjs.org/@angular-eslint/builder/-/builder-16.1.0.tgz", + "integrity": "sha512-KIkE2SI1twFKoCiF/k2VR3ojOcc7TD1xPyY4kbUrx/Gxp+XEzar7O29I/ztzL4eHPBM+Uh3/NwS/jvjjBxjgAg==", "dev": true, "requires": { - "@nx/devkit": "16.2.2", - "nx": "16.2.2" + "@nx/devkit": "16.5.1", + "nx": "16.5.1" } }, "@angular-eslint/bundled-angular-compiler": { - "version": "16.0.3", - "resolved": "https://registry.npmjs.org/@angular-eslint/bundled-angular-compiler/-/bundled-angular-compiler-16.0.3.tgz", - "integrity": "sha512-8zwY6ustiPXBEF3+jELKVwGk6j2HJn7GHbqAhDFR02YiE27iRMSGTHIAWGs6ZI7F1JgfrIsOHrUgzC1x95K6rg==", + "version": "16.1.0", + "resolved": "https://registry.npmjs.org/@angular-eslint/bundled-angular-compiler/-/bundled-angular-compiler-16.1.0.tgz", + "integrity": "sha512-5EFAWXuFJADr3imo/ZYshY8s0K7U7wyysnE2LXnpT9PAi5rmkzt70UNZNRuamCbXr4tdIiu+fXWOj7tUuJKnnw==", "dev": true }, "@angular-eslint/eslint-plugin": { - "version": "16.0.3", - "resolved": "https://registry.npmjs.org/@angular-eslint/eslint-plugin/-/eslint-plugin-16.0.3.tgz", - "integrity": "sha512-1c+dFytcQDOA2wJ8/rtydMV6UYq1BgVfOcBXOr0WJxC9g8Cad9czcUOkW41WGrTp5kICMliV0ypH5eEaCM2WDQ==", + "version": "16.1.0", + "resolved": "https://registry.npmjs.org/@angular-eslint/eslint-plugin/-/eslint-plugin-16.1.0.tgz", + "integrity": "sha512-BFzzJJlgQgWc8avdSBkaDWAzNSUqcwWy0L1iZSBdXGoIOxj72kLbwe99emb8M+rUfCveljQkeM2pcYu8XLbJIA==", "dev": true, "requires": { - "@angular-eslint/utils": "16.0.3", - "@typescript-eslint/utils": "5.59.7" + "@angular-eslint/utils": "16.1.0", + "@typescript-eslint/utils": "5.62.0" } }, "@angular-eslint/eslint-plugin-template": { - "version": "16.0.3", - "resolved": "https://registry.npmjs.org/@angular-eslint/eslint-plugin-template/-/eslint-plugin-template-16.0.3.tgz", - "integrity": "sha512-OKTMWOjC7F5tdv7gm2tlmgyr/uVyS1RWJZn4X/6D6p0kOpiDXmajtbYHD5tzbshX2Ep62Nt+rg8+1XGHrU0ScA==", + "version": "16.1.0", + "resolved": "https://registry.npmjs.org/@angular-eslint/eslint-plugin-template/-/eslint-plugin-template-16.1.0.tgz", + "integrity": "sha512-wQHWR5vqWGgO7mqoG5ixXeplIlz/OmxBJE9QMLPTZE8GdaTx8+F/5J37OWh84zCpD3mOa/FHYZxBDm2MfUmA1Q==", "dev": true, "requires": { - "@angular-eslint/bundled-angular-compiler": "16.0.3", - "@angular-eslint/utils": "16.0.3", - "@typescript-eslint/type-utils": "5.59.7", - "@typescript-eslint/utils": "5.59.7", - "aria-query": "5.1.3", + "@angular-eslint/bundled-angular-compiler": "16.1.0", + "@angular-eslint/utils": "16.1.0", + "@typescript-eslint/type-utils": "5.62.0", + "@typescript-eslint/utils": "5.62.0", + "aria-query": "5.3.0", "axobject-query": "3.1.1" } }, "@angular-eslint/schematics": { - "version": "16.0.3", - "resolved": "https://registry.npmjs.org/@angular-eslint/schematics/-/schematics-16.0.3.tgz", - "integrity": "sha512-vRdSY0ovE+wfTvYeguPp/QAxvGejLADO8CzJkas0PxdCQiyLuTscKsYE82XcvX2kitMexvH71lNF0ggnGoMRXA==", + "version": "16.1.0", + "resolved": "https://registry.npmjs.org/@angular-eslint/schematics/-/schematics-16.1.0.tgz", + "integrity": "sha512-L1tmP3R2krHyveaRXAvn/SeDoBFNpS1VtPPrzZm1NYr1qPcAxf3NtG2nnoyVFu6WZGt59ZGHNQ/dZxnXvm0UGg==", "dev": true, "requires": { - "@angular-eslint/eslint-plugin": "16.0.3", - "@angular-eslint/eslint-plugin-template": "16.0.3", - "@nx/devkit": "16.2.2", + "@angular-eslint/eslint-plugin": "16.1.0", + "@angular-eslint/eslint-plugin-template": "16.1.0", + "@nx/devkit": "16.5.1", "ignore": "5.2.4", - "nx": "16.2.2", + "nx": "16.5.1", "strip-json-comments": "3.1.1", "tmp": "0.2.1" } }, "@angular-eslint/template-parser": { - "version": "16.0.3", - "resolved": "https://registry.npmjs.org/@angular-eslint/template-parser/-/template-parser-16.0.3.tgz", - "integrity": "sha512-IAWdwp/S9QC3EMiVxSS0E3ABy9PSidN3PW0Ll2EtM3mzXMYlpZXmxqd+B1xV/xKWzhk1Mp04QX8hHfG6Vq+qaQ==", + "version": "16.1.0", + "resolved": "https://registry.npmjs.org/@angular-eslint/template-parser/-/template-parser-16.1.0.tgz", + "integrity": "sha512-DOQtzVehtbO7+BQ+FMOXRsxGRjHb3ve6M+S4qASKTiI+twtONjRODcHezD3N4PDkjpKPbOnk7YnFsHur5csUNw==", "dev": true, "requires": { - "@angular-eslint/bundled-angular-compiler": "16.0.3", + "@angular-eslint/bundled-angular-compiler": "16.1.0", "eslint-scope": "^7.0.0" } }, "@angular-eslint/utils": { - "version": "16.0.3", - "resolved": "https://registry.npmjs.org/@angular-eslint/utils/-/utils-16.0.3.tgz", - "integrity": "sha512-QsbUVHJLk+fE08/D4y3wOyGk1iX2LVSygw+uzilbaAXfjD5/c0Ei5FbVx2mMYPk+aOl4yrvGQW3dmetMiAR0MQ==", + "version": "16.1.0", + "resolved": "https://registry.npmjs.org/@angular-eslint/utils/-/utils-16.1.0.tgz", + "integrity": "sha512-u5XscYUq1F/7RuwyVIV2a280QL27lyQz434VYR+Np/oO21NGj5jxoRKb55xhXT9EFVs5Sy4JYeEUp6S75J/cUw==", "dev": true, "requires": { - "@angular-eslint/bundled-angular-compiler": "16.0.3", - "@typescript-eslint/utils": "5.59.7" + "@angular-eslint/bundled-angular-compiler": "16.1.0", + "@typescript-eslint/utils": "5.62.0" } }, "@angular/animations": { - "version": "16.1.3", - "resolved": "https://registry.npmjs.org/@angular/animations/-/animations-16.1.3.tgz", - "integrity": "sha512-ET6ahrlbOyTYXOTouKs2VJxx0CMTrYkfz0HfI6IHnSKBC6wguDxXYnamMouHgrCkDDEB5qClfGHyS9se0AOX4w==", + "version": "16.1.8", + "resolved": "https://registry.npmjs.org/@angular/animations/-/animations-16.1.8.tgz", + "integrity": "sha512-aIAf8EAZomgXMF6AP0wTPAc04Cvw+nL9nkEVwQNVxMByZpcbnnqHWHokLD8es8DzlwDT+EIZS4wZMBA4XUmPyA==", "requires": { "tslib": "^2.3.0" } @@ -18072,15 +17724,15 @@ } }, "@angular/cli": { - "version": "16.1.3", - "resolved": "https://registry.npmjs.org/@angular/cli/-/cli-16.1.3.tgz", - "integrity": "sha512-D0gU12z/N2oJ+s6pggAnWYrTUZ+2duGb3Y5oUyClsubz7JWpAwHjSZpb8exPUrgYhr+qIEMGO685y1JazJQ2tA==", + "version": "16.1.7", + "resolved": "https://registry.npmjs.org/@angular/cli/-/cli-16.1.7.tgz", + "integrity": "sha512-RNmRytkCFqmkGiiy6IrLEvKkipTEeZW1Un2aKbaPBM8qqfZCeUx8TfU+G4DI4w1jvJ8IwzkYQLAi4NPk1DPxmQ==", "dev": true, "requires": { - "@angular-devkit/architect": "0.1601.3", - "@angular-devkit/core": "16.1.3", - "@angular-devkit/schematics": "16.1.3", - "@schematics/angular": "16.1.3", + "@angular-devkit/architect": "0.1601.7", + "@angular-devkit/core": "16.1.7", + "@angular-devkit/schematics": "16.1.7", + "@schematics/angular": "16.1.7", "@yarnpkg/lockfile": "1.1.0", "ansi-colors": "4.1.3", "ini": "4.1.1", @@ -18098,25 +17750,25 @@ } }, "@angular/common": { - "version": "16.1.3", - "resolved": "https://registry.npmjs.org/@angular/common/-/common-16.1.3.tgz", - "integrity": "sha512-ZzJ6EwQHUkiZYV0zH/UxyUYW5uxomsyk7tdtqZIxAR5m2ktYkQ5XlqgPjBO8voF54Rs5Ot43RkPCLesbZyJDsw==", + "version": "16.1.8", + "resolved": "https://registry.npmjs.org/@angular/common/-/common-16.1.8.tgz", + "integrity": "sha512-Zm+Ysxdf74VwG3mbAqs2v1QFUR+h9RyJBXF5VFABEpgFw7NUOBKrayjJmKjgZ0TBAmL2+nXehJgcPph3zNp3sg==", "requires": { "tslib": "^2.3.0" } }, "@angular/compiler": { - "version": "16.1.3", - "resolved": "https://registry.npmjs.org/@angular/compiler/-/compiler-16.1.3.tgz", - "integrity": "sha512-7Ckvssk9+s5xLyXvp72IwAw5vd/Osa3tR6oiQatdbw+O3XjLO04QycoGXwkp/fYVexGsjFyOn6QJ5n1F/PYPbQ==", + "version": "16.1.8", + "resolved": "https://registry.npmjs.org/@angular/compiler/-/compiler-16.1.8.tgz", + "integrity": "sha512-jF2zk3LjrcI/xpjJG6yoLiL2t2l5227i8SjhRUawAL1sy0xtb/PiSLjCNhuSgyixbB/8az/YezZe11MSg48FDg==", "requires": { "tslib": "^2.3.0" } }, "@angular/compiler-cli": { - "version": "16.1.3", - "resolved": "https://registry.npmjs.org/@angular/compiler-cli/-/compiler-cli-16.1.3.tgz", - "integrity": "sha512-aUqnIV9rRTBNgiQRS0Gv6lhghaGj1vpVRyXgiE4VnTR9uBONSsGKMNALYBBhXRTSk2e0cvutt0ubLgmNpdyWyQ==", + "version": "16.1.8", + "resolved": "https://registry.npmjs.org/@angular/compiler-cli/-/compiler-cli-16.1.8.tgz", + "integrity": "sha512-Whk3RBnEYwN0c6Mo7hU6JDpHSyKONmIQEN8ViHJXwmyHK8w+/Z27iBw10QiyWUMtYb4tIM1xSLhRFAwH/3WnPQ==", "dev": true, "requires": { "@babel/core": "7.22.5", @@ -18130,41 +17782,41 @@ } }, "@angular/core": { - "version": "16.1.3", - "resolved": "https://registry.npmjs.org/@angular/core/-/core-16.1.3.tgz", - "integrity": "sha512-yhRo9hVS8KhfcEgzciWuRWF4Pnnko98bmSJTqd7u8Kys6z3Uj0qgXMssXHIPUALe3mQKjVkdSZPLIZ9/CaVn/Q==", + "version": "16.1.8", + "resolved": "https://registry.npmjs.org/@angular/core/-/core-16.1.8.tgz", + "integrity": "sha512-XtOpY9HA85hPGrPwe1rgE8NJ3bFWbuJFx4SUlzB66k9B5jo8bD2Dxl/0id55RFS5gmvCe/Qhh0zoGyMpkWjMHA==", "requires": { "tslib": "^2.3.0" } }, "@angular/forms": { - "version": "16.1.3", - "resolved": "https://registry.npmjs.org/@angular/forms/-/forms-16.1.3.tgz", - "integrity": "sha512-9tJHgoi/Jmeo30zfnReVZWFcd1WthR+QwYUNwPev+ys58u1mB0cDGORvROySmC2YUyXFSpXt8sxwyWCkYvaV2w==", + "version": "16.1.8", + "resolved": "https://registry.npmjs.org/@angular/forms/-/forms-16.1.8.tgz", + "integrity": "sha512-V36q42ExvL93T7oYvRf4Z2z2V/kOm0wgaFgkNSiBHgIpuwvrAZ9nRZBui5Fqdnep3xKYd980vAaTtACA1blv3Q==", "requires": { "tslib": "^2.3.0" } }, "@angular/platform-browser": { - "version": "16.1.3", - "resolved": "https://registry.npmjs.org/@angular/platform-browser/-/platform-browser-16.1.3.tgz", - "integrity": "sha512-qZA6Lua2fpBe+KD/QArY/4hilypSZFcTcJsPjZwIzo5pavXqYDI8BVghwh5dcZoUa56hVRDJjv+XW6kl8m9Tdw==", + "version": "16.1.8", + "resolved": "https://registry.npmjs.org/@angular/platform-browser/-/platform-browser-16.1.8.tgz", + "integrity": "sha512-wfUCVU7DLMHy5Rw7LY8KSTuLk0ff2bWElT6WSAKXXFEPjQiWuXbbIe+gglJX5HFQQHoyVwNbsSDIIgEp535Kvw==", "requires": { "tslib": "^2.3.0" } }, "@angular/platform-browser-dynamic": { - "version": "16.1.3", - "resolved": "https://registry.npmjs.org/@angular/platform-browser-dynamic/-/platform-browser-dynamic-16.1.3.tgz", - "integrity": "sha512-UHxSWpPB5+FSv8zm8T+4ZikLqyy+VE6GlOLp/DdgEz77j81rz2C1pMqozwTnVbD16XbI4rhTp+RFY3C9ArWOtw==", + "version": "16.1.8", + "resolved": "https://registry.npmjs.org/@angular/platform-browser-dynamic/-/platform-browser-dynamic-16.1.8.tgz", + "integrity": "sha512-mhQH78Zn/oFe+U8DmVvPJ0/7neDlnKcgktQ7f1vFNibRLqkmHW/o1vZ0B7CAmO+yzGbB8mt+RBCFAfA7g3oRDg==", "requires": { "tslib": "^2.3.0" } }, "@angular/router": { - "version": "16.1.3", - "resolved": "https://registry.npmjs.org/@angular/router/-/router-16.1.3.tgz", - "integrity": "sha512-bkn8cWGBKKZidDaP+R7g/S/6miSfH8iP24d2k86Awo+vaO+7G/5WWGfKJMKK8UNM/A5ueX6ugAZrMHpQ9e6Y4w==", + "version": "16.1.8", + "resolved": "https://registry.npmjs.org/@angular/router/-/router-16.1.8.tgz", + "integrity": "sha512-p11Mz0qQbl26fcEEQ9LEUZhKrca9kqSwMWgxBRMWZl0AgtbWQadiVdjiQY0rvpohI7qSO8m3s7CFIQLKIOEvYQ==", "requires": { "tslib": "^2.3.0" } @@ -18185,9 +17837,9 @@ } }, "@babel/compat-data": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.22.5.tgz", - "integrity": "sha512-4Jc/YuIaYqKnDDz892kPIledykKg12Aw1PYX5i/TY28anJtacvM1Rrr8wbieB9GfEJwlzqT0hUEao0CxEebiDA==", + "version": "7.22.9", + "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.22.9.tgz", + "integrity": "sha512-5UamI7xkUcJ3i9qVDS+KFDEK8/7oJ55/sJMB1Ge7IEapr7KfdfV/HErR+koZwOfd+SgtFKOKRhRakdg++DcJpQ==", "dev": true }, "@babel/core": { @@ -18214,17 +17866,17 @@ }, "dependencies": { "semver": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", - "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", "dev": true } } }, "@babel/generator": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.22.5.tgz", - "integrity": "sha512-+lcUbnTRhd0jOewtFSedLyiPsD5tswKkbgcezOqqWFUVNEwoUTlpPOBmvhG7OXWLR4jMdv0czPGH5XbflnD1EA==", + "version": "7.22.7", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.22.7.tgz", + "integrity": "sha512-p+jPjMG+SI8yvIaxGgeW24u7q9+5+TGpZh8/CuB7RhBKd7RCy8FayNEFNNKrNK/eUcY/4ExQqLmyrvBXKsIcwQ==", "dev": true, "requires": { "@babel/types": "^7.22.5", @@ -18252,30 +17904,30 @@ } }, "@babel/helper-compilation-targets": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.22.5.tgz", - "integrity": "sha512-Ji+ywpHeuqxB8WDxraCiqR0xfhYjiDE/e6k7FuIaANnoOFxAHskHChz4vA1mJC9Lbm01s1PVAGhQY4FUKSkGZw==", + "version": "7.22.9", + "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.22.9.tgz", + "integrity": "sha512-7qYrNM6HjpnPHJbopxmb8hSPoZ0gsX8IvUS32JGVoy+pU9e5N0nLr1VjJoR6kA4d9dmGLxNYOjeB8sUDal2WMw==", "dev": true, "requires": { - "@babel/compat-data": "^7.22.5", + "@babel/compat-data": "^7.22.9", "@babel/helper-validator-option": "^7.22.5", - "browserslist": "^4.21.3", + "browserslist": "^4.21.9", "lru-cache": "^5.1.1", - "semver": "^6.3.0" + "semver": "^6.3.1" }, "dependencies": { "semver": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", - "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", "dev": true } } }, "@babel/helper-create-class-features-plugin": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.22.5.tgz", - "integrity": "sha512-xkb58MyOYIslxu3gKmVXmjTtUPvBU4odYzbiIQbWwLKIHCsx6UGZGX6F1IznMFVnDdirseUZopzN+ZRt8Xb33Q==", + "version": "7.22.9", + "resolved": "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.22.9.tgz", + "integrity": "sha512-Pwyi89uO4YrGKxL/eNJ8lfEH55DnRloGPOseaA8NFNL6jAUnn+KccaISiFazCj5IolPPDjGSdzQzXVzODVRqUQ==", "dev": true, "requires": { "@babel/helper-annotate-as-pure": "^7.22.5", @@ -18283,59 +17935,59 @@ "@babel/helper-function-name": "^7.22.5", "@babel/helper-member-expression-to-functions": "^7.22.5", "@babel/helper-optimise-call-expression": "^7.22.5", - "@babel/helper-replace-supers": "^7.22.5", + "@babel/helper-replace-supers": "^7.22.9", "@babel/helper-skip-transparent-expression-wrappers": "^7.22.5", - "@babel/helper-split-export-declaration": "^7.22.5", - "semver": "^6.3.0" + "@babel/helper-split-export-declaration": "^7.22.6", + "semver": "^6.3.1" }, "dependencies": { + "@babel/helper-split-export-declaration": { + "version": "7.22.6", + "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.22.6.tgz", + "integrity": "sha512-AsUnxuLhRYsisFiaJwvp1QF+I3KjD5FOxut14q/GzovUe6orHLesW2C7d754kRm53h5gqrz6sFl6sxc4BVtE/g==", + "dev": true, + "requires": { + "@babel/types": "^7.22.5" + } + }, "semver": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", - "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", "dev": true } } }, "@babel/helper-create-regexp-features-plugin": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.22.5.tgz", - "integrity": "sha512-1VpEFOIbMRaXyDeUwUfmTIxExLwQ+zkW+Bh5zXpApA3oQedBx9v/updixWxnx/bZpKw7u8VxWjb/qWpIcmPq8A==", + "version": "7.22.9", + "resolved": "https://registry.npmjs.org/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.22.9.tgz", + "integrity": "sha512-+svjVa/tFwsNSG4NEy1h85+HQ5imbT92Q5/bgtS7P0GTQlP8WuFdqsiABmQouhiFGyV66oGxZFpeYHza1rNsKw==", "dev": true, "requires": { "@babel/helper-annotate-as-pure": "^7.22.5", "regexpu-core": "^5.3.1", - "semver": "^6.3.0" + "semver": "^6.3.1" }, "dependencies": { "semver": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", - "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", "dev": true } } }, "@babel/helper-define-polyfill-provider": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.4.0.tgz", - "integrity": "sha512-RnanLx5ETe6aybRi1cO/edaRH+bNYWaryCEmjDDYyNr4wnSzyOp8T0dWipmqVHKEY3AbVKUom50AKSlj1zmKbg==", + "version": "0.4.2", + "resolved": "https://registry.npmjs.org/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.4.2.tgz", + "integrity": "sha512-k0qnnOqHn5dK9pZpfD5XXZ9SojAITdCKRn2Lp6rnDGzIbaP0rHyMPk/4wsSxVBVz4RfN0q6VpXWP2pDGIoQ7hw==", "dev": true, "requires": { - "@babel/helper-compilation-targets": "^7.17.7", - "@babel/helper-plugin-utils": "^7.16.7", + "@babel/helper-compilation-targets": "^7.22.6", + "@babel/helper-plugin-utils": "^7.22.5", "debug": "^4.1.1", "lodash.debounce": "^4.0.8", - "resolve": "^1.14.2", - "semver": "^6.1.2" - }, - "dependencies": { - "semver": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", - "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", - "dev": true - } + "resolve": "^1.14.2" } }, "@babel/helper-environment-visitor": { @@ -18382,19 +18034,27 @@ } }, "@babel/helper-module-transforms": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.22.5.tgz", - "integrity": "sha512-+hGKDt/Ze8GFExiVHno/2dvG5IdstpzCq0y4Qc9OJ25D4q3pKfiIP/4Vp3/JvhDkLKsDK2api3q3fpIgiIF5bw==", + "version": "7.22.9", + "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.22.9.tgz", + "integrity": "sha512-t+WA2Xn5K+rTeGtC8jCsdAH52bjggG5TKRuRrAGNM/mjIbO4GxvlLMFOEz9wXY5I2XQ60PMFsAG2WIcG82dQMQ==", "dev": true, "requires": { "@babel/helper-environment-visitor": "^7.22.5", "@babel/helper-module-imports": "^7.22.5", "@babel/helper-simple-access": "^7.22.5", - "@babel/helper-split-export-declaration": "^7.22.5", - "@babel/helper-validator-identifier": "^7.22.5", - "@babel/template": "^7.22.5", - "@babel/traverse": "^7.22.5", - "@babel/types": "^7.22.5" + "@babel/helper-split-export-declaration": "^7.22.6", + "@babel/helper-validator-identifier": "^7.22.5" + }, + "dependencies": { + "@babel/helper-split-export-declaration": { + "version": "7.22.6", + "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.22.6.tgz", + "integrity": "sha512-AsUnxuLhRYsisFiaJwvp1QF+I3KjD5FOxut14q/GzovUe6orHLesW2C7d754kRm53h5gqrz6sFl6sxc4BVtE/g==", + "dev": true, + "requires": { + "@babel/types": "^7.22.5" + } + } } }, "@babel/helper-optimise-call-expression": { @@ -18413,29 +18073,25 @@ "dev": true }, "@babel/helper-remap-async-to-generator": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.22.5.tgz", - "integrity": "sha512-cU0Sq1Rf4Z55fgz7haOakIyM7+x/uCFwXpLPaeRzfoUtAEAuUZjZvFPjL/rk5rW693dIgn2hng1W7xbT7lWT4g==", + "version": "7.22.9", + "resolved": "https://registry.npmjs.org/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.22.9.tgz", + "integrity": "sha512-8WWC4oR4Px+tr+Fp0X3RHDVfINGpF3ad1HIbrc8A77epiR6eMMc6jsgozkzT2uDiOOdoS9cLIQ+XD2XvI2WSmQ==", "dev": true, "requires": { "@babel/helper-annotate-as-pure": "^7.22.5", "@babel/helper-environment-visitor": "^7.22.5", - "@babel/helper-wrap-function": "^7.22.5", - "@babel/types": "^7.22.5" + "@babel/helper-wrap-function": "^7.22.9" } }, "@babel/helper-replace-supers": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.22.5.tgz", - "integrity": "sha512-aLdNM5I3kdI/V9xGNyKSF3X/gTyMUBohTZ+/3QdQKAA9vxIiy12E+8E2HoOP1/DjeqU+g6as35QHJNMDDYpuCg==", + "version": "7.22.9", + "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.22.9.tgz", + "integrity": "sha512-LJIKvvpgPOPUThdYqcX6IXRuIcTkcAub0IaDRGCZH0p5GPUp7PhRU9QVgFcDDd51BaPkk77ZjqFwh6DZTAEmGg==", "dev": true, "requires": { "@babel/helper-environment-visitor": "^7.22.5", "@babel/helper-member-expression-to-functions": "^7.22.5", - "@babel/helper-optimise-call-expression": "^7.22.5", - "@babel/template": "^7.22.5", - "@babel/traverse": "^7.22.5", - "@babel/types": "^7.22.5" + "@babel/helper-optimise-call-expression": "^7.22.5" } }, "@babel/helper-simple-access": { @@ -18484,25 +18140,24 @@ "dev": true }, "@babel/helper-wrap-function": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/helper-wrap-function/-/helper-wrap-function-7.22.5.tgz", - "integrity": "sha512-bYqLIBSEshYcYQyfks8ewYA8S30yaGSeRslcvKMvoUk6HHPySbxHq9YRi6ghhzEU+yhQv9bP/jXnygkStOcqZw==", + "version": "7.22.9", + "resolved": "https://registry.npmjs.org/@babel/helper-wrap-function/-/helper-wrap-function-7.22.9.tgz", + "integrity": "sha512-sZ+QzfauuUEfxSEjKFmi3qDSHgLsTPK/pEpoD/qonZKOtTPTLbf59oabPQ4rKekt9lFcj/hTZaOhWwFYrgjk+Q==", "dev": true, "requires": { "@babel/helper-function-name": "^7.22.5", "@babel/template": "^7.22.5", - "@babel/traverse": "^7.22.5", "@babel/types": "^7.22.5" } }, "@babel/helpers": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.22.5.tgz", - "integrity": "sha512-pSXRmfE1vzcUIDFQcSGA5Mr+GxBV9oiRKDuDxXvWQQBCh8HoIjs/2DlDB7H8smac1IVrB9/xdXj2N3Wol9Cr+Q==", + "version": "7.22.6", + "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.22.6.tgz", + "integrity": "sha512-YjDs6y/fVOYFV8hAf1rxd1QvR9wJe1pDBZ2AREKq/SDayfPzgk0PBnVuTCE5X1acEpMMNOVUqoe+OwiZGJ+OaA==", "dev": true, "requires": { "@babel/template": "^7.22.5", - "@babel/traverse": "^7.22.5", + "@babel/traverse": "^7.22.6", "@babel/types": "^7.22.5" } }, @@ -18518,9 +18173,9 @@ } }, "@babel/parser": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.22.5.tgz", - "integrity": "sha512-DFZMC9LJUG9PLOclRC32G63UXwzqS2koQC8dkx+PLdmt1xSePYpbT/NbsrJy8Q/muXz7o/h/d4A7Fuyixm559Q==", + "version": "7.22.7", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.22.7.tgz", + "integrity": "sha512-7NF8pOkHP5o2vpmGgNGcfAeCvOYhGLyA3Z4eBQkT1RJlWu47n63bCs93QfJ2hIAFCil7L5P2IWhs1oToVgrL0Q==", "dev": true }, "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": { @@ -18745,9 +18400,9 @@ } }, "@babel/plugin-transform-async-generator-functions": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-generator-functions/-/plugin-transform-async-generator-functions-7.22.5.tgz", - "integrity": "sha512-gGOEvFzm3fWoyD5uZq7vVTD57pPJ3PczPUD/xCFGjzBpUosnklmXyKnGQbbbGs1NPNPskFex0j93yKbHt0cHyg==", + "version": "7.22.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-generator-functions/-/plugin-transform-async-generator-functions-7.22.7.tgz", + "integrity": "sha512-7HmE7pk/Fmke45TODvxvkxRMV9RazV+ZZzhOL9AG8G29TLrr3jkjwF7uJfxZ30EoXpO+LJkq4oA8NjO2DTnEDg==", "dev": true, "requires": { "@babel/helper-environment-visitor": "^7.22.5", @@ -18807,20 +18462,31 @@ } }, "@babel/plugin-transform-classes": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-7.22.5.tgz", - "integrity": "sha512-2edQhLfibpWpsVBx2n/GKOz6JdGQvLruZQfGr9l1qes2KQaWswjBzhQF7UDUZMNaMMQeYnQzxwOMPsbYF7wqPQ==", + "version": "7.22.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-7.22.6.tgz", + "integrity": "sha512-58EgM6nuPNG6Py4Z3zSuu0xWu2VfodiMi72Jt5Kj2FECmaYk1RrTXA45z6KBFsu9tRgwQDwIiY4FXTt+YsSFAQ==", "dev": true, "requires": { "@babel/helper-annotate-as-pure": "^7.22.5", - "@babel/helper-compilation-targets": "^7.22.5", + "@babel/helper-compilation-targets": "^7.22.6", "@babel/helper-environment-visitor": "^7.22.5", "@babel/helper-function-name": "^7.22.5", "@babel/helper-optimise-call-expression": "^7.22.5", "@babel/helper-plugin-utils": "^7.22.5", "@babel/helper-replace-supers": "^7.22.5", - "@babel/helper-split-export-declaration": "^7.22.5", + "@babel/helper-split-export-declaration": "^7.22.6", "globals": "^11.1.0" + }, + "dependencies": { + "@babel/helper-split-export-declaration": { + "version": "7.22.6", + "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.22.6.tgz", + "integrity": "sha512-AsUnxuLhRYsisFiaJwvp1QF+I3KjD5FOxut14q/GzovUe6orHLesW2C7d754kRm53h5gqrz6sFl6sxc4BVtE/g==", + "dev": true, + "requires": { + "@babel/types": "^7.22.5" + } + } } }, "@babel/plugin-transform-computed-properties": { @@ -19065,9 +18731,9 @@ } }, "@babel/plugin-transform-optional-chaining": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-optional-chaining/-/plugin-transform-optional-chaining-7.22.5.tgz", - "integrity": "sha512-AconbMKOMkyG+xCng2JogMCDcqW8wedQAqpVIL4cOSescZ7+iW8utC6YDZLMCSUIReEA733gzRSaOSXMAt/4WQ==", + "version": "7.22.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-optional-chaining/-/plugin-transform-optional-chaining-7.22.6.tgz", + "integrity": "sha512-Vd5HiWml0mDVtcLHIoEU5sw6HOUW/Zk0acLs/SAeuLzkGNOPc9DB4nkUajemhCmTIz3eiaKREZn2hQQqF79YTg==", "dev": true, "requires": { "@babel/helper-plugin-utils": "^7.22.5", @@ -19149,9 +18815,9 @@ }, "dependencies": { "semver": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", - "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", "dev": true } } @@ -19330,17 +18996,17 @@ }, "dependencies": { "semver": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", - "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", "dev": true } } }, "@babel/preset-modules": { - "version": "0.1.5", - "resolved": "https://registry.npmjs.org/@babel/preset-modules/-/preset-modules-0.1.5.tgz", - "integrity": "sha512-A57th6YRG7oR3cq/yt/Y84MvGgE0eJG2F1JLhKuyG+jFxEgrd/HAMJatiFtmOiZurz+0DkrvbheCLaV5f2JfjA==", + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/@babel/preset-modules/-/preset-modules-0.1.6.tgz", + "integrity": "sha512-ID2yj6K/4lKfhuU3+EX4UvNbIt7eACFbHmNUjzA+ep+B5971CknnA/9DEWKbRokfbbtblxxxXFJJrH47UEAMVg==", "dev": true, "requires": { "@babel/helper-plugin-utils": "^7.0.0", @@ -19377,21 +19043,32 @@ } }, "@babel/traverse": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.22.5.tgz", - "integrity": "sha512-7DuIjPgERaNo6r+PZwItpjCZEa5vyw4eJGufeLxrPdBXBoLcCJCIasvK6pK/9DVNrLZTLFhUGqaC6X/PA007TQ==", + "version": "7.22.8", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.22.8.tgz", + "integrity": "sha512-y6LPR+wpM2I3qJrsheCTwhIinzkETbplIgPBbwvqPKc+uljeA5gP+3nP8irdYt1mjQaDnlIcG+dw8OjAco4GXw==", "dev": true, "requires": { "@babel/code-frame": "^7.22.5", - "@babel/generator": "^7.22.5", + "@babel/generator": "^7.22.7", "@babel/helper-environment-visitor": "^7.22.5", "@babel/helper-function-name": "^7.22.5", "@babel/helper-hoist-variables": "^7.22.5", - "@babel/helper-split-export-declaration": "^7.22.5", - "@babel/parser": "^7.22.5", + "@babel/helper-split-export-declaration": "^7.22.6", + "@babel/parser": "^7.22.7", "@babel/types": "^7.22.5", "debug": "^4.1.0", "globals": "^11.1.0" + }, + "dependencies": { + "@babel/helper-split-export-declaration": { + "version": "7.22.6", + "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.22.6.tgz", + "integrity": "sha512-AsUnxuLhRYsisFiaJwvp1QF+I3KjD5FOxut14q/GzovUe6orHLesW2C7d754kRm53h5gqrz6sFl6sxc4BVtE/g==", + "dev": true, + "requires": { + "@babel/types": "^7.22.5" + } + } } }, "@babel/types": { @@ -19421,9 +19098,9 @@ } }, "@cypress/request": { - "version": "2.88.11", - "resolved": "https://registry.npmjs.org/@cypress/request/-/request-2.88.11.tgz", - "integrity": "sha512-M83/wfQ1EkspjkE2lNWNV5ui2Cv7UCv1swW1DqljahbzLVWltcsexQh8jYtuS/vzFXP+HySntGM83ZXA9fn17w==", + "version": "2.88.12", + "resolved": "https://registry.npmjs.org/@cypress/request/-/request-2.88.12.tgz", + "integrity": "sha512-tOn+0mDZxASFM+cuAP9szGUGPI1HwWVSvdzm7V4cCsPdFTx6qMj29CwaQmRAMIEhORIUBFBsYROYJcveK4uOjA==", "dev": true, "requires": { "aws-sign2": "~0.7.0", @@ -19441,107 +19118,21 @@ "performance-now": "^2.1.0", "qs": "~6.10.3", "safe-buffer": "^5.1.2", - "tough-cookie": "~2.5.0", + "tough-cookie": "^4.1.3", "tunnel-agent": "^0.6.0", "uuid": "^8.3.2" } }, "@cypress/schematic": { - "version": "1.7.0", - "resolved": "https://registry.npmjs.org/@cypress/schematic/-/schematic-1.7.0.tgz", - "integrity": "sha512-CouQrVlZ+uHVVBQtmNoMYU9LyoSAmQTOLDpVjrdTdMPpJH1mWnHCL5OCMt+FZLR+43KRiWEvDUjNqSza11oGsQ==", + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/@cypress/schematic/-/schematic-2.5.0.tgz", + "integrity": "sha512-Yt/fQxYIHl9lU8LSoJL92nIwTVyYG5uP4VqW4taTn3viVWvssjK7sRtTI/LRxOoeMYX2RRlXQyUbFEikByn0cQ==", "dev": true, "requires": { - "@angular-devkit/architect": "^0.1202.10", - "@angular-devkit/core": "^12.2.17", - "@angular-devkit/schematics": "^12.2.17", - "@schematics/angular": "^12.2.17", "jsonc-parser": "^3.0.0", "rxjs": "~6.6.0" }, "dependencies": { - "@angular-devkit/architect": { - "version": "0.1202.18", - "resolved": "https://registry.npmjs.org/@angular-devkit/architect/-/architect-0.1202.18.tgz", - "integrity": "sha512-C4ASKe+xBjl91MJyHDLt3z7ICPF9FU6B0CeJ1phwrlSHK9lmFG99WGxEj/Tc82+vHyPhajqS5XJ38KyVAPBGzA==", - "dev": true, - "requires": { - "@angular-devkit/core": "12.2.18", - "rxjs": "6.6.7" - } - }, - "@angular-devkit/core": { - "version": "12.2.18", - "resolved": "https://registry.npmjs.org/@angular-devkit/core/-/core-12.2.18.tgz", - "integrity": "sha512-GDLHGe9HEY5SRS+NrKr14C8aHsRCiBFkBFSSbeohgLgcgSXzZHFoU84nDWrl3KZNP8oqcUSv5lHu6dLcf2fnww==", - "dev": true, - "requires": { - "ajv": "8.6.2", - "ajv-formats": "2.1.0", - "fast-json-stable-stringify": "2.1.0", - "magic-string": "0.25.7", - "rxjs": "6.6.7", - "source-map": "0.7.3" - } - }, - "@angular-devkit/schematics": { - "version": "12.2.18", - "resolved": "https://registry.npmjs.org/@angular-devkit/schematics/-/schematics-12.2.18.tgz", - "integrity": "sha512-bZ9NS5PgoVfetRC6WeQBHCY5FqPZ9y2TKHUo12sOB2YSL3tgWgh1oXyP8PtX34gasqsLjNULxEQsAQYEsiX/qQ==", - "dev": true, - "requires": { - "@angular-devkit/core": "12.2.18", - "ora": "5.4.1", - "rxjs": "6.6.7" - } - }, - "@schematics/angular": { - "version": "12.2.18", - "resolved": "https://registry.npmjs.org/@schematics/angular/-/angular-12.2.18.tgz", - "integrity": "sha512-niRS9Ly9y8uI0YmTSbo8KpdqCCiZ/ATMZWeS2id5M8JZvfXbngwiqJvojdSol0SWU+n1W4iA+lJBdt4gSKlD5w==", - "dev": true, - "requires": { - "@angular-devkit/core": "12.2.18", - "@angular-devkit/schematics": "12.2.18", - "jsonc-parser": "3.0.0" - } - }, - "ajv": { - "version": "8.6.2", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.6.2.tgz", - "integrity": "sha512-9807RlWAgT564wT+DjeyU5OFMPjmzxVobvDFmNAhY+5zD6A2ly3jDp6sgnfyDtlIQ+7H97oc/DGCzzfu9rjw9w==", - "dev": true, - "requires": { - "fast-deep-equal": "^3.1.1", - "json-schema-traverse": "^1.0.0", - "require-from-string": "^2.0.2", - "uri-js": "^4.2.2" - } - }, - "ajv-formats": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/ajv-formats/-/ajv-formats-2.1.0.tgz", - "integrity": "sha512-USH2jBb+C/hIpwD2iRjp0pe0k+MvzG0mlSn/FIdCgQhUb9ALPRjt2KIQdfZDS9r0ZIeUAg7gOu9KL0PFqGqr5Q==", - "dev": true, - "requires": { - "ajv": "^8.0.0" - } - }, - "jsonc-parser": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/jsonc-parser/-/jsonc-parser-3.0.0.tgz", - "integrity": "sha512-fQzRfAbIBnR0IQvftw9FJveWiHp72Fg20giDrHz6TdfB12UH/uue0D3hm57UB5KgAVuniLMCaS8P1IMj9NR7cA==", - "dev": true - }, - "magic-string": { - "version": "0.25.7", - "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.25.7.tgz", - "integrity": "sha512-4CrMT5DOHTDk4HYDlzmwu4FVCcIYI8gauveasrdCu2IKIFOJ3f0v/8MDGJCDL9oD2ppz/Av1b0Nj345H9M+XIA==", - "dev": true, - "requires": { - "sourcemap-codec": "^1.4.4" - } - }, "rxjs": { "version": "6.6.7", "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.6.7.tgz", @@ -19551,12 +19142,6 @@ "tslib": "^1.9.0" } }, - "source-map": { - "version": "0.7.3", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.7.3.tgz", - "integrity": "sha512-CkCj6giN3S+n9qrYiBTX5gystlENnRW5jZeNLHpe6aue+SrHcG5VYwujhW9s4dY31mEGsxBDrHR6oI69fTXsaQ==", - "dev": true - }, "tslib": { "version": "1.14.1", "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", @@ -19756,20 +19341,20 @@ } }, "@eslint-community/regexpp": { - "version": "4.5.1", - "resolved": "https://registry.npmjs.org/@eslint-community/regexpp/-/regexpp-4.5.1.tgz", - "integrity": "sha512-Z5ba73P98O1KUYCCJTUeVpja9RcGoMdncZ6T49FCUl2lN38JtCJ+3WgIDBv0AuY4WChU5PmtJmOCTlN6FZTFKQ==", + "version": "4.6.2", + "resolved": "https://registry.npmjs.org/@eslint-community/regexpp/-/regexpp-4.6.2.tgz", + "integrity": "sha512-pPTNuaAG3QMH+buKyBIGJs3g/S5y0caxw0ygM3YyE6yJFySwiGGSzA+mM3KJ8QQvzeLh3blwgSonkFjgQdxzMw==", "dev": true }, "@eslint/eslintrc": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-2.0.3.tgz", - "integrity": "sha512-+5gy6OQfk+xx3q0d6jGZZC3f3KzAkXc/IanVxd1is/VIIziRqqt3ongQz0FiTUXqTk0c7aDB3OaFuKnuSoJicQ==", + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-2.1.1.tgz", + "integrity": "sha512-9t7ZA7NGGK8ckelF0PQCfcxIUzs1Md5rrO6U/c+FIQNanea5UZC0wqKXH4vHBccmu4ZJgZ2idtPeW7+Q2npOEA==", "dev": true, "requires": { "ajv": "^6.12.4", "debug": "^4.3.2", - "espree": "^9.5.2", + "espree": "^9.6.0", "globals": "^13.19.0", "ignore": "^5.2.0", "import-fresh": "^3.2.1", @@ -19829,9 +19414,9 @@ } }, "@eslint/js": { - "version": "8.43.0", - "resolved": "https://registry.npmjs.org/@eslint/js/-/js-8.43.0.tgz", - "integrity": "sha512-s2UHCoiXfxMvmfzqoN+vrQ84ahUSYde9qNO1MdxmoEhyHWsfmwOpFlwYV+ePJEVc7gFnATGUi376WowX1N7tFg==", + "version": "8.46.0", + "resolved": "https://registry.npmjs.org/@eslint/js/-/js-8.46.0.tgz", + "integrity": "sha512-a8TLtmPi8xzPkCbp/OGFUo5yhRkHM2Ko9kOWP4znJr0WAhWyThaw3PnwX4vOTWOAMsV2uRt32PPDcEz63esSaA==", "dev": true }, "@humanwhocodes/config-array": { @@ -19965,9 +19550,9 @@ "dev": true }, "@jridgewell/source-map": { - "version": "0.3.3", - "resolved": "https://registry.npmjs.org/@jridgewell/source-map/-/source-map-0.3.3.tgz", - "integrity": "sha512-b+fsZXeLYi9fEULmfBrhxn4IrPlINf8fiNarzTof004v3lFdntdwa9PF7vFJqm3mg7s+ScJMxXaE3Acp1irZcg==", + "version": "0.3.5", + "resolved": "https://registry.npmjs.org/@jridgewell/source-map/-/source-map-0.3.5.tgz", + "integrity": "sha512-UTYAUj/wviwdsMfzoSJspJxbkH5o1snzwX0//0ENX1u/55kkZZkcTZP6u9bwKGkv+dkk9at4m1Cpt0uY80kcpQ==", "dev": true, "requires": { "@jridgewell/gen-mapping": "^0.3.0", @@ -20005,25 +19590,25 @@ "dev": true }, "@ngrx/effects": { - "version": "16.0.1", - "resolved": "https://registry.npmjs.org/@ngrx/effects/-/effects-16.0.1.tgz", - "integrity": "sha512-hpmON8p7kT44jIiruLBy3raFkYhNzQ45was0puKPkGhv41VrAoo44UcEn4Aysdx5yHaJc/CMCtI/+emFIpqgGA==", + "version": "16.1.0", + "resolved": "https://registry.npmjs.org/@ngrx/effects/-/effects-16.1.0.tgz", + "integrity": "sha512-sdLzxjdQcYht3SYiuhchF4uOxxZIy3h9TEoyVp6PZJmiLJqhMAmV9/+s3tPD7yKd4+4o4n+HeiLDOTlMxn3Bxg==", "requires": { "tslib": "^2.0.0" } }, "@ngrx/store": { - "version": "16.0.1", - "resolved": "https://registry.npmjs.org/@ngrx/store/-/store-16.0.1.tgz", - "integrity": "sha512-KkYzF3j29qKOzHcmiArRJgT+ABLqbddj1DuxerNq3A8zWnTDdC4YgNpDOKru8hQWb3pQ77ZbglLati5K9F8HnQ==", + "version": "16.1.0", + "resolved": "https://registry.npmjs.org/@ngrx/store/-/store-16.1.0.tgz", + "integrity": "sha512-cGwI5wy+irIudQubfrbaKrDbJxCvu+lZYlBmsOlpzevQLCa+ZjNLrN05J025P3KvUmfzX4StEpAc8Ord089Kig==", "requires": { "tslib": "^2.0.0" } }, "@ngtools/webpack": { - "version": "16.1.3", - "resolved": "https://registry.npmjs.org/@ngtools/webpack/-/webpack-16.1.3.tgz", - "integrity": "sha512-YTL1RzP7ErJqskx+ZwdC/nWsOSBfC4yYWmMyWL2J0d+oJ3N2XIzrKVoDcZ4IVzv3Du+3zoGp0ups/wWXvfzM/Q==", + "version": "16.1.7", + "resolved": "https://registry.npmjs.org/@ngtools/webpack/-/webpack-16.1.7.tgz", + "integrity": "sha512-VRFH8crY969hKLIkYJKUuWjNIRCssq4QkKlUK4LCOLMd/xKNzl4H4EOsASKAQbBz58y6IUyh6b4utqMZ+oSTxA==", "dev": true, "requires": {} }, @@ -20156,123 +19741,104 @@ } }, "@nrwl/devkit": { - "version": "16.2.2", - "resolved": "https://registry.npmjs.org/@nrwl/devkit/-/devkit-16.2.2.tgz", - "integrity": "sha512-R8OSh33HtGycSuu0KshpH/tsTdi6j4w7DuIb+Sa59UDIkchpvMeNAz8tj/05Z2tTntDZnYqPkmCs6rkZ4PvY4Q==", + "version": "16.5.1", + "resolved": "https://registry.npmjs.org/@nrwl/devkit/-/devkit-16.5.1.tgz", + "integrity": "sha512-NB+DE/+AFJ7lKH/WBFyatJEhcZGj25F24ncDkwjZ6MzEiSOGOJS0LaV/R+VUsmS5EHTPXYOpn3zHWWAcJhyOmA==", "dev": true, "requires": { - "@nx/devkit": "16.2.2" + "@nx/devkit": "16.5.1" } }, "@nrwl/tao": { - "version": "16.2.2", - "resolved": "https://registry.npmjs.org/@nrwl/tao/-/tao-16.2.2.tgz", - "integrity": "sha512-cPj6b+wSWs2WNFQ0p1fMyrvSLjkKJo7vXQTtd7MXNJT2NWEZdCtRy+nidZzjs7gKvVXGdZ8zDBXmCHWorOieXw==", - "dev": true, - "requires": { - "nx": "16.2.2" - } - }, - "@nx/devkit": { - "version": "16.2.2", - "resolved": "https://registry.npmjs.org/@nx/devkit/-/devkit-16.2.2.tgz", - "integrity": "sha512-MTYzetk4AQ9u2syEb9z+drDsu6U6NRAXVuUDMNg0tpZcbtE9bCSLH2ngfvTCqmLrAMBsJZRdv0twS1iepMhlAg==", - "dev": true, - "requires": { - "@nrwl/devkit": "16.2.2", - "ejs": "^3.1.7", - "ignore": "^5.0.4", - "semver": "7.3.4", - "tmp": "~0.2.1", - "tslib": "^2.3.0" - }, - "dependencies": { - "lru-cache": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", - "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", - "dev": true, - "requires": { - "yallist": "^4.0.0" - } - }, - "semver": { - "version": "7.3.4", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.4.tgz", - "integrity": "sha512-tCfb2WLjqFAtXn4KEdxIhalnRtoKFN7nAwj0B3ZXCbQloV2tq5eDbcTmT68JJD3nRJq24/XgxtQKFIpQdtvmVw==", - "dev": true, - "requires": { - "lru-cache": "^6.0.0" - } - }, - "yallist": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", - "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", - "dev": true - } + "version": "16.5.1", + "resolved": "https://registry.npmjs.org/@nrwl/tao/-/tao-16.5.1.tgz", + "integrity": "sha512-x+gi/fKdM6uQNIti9exFlm3V5LBP3Y8vOEziO42HdOigyrXa0S0HD2WMpccmp6PclYKhwEDUjKJ39xh5sdh4Ig==", + "dev": true, + "requires": { + "nx": "16.5.1" + } + }, + "@nx/devkit": { + "version": "16.5.1", + "resolved": "https://registry.npmjs.org/@nx/devkit/-/devkit-16.5.1.tgz", + "integrity": "sha512-T1acZrVVmJw/sJ4PIGidCBYBiBqlg/jT9e8nIGXLSDS20xcLvfo4zBQf8UZLrmHglnwwpDpOWuVJCp2rYA5aDg==", + "dev": true, + "requires": { + "@nrwl/devkit": "16.5.1", + "ejs": "^3.1.7", + "ignore": "^5.0.4", + "semver": "7.5.3", + "tmp": "~0.2.1", + "tslib": "^2.3.0" } }, "@nx/nx-darwin-arm64": { - "version": "16.2.2", - "resolved": "https://registry.npmjs.org/@nx/nx-darwin-arm64/-/nx-darwin-arm64-16.2.2.tgz", - "integrity": "sha512-CKfyLl92mhWqpv1hRTj3WgjVBY6yj3Et5T31m1N0assNWdTfuSB4ycdWzdlxXHx3yptnTOD/FCymTpUQI0GZRQ==", + "version": "16.5.1", + "resolved": "https://registry.npmjs.org/@nx/nx-darwin-arm64/-/nx-darwin-arm64-16.5.1.tgz", + "integrity": "sha512-q98TFI4B/9N9PmKUr1jcbtD4yAFs1HfYd9jUXXTQOlfO9SbDjnrYJgZ4Fp9rMNfrBhgIQ4x1qx0AukZccKmH9Q==", "dev": true, "optional": true }, "@nx/nx-darwin-x64": { - "version": "16.2.2", - "resolved": "https://registry.npmjs.org/@nx/nx-darwin-x64/-/nx-darwin-x64-16.2.2.tgz", - "integrity": "sha512-++uDfp/Oo8DDVU53DiJVkRNjNbOLzahDH6dINeA/3yTCU/IS0wXoaoclNZBReMWlDKTVvWgLF/eSbGINMqUHRg==", + "version": "16.5.1", + "resolved": "https://registry.npmjs.org/@nx/nx-darwin-x64/-/nx-darwin-x64-16.5.1.tgz", + "integrity": "sha512-j9HmL1l8k7EVJ3eOM5y8COF93gqrydpxCDoz23ZEtsY+JHY77VAiRQsmqBgEx9GGA2dXi9VEdS67B0+1vKariw==", + "dev": true, + "optional": true + }, + "@nx/nx-freebsd-x64": { + "version": "16.5.1", + "resolved": "https://registry.npmjs.org/@nx/nx-freebsd-x64/-/nx-freebsd-x64-16.5.1.tgz", + "integrity": "sha512-CXSPT01aVS869tvCCF2tZ7LnCa8l41wJ3mTVtWBkjmRde68E5Up093hklRMyXb3kfiDYlfIKWGwrV4r0eH6x1A==", "dev": true, "optional": true }, "@nx/nx-linux-arm-gnueabihf": { - "version": "16.2.2", - "resolved": "https://registry.npmjs.org/@nx/nx-linux-arm-gnueabihf/-/nx-linux-arm-gnueabihf-16.2.2.tgz", - "integrity": "sha512-A4XFk63Q7fxgZaHnigIeofp/xOT2ZGDoNUyzld+UTlyJyNcClcOcqrro74aKOCG7PH0D56oE06JW3g7GKszgsA==", + "version": "16.5.1", + "resolved": "https://registry.npmjs.org/@nx/nx-linux-arm-gnueabihf/-/nx-linux-arm-gnueabihf-16.5.1.tgz", + "integrity": "sha512-BhrumqJSZCWFfLFUKl4CAUwR0Y0G2H5EfFVGKivVecEQbb+INAek1aa6c89evg2/OvetQYsJ+51QknskwqvLsA==", "dev": true, "optional": true }, "@nx/nx-linux-arm64-gnu": { - "version": "16.2.2", - "resolved": "https://registry.npmjs.org/@nx/nx-linux-arm64-gnu/-/nx-linux-arm64-gnu-16.2.2.tgz", - "integrity": "sha512-aQpTLVSawFVr33pBWjj8elqvjA5uWvzDW7hGaFQPgWgmjxrtJikIAkcLjfNOz8XYjRAP4OZkTVh4/E3GUch0kQ==", + "version": "16.5.1", + "resolved": "https://registry.npmjs.org/@nx/nx-linux-arm64-gnu/-/nx-linux-arm64-gnu-16.5.1.tgz", + "integrity": "sha512-x7MsSG0W+X43WVv7JhiSq2eKvH2suNKdlUHEG09Yt0vm3z0bhtym1UCMUg3IUAK7jy9hhLeDaFVFkC6zo+H/XQ==", "dev": true, "optional": true }, "@nx/nx-linux-arm64-musl": { - "version": "16.2.2", - "resolved": "https://registry.npmjs.org/@nx/nx-linux-arm64-musl/-/nx-linux-arm64-musl-16.2.2.tgz", - "integrity": "sha512-20vyNYQ2SYSaWdxORj9HdOyGxiqE8SauaFiBjjid6/e5mSyaSKu+HHGsvhDUqzlWn3OaABKBqx0iYa9Kmf3BOQ==", + "version": "16.5.1", + "resolved": "https://registry.npmjs.org/@nx/nx-linux-arm64-musl/-/nx-linux-arm64-musl-16.5.1.tgz", + "integrity": "sha512-J+/v/mFjOm74I0PNtH5Ka+fDd+/dWbKhpcZ2R1/6b9agzZk+Ff/SrwJcSYFXXWKbPX+uQ4RcJoytT06Zs3s0ow==", "dev": true, "optional": true }, "@nx/nx-linux-x64-gnu": { - "version": "16.2.2", - "resolved": "https://registry.npmjs.org/@nx/nx-linux-x64-gnu/-/nx-linux-x64-gnu-16.2.2.tgz", - "integrity": "sha512-0G8kYpEmGHD+tT7RvUEvVXvPbvQD9GfEjeWEzZAdNAAMJu7JFjIo/oZDJYV7cMvXnC+tbpI9Gba5xfv8Al95eA==", + "version": "16.5.1", + "resolved": "https://registry.npmjs.org/@nx/nx-linux-x64-gnu/-/nx-linux-x64-gnu-16.5.1.tgz", + "integrity": "sha512-igooWJ5YxQ94Zft7IqgL+Lw0qHaY15Btw4gfK756g/YTYLZEt4tTvR1y6RnK/wdpE3sa68bFTLVBNCGTyiTiDQ==", "dev": true, "optional": true }, "@nx/nx-linux-x64-musl": { - "version": "16.2.2", - "resolved": "https://registry.npmjs.org/@nx/nx-linux-x64-musl/-/nx-linux-x64-musl-16.2.2.tgz", - "integrity": "sha512-Incv7DbKLfh6kakzMBuy6GYRgI+jEdZBRiFw0GoN9EsknmrPT/URn+w6uuicGGEXOLYpO3HUO3E374+b5Wz2zg==", + "version": "16.5.1", + "resolved": "https://registry.npmjs.org/@nx/nx-linux-x64-musl/-/nx-linux-x64-musl-16.5.1.tgz", + "integrity": "sha512-zF/exnPqFYbrLAduGhTmZ7zNEyADid2bzNQiIjJkh8Y6NpDwrQIwVIyvIxqynsjMrIs51kBH+8TUjKjj2Jgf5A==", "dev": true, "optional": true }, "@nx/nx-win32-arm64-msvc": { - "version": "16.2.2", - "resolved": "https://registry.npmjs.org/@nx/nx-win32-arm64-msvc/-/nx-win32-arm64-msvc-16.2.2.tgz", - "integrity": "sha512-8m+Usj9faCl0pdQLFeBGhbYUObT3/tno5oGMPtJLyRjITNvTZAaIS4FFctp/rwJPehDBRQsUxwMJ2JRaU4jQdA==", + "version": "16.5.1", + "resolved": "https://registry.npmjs.org/@nx/nx-win32-arm64-msvc/-/nx-win32-arm64-msvc-16.5.1.tgz", + "integrity": "sha512-qtqiLS9Y9TYyAbbpq58kRoOroko4ZXg5oWVqIWFHoxc5bGPweQSJCROEqd1AOl2ZDC6BxfuVHfhDDop1kK05WA==", "dev": true, "optional": true }, "@nx/nx-win32-x64-msvc": { - "version": "16.2.2", - "resolved": "https://registry.npmjs.org/@nx/nx-win32-x64-msvc/-/nx-win32-x64-msvc-16.2.2.tgz", - "integrity": "sha512-liHtyVVOttcqHIV3Xrg/1AJzEgfiOCeqJsleHXHGgPr1fxPx7SIZaa3/QnDY1lNMN+t6Gvj0/r2Ba3iuptYD3Q==", + "version": "16.5.1", + "resolved": "https://registry.npmjs.org/@nx/nx-win32-x64-msvc/-/nx-win32-x64-msvc-16.5.1.tgz", + "integrity": "sha512-kUJBLakK7iyA9WfsGGQBVennA4jwf5XIgm0lu35oMOphtZIluvzItMt0EYBmylEROpmpEIhHq0P6J9FA+WH0Rg==", "dev": true, "optional": true }, @@ -20299,16 +19865,16 @@ "integrity": "sha512-P1st0aksCrn9sGZhp8GMYwBnQsbvAWsZAX44oXNNvLHGqAOcoVxmjZiohstwQ7SqKnbR47akdNi+uleWD8+g6A==" }, "@puppeteer/browsers": { - "version": "1.4.3", - "resolved": "https://registry.npmjs.org/@puppeteer/browsers/-/browsers-1.4.3.tgz", - "integrity": "sha512-8Jfkpb8qhPQhMsNBmIY8b6+ic2kvcmHZlyvifmcNKBC5jNZf3MAKq3gryKfmrjFAYFl3naPjiKljPUq5wuolfQ==", + "version": "1.4.6", + "resolved": "https://registry.npmjs.org/@puppeteer/browsers/-/browsers-1.4.6.tgz", + "integrity": "sha512-x4BEjr2SjOPowNeiguzjozQbsc6h437ovD/wu+JpaenxVLm3jkgzHY2xOslMTp50HoTvQreMjiexiGQw1sqZlQ==", "dev": true, "requires": { "debug": "4.3.4", "extract-zip": "2.0.1", "progress": "2.0.3", - "proxy-agent": "6.2.1", - "tar-fs": "3.0.3", + "proxy-agent": "6.3.0", + "tar-fs": "3.0.4", "unbzip2-stream": "1.4.3", "yargs": "17.7.1" }, @@ -20342,13 +19908,13 @@ } }, "@schematics/angular": { - "version": "16.1.3", - "resolved": "https://registry.npmjs.org/@schematics/angular/-/angular-16.1.3.tgz", - "integrity": "sha512-bNSxCLf6f+/dsQ1k3PhcZhrC/qgJSCpM6h3m6ATpjR+tYW/v7WR1OyE5r3DQmDe7NJSazBvpbrRtg8xjRsMzvw==", + "version": "16.1.7", + "resolved": "https://registry.npmjs.org/@schematics/angular/-/angular-16.1.7.tgz", + "integrity": "sha512-ynMh1o24ImTyHDsrwWzMwxIb5VUgk22ZD3SgcQ8I9ZSSPiFyCzNrbwz20+WqUfVtT0nsI+LWw9UaGPgwCLZnBQ==", "dev": true, "requires": { - "@angular-devkit/core": "16.1.3", - "@angular-devkit/schematics": "16.1.3", + "@angular-devkit/core": "16.1.7", + "@angular-devkit/schematics": "16.1.7", "jsonc-parser": "3.2.0" } }, @@ -20459,21 +20025,29 @@ } } }, + "@sigstore/bundle": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/@sigstore/bundle/-/bundle-1.0.0.tgz", + "integrity": "sha512-yLvrWDOh6uMOUlFCTJIZEnwOT9Xte7NPXUqVexEKGSF5XtBAuSg5du0kn3dRR0p47a4ah10Y0mNt8+uyeQXrBQ==", + "dev": true, + "requires": { + "@sigstore/protobuf-specs": "^0.2.0" + } + }, "@sigstore/protobuf-specs": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/@sigstore/protobuf-specs/-/protobuf-specs-0.1.0.tgz", - "integrity": "sha512-a31EnjuIDSX8IXBUib3cYLDRlPMU36AWX4xS8ysLaNu4ZzUesDiPt83pgrW2X1YLMe5L2HbDyaKK5BrL4cNKaQ==", + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/@sigstore/protobuf-specs/-/protobuf-specs-0.2.0.tgz", + "integrity": "sha512-8ZhZKAVfXjIspDWwm3D3Kvj0ddbJ0HqDZ/pOs5cx88HpT8mVsotFrg7H1UMnXOuDHz6Zykwxn4mxG3QLuN+RUg==", "dev": true }, "@sigstore/tuf": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/@sigstore/tuf/-/tuf-1.0.0.tgz", - "integrity": "sha512-bLzi9GeZgMCvjJeLUIfs8LJYCxrPRA8IXQkzUtaFKKVPTz0mucRyqFcV2U20yg9K+kYAD0YSitzGfRZCFLjdHQ==", + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/@sigstore/tuf/-/tuf-1.0.3.tgz", + "integrity": "sha512-2bRovzs0nJZFlCN3rXirE4gwxCn97JNjMmwpecqlbgV9WcxX7WRuIrgzx/X7Ib7MYRbyUTpBYE0s2x6AmZXnlg==", "dev": true, "requires": { - "@sigstore/protobuf-specs": "^0.1.0", - "make-fetch-happen": "^11.0.1", - "tuf-js": "^1.1.3" + "@sigstore/protobuf-specs": "^0.2.0", + "tuf-js": "^1.1.7" } }, "@socket.io/component-emitter": { @@ -20488,6 +20062,12 @@ "integrity": "sha512-XCuKFP5PS55gnMVu3dty8KPatLqUoy/ZYzDzAGCQ8JNFCkLXzmI7vNHCR+XpbZaMWQK/vQubr7PkYq8g470J/A==", "dev": true }, + "@tootallnate/quickjs-emscripten": { + "version": "0.23.0", + "resolved": "https://registry.npmjs.org/@tootallnate/quickjs-emscripten/-/quickjs-emscripten-0.23.0.tgz", + "integrity": "sha512-C5Mc6rdnsaJDjO3UpGW/CQTHtCKaYlScZTly4JIu97Jxo/odCiH0ITnDXSJPTOrEKk/ycSZ0AOgTmkDtkOsvIA==", + "dev": true + }, "@tufjs/canonical-json": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/@tufjs/canonical-json/-/canonical-json-1.0.0.tgz", @@ -20514,9 +20094,9 @@ } }, "minimatch": { - "version": "9.0.2", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.2.tgz", - "integrity": "sha512-PZOT9g5v2ojiTL7r1xF6plNHLtOeTpSlDI007As2NlA2aYBMfVom17yqa6QzhmDP8QOhn7LjHTg7DFCVSSa6yg==", + "version": "9.0.3", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.3.tgz", + "integrity": "sha512-RHiac9mvaRw0x3AYRgDC1CxAP7HTcNrrECeA8YYJeWnpo+2Q5CegtZjaotWTWxDG3UeGA1coE05iH1mPjT/2mg==", "dev": true, "requires": { "brace-expansion": "^2.0.1" @@ -20578,9 +20158,9 @@ } }, "@types/eslint": { - "version": "8.40.2", - "resolved": "https://registry.npmjs.org/@types/eslint/-/eslint-8.40.2.tgz", - "integrity": "sha512-PRVjQ4Eh9z9pmmtaq8nTjZjQwKFk7YIHIud3lRoKRBgUQjgjRmoGxxGEPXQkF+lH7QkHJRNr5F4aBgYCW0lqpQ==", + "version": "8.44.1", + "resolved": "https://registry.npmjs.org/@types/eslint/-/eslint-8.44.1.tgz", + "integrity": "sha512-XpNDc4Z5Tb4x+SW1MriMVeIsMoONHCkWFMkR/aPJbzEsxqHy+4Glu/BqTdPrApfDeMaXbtNh6bseNgl5KaWrSg==", "dev": true, "requires": { "@types/estree": "*", @@ -20673,9 +20253,9 @@ "dev": true }, "@types/lodash": { - "version": "4.14.195", - "resolved": "https://registry.npmjs.org/@types/lodash/-/lodash-4.14.195.tgz", - "integrity": "sha512-Hwx9EUgdwf2GLarOjQp5ZH8ZmblzcbTBC2wtQWNKARBSxM9ezRIAUpeDTgoQRAFB0+8CNWXVA9+MaSOzOF3nPg==", + "version": "4.14.196", + "resolved": "https://registry.npmjs.org/@types/lodash/-/lodash-4.14.196.tgz", + "integrity": "sha512-22y3o88f4a94mKljsZcanlNWPzO0uBsBdzLAngf2tp533LzZcQzb6+eZPJ+vCTt+bqF2XnvT9gejTLsAcJAJyQ==", "dev": true }, "@types/luxon": { @@ -20789,150 +20369,71 @@ } }, "@typescript-eslint/eslint-plugin": { - "version": "5.60.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-5.60.1.tgz", - "integrity": "sha512-KSWsVvsJsLJv3c4e73y/Bzt7OpqMCADUO846bHcuWYSYM19bldbAeDv7dYyV0jwkbMfJ2XdlzwjhXtuD7OY6bw==", + "version": "5.62.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-5.62.0.tgz", + "integrity": "sha512-TiZzBSJja/LbhNPvk6yc0JrX9XqhQ0hdh6M2svYfsHGejaKFIAGd9MQ+ERIMzLGlN/kZoYIgdxFV0PuljTKXag==", "dev": true, "requires": { "@eslint-community/regexpp": "^4.4.0", - "@typescript-eslint/scope-manager": "5.60.1", - "@typescript-eslint/type-utils": "5.60.1", - "@typescript-eslint/utils": "5.60.1", + "@typescript-eslint/scope-manager": "5.62.0", + "@typescript-eslint/type-utils": "5.62.0", + "@typescript-eslint/utils": "5.62.0", "debug": "^4.3.4", - "grapheme-splitter": "^1.0.4", + "graphemer": "^1.4.0", "ignore": "^5.2.0", "natural-compare-lite": "^1.4.0", "semver": "^7.3.7", "tsutils": "^3.21.0" - }, - "dependencies": { - "@typescript-eslint/type-utils": { - "version": "5.60.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-5.60.1.tgz", - "integrity": "sha512-vN6UztYqIu05nu7JqwQGzQKUJctzs3/Hg7E2Yx8rz9J+4LgtIDFWjjl1gm3pycH0P3mHAcEUBd23LVgfrsTR8A==", - "dev": true, - "requires": { - "@typescript-eslint/typescript-estree": "5.60.1", - "@typescript-eslint/utils": "5.60.1", - "debug": "^4.3.4", - "tsutils": "^3.21.0" - } - }, - "@typescript-eslint/utils": { - "version": "5.60.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-5.60.1.tgz", - "integrity": "sha512-tiJ7FFdFQOWssFa3gqb94Ilexyw0JVxj6vBzaSpfN/8IhoKkDuSAenUKvsSHw2A/TMpJb26izIszTXaqygkvpQ==", - "dev": true, - "requires": { - "@eslint-community/eslint-utils": "^4.2.0", - "@types/json-schema": "^7.0.9", - "@types/semver": "^7.3.12", - "@typescript-eslint/scope-manager": "5.60.1", - "@typescript-eslint/types": "5.60.1", - "@typescript-eslint/typescript-estree": "5.60.1", - "eslint-scope": "^5.1.1", - "semver": "^7.3.7" - } - }, - "eslint-scope": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.1.1.tgz", - "integrity": "sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==", - "dev": true, - "requires": { - "esrecurse": "^4.3.0", - "estraverse": "^4.1.1" - } - }, - "estraverse": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz", - "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==", - "dev": true - } } }, "@typescript-eslint/parser": { - "version": "5.60.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-5.60.1.tgz", - "integrity": "sha512-pHWlc3alg2oSMGwsU/Is8hbm3XFbcrb6P5wIxcQW9NsYBfnrubl/GhVVD/Jm/t8HXhA2WncoIRfBtnCgRGV96Q==", + "version": "5.62.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-5.62.0.tgz", + "integrity": "sha512-VlJEV0fOQ7BExOsHYAGrgbEiZoi8D+Bl2+f6V2RrXerRSylnp+ZBHmPvaIa8cz0Ajx7WO7Z5RqfgYg7ED1nRhA==", "dev": true, "requires": { - "@typescript-eslint/scope-manager": "5.60.1", - "@typescript-eslint/types": "5.60.1", - "@typescript-eslint/typescript-estree": "5.60.1", + "@typescript-eslint/scope-manager": "5.62.0", + "@typescript-eslint/types": "5.62.0", + "@typescript-eslint/typescript-estree": "5.62.0", "debug": "^4.3.4" } }, "@typescript-eslint/scope-manager": { - "version": "5.60.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-5.60.1.tgz", - "integrity": "sha512-Dn/LnN7fEoRD+KspEOV0xDMynEmR3iSHdgNsarlXNLGGtcUok8L4N71dxUgt3YvlO8si7E+BJ5Fe3wb5yUw7DQ==", + "version": "5.62.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-5.62.0.tgz", + "integrity": "sha512-VXuvVvZeQCQb5Zgf4HAxc04q5j+WrNAtNh9OwCsCgpKqESMTu3tF/jhZ3xG6T4NZwWl65Bg8KuS2uEvhSfLl0w==", "dev": true, "requires": { - "@typescript-eslint/types": "5.60.1", - "@typescript-eslint/visitor-keys": "5.60.1" + "@typescript-eslint/types": "5.62.0", + "@typescript-eslint/visitor-keys": "5.62.0" } }, "@typescript-eslint/type-utils": { - "version": "5.59.7", - "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-5.59.7.tgz", - "integrity": "sha512-ozuz/GILuYG7osdY5O5yg0QxXUAEoI4Go3Do5xeu+ERH9PorHBPSdvD3Tjp2NN2bNLh1NJQSsQu2TPu/Ly+HaQ==", + "version": "5.62.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-5.62.0.tgz", + "integrity": "sha512-xsSQreu+VnfbqQpW5vnCJdq1Z3Q0U31qiWmRhr98ONQmcp/yhiPJFPq8MXiJVLiksmOKSjIldZzkebzHuCGzew==", "dev": true, "requires": { - "@typescript-eslint/typescript-estree": "5.59.7", - "@typescript-eslint/utils": "5.59.7", + "@typescript-eslint/typescript-estree": "5.62.0", + "@typescript-eslint/utils": "5.62.0", "debug": "^4.3.4", "tsutils": "^3.21.0" - }, - "dependencies": { - "@typescript-eslint/types": { - "version": "5.59.7", - "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-5.59.7.tgz", - "integrity": "sha512-UnVS2MRRg6p7xOSATscWkKjlf/NDKuqo5TdbWck6rIRZbmKpVNTLALzNvcjIfHBE7736kZOFc/4Z3VcZwuOM/A==", - "dev": true - }, - "@typescript-eslint/typescript-estree": { - "version": "5.59.7", - "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-5.59.7.tgz", - "integrity": "sha512-4A1NtZ1I3wMN2UGDkU9HMBL+TIQfbrh4uS0WDMMpf3xMRursDbqEf1ahh6vAAe3mObt8k3ZATnezwG4pdtWuUQ==", - "dev": true, - "requires": { - "@typescript-eslint/types": "5.59.7", - "@typescript-eslint/visitor-keys": "5.59.7", - "debug": "^4.3.4", - "globby": "^11.1.0", - "is-glob": "^4.0.3", - "semver": "^7.3.7", - "tsutils": "^3.21.0" - } - }, - "@typescript-eslint/visitor-keys": { - "version": "5.59.7", - "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-5.59.7.tgz", - "integrity": "sha512-tyN+X2jvMslUszIiYbF0ZleP+RqQsFVpGrKI6e0Eet1w8WmhsAtmzaqm8oM8WJQ1ysLwhnsK/4hYHJjOgJVfQQ==", - "dev": true, - "requires": { - "@typescript-eslint/types": "5.59.7", - "eslint-visitor-keys": "^3.3.0" - } - } } }, "@typescript-eslint/types": { - "version": "5.60.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-5.60.1.tgz", - "integrity": "sha512-zDcDx5fccU8BA0IDZc71bAtYIcG9PowaOwaD8rjYbqwK7dpe/UMQl3inJ4UtUK42nOCT41jTSCwg76E62JpMcg==", + "version": "5.62.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-5.62.0.tgz", + "integrity": "sha512-87NVngcbVXUahrRTqIK27gD2t5Cu1yuCXxbLcFtCzZGlfyVWWh8mLHkoxzjsB6DDNnvdL+fW8MiwPEJyGJQDgQ==", "dev": true }, "@typescript-eslint/typescript-estree": { - "version": "5.60.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-5.60.1.tgz", - "integrity": "sha512-hkX70J9+2M2ZT6fhti5Q2FoU9zb+GeZK2SLP1WZlvUDqdMbEKhexZODD1WodNRyO8eS+4nScvT0dts8IdaBzfw==", + "version": "5.62.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-5.62.0.tgz", + "integrity": "sha512-CmcQ6uY7b9y694lKdRB8FEel7JbU/40iSAPomu++SjLMntB+2Leay2LO6i8VnJk58MtE9/nQSFIH6jpyRWyYzA==", "dev": true, "requires": { - "@typescript-eslint/types": "5.60.1", - "@typescript-eslint/visitor-keys": "5.60.1", + "@typescript-eslint/types": "5.62.0", + "@typescript-eslint/visitor-keys": "5.62.0", "debug": "^4.3.4", "globby": "^11.1.0", "is-glob": "^4.0.3", @@ -20941,62 +20442,21 @@ } }, "@typescript-eslint/utils": { - "version": "5.59.7", - "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-5.59.7.tgz", - "integrity": "sha512-yCX9WpdQKaLufz5luG4aJbOpdXf/fjwGMcLFXZVPUz3QqLirG5QcwwnIHNf8cjLjxK4qtzTO8udUtMQSAToQnQ==", + "version": "5.62.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-5.62.0.tgz", + "integrity": "sha512-n8oxjeb5aIbPFEtmQxQYOLI0i9n5ySBEY/ZEHHZqKQSFnxio1rv6dthascc9dLuwrL0RC5mPCxB7vnAVGAYWAQ==", "dev": true, "requires": { "@eslint-community/eslint-utils": "^4.2.0", "@types/json-schema": "^7.0.9", "@types/semver": "^7.3.12", - "@typescript-eslint/scope-manager": "5.59.7", - "@typescript-eslint/types": "5.59.7", - "@typescript-eslint/typescript-estree": "5.59.7", + "@typescript-eslint/scope-manager": "5.62.0", + "@typescript-eslint/types": "5.62.0", + "@typescript-eslint/typescript-estree": "5.62.0", "eslint-scope": "^5.1.1", "semver": "^7.3.7" }, "dependencies": { - "@typescript-eslint/scope-manager": { - "version": "5.59.7", - "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-5.59.7.tgz", - "integrity": "sha512-FL6hkYWK9zBGdxT2wWEd2W8ocXMu3K94i3gvMrjXpx+koFYdYV7KprKfirpgY34vTGzEPPuKoERpP8kD5h7vZQ==", - "dev": true, - "requires": { - "@typescript-eslint/types": "5.59.7", - "@typescript-eslint/visitor-keys": "5.59.7" - } - }, - "@typescript-eslint/types": { - "version": "5.59.7", - "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-5.59.7.tgz", - "integrity": "sha512-UnVS2MRRg6p7xOSATscWkKjlf/NDKuqo5TdbWck6rIRZbmKpVNTLALzNvcjIfHBE7736kZOFc/4Z3VcZwuOM/A==", - "dev": true - }, - "@typescript-eslint/typescript-estree": { - "version": "5.59.7", - "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-5.59.7.tgz", - "integrity": "sha512-4A1NtZ1I3wMN2UGDkU9HMBL+TIQfbrh4uS0WDMMpf3xMRursDbqEf1ahh6vAAe3mObt8k3ZATnezwG4pdtWuUQ==", - "dev": true, - "requires": { - "@typescript-eslint/types": "5.59.7", - "@typescript-eslint/visitor-keys": "5.59.7", - "debug": "^4.3.4", - "globby": "^11.1.0", - "is-glob": "^4.0.3", - "semver": "^7.3.7", - "tsutils": "^3.21.0" - } - }, - "@typescript-eslint/visitor-keys": { - "version": "5.59.7", - "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-5.59.7.tgz", - "integrity": "sha512-tyN+X2jvMslUszIiYbF0ZleP+RqQsFVpGrKI6e0Eet1w8WmhsAtmzaqm8oM8WJQ1ysLwhnsK/4hYHJjOgJVfQQ==", - "dev": true, - "requires": { - "@typescript-eslint/types": "5.59.7", - "eslint-visitor-keys": "^3.3.0" - } - }, "eslint-scope": { "version": "5.1.1", "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.1.1.tgz", @@ -21016,12 +20476,12 @@ } }, "@typescript-eslint/visitor-keys": { - "version": "5.60.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-5.60.1.tgz", - "integrity": "sha512-xEYIxKcultP6E/RMKqube11pGjXH1DCo60mQoWhVYyKfLkwbIVVjYxmOenNMxILx0TjCujPTjjnTIVzm09TXIw==", + "version": "5.62.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-5.62.0.tgz", + "integrity": "sha512-07ny+LHRzQXepkGg6w0mFY41fVUNBrL2Roj/++7V1txKugfjm/Ci/qSND03r2RhlJhJYMcTn9AhhSSqQp0Ysyw==", "dev": true, "requires": { - "@typescript-eslint/types": "5.60.1", + "@typescript-eslint/types": "5.62.0", "eslint-visitor-keys": "^3.3.0" } }, @@ -21190,9 +20650,9 @@ "dev": true }, "@yarnpkg/parsers": { - "version": "3.0.0-rc.47.1", - "resolved": "https://registry.npmjs.org/@yarnpkg/parsers/-/parsers-3.0.0-rc.47.1.tgz", - "integrity": "sha512-qKP4Rp7mc0lbERrxTPiEkwZiwIUUg3OhjbM4qcVWnVp1/RUP13vF4P4jHGOQY/AhyGOZKDjdRpaupCYl+phLOQ==", + "version": "3.0.0-rc.46", + "resolved": "https://registry.npmjs.org/@yarnpkg/parsers/-/parsers-3.0.0-rc.46.tgz", + "integrity": "sha512-aiATs7pSutzda/rq8fnuPwTglyVwjM22bNnK2ZgjrpAjQHSSl3lztd2f9evst1W/qnC58DRz7T7QndUDumAR4Q==", "dev": true, "requires": { "js-yaml": "^3.10.0", @@ -21239,9 +20699,9 @@ } }, "acorn": { - "version": "8.9.0", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.9.0.tgz", - "integrity": "sha512-jaVNAFBHNLXspO543WnNNPZFRtavh3skAkITqD0/2aeMkKZTN+254PyhwxFYrk3vQ1xfY+2wbesJMs/JC8/PwQ==", + "version": "8.10.0", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.10.0.tgz", + "integrity": "sha512-F0SAmZ8iUtS//m8DmCTA0jlh6TDKkHQyK6xc6V4KDTyZKA9dnvX9/3sRTVQrWm79glUAZbnmmNcdYwUIHWVybw==", "dev": true }, "acorn-import-assertions": { @@ -21258,12 +20718,6 @@ "dev": true, "requires": {} }, - "acorn-walk": { - "version": "8.2.0", - "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-8.2.0.tgz", - "integrity": "sha512-k+iyHEuPgSw6SbuDpGQM+06HQUa04DZ3o+F6CSzXMvvI5KMvnaEqXe+YVe555R9nn6GPt404fos4wcgpw12SDA==", - "dev": true - }, "adjust-sourcemap-loader": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/adjust-sourcemap-loader/-/adjust-sourcemap-loader-4.0.0.tgz", @@ -21424,12 +20878,12 @@ } }, "aria-query": { - "version": "5.1.3", - "resolved": "https://registry.npmjs.org/aria-query/-/aria-query-5.1.3.tgz", - "integrity": "sha512-R5iJ5lkuHybztUfuOAznmboyjWq8O6sqNqtK7CLOqdydi54VNbORp49mb14KbWgG1QD3JFO9hJdZ+y4KutfdOQ==", + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/aria-query/-/aria-query-5.3.0.tgz", + "integrity": "sha512-b0P0sZPKtyu8HkeRAfCq0IfURZK+SuwMjY1UXGBU27wpAiTwQAIlq56IbIO+ytk/JjS1fMR14ee5WBBfKi5J6A==", "dev": true, "requires": { - "deep-equal": "^2.0.5" + "dequal": "^2.0.3" } }, "array-buffer-byte-length": { @@ -21621,41 +21075,41 @@ } }, "babel-plugin-polyfill-corejs2": { - "version": "0.4.3", - "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs2/-/babel-plugin-polyfill-corejs2-0.4.3.tgz", - "integrity": "sha512-bM3gHc337Dta490gg+/AseNB9L4YLHxq1nGKZZSHbhXv4aTYU2MD2cjza1Ru4S6975YLTaL1K8uJf6ukJhhmtw==", + "version": "0.4.5", + "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs2/-/babel-plugin-polyfill-corejs2-0.4.5.tgz", + "integrity": "sha512-19hwUH5FKl49JEsvyTcoHakh6BE0wgXLLptIyKZ3PijHc/Ci521wygORCUCCred+E/twuqRyAkE02BAWPmsHOg==", "dev": true, "requires": { - "@babel/compat-data": "^7.17.7", - "@babel/helper-define-polyfill-provider": "^0.4.0", - "semver": "^6.1.1" + "@babel/compat-data": "^7.22.6", + "@babel/helper-define-polyfill-provider": "^0.4.2", + "semver": "^6.3.1" }, "dependencies": { "semver": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", - "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", "dev": true } } }, "babel-plugin-polyfill-corejs3": { - "version": "0.8.1", - "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.8.1.tgz", - "integrity": "sha512-ikFrZITKg1xH6pLND8zT14UPgjKHiGLqex7rGEZCH2EvhsneJaJPemmpQaIZV5AL03II+lXylw3UmddDK8RU5Q==", + "version": "0.8.3", + "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.8.3.tgz", + "integrity": "sha512-z41XaniZL26WLrvjy7soabMXrfPWARN25PZoriDEiLMxAp50AUW3t35BGQUMg5xK3UrpVTtagIDklxYa+MhiNA==", "dev": true, "requires": { - "@babel/helper-define-polyfill-provider": "^0.4.0", - "core-js-compat": "^3.30.1" + "@babel/helper-define-polyfill-provider": "^0.4.2", + "core-js-compat": "^3.31.0" } }, "babel-plugin-polyfill-regenerator": { - "version": "0.5.0", - "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-regenerator/-/babel-plugin-polyfill-regenerator-0.5.0.tgz", - "integrity": "sha512-hDJtKjMLVa7Z+LwnTCxoDLQj6wdc+B8dun7ayF2fYieI6OzfuvcLMB32ihJZ4UhCBwNYGl5bg/x/P9cMdnkc2g==", + "version": "0.5.2", + "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-regenerator/-/babel-plugin-polyfill-regenerator-0.5.2.tgz", + "integrity": "sha512-tAlOptU0Xj34V1Y2PNTL4Y0FOJMDB6bZmoW39FeCQIhigGLkqu3Fj6uiXpxIf6Ij274ENdYx64y6Au+ZKlb1IA==", "dev": true, "requires": { - "@babel/helper-define-polyfill-provider": "^0.4.0" + "@babel/helper-define-polyfill-provider": "^0.4.2" } }, "balanced-match": { @@ -21829,14 +21283,14 @@ "peer": true }, "browserslist": { - "version": "4.21.9", - "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.21.9.tgz", - "integrity": "sha512-M0MFoZzbUrRU4KNfCrDLnvyE7gub+peetoTid3TBIqtunaDJyXlwhakT+/VkvSXcfIzFfK/nkCs4nmyTmxdNSg==", + "version": "4.21.10", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.21.10.tgz", + "integrity": "sha512-bipEBdZfVH5/pwrvqc+Ub0kUPVfGUhlKxbvfD+z1BDnPEO/X98ruXGA1WP5ASpAFKan7Qr6j736IacbZQuAlKQ==", "dev": true, "requires": { - "caniuse-lite": "^1.0.30001503", - "electron-to-chromium": "^1.4.431", - "node-releases": "^2.0.12", + "caniuse-lite": "^1.0.30001517", + "electron-to-chromium": "^1.4.477", + "node-releases": "^2.0.13", "update-browserslist-db": "^1.0.11" } }, @@ -21907,16 +21361,16 @@ } }, "glob": { - "version": "10.3.1", - "resolved": "https://registry.npmjs.org/glob/-/glob-10.3.1.tgz", - "integrity": "sha512-9BKYcEeIs7QwlCYs+Y3GBvqAMISufUS0i2ELd11zpZjxI5V9iyRj0HgzB5/cLf2NY4vcYBTYzJ7GIui7j/4DOw==", + "version": "10.3.3", + "resolved": "https://registry.npmjs.org/glob/-/glob-10.3.3.tgz", + "integrity": "sha512-92vPiMb/iqpmEgsOoIDvTjc50wf9CCCvMzsi6W0JLPeUKE8TWP1a73PgqSrqy7iAZxaSD1YdzU7QZR5LF51MJw==", "dev": true, "requires": { "foreground-child": "^3.1.0", "jackspeak": "^2.0.3", "minimatch": "^9.0.1", - "minipass": "^5.0.0 || ^6.0.2", - "path-scurry": "^1.10.0" + "minipass": "^5.0.0 || ^6.0.2 || ^7.0.0", + "path-scurry": "^1.10.1" } }, "lru-cache": { @@ -21926,9 +21380,9 @@ "dev": true }, "minimatch": { - "version": "9.0.2", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.2.tgz", - "integrity": "sha512-PZOT9g5v2ojiTL7r1xF6plNHLtOeTpSlDI007As2NlA2aYBMfVom17yqa6QzhmDP8QOhn7LjHTg7DFCVSSa6yg==", + "version": "9.0.3", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.3.tgz", + "integrity": "sha512-RHiac9mvaRw0x3AYRgDC1CxAP7HTcNrrECeA8YYJeWnpo+2Q5CegtZjaotWTWxDG3UeGA1coE05iH1mPjT/2mg==", "dev": true, "requires": { "brace-expansion": "^2.0.1" @@ -21937,9 +21391,9 @@ } }, "cachedir": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/cachedir/-/cachedir-2.3.0.tgz", - "integrity": "sha512-A+Fezp4zxnit6FanDmv9EqXNAi3vt9DWp51/71UEhXukb7QUuvtv9344h91dyAxuTLoSYJFU299qzR3tzwPAhw==", + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/cachedir/-/cachedir-2.4.0.tgz", + "integrity": "sha512-9EtFOZR8g22CL7BWjJ9BUx1+A/djkofnyW3aOXZORNW2kxoUpx2h+uN2cOqwPmFhnpVmxg+KW2OjOSgChTEvsQ==", "dev": true }, "call-bind": { @@ -21965,9 +21419,9 @@ "dev": true }, "caniuse-lite": { - "version": "1.0.30001509", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001509.tgz", - "integrity": "sha512-2uDDk+TRiTX5hMcUYT/7CSyzMZxjfGu0vAUjS2g0LSD8UoXOv0LtpH4LxGMemsiPq6LCVIUjNwVM0erkOkGCDA==", + "version": "1.0.30001519", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001519.tgz", + "integrity": "sha512-0QHgqR+Jv4bxHMp8kZ1Kn8CH55OikjKJ6JmKkZYP1F3D7w+lnFXF70nG5eNfsZS89jadi5Ywy5UCSKLAglIRkg==", "dev": true }, "caseless": { @@ -22185,9 +21639,9 @@ } }, "commander": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/commander/-/commander-5.1.0.tgz", - "integrity": "sha512-P0CysNDQ7rtVw4QIQtm+MRxV66vKFSvlsQvGYXZWR3qFU0jlMKHZZZgw8e+8DSah4UDKMqnknRDQz+xuQXQ/Zg==", + "version": "6.2.1", + "resolved": "https://registry.npmjs.org/commander/-/commander-6.2.1.tgz", + "integrity": "sha512-U7VdrJFnJgo4xjrHpTzu0yrHPGImdsmD95ZlgYSEajAn2JKzDhDTPG9kBTefmObL2w/ngeZnilk+OV9CG3d7UA==", "dev": true }, "common-tags": { @@ -22372,6 +21826,30 @@ "serialize-javascript": "^6.0.0" }, "dependencies": { + "fast-glob": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.3.1.tgz", + "integrity": "sha512-kNFPyjhh5cKjrUltxs+wFx+ZkbRaxxmZ+X0ZU31SOsxCEtP9VPgtq2teZw1DebupL5GmDaNQ6yKMMVcM41iqDg==", + "dev": true, + "requires": { + "@nodelib/fs.stat": "^2.0.2", + "@nodelib/fs.walk": "^1.2.3", + "glob-parent": "^5.1.2", + "merge2": "^1.3.0", + "micromatch": "^4.0.4" + }, + "dependencies": { + "glob-parent": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", + "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", + "dev": true, + "requires": { + "is-glob": "^4.0.1" + } + } + } + }, "glob-parent": { "version": "6.0.2", "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz", @@ -22382,14 +21860,14 @@ } }, "globby": { - "version": "13.2.0", - "resolved": "https://registry.npmjs.org/globby/-/globby-13.2.0.tgz", - "integrity": "sha512-jWsQfayf13NvqKUIL3Ta+CIqMnvlaIDFveWE/dpOZ9+3AMEJozsxDvKA02zync9UuvOM8rOXzsD5GqKP4OnWPQ==", + "version": "13.2.2", + "resolved": "https://registry.npmjs.org/globby/-/globby-13.2.2.tgz", + "integrity": "sha512-Y1zNGV+pzQdh7H39l9zgB4PJqjRNqydvdYCDG4HFXM4XuvSaQQlEc91IU1yALL8gUTDomgBAfz3XJdmUS+oo0w==", "dev": true, "requires": { "dir-glob": "^3.0.1", - "fast-glob": "^3.2.11", - "ignore": "^5.2.0", + "fast-glob": "^3.3.0", + "ignore": "^5.2.4", "merge2": "^1.4.1", "slash": "^4.0.0" } @@ -22403,12 +21881,12 @@ } }, "core-js-compat": { - "version": "3.31.0", - "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.31.0.tgz", - "integrity": "sha512-hM7YCu1cU6Opx7MXNu0NuumM0ezNeAeRKadixyiQELWY3vT3De9S4J5ZBMraWV2vZnrE1Cirl0GtFtDtMUXzPw==", + "version": "3.32.0", + "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.32.0.tgz", + "integrity": "sha512-7a9a3D1k4UCVKnLhrgALyFcP7YCsLOQIxPd0dKjf/6GuPcgyiGP70ewWdCGrSK7evyhymi0qO4EqCmSJofDeYw==", "dev": true, "requires": { - "browserslist": "^4.21.5" + "browserslist": "^4.21.9" } }, "core-util-is": { @@ -22523,12 +22001,12 @@ } }, "cross-fetch": { - "version": "3.1.6", - "resolved": "https://registry.npmjs.org/cross-fetch/-/cross-fetch-3.1.6.tgz", - "integrity": "sha512-riRvo06crlE8HiqOwIpQhxwdOk4fOeR7FVM/wXoxchFEqMNUjvbs3bfo4OTgMEMHzppd4DxFBDbyySj8Cv781g==", + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/cross-fetch/-/cross-fetch-4.0.0.tgz", + "integrity": "sha512-e4a5N8lVvuLgAWgnCrLr2PP0YyDOTHa9H/Rj54dirp61qXnNq46m82bRhNqIA5VccJtWBvPTFRV3TtvHUKPB1g==", "dev": true, "requires": { - "node-fetch": "^2.6.11" + "node-fetch": "^2.6.12" } }, "cross-spawn": { @@ -22602,14 +22080,14 @@ "dev": true }, "cypress": { - "version": "10.11.0", - "resolved": "https://registry.npmjs.org/cypress/-/cypress-10.11.0.tgz", - "integrity": "sha512-lsaE7dprw5DoXM00skni6W5ElVVLGAdRUUdZjX2dYsGjbY/QnpzWZ95Zom1mkGg0hAaO/QVTZoFVS7Jgr/GUPA==", + "version": "12.17.3", + "resolved": "https://registry.npmjs.org/cypress/-/cypress-12.17.3.tgz", + "integrity": "sha512-/R4+xdIDjUSLYkiQfwJd630S81KIgicmQOLXotFxVXkl+eTeVO+3bHXxdi5KBh/OgC33HWN33kHX+0tQR/ZWpg==", "dev": true, "requires": { - "@cypress/request": "^2.88.10", + "@cypress/request": "^2.88.11", "@cypress/xvfb": "^1.2.4", - "@types/node": "^14.14.31", + "@types/node": "^16.18.39", "@types/sinonjs__fake-timers": "8.1.1", "@types/sizzle": "^2.3.2", "arch": "^2.2.0", @@ -22621,10 +22099,10 @@ "check-more-types": "^2.24.0", "cli-cursor": "^3.1.0", "cli-table3": "~0.6.1", - "commander": "^5.1.0", + "commander": "^6.2.1", "common-tags": "^1.8.0", "dayjs": "^1.10.4", - "debug": "^4.3.2", + "debug": "^4.3.4", "enquirer": "^2.3.6", "eventemitter2": "6.4.7", "execa": "4.1.0", @@ -22639,12 +22117,12 @@ "listr2": "^3.8.3", "lodash": "^4.17.21", "log-symbols": "^4.0.0", - "minimist": "^1.2.6", + "minimist": "^1.2.8", "ospath": "^1.2.2", "pretty-bytes": "^5.6.0", "proxy-from-env": "1.0.0", "request-progress": "^3.0.0", - "semver": "^7.3.2", + "semver": "^7.5.3", "supports-color": "^8.1.1", "tmp": "~0.2.1", "untildify": "^4.0.0", @@ -22652,9 +22130,9 @@ }, "dependencies": { "@types/node": { - "version": "14.18.52", - "resolved": "https://registry.npmjs.org/@types/node/-/node-14.18.52.tgz", - "integrity": "sha512-DGhiXKOHSFVVm+PJD+9Y0ObxXLeG6qwc0HoOn+ooQKeNNu+T2mEJCM5UBDUREKAggl9MHYjb5E71PAmx6MbzIg==", + "version": "16.18.39", + "resolved": "https://registry.npmjs.org/@types/node/-/node-16.18.39.tgz", + "integrity": "sha512-8q9ZexmdYYyc5/cfujaXb4YOucpQxAV4RMG0himLyDUOEr8Mr79VrqsFI+cQ2M2h89YIuy95lbxuYjxT4Hk4kQ==", "dev": true }, "ansi-styles": { @@ -22772,9 +22250,9 @@ "dev": true }, "dayjs": { - "version": "1.11.8", - "resolved": "https://registry.npmjs.org/dayjs/-/dayjs-1.11.8.tgz", - "integrity": "sha512-LcgxzFoWMEPO7ggRv1Y2N31hUf2R0Vj7fuy/m+Bg1K8rr+KAs1AEy4y9jd5DXe8pbHgX+srkHNS7TH6Q6ZhYeQ==", + "version": "1.11.9", + "resolved": "https://registry.npmjs.org/dayjs/-/dayjs-1.11.9.tgz", + "integrity": "sha512-QvzAURSbQ0pKdIye2txOzNaHmxtUBXerpY0FJsFXUMKbIZeFm5ht1LS/jFsrncjnmtv8HsG0W2g6c0zUjZWmpA==", "dev": true }, "debug": { @@ -22800,15 +22278,15 @@ "peer": true }, "deep-equal": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/deep-equal/-/deep-equal-2.2.1.tgz", - "integrity": "sha512-lKdkdV6EOGoVn65XaOsPdH4rMxTZOnmFyuIkMjM1i5HHCbfjC97dawgTAy0deYNfuqUqW+Q5VrVaQYtUpSd6yQ==", + "version": "2.2.2", + "resolved": "https://registry.npmjs.org/deep-equal/-/deep-equal-2.2.2.tgz", + "integrity": "sha512-xjVyBf0w5vH0I42jdAZzOKVldmPgSulmiyPRywoyq7HXC9qdgo17kxJE+rdnif5Tz6+pIrpJI8dCpMNLIGkUiA==", "dev": true, "requires": { "array-buffer-byte-length": "^1.0.0", "call-bind": "^1.0.2", "es-get-iterator": "^1.1.3", - "get-intrinsic": "^1.2.0", + "get-intrinsic": "^1.2.1", "is-arguments": "^1.1.1", "is-array-buffer": "^3.0.2", "is-date-object": "^1.0.5", @@ -22902,15 +22380,14 @@ } }, "degenerator": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/degenerator/-/degenerator-4.0.3.tgz", - "integrity": "sha512-2wY8vmCfxrQpe2PKGYdiWRre5HQRwsAXbAAWRbC+z2b80MEpnWc8A3a9k4TwqwN3Z/Fm3uhNm5vYUZIbMhyRxQ==", + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/degenerator/-/degenerator-5.0.1.tgz", + "integrity": "sha512-TllpMR/t0M5sqCXfj85i4XaAzxmS5tVA16dqvdkMwGmzI+dXLXnw3J+3Vdv7VKw+ThlTMboK6i9rnZ6Nntj5CQ==", "dev": true, "requires": { - "ast-types": "^0.13.2", - "escodegen": "^1.8.1", - "esprima": "^4.0.0", - "vm2": "^3.9.19" + "ast-types": "^0.13.4", + "escodegen": "^2.1.0", + "esprima": "^4.0.1" } }, "delayed-stream": { @@ -22931,6 +22408,12 @@ "integrity": "sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==", "dev": true }, + "dequal": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/dequal/-/dequal-2.0.3.tgz", + "integrity": "sha512-0je+qPKHEMohvfRTCEo3CrPG6cAzAYgmzKyxRiYSSDkS6eGJdyVJm7WaYA5ECaAD9wLB2T4EEeymA5aFVcYXCA==", + "dev": true + }, "destroy": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.2.0.tgz", @@ -23106,9 +22589,9 @@ } }, "electron-to-chromium": { - "version": "1.4.445", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.445.tgz", - "integrity": "sha512-++DB+9VK8SBJwC+X1zlMfJ1tMA3F0ipi39GdEp+x3cV2TyBihqAgad8cNMWtLDEkbH39nlDQP7PfGrDr3Dr7HA==", + "version": "1.4.484", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.484.tgz", + "integrity": "sha512-nO3ZEomTK2PO/3TUXgEx0A97xZTpKVf4p427lABHuCpT1IQ2N+njVh29DkQkCk6Q4m2wjU+faK4xAcfFndwjvw==", "dev": true }, "emoji-regex": { @@ -23161,9 +22644,9 @@ } }, "engine.io": { - "version": "6.5.1", - "resolved": "https://registry.npmjs.org/engine.io/-/engine.io-6.5.1.tgz", - "integrity": "sha512-mGqhI+D7YxS9KJMppR6Iuo37Ed3abhU8NdfgSvJSDUafQutrN+sPTncJYTyM9+tkhSmWodKtVYGPPHyXJEwEQA==", + "version": "6.5.2", + "resolved": "https://registry.npmjs.org/engine.io/-/engine.io-6.5.2.tgz", + "integrity": "sha512-IXsMcGpw/xRfjra46sVZVHiSWo/nJ/3g1337q9KNXtS6YRzbW5yIzTCb9DjhrBe7r3GZQR0I4+nq+4ODk5g/cA==", "dev": true, "requires": { "@types/cookie": "^0.4.1", @@ -23174,7 +22657,7 @@ "cookie": "~0.4.1", "cors": "~2.8.5", "debug": "~4.3.1", - "engine.io-parser": "~5.1.0", + "engine.io-parser": "~5.2.1", "ws": "~8.11.0" }, "dependencies": { @@ -23188,9 +22671,9 @@ } }, "engine.io-parser": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/engine.io-parser/-/engine.io-parser-5.1.0.tgz", - "integrity": "sha512-enySgNiK5tyZFynt3z7iqBR+Bto9EVVVvDFuTT0ioHCGbzirZVGDGiQjZzEp8hWl6hd5FSVytJGuScX1C1C35w==", + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/engine.io-parser/-/engine.io-parser-5.2.1.tgz", + "integrity": "sha512-9JktcM3u18nU9N2Lz3bWeBgxVgOKpw7yhRaoxQA3FUDZzzw+9WlA6p4G4u0RixNkg14fH7EfEc/RhpurtiROTQ==", "dev": true }, "enhanced-resolve": { @@ -23204,12 +22687,13 @@ } }, "enquirer": { - "version": "2.3.6", - "resolved": "https://registry.npmjs.org/enquirer/-/enquirer-2.3.6.tgz", - "integrity": "sha512-yjNnPr315/FjS4zIsUxYguYUPP2e1NK4d7E7ZOLiyYCcbFBiTMyID+2wvm2w6+pZ/odMA7cRkjhsPbltwBOrLg==", + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/enquirer/-/enquirer-2.4.1.tgz", + "integrity": "sha512-rRqJg/6gd538VHvR3PSrdRBb/1Vy2YfzHqzvbhGIQpDRKIa4FgV/54b5Q1xYSxOOwKvjXweS26E0Q+nAMwp2pQ==", "dev": true, "requires": { - "ansi-colors": "^4.1.1" + "ansi-colors": "^4.1.1", + "strip-ansi": "^6.0.1" } }, "ent": { @@ -23333,94 +22817,48 @@ "dev": true }, "escodegen": { - "version": "1.14.3", - "resolved": "https://registry.npmjs.org/escodegen/-/escodegen-1.14.3.tgz", - "integrity": "sha512-qFcX0XJkdg+PB3xjZZG/wKSuT1PnQWx57+TVSjIMmILd2yC/6ByYElPwJnslDsuWuSAp4AwJGumarAAmJch5Kw==", + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/escodegen/-/escodegen-2.1.0.tgz", + "integrity": "sha512-2NlIDTwUWJN0mRPQOdtQBzbUHvdGY2P1VXSyU83Q3xKxM7WHX2Ql8dKq782Q9TgQUNOLEzEYu9bzLNj1q88I5w==", "dev": true, "requires": { "esprima": "^4.0.1", - "estraverse": "^4.2.0", + "estraverse": "^5.2.0", "esutils": "^2.0.2", - "optionator": "^0.8.1", "source-map": "~0.6.1" }, "dependencies": { - "estraverse": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz", - "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==", - "dev": true - }, - "levn": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/levn/-/levn-0.3.0.tgz", - "integrity": "sha512-0OO4y2iOHix2W6ujICbKIaEQXvFQHue65vUG3pb5EUomzPI90z9hsA1VsO/dbIIpC53J8gxM9Q4Oho0jrCM/yA==", - "dev": true, - "requires": { - "prelude-ls": "~1.1.2", - "type-check": "~0.3.2" - } - }, - "optionator": { - "version": "0.8.3", - "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.8.3.tgz", - "integrity": "sha512-+IW9pACdk3XWmmTXG8m3upGUJst5XRGzxMRjXzAuJ1XnIFNvfhjjIuYkDvysnPQ7qzqVzLt78BCruntqRhWQbA==", - "dev": true, - "requires": { - "deep-is": "~0.1.3", - "fast-levenshtein": "~2.0.6", - "levn": "~0.3.0", - "prelude-ls": "~1.1.2", - "type-check": "~0.3.2", - "word-wrap": "~1.2.3" - } - }, - "prelude-ls": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.1.2.tgz", - "integrity": "sha512-ESF23V4SKG6lVSGZgYNpbsiaAkdab6ZgOxe52p7+Kid3W3u3bxR4Vfd/o21dmN7jSt0IwgZ4v5MUd26FEtXE9w==", - "dev": true - }, "source-map": { "version": "0.6.1", "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", "dev": true, "optional": true - }, - "type-check": { - "version": "0.3.2", - "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.3.2.tgz", - "integrity": "sha512-ZCmOJdvOWDBYJlzAoFkC+Q0+bUyEOS1ltgp1MGU03fqHG+dbi9tBFU2Rd9QKiDZFAYrhPh2JUf7rZRIuHRKtOg==", - "dev": true, - "requires": { - "prelude-ls": "~1.1.2" - } } } }, "eslint": { - "version": "8.43.0", - "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.43.0.tgz", - "integrity": "sha512-aaCpf2JqqKesMFGgmRPessmVKjcGXqdlAYLLC3THM8t5nBRZRQ+st5WM/hoJXkdioEXLLbXgclUpM0TXo5HX5Q==", + "version": "8.46.0", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.46.0.tgz", + "integrity": "sha512-cIO74PvbW0qU8e0mIvk5IV3ToWdCq5FYG6gWPHHkx6gNdjlbAYvtfHmlCMXxjcoVaIdwy/IAt3+mDkZkfvb2Dg==", "dev": true, "requires": { "@eslint-community/eslint-utils": "^4.2.0", - "@eslint-community/regexpp": "^4.4.0", - "@eslint/eslintrc": "^2.0.3", - "@eslint/js": "8.43.0", + "@eslint-community/regexpp": "^4.6.1", + "@eslint/eslintrc": "^2.1.1", + "@eslint/js": "^8.46.0", "@humanwhocodes/config-array": "^0.11.10", "@humanwhocodes/module-importer": "^1.0.1", "@nodelib/fs.walk": "^1.2.8", - "ajv": "^6.10.0", + "ajv": "^6.12.4", "chalk": "^4.0.0", "cross-spawn": "^7.0.2", "debug": "^4.3.2", "doctrine": "^3.0.0", "escape-string-regexp": "^4.0.0", - "eslint-scope": "^7.2.0", - "eslint-visitor-keys": "^3.4.1", - "espree": "^9.5.2", + "eslint-scope": "^7.2.2", + "eslint-visitor-keys": "^3.4.2", + "espree": "^9.6.1", "esquery": "^1.4.2", "esutils": "^2.0.2", "fast-deep-equal": "^3.1.3", @@ -23430,7 +22868,6 @@ "globals": "^13.19.0", "graphemer": "^1.4.0", "ignore": "^5.2.0", - "import-fresh": "^3.0.0", "imurmurhash": "^0.1.4", "is-glob": "^4.0.0", "is-path-inside": "^3.0.3", @@ -23440,9 +22877,8 @@ "lodash.merge": "^4.6.2", "minimatch": "^3.1.2", "natural-compare": "^1.4.0", - "optionator": "^0.9.1", + "optionator": "^0.9.3", "strip-ansi": "^6.0.1", - "strip-json-comments": "^3.1.0", "text-table": "^0.2.0" }, "dependencies": { @@ -23598,9 +23034,9 @@ } }, "eslint-scope": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-7.2.0.tgz", - "integrity": "sha512-DYj5deGlHBfMt15J7rdtyKNq/Nqlv5KfU4iodrQ019XESsRnwXH9KAE0y3cwtUHDo2ob7CypAnCqefh6vioWRw==", + "version": "7.2.2", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-7.2.2.tgz", + "integrity": "sha512-dOt21O7lTMhDM+X9mB4GX+DZrZtCUJPL/wlcTqxyrx5IvO0IYtILdtrQGQp+8n5S0gwSVmOf9NQrjMOgfQZlIg==", "dev": true, "requires": { "esrecurse": "^4.3.0", @@ -23608,18 +23044,18 @@ } }, "eslint-visitor-keys": { - "version": "3.4.1", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.1.tgz", - "integrity": "sha512-pZnmmLwYzf+kWaM/Qgrvpen51upAktaaiI01nsJD/Yr3lMOdNtq0cxkrrg16w64VtisN6okbs7Q8AfGqj4c9fA==", + "version": "3.4.2", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.2.tgz", + "integrity": "sha512-8drBzUEyZ2llkpCA67iYrgEssKDUu68V8ChqqOfFupIaG/LCVPUT+CoGJpT77zJprs4T/W7p07LP7zAIMuweVw==", "dev": true }, "espree": { - "version": "9.5.2", - "resolved": "https://registry.npmjs.org/espree/-/espree-9.5.2.tgz", - "integrity": "sha512-7OASN1Wma5fum5SrNhFMAMJxOUAbhyfQ8dQ//PJaJbNw0URTPWqIghHWt1MmAANKhHZIYOHruW4Kw4ruUWOdGw==", + "version": "9.6.1", + "resolved": "https://registry.npmjs.org/espree/-/espree-9.6.1.tgz", + "integrity": "sha512-oruZaFkjorTpF32kDSI5/75ViwGeZginGGy2NoOSg3Q9bnwlnmDm4HLnkl0RE3n+njDXR037aY1+x58Z/zFdwQ==", "dev": true, "requires": { - "acorn": "^8.8.0", + "acorn": "^8.9.0", "acorn-jsx": "^5.3.2", "eslint-visitor-keys": "^3.4.1" } @@ -23962,9 +23398,9 @@ } }, "fecfile-validate": { - "version": "git+ssh://git@github.com/fecgov/fecfile-validate.git#d3aa0b66f11cfc8e09b6e1fb81f7678db15fd0ae", - "integrity": "sha512-USHjOYVVNSxsHzLJiftSeGfjo0JKMw/bGv8z3y+jrYoXVHKmNCBGZ/77vGhdhWkk249oY4I4qNx2JJ17c01h5A==", - "from": "fecfile-validate@https://github.com/fecgov/fecfile-validate#d3aa0b66f11cfc8e09b6e1fb81f7678db15fd0ae", + "version": "git+ssh://git@github.com/fecgov/fecfile-validate.git#d313a8bf821a2bc0957b16a7c899544de898281e", + "integrity": "sha512-tTdvuQUVE8Df9YaCWXsSnPaD1OOaFHK41MNAmzuVNxUenTizZK5oyelL9Wi43WH04WgnRxG8h1k1ijp9uV+dsw==", + "from": "fecfile-validate@https://github.com/fecgov/fecfile-validate#d313a8bf821a2bc0957b16a7c899544de898281e", "requires": { "ajv": "^8.11.0" } @@ -24135,9 +23571,9 @@ }, "dependencies": { "signal-exit": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-4.0.2.tgz", - "integrity": "sha512-MY2/qGx4enyjprQnFaZsHib3Yadh3IXyV2C321GY0pjGfVBu4un0uDJkwgdxqO+Rdx8JMT8IfJIRwbYVz3Ob3Q==", + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-4.1.0.tgz", + "integrity": "sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==", "dev": true } } @@ -24435,12 +23871,6 @@ "integrity": "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==", "dev": true }, - "grapheme-splitter": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/grapheme-splitter/-/grapheme-splitter-1.0.4.tgz", - "integrity": "sha512-bzh50DW9kTPM00T8y4o8vQg89Di9oLJVLW/KaOGIXJWP/iqCN6WKYkbNOF04vFLJhwcpYUh9ydh/+5vpOqV4YQ==", - "dev": true - }, "graphemer": { "version": "1.4.0", "resolved": "https://registry.npmjs.org/graphemer/-/graphemer-1.4.0.tgz", @@ -24788,9 +24218,9 @@ } }, "minimatch": { - "version": "9.0.2", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.2.tgz", - "integrity": "sha512-PZOT9g5v2ojiTL7r1xF6plNHLtOeTpSlDI007As2NlA2aYBMfVom17yqa6QzhmDP8QOhn7LjHTg7DFCVSSa6yg==", + "version": "9.0.3", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.3.tgz", + "integrity": "sha512-RHiac9mvaRw0x3AYRgDC1CxAP7HTcNrrECeA8YYJeWnpo+2Q5CegtZjaotWTWxDG3UeGA1coE05iH1mPjT/2mg==", "dev": true, "requires": { "brace-expansion": "^2.0.1" @@ -24812,9 +24242,9 @@ "dev": true }, "immutable": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/immutable/-/immutable-4.3.0.tgz", - "integrity": "sha512-0AOCmOip+xgJwEVTQj1EfiDDOkPmuyllDuTuEX+DDXUgapLAsBIfkg3sxCYyCEA8mQqZrrxPUGjcOQ2JS3WLkg==", + "version": "4.3.2", + "resolved": "https://registry.npmjs.org/immutable/-/immutable-4.3.2.tgz", + "integrity": "sha512-oGXzbEDem9OOpDWZu88jGiYCvIsLHMvGw+8OXlpsvTFvIQplQbjg1B1cvKg8f7Hoch6+NGjpPsH1Fr+Mc2D1aA==", "dev": true }, "import-fresh": { @@ -25221,16 +24651,12 @@ } }, "is-typed-array": { - "version": "1.1.10", - "resolved": "https://registry.npmjs.org/is-typed-array/-/is-typed-array-1.1.10.tgz", - "integrity": "sha512-PJqgEHiWZvMpaFZ3uTc8kHPM4+4ADTlDniuQL7cU/UDA0Ql7F70yGfHph3cLNe+c9toaigv+DFzTJKhc2CtO6A==", + "version": "1.1.12", + "resolved": "https://registry.npmjs.org/is-typed-array/-/is-typed-array-1.1.12.tgz", + "integrity": "sha512-Z14TF2JNG8Lss5/HMqt0//T9JeHXttXy5pH/DBU4vi98ozO2btxzq9MwYDZYnKwU8nRsz/+GVFVRDq3DkVuSPg==", "dev": true, "requires": { - "available-typed-arrays": "^1.0.5", - "call-bind": "^1.0.2", - "for-each": "^0.3.3", - "gopd": "^1.0.1", - "has-tostringtag": "^1.0.0" + "which-typed-array": "^1.1.11" } }, "is-typedarray": { @@ -25326,21 +24752,21 @@ }, "dependencies": { "semver": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", - "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", "dev": true } } }, "istanbul-lib-report": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/istanbul-lib-report/-/istanbul-lib-report-3.0.0.tgz", - "integrity": "sha512-wcdi+uAKzfiGT2abPpKZ0hSU1rGQjUQnLvtY5MpQ7QCTahD3VODhcu4wcfY1YtkGaDD5yuydOLINXsfbus9ROw==", + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/istanbul-lib-report/-/istanbul-lib-report-3.0.1.tgz", + "integrity": "sha512-GCfE1mtsHGOELCU8e/Z7YWzpmybrx/+dSTfLrvY8qRmaY6zXTKWn6WQIjaAFw069icm6GVMNkgu0NzI4iPZUNw==", "dev": true, "requires": { "istanbul-lib-coverage": "^3.0.0", - "make-dir": "^3.0.0", + "make-dir": "^4.0.0", "supports-color": "^7.1.0" }, "dependencies": { @@ -25350,6 +24776,15 @@ "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", "dev": true }, + "make-dir": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-4.0.0.tgz", + "integrity": "sha512-hXdUTZYIVOt1Ex//jAQi+wTZZpUpwBj/0QsOzqegb3rGMMeJiSEu5xLHnYfBrRV4RH2+OCSOO95Is/7x1WJ4bw==", + "dev": true, + "requires": { + "semver": "^7.5.3" + } + }, "supports-color": { "version": "7.2.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", @@ -25381,9 +24816,9 @@ } }, "istanbul-reports": { - "version": "3.1.5", - "resolved": "https://registry.npmjs.org/istanbul-reports/-/istanbul-reports-3.1.5.tgz", - "integrity": "sha512-nUsEMa9pBt/NOHqbcbeJEgqIlY/K7rVWUX6Lql2orY5e9roQOthbR3vtY4zzf2orPELg80fnxxk9zUyPlgwD1w==", + "version": "3.1.6", + "resolved": "https://registry.npmjs.org/istanbul-reports/-/istanbul-reports-3.1.6.tgz", + "integrity": "sha512-TLgnMkKg3iTDsQ9PbPTdpfAK2DzjF9mqUG7RMgcQl8oFjad8ob4laGxv5XV5U9MAfx8D6tSJiUyuAwzLicaxlg==", "dev": true, "requires": { "html-escaper": "^2.0.0", @@ -25391,9 +24826,9 @@ } }, "jackspeak": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/jackspeak/-/jackspeak-2.2.1.tgz", - "integrity": "sha512-MXbxovZ/Pm42f6cDIDkl3xpwv1AGwObKwfmjs2nQePiy85tP3fatofl3FC1aBsOtP/6fq5SbtgHwWcMsLP+bDw==", + "version": "2.2.2", + "resolved": "https://registry.npmjs.org/jackspeak/-/jackspeak-2.2.2.tgz", + "integrity": "sha512-mgNtVv4vUuaKA97yxUHoA3+FkuhtxkjdXEWOyB/N76fjy0FjezEt34oy3epBtvCvS+7DyKwqCFWx/oJLV5+kCg==", "dev": true, "requires": { "@isaacs/cliui": "^8.0.2", @@ -25498,9 +24933,9 @@ } }, "jiti": { - "version": "1.18.2", - "resolved": "https://registry.npmjs.org/jiti/-/jiti-1.18.2.tgz", - "integrity": "sha512-QAdOptna2NYiSSpv0O/BwoHBSmz4YhpzJHyi+fnMRTXFjp7B8i/YG5Z8IfusxB1ufjcD2Sre1F3R+nX3fvy7gg==", + "version": "1.19.1", + "resolved": "https://registry.npmjs.org/jiti/-/jiti-1.19.1.tgz", + "integrity": "sha512-oVhqoRDaBXf7sjkll95LHVS6Myyyb1zaunVwk4Z0+WPSW4gjS0pl01zYKHScTuyEhQsFxV5L4DR5r+YqSyqyyg==", "dev": true }, "jpeg-js": { @@ -25510,9 +24945,9 @@ "dev": true }, "js-library-detector": { - "version": "6.6.0", - "resolved": "https://registry.npmjs.org/js-library-detector/-/js-library-detector-6.6.0.tgz", - "integrity": "sha512-z8OkDmXALZ22bIzBtIW8cpJ39MV93/Zu1rWrFdhsNw+sity2rOLaGT2kfWWQ6mnRTWs4ddONY5kiroA8e98Gvg==", + "version": "6.7.0", + "resolved": "https://registry.npmjs.org/js-library-detector/-/js-library-detector-6.7.0.tgz", + "integrity": "sha512-c80Qupofp43y4cJ7+8TTDN/AsDwLi5oOm/plBrWI+iQt485vKXCco+yVmOwEgdo9VOdsYTuV0UlTeetVPTriXA==", "dev": true }, "js-tokens": { @@ -25725,9 +25160,9 @@ } }, "semver": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", - "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", "dev": true } } @@ -25846,9 +25281,9 @@ "optional": true }, "semver": { - "version": "5.7.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", - "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", + "version": "5.7.2", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.2.tgz", + "integrity": "sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==", "dev": true, "optional": true }, @@ -25908,9 +25343,9 @@ } }, "semver": { - "version": "5.7.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", - "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", + "version": "5.7.2", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.2.tgz", + "integrity": "sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==", "dev": true } } @@ -25925,9 +25360,9 @@ } }, "lighthouse": { - "version": "10.3.0", - "resolved": "https://registry.npmjs.org/lighthouse/-/lighthouse-10.3.0.tgz", - "integrity": "sha512-YdTZJPjpiBNl9sPXxauA/jZqKEi6fjD0U11rm+2IBEtBYwovE/ULXiYK0N6q/KrNOIiTA4KQ1ssyCO8pZFFQ2A==", + "version": "10.4.0", + "resolved": "https://registry.npmjs.org/lighthouse/-/lighthouse-10.4.0.tgz", + "integrity": "sha512-XQWHEWkJ8YxSPsxttBJORy5+hQrzbvGkYfeP3fJjyYKioWkF2MXfFqNK4ZuV4jL8pBu7Z91qnQP6In0bq1yXww==", "dev": true, "requires": { "@sentry/node": "^6.17.4", @@ -25942,27 +25377,27 @@ "jpeg-js": "^0.4.4", "js-library-detector": "^6.6.0", "lighthouse-logger": "^1.4.1", - "lighthouse-stack-packs": "1.10.0", + "lighthouse-stack-packs": "1.11.0", "lodash": "^4.17.21", "lookup-closest-locale": "6.2.0", "metaviewport-parser": "0.3.0", "open": "^8.4.0", "parse-cache-control": "1.0.1", "ps-list": "^8.0.0", - "puppeteer-core": "^20.7.1", + "puppeteer-core": "^20.8.0", "robots-parser": "^3.0.0", "semver": "^5.3.0", "speedline-core": "^1.4.3", - "third-party-web": "^0.23.0", + "third-party-web": "^0.23.3", "ws": "^7.0.0", "yargs": "^17.3.1", "yargs-parser": "^21.0.0" }, "dependencies": { "semver": { - "version": "5.7.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", - "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", + "version": "5.7.2", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.2.tgz", + "integrity": "sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==", "dev": true } } @@ -25995,9 +25430,9 @@ } }, "lighthouse-stack-packs": { - "version": "1.10.0", - "resolved": "https://registry.npmjs.org/lighthouse-stack-packs/-/lighthouse-stack-packs-1.10.0.tgz", - "integrity": "sha512-5nvJS+IkZUbnDpIeJLi1xdnCfftBFMkxXfA5HHlEC1EQFQ2a8YPos6vl11oERHuIlDFEnVkaOeNaSIrL2K/9Gg==", + "version": "1.11.0", + "resolved": "https://registry.npmjs.org/lighthouse-stack-packs/-/lighthouse-stack-packs-1.11.0.tgz", + "integrity": "sha512-sRr0z1S/I26VffRLq9KJsKtLk856YrJlNGmcJmbLX8dFn3MuzVPUbstuChEhqnSxZb8TZmVfthuXuwhG9vRoSw==", "dev": true }, "lines-and-columns": { @@ -26278,9 +25713,9 @@ }, "dependencies": { "semver": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", - "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", "dev": true } } @@ -27261,9 +26696,9 @@ "dev": true }, "node-fetch": { - "version": "2.6.11", - "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.11.tgz", - "integrity": "sha512-4I6pdBY1EthSqDmJkiNk3JIT8cswwR9nfeW/cPdUagJYEQG7R95WRH74wpz7ma8Gh/9dI9FP+OU+0E4FvtA55w==", + "version": "2.6.12", + "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.12.tgz", + "integrity": "sha512-C/fGU2E8ToujUivIO0H+tpQ6HWo4eEmchoPIoXtxCrVghxdKq+QOHqEZW7tuP3KlV3bC8FRMO5nMCC7Zm1VP6g==", "dev": true, "requires": { "whatwg-url": "^5.0.0" @@ -27312,9 +26747,9 @@ "dev": true }, "node-releases": { - "version": "2.0.12", - "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.12.tgz", - "integrity": "sha512-QzsYKWhXTWx8h1kIvqfnC++o0pEmpRQA/aenALsL2F4pqNVr7YzcdMlDij5WBnwftRbJCNJL/O7zdKaxKPHqgQ==", + "version": "2.0.13", + "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.13.tgz", + "integrity": "sha512-uYr7J37ae/ORWdZeQ1xxMJe3NtdmqMC/JZK+geofDrkLUApKRHPd18/TxtBOJ4A0/+uUIliorNrfYV6s1b02eQ==", "dev": true }, "nopt": { @@ -27454,24 +26889,25 @@ } }, "nx": { - "version": "16.2.2", - "resolved": "https://registry.npmjs.org/nx/-/nx-16.2.2.tgz", - "integrity": "sha512-gOcpqs6wf8YdFIq6P0IlMxBGr2c27pM55zpqO7epSlN6NqW6SOFKnZa+6z4NV9qmifMqzWPx2VF0BY54ARuqYg==", - "dev": true, - "requires": { - "@nrwl/tao": "16.2.2", - "@nx/nx-darwin-arm64": "16.2.2", - "@nx/nx-darwin-x64": "16.2.2", - "@nx/nx-linux-arm-gnueabihf": "16.2.2", - "@nx/nx-linux-arm64-gnu": "16.2.2", - "@nx/nx-linux-arm64-musl": "16.2.2", - "@nx/nx-linux-x64-gnu": "16.2.2", - "@nx/nx-linux-x64-musl": "16.2.2", - "@nx/nx-win32-arm64-msvc": "16.2.2", - "@nx/nx-win32-x64-msvc": "16.2.2", + "version": "16.5.1", + "resolved": "https://registry.npmjs.org/nx/-/nx-16.5.1.tgz", + "integrity": "sha512-I3hJRE4hG7JWAtncWwDEO3GVeGPpN0TtM8xH5ArZXyDuVeTth/i3TtJzdDzqXO1HHtIoAQN0xeq4n9cLuMil5g==", + "dev": true, + "requires": { + "@nrwl/tao": "16.5.1", + "@nx/nx-darwin-arm64": "16.5.1", + "@nx/nx-darwin-x64": "16.5.1", + "@nx/nx-freebsd-x64": "16.5.1", + "@nx/nx-linux-arm-gnueabihf": "16.5.1", + "@nx/nx-linux-arm64-gnu": "16.5.1", + "@nx/nx-linux-arm64-musl": "16.5.1", + "@nx/nx-linux-x64-gnu": "16.5.1", + "@nx/nx-linux-x64-musl": "16.5.1", + "@nx/nx-win32-arm64-msvc": "16.5.1", + "@nx/nx-win32-x64-msvc": "16.5.1", "@parcel/watcher": "2.0.4", "@yarnpkg/lockfile": "^1.1.0", - "@yarnpkg/parsers": "^3.0.0-rc.18", + "@yarnpkg/parsers": "3.0.0-rc.46", "@zkochan/js-yaml": "0.0.6", "axios": "^1.0.0", "chalk": "^4.1.0", @@ -27492,7 +26928,7 @@ "minimatch": "3.0.5", "npm-run-path": "^4.0.1", "open": "^8.4.0", - "semver": "7.3.4", + "semver": "7.5.3", "string-width": "^4.2.3", "strong-log-transformer": "^2.1.0", "tar-stream": "~2.2.0", @@ -27544,6 +26980,15 @@ "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", "dev": true }, + "enquirer": { + "version": "2.3.6", + "resolved": "https://registry.npmjs.org/enquirer/-/enquirer-2.3.6.tgz", + "integrity": "sha512-yjNnPr315/FjS4zIsUxYguYUPP2e1NK4d7E7ZOLiyYCcbFBiTMyID+2wvm2w6+pZ/odMA7cRkjhsPbltwBOrLg==", + "dev": true, + "requires": { + "ansi-colors": "^4.1.1" + } + }, "fast-glob": { "version": "3.2.7", "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.2.7.tgz", @@ -27597,15 +27042,6 @@ "argparse": "^2.0.1" } }, - "lru-cache": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", - "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", - "dev": true, - "requires": { - "yallist": "^4.0.0" - } - }, "minimatch": { "version": "3.0.5", "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.5.tgz", @@ -27615,15 +27051,6 @@ "brace-expansion": "^1.1.7" } }, - "semver": { - "version": "7.3.4", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.4.tgz", - "integrity": "sha512-tCfb2WLjqFAtXn4KEdxIhalnRtoKFN7nAwj0B3ZXCbQloV2tq5eDbcTmT68JJD3nRJq24/XgxtQKFIpQdtvmVw==", - "dev": true, - "requires": { - "lru-cache": "^6.0.0" - } - }, "supports-color": { "version": "7.2.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", @@ -27632,12 +27059,6 @@ "requires": { "has-flag": "^4.0.0" } - }, - "yallist": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", - "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", - "dev": true } } }, @@ -27899,17 +27320,18 @@ "dev": true }, "pac-proxy-agent": { - "version": "6.0.3", - "resolved": "https://registry.npmjs.org/pac-proxy-agent/-/pac-proxy-agent-6.0.3.tgz", - "integrity": "sha512-5Hr1KgPDoc21Vn3rsXBirwwDnF/iac1jN/zkpsOYruyT+ZgsUhUOgVwq3v9+ukjZd/yGm/0nzO1fDfl7rkGoHQ==", + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/pac-proxy-agent/-/pac-proxy-agent-7.0.0.tgz", + "integrity": "sha512-t4tRAMx0uphnZrio0S0Jw9zg3oDbz1zVhQ/Vy18FjLfP1XOLNUEjaVxYCYRI6NS+BsMBXKIzV6cTLOkO9AtywA==", "dev": true, "requires": { + "@tootallnate/quickjs-emscripten": "^0.23.0", "agent-base": "^7.0.2", "debug": "^4.3.4", "get-uri": "^6.0.1", "http-proxy-agent": "^7.0.0", "https-proxy-agent": "^7.0.0", - "pac-resolver": "^6.0.1", + "pac-resolver": "^7.0.0", "socks-proxy-agent": "^8.0.1" }, "dependencies": { @@ -27933,9 +27355,9 @@ } }, "https-proxy-agent": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-7.0.0.tgz", - "integrity": "sha512-0euwPCRyAPSgGdzD1IVN9nJYHtBhJwb6XPfbpQcYbPCwrBidX6GzxmchnaF4sfF/jPb74Ojx5g4yTg3sixlyPw==", + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-7.0.1.tgz", + "integrity": "sha512-Eun8zV0kcYS1g19r78osiQLEFIRspRUDd9tIfBCTBPBeMieF/EsJNL8VI3xOIdYRDEkjQnqOYPsZ2DsWsVsFwQ==", "dev": true, "requires": { "agent-base": "^7.0.2", @@ -27956,13 +27378,13 @@ } }, "pac-resolver": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/pac-resolver/-/pac-resolver-6.0.1.tgz", - "integrity": "sha512-dg497MhVT7jZegPRuOScQ/z0aV/5WR0gTdRu1md+Irs9J9o+ls5jIuxjo1WfaTG+eQQkxyn5HMGvWK+w7EIBkQ==", + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/pac-resolver/-/pac-resolver-7.0.0.tgz", + "integrity": "sha512-Fd9lT9vJbHYRACT8OhCbZBbxr6KRSawSovFpy8nDGshaK99S/EBhVIHp9+crhxrsZOuvLpgL1n23iyPg6Rl2hg==", "dev": true, "requires": { - "degenerator": "^4.0.1", - "ip": "^1.1.5", + "degenerator": "^5.0.0", + "ip": "^1.1.8", "netmask": "^2.0.2" } }, @@ -28099,13 +27521,13 @@ "dev": true }, "path-scurry": { - "version": "1.10.0", - "resolved": "https://registry.npmjs.org/path-scurry/-/path-scurry-1.10.0.tgz", - "integrity": "sha512-tZFEaRQbMLjwrsmidsGJ6wDMv0iazJWk6SfIKnY4Xru8auXgmJkOBa5DUbYFcFD2Rzk2+KDlIiF0GVXNCbgC7g==", + "version": "1.10.1", + "resolved": "https://registry.npmjs.org/path-scurry/-/path-scurry-1.10.1.tgz", + "integrity": "sha512-MkhCqzzBEpPvxxQ71Md0b1Kk51W01lrYvlMzSUaIzNsODdd7mqhiimSZlr+VegAz5Z6Vzt9Xg2ttE//XBhH3EQ==", "dev": true, "requires": { "lru-cache": "^9.1.1 || ^10.0.0", - "minipass": "^5.0.0 || ^6.0.2" + "minipass": "^5.0.0 || ^6.0.2 || ^7.0.0" }, "dependencies": { "lru-cache": { @@ -28285,9 +27707,9 @@ "integrity": "sha512-KDeO94CbWI4pKsPnYpA1FPjo79EsY9I+M8ywoPBSf9XMXoe/0crjbUK7jcQEDHuc0ZMRIZsxH3TYLv4TUtHmAA==" }, "primeng": { - "version": "16.0.2", - "resolved": "https://registry.npmjs.org/primeng/-/primeng-16.0.2.tgz", - "integrity": "sha512-gLFUSQ0fV5948yM1fMCv9oGaJ54AS8+HHSMOeR2lHWFiZzomxjXR0MST9yyAQ0NjrOlhke3BBpl+zYjISBeEJg==", + "version": "16.1.0", + "resolved": "https://registry.npmjs.org/primeng/-/primeng-16.1.0.tgz", + "integrity": "sha512-qqYQ2xO6EmiBEqvlKHIWJPrC90HVVQGitnrGurpdT9f8/Mkz0YCCo4GwLElKyHZ52STd+cw2MtoXa1sJRVR30g==", "requires": { "tslib": "^2.3.0" } @@ -28356,9 +27778,9 @@ } }, "proxy-agent": { - "version": "6.2.1", - "resolved": "https://registry.npmjs.org/proxy-agent/-/proxy-agent-6.2.1.tgz", - "integrity": "sha512-OIbBKlRAT+ycCm6wAYIzMwPejzRtjy8F3QiDX0eKOA3e4pe3U9F/IvzcHP42bmgQxVv97juG+J8/gx+JIeCX/Q==", + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/proxy-agent/-/proxy-agent-6.3.0.tgz", + "integrity": "sha512-0LdR757eTj/JfuU7TL2YCuAZnxWXu3tkJbg4Oq3geW/qFNT/32T0sp2HnZ9O0lMR4q3vwAt0+xCA8SR0WAD0og==", "dev": true, "requires": { "agent-base": "^7.0.2", @@ -28366,7 +27788,7 @@ "http-proxy-agent": "^7.0.0", "https-proxy-agent": "^7.0.0", "lru-cache": "^7.14.1", - "pac-proxy-agent": "^6.0.3", + "pac-proxy-agent": "^7.0.0", "proxy-from-env": "^1.1.0", "socks-proxy-agent": "^8.0.1" }, @@ -28391,9 +27813,9 @@ } }, "https-proxy-agent": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-7.0.0.tgz", - "integrity": "sha512-0euwPCRyAPSgGdzD1IVN9nJYHtBhJwb6XPfbpQcYbPCwrBidX6GzxmchnaF4sfF/jPb74Ojx5g4yTg3sixlyPw==", + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-7.0.1.tgz", + "integrity": "sha512-Eun8zV0kcYS1g19r78osiQLEFIRspRUDd9tIfBCTBPBeMieF/EsJNL8VI3xOIdYRDEkjQnqOYPsZ2DsWsVsFwQ==", "dev": true, "requires": { "agent-base": "^7.0.2", @@ -28466,23 +27888,23 @@ "integrity": "sha512-rRV+zQD8tVFys26lAGR9WUuS4iUAngJScM+ZRSKtvl5tKeZ2t5bvdNFdNHBW9FWR4guGHlgmsZ1G7BSm2wTbuA==" }, "puppeteer-core": { - "version": "20.7.4", - "resolved": "https://registry.npmjs.org/puppeteer-core/-/puppeteer-core-20.7.4.tgz", - "integrity": "sha512-7YZ1LmTo+5yM9uBNFTMJpE+lJjcIoNjKVarsYIk7o5WhgQNI9o5XgiQK5f71y1vWwr7sT/eGG75HXAehjnTBTg==", + "version": "20.9.0", + "resolved": "https://registry.npmjs.org/puppeteer-core/-/puppeteer-core-20.9.0.tgz", + "integrity": "sha512-H9fYZQzMTRrkboEfPmf7m3CLDN6JvbxXA3qTtS+dFt27tR+CsFHzPsT6pzp6lYL6bJbAPaR0HaPO6uSi+F94Pg==", "dev": true, "requires": { - "@puppeteer/browsers": "1.4.3", + "@puppeteer/browsers": "1.4.6", "chromium-bidi": "0.4.16", - "cross-fetch": "3.1.6", + "cross-fetch": "4.0.0", "debug": "4.3.4", - "devtools-protocol": "0.0.1135028", + "devtools-protocol": "0.0.1147663", "ws": "8.13.0" }, "dependencies": { "devtools-protocol": { - "version": "0.0.1135028", - "resolved": "https://registry.npmjs.org/devtools-protocol/-/devtools-protocol-0.0.1135028.tgz", - "integrity": "sha512-jEcNGrh6lOXNRJvZb9RjeevtZGrgugPKSMJZxfyxWQnhlKawMPhMtk/dfC+Z/6xNXExlzTKlY5LzIAK/fRpQIw==", + "version": "0.0.1147663", + "resolved": "https://registry.npmjs.org/devtools-protocol/-/devtools-protocol-0.0.1147663.tgz", + "integrity": "sha512-hyWmRrexdhbZ1tcJUGpO95ivbRhWXz++F4Ko+n21AY5PNln2ovoJw+8ZMNDTtip+CNFQfrtLVh/w4009dXO/eQ==", "dev": true }, "ws": { @@ -28509,6 +27931,12 @@ "side-channel": "^1.0.4" } }, + "querystringify": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/querystringify/-/querystringify-2.2.0.tgz", + "integrity": "sha512-FIqgj2EUvTa7R50u0rGsyTftzjYmv/a3hO345bZNrqabNqjtgiDMgmo4mkUjd+nzU5oF3dClKqFIPUKybUyqoQ==", + "dev": true + }, "queue-microtask": { "version": "1.2.3", "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz", @@ -28606,9 +28034,9 @@ } }, "semver": { - "version": "5.7.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", - "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", + "version": "5.7.2", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.2.tgz", + "integrity": "sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==", "dev": true } } @@ -28635,16 +28063,16 @@ } }, "glob": { - "version": "10.3.1", - "resolved": "https://registry.npmjs.org/glob/-/glob-10.3.1.tgz", - "integrity": "sha512-9BKYcEeIs7QwlCYs+Y3GBvqAMISufUS0i2ELd11zpZjxI5V9iyRj0HgzB5/cLf2NY4vcYBTYzJ7GIui7j/4DOw==", + "version": "10.3.3", + "resolved": "https://registry.npmjs.org/glob/-/glob-10.3.3.tgz", + "integrity": "sha512-92vPiMb/iqpmEgsOoIDvTjc50wf9CCCvMzsi6W0JLPeUKE8TWP1a73PgqSrqy7iAZxaSD1YdzU7QZR5LF51MJw==", "dev": true, "requires": { "foreground-child": "^3.1.0", "jackspeak": "^2.0.3", "minimatch": "^9.0.1", - "minipass": "^5.0.0 || ^6.0.2", - "path-scurry": "^1.10.0" + "minipass": "^5.0.0 || ^6.0.2 || ^7.0.0", + "path-scurry": "^1.10.1" } }, "json-parse-even-better-errors": { @@ -28654,9 +28082,9 @@ "dev": true }, "minimatch": { - "version": "9.0.2", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.2.tgz", - "integrity": "sha512-PZOT9g5v2ojiTL7r1xF6plNHLtOeTpSlDI007As2NlA2aYBMfVom17yqa6QzhmDP8QOhn7LjHTg7DFCVSSa6yg==", + "version": "9.0.3", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.3.tgz", + "integrity": "sha512-RHiac9mvaRw0x3AYRgDC1CxAP7HTcNrrECeA8YYJeWnpo+2Q5CegtZjaotWTWxDG3UeGA1coE05iH1mPjT/2mg==", "dev": true, "requires": { "brace-expansion": "^2.0.1" @@ -28922,9 +28350,9 @@ "dev": true }, "rollup": { - "version": "3.25.3", - "resolved": "https://registry.npmjs.org/rollup/-/rollup-3.25.3.tgz", - "integrity": "sha512-ZT279hx8gszBj9uy5FfhoG4bZx8c+0A1sbqtr7Q3KNWIizpTdDEPZbV2xcbvHsnFp4MavCQYZyzApJ+virB8Yw==", + "version": "3.27.2", + "resolved": "https://registry.npmjs.org/rollup/-/rollup-3.27.2.tgz", + "integrity": "sha512-YGwmHf7h2oUHkVBT248x0yt6vZkYQ3/rvE5iQuVBh3WO8GcJ6BNeOkpoX1yMHIiBm18EMLjBPIoUDkhgnyxGOQ==", "dev": true, "requires": { "fsevents": "~2.3.2" @@ -29247,15 +28675,15 @@ "dev": true }, "sigstore": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/sigstore/-/sigstore-1.6.0.tgz", - "integrity": "sha512-QODKff/qW/TXOZI6V/Clqu74xnInAS6it05mufj4/fSewexLtfEntgLZZcBtUK44CDQyUE5TUXYy1ARYzlfG9g==", + "version": "1.8.0", + "resolved": "https://registry.npmjs.org/sigstore/-/sigstore-1.8.0.tgz", + "integrity": "sha512-ogU8qtQ3VFBawRJ8wjsBEX/vIFeHuGs1fm4jZtjWQwjo8pfAt7T/rh+udlAN4+QUe0IzA8qRSc/YZ7dHP6kh+w==", "dev": true, "requires": { - "@sigstore/protobuf-specs": "^0.1.0", - "@sigstore/tuf": "^1.0.0", - "make-fetch-happen": "^11.0.1", - "tuf-js": "^1.1.3" + "@sigstore/bundle": "^1.0.0", + "@sigstore/protobuf-specs": "^0.2.0", + "@sigstore/tuf": "^1.0.3", + "make-fetch-happen": "^11.0.1" } }, "slash": { @@ -29314,16 +28742,16 @@ "dev": true }, "socket.io": { - "version": "4.7.1", - "resolved": "https://registry.npmjs.org/socket.io/-/socket.io-4.7.1.tgz", - "integrity": "sha512-W+utHys2w//dhFjy7iQQu9sGd3eokCjGbl2r59tyLqNiJJBdIebn3GAKEXBr3osqHTObJi2die/25bCx2zsaaw==", + "version": "4.7.2", + "resolved": "https://registry.npmjs.org/socket.io/-/socket.io-4.7.2.tgz", + "integrity": "sha512-bvKVS29/I5fl2FGLNHuXlQaUH/BlzX1IN6S+NKLNZpBsPZIDH+90eQmCs2Railn4YUiww4SzUedJ6+uzwFnKLw==", "dev": true, "requires": { "accepts": "~1.3.4", "base64id": "~2.0.0", "cors": "~2.8.5", "debug": "~4.3.2", - "engine.io": "~6.5.0", + "engine.io": "~6.5.2", "socket.io-adapter": "~2.5.2", "socket.io-parser": "~4.2.4" } @@ -29448,12 +28876,6 @@ } } }, - "sourcemap-codec": { - "version": "1.4.8", - "resolved": "https://registry.npmjs.org/sourcemap-codec/-/sourcemap-codec-1.4.8.tgz", - "integrity": "sha512-9NykojV5Uih4lgo5So5dtw+f0JgJX30KCNI8gwhz2J9A15wD0Ml6tjHKwf6fTSa6fAdVBdZeNOs9eJ71qCk8vA==", - "dev": true - }, "spdx-compare": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/spdx-compare/-/spdx-compare-1.0.0.tgz", @@ -29802,20 +29224,20 @@ } }, "tar-fs": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/tar-fs/-/tar-fs-3.0.3.tgz", - "integrity": "sha512-ZK36riGYnFI6LujIBfBRoDfeaaWUkStIFKwtPjnDWCKnsDE9kuQthG09aQjLjpzoRtVElEMZ/AIAURNb7N9mkA==", + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/tar-fs/-/tar-fs-3.0.4.tgz", + "integrity": "sha512-5AFQU8b9qLfZCX9zp2duONhPmZv0hGYiBPJsyUdqMjzq/mqVpy/rEUSeHk1+YitmxugaptgBh5oDGU3VsAJq4w==", "dev": true, "requires": { "mkdirp-classic": "^0.5.2", "pump": "^3.0.0", - "tar-stream": "^3.1.0" + "tar-stream": "^3.1.5" }, "dependencies": { "tar-stream": { - "version": "3.1.4", - "resolved": "https://registry.npmjs.org/tar-stream/-/tar-stream-3.1.4.tgz", - "integrity": "sha512-IlHr7ZOW6XaVBCrSCokUJG4IqUuRcWW76B8XbrtCotbaDh6zVGE7WPCzaSz1CN+acFmWiwoa+cE4RZsom0RzXg==", + "version": "3.1.6", + "resolved": "https://registry.npmjs.org/tar-stream/-/tar-stream-3.1.6.tgz", + "integrity": "sha512-B/UyjYwPpMBv+PaFSWAmtYjwdrlEaZQEhMIBFNC5oEG8lpiW8XjcSdmEaClj28ArfKScKHs2nshz3k2le6crsg==", "dev": true, "requires": { "b4a": "^1.6.4", @@ -29996,13 +29418,23 @@ "dev": true }, "tough-cookie": { - "version": "2.5.0", - "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.5.0.tgz", - "integrity": "sha512-nlLsUzgm1kfLXSXfRZMc1KLAugd4hqJHDTvc2hDIwS3mZAfMEuMbc03SujMF+GEcpaX/qboeycw6iO8JwVv2+g==", + "version": "4.1.3", + "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-4.1.3.tgz", + "integrity": "sha512-aX/y5pVRkfRnfmuX+OdbSdXvPe6ieKX/G2s7e98f4poJHnqH3281gDPm/metm6E/WRamfx7WC4HUqkWHfQHprw==", "dev": true, "requires": { - "psl": "^1.1.28", - "punycode": "^2.1.1" + "psl": "^1.1.33", + "punycode": "^2.1.1", + "universalify": "^0.2.0", + "url-parse": "^1.5.3" + }, + "dependencies": { + "universalify": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.2.0.tgz", + "integrity": "sha512-CJ1QgKmNg3CwvAv/kOFmtnEN05f0D/cn9QntgNOQlQF9dgvVTHj3t+8JPdjqawCHk7V/KA+fbUqzZ9XWhcqPUg==", + "dev": true + } } }, "tr46": { @@ -30035,9 +29467,9 @@ } }, "tslib": { - "version": "2.6.0", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.0.tgz", - "integrity": "sha512-7At1WUettjcSRHXCyYtTselblcHl9PJFFVKiCAy/bY97+BPZXSQ2wbq0P9s8tK2G7dFQfNnlJnPAiArVBVBsfA==" + "version": "2.6.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.1.tgz", + "integrity": "sha512-t0hLfiEKfMUoqhG+U1oid7Pva4bbDPHYfJNiB7BiIjRkj1pyC++4N3huJfqY6aRH6VTB0rvtzQwjM4K6qpfOig==" }, "tsutils": { "version": "3.21.0", @@ -30235,6 +29667,16 @@ "punycode": "^2.1.0" } }, + "url-parse": { + "version": "1.5.10", + "resolved": "https://registry.npmjs.org/url-parse/-/url-parse-1.5.10.tgz", + "integrity": "sha512-WypcfiRhfeUP9vvF0j6rw0J3hrWrw6iZv3+22h6iRMJ/8z1Tj6XfLP4DsUix5MhMPnXpiHDoKyoZ/bdCkwBCiQ==", + "dev": true, + "requires": { + "querystringify": "^2.1.1", + "requires-port": "^1.0.0" + } + }, "util-deprecate": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", @@ -30285,9 +29727,9 @@ } }, "validator": { - "version": "13.9.0", - "resolved": "https://registry.npmjs.org/validator/-/validator-13.9.0.tgz", - "integrity": "sha512-B+dGG8U3fdtM0/aNK4/X8CXq/EcxU2WPrPEkJGslb47qyHsxmbggTWK0yEA4qnYVNF+nxNlN88o14hIcPmSIEA==", + "version": "13.11.0", + "resolved": "https://registry.npmjs.org/validator/-/validator-13.11.0.tgz", + "integrity": "sha512-Ii+sehpSfZy+At5nPdnyMhx78fEoPDkR2XW/zimHEL3MyGJQOCQ7WeP20jPYRz7ZCpcKLB21NxuXHF3bxjStBQ==", "dev": true }, "vary": { @@ -30312,16 +29754,6 @@ "resolved": "https://registry.npmjs.org/vlq/-/vlq-1.0.1.tgz", "integrity": "sha512-gQpnTgkubC6hQgdIcRdYGDSDc+SaujOdyesZQMv6JlfQee/9Mp0Qhnys6WxDWvQnL5WZdT7o2Ul187aSt0Rq+w==" }, - "vm2": { - "version": "3.9.19", - "resolved": "https://registry.npmjs.org/vm2/-/vm2-3.9.19.tgz", - "integrity": "sha512-J637XF0DHDMV57R6JyVsTak7nIL8gy5KH4r1HiwWLf/4GBbb5MKL5y7LpmF4A8E2nR6XmzpmMFQ7V7ppPTmUQg==", - "dev": true, - "requires": { - "acorn": "^8.7.0", - "acorn-walk": "^8.2.0" - } - }, "void-elements": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/void-elements/-/void-elements-2.0.1.tgz", @@ -30614,17 +30046,16 @@ "dev": true }, "which-typed-array": { - "version": "1.1.9", - "resolved": "https://registry.npmjs.org/which-typed-array/-/which-typed-array-1.1.9.tgz", - "integrity": "sha512-w9c4xkx6mPidwp7180ckYWfMmvxpjlZuIudNtDf4N/tTAUB8VJbX25qZoAsrtGuYNnGw3pa0AXgbGKRB8/EceA==", + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/which-typed-array/-/which-typed-array-1.1.11.tgz", + "integrity": "sha512-qe9UWWpkeG5yzZ0tNYxDmd7vo58HDBc39mZ0xWWpolAGADdFOzkfamWLDxkOWcvHQKVmdTyQdLD4NOfjLWTKew==", "dev": true, "requires": { "available-typed-arrays": "^1.0.5", "call-bind": "^1.0.2", "for-each": "^0.3.3", "gopd": "^1.0.1", - "has-tostringtag": "^1.0.0", - "is-typed-array": "^1.1.10" + "has-tostringtag": "^1.0.0" } }, "wide-align": { @@ -30642,12 +30073,6 @@ "integrity": "sha512-CC1bOL87PIWSBhDcTrdeLo6eGT7mCFtrg0uIJtqJUFyK+eJnzl8A1niH56uu7KMa5XFrtiV+AQuHO3n7DsHnLQ==", "dev": true }, - "word-wrap": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.3.tgz", - "integrity": "sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ==", - "dev": true - }, "workerpool": { "version": "6.2.1", "resolved": "https://registry.npmjs.org/workerpool/-/workerpool-6.2.1.tgz", diff --git a/front-end/package.json b/front-end/package.json index a925da6b83..b8df021653 100644 --- a/front-end/package.json +++ b/front-end/package.json @@ -38,7 +38,7 @@ "@types/ws": "8.5.4", "bootstrap": "5.1.3", "class-transformer": "^0.5.1", - "fecfile-validate": "https://github.com/fecgov/fecfile-validate#d3aa0b66f11cfc8e09b6e1fb81f7678db15fd0ae", + "fecfile-validate": "https://github.com/fecgov/fecfile-validate#d313a8bf821a2bc0957b16a7c899544de898281e", "intl-tel-input": "^17.0.18", "jwt-decode": "^3.1.2", "lodash": "^4.17.21", @@ -63,8 +63,8 @@ "@angular-eslint/template-parser": "^16.0.3", "@angular/cli": "^16.1.0", "@angular/compiler-cli": "~16.1.1", - "@cypress-audit/lighthouse": "^1.3.1", - "@cypress/schematic": "^1.6.0", + "@cypress-audit/lighthouse": "^1.4.2", + "@cypress/schematic": "^2.5.0", "@types/intl-tel-input": "^17.0.5", "@types/jasmine": "~3.10.0", "@types/lodash": "^4.14.178", @@ -72,8 +72,8 @@ "@types/node": "^12.11.1", "@typescript-eslint/eslint-plugin": "^5.43.0", "@typescript-eslint/parser": "^5.43.0", - "cypress": "^10.10.0", - "cypress-mochawesome-reporter": "^3.2.3", + "cypress": "^12.17.0", + "cypress-mochawesome-reporter": "^3.5.1", "eslint": "^8.28.0", "glob": "^7.2.0", "jasmine-core": "~4.0.0", @@ -89,4 +89,4 @@ "browser": { "crypto": false } -} \ No newline at end of file +} diff --git a/front-end/src/app/profile/account-info/account-info.component.html b/front-end/src/app/profile/account-info/account-info.component.html index eefc476b66..5a4d08cfe9 100644 --- a/front-end/src/app/profile/account-info/account-info.component.html +++ b/front-end/src/app/profile/account-info/account-info.component.html @@ -1,224 +1,211 @@ -

Account Info

+

Account information

-
+
-

Committee Info

+

Contributor

-
+
-

COMMITTEE ID

-

- {{ (committeeAccount$ | async)?.committee_id }} -

+ +
-

COMMITTEE NAME

-

- {{ (committeeAccount$ | async)?.name }} -

+ +
-
+
+
+
-

TYPE OF COMMITTEE

-

- {{ (committeeAccount$ | async)?.committee_type_full }} -

+ +
-
- - - -
+
-

Committee Address

+

Address

-
+
-

STREET ADDRESS

-

- {{ (committeeAccount$ | async)?.street_1 }} -

+ +
-
+
-

APARTMENT, SUITE, ETC.

-

- {{ (committeeAccount$ | async)?.street_2 }} -

+ +
-
+
+
+
-

CITY

-

- {{ (committeeAccount$ | async)?.city }} -

+ +
-

STATE/PROVINCE

-

- {{ (committeeAccount$ | async)?.state }} -

+ +
-
+
-

ZIP/POSTAL CODE

-

- {{ (committeeAccount$ | async)?.zip }} -

+ +
-
+
+
+
-

EMAIL

-

- {{ (committeeAccount$ | async)?.email }} -

+ +
-
+
-

WEBSITE

-

- {{ (committeeAccount$ | async)?.website }} -

+ +
-
- - - -
+
-

Treasurer

+

Treasurer

-
+
-

FIRST NAME

-

- {{ (committeeAccount$ | async)?.treasurer_name_1 }} -

+ +
-
+
-

LAST NAME

-

- {{ (committeeAccount$ | async)?.treasurer_name_2 }} -

+ +
-
+
+
+
-

STREET ADDRESS

-

- {{ (committeeAccount$ | async)?.treasurer_street_1 }} -

+ +
-
+
-

APPARTMENT, SUITE, ETC.

-

- {{ (committeeAccount$ | async)?.treasurer_street_2 }} -

+ +
-
+
+
+
-

CITY

-

- {{ (committeeAccount$ | async)?.treasurer_city }} -

+ +
-

STATE/PROVINCE

-

- {{ (committeeAccount$ | async)?.treasurer_state }} -

+ +
-
+
-

ZIP/POSTAL CODE

-

- {{ (committeeAccount$ | async)?.treasurer_zip }} -

+ +
+
+
-

TELEPHONE

-

- {{ (committeeAccount$ | async)?.treasurer_phone }} -

+ + +
-
- - - -
+
-

Custodian

+

Custodian

-

CUSTODIAN OF RECORDS

-

- {{ (committeeAccount$ | async)?.custodian_name_full }} -

+ +
-
- - diff --git a/front-end/src/app/reports/transactions/double-transaction-detail/double-transaction-detail.component.html b/front-end/src/app/reports/transactions/double-transaction-detail/double-transaction-detail.component.html index d0c70695d7..2675af8867 100644 --- a/front-end/src/app/reports/transactions/double-transaction-detail/double-transaction-detail.component.html +++ b/front-end/src/app/reports/transactions/double-transaction-detail/double-transaction-detail.component.html @@ -1,23 +1,30 @@

{{ transaction?.transactionType?.title }}

READ ONLY

-

{{ groupDescription }}

+

{{ transactionType?.description }}

- {{ parentAccordionTitle }}: -

{{ parentAccordionSubTitle }}

{{ transactionType?.accordionTitle }}: +

+ {{ transactionType?.accordionSubText }} +

-

{{ parentTransactionTitle }}

-

Contact

+

+ {{ transactionType?.formTitle }} +

+

{{ transactionType?.contactTitle }}

- + @@ -47,7 +54,7 @@

Address

[templateMap]="templateMap" > - +

Employer

Employer >
-

{{ templateMap.amountInputHeader }}

- - - -

{{ templateMap['candidateInputHeader'] }}

+ +

{{ transactionType?.amountInputHeader }}

+ + +
+ +

{{ transactionType?.amountInputHeader }}

+ + +
+ +

Terms

+ + +
+ +

Committee/Candidate Information

{{ templateMap['candidateInputHeader'] }} [readonly]="true" > @@ -92,8 +124,8 @@

{{ templateMap['candidateInputHeader'] }}

- -

Election Information

+ +

Election information

Election Information >
-

Additional Information

+

Additional information

+ + + +
+
+ +
+
+
+ +
-

{{ parentFooter }}

+

{{ transactionType?.footer }}

@@ -120,23 +168,28 @@

Additional Information

- {{ childAccordionTitle }}: -

{{ childAccordionSubTitle }}

{{ childTransactionType?.accordionTitle }}: +

+ {{ childTransactionType?.accordionSubText }} +

{{ childTransaction?.transactionType?.title }}

-

- {{ childTransactionSubTitle }} +

+

-

{{ childContactLabel }}

+

{{ childTransactionType?.contactTitle }}

@@ -145,12 +198,14 @@

{{ childContactLabel }}

- + @@ -171,7 +226,10 @@

Address

>

Employer

Employer >
- -

{{ templateMap['candidateInputHeader'] }}

+ +

Committee/Candidate Information

{{ templateMap['candidateInputHeader'] }} [readonly]="true" > @@ -206,8 +267,8 @@

{{ templateMap['candidateInputHeader'] }}

- -

Election Information

+ +

Election information

Election Information >
- -

{{ childTemplateMap.amountInputHeader }}

- - -

Additional Information

+ +

{{ childTransaction?.transactionType?.amountInputHeader }}

+ + +
+ +

{{ childTransaction?.transactionType?.amountInputHeader }}

+ + +
+

Additional information

{ - this.childForm.get(autoGeneratedField)?.disable(); - }); - - // Determine which accordion pane to open initially based on transaction id in page URL - const transactionId = this.route.snapshot.params['transactionId']; - if (this.childTransaction && transactionId && this.childTransaction?.id === transactionId) { - this.accordionActiveIndex = 1; - } - } else { - throw new Error('Fecfile: child template map not found'); - } - } else { - throw new Error('Fecfile: parent template map not found'); + // Determine which accordion pane to open initially based on transaction id in page URL + const transactionId = this.route.snapshot.params['transactionId']; + if (this.childTransaction && transactionId && this.childTransaction?.id === transactionId) { + this.accordionActiveIndex = 1; } } } diff --git a/front-end/src/app/reports/transactions/transaction-container/transaction-container.component.html b/front-end/src/app/reports/transactions/transaction-container/transaction-container.component.html index e4b30d659c..891dddac61 100644 --- a/front-end/src/app/reports/transactions/transaction-container/transaction-container.component.html +++ b/front-end/src/app/reports/transactions/transaction-container/transaction-container.component.html @@ -1,6 +1,6 @@ - - - - + + + + diff --git a/front-end/src/app/reports/transactions/transaction-container/transaction-container.component.ts b/front-end/src/app/reports/transactions/transaction-container/transaction-container.component.ts index 2e55a23ef2..133d67af40 100644 --- a/front-end/src/app/reports/transactions/transaction-container/transaction-container.component.ts +++ b/front-end/src/app/reports/transactions/transaction-container/transaction-container.component.ts @@ -3,8 +3,6 @@ import { ActivatedRoute } from '@angular/router'; import { takeUntil } from 'rxjs'; import { Store } from '@ngrx/store'; import { Title } from '@angular/platform-browser'; -import { DoubleTransactionGroup } from 'app/shared/models/transaction-groups/double-transaction-group.model'; -import { TransactionGroup } from 'app/shared/models/transaction-groups/transaction-group.model'; import { Transaction } from 'app/shared/models/transaction.model'; import { DestroyerComponent } from 'app/shared/components/app-destroyer.component'; @@ -26,11 +24,7 @@ export class TransactionContainerComponent extends DestroyerComponent { }); } - isTransactionGroup() { - return this.transaction?.transactionType?.transactionGroup instanceof TransactionGroup; - } - - isDoubleTransactionGroup() { - return this.transaction?.transactionType?.transactionGroup instanceof DoubleTransactionGroup; + isDoubleTransaction() { + return !!this.transaction?.transactionType?.dependentChildTransactionType; } } diff --git a/front-end/src/app/reports/transactions/transaction-detail/transaction-detail.component.html b/front-end/src/app/reports/transactions/transaction-detail/transaction-detail.component.html index 36bb282652..ff58db45de 100644 --- a/front-end/src/app/reports/transactions/transaction-detail/transaction-detail.component.html +++ b/front-end/src/app/reports/transactions/transaction-detail/transaction-detail.component.html @@ -10,8 +10,11 @@

Contact

@@ -28,7 +31,7 @@

Contact

[formSubmitted]="formSubmitted" [templateMap]="templateMap" [entityRole]="getEntityType() === ContactTypes.ORGANIZATION ? 'ORGANIZATION' : 'COMMITTEE'" - [includeFecId]="hasCommitteeFecIdInput" + [includeFecId]="!!transactionType?.hasCommitteeFecId()" > @@ -38,7 +41,7 @@

Contact

Address

- +

Employer

Employer >
-

{{ templateMap.amountInputHeader }}

- - - -

{{ templateMap['candidateInputHeader'] }}

- +

{{ transaction?.transactionType?.amountInputHeader }}

+ + +
+ +

Loan information

+ + +
+ +

Terms

+ + +
+ +

Committee/Candidate Information

+ {{ templateMap['candidateInputHeader'] }} [readonly]="true" > @@ -79,13 +108,13 @@

{{ templateMap['candidateInputHeader'] }}

[form]="form" [formSubmitted]="formSubmitted" [templateMap]="templateMap" - [hasCandidateOfficeInput]="hasCandidateOfficeInput" + [hasCandidateOfficeInput]="!!transactionType?.hasCandidateOffice()" >
- -

Election Information

+ +

Election information

Election Information >
-

Additional Information

+

Additional information

{ component = fixture.componentInstance; component.transaction = transaction; component.templateMap = testTemplateMap; - component.ngOnChanges(); + component.ngOnInit(); }); it('should create', () => { diff --git a/front-end/src/app/reports/transactions/transaction-detail/transaction-detail.component.ts b/front-end/src/app/reports/transactions/transaction-detail/transaction-detail.component.ts index 32bf6730f2..d5707dc1a5 100644 --- a/front-end/src/app/reports/transactions/transaction-detail/transaction-detail.component.ts +++ b/front-end/src/app/reports/transactions/transaction-detail/transaction-detail.component.ts @@ -1,50 +1,9 @@ -import { Component, OnChanges } from '@angular/core'; +import { Component } from '@angular/core'; import { TransactionTypeBaseComponent } from 'app/shared/components/transaction-type-base/transaction-type-base.component'; -import { ContactTypes } from 'app/shared/models/contact.model'; -import { TransactionGroup } from 'app/shared/models/transaction-groups/transaction-group.model'; -import { takeUntil } from 'rxjs'; @Component({ selector: 'app-transaction-detail', templateUrl: './transaction-detail.component.html', styleUrls: ['../transaction.scss'], }) -export class TransactionDetailComponent extends TransactionTypeBaseComponent implements OnChanges { - override formProperties: string[] = []; - hasEmployerInput = false; - hasCommitteeFecIdInput = false; - hasElectionInformationInput = false; - hasCandidateInformationInput = false; - hasCandidateCommitteeInput = false; - hasCandidateOfficeInput = true; - - ngOnChanges(): void { - if (this.transaction?.transactionType?.templateMap) { - const transactionType = this.transaction.transactionType; - const transactionGroup = transactionType.transactionGroup as TransactionGroup; - - this.contactTypeOptions = transactionGroup.getContactTypeOptions(); - this.formProperties = transactionGroup.getFormProperties(transactionType.templateMap, transactionType.scheduleId); - this.hasCommitteeFecIdInput = transactionGroup.hasCommitteeFecIdInput(); - this.hasElectionInformationInput = transactionGroup.hasElectionInformationInput(); - this.hasCandidateInformationInput = transactionGroup.hasCandidateInformationInput(); - this.hasCandidateCommitteeInput = transactionGroup.hasCandidateCommitteeInput(); - this.hasCandidateOfficeInput = transactionGroup.hasCandidateOfficeInput(); - - super.ngOnInit(); - - this.hasEmployerInput = transactionGroup.hasEmployerInput( - this.form.get('entity_type')?.value, - transactionType.scheduleId - ); - this.form - .get('entity_type') - ?.valueChanges.pipe(takeUntil(this.destroy$)) - .subscribe((entityType: ContactTypes) => { - this.hasEmployerInput = transactionGroup.hasEmployerInput(entityType, transactionType.scheduleId); - }); - } else { - throw new Error('Fecfile: Template map not found for transaction component'); - } - } -} +export class TransactionDetailComponent extends TransactionTypeBaseComponent {} diff --git a/front-end/src/app/reports/transactions/transaction-list/transaction-list.component.html b/front-end/src/app/reports/transactions/transaction-list/transaction-list.component.html index 84db07d508..2b1ca4b0cc 100644 --- a/front-end/src/app/reports/transactions/transaction-list/transaction-list.component.html +++ b/front-end/src/app/reports/transactions/transaction-list/transaction-list.component.html @@ -28,7 +28,7 @@

Transactions in this report

- +
diff --git a/front-end/src/app/reports/transactions/transaction-list/transaction-loans-and-debts/transaction-loans-and-debts.component.ts b/front-end/src/app/reports/transactions/transaction-list/transaction-loans-and-debts/transaction-loans-and-debts.component.ts index e95d47392b..c9f915961b 100644 --- a/front-end/src/app/reports/transactions/transaction-list/transaction-loans-and-debts/transaction-loans-and-debts.component.ts +++ b/front-end/src/app/reports/transactions/transaction-list/transaction-loans-and-debts/transaction-loans-and-debts.component.ts @@ -8,6 +8,7 @@ import { Store } from '@ngrx/store'; import { ReportService } from 'app/shared/services/report.service'; import { ScheduleC1TransactionTypeLabels } from 'app/shared/models/schc1-transaction.model'; import { ScheduleC2TransactionTypeLabels } from 'app/shared/models/schc2-transaction.model'; +import { ScheduleCTransactionTypeLabels } from 'app/shared/models/schc-transaction.model'; @Component({ selector: 'app-transaction-loans-and-debts', @@ -15,7 +16,11 @@ import { ScheduleC2TransactionTypeLabels } from 'app/shared/models/schc2-transac styleUrls: ['../../transaction.scss'], }) export class TransactionLoansAndDebtsComponent extends TransactionListTableBaseComponent implements OnInit { - scheduleTransactionTypeLabels: LabelList = ScheduleC1TransactionTypeLabels.concat(ScheduleC2TransactionTypeLabels); + scheduleTransactionTypeLabels: LabelList = [ + ...ScheduleCTransactionTypeLabels, + ...ScheduleC1TransactionTypeLabels, + ...ScheduleC2TransactionTypeLabels, + ]; constructor( protected override messageService: MessageService, diff --git a/front-end/src/app/reports/transactions/transaction-type-picker/transaction-type-picker.component.ts b/front-end/src/app/reports/transactions/transaction-type-picker/transaction-type-picker.component.ts index cce3262dca..0639e473ec 100644 --- a/front-end/src/app/reports/transactions/transaction-type-picker/transaction-type-picker.component.ts +++ b/front-end/src/app/reports/transactions/transaction-type-picker/transaction-type-picker.component.ts @@ -234,8 +234,9 @@ export class TransactionTypePickerComponent extends DestroyerComponent implement ]; case ScheduleCTransactionGroups.LOANS: return [ - ScheduleCTransactionTypes.LOANS_RECEIVED_FROM_INDIVIDUAL, - ScheduleCTransactionTypes.LOANS_RECEIVED_FROM_BANK, + ScheduleCTransactionTypes.LOAN_RECEIVED_FROM_INDIVIDUAL, + ScheduleCTransactionTypes.LOAN_RECEIVED_FROM_BANK, + ScheduleCTransactionTypes.LOAN_BY_COMMITTEE, ]; case ScheduleCTransactionGroups.DEBTS: return []; diff --git a/front-end/src/app/shared/components/contact-form/contact-form.component.html b/front-end/src/app/shared/components/contact-form/contact-form.component.html index 809cba9f27..50edd357a4 100644 --- a/front-end/src/app/shared/components/contact-form/contact-form.component.html +++ b/front-end/src/app/shared/components/contact-form/contact-form.component.html @@ -9,8 +9,11 @@

Contact

{ component.form.patchValue({ candidate_office: CandidateOfficeTypes.PRESIDENTIAL, }); - fixture.detectChanges(); fixture .whenStable() diff --git a/front-end/src/app/shared/components/contact-form/contact-form.component.ts b/front-end/src/app/shared/components/contact-form/contact-form.component.ts index 6fc1749bbf..879fd7abfa 100644 --- a/front-end/src/app/shared/components/contact-form/contact-form.component.ts +++ b/front-end/src/app/shared/components/contact-form/contact-form.component.ts @@ -1,5 +1,5 @@ import { Component, Input, OnInit } from '@angular/core'; -import { FormBuilder, FormGroup } from '@angular/forms'; +import { FormBuilder, FormControl, FormGroup } from '@angular/forms'; import { ContactService } from 'app/shared/services/contact.service'; import { FecApiService } from 'app/shared/services/fec-api.service'; import { CountryCodeLabels, LabelUtils, PrimeOptions, StatesCodeLabels } from 'app/shared/utils/label.utils'; @@ -50,6 +50,7 @@ export class ContactFormComponent extends DestroyerComponent implements OnInit { } ngOnInit(): void { + this.form.addControl('contact_1', new FormControl()); this.contactTypeOptions = LabelUtils.getPrimeOptions(ContactTypeLabels); this.candidateOfficeTypeOptions = LabelUtils.getPrimeOptions(CandidateOfficeTypeLabels); this.stateOptions = LabelUtils.getPrimeOptions(StatesCodeLabels); diff --git a/front-end/src/app/shared/components/contact-lookup/contact-lookup.component.html b/front-end/src/app/shared/components/contact-lookup/contact-lookup.component.html index fbe2315a7a..2235fa5147 100644 --- a/front-end/src/app/shared/components/contact-lookup/contact-lookup.component.html +++ b/front-end/src/app/shared/components/contact-lookup/contact-lookup.component.html @@ -1,4 +1,4 @@ - +
+ diff --git a/front-end/src/app/shared/components/contact-lookup/contact-lookup.component.spec.ts b/front-end/src/app/shared/components/contact-lookup/contact-lookup.component.spec.ts index ce9259b42d..795ea35439 100644 --- a/front-end/src/app/shared/components/contact-lookup/contact-lookup.component.spec.ts +++ b/front-end/src/app/shared/components/contact-lookup/contact-lookup.component.spec.ts @@ -7,6 +7,7 @@ import { CandidateLookupResponse, CommitteeLookupResponse, Contact, + ContactTypeLabels, ContactTypes, FecApiCommitteeLookupData, FecfileCandidateLookupData, FecfileCommitteeLookupData, FecfileIndividualLookupData, @@ -19,6 +20,7 @@ import { testMockStore } from 'app/shared/utils/unit-test.utils'; import { DropdownModule } from 'primeng/dropdown'; import { of } from 'rxjs'; +import { LabelUtils } from 'app/shared/utils/label.utils'; import { SelectItem } from 'primeng/api'; import { AutoCompleteModule } from 'primeng/autocomplete'; import { DialogModule } from 'primeng/dialog'; @@ -56,6 +58,15 @@ describe('ContactLookupComponent', () => { expect(component).toBeTruthy(); }); + it('#ngOnInit', () => { + component.contactTypeOptions = LabelUtils.getPrimeOptions(ContactTypeLabels, + [ContactTypes.INDIVIDUAL]); + component.ngOnInit(); + component.contactTypeFormControl.setValue(ContactTypes.CANDIDATE); + expect(component.contactTypeFormControl.value).toEqual(ContactTypes.CANDIDATE); + expect(component.requiredErrorMessage).toEqual('Candidate information is required'); + }); + it('#onDropdownSearch empty search', fakeAsync(() => { const testEvent = { query: null }; component.onDropdownSearch(testEvent); diff --git a/front-end/src/app/shared/components/contact-lookup/contact-lookup.component.ts b/front-end/src/app/shared/components/contact-lookup/contact-lookup.component.ts index d0558fb693..080dd37e9e 100644 --- a/front-end/src/app/shared/components/contact-lookup/contact-lookup.component.ts +++ b/front-end/src/app/shared/components/contact-lookup/contact-lookup.component.ts @@ -1,8 +1,8 @@ -import { ChangeDetectorRef, Component, EventEmitter, Input, OnChanges, Output } from '@angular/core'; -import { FormBuilder, FormControl, FormGroup } from '@angular/forms'; -import { Contact, ContactTypes, FecApiLookupData } from 'app/shared/models/contact.model'; +import { Component, EventEmitter, Input, OnInit, Output } from '@angular/core'; +import { FormControl, FormGroup } from '@angular/forms'; +import { Contact, ContactTypeLabels, ContactTypes, FecApiLookupData } from 'app/shared/models/contact.model'; import { ContactService } from 'app/shared/services/contact.service'; -import { PrimeOptions } from 'app/shared/utils/label.utils'; +import { LabelUtils, PrimeOptions } from 'app/shared/utils/label.utils'; import { SelectItemGroup } from 'primeng/api'; @Component({ @@ -10,9 +10,13 @@ import { SelectItemGroup } from 'primeng/api'; templateUrl: './contact-lookup.component.html', styleUrls: ['./contact-lookup.component.scss'], }) -export class ContactLookupComponent implements OnChanges { +export class ContactLookupComponent implements OnInit { + @Input() form: FormGroup = new FormGroup([]); + @Input() formSubmitted = false; + @Input() contactTypeOptions: PrimeOptions = []; @Input() contactTypeFormControl: FormControl = new FormControl(); + @Input() selectedContactFormControlName = ''; @Input() contactTypeReadOnly = false; @Input() showSearchBox = true; @Input() showCreateNewContactButton = true; @@ -26,23 +30,22 @@ export class ContactLookupComponent implements OnChanges { @Output() contactLookupSelect = new EventEmitter(); @Output() createNewContactSelect = new EventEmitter(); - contactLookupForm: FormGroup = this.formBuilder.group({ - selectedContactType: this.contactTypeFormControl, - selectedContact: new FormControl(''), - }); - contactLookupList: SelectItemGroup[] = []; searchTerm = ''; + requiredErrorMessage = ''; constructor( - private changeDetectorRef: ChangeDetectorRef, - private formBuilder: FormBuilder, private contactService: ContactService - ) {} - - ngOnChanges(): void { - this.changeDetectorRef.detectChanges(); + ) { } + ngOnInit(): void { + this.contactTypeFormControl.valueChanges.subscribe((contactType) => { + this.requiredErrorMessage = LabelUtils.get( + ContactTypeLabels, contactType) + ' information is required'; + }); + if (this.contactTypeOptions && this.contactTypeOptions.length > 0) { + this.contactTypeFormControl.setValue(this.contactTypeOptions[0].value); + } } // eslint-disable-next-line @typescript-eslint/no-explicit-any @@ -86,10 +89,9 @@ export class ContactLookupComponent implements OnChanges { // eslint-disable-next-line @typescript-eslint/no-explicit-any onContactLookupSelect(event: any) { this.contactLookupSelect.emit(event); - this.contactLookupForm.patchValue({ selectedContact: '' }); + this.form.get(this.selectedContactFormControlName)?.patchValue(''); } - // eslint-disable-next-line @typescript-eslint/no-explicit-any onCreateNewContactSelect() { this.createNewContactSelect.emit(); } diff --git a/front-end/src/app/shared/components/fec-international-phone-input/fec-international-phone-input.component.html b/front-end/src/app/shared/components/fec-international-phone-input/fec-international-phone-input.component.html index a9ac0ad28e..5a58a6828b 100644 --- a/front-end/src/app/shared/components/fec-international-phone-input/fec-international-phone-input.component.html +++ b/front-end/src/app/shared/components/fec-international-phone-input/fec-international-phone-input.component.html @@ -1,5 +1,5 @@
-
\ No newline at end of file diff --git a/front-end/src/app/shared/components/fec-international-phone-input/fec-international-phone-input.component.ts b/front-end/src/app/shared/components/fec-international-phone-input/fec-international-phone-input.component.ts index 7bfc944bd7..f252670ed1 100644 --- a/front-end/src/app/shared/components/fec-international-phone-input/fec-international-phone-input.component.ts +++ b/front-end/src/app/shared/components/fec-international-phone-input/fec-international-phone-input.component.ts @@ -1,4 +1,4 @@ -import { AfterViewInit, Component, ElementRef, OnDestroy, Optional, Self, ViewChild } from '@angular/core'; +import { AfterViewInit, Component, ElementRef, Input, OnChanges, OnDestroy, Optional, Self, ViewChild } from '@angular/core'; import { ControlValueAccessor, NgControl } from '@angular/forms'; import * as intlTelInput from 'intl-tel-input'; @@ -7,13 +7,15 @@ import * as intlTelInput from 'intl-tel-input'; templateUrl: './fec-international-phone-input.component.html', styleUrls: ['./fec-international-phone-input.component.scss'], }) -export class FecInternationalPhoneInputComponent implements AfterViewInit, OnDestroy, ControlValueAccessor { +export class FecInternationalPhoneInputComponent implements AfterViewInit, OnChanges, OnDestroy, ControlValueAccessor { + @Input() disabled = false; @ViewChild('internationalPhoneInput') internationalPhoneInputChild: ElementRef | undefined; private intlTelInput: intlTelInput.Plugin | undefined; private intlTelInputOptions: intlTelInput.Options = { separateDialCode: true, preferredCountries: ['us'], + allowDropdown: !this.disabled }; private countryCode: string | undefined; private number = ''; @@ -24,6 +26,10 @@ export class FecInternationalPhoneInputComponent implements AfterViewInit, OnDes } } + ngOnChanges(): void { + this.intlTelInputOptions.allowDropdown = !this.disabled; + } + /** * Write form value to the DOM element (model => view) */ diff --git a/front-end/src/app/shared/components/inputs/additional-info-input/additional-info-input.component.html b/front-end/src/app/shared/components/inputs/additional-info-input/additional-info-input.component.html index 306c78df1d..33a8fad441 100644 --- a/front-end/src/app/shared/components/inputs/additional-info-input/additional-info-input.component.html +++ b/front-end/src/app/shared/components/inputs/additional-info-input/additional-info-input.component.html @@ -1,26 +1,30 @@
-
- - {{ purposeDescriptionLabelNotice }} -
- - + +
+ + {{ purposeDescriptionLabelNotice }} +
+ + +
-
+
diff --git a/front-end/src/app/shared/components/inputs/additional-info-input/additional-info-input.component.ts b/front-end/src/app/shared/components/inputs/additional-info-input/additional-info-input.component.ts index 5f26ed8f12..ecd9e558ec 100644 --- a/front-end/src/app/shared/components/inputs/additional-info-input/additional-info-input.component.ts +++ b/front-end/src/app/shared/components/inputs/additional-info-input/additional-info-input.component.ts @@ -4,6 +4,7 @@ import { BaseInputComponent } from '../base-input.component'; import { LabelUtils, PrimeOptions, CategoryCodeLabels } from 'app/shared/utils/label.utils'; import { schema as memoTextSchema } from 'fecfile-validate/fecfile_validate_js/dist/Text'; import { ValidateUtils } from 'app/shared/utils/validate.utils'; +import { Transaction } from 'app/shared/models/transaction.model'; @Component({ selector: 'app-additional-info-input', @@ -15,6 +16,7 @@ export class AdditionalInfoInputComponent extends BaseInputComponent implements @Input() purposeDescriptionLabel = ''; @Input() purposeDescriptionLabelNotice?: string; @Input() purposeDescriptionPrefix?: string; + @Input() transaction?: Transaction; categoryCodeOptions: PrimeOptions = LabelUtils.getPrimeOptions(CategoryCodeLabels); ngOnInit(): void { diff --git a/front-end/src/app/shared/components/inputs/amount-input/amount-input.component.html b/front-end/src/app/shared/components/inputs/amount-input/amount-input.component.html index 226d68a8a6..7808348bd6 100644 --- a/front-end/src/app/shared/components/inputs/amount-input/amount-input.component.html +++ b/front-end/src/app/shared/components/inputs/amount-input/amount-input.component.html @@ -2,7 +2,7 @@
- +
diff --git a/front-end/src/app/shared/components/inputs/amount-input/amount-input.component.ts b/front-end/src/app/shared/components/inputs/amount-input/amount-input.component.ts index adf3dd200e..9390387b55 100644 --- a/front-end/src/app/shared/components/inputs/amount-input/amount-input.component.ts +++ b/front-end/src/app/shared/components/inputs/amount-input/amount-input.component.ts @@ -1,8 +1,8 @@ import { ChangeDetectorRef, Component, Input, OnChanges, OnInit, ViewChild } from '@angular/core'; import { Store } from '@ngrx/store'; +import { Transaction } from 'app/shared/models/transaction.model'; import { InputNumber } from 'primeng/inputnumber'; import { BaseInputComponent } from '../base-input.component'; -import { Transaction } from 'app/shared/models/transaction.model'; @Component({ selector: 'app-amount-input', @@ -14,7 +14,7 @@ export class AmountInputComponent extends BaseInputComponent implements OnInit, @Input() negativeAmountValueOnly = false; @Input() showAggregate = true; - @Input() memoCodeReadOnly: boolean | undefined; + @Input() memoCodeCheckboxLabel = ''; @Input() memoItemHelpText: string | undefined; @Input() transaction: Transaction | undefined; diff --git a/front-end/src/app/shared/components/inputs/committee-input/committee-input.component.html b/front-end/src/app/shared/components/inputs/committee-input/committee-input.component.html index 6128235235..6c0664b465 100644 --- a/front-end/src/app/shared/components/inputs/committee-input/committee-input.component.html +++ b/front-end/src/app/shared/components/inputs/committee-input/committee-input.component.html @@ -3,13 +3,14 @@
- + [readonly]="readonly" + />
-
+
- + [readonly]="readonly" + /> +
+
+
+ + + +
+
+
+
+ + + +
+
+
+
+ + + +
+
+
+
+
+
+ +
+
+
+
diff --git a/front-end/src/app/shared/components/inputs/loan-info-input/loan-info-input.component.spec.ts b/front-end/src/app/shared/components/inputs/loan-info-input/loan-info-input.component.spec.ts new file mode 100644 index 0000000000..b4e9ff3c34 --- /dev/null +++ b/front-end/src/app/shared/components/inputs/loan-info-input/loan-info-input.component.spec.ts @@ -0,0 +1,21 @@ +import { ComponentFixture, TestBed } from '@angular/core/testing'; + +import { LoanInfoInputComponent } from './loan-info-input.component'; + +describe('LoanInfoInputComponent', () => { + let component: LoanInfoInputComponent; + let fixture: ComponentFixture; + + beforeEach(() => { + TestBed.configureTestingModule({ + declarations: [LoanInfoInputComponent] + }); + fixture = TestBed.createComponent(LoanInfoInputComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/front-end/src/app/shared/components/inputs/loan-info-input/loan-info-input.component.ts b/front-end/src/app/shared/components/inputs/loan-info-input/loan-info-input.component.ts new file mode 100644 index 0000000000..134bc0e3d5 --- /dev/null +++ b/front-end/src/app/shared/components/inputs/loan-info-input/loan-info-input.component.ts @@ -0,0 +1,28 @@ +import { Component, Input, OnInit } from '@angular/core'; +import { takeUntil } from 'rxjs'; +import { BaseInputComponent } from '../base-input.component'; +import { Transaction } from 'app/shared/models/transaction.model'; + +@Component({ + selector: 'app-loan-info-input', + templateUrl: './loan-info-input.component.html', +}) +export class LoanInfoInputComponent extends BaseInputComponent implements OnInit { + @Input() readonly = false; + + @Input() memoItemHelpText: string | undefined; + @Input() transaction: Transaction | undefined; + + ngOnInit(): void { + // Set value to zero until ticket #1103 implemented + this.form.get('loan_payment_to_date')?.setValue(0); + + // Set balance to amount until ticket #1103 implemented + this.form + .get(this.templateMap.amount) + ?.valueChanges.pipe(takeUntil(this.destroy$)) + .subscribe((value) => { + this.form.get(this.templateMap.balance)?.setValue(value); + }); + } +} diff --git a/front-end/src/app/shared/components/inputs/loan-terms-input/loan-terms-input.component.html b/front-end/src/app/shared/components/inputs/loan-terms-input/loan-terms-input.component.html new file mode 100644 index 0000000000..d08c022846 --- /dev/null +++ b/front-end/src/app/shared/components/inputs/loan-terms-input/loan-terms-input.component.html @@ -0,0 +1,86 @@ +
+
+
+
+ + + +
+
+
+
+ + + +
+
+
+
+ + + +
+
+
+
+
+ +
+
+
+
+ +
+
+ +
+
+
+
+ +
+
+
diff --git a/front-end/src/app/shared/components/inputs/loan-terms-input/loan-terms-input.component.spec.ts b/front-end/src/app/shared/components/inputs/loan-terms-input/loan-terms-input.component.spec.ts new file mode 100644 index 0000000000..e0bb7ec282 --- /dev/null +++ b/front-end/src/app/shared/components/inputs/loan-terms-input/loan-terms-input.component.spec.ts @@ -0,0 +1,40 @@ +import { ComponentFixture, TestBed } from '@angular/core/testing'; +import { FormGroup, FormControl } from '@angular/forms'; +import { provideMockStore } from '@ngrx/store/testing'; +import { testMockStore, testTemplateMap } from 'app/shared/utils/unit-test.utils'; +import { LoanTermsInputComponent } from './loan-terms-input.component'; + +describe('LoanTermsInputComponent', () => { + let component: LoanTermsInputComponent; + let fixture: ComponentFixture; + + beforeEach(() => { + TestBed.configureTestingModule({ + declarations: [LoanTermsInputComponent], + providers: [provideMockStore(testMockStore)], + }); + fixture = TestBed.createComponent(LoanTermsInputComponent); + component = fixture.componentInstance; + component.templateMap = testTemplateMap; + component.form = new FormGroup({ + [testTemplateMap.date]: new FormControl(''), + load_due_date: new FormControl(''), + loan_interest_rate: new FormControl(''), + secured: new FormControl(''), + }); + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); + + it('should have an invalid INCURRED DATE input if outside the report date range', () => { + const control = component.form.get(component.templateMap.date); + expect(control?.status).toBe('VALID'); + control?.setValue(new Date('January 1, 2015 00:00:00')); + expect(control?.status).toBe('INVALID'); + control?.setValue(new Date('June 1, 2022 00:00:00')); + expect(control?.status).toBe('VALID'); + }); +}); diff --git a/front-end/src/app/shared/components/inputs/loan-terms-input/loan-terms-input.component.ts b/front-end/src/app/shared/components/inputs/loan-terms-input/loan-terms-input.component.ts new file mode 100644 index 0000000000..40d6b9ea4a --- /dev/null +++ b/front-end/src/app/shared/components/inputs/loan-terms-input/loan-terms-input.component.ts @@ -0,0 +1,48 @@ +import { Component, OnInit } from '@angular/core'; +import { Store } from '@ngrx/store'; +import { selectActiveReport } from 'app/store/active-report.selectors'; +import { take } from 'rxjs'; +import { BaseInputComponent } from '../base-input.component'; +import { AbstractControl, ValidationErrors, ValidatorFn } from '@angular/forms'; +import { DateUtils } from 'app/shared/utils/date.utils'; + +function dateWithinReportRange(coverage_from_date?: Date, coverage_through_date?: Date): ValidatorFn { + return (control: AbstractControl): ValidationErrors | null => { + const date = control.value; + + if (!DateUtils.isWithin(date, coverage_from_date, coverage_through_date)) { + const message = `This date must fall within the coverage dates of ${DateUtils.convertDateToSlashFormat( + coverage_from_date + )} - ${DateUtils.convertDateToSlashFormat(coverage_through_date)} for this report.`; + return { invaliddate: { msg: message } }; + } + + return null; + }; +} + +@Component({ + selector: 'app-loan-terms-input', + templateUrl: './loan-terms-input.component.html', +}) +export class LoanTermsInputComponent extends BaseInputComponent implements OnInit { + constructor(private store: Store) { + super(); + } + + ngOnInit(): void { + // Set empty values until ticket #1156 implemented + this.form.get('loan_due_date')?.setValue('-'); + this.form.get('loan_interest_rate')?.setValue('-'); + + // Add the date range validation check to the DATE INCURRED input + this.store + .select(selectActiveReport) + .pipe(take(1)) + .subscribe((report) => { + this.form + .get(this.templateMap.date) + ?.addValidators(dateWithinReportRange(report.coverage_from_date, report.coverage_through_date)); + }); + } +} diff --git a/front-end/src/app/shared/components/inputs/amount-input/memo-code/memo-code.component.html b/front-end/src/app/shared/components/inputs/memo-code/memo-code.component.html similarity index 98% rename from front-end/src/app/shared/components/inputs/amount-input/memo-code/memo-code.component.html rename to front-end/src/app/shared/components/inputs/memo-code/memo-code.component.html index 6014d4d963..2dc2b6c812 100644 --- a/front-end/src/app/shared/components/inputs/amount-input/memo-code/memo-code.component.html +++ b/front-end/src/app/shared/components/inputs/memo-code/memo-code.component.html @@ -7,7 +7,7 @@ [binary]="true" inputId="memo_code" [formControlName]="templateMap['memo_code']" - label="MEMO ITEM" + [label]="checkboxLabel" ariaLabel="have memo item" [trueValue]="true" [falseValue]="false" diff --git a/front-end/src/app/shared/components/inputs/amount-input/memo-code/memo-code.component.scss b/front-end/src/app/shared/components/inputs/memo-code/memo-code.component.scss similarity index 100% rename from front-end/src/app/shared/components/inputs/amount-input/memo-code/memo-code.component.scss rename to front-end/src/app/shared/components/inputs/memo-code/memo-code.component.scss diff --git a/front-end/src/app/shared/components/inputs/amount-input/memo-code/memo-code.component.spec.ts b/front-end/src/app/shared/components/inputs/memo-code/memo-code.component.spec.ts similarity index 94% rename from front-end/src/app/shared/components/inputs/amount-input/memo-code/memo-code.component.spec.ts rename to front-end/src/app/shared/components/inputs/memo-code/memo-code.component.spec.ts index b561a62627..84e735d2b8 100644 --- a/front-end/src/app/shared/components/inputs/amount-input/memo-code/memo-code.component.spec.ts +++ b/front-end/src/app/shared/components/inputs/memo-code/memo-code.component.spec.ts @@ -3,8 +3,13 @@ import { FormGroup, FormControl, ReactiveFormsModule, Validators } from '@angula import { CheckboxModule } from 'primeng/checkbox'; import { InputNumberModule } from 'primeng/inputnumber'; import { CalendarModule } from 'primeng/calendar'; -import { ErrorMessagesComponent } from '../../../error-messages/error-messages.component'; -import { getTestTransactionByType, testMockStore, testTemplateMap } from 'app/shared/utils/unit-test.utils'; +import { ErrorMessagesComponent } from '../../error-messages/error-messages.component'; +import { + getTestTransactionByType, + testMockStore, + testTemplateMap, + testScheduleATransaction, +} from 'app/shared/utils/unit-test.utils'; import { MemoCodeInputComponent } from './memo-code.component'; import { provideMockStore } from '@ngrx/store/testing'; import { ConfirmationService } from 'primeng/api'; @@ -51,6 +56,7 @@ describe('MemoCodeInputComponent', () => { component.templateMap.memo_code = 'memo_code'; component.report.coverage_from_date = new Date('01/01/2020'); component.report.coverage_through_date = new Date('01/31/2020'); + component.transaction = testScheduleATransaction; component.form.get('contribution_date')?.patchValue(new Date('12/25/2019')); component.form.get('memo_code')?.patchValue(false); @@ -96,6 +102,7 @@ describe('MemoCodeInputComponent', () => { component.report = new F3xSummary(); component.report.coverage_from_date = new Date('01/01/2020'); component.report.coverage_through_date = new Date('01/31/2020'); + component.transaction = testScheduleATransaction; component.form.get('contribution_date')?.patchValue(new Date('12/25/2019')); expect(component.form.get('memo_code')?.hasValidator(Validators.requiredTrue)).toBeTrue(); @@ -111,6 +118,7 @@ describe('MemoCodeInputComponent', () => { component.report = new F3xSummary(); component.report.coverage_from_date = new Date('01/01/2020'); component.report.coverage_through_date = new Date('01/31/2020'); + component.transaction = testScheduleATransaction; component.form.get('memo_code')?.addValidators(Validators.email); @@ -127,6 +135,7 @@ describe('MemoCodeInputComponent', () => { component.report = new F3xSummary(); component.report.coverage_from_date = new Date('01/01/2020'); component.report.coverage_through_date = new Date('01/31/2020'); + component.transaction = testScheduleATransaction; component.form.removeControl('memo_code'); component.form.get('contribution_date')?.patchValue(new Date('12/25/2019')); diff --git a/front-end/src/app/shared/components/inputs/amount-input/memo-code/memo-code.component.ts b/front-end/src/app/shared/components/inputs/memo-code/memo-code.component.ts similarity index 90% rename from front-end/src/app/shared/components/inputs/amount-input/memo-code/memo-code.component.ts rename to front-end/src/app/shared/components/inputs/memo-code/memo-code.component.ts index 908f076302..f3e81804b1 100644 --- a/front-end/src/app/shared/components/inputs/amount-input/memo-code/memo-code.component.ts +++ b/front-end/src/app/shared/components/inputs/memo-code/memo-code.component.ts @@ -2,10 +2,11 @@ import { ChangeDetectorRef, Component, Input, OnChanges, OnInit } from '@angular import { FormControl, Validators } from '@angular/forms'; import { Store } from '@ngrx/store'; import { F3xSummary } from 'app/shared/models/f3x-summary.model'; +import { Transaction } from 'app/shared/models/transaction.model'; import { selectActiveReport } from 'app/store/active-report.selectors'; import { takeUntil } from 'rxjs'; -import { BaseInputComponent } from '../../base-input.component'; -import { Transaction } from 'app/shared/models/transaction.model'; +import { TransactionFormUtils } from '../../transaction-type-base/transaction-form.utils'; +import { BaseInputComponent } from '../base-input.component'; @Component({ selector: 'app-memo-code', @@ -14,8 +15,8 @@ import { Transaction } from 'app/shared/models/transaction.model'; }) export class MemoCodeInputComponent extends BaseInputComponent implements OnInit, OnChanges { @Input() overrideMemoItemHelpText: string | undefined; - @Input() overrideMemoCodeReadOnly: boolean | undefined; @Input() transaction: Transaction | undefined; + @Input() checkboxLabel = ''; memoItemHelpText = 'The dollar amount in a memo item is not incorporated into the total figures for the schedule.'; memoCodeReadOnly = false; @@ -46,7 +47,7 @@ export class MemoCodeInputComponent extends BaseInputComponent implements OnInit this.updateMemoItemWithDate(date); }); - if (this.overrideMemoCodeReadOnly) this.memoCodeReadOnly = this.overrideMemoCodeReadOnly; + this.memoCodeReadOnly = TransactionFormUtils.isMemoCodeReadOnly(this.transaction?.transactionType); if (this.overrideMemoItemHelpText) this.memoItemHelpText = this.overrideMemoItemHelpText; this.memoControl = (this.form.get(this.templateMap.memo_code) as FormControl) || this.memoControl; @@ -105,7 +106,11 @@ export class MemoCodeInputComponent extends BaseInputComponent implements OnInit } updateMemoItemWithDate(date: Date) { - if (this.report?.coverage_from_date && this.report?.coverage_through_date) { + if ( + this.transaction?.transactionType?.doMemoCodeDateCheck && + this.report?.coverage_from_date && + this.report?.coverage_through_date + ) { if (date && (date < this.report.coverage_from_date || date > this.report.coverage_through_date)) { this.memoControl.addValidators(Validators.requiredTrue); this.memoControl.markAsTouched(); diff --git a/front-end/src/app/shared/components/transaction-contact-lookup/transaction-contact-lookup.component.html b/front-end/src/app/shared/components/transaction-contact-lookup/transaction-contact-lookup.component.html index 1db6d5715e..dd4f94bdf1 100644 --- a/front-end/src/app/shared/components/transaction-contact-lookup/transaction-contact-lookup.component.html +++ b/front-end/src/app/shared/components/transaction-contact-lookup/transaction-contact-lookup.component.html @@ -1,7 +1,10 @@
{ beforeEach(() => { fixture = TestBed.createComponent(TransactionContactLookupComponent); component = fixture.componentInstance; + component.form.addControl('contact_1', new FormControl()); + component.selectedContactFormControlName = 'contact_1'; fixture.detectChanges(); }); diff --git a/front-end/src/app/shared/components/transaction-contact-lookup/transaction-contact-lookup.component.ts b/front-end/src/app/shared/components/transaction-contact-lookup/transaction-contact-lookup.component.ts index a4c7fde798..3c1e55e07d 100644 --- a/front-end/src/app/shared/components/transaction-contact-lookup/transaction-contact-lookup.component.ts +++ b/front-end/src/app/shared/components/transaction-contact-lookup/transaction-contact-lookup.component.ts @@ -2,7 +2,6 @@ import { Component, EventEmitter, Input, Output, ViewChild } from '@angular/core import { FormBuilder, FormControl, FormGroup } from '@angular/forms'; import { Contact, ContactType } from 'app/shared/models/contact.model'; import { ContactService } from 'app/shared/services/contact.service'; -import { FecApiService } from 'app/shared/services/fec-api.service'; import { PrimeOptions } from 'app/shared/utils/label.utils'; import { ValidateUtils } from 'app/shared/utils/validate.utils'; import { schema as contactCandidateSchema } from 'fecfile-validate/fecfile_validate_js/dist/Contact_Candidate'; @@ -17,8 +16,13 @@ import { ContactFormComponent } from '../contact-form/contact-form.component'; templateUrl: './transaction-contact-lookup.component.html', }) export class TransactionContactLookupComponent { + @Input() form: FormGroup = new FormGroup([]); + @Input() formSubmitted = false; + @Input() contactTypeOptions: PrimeOptions = []; @Input() contactTypeFormControl: FormControl = new FormControl(); + @Input() selectedContactFormControlName = ''; + @Input() contactTypeReadOnly = false; @Output() contactSelect = new EventEmitter>(); @@ -38,7 +42,7 @@ export class TransactionContactLookupComponent { ]) ); - constructor(private formBuilder: FormBuilder, private fecApiService: FecApiService) {} + constructor(private formBuilder: FormBuilder) { } // eslint-disable-next-line @typescript-eslint/no-explicit-any onContactLookupSelect(event: any) { diff --git a/front-end/src/app/shared/components/transaction-type-base/double-transaction-type-base.component.spec.ts b/front-end/src/app/shared/components/transaction-type-base/double-transaction-type-base.component.spec.ts index 68c2c05fdf..7ab3b39542 100644 --- a/front-end/src/app/shared/components/transaction-type-base/double-transaction-type-base.component.spec.ts +++ b/front-end/src/app/shared/components/transaction-type-base/double-transaction-type-base.component.spec.ts @@ -22,7 +22,7 @@ import { Contact } from 'app/shared/models/contact.model'; import { ScheduleBTransactionTypes } from 'app/shared/models/schb-transaction.model'; class TestDoubleTransactionTypeBaseComponent extends DoubleTransactionTypeBaseComponent { - formProperties: string[] = [ + override formProperties: string[] = [ 'entity_type', 'contributor_organization_name', 'contributor_last_name', @@ -44,8 +44,7 @@ class TestDoubleTransactionTypeBaseComponent extends DoubleTransactionTypeBaseCo 'memo_code', 'text4000', ]; - - childFormProperties: string[] = [ + override childFormProperties: string[] = [ 'entity_type', 'contributor_organization_name', 'contributor_last_name', @@ -141,20 +140,22 @@ describe('DoubleTransactionTypeBaseComponent', () => { }); it('positive contribution_amount values should be overriden when the schema requires a negative value', () => { - component.childTransaction = getTestTransactionByType( - ScheduleATransactionTypes.RETURNED_BOUNCED_RECEIPT_INDIVIDUAL - ); - component.childOnInit(); + component.transaction = getTestTransactionByType(ScheduleATransactionTypes.CONDUIT_EARMARK_RECEIPT_DEPOSITED); + const childTransaction = getTestTransactionByType(ScheduleATransactionTypes.RETURNED_BOUNCED_RECEIPT_INDIVIDUAL); + childTransaction.parent_transaction = component.transaction; + component.transaction.children = [childTransaction]; + component.ngOnInit(); component.childForm.patchValue({ contribution_amount: 2 }); - expect(component.childForm.value.contribution_amount).toBe(-2); + expect(component.childForm.get('contribution_amount')?.value).toBe(-2); }); it("should auto-generate the child transaction's purpose description", () => { component.transaction = getTestTransactionByType(ScheduleATransactionTypes.CONDUIT_EARMARK_RECEIPT_DEPOSITED); - component.childTransaction = getTestTransactionByType(ScheduleBTransactionTypes.CONDUIT_EARMARK_OUT_DEPOSITED); - component.childTransaction.parent_transaction = component.transaction; - component.childOnInit(); + const childTransaction = getTestTransactionByType(ScheduleBTransactionTypes.CONDUIT_EARMARK_OUT_DEPOSITED); + childTransaction.parent_transaction = component.transaction; + component.transaction.children = [childTransaction]; + component.ngOnInit(); component.form.get(component.templateMap.first_name)?.setValue('First'); component.form.get(component.templateMap.last_name)?.setValue('Last'); @@ -188,10 +189,8 @@ describe('DoubleTransactionTypeBaseComponent', () => { // Save valid form values component.form.patchValue({ - entity_type: 'IND', + entity_type: 'COM', contributor_organization_name: 'org222 name', - contributor_last_name: 'fname', - contributor_first_name: 'lname', contributor_middle_name: '', contributor_prefix: '', contributor_suffix: '', @@ -206,6 +205,8 @@ describe('DoubleTransactionTypeBaseComponent', () => { contribution_amount: 5, contribution_aggregate: 200, contribution_purpose_descrip: 'individual', + donor_committee_fec_id: 'C12345678', + donor_committee_name: 'name', memo_code: '', text4000: '', }); diff --git a/front-end/src/app/shared/components/transaction-type-base/double-transaction-type-base.component.ts b/front-end/src/app/shared/components/transaction-type-base/double-transaction-type-base.component.ts index a4daf45e9c..83db78abdc 100644 --- a/front-end/src/app/shared/components/transaction-type-base/double-transaction-type-base.component.ts +++ b/front-end/src/app/shared/components/transaction-type-base/double-transaction-type-base.component.ts @@ -1,12 +1,17 @@ import { Component, OnDestroy, OnInit } from '@angular/core'; import { FormGroup } from '@angular/forms'; import { NavigationEvent } from 'app/shared/models/transaction-navigation-controls.model'; -import { TransactionTemplateMapType } from 'app/shared/models/transaction-type.model'; +import { + TemplateMapKeyType, + TransactionTemplateMapType, + TransactionType, +} from 'app/shared/models/transaction-type.model'; import { ScheduleTransaction, Transaction } from 'app/shared/models/transaction.model'; import { LabelUtils, PrimeOptions } from 'app/shared/utils/label.utils'; +import { getContactTypeOptions } from 'app/shared/utils/transaction-type-properties'; import { ValidateUtils } from 'app/shared/utils/validate.utils'; import { SelectItem } from 'primeng/api'; -import { BehaviorSubject, Subject, takeUntil } from 'rxjs'; +import { BehaviorSubject, Subject, of, takeUntil } from 'rxjs'; import { Contact, ContactTypeLabels } from '../../models/contact.model'; import { TransactionContactUtils } from './transaction-contact.utils'; import { TransactionFormUtils } from './transaction-form.utils'; @@ -30,7 +35,8 @@ export abstract class DoubleTransactionTypeBaseComponent extends TransactionTypeBaseComponent implements OnInit, OnDestroy { - abstract childFormProperties: string[]; + childFormProperties: string[] = []; + childTransactionType?: TransactionType; childTransaction?: Transaction; childContactTypeOptions: PrimeOptions = LabelUtils.getPrimeOptions(ContactTypeLabels); childForm: FormGroup = this.fb.group({}); @@ -38,48 +44,50 @@ export abstract class DoubleTransactionTypeBaseComponent childPurposeDescriptionLabel = ''; childTemplateMap: TransactionTemplateMapType = {} as TransactionTemplateMapType; useParentContact = false; + childMemoCodeCheckboxLabel$ = of(''); override ngOnInit(): void { // Initialize primary form. super.ngOnInit(); // Initialize child form. + this.childTransaction = (this.transaction?.children ?? [])[0]; + this.childTransactionType = this.childTransaction?.transactionType; + if (!this.childTransactionType?.templateMap) { + throw new Error('Fecfile: Template map not found for double transaction component'); + } + this.childTemplateMap = this.childTransactionType.templateMap; + this.childContactTypeOptions = getContactTypeOptions(this.childTransactionType.contactTypeOptions ?? []); + this.childFormProperties = this.childTransactionType.getFormControlNames(this.childTemplateMap); this.childForm = this.fb.group(ValidateUtils.getFormGroupFields(this.childFormProperties)); - if (this.transaction?.children) { - this.childTransaction = this.transaction?.children[0]; - if (this.childTransaction.transactionType?.templateMap) { - this.childTemplateMap = this.childTransaction.transactionType.templateMap; - } else { - throw new Error('Fecfile: Template map not found for double transaction component'); - } - TransactionFormUtils.onInit(this, this.childForm, this.childTransaction, this.childContactId$); - this.childOnInit(); + + if ( + this.childTransactionType?.inheritedFields?.includes( + 'memo_code' as TemplateMapKeyType) && this.transactionType) { + this.childMemoCodeCheckboxLabel$ = this.memoCodeCheckboxLabel$; + } else { + this.childMemoCodeCheckboxLabel$ = this.getMemoCodeCheckboxLabel$(this.childForm, this.childTransactionType); } + + TransactionFormUtils.onInit(this, this.childForm, this.childTransaction, this.childContactId$); + this.childOnInit(); } childOnInit() { - // Override contact type options if present in transactionType - if (this.childTransaction?.transactionType?.contactTypeOptions) { - this.childContactTypeOptions = LabelUtils.getPrimeOptions( - ContactTypeLabels, - this.childTransaction?.transactionType?.contactTypeOptions - ); - } - // Determine if amount should always be negative and then force it to be so if needed - if (this.childTransaction?.transactionType?.negativeAmountValueOnly && this.childTemplateMap?.amount) { + if (this.childTransactionType?.negativeAmountValueOnly && this.childTemplateMap?.amount) { this.childForm .get(this.childTemplateMap.amount) ?.valueChanges.pipe(takeUntil(this.destroy$)) .subscribe((amount) => { if (+amount > 0) { - this.form.patchValue({ [this.childTemplateMap.amount]: -1 * amount }); + this.childForm.get(this.childTemplateMap.amount)?.setValue(-1 * amount); } }); } - if (this.childTransaction?.transactionType?.generatePurposeDescriptionLabel) { - this.childPurposeDescriptionLabel = this.childTransaction.transactionType.generatePurposeDescriptionLabel(); + if (this.childTransactionType?.generatePurposeDescriptionLabel) { + this.childPurposeDescriptionLabel = this.childTransactionType?.generatePurposeDescriptionLabel(); } // Parent contribution purpose description updates with configured child fields update. @@ -99,7 +107,7 @@ export abstract class DoubleTransactionTypeBaseComponent }); // Child contribution purpose description updates with configured parent fields update. - this.childTransaction?.transactionType?.parentTriggerFields?.forEach((triggerField) => { + this.childTransactionType?.parentTriggerFields?.forEach((triggerField) => { this.form .get(this.templateMap[triggerField]) ?.valueChanges.pipe(takeUntil(this.destroy$)) @@ -114,17 +122,17 @@ export abstract class DoubleTransactionTypeBaseComponent }); }); - this.useParentContact = !!this.childTransaction?.transactionType?.useParentContact; + this.useParentContact = !!this.childTransactionType?.useParentContact; // Inheritted fields must match parent values - this.childTransaction?.transactionType?.inheritedFields?.forEach((inherittedField) => { + this.childTransactionType?.inheritedFields?.forEach((inherittedField) => { this.form .get(this.templateMap[inherittedField]) ?.valueChanges.pipe(takeUntil(this.destroy$)) .subscribe((value) => { this.childForm.get(this.childTemplateMap[inherittedField])?.setValue(value); }); - this.childForm.get(inherittedField)?.disable(); + this.childForm.get(this.childTemplateMap[inherittedField])?.disable(); }); } @@ -132,6 +140,7 @@ export abstract class DoubleTransactionTypeBaseComponent super.onContactLookupSelect(selectItem); if (this.useParentContact && this.childTransaction && this.transaction?.contact_1) { this.childTransaction.contact_1 = this.transaction.contact_1; + this.childForm.get('entity_type')?.setValue(selectItem.value.type); } } @@ -153,8 +162,9 @@ export abstract class DoubleTransactionTypeBaseComponent private updateChildPurposeDescription() { if (this.childTransaction?.transactionType?.generatePurposeDescription) { this.childForm.patchValue({ - [this.childTemplateMap.purpose_description]: - this.childTransaction.transactionType.generatePurposeDescriptionWrapper(this.childTransaction), + [this.childTemplateMap.purpose_description]: this.childTransactionType?.generatePurposeDescriptionWrapper( + this.childTransaction + ), }); } } @@ -188,7 +198,7 @@ export abstract class DoubleTransactionTypeBaseComponent // Confirm save for parent transaction // No need to confirm child contact changes if it uses the parent contact info - const saveCallback = this.childTransaction?.transactionType?.useParentContact ? this.doSave : this.childConfirmSave; + const saveCallback = this.childTransactionType?.useParentContact ? this.doSave : this.childConfirmSave; this.confirmSave(payload, this.form, saveCallback, navigationEvent, payload); } @@ -217,7 +227,7 @@ export abstract class DoubleTransactionTypeBaseComponent // Some inheritted fields (such as memo_code) cannot be set before the components are initialized. // This happens most reliably when the user selects a contact for the child transaction. // Afterwards, inheritted fields are updated to match parent values. - this.childTransaction?.transactionType?.inheritedFields?.forEach((inherittedField) => { + this.childTransactionType?.inheritedFields?.forEach((inherittedField) => { const childFieldControl = this.childForm.get(this.childTemplateMap[inherittedField]); childFieldControl?.enable(); const value = this.form.get(this.templateMap[inherittedField])?.value; diff --git a/front-end/src/app/shared/components/transaction-type-base/transaction-contact.utils.ts b/front-end/src/app/shared/components/transaction-type-base/transaction-contact.utils.ts index 3b4ce87965..6f45a35b1c 100644 --- a/front-end/src/app/shared/components/transaction-type-base/transaction-contact.utils.ts +++ b/front-end/src/app/shared/components/transaction-type-base/transaction-contact.utils.ts @@ -88,10 +88,11 @@ export class TransactionContactUtils { return Object.entries(ContactFields) .map(([field, label]: string[]) => { const contactValue = contact[field as keyof typeof contact]; + const value = contactValue === '' ? null : contactValue; // Convert '' to null to match form field values. const formField = getFormField(form, field, templateMap); - if (formField && formField?.value !== contactValue) { - contact[field as keyof typeof contact] = (formField.value || '') as never; + if (formField && formField?.value !== value) { + contact[field as keyof typeof contact] = (formField.value || null) as never; if (!formField.value) { return `Removed ${label.toLowerCase()}`; } diff --git a/front-end/src/app/shared/components/transaction-type-base/transaction-form.utils.ts b/front-end/src/app/shared/components/transaction-type-base/transaction-form.utils.ts index da756b3ee7..ebfc625978 100644 --- a/front-end/src/app/shared/components/transaction-type-base/transaction-form.utils.ts +++ b/front-end/src/app/shared/components/transaction-type-base/transaction-form.utils.ts @@ -1,4 +1,5 @@ import { FormGroup } from '@angular/forms'; +import { SchATransaction } from 'app/shared/models/scha-transaction.model'; import { TransactionTemplateMapType, TransactionType } from 'app/shared/models/transaction-type.model'; import { ScheduleTransaction, Transaction } from 'app/shared/models/transaction.model'; import { PrimeOptions } from 'app/shared/utils/label.utils'; @@ -7,10 +8,9 @@ import { ValidateUtils } from 'app/shared/utils/validate.utils'; import { combineLatestWith, Observable, of, startWith, Subject, switchMap, takeUntil } from 'rxjs'; import { ContactTypes } from '../../models/contact.model'; import { DoubleTransactionTypeBaseComponent } from './double-transaction-type-base.component'; +import { TransactionContactUtils } from './transaction-contact.utils'; import { TransactionMemoUtils } from './transaction-memo.utils'; import { TransactionTypeBaseComponent } from './transaction-type-base.component'; -import { TransactionContactUtils } from './transaction-contact.utils'; -import { SchATransaction } from 'app/shared/models/scha-transaction.model'; export class TransactionFormUtils { /** @@ -155,10 +155,6 @@ export class TransactionFormUtils { payload.children = payload.updateChildren(); } - if (transaction.transactionType?.useParentContact) { - payload.use_parent_contact = transaction.transactionType.useParentContact; - } - return payload; } @@ -167,12 +163,7 @@ export class TransactionFormUtils { form.markAsPristine(); form.markAsUntouched(); - // Override the default entity_type value if called for by the defaultContactTypeOption - // in the TransactionType - let defaultContactTypeOption: string = contactTypeOptions[0]?.value; - if (transaction?.transactionType?.defaultContactTypeOption) { - defaultContactTypeOption = transaction.transactionType.defaultContactTypeOption; - } + const defaultContactTypeOption: string = contactTypeOptions[0]?.value; if (transaction?.transactionType) { form.patchValue({ @@ -192,4 +183,10 @@ export class TransactionFormUtils { const memoCodeSchema = transactionType?.schema.properties['memo_code']; return memoCodeSchema?.const as boolean | undefined; } + + static isMemoCodeReadOnly(transactionType?: TransactionType): boolean { + // Memo Code is read-only if there is a constant value in the schema. Otherwise, it's mutable + return TransactionFormUtils.getMemoCodeConstant(transactionType) !== undefined; + } + } diff --git a/front-end/src/app/shared/components/transaction-type-base/transaction-type-base.component.spec.ts b/front-end/src/app/shared/components/transaction-type-base/transaction-type-base.component.spec.ts index 8dc7fb0dd3..18b55e84ab 100644 --- a/front-end/src/app/shared/components/transaction-type-base/transaction-type-base.component.spec.ts +++ b/front-end/src/app/shared/components/transaction-type-base/transaction-type-base.component.spec.ts @@ -15,7 +15,12 @@ import { import { FecDatePipe } from 'app/shared/pipes/fec-date.pipe'; import { ApiService } from 'app/shared/services/api.service'; import { TransactionService } from 'app/shared/services/transaction.service'; -import { getTestTransactionByType, testIndividualReceipt, testMockStore } from 'app/shared/utils/unit-test.utils'; +import { + getTestTransactionByType, + testIndividualReceipt, + testMockStore, + testScheduleATransaction, +} from 'app/shared/utils/unit-test.utils'; import { Confirmation, ConfirmationService, Message, MessageService, SelectItem } from 'primeng/api'; import { of } from 'rxjs'; import { SchATransaction, ScheduleATransactionTypes } from '../../models/scha-transaction.model'; @@ -24,7 +29,7 @@ import { TransactionMemoUtils } from './transaction-memo.utils'; import { TransactionTypeBaseComponent } from './transaction-type-base.component'; class TestTransactionTypeBaseComponent extends TransactionTypeBaseComponent { - formProperties: string[] = [ + override formProperties: string[] = [ 'entity_type', 'contributor_organization_name', 'contributor_last_name', @@ -136,6 +141,12 @@ describe('TransactionTypeBaseComponent', () => { function addContact(component: TestTransactionTypeBaseComponent, contact: Contact) { if (component.transaction) { component.transaction.contact_1 = contact; + TransactionContactUtils.onContactLookupSelect( + { value: contact }, + component.form, + component.transaction, + component.contactId$ + ); } } @@ -178,7 +189,6 @@ describe('TransactionTypeBaseComponent', () => { return confirmation.accept(); } }); - component.save(listSaveEvent); component.form = new FormGroup([]); component.save(listSaveEvent); const testContact2 = new Contact(); @@ -652,10 +662,13 @@ describe('TransactionTypeBaseComponent', () => { component.form.addControl('entity_type', { value: testEntityType }); component.form.get('contribution_amount')?.setValue(1111); component.form.get('contribution_date')?.setValue('2022-03-02'); + fixture.detectChanges(); const getPreviousTransactionSpy = spyOn(testTransactionService, 'getPreviousTransaction').and.returnValue( of(testTransaction) ); + expect(getPreviousTransactionSpy).toHaveBeenCalledTimes(0); + component.form.get('contribution_date')?.valueChanges.subscribe((date) => console.log(`date: ${date}`)); component.onContactLookupSelect(testContactSelectItem); expect(getPreviousTransactionSpy).toHaveBeenCalledTimes(1); }); @@ -681,6 +694,9 @@ describe('TransactionTypeBaseComponent', () => { testContact.id = '123'; testContact.type = ContactTypes.ORGANIZATION; testContact.name = testOrganizationName; + component.transaction = Object.assign({}, testScheduleATransaction); + component.ngOnInit(); + fixture.detectChanges(); const testContactSelectItem: SelectItem = { value: testContact, @@ -690,7 +706,7 @@ describe('TransactionTypeBaseComponent', () => { component.onContactLookupSelect(testContactSelectItem); const organizationNameFormControlValue = component.form.get('contributor_organization_name')?.value; - expect(organizationNameFormControlValue === testOrganizationName).toBeTrue(); + expect(organizationNameFormControlValue).toEqual(testOrganizationName); }); it('#onContactLookupSelect COMMITTEE should set fields', () => { @@ -701,15 +717,20 @@ describe('TransactionTypeBaseComponent', () => { testContact.type = ContactTypes.COMMITTEE; testContact.name = testCommitteeName; + component.transaction = testScheduleATransaction; + component.ngOnInit(); + fixture.detectChanges(); + const testContactSelectItem: SelectItem = { value: testContact, }; - component.form.addControl('entity_type', { value: testEntityType }); + component.form.get('entity_type')?.setValue(testEntityType); component.onContactLookupSelect(testContactSelectItem); + const committeeNameFormControlValue = component.form.get('contributor_organization_name')?.value; - expect(committeeNameFormControlValue === testCommitteeName).toBeTrue(); + expect(committeeNameFormControlValue).toEqual(testCommitteeName); }); it('#onContactLookupSelect CANDIDATE should set fields', () => { @@ -733,11 +754,15 @@ describe('TransactionTypeBaseComponent', () => { testContact.state = 'testState'; testContact.zip = 'testZip'; + component.transaction = getTestTransactionByType(ScheduleATransactionTypes.REFUND_TO_FEDERAL_CANDIDATE); + component.ngOnInit(); + fixture.detectChanges(); + const testContactSelectItem: SelectItem = { value: testContact, }; - component.form.addControl('entity_type', { value: testEntityType }); + component.form.get('entity_type')?.setValue(testEntityType); component.onSecondaryContactLookupSelect(testContactSelectItem); const candidateIdFormControlValue = component.form.get('donor_candidate_fec_id')?.value; const lastNameFormControlValue = component.form.get('donor_candidate_last_name')?.value; @@ -749,15 +774,15 @@ describe('TransactionTypeBaseComponent', () => { const candidateStateFormControlValue = component.form.get('donor_candidate_state')?.value; const candidateDistrictFormControlValue = component.form.get('donor_candidate_district')?.value; - expect(candidateIdFormControlValue === testContact.candidate_id).toBeTrue(); - expect(lastNameFormControlValue === testContact.last_name).toBeTrue(); - expect(firstNameFormControlValue === testContact.first_name).toBeTrue(); - expect(middleNameFormControlValue === testContact.middle_name).toBeTrue(); - expect(prefixFormControlValue === testContact.prefix).toBeTrue(); - expect(suffixFormControlValue === testContact.suffix).toBeTrue(); - expect(candidateOfficeFormControlValue === testContact.candidate_office).toBeTrue(); - expect(candidateStateFormControlValue === testContact.candidate_state).toBeTrue(); - expect(candidateDistrictFormControlValue === testContact.candidate_district).toBeTrue(); + expect(candidateIdFormControlValue).toEqual(testContact.candidate_id); + expect(lastNameFormControlValue).toEqual(testContact.last_name); + expect(firstNameFormControlValue).toEqual(testContact.first_name); + expect(middleNameFormControlValue).toEqual(testContact.middle_name); + expect(prefixFormControlValue).toEqual(testContact.prefix); + expect(suffixFormControlValue).toEqual(testContact.suffix); + expect(candidateOfficeFormControlValue).toEqual(testContact.candidate_office); + expect(candidateStateFormControlValue).toEqual(testContact.candidate_state); + expect(candidateDistrictFormControlValue).toEqual(testContact.candidate_district); }); it('positive contribution_amount values should be overriden when the schema requires a negative value', () => { diff --git a/front-end/src/app/shared/components/transaction-type-base/transaction-type-base.component.ts b/front-end/src/app/shared/components/transaction-type-base/transaction-type-base.component.ts index 8780e59c67..a2a08e4c7a 100644 --- a/front-end/src/app/shared/components/transaction-type-base/transaction-type-base.component.ts +++ b/front-end/src/app/shared/components/transaction-type-base/transaction-type-base.component.ts @@ -1,5 +1,5 @@ import { Component, Input, OnDestroy, OnInit } from '@angular/core'; -import { FormBuilder, FormControl, FormGroup } from '@angular/forms'; +import { FormBuilder, FormControl, FormGroup, Validators } from '@angular/forms'; import { Router } from '@angular/router'; import { Store } from '@ngrx/store'; import { @@ -17,10 +17,11 @@ import { ContactService } from 'app/shared/services/contact.service'; import { ReportService } from 'app/shared/services/report.service'; import { TransactionService } from 'app/shared/services/transaction.service'; import { LabelUtils, PrimeOptions } from 'app/shared/utils/label.utils'; +import { getContactTypeOptions } from 'app/shared/utils/transaction-type-properties'; import { ValidateUtils } from 'app/shared/utils/validate.utils'; import { selectActiveReport } from 'app/store/active-report.selectors'; import { ConfirmationService, MessageService, SelectItem } from 'primeng/api'; -import { BehaviorSubject, Subject, takeUntil } from 'rxjs'; +import { BehaviorSubject, map, of, Subject, takeUntil, startWith } from 'rxjs'; import { Contact, ContactTypeLabels, ContactTypes } from '../../models/contact.model'; import { TransactionContactUtils } from './transaction-contact.utils'; import { TransactionFormUtils } from './transaction-form.utils'; @@ -31,9 +32,11 @@ import { TransactionFormUtils } from './transaction-form.utils'; export abstract class TransactionTypeBaseComponent implements OnInit, OnDestroy { @Input() transaction: Transaction | undefined; - abstract formProperties: string[]; + formProperties: string[] = []; + transactionType?: TransactionType; ContactTypes = ContactTypes; contactTypeOptions: PrimeOptions = LabelUtils.getPrimeOptions(ContactTypeLabels); + entityTypeControl?: FormControl; candidateContactTypeFormControl: FormControl = new FormControl(ContactTypes.CANDIDATE); // eslint-disable-next-line @typescript-eslint/no-unused-vars candidateContactTypeOption: PrimeOptions = LabelUtils.getPrimeOptions(ContactTypeLabels, [ContactTypes.CANDIDATE]); stateOptions: PrimeOptions = LabelUtils.getPrimeOptions(LabelUtils.getStateCodeLabelsWithoutMilitary()); @@ -44,6 +47,7 @@ export abstract class TransactionTypeBaseComponent implements OnInit, OnDestroy templateMap: TransactionTemplateMapType = {} as TransactionTemplateMapType; form: FormGroup = this.fb.group({}); isEditable = true; + memoCodeCheckboxLabel$ = of(''); constructor( protected messageService: MessageService, @@ -58,13 +62,31 @@ export abstract class TransactionTypeBaseComponent implements OnInit, OnDestroy ) {} ngOnInit(): void { - this.form = this.fb.group(ValidateUtils.getFormGroupFields(this.formProperties)); - if (this.transaction?.transactionType?.templateMap) { - this.templateMap = this.transaction.transactionType.templateMap; - } else { + if (!this.transaction?.transactionType?.templateMap) { throw new Error('Fecfile: Template map not found for transaction component'); } + this.transactionType = this.transaction.transactionType; + this.templateMap = this.transactionType.templateMap; + this.formProperties = this.transactionType.getFormControlNames(this.templateMap); + this.contactTypeOptions = getContactTypeOptions(this.transactionType.contactTypeOptions ?? []); + + this.form = this.fb.group(ValidateUtils.getFormGroupFields(this.formProperties)); + + this.form.addControl('contact_1', new FormControl()); + this.form.addControl( + 'contact_2', + new FormControl(null, () => { + if (!this.transaction?.contact_2 && this.transactionType?.contact2IsRequired) { + return { required: true }; + } + return null; + }) + ); + + this.memoCodeCheckboxLabel$ = this.getMemoCodeCheckboxLabel$(this.form, this.transactionType); + TransactionFormUtils.onInit(this, this.form, this.transaction, this.contactId$); + this.entityTypeControl = this.form.get('entity_type') as FormControl; this.parentOnInit(); this.store .select(selectActiveReport) @@ -76,16 +98,9 @@ export abstract class TransactionTypeBaseComponent implements OnInit, OnDestroy } parentOnInit() { - // Override contact type options if present in transactionType - if (this.transaction?.transactionType?.contactTypeOptions) { - this.contactTypeOptions = LabelUtils.getPrimeOptions( - ContactTypeLabels, - this.transaction.transactionType.contactTypeOptions - ); - } - + const transactionType = this.transactionType; // Determine if amount should always be negative and then force it to be so if needed - if (this.transaction?.transactionType?.negativeAmountValueOnly && this.templateMap?.amount) { + if (transactionType?.negativeAmountValueOnly && this.templateMap?.amount) { this.form .get(this.templateMap.amount) ?.valueChanges.pipe(takeUntil(this.destroy$)) @@ -96,8 +111,8 @@ export abstract class TransactionTypeBaseComponent implements OnInit, OnDestroy }); } - if (this.transaction?.transactionType?.generatePurposeDescriptionLabel) { - this.purposeDescriptionLabel = this.transaction?.transactionType.generatePurposeDescriptionLabel(); + if (transactionType?.generatePurposeDescriptionLabel) { + this.purposeDescriptionLabel = transactionType.generatePurposeDescriptionLabel(); } } @@ -225,7 +240,7 @@ export abstract class TransactionTypeBaseComponent implements OnInit, OnDestroy getNavigationControls(): TransactionNavigationControls { if (!this.isEditable) return new TransactionNavigationControls([], [GO_BACK_CONTROL], []); - return this.transaction?.transactionType?.navigationControls || new TransactionNavigationControls([], [], []); + return this.transactionType?.navigationControls ?? new TransactionNavigationControls([], [], []); } getInlineControls(): NavigationControl[] { @@ -283,11 +298,6 @@ export abstract class TransactionTypeBaseComponent implements OnInit, OnDestroy TransactionFormUtils.resetForm(this.form, this.transaction, this.contactTypeOptions); } - isMemoCodeReadOnly(transactionType?: TransactionType): boolean { - // Memo Code is read-only if there is a constant value in the schema. Otherwise, it's mutable - return TransactionFormUtils.getMemoCodeConstant(transactionType) !== undefined; - } - isDescriptionSystemGenerated(transactionType?: TransactionType): boolean { // Description is system generated if there is a defined function. Otherwise, it's mutable return transactionType?.generatePurposeDescription !== undefined; @@ -303,4 +313,22 @@ export abstract class TransactionTypeBaseComponent implements OnInit, OnDestroy getEntityType(): string { return this.form.get('entity_type')?.value || ''; } + + getMemoCodeCheckboxLabel$(form: FormGroup, transactionType: TransactionType) { + const requiredLabel = 'MEMO ITEM'; + const optionalLabel = requiredLabel + ' (OPTIONAL)'; + + const memoControl = form.get(transactionType?.templateMap.memo_code); + + if (TransactionFormUtils.isMemoCodeReadOnly(transactionType) || !memoControl) { + return of(requiredLabel); + } + return memoControl.valueChanges.pipe( + map(() => { + return memoControl.hasValidator(Validators.requiredTrue) ? requiredLabel : optionalLabel; + }), + startWith(optionalLabel), + takeUntil(this.destroy$) + ); + } } diff --git a/front-end/src/app/shared/models/scha-transaction-type.model.ts b/front-end/src/app/shared/models/scha-transaction-type.model.ts index 60015eb076..000d4f8655 100644 --- a/front-end/src/app/shared/models/scha-transaction-type.model.ts +++ b/front-end/src/app/shared/models/scha-transaction-type.model.ts @@ -4,6 +4,11 @@ export abstract class SchATransactionType extends TransactionType { scheduleId = 'A'; apiEndpoint = '/transactions/schedule-a'; + //Labels + override dateLabel = 'DATE RECEIVED'; + override amountInputHeader = 'Receipt information'; + override purposeDescripLabel = 'PURPOSE OF RECEIPT'; + // Mapping of schedule fields to the group input component form templates templateMap: TransactionTemplateMapType = { // Form fields @@ -35,17 +40,15 @@ export abstract class SchATransactionType extends TransactionType { memo_code: 'memo_code', amount: 'contribution_amount', balance: '', + payment_to_date: '', + interest_rate: '', + due_date: '', + secured: '', aggregate: 'contribution_aggregate', purpose_description: 'contribution_purpose_descrip', text4000: 'text4000', category_code: '', election_code: 'election_code', election_other_description: 'election_other_description', - - // Labels and text strings - dateLabel: 'DATE RECEIVED', - amountInputHeader: 'Receipt Information', - purposeDescripLabel: 'PURPOSE OF RECEIPT', - candidateInputHeader: 'Committee/Candidate information', }; } diff --git a/front-end/src/app/shared/models/scha-transaction.model.ts b/front-end/src/app/shared/models/scha-transaction.model.ts index cce737cf65..a35a7e5000 100644 --- a/front-end/src/app/shared/models/scha-transaction.model.ts +++ b/front-end/src/app/shared/models/scha-transaction.model.ts @@ -158,8 +158,8 @@ export enum ScheduleATransactionTypes { PARTY_JF_TRANSFER_MEMO = 'PARTY_JF_TRANSFER_MEMO', TRIBAL_JF_TRANSFER_MEMO = 'TRIBAL_JF_TRANSFER_MEMO', PARTNERSHIP_JF_TRANSFER_MEMO = 'PARTNERSHIP_JF_TRANSFER_MEMO', - PARTNERSHIP_INDIVIDUAL_JF_TRANSFER_MEMO = 'PARTNERSHIP_INDIVIDUAL_JF_TRANSFER_MEMO', - PARTNERSHIP_INDIVIDUAL_NATIONAL_PARTY_CONVENTION_JF_TRANSFER_MEMO = 'PARTNERSHIP_INDIVIDUAL_NATIONAL_PARTY_CONVENTION_JF_TRANSFER_MEMO', + PARTNERSHIP_ATTRIBUTION_JF_TRANSFER_MEMO = 'PARTNERSHIP_ATTRIBUTION_JF_TRANSFER_MEMO', + PARTNERSHIP_ATTRIBUTION_NATIONAL_PARTY_CONVENTION_JF_TRANSFER_MEMO = 'PARTNERSHIP_ATTRIBUTION_NATIONAL_PARTY_CONVENTION_JF_TRANSFER_MEMO', INDIVIDUAL_NATIONAL_PARTY_CONVENTION_JF_TRANSFER_MEMO = 'INDIVIDUAL_NATIONAL_PARTY_CONVENTION_JF_TRANSFER_MEMO', PAC_NATIONAL_PARTY_CONVENTION_JF_TRANSFER_MEMO = 'PAC_NATIONAL_PARTY_CONVENTION_JF_TRANSFER_MEMO', TRIBAL_NATIONAL_PARTY_CONVENTION_JF_TRANSFER_MEMO = 'TRIBAL_NATIONAL_PARTY_CONVENTION_JF_TRANSFER_MEMO', @@ -172,16 +172,17 @@ export enum ScheduleATransactionTypes { PARTNERSHIP_NATIONAL_PARTY_RECOUNT_JF_TRANSFER_MEMO = 'PARTNERSHIP_NATIONAL_PARTY_RECOUNT_JF_TRANSFER_MEMO', PARTNERSHIP_NATIONAL_PARTY_HEADQUARTERS_JF_TRANSFER_MEMO = 'PARTNERSHIP_NATIONAL_PARTY_HEADQUARTERS_JF_TRANSFER_MEMO', PARTNERSHIP_NATIONAL_PARTY_CONVENTION_JF_TRANSFER_MEMO = 'PARTNERSHIP_NATIONAL_PARTY_CONVENTION_JF_TRANSFER_MEMO', - PARTNERSHIP_NATIONAL_PARTY_RECOUNT_ACCOUNT_MEMO = 'PARTNERSHIP_NATIONAL_PARTY_RECOUNT_ACCOUNT_MEMO', - PARTNERSHIP_NATIONAL_PARTY_CONVENTION_ACCOUNT_MEMO = 'PARTNERSHIP_NATIONAL_PARTY_CONVENTION_ACCOUNT_MEMO', - PARTNERSHIP_NATIONAL_PARTY_HEADQUARTERS_ACCOUNT_MEMO = 'PARTNERSHIP_NATIONAL_PARTY_HEADQUARTERS_ACCOUNT_MEMO', - PARTNERSHIP_MEMO = 'PARTNERSHIP_MEMO', - PARTNERSHIP_RECOUNT_ACCOUNT_RECEIPT_MEMO = 'PARTNERSHIP_RECOUNT_ACCOUNT_RECEIPT_MEMO', + PARTNERSHIP_ATTRIBUTION_NATIONAL_PARTY_RECOUNT_ACCOUNT_MEMO = 'PARTNERSHIP_ATTRIBUTION_NATIONAL_PARTY_RECOUNT_ACCOUNT_MEMO', + PARTNERSHIP_ATTRIBUTION_NATIONAL_PARTY_CONVENTION_ACCOUNT_MEMO = 'PARTNERSHIP_ATTRIBUTION_NATIONAL_PARTY_CONVENTION_ACCOUNT_MEMO', + PARTNERSHIP_ATTRIBUTION_NATIONAL_PARTY_HEADQUARTERS_ACCOUNT_MEMO = 'PARTNERSHIP_ATTRIBUTION_NATIONAL_PARTY_HEADQUARTERS_ACCOUNT_MEMO', + PARTNERSHIP_ATTRIBUTION = 'PARTNERSHIP_ATTRIBUTION', + PARTNERSHIP_ATTRIBUTION_RECOUNT_ACCOUNT_RECEIPT_MEMO = 'PARTNERSHIP_ATTRIBUTION_RECOUNT_ACCOUNT_RECEIPT_MEMO', EARMARK_MEMO_HEADQUARTERS_ACCOUNT = 'EARMARK_MEMO_HEADQUARTERS_ACCOUNT', EARMARK_MEMO_CONVENTION_ACCOUNT = 'EARMARK_MEMO_CONVENTION_ACCOUNT', EARMARK_MEMO_RECOUNT_ACCOUNT = 'EARMARK_MEMO_RECOUNT_ACCOUNT', - PARTNERSHIP_INDIVIDUAL_NATIONAL_PARTY_RECOUNT_JF_TRANSFER_MEMO = 'PARTNERSHIP_INDIVIDUAL_NATIONAL_PARTY_RECOUNT_JF_TRANSFER_MEMO', - PARTNERSHIP_INDIVIDUAL_NATIONAL_PARTY_HEADQUARTERS_JF_TRANSFER_MEMO = 'PARTNERSHIP_INDIVIDUAL_NATIONAL_PARTY_HEADQUARTERS_JF_TRANSFER_MEMO', + PARTNERSHIP_ATTRIBUTION_NATIONAL_PARTY_RECOUNT_JF_TRANSFER_MEMO = 'PARTNERSHIP_ATTRIBUTION_NATIONAL_PARTY_RECOUNT_JF_TRANSFER_MEMO', + PARTNERSHIP_ATTRIBUTION_NATIONAL_PARTY_HEADQUARTERS_JF_TRANSFER_MEMO = 'PARTNERSHIP_ATTRIBUTION_NATIONAL_PARTY_HEADQUARTERS_JF_TRANSFER_MEMO', + LOAN_RECEIVED_FROM_INDIVIDUAL_RECEIPT = 'LOAN_RECEIVED_FROM_INDIVIDUAL_RECEIPT', } export const ScheduleATransactionTypeLabels: LabelList = [ @@ -401,36 +402,40 @@ export const ScheduleATransactionTypeLabels: LabelList = [ 'Partnership National Party Pres. Nominating Convention Proceedings Account Memo', ], [ - ScheduleATransactionTypes.PARTNERSHIP_NATIONAL_PARTY_RECOUNT_ACCOUNT_MEMO, - 'Partnership National Party Recount/Legal Proceedings Account Memo', + ScheduleATransactionTypes.PARTNERSHIP_ATTRIBUTION_NATIONAL_PARTY_RECOUNT_ACCOUNT_MEMO, + 'Partnership Attribution National Party Recount/Legal Proceedings Account Memo', ], [ - ScheduleATransactionTypes.PARTNERSHIP_NATIONAL_PARTY_CONVENTION_ACCOUNT_MEMO, - 'Partnership National Party Pres. Nominating Convention Account Memo', + ScheduleATransactionTypes.PARTNERSHIP_ATTRIBUTION_NATIONAL_PARTY_CONVENTION_ACCOUNT_MEMO, + 'Partnership Attribution National Party Pres. Nominating Convention Account Memo', ], [ - ScheduleATransactionTypes.PARTNERSHIP_NATIONAL_PARTY_HEADQUARTERS_ACCOUNT_MEMO, - 'Partnership National Party Headquarters Buildings Account Memo', + ScheduleATransactionTypes.PARTNERSHIP_ATTRIBUTION_NATIONAL_PARTY_HEADQUARTERS_ACCOUNT_MEMO, + 'Partnership Attribution National Party Headquarters Buildings Account Memo', ], - [ScheduleATransactionTypes.PARTNERSHIP_MEMO, 'Partnership Memo'], + [ScheduleATransactionTypes.PARTNERSHIP_ATTRIBUTION, 'Partnership Attribution'], [ScheduleATransactionTypes.PARTNERSHIP_JF_TRANSFER_MEMO, 'Partnership Receipt Joint Fundraising Transfer Memo'], [ - ScheduleATransactionTypes.PARTNERSHIP_INDIVIDUAL_JF_TRANSFER_MEMO, - 'Partnership Individual Joint Fundraising Transfer Memo', + ScheduleATransactionTypes.PARTNERSHIP_ATTRIBUTION_JF_TRANSFER_MEMO, + 'Partnership Attribution Joint Fundraising Transfer Memo', ], [ - ScheduleATransactionTypes.PARTNERSHIP_INDIVIDUAL_NATIONAL_PARTY_CONVENTION_JF_TRANSFER_MEMO, - 'Partnership Individual Pres. Nominating Convention Account JF Transfer Memo', + ScheduleATransactionTypes.PARTNERSHIP_ATTRIBUTION_NATIONAL_PARTY_CONVENTION_JF_TRANSFER_MEMO, + 'Partnership Attribution Pres. Nominating Convention Account JF Transfer Memo', ], - [(ScheduleATransactionTypes.PARTNERSHIP_RECOUNT_ACCOUNT_RECEIPT_MEMO, 'Partnership Recount Account Receipt Memo')], [ - ScheduleATransactionTypes.PARTNERSHIP_INDIVIDUAL_NATIONAL_PARTY_RECOUNT_JF_TRANSFER_MEMO, - 'Partnership Individual Recount/Legal Proceedings Account JF Transfer Memo', + ScheduleATransactionTypes.PARTNERSHIP_ATTRIBUTION_RECOUNT_ACCOUNT_RECEIPT_MEMO, + 'Partnership Attribution Recount Account Receipt Memo', ], [ - ScheduleATransactionTypes.PARTNERSHIP_INDIVIDUAL_NATIONAL_PARTY_HEADQUARTERS_JF_TRANSFER_MEMO, - 'Partnership Individual Headquarters Buildings Account JF Transfer Memo', + ScheduleATransactionTypes.PARTNERSHIP_ATTRIBUTION_NATIONAL_PARTY_RECOUNT_JF_TRANSFER_MEMO, + 'Partnership Attribution Recount/Legal Proceedings Account JF Transfer Memo', ], + [ + ScheduleATransactionTypes.PARTNERSHIP_ATTRIBUTION_NATIONAL_PARTY_HEADQUARTERS_JF_TRANSFER_MEMO, + 'Partnership Attribution Headquarters Buildings Account JF Transfer Memo', + ], + [ScheduleATransactionTypes.LOAN_RECEIVED_FROM_INDIVIDUAL_RECEIPT, 'Loan Received from Individual'], ]; export const UnimplementedTypeEntityCategories: LabelList = [ diff --git a/front-end/src/app/shared/models/schb-transaction-type.model.ts b/front-end/src/app/shared/models/schb-transaction-type.model.ts index 3a31a97f1b..b0b0f3ca9a 100644 --- a/front-end/src/app/shared/models/schb-transaction-type.model.ts +++ b/front-end/src/app/shared/models/schb-transaction-type.model.ts @@ -4,6 +4,10 @@ export abstract class SchBTransactionType extends TransactionType { scheduleId = 'B'; apiEndpoint = '/transactions/schedule-b'; + // Labels + override amountInputHeader = 'Expenditure information'; + override purposeDescripLabel = 'PURPOSE OF DISBURSEMENT'; + // Mapping of schedule fields to the group input component form templates templateMap: TransactionTemplateMapType = { // Form fields @@ -35,17 +39,15 @@ export abstract class SchBTransactionType extends TransactionType { memo_code: 'memo_code', amount: 'expenditure_amount', balance: '', + payment_to_date: '', + interest_rate: '', + due_date: '', + secured: '', aggregate: 'aggregate_amount', purpose_description: 'expenditure_purpose_descrip', text4000: 'text4000', category_code: 'category_code', election_code: 'election_code', election_other_description: 'election_other_description', - - // Labels and text strings - dateLabel: 'DATE', - amountInputHeader: 'Expenditure Information', - purposeDescripLabel: 'PURPOSE OF DISBURSEMENT', - candidateInputHeader: 'Committee/Candidate Information', }; } diff --git a/front-end/src/app/shared/models/schb-transaction.model.ts b/front-end/src/app/shared/models/schb-transaction.model.ts index f68875c454..78e7f5b821 100644 --- a/front-end/src/app/shared/models/schb-transaction.model.ts +++ b/front-end/src/app/shared/models/schb-transaction.model.ts @@ -161,6 +161,7 @@ export enum ScheduleBTransactionTypes { CONDUIT_EARMARK_OUT = 'CONDUIT_EARMARK_OUT', CONDUIT_EARMARK_OUT_DEPOSITED = 'CONDUIT_EARMARK_OUT_DEPOSITED', CONDUIT_EARMARK_OUT_UNDEPOSITED = 'CONDUIT_EARMARK_OUT_UNDEPOSITED', + LOAN_MADE = 'LOAN_MADE', } export const ScheduleBTransactionTypeLabels: LabelList = [ @@ -292,8 +293,8 @@ export const ScheduleBTransactionTypeLabels: LabelList = [ 'Credit Card Payment for 100% Federal Election Activity', ], [ - ScheduleBTransactionTypes.FEDERAL_ELECTION_ACTIVITY_CREDIT_CARD_PAYMENT_MEMO, - 'Credit Card Memo for 100% Federal Election Activity' + ScheduleBTransactionTypes.FEDERAL_ELECTION_ACTIVITY_CREDIT_CARD_PAYMENT_MEMO, + 'Credit Card Memo for 100% Federal Election Activity', ], [ ScheduleBTransactionTypes.FEDERAL_ELECTION_ACTIVITY_STAFF_REIMBURSEMENT, @@ -308,8 +309,8 @@ export const ScheduleBTransactionTypeLabels: LabelList = [ 'Payment to Payroll for 100% Federal Election Activity', ], [ - ScheduleBTransactionTypes.FEDERAL_ELECTION_ACTIVITY_PAYMENT_TO_PAYROLL_MEMO, - 'Payroll Memo for 100% Federal Election Activity' + ScheduleBTransactionTypes.FEDERAL_ELECTION_ACTIVITY_PAYMENT_TO_PAYROLL_MEMO, + 'Payroll Memo for 100% Federal Election Activity', ], [ScheduleBTransactionTypes.FEDERAL_ELECTION_ACTIVITY_VOID, 'Void of 100% Federal Election Activity Payment'], [ @@ -334,4 +335,5 @@ export const ScheduleBTransactionTypeLabels: LabelList = [ [ScheduleBTransactionTypes.CONDUIT_EARMARK_OUT, 'Conduit Earmark Out'], [ScheduleBTransactionTypes.CONDUIT_EARMARK_OUT_DEPOSITED, 'Conduit Earmark Out (Deposited)'], [ScheduleBTransactionTypes.CONDUIT_EARMARK_OUT_UNDEPOSITED, 'Conduit Earmark Out (Undeposited)'], + [ScheduleBTransactionTypes.LOAN_MADE, 'Loan Made'], ]; diff --git a/front-end/src/app/shared/models/schc-transaction-type.model.ts b/front-end/src/app/shared/models/schc-transaction-type.model.ts index e7ad08434e..0b46a211fd 100644 --- a/front-end/src/app/shared/models/schc-transaction-type.model.ts +++ b/front-end/src/app/shared/models/schc-transaction-type.model.ts @@ -4,6 +4,9 @@ export abstract class SchCTransactionType extends TransactionType { scheduleId = 'C'; apiEndpoint = '/transactions/schedule-c'; + // Labels + override amountInputHeader = 'Loan information'; + // Mapping of schedule fields to the group input component form templates templateMap: TransactionTemplateMapType = { // Form fields @@ -21,7 +24,7 @@ export abstract class SchCTransactionType extends TransactionType { occupation: '', organization_name: 'lender_organization_name', committee_fec_id: 'lender_committee_id_number', - committee_name: '', + committee_name: 'lender_organization_name', candidate_fec_id: 'lender_candidate_id_number', candidate_last_name: 'lender_candidate_last_name', candidate_first_name: 'lender_candidate_first_name', @@ -35,17 +38,15 @@ export abstract class SchCTransactionType extends TransactionType { memo_code: 'memo_code', amount: 'loan_amount', balance: 'loan_balance', + payment_to_date: 'loan_payment_to_date', + due_date: 'loan_due_date', + interest_rate: 'loan_interest_rate', + secured: 'secured', aggregate: '', purpose_description: '', text4000: 'text4000', category_code: '', election_code: 'election_code', election_other_description: 'election_other_description', - - // Labels and text strings - dateLabel: 'DATE', - amountInputHeader: 'Loan Information', - candidateInputHeader: '', - purposeDescripLabel: '', }; } diff --git a/front-end/src/app/shared/models/schc-transaction.model.ts b/front-end/src/app/shared/models/schc-transaction.model.ts index e7fcefaa11..49b2f4f8ba 100644 --- a/front-end/src/app/shared/models/schc-transaction.model.ts +++ b/front-end/src/app/shared/models/schc-transaction.model.ts @@ -2,7 +2,7 @@ import { plainToClass, Transform } from 'class-transformer'; import { Transaction, AggregationGroups } from './transaction.model'; import { LabelList } from '../utils/label.utils'; import { BaseModel } from './base.model'; -import { TransactionTypeUtils } from '../utils/transaction-type.utils'; +import { getFromJSON, TransactionTypeUtils } from '../utils/transaction-type.utils'; export class SchCTransaction extends Transaction { entity_type: string | undefined; @@ -21,11 +21,11 @@ export class SchCTransaction extends Transaction { election_code: string | undefined; election_other_description: string | undefined; loan_amount: number | undefined; - @Transform(BaseModel.dateTransform) loan_payment_to_date: Date | undefined; + loan_payment_to_date: number | undefined; loan_balance: number | undefined; @Transform(BaseModel.dateTransform) loan_incurred_date: Date | undefined; - @Transform(BaseModel.dateTransform) loan_due_date: Date | undefined; - loan_interest_rate: number | undefined; + loan_due_date: string | undefined; + loan_interest_rate: string | undefined; secured: boolean | undefined; personal_funds: boolean | undefined; lender_committee_id_number: string | undefined; @@ -51,11 +51,11 @@ export class SchCTransaction extends Transaction { transaction.setMetaProperties(transactionType); } if (depth > 0 && transaction.parent_transaction) { - transaction.parent_transaction = SchCTransaction.fromJSON(transaction.parent_transaction, depth - 1); + transaction.parent_transaction = getFromJSON(transaction.parent_transaction, depth - 1); } if (depth > 0 && transaction.children) { transaction.children = transaction.children.map(function (child) { - return SchCTransaction.fromJSON(child, depth - 1); + return getFromJSON(child, depth - 1); }); } return transaction; @@ -70,11 +70,13 @@ export enum ScheduleCTransactionGroups { export type ScheduleCTransactionGroupsType = ScheduleCTransactionGroups.LOANS | ScheduleCTransactionGroups.DEBTS; export enum ScheduleCTransactionTypes { - LOANS_RECEIVED_FROM_INDIVIDUAL = 'LOANS_RECEIVED_FROM_INDIVIDUAL', - LOANS_RECEIVED_FROM_BANK = 'LOANS_RECEIVED_FROM_BANK', + LOAN_RECEIVED_FROM_INDIVIDUAL = 'LOAN_RECEIVED_FROM_INDIVIDUAL', + LOAN_RECEIVED_FROM_BANK = 'LOAN_RECEIVED_FROM_BANK', + LOAN_BY_COMMITTEE = 'LOAN_BY_COMMITTEE', } export const ScheduleCTransactionTypeLabels: LabelList = [ - [ScheduleCTransactionTypes.LOANS_RECEIVED_FROM_INDIVIDUAL, 'Loan Received from Individual'], - [ScheduleCTransactionTypes.LOANS_RECEIVED_FROM_BANK, 'Loan Received from Bank'], + [ScheduleCTransactionTypes.LOAN_RECEIVED_FROM_INDIVIDUAL, 'Loan Received from Individual'], + [ScheduleCTransactionTypes.LOAN_RECEIVED_FROM_BANK, 'Loan Received from Bank'], + [ScheduleCTransactionTypes.LOAN_BY_COMMITTEE, 'Loan By Committee'], ]; diff --git a/front-end/src/app/shared/models/schc1-transaction-type.model.ts b/front-end/src/app/shared/models/schc1-transaction-type.model.ts index 6eca77d102..09a84b21e1 100644 --- a/front-end/src/app/shared/models/schc1-transaction-type.model.ts +++ b/front-end/src/app/shared/models/schc1-transaction-type.model.ts @@ -4,6 +4,9 @@ export abstract class SchC1TransactionType extends TransactionType { scheduleId = 'C1'; apiEndpoint = '/transactions/schedule-c1'; + // Labels + override amountInputHeader = 'Loan information'; + // Mapping of schedule fields to the group input component form templates templateMap: TransactionTemplateMapType = { // Form fields @@ -22,20 +25,28 @@ export abstract class SchC1TransactionType extends TransactionType { organization_name: 'lender_organization_name', committee_fec_id: '', committee_name: '', + candidate_fec_id: '', + candidate_last_name: '', + candidate_first_name: '', + candidate_middle_name: '', + candidate_prefix: '', + candidate_suffix: '', + candidate_office: '', + candidate_state: '', + candidate_district: '', date: 'loan_incurred_date', memo_code: '', amount: 'loan_amount', balance: 'total_balance', + payment_to_date: '', + interest_rate: '', + due_date: '', + secured: '', aggregate: '', purpose_description: '', text4000: 'text4000', category_code: '', election_code: '', election_other_description: '', - - // Labels and text strings - dateLabel: 'DATE', - amountInputHeader: 'Loan Information', - purposeDescripLabel: '', }; } diff --git a/front-end/src/app/shared/models/schc1-transaction.model.ts b/front-end/src/app/shared/models/schc1-transaction.model.ts index 4ef8e932e4..72cb5e6ff1 100644 --- a/front-end/src/app/shared/models/schc1-transaction.model.ts +++ b/front-end/src/app/shared/models/schc1-transaction.model.ts @@ -2,7 +2,7 @@ import { plainToClass, Transform } from 'class-transformer'; import { Transaction, AggregationGroups } from './transaction.model'; import { LabelList } from '../utils/label.utils'; import { BaseModel } from './base.model'; -import { TransactionTypeUtils } from '../utils/transaction-type.utils'; +import { getFromJSON, TransactionTypeUtils } from '../utils/transaction-type.utils'; export class SchC1Transaction extends Transaction { lender_organization_name: string | undefined; @@ -61,11 +61,11 @@ export class SchC1Transaction extends Transaction { transaction.setMetaProperties(transactionType); } if (depth > 0 && transaction.parent_transaction) { - transaction.parent_transaction = SchC1Transaction.fromJSON(transaction.parent_transaction, depth - 1); + transaction.parent_transaction = getFromJSON(transaction.parent_transaction, depth - 1); } if (depth > 0 && transaction.children) { transaction.children = transaction.children.map(function (child) { - return SchC1Transaction.fromJSON(child, depth - 1); + return getFromJSON(child, depth - 1); }); } return transaction; diff --git a/front-end/src/app/shared/models/schc2-transaction-type.model.ts b/front-end/src/app/shared/models/schc2-transaction-type.model.ts index 63e9b95749..f13c1f4d66 100644 --- a/front-end/src/app/shared/models/schc2-transaction-type.model.ts +++ b/front-end/src/app/shared/models/schc2-transaction-type.model.ts @@ -3,6 +3,7 @@ import { TransactionType, TransactionTemplateMapType } from './transaction-type. export abstract class SchC2TransactionType extends TransactionType { scheduleId = 'C1'; apiEndpoint = '/transactions/schedule-c2'; + override amountInputHeader = 'Loan information'; // Mapping of schedule fields to the group input component form templates templateMap: TransactionTemplateMapType = { @@ -22,6 +23,19 @@ export abstract class SchC2TransactionType extends TransactionType { organization_name: '', committee_fec_id: '', committee_name: '', + candidate_fec_id: '', + candidate_last_name: '', + candidate_first_name: '', + candidate_middle_name: '', + candidate_prefix: '', + candidate_suffix: '', + candidate_office: '', + candidate_state: '', + candidate_district: '', + payment_to_date: '', + interest_rate: '', + due_date: '', + secured: '', date: '', memo_code: '', amount: 'guaranteed_amount', @@ -32,10 +46,5 @@ export abstract class SchC2TransactionType extends TransactionType { category_code: '', election_code: '', election_other_description: '', - - // Labels and text strings - dateLabel: '', - amountInputHeader: 'Loan Information', - purposeDescripLabel: '', }; } diff --git a/front-end/src/app/shared/models/schc2-transaction.model.ts b/front-end/src/app/shared/models/schc2-transaction.model.ts index 93f4d57bab..6618826863 100644 --- a/front-end/src/app/shared/models/schc2-transaction.model.ts +++ b/front-end/src/app/shared/models/schc2-transaction.model.ts @@ -1,7 +1,7 @@ import { plainToClass } from 'class-transformer'; import { Transaction, AggregationGroups } from './transaction.model'; import { LabelList } from '../utils/label.utils'; -import { TransactionTypeUtils } from '../utils/transaction-type.utils'; +import { getFromJSON, TransactionTypeUtils } from '../utils/transaction-type.utils'; export class SchC2Transaction extends Transaction { guarantor_last_name: string | undefined; @@ -29,11 +29,11 @@ export class SchC2Transaction extends Transaction { transaction.setMetaProperties(transactionType); } if (depth > 0 && transaction.parent_transaction) { - transaction.parent_transaction = SchC2Transaction.fromJSON(transaction.parent_transaction, depth - 1); + transaction.parent_transaction = getFromJSON(transaction.parent_transaction, depth - 1); } if (depth > 0 && transaction.children) { transaction.children = transaction.children.map(function (child) { - return SchC2Transaction.fromJSON(child, depth - 1); + return getFromJSON(child, depth - 1); }); } return transaction; diff --git a/front-end/src/app/shared/models/transaction-groups/double-transaction-group.model.ts b/front-end/src/app/shared/models/transaction-groups/double-transaction-group.model.ts deleted file mode 100644 index 8ee1fb36a3..0000000000 --- a/front-end/src/app/shared/models/transaction-groups/double-transaction-group.model.ts +++ /dev/null @@ -1,31 +0,0 @@ -import { PrimeOptions } from 'app/shared/utils/label.utils'; -import { TransactionTemplateMapType } from '../transaction-type.model'; - -export abstract class DoubleTransactionGroup { - abstract getFormProperties(templateMap: TransactionTemplateMapType): string[]; - abstract getChildFormProperties(childTemplateMap: TransactionTemplateMapType): string[]; - - abstract getContactTypeOptions(): PrimeOptions; - abstract getChildContactTypeOptions(): PrimeOptions; - - abstract hasEmployerInput(): boolean; - abstract childHasEmployerInput(): boolean; - abstract hasParentCandidateInformationInput(): boolean; - abstract hasChildCandidateInformationInput(): boolean; - abstract hasParentElectionInformationInput(): boolean; - abstract hasChildElectionInformationInput(): boolean; - - abstract getParentTransactionTitle(): string; - abstract getParentFooter(): string; - abstract getChildTransactionSubTitle(): string; - abstract getGroupDescription(): string; - - abstract getParentAccordionTitle(): string; - abstract getParentAccordionSubTitle(): string; - abstract getChildAccordionTitle(): string; - abstract getChildAccordionSubTitle(): string; - - abstract getChildContactLabel(): string; - - abstract getAutoGeneratedChildFields(childTemplateMap: TransactionTemplateMapType): string[]; -} diff --git a/front-end/src/app/shared/models/transaction-groups/transaction-group-a.model.spec.ts b/front-end/src/app/shared/models/transaction-groups/transaction-group-a.model.spec.ts deleted file mode 100644 index 49e8cf27e5..0000000000 --- a/front-end/src/app/shared/models/transaction-groups/transaction-group-a.model.spec.ts +++ /dev/null @@ -1,64 +0,0 @@ -import { TestBed } from '@angular/core/testing'; -import { LabelUtils } from 'app/shared/utils/label.utils'; -import { testTemplateMap } from 'app/shared/utils/unit-test.utils'; -import { ContactTypeLabels, ContactTypes } from '../contact.model'; -import { TransactionGroupA } from './transaction-group-a.model'; - -describe('TransactionGroupA', () => { - let component: TransactionGroupA; - - beforeEach(() => { - TestBed.configureTestingModule({ - imports: [], - providers: [TransactionGroupA], - }); - - component = TestBed.inject(TransactionGroupA); - }); - - it('should create', () => { - expect(component).toBeTruthy(); - }); - - it('#getFormProperties happy path', () => { - const testLastNameProperty = 'testLastNameProperty'; - const testTemplateMapCopy = { ...testTemplateMap }; - testTemplateMapCopy.last_name = testLastNameProperty; - - const retval = component.getFormProperties(testTemplateMapCopy); - expect(retval.includes(testLastNameProperty)).toBeTruthy(); - }); - - it('#getContactTypeOptions happy path', () => { - const expectedRetval = LabelUtils.getPrimeOptions(ContactTypeLabels, [ContactTypes.INDIVIDUAL]); - const retval = component.getContactTypeOptions(); - expect(JSON.stringify(expectedRetval) === JSON.stringify(retval)).toBeTruthy(); - }); - - it('#hasEmployerInput happy path', () => { - const testEntityType = ContactTypes.INDIVIDUAL; - const testScheduleId = 'A'; - const retval = component.hasEmployerInput(testEntityType, testScheduleId); - expect(retval).toBeTrue(); - }); - - it('#hasCommitteeFecIdInput happy path', () => { - expect(component.hasCommitteeFecIdInput()).toBeFalse(); - }); - - it('#hasElectionInformationInput happy path', () => { - expect(component.hasElectionInformationInput()).toBeFalse(); - }); - - it('#hasCandidateInformationInput happy path', () => { - expect(component.hasCandidateInformationInput()).toBeFalse(); - }); - - it('#hasCandidateCommitteeInput happy path', () => { - expect(component.hasCandidateCommitteeInput()).toBeFalse(); - }); - - it('#hasCandidateOfficeInput happy path', () => { - expect(component.hasCandidateOfficeInput()).toBeTrue(); - }); -}); diff --git a/front-end/src/app/shared/models/transaction-groups/transaction-group-a.model.ts b/front-end/src/app/shared/models/transaction-groups/transaction-group-a.model.ts deleted file mode 100644 index 25b638a273..0000000000 --- a/front-end/src/app/shared/models/transaction-groups/transaction-group-a.model.ts +++ /dev/null @@ -1,60 +0,0 @@ -import { LabelUtils, PrimeOptions } from 'app/shared/utils/label.utils'; -import { ContactTypeLabels, ContactTypes } from '../contact.model'; -import { TransactionTemplateMapType } from '../transaction-type.model'; -import { TransactionGroup } from './transaction-group.model'; - -export class TransactionGroupA extends TransactionGroup { - getFormProperties(templateMap: TransactionTemplateMapType): string[] { - return [ - 'entity_type', - templateMap.last_name, - templateMap.first_name, - templateMap.middle_name, - templateMap.prefix, - templateMap.suffix, - templateMap.street_1, - templateMap.street_2, - templateMap.city, - templateMap.state, - templateMap.zip, - templateMap.date, - templateMap.amount, - templateMap.aggregate, - templateMap.purpose_description, - templateMap.employer, - templateMap.occupation, - templateMap.memo_code, - templateMap.text4000, - templateMap.category_code, - 'subTransaction', - ].filter((val) => !!val); - } - - getContactTypeOptions(): PrimeOptions { - return LabelUtils.getPrimeOptions(ContactTypeLabels, [ContactTypes.INDIVIDUAL]); - } - - hasEmployerInput(entityType: ContactTypes, scheduleId: string): boolean { - return ContactTypes.INDIVIDUAL === entityType && 'B' !== scheduleId; - } - - hasCommitteeFecIdInput(): boolean { - return false; - } - - hasElectionInformationInput(): boolean { - return false; - } - - hasCandidateInformationInput(): boolean { - return false; - } - - hasCandidateCommitteeInput(): boolean { - return false; - } - - hasCandidateOfficeInput(): boolean { - return true; - } -} diff --git a/front-end/src/app/shared/models/transaction-groups/transaction-group-aa.model.spec.ts b/front-end/src/app/shared/models/transaction-groups/transaction-group-aa.model.spec.ts deleted file mode 100644 index e9f3166ae4..0000000000 --- a/front-end/src/app/shared/models/transaction-groups/transaction-group-aa.model.spec.ts +++ /dev/null @@ -1,79 +0,0 @@ -import { TestBed } from '@angular/core/testing'; -import { LabelUtils } from 'app/shared/utils/label.utils'; -import { testTemplateMap } from 'app/shared/utils/unit-test.utils'; -import { ContactTypeLabels, ContactTypes } from '../contact.model'; -import { TransactionGroupAA } from './transaction-group-aa.model'; - -describe('TransactionGroupAA', () => { - let component: TransactionGroupAA; - - beforeEach(() => { - TestBed.configureTestingModule({ - imports: [], - providers: [TransactionGroupAA], - }); - - component = TestBed.inject(TransactionGroupAA); - }); - - it('should create', () => { - expect(component).toBeTruthy(); - }); - - it('#getFormProperties should include last name', () => { - const testLastName = 'testLastName'; - const testTemplateMapCopy = { ...testTemplateMap }; - testTemplateMapCopy.last_name = testLastName; - const retval = component.getFormProperties(testTemplateMapCopy); - expect(retval.includes(testLastName)).toBeTruthy(); - }); - - it('#getChildFormProperties should include last name', () => { - const testLastName = 'testLastName'; - const testTemplateMapCopy = { ...testTemplateMap }; - testTemplateMapCopy.last_name = testLastName; - const retval = component.getChildFormProperties(testTemplateMapCopy); - expect(retval.includes(testLastName)).toBeTruthy(); - }); - - it('#getContactTypeOptions should return individual', () => { - const expectedRetval = LabelUtils.getPrimeOptions(ContactTypeLabels, [ContactTypes.INDIVIDUAL]); - const retval = component.getContactTypeOptions(); - expect(JSON.stringify(expectedRetval) === JSON.stringify(retval)).toBeTruthy(); - }); - - it('#getChildContactTypeOptions should return individual and committee', () => { - const expectedOptions = LabelUtils.getPrimeOptions(ContactTypeLabels, [ContactTypes.INDIVIDUAL]); - const options = component.getChildContactTypeOptions(); - expect(JSON.stringify(expectedOptions) === JSON.stringify(options)).toBeTruthy(); - }); - - it('#hasEmployerInput should return true', () => { - const retval = component.hasEmployerInput(); - expect(retval).toBeTrue(); - }); - - it('#test group methods to ensure they return the right values', () => { - expect(component.childHasEmployerInput()).toBeFalse(); - expect(component.getParentTransactionTitle()).toBe(''); - expect(component.getParentFooter()).toBe( - 'The information in this receipt will automatically populate a related transaction. Review the associated disbursement or click "Save both transactions" to record these transactions.' - ); - expect(component.getGroupDescription()).toBe( - 'This receipt type automatically creates an associated transaction. Saving an in-kind receipt will automatically create an in-kind out.' - ); - expect(component.getParentAccordionTitle()).toBe('ENTER DATA'); - expect(component.getParentAccordionSubTitle()).toBe('Add contact and receipt information'); - expect(component.getChildAccordionTitle()).toBe('AUTO-POPULATED'); - expect(component.getChildAccordionSubTitle()).toBe('Review disbursement information'); - expect(component.getChildContactLabel()).toBe('Contact'); - expect(component.getAutoGeneratedChildFields(testTemplateMap).length).toBe(16); - expect(component.getChildTransactionSubTitle()).toBe( - 'To update any errors found, return to the previous step to update the in-kind receipt.' - ); - expect(component.hasChildCandidateInformationInput()).toBeFalse(); - expect(component.hasChildElectionInformationInput()).toBeFalse(); - expect(component.hasParentCandidateInformationInput()).toBeFalse(); - expect(component.hasParentElectionInformationInput()).toBeFalse(); - }); -}); diff --git a/front-end/src/app/shared/models/transaction-groups/transaction-group-aa.model.ts b/front-end/src/app/shared/models/transaction-groups/transaction-group-aa.model.ts deleted file mode 100644 index e401ab07e9..0000000000 --- a/front-end/src/app/shared/models/transaction-groups/transaction-group-aa.model.ts +++ /dev/null @@ -1,127 +0,0 @@ -import { LabelUtils, PrimeOptions } from 'app/shared/utils/label.utils'; -import { ContactTypeLabels, ContactTypes } from '../contact.model'; -import { TransactionTemplateMapType } from '../transaction-type.model'; -import { DoubleTransactionGroup } from './double-transaction-group.model'; - -export class TransactionGroupAA extends DoubleTransactionGroup { - getFormProperties(templateMap: TransactionTemplateMapType): string[] { - return [ - 'entity_type', - templateMap.last_name, - templateMap.first_name, - templateMap.middle_name, - templateMap.prefix, - templateMap.suffix, - templateMap.street_1, - templateMap.street_2, - templateMap.city, - templateMap.state, - templateMap.zip, - templateMap.date, - templateMap.amount, - templateMap.aggregate, - templateMap.purpose_description, - templateMap.employer, - templateMap.occupation, - templateMap.memo_code, - templateMap.text4000, - ].filter((field) => !!field); - } - - getChildFormProperties(childTemplateMap: TransactionTemplateMapType): string[] { - return [ - 'entity_type', - childTemplateMap.last_name, - childTemplateMap.first_name, - childTemplateMap.middle_name, - childTemplateMap.prefix, - childTemplateMap.suffix, - childTemplateMap.street_1, - childTemplateMap.street_2, - childTemplateMap.city, - childTemplateMap.state, - childTemplateMap.zip, - childTemplateMap.date, - childTemplateMap.amount, - childTemplateMap.aggregate, - childTemplateMap.purpose_description, - childTemplateMap.category_code, - childTemplateMap.memo_code, - childTemplateMap.text4000, - ].filter((field) => !!field); - } - - getContactTypeOptions(): PrimeOptions { - return LabelUtils.getPrimeOptions(ContactTypeLabels, [ContactTypes.INDIVIDUAL]); - } - - getChildContactTypeOptions(): PrimeOptions { - return LabelUtils.getPrimeOptions(ContactTypeLabels, [ContactTypes.INDIVIDUAL]); - } - - hasEmployerInput(): boolean { - return true; - } - - override childHasEmployerInput(): boolean { - return false; - } - - getParentTransactionTitle(): string { - return ''; - } - - getParentFooter(): string { - return 'The information in this receipt will automatically populate a related transaction. Review the associated disbursement or click "Save both transactions" to record these transactions.'; - } - - getChildTransactionSubTitle(): string { - return 'To update any errors found, return to the previous step to update the in-kind receipt.'; - } - - getGroupDescription(): string { - return 'This receipt type automatically creates an associated transaction. Saving an in-kind receipt will automatically create an in-kind out.'; - } - - getParentAccordionTitle(): string { - return 'ENTER DATA'; - } - - getParentAccordionSubTitle(): string { - return 'Add contact and receipt information'; - } - - getChildAccordionTitle(): string { - return 'AUTO-POPULATED'; - } - - getChildAccordionSubTitle(): string { - return 'Review disbursement information'; - } - - getChildContactLabel(): string { - return 'Contact'; - } - - hasChildCandidateInformationInput(): boolean { - return false; - } - - hasChildElectionInformationInput(): boolean { - return false; - } - - hasParentCandidateInformationInput(): boolean { - return false; - } - - hasParentElectionInformationInput(): boolean { - return false; - } - - getAutoGeneratedChildFields(childTemplateMap: TransactionTemplateMapType): string[] { - return this.getChildFormProperties(childTemplateMap).filter( - (field) => ![childTemplateMap.text4000, childTemplateMap.category_code].includes(field) - ); - } -} diff --git a/front-end/src/app/shared/models/transaction-groups/transaction-group-ag.model.spec.ts b/front-end/src/app/shared/models/transaction-groups/transaction-group-ag.model.spec.ts deleted file mode 100644 index 933b4ef760..0000000000 --- a/front-end/src/app/shared/models/transaction-groups/transaction-group-ag.model.spec.ts +++ /dev/null @@ -1,87 +0,0 @@ -import { TestBed } from '@angular/core/testing'; -import { LabelUtils } from 'app/shared/utils/label.utils'; -import { testTemplateMap } from 'app/shared/utils/unit-test.utils'; -import { ContactTypeLabels, ContactTypes } from '../contact.model'; -import { TransactionGroupAG } from './transaction-group-ag.model'; - -describe('TransactionGroupAG', () => { - let component: TransactionGroupAG; - - beforeEach(() => { - TestBed.configureTestingModule({ - imports: [], - providers: [TransactionGroupAG], - }); - - component = TestBed.inject(TransactionGroupAG); - }); - - it('should create', () => { - expect(component).toBeTruthy(); - }); - - it('#getFormProperties happy path', () => { - const testLastName = 'testLastName'; - const testTemplateMapCopy = { ...testTemplateMap }; - testTemplateMapCopy.last_name = testLastName; - const retval = component.getFormProperties(testTemplateMapCopy); - expect(retval.includes(testLastName)).toBeTruthy(); - }); - - it('#getChildFormProperties happy path', () => { - const testOrganizationName = 'testOrganizationName'; - const testTemplateMapCopy = { ...testTemplateMap }; - testTemplateMapCopy.organization_name = testOrganizationName; - const retval = component.getChildFormProperties(testTemplateMapCopy); - expect(retval.includes(testOrganizationName)).toBeTruthy(); - }); - - it('#getContactTypeOptions happy path', () => { - const expectedRetval = LabelUtils.getPrimeOptions(ContactTypeLabels, [ContactTypes.INDIVIDUAL]); - const retval = component.getContactTypeOptions(); - expect(JSON.stringify(expectedRetval) === JSON.stringify(retval)).toBeTruthy(); - }); - - it('#getChildContactTypeOptions happy path', () => { - const expectedRetval = LabelUtils.getPrimeOptions(ContactTypeLabels, [ - ContactTypes.COMMITTEE, - ContactTypes.INDIVIDUAL, - ]); - const retval = component.getChildContactTypeOptions(); - expect(JSON.stringify(expectedRetval) === JSON.stringify(retval)).toBeTruthy(); - }); - - it('#hasEmployerInput happy path', () => { - const retval = component.hasEmployerInput(); - expect(retval).toBeTrue(); - }); - - it('#test group methods to ensure they return the right values', () => { - expect(component.childHasEmployerInput()).toBeTrue(); - expect(component.getParentTransactionTitle()).toBe('Receipt'); - expect(component.getParentFooter()).toBe('This type of receipt requires a memo transaction'); - expect(component.getGroupDescription()).toBe( - 'This type of receipt requires a memo transaction. Follow this two-step process to create both an earmark receipt and an earmark memo:' - ); - expect(component.getParentAccordionTitle()).toBe('STEP ONE'); - expect(component.getParentAccordionSubTitle()).toBe('Add receipt and contributor information'); - expect(component.getChildAccordionTitle()).toBe('STEP TWO'); - expect(component.getChildAccordionSubTitle()).toBe( - 'Add earmarked memo and conduit information (REQUIRED FOR EARMARKED RECEIPTS)' - ); - expect(component.getChildAccordionSubTitle()).toBe( - 'Add earmarked memo and conduit information (REQUIRED FOR EARMARKED RECEIPTS)' - ); - expect(component.getPartTwoTitle()).toBe('STEP TWO'); - expect(component.getPartTwoSubTitle()).toBe( - 'Add earmarked memo and conduit information (REQUIRED FOR EARMARKED RECEIPTS)' - ); - expect(component.getChildContactLabel()).toBe('Conduit'); - expect(component.getAutoGeneratedChildFields().length).toBe(0); - expect(component.getChildTransactionSubTitle()).toBe(''); - expect(component.hasChildCandidateInformationInput()).toBeFalse(); - expect(component.hasChildElectionInformationInput()).toBeFalse(); - expect(component.hasParentCandidateInformationInput()).toBeFalse(); - expect(component.hasParentElectionInformationInput()).toBeFalse(); - }); -}); diff --git a/front-end/src/app/shared/models/transaction-groups/transaction-group-ag.model.ts b/front-end/src/app/shared/models/transaction-groups/transaction-group-ag.model.ts deleted file mode 100644 index 34db92c0bd..0000000000 --- a/front-end/src/app/shared/models/transaction-groups/transaction-group-ag.model.ts +++ /dev/null @@ -1,136 +0,0 @@ -import { LabelUtils, PrimeOptions } from 'app/shared/utils/label.utils'; -import { ContactTypeLabels, ContactTypes } from '../contact.model'; -import { TransactionTemplateMapType } from '../transaction-type.model'; -import { DoubleTransactionGroup } from './double-transaction-group.model'; - -export class TransactionGroupAG extends DoubleTransactionGroup { - getFormProperties(templateMap: TransactionTemplateMapType): string[] { - return [ - 'entity_type', - templateMap.last_name, - templateMap.first_name, - templateMap.middle_name, - templateMap.prefix, - templateMap.suffix, - templateMap.street_1, - templateMap.street_2, - templateMap.city, - templateMap.state, - templateMap.zip, - templateMap.date, - templateMap.amount, - templateMap.aggregate, - templateMap.purpose_description, - templateMap.employer, - templateMap.occupation, - templateMap.memo_code, - templateMap.text4000, - ].filter((val) => !!val); - } - - getChildFormProperties(childTemplateMap: TransactionTemplateMapType): string[] { - return [ - 'entity_type', - childTemplateMap.organization_name, - childTemplateMap.last_name, - childTemplateMap.first_name, - childTemplateMap.middle_name, - childTemplateMap.prefix, - childTemplateMap.suffix, - childTemplateMap.street_1, - childTemplateMap.street_2, - childTemplateMap.city, - childTemplateMap.state, - childTemplateMap.zip, - childTemplateMap.date, - childTemplateMap.amount, - childTemplateMap.aggregate, - childTemplateMap.purpose_description, - childTemplateMap.employer, - childTemplateMap.occupation, - childTemplateMap.committee_fec_id, - childTemplateMap.committee_name, - childTemplateMap.memo_code, - childTemplateMap.text4000, - ].filter((val) => !!val); - } - - getContactTypeOptions(): PrimeOptions { - return LabelUtils.getPrimeOptions(ContactTypeLabels, [ContactTypes.INDIVIDUAL]); - } - - getChildContactTypeOptions(): PrimeOptions { - return LabelUtils.getPrimeOptions(ContactTypeLabels, [ContactTypes.COMMITTEE, ContactTypes.INDIVIDUAL]); - } - - hasEmployerInput(): boolean { - return true; - } - override childHasEmployerInput(): boolean { - return true; - } - - getParentTransactionTitle(): string { - return 'Receipt'; - } - - getParentFooter(): string { - return 'This type of receipt requires a memo transaction'; - } - - getChildTransactionSubTitle(): string { - return ''; - } - - getGroupDescription(): string { - return 'This type of receipt requires a memo transaction. Follow this two-step process to create both an earmark receipt and an earmark memo:'; - } - - getParentAccordionTitle(): string { - return 'STEP ONE'; - } - - getParentAccordionSubTitle(): string { - return 'Add receipt and contributor information'; - } - - getChildAccordionTitle(): string { - return 'STEP TWO'; - } - - getChildAccordionSubTitle(): string { - return 'Add earmarked memo and conduit information (REQUIRED FOR EARMARKED RECEIPTS)'; - } - - getPartTwoTitle(): string { - return 'STEP TWO'; - } - - getPartTwoSubTitle(): string { - return 'Add earmarked memo and conduit information (REQUIRED FOR EARMARKED RECEIPTS)'; - } - - getChildContactLabel(): string { - return 'Conduit'; - } - - hasChildCandidateInformationInput(): boolean { - return false; - } - - hasChildElectionInformationInput(): boolean { - return false; - } - - hasParentCandidateInformationInput(): boolean { - return false; - } - - hasParentElectionInformationInput(): boolean { - return false; - } - - getAutoGeneratedChildFields(): string[] { - return []; - } -} diff --git a/front-end/src/app/shared/models/transaction-groups/transaction-group-b.model.spec.ts b/front-end/src/app/shared/models/transaction-groups/transaction-group-b.model.spec.ts deleted file mode 100644 index d2e6c4ccd4..0000000000 --- a/front-end/src/app/shared/models/transaction-groups/transaction-group-b.model.spec.ts +++ /dev/null @@ -1,64 +0,0 @@ -import { TestBed } from '@angular/core/testing'; -import { LabelUtils } from 'app/shared/utils/label.utils'; -import { testTemplateMap } from 'app/shared/utils/unit-test.utils'; -import { ContactTypeLabels, ContactTypes } from '../contact.model'; -import { TransactionGroupB } from './transaction-group-b.model'; - -describe('TransactionGroupB', () => { - let component: TransactionGroupB; - - beforeEach(() => { - TestBed.configureTestingModule({ - imports: [], - providers: [TransactionGroupB], - }); - - component = TestBed.inject(TransactionGroupB); - }); - - it('should create', () => { - expect(component).toBeTruthy(); - }); - - it('#getFormProperties happy path', () => { - const testOrganizationName = 'testOrganizationName'; - const testTemplateMapCopy = { ...testTemplateMap }; - testTemplateMapCopy.organization_name = testOrganizationName; - const retval = component.getFormProperties(testTemplateMapCopy); - expect(retval.includes(testOrganizationName)).toBeTruthy(); - }); - - it('#getContactTypeOptions happy path', () => { - const expectedRetval = LabelUtils.getPrimeOptions(ContactTypeLabels, [ - ContactTypes.INDIVIDUAL, - ContactTypes.ORGANIZATION, - ContactTypes.COMMITTEE, - ]); - const retval = component.getContactTypeOptions(); - expect(JSON.stringify(expectedRetval) === JSON.stringify(retval)).toBeTruthy(); - }); - - it('#hasEmployerInput happy path', () => { - expect(component.hasEmployerInput()).toBeFalse(); - }); - - it('#hasCommitteeFecIdInput happy path', () => { - expect(component.hasCommitteeFecIdInput()).toBeFalse(); - }); - - it('#hasElectionInformationInput happy path', () => { - expect(component.hasElectionInformationInput()).toBeFalse(); - }); - - it('#hasCandidateInformationInput happy path', () => { - expect(component.hasCandidateInformationInput()).toBeFalse(); - }); - - it('#hasCandidateCommitteeInput happy path', () => { - expect(component.hasCandidateCommitteeInput()).toBeFalse(); - }); - - it('#hasCandidateOfficeInput happy path', () => { - expect(component.hasCandidateOfficeInput()).toBeTrue(); - }); -}); diff --git a/front-end/src/app/shared/models/transaction-groups/transaction-group-b.model.ts b/front-end/src/app/shared/models/transaction-groups/transaction-group-b.model.ts deleted file mode 100644 index 7d4bf2887c..0000000000 --- a/front-end/src/app/shared/models/transaction-groups/transaction-group-b.model.ts +++ /dev/null @@ -1,62 +0,0 @@ -import { LabelUtils, PrimeOptions } from 'app/shared/utils/label.utils'; -import { ContactTypeLabels, ContactTypes } from '../contact.model'; -import { TransactionTemplateMapType } from '../transaction-type.model'; -import { TransactionGroup } from './transaction-group.model'; - -export class TransactionGroupB extends TransactionGroup { - getFormProperties(templateMap: TransactionTemplateMapType): string[] { - return [ - 'entity_type', - templateMap.organization_name, - templateMap.last_name, - templateMap.first_name, - templateMap.middle_name, - templateMap.prefix, - templateMap.suffix, - templateMap.street_1, - templateMap.street_2, - templateMap.city, - templateMap.state, - templateMap.zip, - templateMap.date, - templateMap.amount, - templateMap.aggregate, - templateMap.purpose_description, - templateMap.memo_code, - templateMap.text4000, - templateMap.category_code, - ].filter((val) => !!val); - } - - getContactTypeOptions(): PrimeOptions { - return LabelUtils.getPrimeOptions(ContactTypeLabels, [ - ContactTypes.INDIVIDUAL, - ContactTypes.ORGANIZATION, - ContactTypes.COMMITTEE, - ]); - } - - hasEmployerInput(): boolean { - return false; - } - - hasCommitteeFecIdInput(): boolean { - return false; - } - - hasElectionInformationInput(): boolean { - return false; - } - - hasCandidateInformationInput(): boolean { - return false; - } - - hasCandidateCommitteeInput(): boolean { - return false; - } - - hasCandidateOfficeInput(): boolean { - return true; - } -} diff --git a/front-end/src/app/shared/models/transaction-groups/transaction-group-c.model.spec.ts b/front-end/src/app/shared/models/transaction-groups/transaction-group-c.model.spec.ts deleted file mode 100644 index 0fa0fe8154..0000000000 --- a/front-end/src/app/shared/models/transaction-groups/transaction-group-c.model.spec.ts +++ /dev/null @@ -1,67 +0,0 @@ -import { TestBed } from '@angular/core/testing'; -import { LabelUtils } from 'app/shared/utils/label.utils'; -import { testTemplateMap } from 'app/shared/utils/unit-test.utils'; -import { ContactTypeLabels, ContactTypes } from '../contact.model'; -import { TransactionGroupC } from './transaction-group-c.model'; - -describe('TransactionGroupC', () => { - let component: TransactionGroupC; - - beforeEach(() => { - TestBed.configureTestingModule({ - imports: [], - providers: [TransactionGroupC], - }); - - component = TestBed.inject(TransactionGroupC); - }); - - it('should create', () => { - expect(component).toBeTruthy(); - }); - - it('#getFormProperties happy path', () => { - const testOrganizationName = 'testOrganizationName'; - const testTemplateMapCopy = { ...testTemplateMap }; - testTemplateMapCopy.organization_name = testOrganizationName; - const retval = component.getFormProperties(testTemplateMapCopy); - expect(retval.includes(testOrganizationName)).toBeTruthy(); - }); - - it('#getContactTypeOptions happy path', () => { - const expectedRetval = LabelUtils.getPrimeOptions(ContactTypeLabels, [ - ContactTypes.INDIVIDUAL, - ContactTypes.ORGANIZATION, - ContactTypes.COMMITTEE, - ]); - const retval = component.getContactTypeOptions(); - expect(JSON.stringify(expectedRetval) === JSON.stringify(retval)).toBeTruthy(); - }); - - it('#hasEmployerInput happy path', () => { - const testEntityType = ContactTypes.INDIVIDUAL; - const testScheduleId = 'A'; - const retval = component.hasEmployerInput(testEntityType, testScheduleId); - expect(retval).toBeTrue(); - }); - - it('#hasCommitteeFecIdInput happy path', () => { - expect(component.hasCommitteeFecIdInput()).toBeFalse(); - }); - - it('#hasElectionInformationInput happy path', () => { - expect(component.hasElectionInformationInput()).toBeFalse(); - }); - - it('#hasCandidateInformationInput happy path', () => { - expect(component.hasCandidateInformationInput()).toBeFalse(); - }); - - it('#hasCandidateCommitteeInput happy path', () => { - expect(component.hasCandidateCommitteeInput()).toBeFalse(); - }); - - it('#hasCandidateOfficeInput happy path', () => { - expect(component.hasCandidateOfficeInput()).toBeTrue(); - }); -}); diff --git a/front-end/src/app/shared/models/transaction-groups/transaction-group-c.model.ts b/front-end/src/app/shared/models/transaction-groups/transaction-group-c.model.ts deleted file mode 100644 index 0654694bd1..0000000000 --- a/front-end/src/app/shared/models/transaction-groups/transaction-group-c.model.ts +++ /dev/null @@ -1,65 +0,0 @@ -import { LabelUtils, PrimeOptions } from 'app/shared/utils/label.utils'; -import { ContactTypeLabels, ContactTypes } from '../contact.model'; -import { TransactionTemplateMapType } from '../transaction-type.model'; -import { TransactionGroup } from './transaction-group.model'; - -export class TransactionGroupC extends TransactionGroup { - getFormProperties(templateMap: TransactionTemplateMapType): string[] { - return [ - 'entity_type', - templateMap.organization_name, - templateMap.last_name, - templateMap.first_name, - templateMap.middle_name, - templateMap.prefix, - templateMap.suffix, - templateMap.street_1, - templateMap.street_2, - templateMap.city, - templateMap.state, - templateMap.zip, - templateMap.date, - templateMap.amount, - templateMap.aggregate, - templateMap.purpose_description, - templateMap.employer, - templateMap.occupation, - templateMap.memo_code, - templateMap.text4000, - templateMap.category_code, - 'subTransaction', - ].filter((val) => !!val); - } - - getContactTypeOptions(): PrimeOptions { - return LabelUtils.getPrimeOptions(ContactTypeLabels, [ - ContactTypes.INDIVIDUAL, - ContactTypes.ORGANIZATION, - ContactTypes.COMMITTEE, - ]); - } - - hasEmployerInput(entityType: ContactTypes, scheduleId: string): boolean { - return ContactTypes.INDIVIDUAL === entityType && 'B' !== scheduleId; - } - - hasCommitteeFecIdInput(): boolean { - return false; - } - - hasElectionInformationInput(): boolean { - return false; - } - - hasCandidateInformationInput(): boolean { - return false; - } - - hasCandidateCommitteeInput(): boolean { - return false; - } - - hasCandidateOfficeInput(): boolean { - return true; - } -} diff --git a/front-end/src/app/shared/models/transaction-groups/transaction-group-d.model.spec.ts b/front-end/src/app/shared/models/transaction-groups/transaction-group-d.model.spec.ts deleted file mode 100644 index cb90643eea..0000000000 --- a/front-end/src/app/shared/models/transaction-groups/transaction-group-d.model.spec.ts +++ /dev/null @@ -1,60 +0,0 @@ -import { TestBed } from '@angular/core/testing'; -import { LabelUtils } from 'app/shared/utils/label.utils'; -import { testTemplateMap } from 'app/shared/utils/unit-test.utils'; -import { ContactTypeLabels, ContactTypes } from '../contact.model'; -import { TransactionGroupD } from './transaction-group-d.model'; - -describe('TransactionGroupD', () => { - let component: TransactionGroupD; - - beforeEach(() => { - TestBed.configureTestingModule({ - imports: [], - providers: [TransactionGroupD], - }); - - component = TestBed.inject(TransactionGroupD); - }); - - it('should create', () => { - expect(component).toBeTruthy(); - }); - - it('#getFormProperties happy path', () => { - const testOrganizationName = 'testOrganizationName'; - const testTemplateMapCopy = { ...testTemplateMap }; - testTemplateMapCopy.organization_name = testOrganizationName; - const retval = component.getFormProperties(testTemplateMapCopy); - expect(retval.includes(testOrganizationName)).toBeTruthy(); - }); - - it('#getContactTypeOptions happy path', () => { - const expectedRetval = LabelUtils.getPrimeOptions(ContactTypeLabels, [ContactTypes.ORGANIZATION]); - const retval = component.getContactTypeOptions(); - expect(JSON.stringify(expectedRetval) === JSON.stringify(retval)).toBeTruthy(); - }); - - it('#hasEmployerInput happy path', () => { - expect(component.hasEmployerInput()).toBeFalse(); - }); - - it('#hasCommitteeFecIdInput happy path', () => { - expect(component.hasCommitteeFecIdInput()).toBeFalse(); - }); - - it('#hasElectionInformationInput happy path', () => { - expect(component.hasElectionInformationInput()).toBeFalse(); - }); - - it('#hasCandidateInformationInput happy path', () => { - expect(component.hasCandidateInformationInput()).toBeFalse(); - }); - - it('#hasCandidateCommitteeInput happy path', () => { - expect(component.hasCandidateCommitteeInput()).toBeFalse(); - }); - - it('#hasCandidateOfficeInput happy path', () => { - expect(component.hasCandidateOfficeInput()).toBeTrue(); - }); -}); diff --git a/front-end/src/app/shared/models/transaction-groups/transaction-group-d.model.ts b/front-end/src/app/shared/models/transaction-groups/transaction-group-d.model.ts deleted file mode 100644 index f3aa880400..0000000000 --- a/front-end/src/app/shared/models/transaction-groups/transaction-group-d.model.ts +++ /dev/null @@ -1,53 +0,0 @@ -import { LabelUtils, PrimeOptions } from 'app/shared/utils/label.utils'; -import { ContactTypeLabels, ContactTypes } from '../contact.model'; -import { TransactionTemplateMapType } from '../transaction-type.model'; -import { TransactionGroup } from './transaction-group.model'; - -export class TransactionGroupD extends TransactionGroup { - getFormProperties(templateMap: TransactionTemplateMapType): string[] { - return [ - 'entity_type', - templateMap.organization_name, - templateMap.street_1, - templateMap.street_2, - templateMap.city, - templateMap.state, - templateMap.zip, - templateMap.date, - templateMap.amount, - templateMap.aggregate, - templateMap.purpose_description, - templateMap.memo_code, - templateMap.text4000, - templateMap.category_code, - ].filter((val) => !!val); - } - - getContactTypeOptions(): PrimeOptions { - return LabelUtils.getPrimeOptions(ContactTypeLabels, [ContactTypes.ORGANIZATION]); - } - - hasEmployerInput(): boolean { - return false; - } - - hasCommitteeFecIdInput(): boolean { - return false; - } - - hasElectionInformationInput(): boolean { - return false; - } - - hasCandidateInformationInput(): boolean { - return false; - } - - hasCandidateCommitteeInput(): boolean { - return false; - } - - hasCandidateOfficeInput(): boolean { - return true; - } -} diff --git a/front-end/src/app/shared/models/transaction-groups/transaction-group-e.model.spec.ts b/front-end/src/app/shared/models/transaction-groups/transaction-group-e.model.spec.ts deleted file mode 100644 index be768d61d1..0000000000 --- a/front-end/src/app/shared/models/transaction-groups/transaction-group-e.model.spec.ts +++ /dev/null @@ -1,60 +0,0 @@ -import { TestBed } from '@angular/core/testing'; -import { LabelUtils } from 'app/shared/utils/label.utils'; -import { testTemplateMap } from 'app/shared/utils/unit-test.utils'; -import { ContactTypeLabels, ContactTypes } from '../contact.model'; -import { TransactionGroupE } from './transaction-group-e.model'; - -describe('TransactionGroupE', () => { - let component: TransactionGroupE; - - beforeEach(() => { - TestBed.configureTestingModule({ - imports: [], - providers: [TransactionGroupE], - }); - - component = TestBed.inject(TransactionGroupE); - }); - - it('should create', () => { - expect(component).toBeTruthy(); - }); - - it('#getFormProperties happy path', () => { - const testOrganizationName = 'testOrganizationName'; - const testTemplateMapCopy = { ...testTemplateMap }; - testTemplateMapCopy.organization_name = testOrganizationName; - const retval = component.getFormProperties(testTemplateMapCopy); - expect(retval.includes(testOrganizationName)).toBeTruthy(); - }); - - it('#getContactTypeOptions happy path', () => { - const expectedRetval = LabelUtils.getPrimeOptions(ContactTypeLabels, [ContactTypes.COMMITTEE]); - const retval = component.getContactTypeOptions(); - expect(JSON.stringify(expectedRetval) === JSON.stringify(retval)).toBeTruthy(); - }); - - it('#hasEmployerInput happy path', () => { - expect(component.hasEmployerInput()).toBeFalse(); - }); - - it('#hasCommitteeFecIdInput happy path', () => { - expect(component.hasCommitteeFecIdInput()).toBeTrue(); - }); - - it('#hasElectionInformationInput happy path', () => { - expect(component.hasElectionInformationInput()).toBeFalse(); - }); - - it('#hasCandidateInformationInput happy path', () => { - expect(component.hasCandidateInformationInput()).toBeFalse(); - }); - - it('#hasCandidateCommitteeInput happy path', () => { - expect(component.hasCandidateCommitteeInput()).toBeFalse(); - }); - - it('#hasCandidateOfficeInput happy path', () => { - expect(component.hasCandidateOfficeInput()).toBeTrue(); - }); -}); diff --git a/front-end/src/app/shared/models/transaction-groups/transaction-group-e.model.ts b/front-end/src/app/shared/models/transaction-groups/transaction-group-e.model.ts deleted file mode 100644 index 3bdcb43006..0000000000 --- a/front-end/src/app/shared/models/transaction-groups/transaction-group-e.model.ts +++ /dev/null @@ -1,56 +0,0 @@ -import { LabelUtils, PrimeOptions } from 'app/shared/utils/label.utils'; -import { ContactTypeLabels, ContactTypes } from '../contact.model'; -import { TransactionTemplateMapType } from '../transaction-type.model'; -import { TransactionGroup } from './transaction-group.model'; - -export class TransactionGroupE extends TransactionGroup { - getFormProperties(templateMap: TransactionTemplateMapType): string[] { - return [ - 'entity_type', - templateMap.organization_name, - templateMap.street_1, - templateMap.street_2, - templateMap.city, - templateMap.state, - templateMap.zip, - templateMap.date, - templateMap.amount, - templateMap.aggregate, - templateMap.purpose_description, - templateMap.committee_fec_id, - templateMap.committee_name, - templateMap.memo_code, - templateMap.text4000, - templateMap.category_code, - 'subTransaction', - ].filter((val) => !!val); - } - - getContactTypeOptions(): PrimeOptions { - return LabelUtils.getPrimeOptions(ContactTypeLabels, [ContactTypes.COMMITTEE]); - } - - hasEmployerInput(): boolean { - return false; - } - - hasCommitteeFecIdInput(): boolean { - return true; - } - - hasElectionInformationInput(): boolean { - return false; - } - - hasCandidateInformationInput(): boolean { - return false; - } - - hasCandidateCommitteeInput(): boolean { - return false; - } - - hasCandidateOfficeInput(): boolean { - return true; - } -} diff --git a/front-end/src/app/shared/models/transaction-groups/transaction-group-ee.model.spec.ts b/front-end/src/app/shared/models/transaction-groups/transaction-group-ee.model.spec.ts deleted file mode 100644 index 01d1585299..0000000000 --- a/front-end/src/app/shared/models/transaction-groups/transaction-group-ee.model.spec.ts +++ /dev/null @@ -1,79 +0,0 @@ -import { TestBed } from '@angular/core/testing'; -import { LabelUtils } from 'app/shared/utils/label.utils'; -import { testTemplateMap } from 'app/shared/utils/unit-test.utils'; -import { ContactTypeLabels, ContactTypes } from '../contact.model'; -import { TransactionGroupEE } from './transaction-group-ee.model'; - -describe('TransactionGroupEE', () => { - let component: TransactionGroupEE; - - beforeEach(() => { - TestBed.configureTestingModule({ - imports: [], - providers: [TransactionGroupEE], - }); - - component = TestBed.inject(TransactionGroupEE); - }); - - it('should create', () => { - expect(component).toBeTruthy(); - }); - - it('#getFormProperties should include organization name', () => { - const testOrgName = 'org name'; - const testTemplateMapCopy = { ...testTemplateMap }; - testTemplateMapCopy.organization_name = testOrgName; - const retval = component.getFormProperties(testTemplateMapCopy); - expect(retval.includes(testOrgName)).toBeTruthy(); - }); - - it('#getChildFormProperties should include organization name', () => { - const testOrgName = 'org name'; - const testTemplateMapCopy = { ...testTemplateMap }; - testTemplateMapCopy.organization_name = testOrgName; - const retval = component.getChildFormProperties(testTemplateMapCopy); - expect(retval.includes(testOrgName)).toBeTruthy(); - }); - - it('#getContactTypeOptions should return committee', () => { - const expectedRetval = LabelUtils.getPrimeOptions(ContactTypeLabels, [ContactTypes.COMMITTEE]); - const retval = component.getContactTypeOptions(); - expect(JSON.stringify(expectedRetval) === JSON.stringify(retval)).toBeTruthy(); - }); - - it('#getChildContactTypeOptions should return committee', () => { - const expectedOptions = LabelUtils.getPrimeOptions(ContactTypeLabels, [ContactTypes.COMMITTEE]); - const options = component.getChildContactTypeOptions(); - expect(JSON.stringify(expectedOptions) === JSON.stringify(options)).toBeTruthy(); - }); - - it('#hasEmployerInput should return false', () => { - const retval = component.hasEmployerInput(); - expect(retval).toBeFalse(); - }); - - it('#test group methods to ensure they return the right values', () => { - expect(component.childHasEmployerInput()).toBeFalse(); - expect(component.getParentTransactionTitle()).toBe(''); - expect(component.getParentFooter()).toBe( - 'The information in this receipt will automatically populate a related transaction. Review the associated disbursement or click "Save both transactions" to record these transactions.' - ); - expect(component.getGroupDescription()).toBe( - 'This receipt type automatically creates an associated transaction. Saving an in-kind receipt will automatically create an in-kind out.' - ); - expect(component.getParentAccordionTitle()).toBe('ENTER DATA'); - expect(component.getParentAccordionSubTitle()).toBe('Add contact and receipt information'); - expect(component.getChildAccordionTitle()).toBe('AUTO-POPULATED'); - expect(component.getChildAccordionSubTitle()).toBe('Review disbursement information'); - expect(component.getChildContactLabel()).toBe('Committee'); - expect(component.getAutoGeneratedChildFields(testTemplateMap).length).toBe(14); - expect(component.getChildTransactionSubTitle()).toBe( - 'To update any errors found, return to the previous step to update the in-kind receipt.' - ); - expect(component.hasChildCandidateInformationInput()).toBeFalse(); - expect(component.hasChildElectionInformationInput()).toBeFalse(); - expect(component.hasParentCandidateInformationInput()).toBeFalse(); - expect(component.hasParentElectionInformationInput()).toBeFalse(); - }); -}); diff --git a/front-end/src/app/shared/models/transaction-groups/transaction-group-ee.model.ts b/front-end/src/app/shared/models/transaction-groups/transaction-group-ee.model.ts deleted file mode 100644 index 8ee041f21e..0000000000 --- a/front-end/src/app/shared/models/transaction-groups/transaction-group-ee.model.ts +++ /dev/null @@ -1,129 +0,0 @@ -import { LabelUtils, PrimeOptions } from 'app/shared/utils/label.utils'; -import { ContactTypeLabels, ContactTypes } from '../contact.model'; -import { TransactionTemplateMapType } from '../transaction-type.model'; -import { DoubleTransactionGroup } from './double-transaction-group.model'; - -export class TransactionGroupEE extends DoubleTransactionGroup { - getFormProperties(templateMap: TransactionTemplateMapType): string[] { - return [ - 'entity_type', - templateMap.organization_name, - templateMap.street_1, - templateMap.street_2, - templateMap.city, - templateMap.state, - templateMap.zip, - templateMap.date, - templateMap.amount, - templateMap.aggregate, - templateMap.purpose_description, - templateMap.committee_fec_id, - templateMap.committee_name, - templateMap.memo_code, - templateMap.text4000, - ].filter((val) => !!val); - } - - getChildFormProperties(childTemplateMap: TransactionTemplateMapType): string[] { - return [ - 'entity_type', - childTemplateMap.organization_name, - childTemplateMap.street_1, - childTemplateMap.street_2, - childTemplateMap.city, - childTemplateMap.state, - childTemplateMap.zip, - childTemplateMap.date, - childTemplateMap.amount, - childTemplateMap.aggregate, - childTemplateMap.purpose_description, - childTemplateMap.committee_fec_id, - childTemplateMap.committee_name, - childTemplateMap.memo_code, - childTemplateMap.text4000, - childTemplateMap.category_code, - ].filter((field) => !!field); - } - - hasCommitteeFecIdInput(): boolean { - return true; - } - - hasElectionInformationInput(): boolean { - return false; - } - - getContactTypeOptions(): PrimeOptions { - return LabelUtils.getPrimeOptions(ContactTypeLabels, [ContactTypes.COMMITTEE]); - } - - getChildContactTypeOptions(): PrimeOptions { - return LabelUtils.getPrimeOptions(ContactTypeLabels, [ContactTypes.COMMITTEE]); - } - - hasEmployerInput(): boolean { - return false; - } - - override childHasEmployerInput(): boolean { - return false; - } - - getParentTransactionTitle(): string { - return ''; - } - - getParentFooter(): string { - return 'The information in this receipt will automatically populate a related transaction. Review the associated disbursement or click "Save both transactions" to record these transactions.'; - } - - getChildTransactionSubTitle(): string { - return 'To update any errors found, return to the previous step to update the in-kind receipt.'; - } - - getGroupDescription(): string { - return 'This receipt type automatically creates an associated transaction. Saving an in-kind receipt will automatically create an in-kind out.'; - } - - getParentAccordionTitle(): string { - return 'ENTER DATA'; - } - - getParentAccordionSubTitle(): string { - return 'Add contact and receipt information'; - } - - getChildAccordionTitle(): string { - return 'AUTO-POPULATED'; - } - - getChildAccordionSubTitle(): string { - return 'Review disbursement information'; - } - - getChildContactLabel(): string { - return 'Committee'; - } - - hasChildCandidateInformationInput(): boolean { - return false; - } - - hasChildElectionInformationInput(): boolean { - return false; - } - - hasParentCandidateInformationInput(): boolean { - return false; - } - - hasParentElectionInformationInput(): boolean { - return false; - } - - getAutoGeneratedChildFields(childTemplateMap: TransactionTemplateMapType): string[] { - return this.getChildFormProperties(childTemplateMap).filter( - (field) => ![childTemplateMap.text4000, childTemplateMap.category_code].includes(field) - ); - } -} diff --git a/front-end/src/app/shared/models/transaction-groups/transaction-group-fg.model.spec.ts b/front-end/src/app/shared/models/transaction-groups/transaction-group-fg.model.spec.ts deleted file mode 100644 index bde3316f3a..0000000000 --- a/front-end/src/app/shared/models/transaction-groups/transaction-group-fg.model.spec.ts +++ /dev/null @@ -1,85 +0,0 @@ -import { TestBed } from '@angular/core/testing'; -import { LabelUtils } from 'app/shared/utils/label.utils'; -import { testTemplateMap } from 'app/shared/utils/unit-test.utils'; -import { ContactTypeLabels, ContactTypes } from '../contact.model'; -import { TransactionGroupFG } from './transaction-group-fg.model'; - -describe('TransactionGroupFG', () => { - let component: TransactionGroupFG; - - beforeEach(() => { - TestBed.configureTestingModule({ - imports: [], - providers: [TransactionGroupFG], - }); - - component = TestBed.inject(TransactionGroupFG); - }); - - it('should create', () => { - expect(component).toBeTruthy(); - }); - - it('#getFormProperties happy path', () => { - const testOrganizationName = 'testOrganizationName'; - const testTemplateMapCopy = { ...testTemplateMap }; - testTemplateMapCopy.organization_name = testOrganizationName; - const retval = component.getFormProperties(testTemplateMapCopy); - expect(retval.includes(testOrganizationName)).toBeTruthy(); - }); - - it('#getChildFormProperties happy path', () => { - const testEmployer = 'testEmployer'; - const testTemplateMapCopy = { ...testTemplateMap }; - testTemplateMapCopy.employer = testEmployer; - const retval = component.getChildFormProperties(testTemplateMapCopy); - expect(retval.includes(testEmployer)).toBeTruthy(); - }); - - it('#getContactTypeOptions happy path', () => { - const expectedRetval = LabelUtils.getPrimeOptions(ContactTypeLabels, [ContactTypes.COMMITTEE]); - const retval = component.getContactTypeOptions(); - expect(JSON.stringify(expectedRetval) === JSON.stringify(retval)).toBeTruthy(); - }); - - it('#getChildContactTypeOptions happy path', () => { - const expectedRetval = LabelUtils.getPrimeOptions(ContactTypeLabels, [ - ContactTypes.COMMITTEE, - ContactTypes.INDIVIDUAL, - ]); - const retval = component.getChildContactTypeOptions(); - expect(JSON.stringify(expectedRetval) === JSON.stringify(retval)).toBeTruthy(); - }); - - it('#hasEmployerInput happy path', () => { - const retval = component.hasEmployerInput(); - expect(retval).toBeFalse(); - }); - - it('#test group methods to ensure they return the right values', () => { - expect(component.childHasEmployerInput()).toBeTrue(); - expect(component.getParentTransactionTitle()).toBe('Receipt'); - expect(component.getParentFooter()).toBe('This type of receipt requires a memo transaction'); - expect(component.getGroupDescription()).toBe( - 'This type of receipt requires a memo transaction. Follow this two-step process to create both an earmark receipt and an earmark memo:' - ); - expect(component.getParentAccordionTitle()).toBe('STEP ONE'); - expect(component.getParentAccordionSubTitle()).toBe('Add receipt and contributor information'); - expect(component.getChildAccordionTitle()).toBe('STEP TWO'); - expect(component.getChildAccordionSubTitle()).toBe( - 'Add earmarked memo and conduit information (REQUIRED FOR EARMARKED RECEIPTS)' - ); - expect(component.getChildAccordionSubTitle()).toBe( - 'Add earmarked memo and conduit information (REQUIRED FOR EARMARKED RECEIPTS)' - ); - expect(component.getChildContactLabel()).toBe('Conduit'); - expect(component.getAutoGeneratedChildFields().length).toBe(0); - expect(component.getChildTransactionSubTitle()).toBe(''); - expect(component.hasChildCandidateInformationInput()).toBeFalse(); - expect(component.hasChildElectionInformationInput()).toBeFalse(); - expect(component.hasParentCandidateInformationInput()).toBeFalse(); - expect(component.hasParentElectionInformationInput()).toBeFalse(); - expect(component.hasCandidateInformationInput()).toBeFalse(); - expect(component.hasElectionInformationInput()).toBeFalse(); - }); -}); diff --git a/front-end/src/app/shared/models/transaction-groups/transaction-group-fg.model.ts b/front-end/src/app/shared/models/transaction-groups/transaction-group-fg.model.ts deleted file mode 100644 index a1bd767db7..0000000000 --- a/front-end/src/app/shared/models/transaction-groups/transaction-group-fg.model.ts +++ /dev/null @@ -1,131 +0,0 @@ -import { LabelUtils, PrimeOptions } from 'app/shared/utils/label.utils'; -import { ContactTypeLabels, ContactTypes } from '../contact.model'; -import { TransactionTemplateMapType } from '../transaction-type.model'; -import { DoubleTransactionGroup } from './double-transaction-group.model'; - -export class TransactionGroupFG extends DoubleTransactionGroup { - getFormProperties(templateMap: TransactionTemplateMapType): string[] { - return [ - 'entity_type', - templateMap.organization_name, - templateMap.street_1, - templateMap.street_2, - templateMap.city, - templateMap.state, - templateMap.zip, - templateMap.date, - templateMap.amount, - templateMap.aggregate, - templateMap.purpose_description, - templateMap.committee_fec_id, - templateMap.committee_name, - templateMap.memo_code, - templateMap.text4000, - ].filter((val) => !!val); - } - - getChildFormProperties(childTemplateMap: TransactionTemplateMapType): string[] { - return [ - 'entity_type', - childTemplateMap.organization_name, - childTemplateMap.last_name, - childTemplateMap.first_name, - childTemplateMap.middle_name, - childTemplateMap.prefix, - childTemplateMap.suffix, - childTemplateMap.street_1, - childTemplateMap.street_2, - childTemplateMap.city, - childTemplateMap.state, - childTemplateMap.zip, - childTemplateMap.date, - childTemplateMap.amount, - childTemplateMap.aggregate, - childTemplateMap.purpose_description, - childTemplateMap.employer, - childTemplateMap.occupation, - childTemplateMap.committee_fec_id, - childTemplateMap.committee_name, - childTemplateMap.memo_code, - childTemplateMap.text4000, - ].filter((val) => !!val); - } - - getContactTypeOptions(): PrimeOptions { - return LabelUtils.getPrimeOptions(ContactTypeLabels, [ContactTypes.COMMITTEE]); - } - - getChildContactTypeOptions(): PrimeOptions { - return LabelUtils.getPrimeOptions(ContactTypeLabels, [ContactTypes.COMMITTEE, ContactTypes.INDIVIDUAL]); - } - - hasEmployerInput(): boolean { - return false; - } - override childHasEmployerInput(): boolean { - return true; - } - - getParentTransactionTitle(): string { - return 'Receipt'; - } - - getParentFooter(): string { - return 'This type of receipt requires a memo transaction'; - } - - getChildTransactionSubTitle(): string { - return ''; - } - - getGroupDescription(): string { - return 'This type of receipt requires a memo transaction. Follow this two-step process to create both an earmark receipt and an earmark memo:'; - } - getParentAccordionTitle(): string { - return 'STEP ONE'; - } - - getParentAccordionSubTitle(): string { - return 'Add receipt and contributor information'; - } - - getChildAccordionTitle(): string { - return 'STEP TWO'; - } - - getChildAccordionSubTitle(): string { - return 'Add earmarked memo and conduit information (REQUIRED FOR EARMARKED RECEIPTS)'; - } - - getChildContactLabel(): string { - return 'Conduit'; - } - - getAutoGeneratedChildFields(): string[] { - return []; - } - - hasCandidateInformationInput(): boolean { - return false; - } - - hasElectionInformationInput(): boolean { - return false; - } - - hasChildCandidateInformationInput(): boolean { - return false; - } - - hasChildElectionInformationInput(): boolean { - return false; - } - - hasParentCandidateInformationInput(): boolean { - return false; - } - - hasParentElectionInformationInput(): boolean { - return false; - } -} diff --git a/front-end/src/app/shared/models/transaction-groups/transaction-group-h.model.spec.ts b/front-end/src/app/shared/models/transaction-groups/transaction-group-h.model.spec.ts deleted file mode 100644 index 4ae175ba82..0000000000 --- a/front-end/src/app/shared/models/transaction-groups/transaction-group-h.model.spec.ts +++ /dev/null @@ -1,60 +0,0 @@ -import { TestBed } from '@angular/core/testing'; -import { LabelUtils } from 'app/shared/utils/label.utils'; -import { testTemplateMap } from 'app/shared/utils/unit-test.utils'; -import { ContactTypeLabels, ContactTypes } from '../contact.model'; -import { TransactionGroupH } from './transaction-group-h.model'; - -describe('TransactionGroupH', () => { - let component: TransactionGroupH; - - beforeEach(() => { - TestBed.configureTestingModule({ - imports: [], - providers: [TransactionGroupH], - }); - - component = TestBed.inject(TransactionGroupH); - }); - - it('should create', () => { - expect(component).toBeTruthy(); - }); - - it('#getFormProperties happy path', () => { - const testOrganizationName = 'testOrganizationName'; - const testTemplateMapCopy = { ...testTemplateMap }; - testTemplateMapCopy.organization_name = testOrganizationName; - const retval = component.getFormProperties(testTemplateMapCopy); - expect(retval.includes(testOrganizationName)).toBeTruthy(); - }); - - it('#getContactTypeOptions happy path', () => { - const expectedRetval = LabelUtils.getPrimeOptions(ContactTypeLabels, [ContactTypes.COMMITTEE]); - const retval = component.getContactTypeOptions(); - expect(JSON.stringify(expectedRetval) === JSON.stringify(retval)).toBeTruthy(); - }); - - it('#hasEmployerInput happy path', () => { - expect(component.hasEmployerInput()).toBeFalse(); - }); - - it('#hasCommitteeFecIdInput happy path', () => { - expect(component.hasCommitteeFecIdInput()).toBeTrue(); - }); - - it('#hasElectionInformationInput happy path', () => { - expect(component.hasElectionInformationInput()).toBeTrue(); - }); - - it('#hasCandidateInformationInput happy path', () => { - expect(component.hasCandidateInformationInput()).toBeTrue(); - }); - - it('#hasCandidateCommitteeInput happy path', () => { - expect(component.hasCandidateCommitteeInput()).toBeTrue(); - }); - - it('#hasCandidateOfficeInput happy path', () => { - expect(component.hasCandidateOfficeInput()).toBeTrue(); - }); -}); diff --git a/front-end/src/app/shared/models/transaction-groups/transaction-group-h.model.ts b/front-end/src/app/shared/models/transaction-groups/transaction-group-h.model.ts deleted file mode 100644 index dfdf0bdbed..0000000000 --- a/front-end/src/app/shared/models/transaction-groups/transaction-group-h.model.ts +++ /dev/null @@ -1,66 +0,0 @@ -import { LabelUtils, PrimeOptions } from 'app/shared/utils/label.utils'; -import { ContactTypeLabels, ContactTypes } from '../contact.model'; -import { TransactionTemplateMapType } from '../transaction-type.model'; -import { TransactionGroup } from './transaction-group.model'; - -export class TransactionGroupH extends TransactionGroup { - getFormProperties(templateMap: TransactionTemplateMapType): string[] { - return [ - 'entity_type', - templateMap.organization_name, - templateMap.street_1, - templateMap.street_2, - templateMap.city, - templateMap.state, - templateMap.zip, - templateMap.election_code, - templateMap.election_other_description, - templateMap.date, - templateMap.amount, - templateMap.aggregate, - templateMap.purpose_description, - templateMap.committee_fec_id, - templateMap.committee_name, - templateMap.candidate_fec_id, - templateMap.candidate_last_name, - templateMap.candidate_first_name, - templateMap.candidate_middle_name, - templateMap.candidate_prefix, - templateMap.candidate_suffix, - templateMap.candidate_office, - templateMap.candidate_state, - templateMap.candidate_district, - templateMap.memo_code, - templateMap.text4000, - 'subTransaction', - ].filter((val) => !!val); - } - - getContactTypeOptions(): PrimeOptions { - return LabelUtils.getPrimeOptions(ContactTypeLabels, [ContactTypes.COMMITTEE]); - } - - hasEmployerInput(): boolean { - return false; - } - - hasCommitteeFecIdInput(): boolean { - return true; - } - - hasElectionInformationInput(): boolean { - return true; - } - - hasCandidateInformationInput(): boolean { - return true; - } - - hasCandidateCommitteeInput(): boolean { - return true; - } - - hasCandidateOfficeInput(): boolean { - return true; - } -} diff --git a/front-end/src/app/shared/models/transaction-groups/transaction-group-i.model.spec.ts b/front-end/src/app/shared/models/transaction-groups/transaction-group-i.model.spec.ts deleted file mode 100644 index e6beb385fe..0000000000 --- a/front-end/src/app/shared/models/transaction-groups/transaction-group-i.model.spec.ts +++ /dev/null @@ -1,60 +0,0 @@ -import { TestBed } from '@angular/core/testing'; -import { LabelUtils } from 'app/shared/utils/label.utils'; -import { testTemplateMap } from 'app/shared/utils/unit-test.utils'; -import { ContactTypeLabels, ContactTypes } from '../contact.model'; -import { TransactionGroupI } from './transaction-group-i.model'; - -describe('TransactionGroupI', () => { - let component: TransactionGroupI; - - beforeEach(() => { - TestBed.configureTestingModule({ - imports: [], - providers: [TransactionGroupI], - }); - - component = TestBed.inject(TransactionGroupI); - }); - - it('should create', () => { - expect(component).toBeTruthy(); - }); - - it('#getFormProperties happy path', () => { - const testOrganizationName = 'testOrganizationName'; - const testTemplateMapCopy = { ...testTemplateMap }; - testTemplateMapCopy.organization_name = testOrganizationName; - const retval = component.getFormProperties(testTemplateMapCopy); - expect(retval.includes(testOrganizationName)).toBeTruthy(); - }); - - it('#getContactTypeOptions happy path', () => { - const expectedRetval = LabelUtils.getPrimeOptions(ContactTypeLabels, [ContactTypes.COMMITTEE]); - const retval = component.getContactTypeOptions(); - expect(JSON.stringify(expectedRetval) === JSON.stringify(retval)).toBeTruthy(); - }); - - it('#hasEmployerInput happy path', () => { - expect(component.hasEmployerInput()).toBeFalse(); - }); - - it('#hasCommitteeFecIdInput happy path', () => { - expect(component.hasCommitteeFecIdInput()).toBeTrue(); - }); - - it('#hasElectionInformationInput happy path', () => { - expect(component.hasElectionInformationInput()).toBeTrue(); - }); - - it('#hasCandidateInformationInput happy path', () => { - expect(component.hasCandidateInformationInput()).toBeFalse(); - }); - - it('#hasCandidateCommitteeInput happy path', () => { - expect(component.hasCandidateCommitteeInput()).toBeFalse(); - }); - - it('#hasCandidateOfficeInput happy path', () => { - expect(component.hasCandidateOfficeInput()).toBeTrue(); - }); -}); diff --git a/front-end/src/app/shared/models/transaction-groups/transaction-group-i.model.ts b/front-end/src/app/shared/models/transaction-groups/transaction-group-i.model.ts deleted file mode 100644 index a368305aec..0000000000 --- a/front-end/src/app/shared/models/transaction-groups/transaction-group-i.model.ts +++ /dev/null @@ -1,57 +0,0 @@ -import { LabelUtils, PrimeOptions } from 'app/shared/utils/label.utils'; -import { ContactTypeLabels, ContactTypes } from '../contact.model'; -import { TransactionTemplateMapType } from '../transaction-type.model'; -import { TransactionGroup } from './transaction-group.model'; - -export class TransactionGroupI extends TransactionGroup { - getFormProperties(templateMap: TransactionTemplateMapType): string[] { - return [ - 'entity_type', - templateMap.organization_name, - templateMap.street_1, - templateMap.street_2, - templateMap.city, - templateMap.state, - templateMap.zip, - templateMap.election_code, - templateMap.election_other_description, - templateMap.date, - templateMap.amount, - templateMap.aggregate, - templateMap.purpose_description, - templateMap.committee_fec_id, - templateMap.committee_name, - templateMap.memo_code, - templateMap.text4000, - 'subTransaction', - ].filter((val) => !!val); - } - - getContactTypeOptions(): PrimeOptions { - return LabelUtils.getPrimeOptions(ContactTypeLabels, [ContactTypes.COMMITTEE]); - } - - hasEmployerInput(): boolean { - return false; - } - - hasCommitteeFecIdInput(): boolean { - return true; - } - - hasElectionInformationInput(): boolean { - return true; - } - - hasCandidateInformationInput(): boolean { - return false; - } - - hasCandidateCommitteeInput(): boolean { - return false; - } - - hasCandidateOfficeInput(): boolean { - return true; - } -} diff --git a/front-end/src/app/shared/models/transaction-groups/transaction-group-m.model.spec.ts b/front-end/src/app/shared/models/transaction-groups/transaction-group-m.model.spec.ts deleted file mode 100644 index c08320381b..0000000000 --- a/front-end/src/app/shared/models/transaction-groups/transaction-group-m.model.spec.ts +++ /dev/null @@ -1,60 +0,0 @@ -import { TestBed } from '@angular/core/testing'; -import { LabelUtils } from 'app/shared/utils/label.utils'; -import { testTemplateMap } from 'app/shared/utils/unit-test.utils'; -import { ContactTypeLabels, ContactTypes } from '../contact.model'; -import { TransactionGroupM } from './transaction-group-m.model'; - -describe('TransactionGroupM', () => { - let component: TransactionGroupM; - - beforeEach(() => { - TestBed.configureTestingModule({ - imports: [], - providers: [TransactionGroupM], - }); - - component = TestBed.inject(TransactionGroupM); - }); - - it('should create', () => { - expect(component).toBeTruthy(); - }); - - it('#getFormProperties happy path', () => { - const testOrganizationName = 'testOrganizationName'; - const testTemplateMapCopy = { ...testTemplateMap }; - testTemplateMapCopy.organization_name = testOrganizationName; - const retval = component.getFormProperties(testTemplateMapCopy); - expect(retval.includes(testOrganizationName)).toBeTruthy(); - }); - - it('#getContactTypeOptions happy path', () => { - const expectedRetval = LabelUtils.getPrimeOptions(ContactTypeLabels, [ContactTypes.COMMITTEE]); - const retval = component.getContactTypeOptions(); - expect(JSON.stringify(expectedRetval) === JSON.stringify(retval)).toBeTruthy(); - }); - - it('#hasEmployerInput happy path', () => { - expect(component.hasEmployerInput()).toBeFalse(); - }); - - it('#hasCommitteeFecIdInput happy path', () => { - expect(component.hasCommitteeFecIdInput()).toBeTrue(); - }); - - it('#hasElectionInformationInput happy path', () => { - expect(component.hasElectionInformationInput()).toBeTrue(); - }); - - it('#hasCandidateInformationInput happy path', () => { - expect(component.hasCandidateInformationInput()).toBeTrue(); - }); - - it('#hasCandidateCommitteeInput happy path', () => { - expect(component.hasCandidateCommitteeInput()).toBeTrue(); - }); - - it('#hasCandidateOfficeInput happy path', () => { - expect(component.hasCandidateOfficeInput()).toBeTrue(); - }); -}); diff --git a/front-end/src/app/shared/models/transaction-groups/transaction-group-m.model.ts b/front-end/src/app/shared/models/transaction-groups/transaction-group-m.model.ts deleted file mode 100644 index 4b0324da3e..0000000000 --- a/front-end/src/app/shared/models/transaction-groups/transaction-group-m.model.ts +++ /dev/null @@ -1,65 +0,0 @@ -import { LabelUtils, PrimeOptions } from 'app/shared/utils/label.utils'; -import { ContactTypeLabels, ContactTypes } from '../contact.model'; -import { TransactionTemplateMapType } from '../transaction-type.model'; -import { TransactionGroup } from './transaction-group.model'; - -export class TransactionGroupM extends TransactionGroup { - getFormProperties(templateMap: TransactionTemplateMapType): string[] { - return [ - 'entity_type', - templateMap.organization_name, - templateMap.street_1, - templateMap.street_2, - templateMap.city, - templateMap.state, - templateMap.zip, - templateMap.election_code, - templateMap.election_other_description, - templateMap.date, - templateMap.amount, - templateMap.purpose_description, - templateMap.category_code, - templateMap.committee_fec_id, - templateMap.committee_name, - templateMap.candidate_fec_id, - templateMap.candidate_last_name, - templateMap.candidate_first_name, - templateMap.candidate_middle_name, - templateMap.candidate_prefix, - templateMap.candidate_suffix, - templateMap.candidate_office, - templateMap.candidate_state, - templateMap.candidate_district, - templateMap.memo_code, - templateMap.text4000, - ].filter((val) => !!val); - } - - getContactTypeOptions(): PrimeOptions { - return LabelUtils.getPrimeOptions(ContactTypeLabels, [ContactTypes.COMMITTEE]); - } - - hasEmployerInput(): boolean { - return false; - } - - hasCommitteeFecIdInput(): boolean { - return true; - } - - hasElectionInformationInput(): boolean { - return true; - } - - hasCandidateInformationInput(): boolean { - return true; - } - - hasCandidateCommitteeInput(): boolean { - return true; - } - - hasCandidateOfficeInput(): boolean { - return true; - } -} diff --git a/front-end/src/app/shared/models/transaction-groups/transaction-group-nm.model.spec.ts b/front-end/src/app/shared/models/transaction-groups/transaction-group-nm.model.spec.ts deleted file mode 100644 index fc4edb574e..0000000000 --- a/front-end/src/app/shared/models/transaction-groups/transaction-group-nm.model.spec.ts +++ /dev/null @@ -1,83 +0,0 @@ -import { TestBed } from '@angular/core/testing'; -import { LabelUtils } from 'app/shared/utils/label.utils'; -import { testTemplateMap } from 'app/shared/utils/unit-test.utils'; -import { ContactTypeLabels, ContactTypes } from '../contact.model'; -import { TransactionGroupNM } from './transaction-group-nm.model'; - -describe('TransactionGroupNM', () => { - let component: TransactionGroupNM; - - beforeEach(() => { - TestBed.configureTestingModule({ - imports: [], - providers: [TransactionGroupNM], - }); - - component = TestBed.inject(TransactionGroupNM); - }); - - it('should create', () => { - expect(component).toBeTruthy(); - }); - - it('#getFormProperties should include organization name', () => { - const firstName = 'Joe'; - const lastName = 'Name'; - const testTemplateMapCopy = { ...testTemplateMap }; - testTemplateMapCopy.first_name = firstName; - testTemplateMapCopy.last_name = lastName; - const retval = component.getFormProperties(testTemplateMapCopy); - expect(retval.includes(firstName)).toBeTruthy(); - expect(retval.includes(lastName)).toBeTruthy(); - }); - - it('#getChildFormProperties should include organization name', () => { - const testOrgName = 'org name'; - const testTemplateMapCopy = { ...testTemplateMap }; - testTemplateMapCopy.organization_name = testOrgName; - const retval = component.getChildFormProperties(testTemplateMapCopy); - expect(retval.includes(testOrgName)).toBeTruthy(); - }); - - it('#getContactTypeOptions should return committee', () => { - const expectedRetval = LabelUtils.getPrimeOptions(ContactTypeLabels, [ContactTypes.INDIVIDUAL]); - const retval = component.getContactTypeOptions(); - expect(JSON.stringify(expectedRetval) === JSON.stringify(retval)).toBeTruthy(); - }); - - it('#getChildContactTypeOptions should return committee', () => { - const expectedOptions = LabelUtils.getPrimeOptions(ContactTypeLabels, [ContactTypes.COMMITTEE]); - const options = component.getChildContactTypeOptions(); - expect(JSON.stringify(expectedOptions) === JSON.stringify(options)).toBeTruthy(); - }); - - it('#hasEmployerInput should return false', () => { - const retval = component.hasEmployerInput(); - expect(retval).toBeTrue(); - }); - - it('#test group methods to ensure they return the right values', () => { - expect(component.childHasEmployerInput()).toBeFalse(); - expect(component.getParentTransactionTitle()).toBe('Conduit Earmark Receipt'); - expect(component.getParentFooter()).toBe('This type of receipt requires a conduit earmark out.'); - expect(component.getGroupDescription()).toBe( - 'This receipt type requires an associated transaction. Follow this two-step process to create both a conduit earmark receipt and a conduit earmark out:' - ); - expect(component.getParentAccordionTitle()).toBe('STEP ONE'); - expect(component.getParentAccordionSubTitle()).toBe('Add contact and receipt information'); - expect(component.getChildAccordionTitle()).toBe('STEP TWO'); - expect(component.getChildAccordionSubTitle()).toBe( - 'Add earmarked memo and conduit information (REQUIRED FOR CONDUIT EARMARKED RECEIPTS)' - ); - expect(component.getChildContactLabel()).toBe('Contact'); - expect(component.getAutoGeneratedChildFields(testTemplateMap).length).toBe(1); - expect(component.getChildTransactionSubTitle()).toBe( - 'To update any errors found, return to the previous step to update the in-kind receipt.' - ); - - expect(component.hasChildCandidateInformationInput()).toBeTrue(); - expect(component.hasChildElectionInformationInput()).toBeTrue(); - expect(component.hasParentCandidateInformationInput()).toBeFalse(); - expect(component.hasParentElectionInformationInput()).toBeFalse(); - }); -}); diff --git a/front-end/src/app/shared/models/transaction-groups/transaction-group-nm.model.ts b/front-end/src/app/shared/models/transaction-groups/transaction-group-nm.model.ts deleted file mode 100644 index 527f9f5366..0000000000 --- a/front-end/src/app/shared/models/transaction-groups/transaction-group-nm.model.ts +++ /dev/null @@ -1,132 +0,0 @@ -import { LabelUtils, PrimeOptions } from 'app/shared/utils/label.utils'; -import { ContactTypeLabels, ContactTypes } from '../contact.model'; -import { TransactionTemplateMapType } from '../transaction-type.model'; -import { DoubleTransactionGroup } from './double-transaction-group.model'; - -export class TransactionGroupNM extends DoubleTransactionGroup { - getFormProperties(templateMap: TransactionTemplateMapType): string[] { - return [ - 'entity_type', - templateMap.last_name, - templateMap.first_name, - templateMap.middle_name, - templateMap.prefix, - templateMap.suffix, - templateMap.street_1, - templateMap.street_2, - templateMap.city, - templateMap.state, - templateMap.zip, - templateMap.date, - templateMap.amount, - templateMap.purpose_description, - templateMap.employer, - templateMap.occupation, - templateMap.memo_code, - templateMap.text4000, - ].filter((field) => !!field); - } - - getChildFormProperties(childTemplateMap: TransactionTemplateMapType): string[] { - return [ - 'entity_type', - childTemplateMap.organization_name, - childTemplateMap.committee_name, - childTemplateMap.committee_fec_id, - childTemplateMap.street_1, - childTemplateMap.street_2, - childTemplateMap.city, - childTemplateMap.state, - childTemplateMap.zip, - childTemplateMap.date, - childTemplateMap.amount, - childTemplateMap.election_code, - childTemplateMap.election_other_description, - childTemplateMap.candidate_fec_id, - childTemplateMap.candidate_last_name, - childTemplateMap.candidate_first_name, - childTemplateMap.candidate_middle_name, - childTemplateMap.candidate_prefix, - childTemplateMap.candidate_suffix, - childTemplateMap.candidate_office, - childTemplateMap.candidate_state, - childTemplateMap.candidate_district, - childTemplateMap.purpose_description, - childTemplateMap.category_code, - childTemplateMap.memo_code, - childTemplateMap.text4000, - ].filter((field) => !!field); - } - - getContactTypeOptions(): PrimeOptions { - return LabelUtils.getPrimeOptions(ContactTypeLabels, [ContactTypes.INDIVIDUAL]); - } - - getChildContactTypeOptions(): PrimeOptions { - return LabelUtils.getPrimeOptions(ContactTypeLabels, [ContactTypes.COMMITTEE]); - } - - hasEmployerInput(): boolean { - return true; - } - - override childHasEmployerInput(): boolean { - return false; - } - - getParentTransactionTitle(): string { - return 'Conduit Earmark Receipt'; - } - - getParentFooter(): string { - return 'This type of receipt requires a conduit earmark out.'; - } - - getChildTransactionSubTitle(): string { - return 'To update any errors found, return to the previous step to update the in-kind receipt.'; - } - - getGroupDescription(): string { - return 'This receipt type requires an associated transaction. Follow this two-step process to create both a conduit earmark receipt and a conduit earmark out:'; - } - - getParentAccordionTitle(): string { - return 'STEP ONE'; - } - - getParentAccordionSubTitle(): string { - return 'Add contact and receipt information'; - } - - getChildAccordionTitle(): string { - return 'STEP TWO'; - } - - getChildAccordionSubTitle(): string { - return 'Add earmarked memo and conduit information (REQUIRED FOR CONDUIT EARMARKED RECEIPTS)'; - } - - getChildContactLabel(): string { - return 'Contact'; - } - - getAutoGeneratedChildFields(childTemplateMap: TransactionTemplateMapType): string[] { - return [childTemplateMap.amount]; - } - - hasChildCandidateInformationInput(): boolean { - return true; - } - - hasChildElectionInformationInput(): boolean { - return true; - } - - hasParentCandidateInformationInput(): boolean { - return false; - } - - hasParentElectionInformationInput(): boolean { - return false; - } -} diff --git a/front-end/src/app/shared/models/transaction-groups/transaction-group-o.model.spec.ts b/front-end/src/app/shared/models/transaction-groups/transaction-group-o.model.spec.ts deleted file mode 100644 index 75af69895d..0000000000 --- a/front-end/src/app/shared/models/transaction-groups/transaction-group-o.model.spec.ts +++ /dev/null @@ -1,64 +0,0 @@ -import { TestBed } from '@angular/core/testing'; -import { LabelUtils } from 'app/shared/utils/label.utils'; -import { testTemplateMap } from 'app/shared/utils/unit-test.utils'; -import { ContactTypeLabels, ContactTypes } from '../contact.model'; -import { TransactionGroupO } from './transaction-group-o.model'; - -describe('TransactionGroupO', () => { - let component: TransactionGroupO; - - beforeEach(() => { - TestBed.configureTestingModule({ - imports: [], - providers: [TransactionGroupO], - }); - - component = TestBed.inject(TransactionGroupO); - }); - - it('should create', () => { - expect(component).toBeTruthy(); - }); - - it('#getFormProperties happy path', () => { - const testOrganizationName = 'testOrganizationName'; - const testTemplateMapCopy = { ...testTemplateMap }; - testTemplateMapCopy.organization_name = testOrganizationName; - const retval = component.getFormProperties(testTemplateMapCopy); - expect(retval.includes(testOrganizationName)).toBeTruthy(); - }); - - it('#getContactTypeOptions happy path', () => { - const expectedRetval = LabelUtils.getPrimeOptions(ContactTypeLabels, [ - ContactTypes.ORGANIZATION, - ContactTypes.INDIVIDUAL, - ContactTypes.COMMITTEE - ]); - const retval = component.getContactTypeOptions(); - expect(JSON.stringify(expectedRetval) === JSON.stringify(retval)).toBeTruthy(); - }); - - it('#hasEmployerInput happy path', () => { - expect(component.hasEmployerInput()).toBeFalse(); - }); - - it('#hasCommitteeFecIdInput happy path', () => { - expect(component.hasCommitteeFecIdInput()).toBeFalse(); - }); - - it('#hasElectionInformationInput happy path', () => { - expect(component.hasElectionInformationInput()).toBeTrue(); - }); - - it('#hasCandidateInformationInput happy path', () => { - expect(component.hasCandidateInformationInput()).toBeTrue(); - }); - - it('#hasCandidateCommitteeInput happy path', () => { - expect(component.hasCandidateCommitteeInput()).toBeFalse(); - }); - - it('#hasCandidateOfficeInput happy path', () => { - expect(component.hasCandidateOfficeInput()).toBeFalse(); - }); -}); diff --git a/front-end/src/app/shared/models/transaction-groups/transaction-group-o.model.ts b/front-end/src/app/shared/models/transaction-groups/transaction-group-o.model.ts deleted file mode 100644 index 1eedde0e5f..0000000000 --- a/front-end/src/app/shared/models/transaction-groups/transaction-group-o.model.ts +++ /dev/null @@ -1,70 +0,0 @@ -import { LabelUtils, PrimeOptions } from 'app/shared/utils/label.utils'; -import { ContactTypeLabels, ContactTypes } from '../contact.model'; -import { TransactionTemplateMapType } from '../transaction-type.model'; -import { TransactionGroup } from './transaction-group.model'; - -export class TransactionGroupO extends TransactionGroup { - getFormProperties(templateMap: TransactionTemplateMapType): string[] { - return [ - 'entity_type', - templateMap.organization_name, - templateMap.last_name, - templateMap.first_name, - templateMap.middle_name, - templateMap.prefix, - templateMap.suffix, - templateMap.street_1, - templateMap.street_2, - templateMap.city, - templateMap.state, - templateMap.zip, - templateMap.election_code, - templateMap.election_other_description, - templateMap.date, - templateMap.amount, - templateMap.aggregate, - templateMap.purpose_description, - templateMap.category_code, - templateMap.candidate_fec_id, - templateMap.candidate_last_name, - templateMap.candidate_first_name, - templateMap.candidate_middle_name, - templateMap.candidate_prefix, - templateMap.candidate_suffix, - templateMap.memo_code, - templateMap.text4000, - ].filter((val) => !!val); - } - - getContactTypeOptions(): PrimeOptions { - return LabelUtils.getPrimeOptions(ContactTypeLabels, [ - ContactTypes.ORGANIZATION, - ContactTypes.INDIVIDUAL, - ContactTypes.COMMITTEE - ]); - } - - hasEmployerInput(): boolean { - return false; - } - - hasCommitteeFecIdInput(): boolean { - return false; - } - - hasElectionInformationInput(): boolean { - return true; - } - - hasCandidateInformationInput(): boolean { - return true; - } - - hasCandidateCommitteeInput(): boolean { - return false; - } - - hasCandidateOfficeInput(): boolean { - return false; - } -} diff --git a/front-end/src/app/shared/models/transaction-groups/transaction-group-pm.model.spec.ts b/front-end/src/app/shared/models/transaction-groups/transaction-group-pm.model.spec.ts deleted file mode 100644 index ef3b322342..0000000000 --- a/front-end/src/app/shared/models/transaction-groups/transaction-group-pm.model.spec.ts +++ /dev/null @@ -1,79 +0,0 @@ -import { TestBed } from '@angular/core/testing'; -import { LabelUtils } from 'app/shared/utils/label.utils'; -import { testTemplateMap } from 'app/shared/utils/unit-test.utils'; -import { ContactTypeLabels, ContactTypes } from '../contact.model'; -import { TransactionGroupPM } from './transaction-group-pm.model'; - -describe('TransactionGroupPM', () => { - let component: TransactionGroupPM; - - beforeEach(() => { - TestBed.configureTestingModule({ - imports: [], - providers: [TransactionGroupPM], - }); - - component = TestBed.inject(TransactionGroupPM); - }); - - it('should create', () => { - expect(component).toBeTruthy(); - }); - - it('#getFormProperties should include organization name', () => { - const committeeName = 'Parent Committee'; - const testTemplateMapCopy = { ...testTemplateMap }; - testTemplateMapCopy.organization_name = committeeName; - const formProperties = component.getFormProperties(testTemplateMapCopy); - expect(formProperties.includes(committeeName)).toBeTruthy(); - }); - - it('#getChildFormProperties should include organization name', () => { - const committeeName = 'Child Committee'; - const testTemplateMapCopy = { ...testTemplateMap }; - testTemplateMapCopy.organization_name = committeeName; - const formProperties = component.getChildFormProperties(testTemplateMapCopy); - expect(formProperties.includes(committeeName)).toBeTruthy(); - }); - - it('#getContactTypeOptions should return committee', () => { - const expectedOptions = LabelUtils.getPrimeOptions(ContactTypeLabels, [ContactTypes.COMMITTEE]); - const contactOptions = component.getContactTypeOptions(); - expect(JSON.stringify(expectedOptions) === JSON.stringify(contactOptions)).toBeTruthy(); - }); - - it('#getChildContactTypeOptions should return committee', () => { - const expectedOptions = LabelUtils.getPrimeOptions(ContactTypeLabels, [ContactTypes.COMMITTEE]); - const contactOptions = component.getChildContactTypeOptions(); - expect(JSON.stringify(expectedOptions) === JSON.stringify(contactOptions)).toBeTruthy(); - }); - - it('#hasEmployerInput should return false', () => { - expect(component.hasEmployerInput()).toBeFalse(); - }); - - it('#test group methods to ensure they return the right values', () => { - expect(component.childHasEmployerInput()).toBeFalse(); - expect(component.getParentTransactionTitle()).toBe('PAC Conduit Earmark Receipt'); - expect(component.getParentFooter()).toBe('This type of receipt requires a conduit earmark out.'); - expect(component.getGroupDescription()).toBe( - 'This receipt type requires an associated transaction. Follow this two-step process to create both a conduit earmark receipt and a conduit earmark out:' - ); - expect(component.getParentAccordionTitle()).toBe('STEP ONE'); - expect(component.getParentAccordionSubTitle()).toBe('Add contact and receipt information'); - expect(component.getChildAccordionTitle()).toBe('STEP TWO'); - expect(component.getChildAccordionSubTitle()).toBe( - 'Add earmarked memo and conduit information (REQUIRED FOR CONDUIT EARMARKED RECEIPTS)' - ); - expect(component.getChildContactLabel()).toBe('Contact'); - expect(component.getAutoGeneratedChildFields(testTemplateMap).length).toBe(1); - expect(component.getChildTransactionSubTitle()).toBe( - 'To update any errors found, return to the previous step to update the in-kind receipt.' - ); - - expect(component.hasChildCandidateInformationInput()).toBeTrue(); - expect(component.hasChildElectionInformationInput()).toBeTrue(); - expect(component.hasParentCandidateInformationInput()).toBeFalse(); - expect(component.hasParentElectionInformationInput()).toBeFalse(); - }); -}); diff --git a/front-end/src/app/shared/models/transaction-groups/transaction-group-pm.model.ts b/front-end/src/app/shared/models/transaction-groups/transaction-group-pm.model.ts deleted file mode 100644 index 78802f080c..0000000000 --- a/front-end/src/app/shared/models/transaction-groups/transaction-group-pm.model.ts +++ /dev/null @@ -1,128 +0,0 @@ -import { LabelUtils, PrimeOptions } from 'app/shared/utils/label.utils'; -import { ContactTypeLabels, ContactTypes } from '../contact.model'; -import { TransactionTemplateMapType } from '../transaction-type.model'; -import { DoubleTransactionGroup } from './double-transaction-group.model'; - -export class TransactionGroupPM extends DoubleTransactionGroup { - getFormProperties(templateMap: TransactionTemplateMapType): string[] { - return [ - 'entity_type', - templateMap.organization_name, - templateMap.street_1, - templateMap.street_2, - templateMap.city, - templateMap.state, - templateMap.zip, - templateMap.date, - templateMap.amount, - templateMap.purpose_description, - templateMap.committee_fec_id, - templateMap.committee_name, - templateMap.memo_code, - templateMap.text4000, - ].filter((field) => !!field); - } - - getChildFormProperties(childTemplateMap: TransactionTemplateMapType): string[] { - return [ - 'entity_type', - childTemplateMap.organization_name, - childTemplateMap.street_1, - childTemplateMap.street_2, - childTemplateMap.city, - childTemplateMap.state, - childTemplateMap.zip, - childTemplateMap.date, - childTemplateMap.amount, - childTemplateMap.purpose_description, - childTemplateMap.committee_fec_id, - childTemplateMap.committee_name, - childTemplateMap.election_code, - childTemplateMap.election_other_description, - childTemplateMap.candidate_fec_id, - childTemplateMap.candidate_last_name, - childTemplateMap.candidate_first_name, - childTemplateMap.candidate_middle_name, - childTemplateMap.candidate_prefix, - childTemplateMap.candidate_suffix, - childTemplateMap.candidate_office, - childTemplateMap.candidate_state, - childTemplateMap.candidate_district, - childTemplateMap.memo_code, - childTemplateMap.text4000, - childTemplateMap.category_code, - ].filter((field) => !!field); - } - - getContactTypeOptions(): PrimeOptions { - return LabelUtils.getPrimeOptions(ContactTypeLabels, [ContactTypes.COMMITTEE]); - } - - getChildContactTypeOptions(): PrimeOptions { - return LabelUtils.getPrimeOptions(ContactTypeLabels, [ContactTypes.COMMITTEE]); - } - - hasEmployerInput(): boolean { - return false; - } - - override childHasEmployerInput(): boolean { - return false; - } - - getParentTransactionTitle(): string { - return 'PAC Conduit Earmark Receipt'; - } - - getParentFooter(): string { - return 'This type of receipt requires a conduit earmark out.'; - } - - getChildTransactionSubTitle(): string { - return 'To update any errors found, return to the previous step to update the in-kind receipt.'; - } - - getGroupDescription(): string { - return 'This receipt type requires an associated transaction. Follow this two-step process to create both a conduit earmark receipt and a conduit earmark out:'; - } - - getParentAccordionTitle(): string { - return 'STEP ONE'; - } - - getParentAccordionSubTitle(): string { - return 'Add contact and receipt information'; - } - - getChildAccordionTitle(): string { - return 'STEP TWO'; - } - - getChildAccordionSubTitle(): string { - return 'Add earmarked memo and conduit information (REQUIRED FOR CONDUIT EARMARKED RECEIPTS)'; - } - - getChildContactLabel(): string { - return 'Contact'; - } - - getAutoGeneratedChildFields(childTemplateMap: TransactionTemplateMapType): string[] { - return [childTemplateMap.amount]; - } - - hasChildCandidateInformationInput(): boolean { - return true; - } - - hasChildElectionInformationInput(): boolean { - return true; - } - - hasParentCandidateInformationInput(): boolean { - return false; - } - - hasParentElectionInformationInput(): boolean { - return false; - } -} diff --git a/front-end/src/app/shared/models/transaction-groups/transaction-group-r.model.spec.ts b/front-end/src/app/shared/models/transaction-groups/transaction-group-r.model.spec.ts deleted file mode 100644 index 9f7a7e45a9..0000000000 --- a/front-end/src/app/shared/models/transaction-groups/transaction-group-r.model.spec.ts +++ /dev/null @@ -1,60 +0,0 @@ -import { TestBed } from '@angular/core/testing'; -import { LabelUtils } from 'app/shared/utils/label.utils'; -import { testTemplateMap } from 'app/shared/utils/unit-test.utils'; -import { ContactTypeLabels, ContactTypes } from '../contact.model'; -import { TransactionGroupR } from './transaction-group-r.model'; - -describe('TransactionGroupR', () => { - let component: TransactionGroupR; - - beforeEach(() => { - TestBed.configureTestingModule({ - imports: [], - providers: [TransactionGroupR], - }); - - component = TestBed.inject(TransactionGroupR); - }); - - it('should create', () => { - expect(component).toBeTruthy(); - }); - - it('#getFormProperties happy path', () => { - const testOrganizationName = 'testOrganizationName'; - const testTemplateMapCopy = { ...testTemplateMap }; - testTemplateMapCopy.organization_name = testOrganizationName; - const retval = component.getFormProperties(testTemplateMapCopy); - expect(retval.includes(testOrganizationName)).toBeTruthy(); - }); - - it('#getContactTypeOptions happy path', () => { - const expectedRetval = LabelUtils.getPrimeOptions(ContactTypeLabels, [ContactTypes.ORGANIZATION]); - const retval = component.getContactTypeOptions(); - expect(JSON.stringify(expectedRetval) === JSON.stringify(retval)).toBeTruthy(); - }); - - it('#hasEmployerInput happy path', () => { - expect(component.hasEmployerInput()).toBeFalse(); - }); - - it('#hasCommitteeFecIdInput happy path', () => { - expect(component.hasCommitteeFecIdInput()).toBeFalse(); - }); - - it('#hasElectionInformationInput happy path', () => { - expect(component.hasElectionInformationInput()).toBeTrue(); - }); - - it('#hasCandidateInformationInput happy path', () => { - expect(component.hasCandidateInformationInput()).toBeFalse(); - }); - - it('#hasCandidateCommitteeInput happy path', () => { - expect(component.hasCandidateCommitteeInput()).toBeFalse(); - }); - - it('#hasCandidateOfficeInput happy path', () => { - expect(component.hasCandidateOfficeInput()).toBeTrue(); - }); -}); diff --git a/front-end/src/app/shared/models/transaction-groups/transaction-group-r.model.ts b/front-end/src/app/shared/models/transaction-groups/transaction-group-r.model.ts deleted file mode 100644 index 0c18271388..0000000000 --- a/front-end/src/app/shared/models/transaction-groups/transaction-group-r.model.ts +++ /dev/null @@ -1,55 +0,0 @@ -import { LabelUtils, PrimeOptions } from 'app/shared/utils/label.utils'; -import { ContactTypeLabels, ContactTypes } from '../contact.model'; -import { TransactionTemplateMapType } from '../transaction-type.model'; -import { TransactionGroup } from './transaction-group.model'; - -export class TransactionGroupR extends TransactionGroup { - getFormProperties(templateMap: TransactionTemplateMapType): string[] { - return [ - 'entity_type', - templateMap.organization_name, - templateMap.street_1, - templateMap.street_2, - templateMap.city, - templateMap.state, - templateMap.zip, - templateMap.election_code, - templateMap.election_other_description, - templateMap.date, - templateMap.amount, - templateMap.aggregate, - templateMap.purpose_description, - templateMap.category_code, - templateMap.memo_code, - templateMap.text4000, - ].filter((val) => !!val); - } - - getContactTypeOptions(): PrimeOptions { - return LabelUtils.getPrimeOptions(ContactTypeLabels, [ContactTypes.ORGANIZATION]); - } - - hasEmployerInput(): boolean { - return false; - } - - hasCommitteeFecIdInput(): boolean { - return false; - } - - hasElectionInformationInput(): boolean { - return true; - } - - hasCandidateInformationInput(): boolean { - return false; - } - - hasCandidateCommitteeInput(): boolean { - return false; - } - - hasCandidateOfficeInput(): boolean { - return true; - } -} diff --git a/front-end/src/app/shared/models/transaction-groups/transaction-group-s.model.spec.ts b/front-end/src/app/shared/models/transaction-groups/transaction-group-s.model.spec.ts deleted file mode 100644 index b0ffe4639d..0000000000 --- a/front-end/src/app/shared/models/transaction-groups/transaction-group-s.model.spec.ts +++ /dev/null @@ -1,65 +0,0 @@ -import { TestBed } from '@angular/core/testing'; -import { LabelUtils } from 'app/shared/utils/label.utils'; -import { testTemplateMap } from 'app/shared/utils/unit-test.utils'; -import { ContactTypeLabels, ContactTypes } from '../contact.model'; -import { TransactionGroupS } from './transaction-group-s.model'; - -describe('TransactionGroupS', () => { - let component: TransactionGroupS; - - beforeEach(() => { - TestBed.configureTestingModule({ - imports: [], - providers: [TransactionGroupS], - }); - - component = TestBed.inject(TransactionGroupS); - }); - - it('should create', () => { - expect(component).toBeTruthy(); - }); - - it('#getFormProperties happy path', () => { - const testOrganizationName = 'testOrganizationName'; - const testTemplateMapCopy = { ...testTemplateMap }; - testTemplateMapCopy.organization_name = testOrganizationName; - const retval = component.getFormProperties(testTemplateMapCopy); - expect(retval.includes(testOrganizationName)).toBeTruthy(); - }); - - it('#getContactTypeOptions happy path', () => { - const expectedRetval = LabelUtils.getPrimeOptions(ContactTypeLabels, [ - ContactTypes.ORGANIZATION, - ContactTypes.INDIVIDUAL, - ContactTypes.COMMITTEE - ]); - const retval = component.getContactTypeOptions(); - expect(JSON.stringify(expectedRetval) === JSON.stringify(retval)).toBeTruthy(); - }); - - it('#hasEmployerInput happy path', () => { - expect(component.hasEmployerInput()).toBeFalse(); - }); - - it('#hasCommitteeFecIdInput happy path', () => { - expect(component.hasCommitteeFecIdInput()).toBeFalse(); - }); - - it('#hasElectionInformationInput happy path', () => { - expect(component.hasElectionInformationInput()).toBeTrue(); - }); - - it('#hasCandidateInformationInput happy path', () => { - expect(component.hasCandidateInformationInput()).toBeFalse(); - }); - - it('#hasCandidateCommitteeInput happy path', () => { - expect(component.hasCandidateCommitteeInput()).toBeFalse(); - }); - - it('#hasCandidateOfficeInput happy path', () => { - expect(component.hasCandidateOfficeInput()).toBeTrue(); - }); - -}); diff --git a/front-end/src/app/shared/models/transaction-groups/transaction-group-s.model.ts b/front-end/src/app/shared/models/transaction-groups/transaction-group-s.model.ts deleted file mode 100644 index 982454f6f3..0000000000 --- a/front-end/src/app/shared/models/transaction-groups/transaction-group-s.model.ts +++ /dev/null @@ -1,75 +0,0 @@ -import { LabelUtils, PrimeOptions } from 'app/shared/utils/label.utils'; -import { ContactTypeLabels, ContactTypes } from '../contact.model'; -import { TransactionTemplateMapType } from '../transaction-type.model'; -import { TransactionGroup } from './transaction-group.model'; - -export class TransactionGroupS extends TransactionGroup { - getFormProperties(templateMap: TransactionTemplateMapType): string[] { - return [ - 'entity_type', - templateMap.organization_name, - templateMap.last_name, - templateMap.first_name, - templateMap.middle_name, - templateMap.prefix, - templateMap.suffix, - templateMap.street_1, - templateMap.street_2, - templateMap.city, - templateMap.state, - templateMap.zip, - templateMap.election_code, - templateMap.election_other_description, - templateMap.date, - templateMap.amount, - templateMap.aggregate, - templateMap.purpose_description, - templateMap.category_code, - templateMap.committee_fec_id, - templateMap.committee_name, - templateMap.candidate_fec_id, - templateMap.candidate_last_name, - templateMap.candidate_first_name, - templateMap.candidate_middle_name, - templateMap.candidate_prefix, - templateMap.candidate_suffix, - templateMap.candidate_office, - templateMap.candidate_state, - templateMap.candidate_district, - templateMap.memo_code, - templateMap.text4000, - ].filter((val) => !!val); - } - - getContactTypeOptions(): PrimeOptions { - return LabelUtils.getPrimeOptions(ContactTypeLabels, [ - ContactTypes.ORGANIZATION, - ContactTypes.INDIVIDUAL, - ContactTypes.COMMITTEE - ]); - } - - hasEmployerInput(): boolean { - return false; - } - - hasCommitteeFecIdInput(): boolean { - return false; - } - - hasElectionInformationInput(): boolean { - return true; - } - - hasCandidateInformationInput(): boolean { - return false; - } - - hasCandidateCommitteeInput(): boolean { - return false; - } - - hasCandidateOfficeInput(): boolean { - return true; - } -} diff --git a/front-end/src/app/shared/models/transaction-groups/transaction-group.model.ts b/front-end/src/app/shared/models/transaction-groups/transaction-group.model.ts deleted file mode 100644 index 61a6ad4f39..0000000000 --- a/front-end/src/app/shared/models/transaction-groups/transaction-group.model.ts +++ /dev/null @@ -1,17 +0,0 @@ -import { PrimeOptions } from 'app/shared/utils/label.utils'; -import { ContactTypes } from '../contact.model'; -import { TransactionTemplateMapType } from '../transaction-type.model'; - -export abstract class TransactionGroup { - abstract getFormProperties( - templateMap: TransactionTemplateMapType, - scheduleId: string - ): string[]; - abstract getContactTypeOptions(): PrimeOptions; - abstract hasEmployerInput(entityType: ContactTypes, scheduleId: string): boolean; - abstract hasCommitteeFecIdInput(entityType?: ContactTypes): boolean; - abstract hasElectionInformationInput(): boolean; - abstract hasCandidateInformationInput(): boolean; - abstract hasCandidateCommitteeInput(): boolean; - abstract hasCandidateOfficeInput(): boolean; -} diff --git a/front-end/src/app/shared/models/transaction-type.model.ts b/front-end/src/app/shared/models/transaction-type.model.ts index 9f8984ecf3..89d867d4a6 100644 --- a/front-end/src/app/shared/models/transaction-type.model.ts +++ b/front-end/src/app/shared/models/transaction-type.model.ts @@ -1,7 +1,14 @@ import { JsonSchema } from '../interfaces/json-schema.interface'; +import { + CANDIDATE_FIELDS, + CANDIDATE_OFFICE_FIELDS, + ELECTION_FIELDS, + EMPLOYEE_INFO_FIELDS, + LOAN_FINANCE_FIELDS, + LOAN_TERMS_FIELDS, + hasFields, +} from '../utils/transaction-type-properties'; import { ContactType } from './contact.model'; -import { DoubleTransactionGroup } from './transaction-groups/double-transaction-group.model'; -import { TransactionGroup } from './transaction-groups/transaction-group.model'; import { TransactionNavigationControls } from './transaction-navigation-controls.model'; import { Transaction, TransactionTypes } from './transaction.model'; @@ -12,7 +19,8 @@ import { Transaction, TransactionTypes } from './transaction.model'; export abstract class TransactionType { abstract scheduleId: string; abstract apiEndpoint: string; // Root URL to API endpoint for CRUDing transaction - abstract transactionGroup: TransactionGroup | DoubleTransactionGroup; // Transaction group used to render UI form entry page + abstract formFields: string[]; + abstract contactTypeOptions?: ContactType[]; abstract title: string; abstract schema: JsonSchema; // FEC validation JSON schema abstract templateMap: TransactionTemplateMapType; // Mapping of values between the schedule (A,B,C...) and the common identifiers in the HTML templates @@ -20,12 +28,12 @@ export abstract class TransactionType { updateParentOnSave = false; // Set to true when the parent transaction may be affected by a change in the transaction // Form display settings - contactTypeOptions?: ContactType[]; // Override the default list of contact types in the transaction component - defaultContactTypeOption?: ContactType; // Set this to the default contact type (entity type) of the form select box if it is other than the first contact type in the contactTypeOptions list negativeAmountValueOnly = false; // Set to true if the amount for the transaction can only have a negative value isRefund = false; // Boolean flag to identify the transaction type as a refund showAggregate = true; // Boolean flag to show/hide the calculated aggregate input on the transaction forms - hasCandidateLookup = false; // Boolean flag to cause candidate lookup to display + showStandardAmount = true; // Boolean flag to show/hide the standard amount control. This is typically hidden if an alternate is used, like in Loans + hasCandidateCommittee = false; //Boolean flag to show/hide committee inputs along side candidate info + contact2IsRequired = false; // Boolean flag to cause contact_2 required to be added to the form validation // Double-entry settings isDependentChild = false; // When set to true, the parent transaction of the transaction is used to generate UI form entry page @@ -43,6 +51,7 @@ export abstract class TransactionType { // Memo Code settings memoCodeMap?: { true: string; false: string }; // Show a SelectButton for memo code where the labels are the values in this map memoCodeTransactionTypes?: { true: TransactionTypes; false: TransactionTypes }; // Change the transaction type based on the value of memo_code (when it's a SelectButton) + doMemoCodeDateCheck = true; // Flag activates the "Just checking..." pop-up check if the input transaction date is outside of the report date range. // Pupose description settings generatePurposeDescription?(transaction: Transaction): string; // Dynamically generates the text in the CPD or EPD field @@ -50,6 +59,19 @@ export abstract class TransactionType { purposeDescriptionLabelSuffix?: string; // Additional text that will appear after the purpose_description input label. If this is not set, '(SYSTEM-GENERATED)', '(REQUIRED)', or '(OPTIONAL)' will be diplayed purposeDescriptionPrefix?: string; // Additional text that appears at the start of the start of the purpose description field + // Labels + dateLabel = 'DATE'; + amountInputHeader = ''; + purposeDescripLabel = ''; + + description?: string; // Prose describing transaction and filling out the form + accordionTitle?: string; // Title for accordion handle (does not include subtext) + accordionSubText?: string; // Text after title in accordion handle + formTitle?: string; // Title of form within accordion section + footer?: string; // Text at the end of form + contactTitle?: string; // Title for primary contact + contactLookupLabel?: string; //Label above contact lookup + getSchemaName(): string { const schema_name = this?.schema?.$id?.split('/').pop()?.split('.')[0]; if (!schema_name) { @@ -79,6 +101,35 @@ export abstract class TransactionType { } return ''; } + + getFormControlNames(templateMap: TransactionTemplateMapType): string[] { + const templateFields = this.formFields + .map((name: string) => templateMap[name as TemplateMapKeyType]) + .filter((field) => !!field); + return ['entity_type', ...templateFields]; + } + + hasElectionInformation(): boolean { + return hasFields(this.formFields, ELECTION_FIELDS); + } + hasCandidateInformation(): boolean { + return hasFields(this.formFields, CANDIDATE_FIELDS); + } + hasCommitteeFecId(): boolean { + return hasFields(this.formFields, ['committee_fec_id']); + } + hasEmployeeFields(): boolean { + return hasFields(this.formFields, EMPLOYEE_INFO_FIELDS); + } + hasCandidateOffice(): boolean { + return hasFields(this.formFields, CANDIDATE_OFFICE_FIELDS); + } + hasLoanFinanceFields(): boolean { + return hasFields(this.formFields, LOAN_FINANCE_FIELDS); + } + hasLoanTermsFields(): boolean { + return hasFields(this.formFields, LOAN_TERMS_FIELDS); + } } export enum PurposeDescriptionLabelSuffix { @@ -117,18 +168,16 @@ export type TransactionTemplateMapType = { memo_code: string; amount: string; balance: string; + payment_to_date: string; + due_date: string; + interest_rate: string; + secured: string; aggregate: string; purpose_description: string; text4000: string; category_code: string; election_code: string; election_other_description: string; - - // Labels and text strings - dateLabel: string; - amountInputHeader: string; - purposeDescripLabel: string; - candidateInputHeader: string; }; export type TemplateMapKeyType = keyof TransactionTemplateMapType; diff --git a/front-end/src/app/shared/models/transaction-types/BUSINESS_LABOR_NON_CONTRIBUTION_ACCOUNT.model.spec.ts b/front-end/src/app/shared/models/transaction-types/BUSINESS_LABOR_NON_CONTRIBUTION_ACCOUNT.model.spec.ts index a5be7c347b..86426eac25 100644 --- a/front-end/src/app/shared/models/transaction-types/BUSINESS_LABOR_NON_CONTRIBUTION_ACCOUNT.model.spec.ts +++ b/front-end/src/app/shared/models/transaction-types/BUSINESS_LABOR_NON_CONTRIBUTION_ACCOUNT.model.spec.ts @@ -1,5 +1,4 @@ import { SchATransaction, ScheduleATransactionTypes } from '../scha-transaction.model'; -import { TransactionGroupD } from '../transaction-groups/transaction-group-d.model'; import { BUSINESS_LABOR_NON_CONTRIBUTION_ACCOUNT } from './BUSINESS_LABOR_NON_CONTRIBUTION_ACCOUNT.model'; describe('TRIBAL_RECEIPT', () => { @@ -12,7 +11,6 @@ describe('TRIBAL_RECEIPT', () => { it('should create an instance', () => { expect(transactionType).toBeTruthy(); expect(transactionType.scheduleId).toBe('A'); - expect(transactionType.transactionGroup).toBeInstanceOf(TransactionGroupD); }); it('#factory() should return a SchATransaction', () => { diff --git a/front-end/src/app/shared/models/transaction-types/BUSINESS_LABOR_NON_CONTRIBUTION_ACCOUNT.model.ts b/front-end/src/app/shared/models/transaction-types/BUSINESS_LABOR_NON_CONTRIBUTION_ACCOUNT.model.ts index 0070c74687..e90962e0a3 100644 --- a/front-end/src/app/shared/models/transaction-types/BUSINESS_LABOR_NON_CONTRIBUTION_ACCOUNT.model.ts +++ b/front-end/src/app/shared/models/transaction-types/BUSINESS_LABOR_NON_CONTRIBUTION_ACCOUNT.model.ts @@ -2,12 +2,13 @@ import { LabelUtils } from 'app/shared/utils/label.utils'; import { schema } from 'fecfile-validate/fecfile_validate_js/dist/BUSINESS_LABOR_NON_CONTRIBUTION_ACCOUNT'; import { SchATransactionType } from '../scha-transaction-type.model'; import { SchATransaction, ScheduleATransactionTypeLabels, ScheduleATransactionTypes } from '../scha-transaction.model'; -import { TransactionGroupD } from '../transaction-groups/transaction-group-d.model'; import { STANDARD_CONTROLS, TransactionNavigationControls } from '../transaction-navigation-controls.model'; import { AggregationGroups } from '../transaction.model'; +import { ORGANIZATION_FORM_FIELDS, ORGANIZATION } from 'app/shared/utils/transaction-type-properties'; export class BUSINESS_LABOR_NON_CONTRIBUTION_ACCOUNT extends SchATransactionType { - transactionGroup = new TransactionGroupD(); + formFields = ORGANIZATION_FORM_FIELDS; + contactTypeOptions = ORGANIZATION; title = LabelUtils.get( ScheduleATransactionTypeLabels, ScheduleATransactionTypes.BUSINESS_LABOR_NON_CONTRIBUTION_ACCOUNT diff --git a/front-end/src/app/shared/models/transaction-types/BUSINESS_LABOR_REFUND_NON_CONTRIBUTION_ACCOUNT.model.spec.ts b/front-end/src/app/shared/models/transaction-types/BUSINESS_LABOR_REFUND_NON_CONTRIBUTION_ACCOUNT.model.spec.ts index 14a557b5ad..47a01217ee 100644 --- a/front-end/src/app/shared/models/transaction-types/BUSINESS_LABOR_REFUND_NON_CONTRIBUTION_ACCOUNT.model.spec.ts +++ b/front-end/src/app/shared/models/transaction-types/BUSINESS_LABOR_REFUND_NON_CONTRIBUTION_ACCOUNT.model.spec.ts @@ -1,5 +1,4 @@ import { SchBTransaction, ScheduleBTransactionTypes } from '../schb-transaction.model'; -import { TransactionGroupD } from '../transaction-groups/transaction-group-d.model'; import { BUSINESS_LABOR_REFUND_NON_CONTRIBUTION_ACCOUNT } from './BUSINESS_LABOR_REFUND_NON_CONTRIBUTION_ACCOUNT.model'; describe('BUSINESS_LABOR_REFUND_NON_CONTRIBUTION_ACCOUNT', () => { @@ -12,7 +11,6 @@ describe('BUSINESS_LABOR_REFUND_NON_CONTRIBUTION_ACCOUNT', () => { it('should create an instance', () => { expect(transactionType).toBeTruthy(); expect(transactionType.scheduleId).toBe('B'); - expect(transactionType.transactionGroup).toBeInstanceOf(TransactionGroupD); }); xit('#factory() should return a SchBTransaction', () => { diff --git a/front-end/src/app/shared/models/transaction-types/BUSINESS_LABOR_REFUND_NON_CONTRIBUTION_ACCOUNT.model.ts b/front-end/src/app/shared/models/transaction-types/BUSINESS_LABOR_REFUND_NON_CONTRIBUTION_ACCOUNT.model.ts index d571c4b1c1..13b7dca98b 100644 --- a/front-end/src/app/shared/models/transaction-types/BUSINESS_LABOR_REFUND_NON_CONTRIBUTION_ACCOUNT.model.ts +++ b/front-end/src/app/shared/models/transaction-types/BUSINESS_LABOR_REFUND_NON_CONTRIBUTION_ACCOUNT.model.ts @@ -1,21 +1,20 @@ import { LabelUtils } from 'app/shared/utils/label.utils'; import { schema } from 'fecfile-validate/fecfile_validate_js/dist/NON_CONTRIBUTION_ACCOUNT_REFUNDS'; -import { ContactTypes } from '../contact.model'; import { SchBTransactionType } from '../schb-transaction-type.model'; import { SchBTransaction, ScheduleBTransactionTypeLabels, ScheduleBTransactionTypes } from '../schb-transaction.model'; -import { TransactionGroupD } from '../transaction-groups/transaction-group-d.model'; import { STANDARD_CONTROLS, TransactionNavigationControls } from '../transaction-navigation-controls.model'; import { AggregationGroups } from '../transaction.model'; +import { ORGANIZATION_B_FORM_FIELDS, ORGANIZATION } from 'app/shared/utils/transaction-type-properties'; export class BUSINESS_LABOR_REFUND_NON_CONTRIBUTION_ACCOUNT extends SchBTransactionType { - transactionGroup = new TransactionGroupD(); + formFields = ORGANIZATION_B_FORM_FIELDS; + contactTypeOptions = ORGANIZATION; title = LabelUtils.get( ScheduleBTransactionTypeLabels, ScheduleBTransactionTypes.BUSINESS_LABOR_REFUND_NON_CONTRIBUTION_ACCOUNT ); schema = schema; override showAggregate = false; - override defaultContactTypeOption = ContactTypes.ORGANIZATION; override navigationControls: TransactionNavigationControls = STANDARD_CONTROLS; getNewTransaction() { diff --git a/front-end/src/app/shared/models/transaction-types/CONDUIT_EARMARK_OUT.model.spec.ts b/front-end/src/app/shared/models/transaction-types/CONDUIT_EARMARK_OUT.model.spec.ts index 6b2e0ff527..4b8ef27842 100644 --- a/front-end/src/app/shared/models/transaction-types/CONDUIT_EARMARK_OUT.model.spec.ts +++ b/front-end/src/app/shared/models/transaction-types/CONDUIT_EARMARK_OUT.model.spec.ts @@ -1,6 +1,5 @@ import { CONDUIT_EARMARK_OUT } from './CONDUIT_EARMARK_OUT.model'; import { SchATransaction, ScheduleATransactionTypes } from '../scha-transaction.model'; -import { TransactionGroupNM } from '../transaction-groups/transaction-group-nm.model'; import { SchBTransaction, ScheduleBTransactionTypes } from '../schb-transaction.model'; import { getTestTransactionByType } from 'app/shared/utils/unit-test.utils'; import { ContactTypes } from '../contact.model'; @@ -17,7 +16,6 @@ describe('CONDUIT_EARMARK_OUT', () => { it('should create an instance', () => { expect(transactionType).toBeTruthy(); expect(transactionType.scheduleId).toBe('B'); - expect(transactionType.transactionGroup).toBeInstanceOf(TransactionGroupNM); }); it('#factory() should return a SchATransaction', () => { diff --git a/front-end/src/app/shared/models/transaction-types/CONDUIT_EARMARK_OUT.model.ts b/front-end/src/app/shared/models/transaction-types/CONDUIT_EARMARK_OUT.model.ts index 424d8c0b1a..9cac7310f2 100644 --- a/front-end/src/app/shared/models/transaction-types/CONDUIT_EARMARK_OUT.model.ts +++ b/front-end/src/app/shared/models/transaction-types/CONDUIT_EARMARK_OUT.model.ts @@ -1,19 +1,20 @@ import { schema } from 'fecfile-validate/fecfile_validate_js/dist/CONDUIT_EARMARK_OUTS'; import { SchBTransaction, ScheduleBTransactionTypes } from '../schb-transaction.model'; -import { SchBTransactionType } from '../schb-transaction-type.model'; import { TemplateMapKeyType } from '../transaction-type.model'; import { ContactTypes } from '../contact.model'; import { SchATransaction } from '../scha-transaction.model'; -import { TransactionGroupNM } from '../transaction-groups/transaction-group-nm.model'; +import { + COMMITTEE, + COMMITTEE_WITH_CANDIDATE_AND_ELECTION_B_FORM_FIELDS, +} from 'app/shared/utils/transaction-type-properties'; +import { CONDUIT_EARMARK_OUT as CommonConduitEarmarkOut } from './common-types/CONDUIT_EARMARK_OUT.model'; -export class CONDUIT_EARMARK_OUT extends SchBTransactionType { - transactionGroup = new TransactionGroupNM(); +export class CONDUIT_EARMARK_OUT extends CommonConduitEarmarkOut { + formFields = COMMITTEE_WITH_CANDIDATE_AND_ELECTION_B_FORM_FIELDS; + contactTypeOptions = COMMITTEE; title = 'Conduit Earmark Out'; schema = schema; - override isDependentChild = true; override parentTriggerFields = ['organization_name', 'last_name', 'first_name'] as TemplateMapKeyType[]; - override inheritedFields = ['amount', 'memo_code'] as TemplateMapKeyType[]; - override showAggregate = false; override memoCodeTransactionTypes = { true: ScheduleBTransactionTypes.CONDUIT_EARMARK_OUT_UNDEPOSITED, false: ScheduleBTransactionTypes.CONDUIT_EARMARK_OUT_DEPOSITED, diff --git a/front-end/src/app/shared/models/transaction-types/CONDUIT_EARMARK_RECEIPT.model.spec.ts b/front-end/src/app/shared/models/transaction-types/CONDUIT_EARMARK_RECEIPT.model.spec.ts index 200f93f704..36a05ced30 100644 --- a/front-end/src/app/shared/models/transaction-types/CONDUIT_EARMARK_RECEIPT.model.spec.ts +++ b/front-end/src/app/shared/models/transaction-types/CONDUIT_EARMARK_RECEIPT.model.spec.ts @@ -1,7 +1,6 @@ import { SchATransaction, ScheduleATransactionTypes } from '../scha-transaction.model'; import { ContactTypes } from '../contact.model'; import { getTestTransactionByType } from 'app/shared/utils/unit-test.utils'; -import { TransactionGroupNM } from '../transaction-groups/transaction-group-nm.model'; import { SchBTransaction, ScheduleBTransactionTypes } from '../schb-transaction.model'; describe('CONDUIT_EARMARK_RECEIPT', () => { @@ -14,7 +13,6 @@ describe('CONDUIT_EARMARK_RECEIPT', () => { it('should create an instance', () => { expect(transaction.transactionType).toBeTruthy(); expect(transaction.transactionType?.scheduleId).toBe('A'); - expect(transaction?.transactionType?.transactionGroup).toBeInstanceOf(TransactionGroupNM); }); it('#factory() should return a SchATransaction', () => { diff --git a/front-end/src/app/shared/models/transaction-types/CONDUIT_EARMARK_RECEIPT.model.ts b/front-end/src/app/shared/models/transaction-types/CONDUIT_EARMARK_RECEIPT.model.ts index 6347b39af4..f1f824d019 100644 --- a/front-end/src/app/shared/models/transaction-types/CONDUIT_EARMARK_RECEIPT.model.ts +++ b/front-end/src/app/shared/models/transaction-types/CONDUIT_EARMARK_RECEIPT.model.ts @@ -1,27 +1,15 @@ import { schema } from 'fecfile-validate/fecfile_validate_js/dist/CONDUIT_EARMARKS'; -import { SchATransactionType } from '../scha-transaction-type.model'; import { SchATransaction, ScheduleATransactionTypes } from '../scha-transaction.model'; import { SchBTransaction, ScheduleBTransactionTypes } from '../schb-transaction.model'; -import { - STANDARD_DOUBLE_ENTRY_CONTROLS, - TransactionNavigationControls, -} from '../transaction-navigation-controls.model'; -import { TemplateMapKeyType } from '../transaction-type.model'; -import { TransactionGroupNM } from '../transaction-groups/transaction-group-nm.model'; +import { INDIVIDUAL_WITH_EMPLOYEE_B_FORM_FIELDS, INDIVIDUAL } from 'app/shared/utils/transaction-type-properties'; +import { CONDUIT_EARMARK } from './common-types/CONDUIT_EARMARK.model'; -export class CONDUIT_EARMARK_RECEIPT extends SchATransactionType { - transactionGroup = new TransactionGroupNM(); +export class CONDUIT_EARMARK_RECEIPT extends CONDUIT_EARMARK { + formFields = INDIVIDUAL_WITH_EMPLOYEE_B_FORM_FIELDS; + contactTypeOptions = INDIVIDUAL; title = 'Conduit Earmark'; schema = schema; override dependentChildTransactionType = ScheduleBTransactionTypes.CONDUIT_EARMARK_OUT; - override navigationControls: TransactionNavigationControls = STANDARD_DOUBLE_ENTRY_CONTROLS; - override childTriggerFields = ['organization_name', 'last_name', 'first_name'] as TemplateMapKeyType[]; - override showAggregate = false; - override apiEndpoint = '/transactions/save-pair'; - override memoCodeMap = { - true: 'Undeposited', - false: 'Deposited', - }; override memoCodeTransactionTypes = { true: ScheduleATransactionTypes.CONDUIT_EARMARK_RECEIPT_UNDEPOSITED, false: ScheduleATransactionTypes.CONDUIT_EARMARK_RECEIPT_DEPOSITED, diff --git a/front-end/src/app/shared/models/transaction-types/CONTRIBUTION_TO_CANDIDATE.model.spec.ts b/front-end/src/app/shared/models/transaction-types/CONTRIBUTION_TO_CANDIDATE.model.spec.ts index 0a6a896c70..ee2930c904 100644 --- a/front-end/src/app/shared/models/transaction-types/CONTRIBUTION_TO_CANDIDATE.model.spec.ts +++ b/front-end/src/app/shared/models/transaction-types/CONTRIBUTION_TO_CANDIDATE.model.spec.ts @@ -1,6 +1,5 @@ import { TransactionType } from 'app/shared/models/transaction-type.model'; import { SchBTransaction, ScheduleBTransactionTypes } from '../schb-transaction.model'; -import { TransactionGroupM } from '../transaction-groups/transaction-group-m.model'; import { CONTRIBUTION_TO_CANDIDATE } from './CONTRIBUTION_TO_CANDIDATE.model'; describe('CONTRIBUTION_TO_CANDIDATE', () => { @@ -13,7 +12,6 @@ describe('CONTRIBUTION_TO_CANDIDATE', () => { it('should create an instance', () => { expect(transactionType).toBeTruthy(); expect(transactionType.scheduleId).toBe('B'); - expect(transactionType.transactionGroup).toBeInstanceOf(TransactionGroupM); }); it('#factory() should return a SchATransaction', () => { diff --git a/front-end/src/app/shared/models/transaction-types/CONTRIBUTION_TO_CANDIDATE.model.ts b/front-end/src/app/shared/models/transaction-types/CONTRIBUTION_TO_CANDIDATE.model.ts index 409f034dce..2c24dddbd6 100644 --- a/front-end/src/app/shared/models/transaction-types/CONTRIBUTION_TO_CANDIDATE.model.ts +++ b/front-end/src/app/shared/models/transaction-types/CONTRIBUTION_TO_CANDIDATE.model.ts @@ -2,15 +2,21 @@ import { LabelUtils } from 'app/shared/utils/label.utils'; import { schema } from 'fecfile-validate/fecfile_validate_js/dist/CANDIDATE_CONTRIBUTIONS'; import { SchBTransactionType } from '../schb-transaction-type.model'; import { SchBTransaction, ScheduleBTransactionTypeLabels, ScheduleBTransactionTypes } from '../schb-transaction.model'; -import { TransactionGroupM } from '../transaction-groups/transaction-group-m.model'; import { STANDARD_CONTROLS, TransactionNavigationControls } from '../transaction-navigation-controls.model'; +import { + COMMITTEE, + COMMITTEE_WITH_CANDIDATE_AND_ELECTION_B_FORM_FIELDS, +} from 'app/shared/utils/transaction-type-properties'; export class CONTRIBUTION_TO_CANDIDATE extends SchBTransactionType { - transactionGroup = new TransactionGroupM(); + formFields = COMMITTEE_WITH_CANDIDATE_AND_ELECTION_B_FORM_FIELDS; + contactTypeOptions = COMMITTEE; title = LabelUtils.get(ScheduleBTransactionTypeLabels, ScheduleBTransactionTypes.CONTRIBUTION_TO_CANDIDATE); schema = schema; override showAggregate = false; + override hasCandidateCommittee = true; override navigationControls: TransactionNavigationControls = STANDARD_CONTROLS; + override contact2IsRequired = true; getNewTransaction() { return SchBTransaction.fromJSON({ diff --git a/front-end/src/app/shared/models/transaction-types/CONTRIBUTION_TO_CANDIDATE_VOID.model.spec.ts b/front-end/src/app/shared/models/transaction-types/CONTRIBUTION_TO_CANDIDATE_VOID.model.spec.ts index 8bb723eb7c..5feb96679c 100644 --- a/front-end/src/app/shared/models/transaction-types/CONTRIBUTION_TO_CANDIDATE_VOID.model.spec.ts +++ b/front-end/src/app/shared/models/transaction-types/CONTRIBUTION_TO_CANDIDATE_VOID.model.spec.ts @@ -1,6 +1,5 @@ import { TransactionType } from 'app/shared/models/transaction-type.model'; import { SchBTransaction, ScheduleBTransactionTypes } from '../schb-transaction.model'; -import { TransactionGroupM } from '../transaction-groups/transaction-group-m.model'; import { CONTRIBUTION_TO_CANDIDATE_VOID } from './CONTRIBUTION_TO_CANDIDATE_VOID.model'; describe('CONTRIBUTION_TO_CANDIDATE_VOID', () => { @@ -13,7 +12,6 @@ describe('CONTRIBUTION_TO_CANDIDATE_VOID', () => { it('should create an instance', () => { expect(transactionType).toBeTruthy(); expect(transactionType.scheduleId).toBe('B'); - expect(transactionType.transactionGroup).toBeInstanceOf(TransactionGroupM); }); it('#factory() should return a SchATransaction', () => { diff --git a/front-end/src/app/shared/models/transaction-types/CONTRIBUTION_TO_CANDIDATE_VOID.model.ts b/front-end/src/app/shared/models/transaction-types/CONTRIBUTION_TO_CANDIDATE_VOID.model.ts index 9662db4b29..c657f30d8b 100644 --- a/front-end/src/app/shared/models/transaction-types/CONTRIBUTION_TO_CANDIDATE_VOID.model.ts +++ b/front-end/src/app/shared/models/transaction-types/CONTRIBUTION_TO_CANDIDATE_VOID.model.ts @@ -2,18 +2,24 @@ import { LabelUtils } from 'app/shared/utils/label.utils'; import { schema } from 'fecfile-validate/fecfile_validate_js/dist/CANDIDATE_CONTRIBUTIONS'; import { SchBTransactionType } from '../schb-transaction-type.model'; import { SchBTransaction, ScheduleBTransactionTypeLabels, ScheduleBTransactionTypes } from '../schb-transaction.model'; -import { TransactionGroupM } from '../transaction-groups/transaction-group-m.model'; import { STANDARD_CONTROLS, TransactionNavigationControls } from '../transaction-navigation-controls.model'; import { PurposeDescriptionLabelSuffix } from '../transaction-type.model'; +import { + COMMITTEE, + COMMITTEE_WITH_CANDIDATE_AND_ELECTION_B_FORM_FIELDS, +} from 'app/shared/utils/transaction-type-properties'; export class CONTRIBUTION_TO_CANDIDATE_VOID extends SchBTransactionType { - transactionGroup = new TransactionGroupM(); + formFields = COMMITTEE_WITH_CANDIDATE_AND_ELECTION_B_FORM_FIELDS; + contactTypeOptions = COMMITTEE; title = LabelUtils.get(ScheduleBTransactionTypeLabels, ScheduleBTransactionTypes.CONTRIBUTION_TO_CANDIDATE_VOID); schema = schema; override negativeAmountValueOnly = true; override showAggregate = false; + override hasCandidateCommittee = true; override purposeDescriptionLabelSuffix = PurposeDescriptionLabelSuffix.REQUIRED; override navigationControls: TransactionNavigationControls = STANDARD_CONTROLS; + override contact2IsRequired = true; getNewTransaction() { return SchBTransaction.fromJSON({ diff --git a/front-end/src/app/shared/models/transaction-types/CONTRIBUTION_TO_OTHER_COMMITTEE.model.spec.ts b/front-end/src/app/shared/models/transaction-types/CONTRIBUTION_TO_OTHER_COMMITTEE.model.spec.ts index 295984f1bd..863debeb20 100644 --- a/front-end/src/app/shared/models/transaction-types/CONTRIBUTION_TO_OTHER_COMMITTEE.model.spec.ts +++ b/front-end/src/app/shared/models/transaction-types/CONTRIBUTION_TO_OTHER_COMMITTEE.model.spec.ts @@ -1,5 +1,4 @@ import { SchBTransaction, ScheduleBTransactionTypes } from '../schb-transaction.model'; -import { TransactionGroupE } from '../transaction-groups/transaction-group-e.model'; import { CONTRIBUTION_TO_OTHER_COMMITTEE } from './CONTRIBUTION_TO_OTHER_COMMITTEE.model'; describe('CONTRIBUTION_TO_OTHER_COMMITTEE', () => { @@ -12,7 +11,6 @@ describe('CONTRIBUTION_TO_OTHER_COMMITTEE', () => { it('should create an instance', () => { expect(transactionType).toBeTruthy(); expect(transactionType.scheduleId).toBe('B'); - expect(transactionType.transactionGroup).toBeInstanceOf(TransactionGroupE); }); it('#factory() should return a SchBTransaction', () => { diff --git a/front-end/src/app/shared/models/transaction-types/CONTRIBUTION_TO_OTHER_COMMITTEE.model.ts b/front-end/src/app/shared/models/transaction-types/CONTRIBUTION_TO_OTHER_COMMITTEE.model.ts index 3b776deca7..1a71e49d7e 100644 --- a/front-end/src/app/shared/models/transaction-types/CONTRIBUTION_TO_OTHER_COMMITTEE.model.ts +++ b/front-end/src/app/shared/models/transaction-types/CONTRIBUTION_TO_OTHER_COMMITTEE.model.ts @@ -2,11 +2,12 @@ import { LabelUtils } from 'app/shared/utils/label.utils'; import { schema } from 'fecfile-validate/fecfile_validate_js/dist/OTHER_COMMITTEE_CONTRIBUTIONS'; import { SchBTransactionType } from '../schb-transaction-type.model'; import { SchBTransaction, ScheduleBTransactionTypeLabels, ScheduleBTransactionTypes } from '../schb-transaction.model'; -import { TransactionGroupE } from '../transaction-groups/transaction-group-e.model'; import { STANDARD_CONTROLS, TransactionNavigationControls } from '../transaction-navigation-controls.model'; +import { COMMITTEE, COMMITTEE_B_FORM_FIELDS } from 'app/shared/utils/transaction-type-properties'; export class CONTRIBUTION_TO_OTHER_COMMITTEE extends SchBTransactionType { - transactionGroup = new TransactionGroupE(); + formFields = COMMITTEE_B_FORM_FIELDS; + contactTypeOptions = COMMITTEE; title = LabelUtils.get(ScheduleBTransactionTypeLabels, ScheduleBTransactionTypes.CONTRIBUTION_TO_OTHER_COMMITTEE); schema = schema; override showAggregate = false; diff --git a/front-end/src/app/shared/models/transaction-types/CONTRIBUTION_TO_OTHER_COMMITTEE_VOID.model.spec.ts b/front-end/src/app/shared/models/transaction-types/CONTRIBUTION_TO_OTHER_COMMITTEE_VOID.model.spec.ts index 418a574e9f..01fbd5a8e7 100644 --- a/front-end/src/app/shared/models/transaction-types/CONTRIBUTION_TO_OTHER_COMMITTEE_VOID.model.spec.ts +++ b/front-end/src/app/shared/models/transaction-types/CONTRIBUTION_TO_OTHER_COMMITTEE_VOID.model.spec.ts @@ -1,5 +1,4 @@ import { SchBTransaction, ScheduleBTransactionTypes } from '../schb-transaction.model'; -import { TransactionGroupE } from '../transaction-groups/transaction-group-e.model'; import { CONTRIBUTION_TO_OTHER_COMMITTEE_VOID } from './CONTRIBUTION_TO_OTHER_COMMITTEE_VOID.model'; describe('CONTRIBUTION_TO_OTHER_COMMITTEE_VOID', () => { @@ -12,7 +11,6 @@ describe('CONTRIBUTION_TO_OTHER_COMMITTEE_VOID', () => { it('should create an instance', () => { expect(transactionType).toBeTruthy(); expect(transactionType.scheduleId).toBe('B'); - expect(transactionType.transactionGroup).toBeInstanceOf(TransactionGroupE); }); it('#factory() should return a SchBTransaction', () => { diff --git a/front-end/src/app/shared/models/transaction-types/CONTRIBUTION_TO_OTHER_COMMITTEE_VOID.model.ts b/front-end/src/app/shared/models/transaction-types/CONTRIBUTION_TO_OTHER_COMMITTEE_VOID.model.ts index 5d342af8b0..43d737c8bc 100644 --- a/front-end/src/app/shared/models/transaction-types/CONTRIBUTION_TO_OTHER_COMMITTEE_VOID.model.ts +++ b/front-end/src/app/shared/models/transaction-types/CONTRIBUTION_TO_OTHER_COMMITTEE_VOID.model.ts @@ -2,12 +2,13 @@ import { LabelUtils } from 'app/shared/utils/label.utils'; import { schema } from 'fecfile-validate/fecfile_validate_js/dist/OTHER_COMMITTEE_CONTRIBUTIONS'; import { SchBTransactionType } from '../schb-transaction-type.model'; import { SchBTransaction, ScheduleBTransactionTypeLabels, ScheduleBTransactionTypes } from '../schb-transaction.model'; -import { TransactionGroupE } from '../transaction-groups/transaction-group-e.model'; import { STANDARD_CONTROLS, TransactionNavigationControls } from '../transaction-navigation-controls.model'; import { PurposeDescriptionLabelSuffix } from '../transaction-type.model'; +import { COMMITTEE, COMMITTEE_B_FORM_FIELDS } from 'app/shared/utils/transaction-type-properties'; export class CONTRIBUTION_TO_OTHER_COMMITTEE_VOID extends SchBTransactionType { - transactionGroup = new TransactionGroupE(); + formFields = COMMITTEE_B_FORM_FIELDS; + contactTypeOptions = COMMITTEE; title = LabelUtils.get( ScheduleBTransactionTypeLabels, ScheduleBTransactionTypes.CONTRIBUTION_TO_OTHER_COMMITTEE_VOID diff --git a/front-end/src/app/shared/models/transaction-types/EARMARK_MEMO.model.spec.ts b/front-end/src/app/shared/models/transaction-types/EARMARK_MEMO.model.spec.ts index 44d067e440..a1e5df0edd 100644 --- a/front-end/src/app/shared/models/transaction-types/EARMARK_MEMO.model.spec.ts +++ b/front-end/src/app/shared/models/transaction-types/EARMARK_MEMO.model.spec.ts @@ -1,6 +1,5 @@ import { EARMARK_MEMO } from './EARMARK_MEMO.model'; import { SchATransaction, ScheduleATransactionTypes } from '../scha-transaction.model'; -import { TransactionGroupAG } from '../transaction-groups/transaction-group-ag.model'; describe('EARMARK_MEMO', () => { let transactionType: EARMARK_MEMO; @@ -12,7 +11,6 @@ describe('EARMARK_MEMO', () => { it('should create an instance', () => { expect(transactionType).toBeTruthy(); expect(transactionType.scheduleId).toBe('A'); - expect(transactionType.transactionGroup).toBeInstanceOf(TransactionGroupAG); }); it('#factory() should return a SchATransaction', () => { diff --git a/front-end/src/app/shared/models/transaction-types/EARMARK_MEMO.model.ts b/front-end/src/app/shared/models/transaction-types/EARMARK_MEMO.model.ts index cff7ab758c..64b67684a8 100644 --- a/front-end/src/app/shared/models/transaction-types/EARMARK_MEMO.model.ts +++ b/front-end/src/app/shared/models/transaction-types/EARMARK_MEMO.model.ts @@ -1,21 +1,12 @@ import { schema } from 'fecfile-validate/fecfile_validate_js/dist/EARMARK_MEMO'; -import { SchATransactionType } from '../scha-transaction-type.model'; import { SchATransaction, ScheduleATransactionTypes, ScheduleATransactionTypeLabels } from '../scha-transaction.model'; -import { TransactionGroupAG } from '../transaction-groups/transaction-group-ag.model'; import { AggregationGroups } from '../transaction.model'; -import { TemplateMapKeyType } from '../transaction-type.model'; import { LabelUtils } from 'app/shared/utils/label.utils'; +import { EARMARK_MEMO as CommonEarmarkMemo } from './common-types/EARMARK_MEMO.model'; -export class EARMARK_MEMO extends SchATransactionType { - transactionGroup = new TransactionGroupAG(); - override isDependentChild = true; +export class EARMARK_MEMO extends CommonEarmarkMemo { title = LabelUtils.get(ScheduleATransactionTypeLabels, ScheduleATransactionTypes.EARMARK_MEMO); schema = schema; - override inheritedFields = ['amount' as TemplateMapKeyType]; - - override generatePurposeDescription(): string { - return 'Total earmarked through conduit.'; - } getNewTransaction() { return SchATransaction.fromJSON({ diff --git a/front-end/src/app/shared/models/transaction-types/EARMARK_MEMO_CONVENTION_ACCOUNT.model.spec.ts b/front-end/src/app/shared/models/transaction-types/EARMARK_MEMO_CONVENTION_ACCOUNT.model.spec.ts index 4b77c033a9..bab8c84bbb 100644 --- a/front-end/src/app/shared/models/transaction-types/EARMARK_MEMO_CONVENTION_ACCOUNT.model.spec.ts +++ b/front-end/src/app/shared/models/transaction-types/EARMARK_MEMO_CONVENTION_ACCOUNT.model.spec.ts @@ -1,5 +1,4 @@ import { SchATransaction, ScheduleATransactionTypes } from '../scha-transaction.model'; -import { TransactionGroupAG } from '../transaction-groups/transaction-group-ag.model'; import { EARMARK_MEMO_CONVENTION_ACCOUNT } from './EARMARK_MEMO_CONVENTION_ACCOUNT.model'; describe('EARMARK_MEMO_CONVENTION_ACCOUNT', () => { @@ -12,7 +11,6 @@ describe('EARMARK_MEMO_CONVENTION_ACCOUNT', () => { it('should create an instance', () => { expect(transactionType).toBeTruthy(); expect(transactionType.scheduleId).toBe('A'); - expect(transactionType.transactionGroup).toBeInstanceOf(TransactionGroupAG); }); it('#factory() should return a SchATransaction', () => { diff --git a/front-end/src/app/shared/models/transaction-types/EARMARK_MEMO_CONVENTION_ACCOUNT.model.ts b/front-end/src/app/shared/models/transaction-types/EARMARK_MEMO_CONVENTION_ACCOUNT.model.ts index 6f233b46dc..16c04ade13 100644 --- a/front-end/src/app/shared/models/transaction-types/EARMARK_MEMO_CONVENTION_ACCOUNT.model.ts +++ b/front-end/src/app/shared/models/transaction-types/EARMARK_MEMO_CONVENTION_ACCOUNT.model.ts @@ -1,21 +1,12 @@ import { schema } from 'fecfile-validate/fecfile_validate_js/dist/NATIONAL_PARTY_EARMARK_MEMOS'; -import { SchATransactionType } from '../scha-transaction-type.model'; import { SchATransaction, ScheduleATransactionTypes, ScheduleATransactionTypeLabels } from '../scha-transaction.model'; -import { TransactionGroupAG } from '../transaction-groups/transaction-group-ag.model'; import { AggregationGroups } from '../transaction.model'; -import { TemplateMapKeyType } from '../transaction-type.model'; import { LabelUtils } from '../../utils/label.utils'; +import { EARMARK_MEMO } from './common-types/EARMARK_MEMO.model'; -export class EARMARK_MEMO_CONVENTION_ACCOUNT extends SchATransactionType { - transactionGroup = new TransactionGroupAG(); - override isDependentChild = true; +export class EARMARK_MEMO_CONVENTION_ACCOUNT extends EARMARK_MEMO { title = LabelUtils.get(ScheduleATransactionTypeLabels, ScheduleATransactionTypes.EARMARK_MEMO_CONVENTION_ACCOUNT); schema = schema; - override inheritedFields = ['amount' as TemplateMapKeyType]; - - override generatePurposeDescription(): string { - return 'Total earmarked through conduit.'; - } getNewTransaction() { return SchATransaction.fromJSON({ diff --git a/front-end/src/app/shared/models/transaction-types/EARMARK_MEMO_HEADQUARTERS_ACCOUNT.model.spec.ts b/front-end/src/app/shared/models/transaction-types/EARMARK_MEMO_HEADQUARTERS_ACCOUNT.model.spec.ts index 8da1f79446..4c8c0098eb 100644 --- a/front-end/src/app/shared/models/transaction-types/EARMARK_MEMO_HEADQUARTERS_ACCOUNT.model.spec.ts +++ b/front-end/src/app/shared/models/transaction-types/EARMARK_MEMO_HEADQUARTERS_ACCOUNT.model.spec.ts @@ -1,6 +1,5 @@ import { EARMARK_MEMO_HEADQUARTERS_ACCOUNT } from './EARMARK_MEMO_HEADQUARTERS_ACCOUNT.model'; import { SchATransaction, ScheduleATransactionTypes } from '../scha-transaction.model'; -import { TransactionGroupAG } from '../transaction-groups/transaction-group-ag.model'; describe('EARMARK_MEMO_HEADQUARTERS_ACCOUNT', () => { let transactionType: EARMARK_MEMO_HEADQUARTERS_ACCOUNT; @@ -12,7 +11,6 @@ describe('EARMARK_MEMO_HEADQUARTERS_ACCOUNT', () => { it('should create an instance', () => { expect(transactionType).toBeTruthy(); expect(transactionType.scheduleId).toBe('A'); - expect(transactionType.transactionGroup).toBeInstanceOf(TransactionGroupAG); }); it('#factory() should return a SchATransaction', () => { diff --git a/front-end/src/app/shared/models/transaction-types/EARMARK_MEMO_HEADQUARTERS_ACCOUNT.model.ts b/front-end/src/app/shared/models/transaction-types/EARMARK_MEMO_HEADQUARTERS_ACCOUNT.model.ts index 95067ecb55..f0e26b4c7f 100644 --- a/front-end/src/app/shared/models/transaction-types/EARMARK_MEMO_HEADQUARTERS_ACCOUNT.model.ts +++ b/front-end/src/app/shared/models/transaction-types/EARMARK_MEMO_HEADQUARTERS_ACCOUNT.model.ts @@ -1,21 +1,12 @@ import { schema } from 'fecfile-validate/fecfile_validate_js/dist/NATIONAL_PARTY_EARMARK_MEMOS'; -import { SchATransactionType } from '../scha-transaction-type.model'; import { SchATransaction, ScheduleATransactionTypes, ScheduleATransactionTypeLabels } from '../scha-transaction.model'; -import { TransactionGroupAG } from '../transaction-groups/transaction-group-ag.model'; import { AggregationGroups } from '../transaction.model'; -import { TemplateMapKeyType } from '../transaction-type.model'; import { LabelUtils } from 'app/shared/utils/label.utils'; +import { EARMARK_MEMO } from './common-types/EARMARK_MEMO.model'; -export class EARMARK_MEMO_HEADQUARTERS_ACCOUNT extends SchATransactionType { - transactionGroup = new TransactionGroupAG(); - override isDependentChild = true; +export class EARMARK_MEMO_HEADQUARTERS_ACCOUNT extends EARMARK_MEMO { title = LabelUtils.get(ScheduleATransactionTypeLabels, ScheduleATransactionTypes.EARMARK_MEMO_HEADQUARTERS_ACCOUNT); schema = schema; - override inheritedFields = ['amount' as TemplateMapKeyType]; - - override generatePurposeDescription(): string { - return 'Total earmarked through conduit.'; - } getNewTransaction() { return SchATransaction.fromJSON({ diff --git a/front-end/src/app/shared/models/transaction-types/EARMARK_MEMO_RECOUNT_ACCOUNT.model.spec.ts b/front-end/src/app/shared/models/transaction-types/EARMARK_MEMO_RECOUNT_ACCOUNT.model.spec.ts index b7e15f28c2..31eb92476c 100644 --- a/front-end/src/app/shared/models/transaction-types/EARMARK_MEMO_RECOUNT_ACCOUNT.model.spec.ts +++ b/front-end/src/app/shared/models/transaction-types/EARMARK_MEMO_RECOUNT_ACCOUNT.model.spec.ts @@ -1,6 +1,5 @@ import { EARMARK_MEMO_RECOUNT_ACCOUNT } from './EARMARK_MEMO_RECOUNT_ACCOUNT.model'; import { SchATransaction, ScheduleATransactionTypes } from '../scha-transaction.model'; -import { TransactionGroupAG } from '../transaction-groups/transaction-group-ag.model'; describe('EARMARK_MEMO_RECOUNT_ACCOUNT', () => { let transactionType: EARMARK_MEMO_RECOUNT_ACCOUNT; @@ -12,7 +11,6 @@ describe('EARMARK_MEMO_RECOUNT_ACCOUNT', () => { it('should create an instance', () => { expect(transactionType).toBeTruthy(); expect(transactionType.scheduleId).toBe('A'); - expect(transactionType.transactionGroup).toBeInstanceOf(TransactionGroupAG); }); it('#factory() should return a SchATransaction', () => { diff --git a/front-end/src/app/shared/models/transaction-types/EARMARK_MEMO_RECOUNT_ACCOUNT.model.ts b/front-end/src/app/shared/models/transaction-types/EARMARK_MEMO_RECOUNT_ACCOUNT.model.ts index c683a9ffb6..43cbb3f276 100644 --- a/front-end/src/app/shared/models/transaction-types/EARMARK_MEMO_RECOUNT_ACCOUNT.model.ts +++ b/front-end/src/app/shared/models/transaction-types/EARMARK_MEMO_RECOUNT_ACCOUNT.model.ts @@ -1,21 +1,12 @@ import { schema } from 'fecfile-validate/fecfile_validate_js/dist/NATIONAL_PARTY_EARMARK_MEMOS'; -import { SchATransactionType } from '../scha-transaction-type.model'; import { SchATransaction, ScheduleATransactionTypes, ScheduleATransactionTypeLabels } from '../scha-transaction.model'; -import { TransactionGroupAG } from '../transaction-groups/transaction-group-ag.model'; import { AggregationGroups } from '../transaction.model'; -import { TemplateMapKeyType } from '../transaction-type.model'; import { LabelUtils } from 'app/shared/utils/label.utils'; +import { EARMARK_MEMO } from './common-types/EARMARK_MEMO.model'; -export class EARMARK_MEMO_RECOUNT_ACCOUNT extends SchATransactionType { - transactionGroup = new TransactionGroupAG(); - override isDependentChild = true; +export class EARMARK_MEMO_RECOUNT_ACCOUNT extends EARMARK_MEMO { title = LabelUtils.get(ScheduleATransactionTypeLabels, ScheduleATransactionTypes.EARMARK_MEMO_RECOUNT_ACCOUNT); schema = schema; - override inheritedFields = ['amount' as TemplateMapKeyType]; - - override generatePurposeDescription(): string { - return 'Total earmarked through conduit.'; - } getNewTransaction() { return SchATransaction.fromJSON({ diff --git a/front-end/src/app/shared/models/transaction-types/EARMARK_RECEIPT.model.spec.ts b/front-end/src/app/shared/models/transaction-types/EARMARK_RECEIPT.model.spec.ts index 7bb05eae53..e897d6bbad 100644 --- a/front-end/src/app/shared/models/transaction-types/EARMARK_RECEIPT.model.spec.ts +++ b/front-end/src/app/shared/models/transaction-types/EARMARK_RECEIPT.model.spec.ts @@ -1,7 +1,6 @@ import { SchATransaction, ScheduleATransactionTypes } from '../scha-transaction.model'; import { ContactTypes } from '../contact.model'; import { getTestTransactionByType } from 'app/shared/utils/unit-test.utils'; -import { TransactionGroupAG } from '../transaction-groups/transaction-group-ag.model'; describe('EARMARK_RECEIPT', () => { let transaction: SchATransaction; @@ -13,7 +12,6 @@ describe('EARMARK_RECEIPT', () => { it('should create an instance', () => { expect(transaction.transactionType).toBeTruthy(); expect(transaction.transactionType?.scheduleId).toBe('A'); - expect(transaction?.transactionType?.transactionGroup).toBeInstanceOf(TransactionGroupAG); }); it('#factory() should return a SchATransaction', () => { diff --git a/front-end/src/app/shared/models/transaction-types/EARMARK_RECEIPT.model.ts b/front-end/src/app/shared/models/transaction-types/EARMARK_RECEIPT.model.ts index 1185672f6c..622ece57de 100644 --- a/front-end/src/app/shared/models/transaction-types/EARMARK_RECEIPT.model.ts +++ b/front-end/src/app/shared/models/transaction-types/EARMARK_RECEIPT.model.ts @@ -1,23 +1,14 @@ import { LabelUtils } from 'app/shared/utils/label.utils'; import { schema } from 'fecfile-validate/fecfile_validate_js/dist/EARMARK_RECEIPT'; import { ContactTypes } from '../contact.model'; -import { SchATransactionType } from '../scha-transaction-type.model'; import { SchATransaction, ScheduleATransactionTypeLabels, ScheduleATransactionTypes } from '../scha-transaction.model'; -import { TransactionGroupAG } from '../transaction-groups/transaction-group-ag.model'; -import { - STANDARD_DOUBLE_ENTRY_CONTROLS, - TransactionNavigationControls, -} from '../transaction-navigation-controls.model'; import { AggregationGroups } from '../transaction.model'; -import { TemplateMapKeyType } from '../transaction-type.model'; +import { EARMARK } from './common-types/EARMARK.model'; -export class EARMARK_RECEIPT extends SchATransactionType { - transactionGroup = new TransactionGroupAG(); +export class EARMARK_RECEIPT extends EARMARK { title = LabelUtils.get(ScheduleATransactionTypeLabels, ScheduleATransactionTypes.EARMARK_RECEIPT); schema = schema; override dependentChildTransactionType = ScheduleATransactionTypes.EARMARK_MEMO; - override navigationControls: TransactionNavigationControls = STANDARD_DOUBLE_ENTRY_CONTROLS; - override childTriggerFields = ['organization_name', 'last_name', 'first_name'] as TemplateMapKeyType[]; override generatePurposeDescription(transaction: SchATransaction): string { if (!transaction.children) return ''; diff --git a/front-end/src/app/shared/models/transaction-types/EARMARK_RECEIPT_CONVENTION_ACCOUNT.model.spec.ts b/front-end/src/app/shared/models/transaction-types/EARMARK_RECEIPT_CONVENTION_ACCOUNT.model.spec.ts index d49bd5351d..52515df81e 100644 --- a/front-end/src/app/shared/models/transaction-types/EARMARK_RECEIPT_CONVENTION_ACCOUNT.model.spec.ts +++ b/front-end/src/app/shared/models/transaction-types/EARMARK_RECEIPT_CONVENTION_ACCOUNT.model.spec.ts @@ -1,7 +1,6 @@ import { SchATransaction, ScheduleATransactionTypes } from '../scha-transaction.model'; import { ContactTypes } from '../contact.model'; import { getTestTransactionByType } from 'app/shared/utils/unit-test.utils'; -import { TransactionGroupAG } from '../transaction-groups/transaction-group-ag.model'; describe('EARMARK_RECEIPT_CONVENTION_ACCOUNT', () => { let transaction: SchATransaction; @@ -15,7 +14,6 @@ describe('EARMARK_RECEIPT_CONVENTION_ACCOUNT', () => { it('should create an instance', () => { expect(transaction.transactionType).toBeTruthy(); expect(transaction.transactionType?.scheduleId).toBe('A'); - expect(transaction?.transactionType?.transactionGroup).toBeInstanceOf(TransactionGroupAG); }); it('#factory() should return a SchATransaction', () => { diff --git a/front-end/src/app/shared/models/transaction-types/EARMARK_RECEIPT_CONVENTION_ACCOUNT.model.ts b/front-end/src/app/shared/models/transaction-types/EARMARK_RECEIPT_CONVENTION_ACCOUNT.model.ts index 74820d22cf..a9171cf7b4 100644 --- a/front-end/src/app/shared/models/transaction-types/EARMARK_RECEIPT_CONVENTION_ACCOUNT.model.ts +++ b/front-end/src/app/shared/models/transaction-types/EARMARK_RECEIPT_CONVENTION_ACCOUNT.model.ts @@ -1,27 +1,17 @@ import { LabelUtils } from 'app/shared/utils/label.utils'; import { schema } from 'fecfile-validate/fecfile_validate_js/dist/NATIONAL_PARTY_EARMARK_RECEIPTS'; import { ContactTypes } from '../contact.model'; -import { SchATransactionType } from '../scha-transaction-type.model'; import { SchATransaction, ScheduleATransactionTypeLabels, ScheduleATransactionTypes } from '../scha-transaction.model'; -import { TransactionGroupAG } from '../transaction-groups/transaction-group-ag.model'; -import { - STANDARD_DOUBLE_ENTRY_CONTROLS, - TransactionNavigationControls, -} from '../transaction-navigation-controls.model'; import { AggregationGroups } from '../transaction.model'; -import { TemplateMapKeyType } from '../transaction-type.model'; +import { EARMARK } from './common-types/EARMARK.model'; -export class EARMARK_RECEIPT_CONVENTION_ACCOUNT extends SchATransactionType { - transactionGroup = new TransactionGroupAG(); +export class EARMARK_RECEIPT_CONVENTION_ACCOUNT extends EARMARK { title = LabelUtils.get( ScheduleATransactionTypeLabels, ScheduleATransactionTypes.EARMARK_RECEIPT_FOR_CONVENTION_ACCOUNT_CONTRIBUTION ); schema = schema; override dependentChildTransactionType = ScheduleATransactionTypes.EARMARK_MEMO_CONVENTION_ACCOUNT; - override navigationControls: TransactionNavigationControls = STANDARD_DOUBLE_ENTRY_CONTROLS; - - override childTriggerFields = ['organization_name', 'last_name', 'first_name'] as TemplateMapKeyType[]; override generatePurposeDescription(transaction: SchATransaction): string { if (!transaction.children) return ''; diff --git a/front-end/src/app/shared/models/transaction-types/EARMARK_RECEIPT_HEADQUARTERS_ACCOUNT.model.spec.ts b/front-end/src/app/shared/models/transaction-types/EARMARK_RECEIPT_HEADQUARTERS_ACCOUNT.model.spec.ts index 574130d970..f1070199f9 100644 --- a/front-end/src/app/shared/models/transaction-types/EARMARK_RECEIPT_HEADQUARTERS_ACCOUNT.model.spec.ts +++ b/front-end/src/app/shared/models/transaction-types/EARMARK_RECEIPT_HEADQUARTERS_ACCOUNT.model.spec.ts @@ -1,7 +1,6 @@ import { SchATransaction, ScheduleATransactionTypes } from '../scha-transaction.model'; import { ContactTypes } from '../contact.model'; import { getTestTransactionByType } from 'app/shared/utils/unit-test.utils'; -import { TransactionGroupAG } from '../transaction-groups/transaction-group-ag.model'; describe('EARMARK_RECEIPT_HEADQUARTERS_ACCOUNT', () => { let transaction: SchATransaction; @@ -15,7 +14,6 @@ describe('EARMARK_RECEIPT_HEADQUARTERS_ACCOUNT', () => { it('should create an instance', () => { expect(transaction.transactionType).toBeTruthy(); expect(transaction.transactionType?.scheduleId).toBe('A'); - expect(transaction?.transactionType?.transactionGroup).toBeInstanceOf(TransactionGroupAG); }); it('#factory() should return a SchATransaction', () => { diff --git a/front-end/src/app/shared/models/transaction-types/EARMARK_RECEIPT_HEADQUARTERS_ACCOUNT.model.ts b/front-end/src/app/shared/models/transaction-types/EARMARK_RECEIPT_HEADQUARTERS_ACCOUNT.model.ts index 346da1da68..609eece1d2 100644 --- a/front-end/src/app/shared/models/transaction-types/EARMARK_RECEIPT_HEADQUARTERS_ACCOUNT.model.ts +++ b/front-end/src/app/shared/models/transaction-types/EARMARK_RECEIPT_HEADQUARTERS_ACCOUNT.model.ts @@ -1,27 +1,17 @@ import { LabelUtils } from 'app/shared/utils/label.utils'; import { schema } from 'fecfile-validate/fecfile_validate_js/dist/NATIONAL_PARTY_EARMARK_RECEIPTS'; import { ContactTypes } from '../contact.model'; -import { SchATransactionType } from '../scha-transaction-type.model'; import { SchATransaction, ScheduleATransactionTypeLabels, ScheduleATransactionTypes } from '../scha-transaction.model'; -import { TransactionGroupAG } from '../transaction-groups/transaction-group-ag.model'; -import { - STANDARD_DOUBLE_ENTRY_CONTROLS, - TransactionNavigationControls, -} from '../transaction-navigation-controls.model'; import { AggregationGroups } from '../transaction.model'; -import { TemplateMapKeyType } from '../transaction-type.model'; +import { EARMARK } from './common-types/EARMARK.model'; -export class EARMARK_RECEIPT_HEADQUARTERS_ACCOUNT extends SchATransactionType { - transactionGroup = new TransactionGroupAG(); +export class EARMARK_RECEIPT_HEADQUARTERS_ACCOUNT extends EARMARK { title = LabelUtils.get( ScheduleATransactionTypeLabels, ScheduleATransactionTypes.EARMARK_RECEIPT_FOR_HEADQUARTERS_ACCOUNT_CONTRIBUTION ); schema = schema; override dependentChildTransactionType = ScheduleATransactionTypes.EARMARK_MEMO_HEADQUARTERS_ACCOUNT; - override navigationControls: TransactionNavigationControls = STANDARD_DOUBLE_ENTRY_CONTROLS; - - override childTriggerFields = ['organization_name', 'last_name', 'first_name'] as TemplateMapKeyType[]; override generatePurposeDescription(transaction: SchATransaction): string { if (!transaction.children) return ''; diff --git a/front-end/src/app/shared/models/transaction-types/EARMARK_RECEIPT_RECOUNT_ACCOUNT.model.spec.ts b/front-end/src/app/shared/models/transaction-types/EARMARK_RECEIPT_RECOUNT_ACCOUNT.model.spec.ts index f254bf1df4..b121bd352a 100644 --- a/front-end/src/app/shared/models/transaction-types/EARMARK_RECEIPT_RECOUNT_ACCOUNT.model.spec.ts +++ b/front-end/src/app/shared/models/transaction-types/EARMARK_RECEIPT_RECOUNT_ACCOUNT.model.spec.ts @@ -1,7 +1,6 @@ import { SchATransaction, ScheduleATransactionTypes } from '../scha-transaction.model'; import { ContactTypes } from '../contact.model'; import { getTestTransactionByType } from 'app/shared/utils/unit-test.utils'; -import { TransactionGroupAG } from '../transaction-groups/transaction-group-ag.model'; describe('EARMARK_RECEIPT_RECOUNT_ACCOUNT', () => { let transaction: SchATransaction; @@ -15,7 +14,6 @@ describe('EARMARK_RECEIPT_RECOUNT_ACCOUNT', () => { it('should create an instance', () => { expect(transaction.transactionType).toBeTruthy(); expect(transaction.transactionType?.scheduleId).toBe('A'); - expect(transaction?.transactionType?.transactionGroup).toBeInstanceOf(TransactionGroupAG); }); it('#factory() should return a SchATransaction', () => { diff --git a/front-end/src/app/shared/models/transaction-types/EARMARK_RECEIPT_RECOUNT_ACCOUNT.model.ts b/front-end/src/app/shared/models/transaction-types/EARMARK_RECEIPT_RECOUNT_ACCOUNT.model.ts index d64b3f9ddb..e370d4ef50 100644 --- a/front-end/src/app/shared/models/transaction-types/EARMARK_RECEIPT_RECOUNT_ACCOUNT.model.ts +++ b/front-end/src/app/shared/models/transaction-types/EARMARK_RECEIPT_RECOUNT_ACCOUNT.model.ts @@ -1,26 +1,17 @@ import { LabelUtils } from 'app/shared/utils/label.utils'; import { schema } from 'fecfile-validate/fecfile_validate_js/dist/NATIONAL_PARTY_EARMARK_RECEIPTS'; import { ContactTypes } from '../contact.model'; -import { SchATransactionType } from '../scha-transaction-type.model'; import { SchATransaction, ScheduleATransactionTypeLabels, ScheduleATransactionTypes } from '../scha-transaction.model'; -import { TransactionGroupAG } from '../transaction-groups/transaction-group-ag.model'; -import { - STANDARD_DOUBLE_ENTRY_CONTROLS, - TransactionNavigationControls, -} from '../transaction-navigation-controls.model'; import { AggregationGroups } from '../transaction.model'; -import { TemplateMapKeyType } from '../transaction-type.model'; +import { EARMARK } from './common-types/EARMARK.model'; -export class EARMARK_RECEIPT_RECOUNT_ACCOUNT extends SchATransactionType { - transactionGroup = new TransactionGroupAG(); +export class EARMARK_RECEIPT_RECOUNT_ACCOUNT extends EARMARK { title = LabelUtils.get( ScheduleATransactionTypeLabels, ScheduleATransactionTypes.EARMARK_RECEIPT_FOR_RECOUNT_ACCOUNT_CONTRIBUTION ); schema = schema; override dependentChildTransactionType = ScheduleATransactionTypes.EARMARK_MEMO_RECOUNT_ACCOUNT; - override navigationControls: TransactionNavigationControls = STANDARD_DOUBLE_ENTRY_CONTROLS; - override childTriggerFields = ['organization_name', 'last_name', 'first_name'] as TemplateMapKeyType[]; override generatePurposeDescription(transaction: SchATransaction): string { if (!transaction.children) return ''; diff --git a/front-end/src/app/shared/models/transaction-types/FEDERAL_ELECTION_ACTIVITY_100PCT_PAYMENT.model.spec.ts b/front-end/src/app/shared/models/transaction-types/FEDERAL_ELECTION_ACTIVITY_100PCT_PAYMENT.model.spec.ts index 7a209ecdb2..d55836ea25 100644 --- a/front-end/src/app/shared/models/transaction-types/FEDERAL_ELECTION_ACTIVITY_100PCT_PAYMENT.model.spec.ts +++ b/front-end/src/app/shared/models/transaction-types/FEDERAL_ELECTION_ACTIVITY_100PCT_PAYMENT.model.spec.ts @@ -1,6 +1,5 @@ import { TransactionType } from 'app/shared/models/transaction-type.model'; import { SchBTransaction, ScheduleBTransactionTypes } from '../schb-transaction.model'; -import { TransactionGroupO } from '../transaction-groups/transaction-group-o.model'; import { FEDERAL_ELECTION_ACTIVITY_100PCT_PAYMENT } from './FEDERAL_ELECTION_ACTIVITY_100PCT_PAYMENT.model'; describe('FEDERAL_ELECTION_ACTIVITY_100PCT_PAYMENT', () => { @@ -13,7 +12,6 @@ describe('FEDERAL_ELECTION_ACTIVITY_100PCT_PAYMENT', () => { it('should create an instance', () => { expect(transactionType).toBeTruthy(); expect(transactionType.scheduleId).toBe('B'); - expect(transactionType.transactionGroup).toBeInstanceOf(TransactionGroupO); }); it('#factory() should return a SchATransaction', () => { diff --git a/front-end/src/app/shared/models/transaction-types/FEDERAL_ELECTION_ACTIVITY_100PCT_PAYMENT.model.ts b/front-end/src/app/shared/models/transaction-types/FEDERAL_ELECTION_ACTIVITY_100PCT_PAYMENT.model.ts index 7617f3b510..30cb041fef 100644 --- a/front-end/src/app/shared/models/transaction-types/FEDERAL_ELECTION_ACTIVITY_100PCT_PAYMENT.model.ts +++ b/front-end/src/app/shared/models/transaction-types/FEDERAL_ELECTION_ACTIVITY_100PCT_PAYMENT.model.ts @@ -2,12 +2,16 @@ import { LabelUtils } from 'app/shared/utils/label.utils'; import { schema } from 'fecfile-validate/fecfile_validate_js/dist/DISBURSEMENTS_FEA'; import { SchBTransactionType } from '../schb-transaction-type.model'; import { SchBTransaction, ScheduleBTransactionTypeLabels, ScheduleBTransactionTypes } from '../schb-transaction.model'; -import { TransactionGroupO } from '../transaction-groups/transaction-group-o.model'; import { STANDARD_CONTROLS, TransactionNavigationControls } from '../transaction-navigation-controls.model'; import { AggregationGroups } from '../transaction.model'; +import { + INDIVIDUAL_ORGANIZATION_CANDIDATE_B_FORM_FIELDS, + ORGANIZATION_INDIVIDUAL_COMMITTEE, +} from 'app/shared/utils/transaction-type-properties'; export class FEDERAL_ELECTION_ACTIVITY_100PCT_PAYMENT extends SchBTransactionType { - transactionGroup = new TransactionGroupO(); + formFields = INDIVIDUAL_ORGANIZATION_CANDIDATE_B_FORM_FIELDS; + contactTypeOptions = ORGANIZATION_INDIVIDUAL_COMMITTEE; title = LabelUtils.get( ScheduleBTransactionTypeLabels, ScheduleBTransactionTypes.FEDERAL_ELECTION_ACTIVITY_100PCT_PAYMENT diff --git a/front-end/src/app/shared/models/transaction-types/FEDERAL_ELECTION_ACTIVITY_CREDIT_CARD_PAYMENT.model.spec.ts b/front-end/src/app/shared/models/transaction-types/FEDERAL_ELECTION_ACTIVITY_CREDIT_CARD_PAYMENT.model.spec.ts index c2ea96dcd6..54a6f90fdd 100644 --- a/front-end/src/app/shared/models/transaction-types/FEDERAL_ELECTION_ACTIVITY_CREDIT_CARD_PAYMENT.model.spec.ts +++ b/front-end/src/app/shared/models/transaction-types/FEDERAL_ELECTION_ACTIVITY_CREDIT_CARD_PAYMENT.model.spec.ts @@ -1,5 +1,4 @@ import { SchBTransaction, ScheduleBTransactionTypes } from '../schb-transaction.model'; -import { TransactionGroupR } from '../transaction-groups/transaction-group-r.model'; import { FEDERAL_ELECTION_ACTIVITY_CREDIT_CARD_PAYMENT } from './FEDERAL_ELECTION_ACTIVITY_CREDIT_CARD_PAYMENT.model'; describe('FEDERAL_ELECTION_ACTIVITY_CREDIT_CARD_PAYMENT', () => { @@ -12,7 +11,6 @@ describe('FEDERAL_ELECTION_ACTIVITY_CREDIT_CARD_PAYMENT', () => { it('should create an instance', () => { expect(transactionType).toBeTruthy(); expect(transactionType.scheduleId).toBe('B'); - expect(transactionType.transactionGroup).toBeInstanceOf(TransactionGroupR); }); it('#factory() should return a SchBTransaction', () => { diff --git a/front-end/src/app/shared/models/transaction-types/FEDERAL_ELECTION_ACTIVITY_CREDIT_CARD_PAYMENT.model.ts b/front-end/src/app/shared/models/transaction-types/FEDERAL_ELECTION_ACTIVITY_CREDIT_CARD_PAYMENT.model.ts index d658da16b4..b525d7e197 100644 --- a/front-end/src/app/shared/models/transaction-types/FEDERAL_ELECTION_ACTIVITY_CREDIT_CARD_PAYMENT.model.ts +++ b/front-end/src/app/shared/models/transaction-types/FEDERAL_ELECTION_ACTIVITY_CREDIT_CARD_PAYMENT.model.ts @@ -2,20 +2,19 @@ import { LabelUtils } from 'app/shared/utils/label.utils'; import { schema } from 'fecfile-validate/fecfile_validate_js/dist/DISBURSEMENT_PARENTS_FEA'; import { SchBTransactionType } from '../schb-transaction-type.model'; import { SchBTransaction, ScheduleBTransactionTypeLabels, ScheduleBTransactionTypes } from '../schb-transaction.model'; -import { TransactionGroupR } from '../transaction-groups/transaction-group-r.model'; import { STANDARD_PARENT_CONTROLS, TransactionNavigationControls } from '../transaction-navigation-controls.model'; import { AggregationGroups } from '../transaction.model'; +import { ORGANIZATION_NO_AGGREGATE_B_FORM_FIELDS, ORGANIZATION } from 'app/shared/utils/transaction-type-properties'; export class FEDERAL_ELECTION_ACTIVITY_CREDIT_CARD_PAYMENT extends SchBTransactionType { - transactionGroup = new TransactionGroupR(); + formFields = ORGANIZATION_NO_AGGREGATE_B_FORM_FIELDS; + contactTypeOptions = ORGANIZATION; title = LabelUtils.get( ScheduleBTransactionTypeLabels, ScheduleBTransactionTypes.FEDERAL_ELECTION_ACTIVITY_CREDIT_CARD_PAYMENT ); schema = schema; - override subTransactionConfig = [ - ScheduleBTransactionTypes.FEDERAL_ELECTION_ACTIVITY_CREDIT_CARD_PAYMENT_MEMO, - ]; + override subTransactionConfig = [ScheduleBTransactionTypes.FEDERAL_ELECTION_ACTIVITY_CREDIT_CARD_PAYMENT_MEMO]; override navigationControls: TransactionNavigationControls = STANDARD_PARENT_CONTROLS; getNewTransaction() { diff --git a/front-end/src/app/shared/models/transaction-types/FEDERAL_ELECTION_ACTIVITY_CREDIT_CARD_PAYMENT_MEMO.model.spec.ts b/front-end/src/app/shared/models/transaction-types/FEDERAL_ELECTION_ACTIVITY_CREDIT_CARD_PAYMENT_MEMO.model.spec.ts index 850dc64b7d..510f9e2821 100644 --- a/front-end/src/app/shared/models/transaction-types/FEDERAL_ELECTION_ACTIVITY_CREDIT_CARD_PAYMENT_MEMO.model.spec.ts +++ b/front-end/src/app/shared/models/transaction-types/FEDERAL_ELECTION_ACTIVITY_CREDIT_CARD_PAYMENT_MEMO.model.spec.ts @@ -1,5 +1,4 @@ import { SchBTransaction, ScheduleBTransactionTypes } from '../schb-transaction.model'; -import { TransactionGroupO } from '../transaction-groups/transaction-group-o.model'; import { FEDERAL_ELECTION_ACTIVITY_CREDIT_CARD_PAYMENT_MEMO } from './FEDERAL_ELECTION_ACTIVITY_CREDIT_CARD_PAYMENT_MEMO.model'; describe('FEDERAL_ELECTION_ACTIVITY_CREDIT_CARD_PAYMENT_MEMO', () => { @@ -12,7 +11,6 @@ describe('FEDERAL_ELECTION_ACTIVITY_CREDIT_CARD_PAYMENT_MEMO', () => { it('should create an instance', () => { expect(transactionType).toBeTruthy(); expect(transactionType.scheduleId).toBe('B'); - expect(transactionType.transactionGroup).toBeInstanceOf(TransactionGroupO); }); it('#factory() should return a SchBTransaction', () => { diff --git a/front-end/src/app/shared/models/transaction-types/FEDERAL_ELECTION_ACTIVITY_CREDIT_CARD_PAYMENT_MEMO.model.ts b/front-end/src/app/shared/models/transaction-types/FEDERAL_ELECTION_ACTIVITY_CREDIT_CARD_PAYMENT_MEMO.model.ts index 9d4a6d8f7e..442ca5f075 100644 --- a/front-end/src/app/shared/models/transaction-types/FEDERAL_ELECTION_ACTIVITY_CREDIT_CARD_PAYMENT_MEMO.model.ts +++ b/front-end/src/app/shared/models/transaction-types/FEDERAL_ELECTION_ACTIVITY_CREDIT_CARD_PAYMENT_MEMO.model.ts @@ -1,22 +1,23 @@ import { LabelUtils } from 'app/shared/utils/label.utils'; import { schema } from 'fecfile-validate/fecfile_validate_js/dist/DISBURSEMENT_MEMOS_FEA'; -import { ContactTypes } from '../contact.model'; import { SchBTransactionType } from '../schb-transaction-type.model'; import { SchBTransaction, ScheduleBTransactionTypeLabels, ScheduleBTransactionTypes } from '../schb-transaction.model'; -import { TransactionGroupO } from '../transaction-groups/transaction-group-o.model'; import { getChildNavigationControls, TransactionNavigationControls } from '../transaction-navigation-controls.model'; import { AggregationGroups } from '../transaction.model'; +import { + INDIVIDUAL_ORGANIZATION_CANDIDATE_B_FORM_FIELDS, + ORGANIZATION_INDIVIDUAL_COMMITTEE, +} from 'app/shared/utils/transaction-type-properties'; export class FEDERAL_ELECTION_ACTIVITY_CREDIT_CARD_PAYMENT_MEMO extends SchBTransactionType { - transactionGroup = new TransactionGroupO(); + formFields = INDIVIDUAL_ORGANIZATION_CANDIDATE_B_FORM_FIELDS; + contactTypeOptions = ORGANIZATION_INDIVIDUAL_COMMITTEE; title = LabelUtils.get( ScheduleBTransactionTypeLabels, ScheduleBTransactionTypes.FEDERAL_ELECTION_ACTIVITY_CREDIT_CARD_PAYMENT_MEMO ); schema = schema; - override defaultContactTypeOption = ContactTypes.ORGANIZATION; override navigationControls: TransactionNavigationControls = getChildNavigationControls(); - override hasCandidateLookup = true; getNewTransaction() { return SchBTransaction.fromJSON({ diff --git a/front-end/src/app/shared/models/transaction-types/FEDERAL_ELECTION_ACTIVITY_PAYMENT_TO_PAYROLL.model.spec.ts b/front-end/src/app/shared/models/transaction-types/FEDERAL_ELECTION_ACTIVITY_PAYMENT_TO_PAYROLL.model.spec.ts index e106a8f01b..f9c44bd01f 100644 --- a/front-end/src/app/shared/models/transaction-types/FEDERAL_ELECTION_ACTIVITY_PAYMENT_TO_PAYROLL.model.spec.ts +++ b/front-end/src/app/shared/models/transaction-types/FEDERAL_ELECTION_ACTIVITY_PAYMENT_TO_PAYROLL.model.spec.ts @@ -1,5 +1,4 @@ import { SchBTransaction, ScheduleBTransactionTypes } from '../schb-transaction.model'; -import { TransactionGroupR } from '../transaction-groups/transaction-group-r.model'; import { FEDERAL_ELECTION_ACTIVITY_PAYMENT_TO_PAYROLL } from './FEDERAL_ELECTION_ACTIVITY_PAYMENT_TO_PAYROLL.model'; describe('FEDERAL_ELECTION_ACTIVITY_PAYMENT_TO_PAYROLL', () => { @@ -12,7 +11,6 @@ describe('FEDERAL_ELECTION_ACTIVITY_PAYMENT_TO_PAYROLL', () => { it('should create an instance', () => { expect(transactionType).toBeTruthy(); expect(transactionType.scheduleId).toBe('B'); - expect(transactionType.transactionGroup).toBeInstanceOf(TransactionGroupR); }); it('#factory() should return a SchBTransaction', () => { diff --git a/front-end/src/app/shared/models/transaction-types/FEDERAL_ELECTION_ACTIVITY_PAYMENT_TO_PAYROLL.model.ts b/front-end/src/app/shared/models/transaction-types/FEDERAL_ELECTION_ACTIVITY_PAYMENT_TO_PAYROLL.model.ts index f7e0bfc0d3..2aedc1c5fb 100644 --- a/front-end/src/app/shared/models/transaction-types/FEDERAL_ELECTION_ACTIVITY_PAYMENT_TO_PAYROLL.model.ts +++ b/front-end/src/app/shared/models/transaction-types/FEDERAL_ELECTION_ACTIVITY_PAYMENT_TO_PAYROLL.model.ts @@ -2,20 +2,19 @@ import { LabelUtils } from 'app/shared/utils/label.utils'; import { schema } from 'fecfile-validate/fecfile_validate_js/dist/DISBURSEMENT_PARENTS_FEA'; import { SchBTransactionType } from '../schb-transaction-type.model'; import { SchBTransaction, ScheduleBTransactionTypeLabels, ScheduleBTransactionTypes } from '../schb-transaction.model'; -import { TransactionGroupR } from '../transaction-groups/transaction-group-r.model'; import { STANDARD_PARENT_CONTROLS, TransactionNavigationControls } from '../transaction-navigation-controls.model'; import { AggregationGroups } from '../transaction.model'; +import { COMMITTEE, ORGANIZATION_NO_AGGREGATE_B_FORM_FIELDS } from 'app/shared/utils/transaction-type-properties'; export class FEDERAL_ELECTION_ACTIVITY_PAYMENT_TO_PAYROLL extends SchBTransactionType { - transactionGroup = new TransactionGroupR(); + formFields = ORGANIZATION_NO_AGGREGATE_B_FORM_FIELDS; + contactTypeOptions = COMMITTEE; title = LabelUtils.get( ScheduleBTransactionTypeLabels, ScheduleBTransactionTypes.FEDERAL_ELECTION_ACTIVITY_PAYMENT_TO_PAYROLL ); schema = schema; - override subTransactionConfig = [ - ScheduleBTransactionTypes.FEDERAL_ELECTION_ACTIVITY_PAYMENT_TO_PAYROLL_MEMO, - ]; + override subTransactionConfig = [ScheduleBTransactionTypes.FEDERAL_ELECTION_ACTIVITY_PAYMENT_TO_PAYROLL_MEMO]; override navigationControls: TransactionNavigationControls = STANDARD_PARENT_CONTROLS; getNewTransaction() { diff --git a/front-end/src/app/shared/models/transaction-types/FEDERAL_ELECTION_ACTIVITY_PAYMENT_TO_PAYROLL_MEMO.model.spec.ts b/front-end/src/app/shared/models/transaction-types/FEDERAL_ELECTION_ACTIVITY_PAYMENT_TO_PAYROLL_MEMO.model.spec.ts index adfbc5d4b2..b003101705 100644 --- a/front-end/src/app/shared/models/transaction-types/FEDERAL_ELECTION_ACTIVITY_PAYMENT_TO_PAYROLL_MEMO.model.spec.ts +++ b/front-end/src/app/shared/models/transaction-types/FEDERAL_ELECTION_ACTIVITY_PAYMENT_TO_PAYROLL_MEMO.model.spec.ts @@ -1,5 +1,4 @@ import { SchBTransaction, ScheduleBTransactionTypes } from '../schb-transaction.model'; -import { TransactionGroupS } from '../transaction-groups/transaction-group-s.model'; import { FEDERAL_ELECTION_ACTIVITY_PAYMENT_TO_PAYROLL_MEMO } from './FEDERAL_ELECTION_ACTIVITY_PAYMENT_TO_PAYROLL_MEMO.model'; describe('FEDERAL_ELECTION_ACTIVITY_PAYMENT_TO_PAYROLL_MEMO', () => { @@ -12,7 +11,6 @@ describe('FEDERAL_ELECTION_ACTIVITY_PAYMENT_TO_PAYROLL_MEMO', () => { it('should create an instance', () => { expect(transactionType).toBeTruthy(); expect(transactionType.scheduleId).toBe('B'); - expect(transactionType.transactionGroup).toBeInstanceOf(TransactionGroupS); }); it('#factory() should return a SchBTransaction', () => { diff --git a/front-end/src/app/shared/models/transaction-types/FEDERAL_ELECTION_ACTIVITY_PAYMENT_TO_PAYROLL_MEMO.model.ts b/front-end/src/app/shared/models/transaction-types/FEDERAL_ELECTION_ACTIVITY_PAYMENT_TO_PAYROLL_MEMO.model.ts index 87e00d63b2..24940a3826 100644 --- a/front-end/src/app/shared/models/transaction-types/FEDERAL_ELECTION_ACTIVITY_PAYMENT_TO_PAYROLL_MEMO.model.ts +++ b/front-end/src/app/shared/models/transaction-types/FEDERAL_ELECTION_ACTIVITY_PAYMENT_TO_PAYROLL_MEMO.model.ts @@ -1,20 +1,22 @@ import { LabelUtils } from 'app/shared/utils/label.utils'; import { schema } from 'fecfile-validate/fecfile_validate_js/dist/DISBURSEMENT_MEMOS_FEA'; -import { ContactTypes } from '../contact.model'; import { SchBTransactionType } from '../schb-transaction-type.model'; import { SchBTransaction, ScheduleBTransactionTypeLabels, ScheduleBTransactionTypes } from '../schb-transaction.model'; -import { TransactionGroupS } from '../transaction-groups/transaction-group-s.model'; import { getChildNavigationControls, TransactionNavigationControls } from '../transaction-navigation-controls.model'; import { AggregationGroups } from '../transaction.model'; +import { + INDIVIDUAL_ORGANIZATION_ELECTION_B_FORM_FIELDS, + INDIVIDUAL_ORGANIZATION_COMMITTEE, +} from 'app/shared/utils/transaction-type-properties'; export class FEDERAL_ELECTION_ACTIVITY_PAYMENT_TO_PAYROLL_MEMO extends SchBTransactionType { - transactionGroup = new TransactionGroupS(); + formFields = INDIVIDUAL_ORGANIZATION_ELECTION_B_FORM_FIELDS; + contactTypeOptions = INDIVIDUAL_ORGANIZATION_COMMITTEE; title = LabelUtils.get( ScheduleBTransactionTypeLabels, ScheduleBTransactionTypes.FEDERAL_ELECTION_ACTIVITY_PAYMENT_TO_PAYROLL_MEMO ); schema = schema; - override defaultContactTypeOption = ContactTypes.INDIVIDUAL; override navigationControls: TransactionNavigationControls = getChildNavigationControls(); getNewTransaction() { diff --git a/front-end/src/app/shared/models/transaction-types/FEDERAL_ELECTION_ACTIVITY_STAFF_REIMBURSEMENT.model.spec.ts b/front-end/src/app/shared/models/transaction-types/FEDERAL_ELECTION_ACTIVITY_STAFF_REIMBURSEMENT.model.spec.ts index fa34153a2b..6c660a687d 100644 --- a/front-end/src/app/shared/models/transaction-types/FEDERAL_ELECTION_ACTIVITY_STAFF_REIMBURSEMENT.model.spec.ts +++ b/front-end/src/app/shared/models/transaction-types/FEDERAL_ELECTION_ACTIVITY_STAFF_REIMBURSEMENT.model.spec.ts @@ -1,5 +1,4 @@ import { SchBTransaction, ScheduleBTransactionTypes } from '../schb-transaction.model'; -import { TransactionGroupA } from '../transaction-groups/transaction-group-a.model'; import { FEDERAL_ELECTION_ACTIVITY_STAFF_REIMBURSEMENT } from './FEDERAL_ELECTION_ACTIVITY_STAFF_REIMBURSEMENT.model'; describe('FEDERAL_ELECTION_ACTIVITY_STAFF_REIMBURSEMENT', () => { @@ -12,7 +11,6 @@ describe('FEDERAL_ELECTION_ACTIVITY_STAFF_REIMBURSEMENT', () => { it('should create an instance', () => { expect(transactionType).toBeTruthy(); expect(transactionType.scheduleId).toBe('B'); - expect(transactionType.transactionGroup).toBeInstanceOf(TransactionGroupA); }); it('#factory() should return a SchBTransaction', () => { diff --git a/front-end/src/app/shared/models/transaction-types/FEDERAL_ELECTION_ACTIVITY_STAFF_REIMBURSEMENT.model.ts b/front-end/src/app/shared/models/transaction-types/FEDERAL_ELECTION_ACTIVITY_STAFF_REIMBURSEMENT.model.ts index bdfef6879d..97b95a4a89 100644 --- a/front-end/src/app/shared/models/transaction-types/FEDERAL_ELECTION_ACTIVITY_STAFF_REIMBURSEMENT.model.ts +++ b/front-end/src/app/shared/models/transaction-types/FEDERAL_ELECTION_ACTIVITY_STAFF_REIMBURSEMENT.model.ts @@ -2,20 +2,19 @@ import { LabelUtils } from 'app/shared/utils/label.utils'; import { schema } from 'fecfile-validate/fecfile_validate_js/dist/FEDERAL_ELECTION_ACTIVITY_STAFF_REIMBURSEMENT'; import { SchBTransactionType } from '../schb-transaction-type.model'; import { SchBTransaction, ScheduleBTransactionTypeLabels, ScheduleBTransactionTypes } from '../schb-transaction.model'; -import { TransactionGroupA } from '../transaction-groups/transaction-group-a.model'; import { STANDARD_PARENT_CONTROLS, TransactionNavigationControls } from '../transaction-navigation-controls.model'; import { AggregationGroups } from '../transaction.model'; +import { INDIVIDUAL_B_FORM_FIELDS, INDIVIDUAL } from 'app/shared/utils/transaction-type-properties'; export class FEDERAL_ELECTION_ACTIVITY_STAFF_REIMBURSEMENT extends SchBTransactionType { - transactionGroup = new TransactionGroupA(); + formFields = INDIVIDUAL_B_FORM_FIELDS; + contactTypeOptions = INDIVIDUAL; title = LabelUtils.get( ScheduleBTransactionTypeLabels, ScheduleBTransactionTypes.FEDERAL_ELECTION_ACTIVITY_STAFF_REIMBURSEMENT ); schema = schema; - override subTransactionConfig = [ - ScheduleBTransactionTypes.FEDERAL_ELECTION_ACTIVITY_STAFF_REIMBURSEMENT_MEMO, - ]; + override subTransactionConfig = [ScheduleBTransactionTypes.FEDERAL_ELECTION_ACTIVITY_STAFF_REIMBURSEMENT_MEMO]; override navigationControls: TransactionNavigationControls = STANDARD_PARENT_CONTROLS; getNewTransaction() { diff --git a/front-end/src/app/shared/models/transaction-types/FEDERAL_ELECTION_ACTIVITY_STAFF_REIMBURSEMENT_MEMO.model.spec.ts b/front-end/src/app/shared/models/transaction-types/FEDERAL_ELECTION_ACTIVITY_STAFF_REIMBURSEMENT_MEMO.model.spec.ts index ab19013d3c..78eb4d1ab7 100644 --- a/front-end/src/app/shared/models/transaction-types/FEDERAL_ELECTION_ACTIVITY_STAFF_REIMBURSEMENT_MEMO.model.spec.ts +++ b/front-end/src/app/shared/models/transaction-types/FEDERAL_ELECTION_ACTIVITY_STAFF_REIMBURSEMENT_MEMO.model.spec.ts @@ -1,5 +1,4 @@ import { SchBTransaction, ScheduleBTransactionTypes } from '../schb-transaction.model'; -import { TransactionGroupS } from '../transaction-groups/transaction-group-s.model'; import { FEDERAL_ELECTION_ACTIVITY_STAFF_REIMBURSEMENT_MEMO } from './FEDERAL_ELECTION_ACTIVITY_STAFF_REIMBURSEMENT_MEMO.model'; describe('FEDERAL_ELECTION_ACTIVITY_STAFF_REIMBURSEMENT_MEMO', () => { @@ -12,7 +11,6 @@ describe('FEDERAL_ELECTION_ACTIVITY_STAFF_REIMBURSEMENT_MEMO', () => { it('should create an instance', () => { expect(transactionType).toBeTruthy(); expect(transactionType.scheduleId).toBe('B'); - expect(transactionType.transactionGroup).toBeInstanceOf(TransactionGroupS); }); it('#factory() should return a SchBTransaction', () => { diff --git a/front-end/src/app/shared/models/transaction-types/FEDERAL_ELECTION_ACTIVITY_STAFF_REIMBURSEMENT_MEMO.model.ts b/front-end/src/app/shared/models/transaction-types/FEDERAL_ELECTION_ACTIVITY_STAFF_REIMBURSEMENT_MEMO.model.ts index cee5aecd6b..2d5d9fee26 100644 --- a/front-end/src/app/shared/models/transaction-types/FEDERAL_ELECTION_ACTIVITY_STAFF_REIMBURSEMENT_MEMO.model.ts +++ b/front-end/src/app/shared/models/transaction-types/FEDERAL_ELECTION_ACTIVITY_STAFF_REIMBURSEMENT_MEMO.model.ts @@ -1,20 +1,22 @@ import { LabelUtils } from 'app/shared/utils/label.utils'; import { schema } from 'fecfile-validate/fecfile_validate_js/dist/DISBURSEMENT_MEMOS_FEA'; -import { ContactTypes } from '../contact.model'; import { SchBTransactionType } from '../schb-transaction-type.model'; import { SchBTransaction, ScheduleBTransactionTypeLabels, ScheduleBTransactionTypes } from '../schb-transaction.model'; -import { TransactionGroupS } from '../transaction-groups/transaction-group-s.model'; import { getChildNavigationControls, TransactionNavigationControls } from '../transaction-navigation-controls.model'; import { AggregationGroups } from '../transaction.model'; +import { + INDIVIDUAL_ORGANIZATION_ELECTION_B_FORM_FIELDS, + ORGANIZATION_INDIVIDUAL_COMMITTEE, +} from 'app/shared/utils/transaction-type-properties'; export class FEDERAL_ELECTION_ACTIVITY_STAFF_REIMBURSEMENT_MEMO extends SchBTransactionType { - transactionGroup = new TransactionGroupS(); + formFields = INDIVIDUAL_ORGANIZATION_ELECTION_B_FORM_FIELDS; + contactTypeOptions = ORGANIZATION_INDIVIDUAL_COMMITTEE; title = LabelUtils.get( ScheduleBTransactionTypeLabels, ScheduleBTransactionTypes.FEDERAL_ELECTION_ACTIVITY_STAFF_REIMBURSEMENT_MEMO ); schema = schema; - override defaultContactTypeOption = ContactTypes.ORGANIZATION; override navigationControls: TransactionNavigationControls = getChildNavigationControls(); getNewTransaction() { diff --git a/front-end/src/app/shared/models/transaction-types/FEDERAL_ELECTION_ACTIVITY_VOID.model.spec.ts b/front-end/src/app/shared/models/transaction-types/FEDERAL_ELECTION_ACTIVITY_VOID.model.spec.ts index ead3728b2e..4d5be1d306 100644 --- a/front-end/src/app/shared/models/transaction-types/FEDERAL_ELECTION_ACTIVITY_VOID.model.spec.ts +++ b/front-end/src/app/shared/models/transaction-types/FEDERAL_ELECTION_ACTIVITY_VOID.model.spec.ts @@ -1,6 +1,5 @@ import { TransactionType } from 'app/shared/models/transaction-type.model'; import { SchBTransaction, ScheduleBTransactionTypes } from '../schb-transaction.model'; -import { TransactionGroupO } from '../transaction-groups/transaction-group-o.model'; import { FEDERAL_ELECTION_ACTIVITY_VOID } from './FEDERAL_ELECTION_ACTIVITY_VOID.model'; describe('FEDERAL_ELECTION_ACTIVITY_VOID', () => { @@ -13,7 +12,6 @@ describe('FEDERAL_ELECTION_ACTIVITY_VOID', () => { it('should create an instance', () => { expect(transactionType).toBeTruthy(); expect(transactionType.scheduleId).toBe('B'); - expect(transactionType.transactionGroup).toBeInstanceOf(TransactionGroupO); }); it('#factory() should return a SchATransaction', () => { diff --git a/front-end/src/app/shared/models/transaction-types/FEDERAL_ELECTION_ACTIVITY_VOID.model.ts b/front-end/src/app/shared/models/transaction-types/FEDERAL_ELECTION_ACTIVITY_VOID.model.ts index aea1b1db36..8d20139450 100644 --- a/front-end/src/app/shared/models/transaction-types/FEDERAL_ELECTION_ACTIVITY_VOID.model.ts +++ b/front-end/src/app/shared/models/transaction-types/FEDERAL_ELECTION_ACTIVITY_VOID.model.ts @@ -2,13 +2,17 @@ import { LabelUtils } from 'app/shared/utils/label.utils'; import { schema } from 'fecfile-validate/fecfile_validate_js/dist/DISBURSEMENTS_FEA'; import { SchBTransactionType } from '../schb-transaction-type.model'; import { SchBTransaction, ScheduleBTransactionTypeLabels, ScheduleBTransactionTypes } from '../schb-transaction.model'; -import { TransactionGroupO } from '../transaction-groups/transaction-group-o.model'; import { STANDARD_CONTROLS, TransactionNavigationControls } from '../transaction-navigation-controls.model'; import { PurposeDescriptionLabelSuffix } from '../transaction-type.model'; import { AggregationGroups } from '../transaction.model'; +import { + INDIVIDUAL_ORGANIZATION_CANDIDATE_B_FORM_FIELDS, + ORGANIZATION_INDIVIDUAL_COMMITTEE, +} from 'app/shared/utils/transaction-type-properties'; export class FEDERAL_ELECTION_ACTIVITY_VOID extends SchBTransactionType { - transactionGroup = new TransactionGroupO(); + formFields = INDIVIDUAL_ORGANIZATION_CANDIDATE_B_FORM_FIELDS; + contactTypeOptions = ORGANIZATION_INDIVIDUAL_COMMITTEE; title = LabelUtils.get(ScheduleBTransactionTypeLabels, ScheduleBTransactionTypes.FEDERAL_ELECTION_ACTIVITY_VOID); schema = schema; override negativeAmountValueOnly = true; diff --git a/front-end/src/app/shared/models/transaction-types/INDIVIDUAL_JF_TRANSFER_MEMO.model.spec.ts b/front-end/src/app/shared/models/transaction-types/INDIVIDUAL_JF_TRANSFER_MEMO.model.spec.ts index 5a6a9b12cc..25af22221e 100644 --- a/front-end/src/app/shared/models/transaction-types/INDIVIDUAL_JF_TRANSFER_MEMO.model.spec.ts +++ b/front-end/src/app/shared/models/transaction-types/INDIVIDUAL_JF_TRANSFER_MEMO.model.spec.ts @@ -1,6 +1,5 @@ import { getTestTransactionByType } from 'app/shared/utils/unit-test.utils'; import { SchATransaction, ScheduleATransactionTypes } from '../scha-transaction.model'; -import { TransactionGroupA } from '../transaction-groups/transaction-group-a.model'; describe('INDIVIDUAL_JF_TRANSFER_MEMO', () => { let transaction: SchATransaction; @@ -16,7 +15,6 @@ describe('INDIVIDUAL_JF_TRANSFER_MEMO', () => { it('should create an instance', () => { expect(transaction.transactionType).toBeTruthy(); expect(transaction.transactionType?.scheduleId).toBe('A'); - expect(transaction?.transactionType?.transactionGroup).toBeInstanceOf(TransactionGroupA); }); it('#factory() should return a SchATransaction', () => { diff --git a/front-end/src/app/shared/models/transaction-types/INDIVIDUAL_JF_TRANSFER_MEMO.model.ts b/front-end/src/app/shared/models/transaction-types/INDIVIDUAL_JF_TRANSFER_MEMO.model.ts index 335103cae8..1223b3e322 100644 --- a/front-end/src/app/shared/models/transaction-types/INDIVIDUAL_JF_TRANSFER_MEMO.model.ts +++ b/front-end/src/app/shared/models/transaction-types/INDIVIDUAL_JF_TRANSFER_MEMO.model.ts @@ -2,12 +2,13 @@ import { LabelUtils } from 'app/shared/utils/label.utils'; import { schema } from 'fecfile-validate/fecfile_validate_js/dist/INDIVIDUAL_JF_TRANSFER_MEMO'; import { SchATransactionType } from '../scha-transaction-type.model'; import { SchATransaction, ScheduleATransactionTypeLabels, ScheduleATransactionTypes } from '../scha-transaction.model'; -import { TransactionGroupA } from '../transaction-groups/transaction-group-a.model'; import { getChildNavigationControls, TransactionNavigationControls } from '../transaction-navigation-controls.model'; import { AggregationGroups } from '../transaction.model'; +import { INDIVIDUAL_FORM_FIELDS, INDIVIDUAL } from 'app/shared/utils/transaction-type-properties'; export class INDIVIDUAL_JF_TRANSFER_MEMO extends SchATransactionType { - transactionGroup = new TransactionGroupA(); + formFields = INDIVIDUAL_FORM_FIELDS; + contactTypeOptions = INDIVIDUAL; title = LabelUtils.get(ScheduleATransactionTypeLabels, ScheduleATransactionTypes.INDIVIDUAL_JF_TRANSFER_MEMO); schema = schema; override shortName = 'Individual'; diff --git a/front-end/src/app/shared/models/transaction-types/INDIVIDUAL_NATIONAL_PARTY_CONVENTION_ACCOUNT.model.spec.ts b/front-end/src/app/shared/models/transaction-types/INDIVIDUAL_NATIONAL_PARTY_CONVENTION_ACCOUNT.model.spec.ts index af302cfdd0..8bc9582022 100644 --- a/front-end/src/app/shared/models/transaction-types/INDIVIDUAL_NATIONAL_PARTY_CONVENTION_ACCOUNT.model.spec.ts +++ b/front-end/src/app/shared/models/transaction-types/INDIVIDUAL_NATIONAL_PARTY_CONVENTION_ACCOUNT.model.spec.ts @@ -1,6 +1,5 @@ import { INDIVIDUAL_NATIONAL_PARTY_CONVENTION_ACCOUNT } from './INDIVIDUAL_NATIONAL_PARTY_CONVENTION_ACCOUNT.model'; import { SchATransaction, ScheduleATransactionTypes } from '../scha-transaction.model'; -import { TransactionGroupA } from '../transaction-groups/transaction-group-a.model'; describe('INDIVIDUAL_NATIONAL_PARTY_CONVENTION_ACCOUNT', () => { let transactionType: INDIVIDUAL_NATIONAL_PARTY_CONVENTION_ACCOUNT; @@ -12,7 +11,6 @@ describe('INDIVIDUAL_NATIONAL_PARTY_CONVENTION_ACCOUNT', () => { it('should create an instance', () => { expect(transactionType).toBeTruthy(); expect(transactionType.scheduleId).toBe('A'); - expect(transactionType.transactionGroup).toBeInstanceOf(TransactionGroupA); }); it('#factory() should return a SchATransaction', () => { diff --git a/front-end/src/app/shared/models/transaction-types/INDIVIDUAL_NATIONAL_PARTY_CONVENTION_ACCOUNT.model.ts b/front-end/src/app/shared/models/transaction-types/INDIVIDUAL_NATIONAL_PARTY_CONVENTION_ACCOUNT.model.ts index 0d63e8cc74..323ad610cf 100644 --- a/front-end/src/app/shared/models/transaction-types/INDIVIDUAL_NATIONAL_PARTY_CONVENTION_ACCOUNT.model.ts +++ b/front-end/src/app/shared/models/transaction-types/INDIVIDUAL_NATIONAL_PARTY_CONVENTION_ACCOUNT.model.ts @@ -2,12 +2,13 @@ import { LabelUtils } from 'app/shared/utils/label.utils'; import { schema } from 'fecfile-validate/fecfile_validate_js/dist/INDIVIDUAL_NATIONAL_PARTY_CONVENTION_ACCOUNT'; import { SchATransactionType } from '../scha-transaction-type.model'; import { SchATransaction, ScheduleATransactionTypeLabels, ScheduleATransactionTypes } from '../scha-transaction.model'; -import { TransactionGroupA } from '../transaction-groups/transaction-group-a.model'; import { STANDARD_CONTROLS, TransactionNavigationControls } from '../transaction-navigation-controls.model'; import { AggregationGroups } from '../transaction.model'; +import { INDIVIDUAL_FORM_FIELDS, INDIVIDUAL } from 'app/shared/utils/transaction-type-properties'; export class INDIVIDUAL_NATIONAL_PARTY_CONVENTION_ACCOUNT extends SchATransactionType { - transactionGroup = new TransactionGroupA(); + formFields = INDIVIDUAL_FORM_FIELDS; + contactTypeOptions = INDIVIDUAL; title = LabelUtils.get( ScheduleATransactionTypeLabels, ScheduleATransactionTypes.INDIVIDUAL_NATIONAL_PARTY_CONVENTION_ACCOUNT diff --git a/front-end/src/app/shared/models/transaction-types/INDIVIDUAL_NATIONAL_PARTY_CONVENTION_JF_TRANSFER_MEMO.model.spec.ts b/front-end/src/app/shared/models/transaction-types/INDIVIDUAL_NATIONAL_PARTY_CONVENTION_JF_TRANSFER_MEMO.model.spec.ts index e00dd90f47..39d99d573f 100644 --- a/front-end/src/app/shared/models/transaction-types/INDIVIDUAL_NATIONAL_PARTY_CONVENTION_JF_TRANSFER_MEMO.model.spec.ts +++ b/front-end/src/app/shared/models/transaction-types/INDIVIDUAL_NATIONAL_PARTY_CONVENTION_JF_TRANSFER_MEMO.model.spec.ts @@ -1,6 +1,5 @@ import { getTestTransactionByType } from 'app/shared/utils/unit-test.utils'; import { SchATransaction, ScheduleATransactionTypes } from '../scha-transaction.model'; -import { TransactionGroupA } from '../transaction-groups/transaction-group-a.model'; describe('INDIVIDUAL_NATIONAL_PARTY_CONVENTION_JF_TRANSFER_MEMO', () => { let transaction: SchATransaction; @@ -15,7 +14,6 @@ describe('INDIVIDUAL_NATIONAL_PARTY_CONVENTION_JF_TRANSFER_MEMO', () => { it('should create an instance', () => { expect(transaction.transactionType).toBeTruthy(); expect(transaction.transactionType?.scheduleId).toBe('A'); - expect(transaction?.transactionType?.transactionGroup).toBeInstanceOf(TransactionGroupA); }); it('#factory() should return a SchATransaction', () => { diff --git a/front-end/src/app/shared/models/transaction-types/INDIVIDUAL_NATIONAL_PARTY_CONVENTION_JF_TRANSFER_MEMO.model.ts b/front-end/src/app/shared/models/transaction-types/INDIVIDUAL_NATIONAL_PARTY_CONVENTION_JF_TRANSFER_MEMO.model.ts index 11480c152f..7d11728018 100644 --- a/front-end/src/app/shared/models/transaction-types/INDIVIDUAL_NATIONAL_PARTY_CONVENTION_JF_TRANSFER_MEMO.model.ts +++ b/front-end/src/app/shared/models/transaction-types/INDIVIDUAL_NATIONAL_PARTY_CONVENTION_JF_TRANSFER_MEMO.model.ts @@ -2,12 +2,13 @@ import { LabelUtils } from 'app/shared/utils/label.utils'; import { schema } from 'fecfile-validate/fecfile_validate_js/dist/INDIVIDUAL_NATIONAL_PARTY_CONVENTION_JF_TRANSFER_MEMO'; import { SchATransactionType } from '../scha-transaction-type.model'; import { SchATransaction, ScheduleATransactionTypeLabels, ScheduleATransactionTypes } from '../scha-transaction.model'; -import { TransactionGroupA } from '../transaction-groups/transaction-group-a.model'; import { getChildNavigationControls, TransactionNavigationControls } from '../transaction-navigation-controls.model'; import { AggregationGroups } from '../transaction.model'; +import { INDIVIDUAL_FORM_FIELDS, INDIVIDUAL } from 'app/shared/utils/transaction-type-properties'; export class INDIVIDUAL_NATIONAL_PARTY_CONVENTION_JF_TRANSFER_MEMO extends SchATransactionType { - transactionGroup = new TransactionGroupA(); + formFields = INDIVIDUAL_FORM_FIELDS; + contactTypeOptions = INDIVIDUAL; title = LabelUtils.get( ScheduleATransactionTypeLabels, ScheduleATransactionTypes.INDIVIDUAL_NATIONAL_PARTY_CONVENTION_JF_TRANSFER_MEMO diff --git a/front-end/src/app/shared/models/transaction-types/INDIVIDUAL_NATIONAL_PARTY_HEADQUARTERS_ACCOUNT.model.spec.ts b/front-end/src/app/shared/models/transaction-types/INDIVIDUAL_NATIONAL_PARTY_HEADQUARTERS_ACCOUNT.model.spec.ts index 3725b57d53..4f163942c8 100644 --- a/front-end/src/app/shared/models/transaction-types/INDIVIDUAL_NATIONAL_PARTY_HEADQUARTERS_ACCOUNT.model.spec.ts +++ b/front-end/src/app/shared/models/transaction-types/INDIVIDUAL_NATIONAL_PARTY_HEADQUARTERS_ACCOUNT.model.spec.ts @@ -1,6 +1,5 @@ import { INDIVIDUAL_NATIONAL_PARTY_HEADQUARTERS_ACCOUNT } from './INDIVIDUAL_NATIONAL_PARTY_HEADQUARTERS_ACCOUNT.model'; import { SchATransaction, ScheduleATransactionTypes } from '../scha-transaction.model'; -import { TransactionGroupA } from '../transaction-groups/transaction-group-a.model'; describe('INDIVIDUAL_NATIONAL_PARTY_HEADQUARTERS_BUILDINGS_ACCOUNT', () => { let transactionType: INDIVIDUAL_NATIONAL_PARTY_HEADQUARTERS_ACCOUNT; @@ -12,7 +11,6 @@ describe('INDIVIDUAL_NATIONAL_PARTY_HEADQUARTERS_BUILDINGS_ACCOUNT', () => { it('should create an instance', () => { expect(transactionType).toBeTruthy(); expect(transactionType.scheduleId).toBe('A'); - expect(transactionType.transactionGroup).toBeInstanceOf(TransactionGroupA); }); it('#factory() should return a SchATransaction', () => { diff --git a/front-end/src/app/shared/models/transaction-types/INDIVIDUAL_NATIONAL_PARTY_HEADQUARTERS_ACCOUNT.model.ts b/front-end/src/app/shared/models/transaction-types/INDIVIDUAL_NATIONAL_PARTY_HEADQUARTERS_ACCOUNT.model.ts index 6584b22379..ca13944a59 100644 --- a/front-end/src/app/shared/models/transaction-types/INDIVIDUAL_NATIONAL_PARTY_HEADQUARTERS_ACCOUNT.model.ts +++ b/front-end/src/app/shared/models/transaction-types/INDIVIDUAL_NATIONAL_PARTY_HEADQUARTERS_ACCOUNT.model.ts @@ -2,12 +2,13 @@ import { LabelUtils } from 'app/shared/utils/label.utils'; import { schema } from 'fecfile-validate/fecfile_validate_js/dist/INDIVIDUAL_NATIONAL_PARTY_HEADQUARTERS_ACCOUNT'; import { SchATransactionType } from '../scha-transaction-type.model'; import { SchATransaction, ScheduleATransactionTypeLabels, ScheduleATransactionTypes } from '../scha-transaction.model'; -import { TransactionGroupA } from '../transaction-groups/transaction-group-a.model'; import { STANDARD_CONTROLS, TransactionNavigationControls } from '../transaction-navigation-controls.model'; import { AggregationGroups } from '../transaction.model'; +import { INDIVIDUAL_FORM_FIELDS, INDIVIDUAL } from 'app/shared/utils/transaction-type-properties'; export class INDIVIDUAL_NATIONAL_PARTY_HEADQUARTERS_ACCOUNT extends SchATransactionType { - transactionGroup = new TransactionGroupA(); + formFields = INDIVIDUAL_FORM_FIELDS; + contactTypeOptions = INDIVIDUAL; title = LabelUtils.get( ScheduleATransactionTypeLabels, ScheduleATransactionTypes.INDIVIDUAL_NATIONAL_PARTY_HEADQUARTERS_ACCOUNT diff --git a/front-end/src/app/shared/models/transaction-types/INDIVIDUAL_NATIONAL_PARTY_HEADQUARTERS_JF_TRANSFER_MEMO.model.spec.ts b/front-end/src/app/shared/models/transaction-types/INDIVIDUAL_NATIONAL_PARTY_HEADQUARTERS_JF_TRANSFER_MEMO.model.spec.ts index 5fc623cf7f..347202d588 100644 --- a/front-end/src/app/shared/models/transaction-types/INDIVIDUAL_NATIONAL_PARTY_HEADQUARTERS_JF_TRANSFER_MEMO.model.spec.ts +++ b/front-end/src/app/shared/models/transaction-types/INDIVIDUAL_NATIONAL_PARTY_HEADQUARTERS_JF_TRANSFER_MEMO.model.spec.ts @@ -1,6 +1,5 @@ import { SchATransaction, ScheduleATransactionTypes } from '../scha-transaction.model'; import { getTestTransactionByType } from 'app/shared/utils/unit-test.utils'; -import { TransactionGroupA } from '../transaction-groups/transaction-group-a.model'; describe('INDIVIDUAL_NATIONAL_PARTY_HEADQUARTERS_JF_TRANSFER_MEMO', () => { let transaction: SchATransaction; @@ -16,7 +15,6 @@ describe('INDIVIDUAL_NATIONAL_PARTY_HEADQUARTERS_JF_TRANSFER_MEMO', () => { it('should create an instance', () => { expect(transaction.transactionType).toBeTruthy(); expect(transaction.transactionType?.scheduleId).toBe('A'); - expect(transaction?.transactionType?.transactionGroup).toBeInstanceOf(TransactionGroupA); }); it('#factory() should return a SchATransaction', () => { diff --git a/front-end/src/app/shared/models/transaction-types/INDIVIDUAL_NATIONAL_PARTY_HEADQUARTERS_JF_TRANSFER_MEMO.model.ts b/front-end/src/app/shared/models/transaction-types/INDIVIDUAL_NATIONAL_PARTY_HEADQUARTERS_JF_TRANSFER_MEMO.model.ts index 08db4eb094..f99d494bc6 100644 --- a/front-end/src/app/shared/models/transaction-types/INDIVIDUAL_NATIONAL_PARTY_HEADQUARTERS_JF_TRANSFER_MEMO.model.ts +++ b/front-end/src/app/shared/models/transaction-types/INDIVIDUAL_NATIONAL_PARTY_HEADQUARTERS_JF_TRANSFER_MEMO.model.ts @@ -2,12 +2,13 @@ import { LabelUtils } from 'app/shared/utils/label.utils'; import { schema } from 'fecfile-validate/fecfile_validate_js/dist/INDIVIDUAL_NATIONAL_PARTY_HEADQUARTERS_JF_TRANSFER_MEMO'; import { SchATransactionType } from '../scha-transaction-type.model'; import { SchATransaction, ScheduleATransactionTypeLabels, ScheduleATransactionTypes } from '../scha-transaction.model'; -import { TransactionGroupA } from '../transaction-groups/transaction-group-a.model'; import { getChildNavigationControls, TransactionNavigationControls } from '../transaction-navigation-controls.model'; import { AggregationGroups } from '../transaction.model'; +import { INDIVIDUAL_FORM_FIELDS, INDIVIDUAL } from 'app/shared/utils/transaction-type-properties'; export class INDIVIDUAL_NATIONAL_PARTY_HEADQUARTERS_JF_TRANSFER_MEMO extends SchATransactionType { - transactionGroup = new TransactionGroupA(); + formFields = INDIVIDUAL_FORM_FIELDS; + contactTypeOptions = INDIVIDUAL; title = LabelUtils.get( ScheduleATransactionTypeLabels, ScheduleATransactionTypes.INDIVIDUAL_NATIONAL_PARTY_HEADQUARTERS_JF_TRANSFER_MEMO diff --git a/front-end/src/app/shared/models/transaction-types/INDIVIDUAL_NATIONAL_PARTY_RECOUNT_ACCOUNT.model.spec.ts b/front-end/src/app/shared/models/transaction-types/INDIVIDUAL_NATIONAL_PARTY_RECOUNT_ACCOUNT.model.spec.ts index 47e69ccea3..79c0c04be9 100644 --- a/front-end/src/app/shared/models/transaction-types/INDIVIDUAL_NATIONAL_PARTY_RECOUNT_ACCOUNT.model.spec.ts +++ b/front-end/src/app/shared/models/transaction-types/INDIVIDUAL_NATIONAL_PARTY_RECOUNT_ACCOUNT.model.spec.ts @@ -1,6 +1,5 @@ import { INDIVIDUAL_NATIONAL_PARTY_RECOUNT_ACCOUNT } from './INDIVIDUAL_NATIONAL_PARTY_RECOUNT_ACCOUNT.model'; import { SchATransaction, ScheduleATransactionTypes } from '../scha-transaction.model'; -import { TransactionGroupA } from '../transaction-groups/transaction-group-a.model'; describe('INDIVIDUAL_NATIONAL_PARTY_RECOUNT_ACCOUNT', () => { let transactionType: INDIVIDUAL_NATIONAL_PARTY_RECOUNT_ACCOUNT; @@ -12,7 +11,6 @@ describe('INDIVIDUAL_NATIONAL_PARTY_RECOUNT_ACCOUNT', () => { it('should create an instance', () => { expect(transactionType).toBeTruthy(); expect(transactionType.scheduleId).toBe('A'); - expect(transactionType.transactionGroup).toBeInstanceOf(TransactionGroupA); }); it('#factory() should return a SchATransaction', () => { diff --git a/front-end/src/app/shared/models/transaction-types/INDIVIDUAL_NATIONAL_PARTY_RECOUNT_ACCOUNT.model.ts b/front-end/src/app/shared/models/transaction-types/INDIVIDUAL_NATIONAL_PARTY_RECOUNT_ACCOUNT.model.ts index dca568f9fc..3fe42650fb 100644 --- a/front-end/src/app/shared/models/transaction-types/INDIVIDUAL_NATIONAL_PARTY_RECOUNT_ACCOUNT.model.ts +++ b/front-end/src/app/shared/models/transaction-types/INDIVIDUAL_NATIONAL_PARTY_RECOUNT_ACCOUNT.model.ts @@ -2,12 +2,13 @@ import { LabelUtils } from 'app/shared/utils/label.utils'; import { schema } from 'fecfile-validate/fecfile_validate_js/dist/INDIVIDUAL_NATIONAL_PARTY_RECOUNT_ACCOUNT'; import { SchATransactionType } from '../scha-transaction-type.model'; import { SchATransaction, ScheduleATransactionTypeLabels, ScheduleATransactionTypes } from '../scha-transaction.model'; -import { TransactionGroupA } from '../transaction-groups/transaction-group-a.model'; import { STANDARD_CONTROLS, TransactionNavigationControls } from '../transaction-navigation-controls.model'; import { AggregationGroups } from '../transaction.model'; +import { INDIVIDUAL_FORM_FIELDS, INDIVIDUAL } from 'app/shared/utils/transaction-type-properties'; export class INDIVIDUAL_NATIONAL_PARTY_RECOUNT_ACCOUNT extends SchATransactionType { - transactionGroup = new TransactionGroupA(); + formFields = INDIVIDUAL_FORM_FIELDS; + contactTypeOptions = INDIVIDUAL; title = LabelUtils.get( ScheduleATransactionTypeLabels, ScheduleATransactionTypes.INDIVIDUAL_NATIONAL_PARTY_RECOUNT_ACCOUNT diff --git a/front-end/src/app/shared/models/transaction-types/INDIVIDUAL_NATIONAL_PARTY_RECOUNT_JF_TRANSFER_MEMO.model.spec.ts b/front-end/src/app/shared/models/transaction-types/INDIVIDUAL_NATIONAL_PARTY_RECOUNT_JF_TRANSFER_MEMO.model.spec.ts index 8611661dce..e0035d5ed2 100644 --- a/front-end/src/app/shared/models/transaction-types/INDIVIDUAL_NATIONAL_PARTY_RECOUNT_JF_TRANSFER_MEMO.model.spec.ts +++ b/front-end/src/app/shared/models/transaction-types/INDIVIDUAL_NATIONAL_PARTY_RECOUNT_JF_TRANSFER_MEMO.model.spec.ts @@ -1,6 +1,5 @@ import { getTestTransactionByType } from 'app/shared/utils/unit-test.utils'; import { SchATransaction, ScheduleATransactionTypes } from '../scha-transaction.model'; -import { TransactionGroupA } from '../transaction-groups/transaction-group-a.model'; describe('INDIVIDUAL_NATIONAL_PARTY_RECOUNT_JF_TRANSFER_MEMO', () => { let transaction: SchATransaction; @@ -14,7 +13,6 @@ describe('INDIVIDUAL_NATIONAL_PARTY_RECOUNT_JF_TRANSFER_MEMO', () => { it('should create an instance', () => { expect(transaction.transactionType).toBeTruthy(); expect(transaction.transactionType?.scheduleId).toBe('A'); - expect(transaction?.transactionType?.transactionGroup).toBeInstanceOf(TransactionGroupA); }); it('#factory() should return a SchATransaction', () => { diff --git a/front-end/src/app/shared/models/transaction-types/INDIVIDUAL_NATIONAL_PARTY_RECOUNT_JF_TRANSFER_MEMO.model.ts b/front-end/src/app/shared/models/transaction-types/INDIVIDUAL_NATIONAL_PARTY_RECOUNT_JF_TRANSFER_MEMO.model.ts index 9f9e75a35b..c0f9b9b4e3 100644 --- a/front-end/src/app/shared/models/transaction-types/INDIVIDUAL_NATIONAL_PARTY_RECOUNT_JF_TRANSFER_MEMO.model.ts +++ b/front-end/src/app/shared/models/transaction-types/INDIVIDUAL_NATIONAL_PARTY_RECOUNT_JF_TRANSFER_MEMO.model.ts @@ -2,12 +2,13 @@ import { LabelUtils } from 'app/shared/utils/label.utils'; import { schema } from 'fecfile-validate/fecfile_validate_js/dist/INDIVIDUAL_NATIONAL_PARTY_RECOUNT_JF_TRANSFER_MEMO'; import { SchATransactionType } from '../scha-transaction-type.model'; import { SchATransaction, ScheduleATransactionTypeLabels, ScheduleATransactionTypes } from '../scha-transaction.model'; -import { TransactionGroupA } from '../transaction-groups/transaction-group-a.model'; import { getChildNavigationControls, TransactionNavigationControls } from '../transaction-navigation-controls.model'; import { AggregationGroups } from '../transaction.model'; +import { INDIVIDUAL_FORM_FIELDS, INDIVIDUAL } from 'app/shared/utils/transaction-type-properties'; export class INDIVIDUAL_NATIONAL_PARTY_RECOUNT_JF_TRANSFER_MEMO extends SchATransactionType { - transactionGroup = new TransactionGroupA(); + formFields = INDIVIDUAL_FORM_FIELDS; + contactTypeOptions = INDIVIDUAL; title = LabelUtils.get( ScheduleATransactionTypeLabels, ScheduleATransactionTypes.INDIVIDUAL_NATIONAL_PARTY_RECOUNT_JF_TRANSFER_MEMO diff --git a/front-end/src/app/shared/models/transaction-types/INDIVIDUAL_RECEIPT.model.spec.ts b/front-end/src/app/shared/models/transaction-types/INDIVIDUAL_RECEIPT.model.spec.ts index 62336d01bf..8c215ca2ec 100644 --- a/front-end/src/app/shared/models/transaction-types/INDIVIDUAL_RECEIPT.model.spec.ts +++ b/front-end/src/app/shared/models/transaction-types/INDIVIDUAL_RECEIPT.model.spec.ts @@ -1,7 +1,6 @@ import { INDIVIDUAL_RECEIPT } from './INDIVIDUAL_RECEIPT.model'; import { SchATransaction, ScheduleATransactionTypes } from '../scha-transaction.model'; import { TransactionType } from 'app/shared/models/transaction-type.model'; -import { TransactionGroupA } from '../transaction-groups/transaction-group-a.model'; describe('INDIVIDUAL_RECEIPT', () => { let transactionType: INDIVIDUAL_RECEIPT; @@ -13,7 +12,6 @@ describe('INDIVIDUAL_RECEIPT', () => { it('should create an instance', () => { expect(transactionType).toBeTruthy(); expect(transactionType.scheduleId).toBe('A'); - expect(transactionType.transactionGroup).toBeInstanceOf(TransactionGroupA); }); it('#factory() should return a SchATransaction', () => { diff --git a/front-end/src/app/shared/models/transaction-types/INDIVIDUAL_RECEIPT.model.ts b/front-end/src/app/shared/models/transaction-types/INDIVIDUAL_RECEIPT.model.ts index aa49b37d42..a7807136c7 100644 --- a/front-end/src/app/shared/models/transaction-types/INDIVIDUAL_RECEIPT.model.ts +++ b/front-end/src/app/shared/models/transaction-types/INDIVIDUAL_RECEIPT.model.ts @@ -2,12 +2,13 @@ import { LabelUtils } from 'app/shared/utils/label.utils'; import { schema } from 'fecfile-validate/fecfile_validate_js/dist/INDIVIDUAL_RECEIPT'; import { SchATransactionType } from '../scha-transaction-type.model'; import { SchATransaction, ScheduleATransactionTypeLabels, ScheduleATransactionTypes } from '../scha-transaction.model'; -import { TransactionGroupA } from '../transaction-groups/transaction-group-a.model'; import { STANDARD_CONTROLS, TransactionNavigationControls } from '../transaction-navigation-controls.model'; import { AggregationGroups } from '../transaction.model'; +import { INDIVIDUAL_FORM_FIELDS, INDIVIDUAL } from 'app/shared/utils/transaction-type-properties'; export class INDIVIDUAL_RECEIPT extends SchATransactionType { - transactionGroup = new TransactionGroupA(); + formFields = INDIVIDUAL_FORM_FIELDS; + contactTypeOptions = INDIVIDUAL; title = LabelUtils.get(ScheduleATransactionTypeLabels, ScheduleATransactionTypes.INDIVIDUAL_RECEIPT); schema = schema; override navigationControls: TransactionNavigationControls = STANDARD_CONTROLS; diff --git a/front-end/src/app/shared/models/transaction-types/INDIVIDUAL_RECEIPT_NON_CONTRIBUTION_ACCOUNT.model.spec.ts b/front-end/src/app/shared/models/transaction-types/INDIVIDUAL_RECEIPT_NON_CONTRIBUTION_ACCOUNT.model.spec.ts index ed900eb2aa..cf81e85b10 100644 --- a/front-end/src/app/shared/models/transaction-types/INDIVIDUAL_RECEIPT_NON_CONTRIBUTION_ACCOUNT.model.spec.ts +++ b/front-end/src/app/shared/models/transaction-types/INDIVIDUAL_RECEIPT_NON_CONTRIBUTION_ACCOUNT.model.spec.ts @@ -1,6 +1,5 @@ import { INDIVIDUAL_RECEIPT_NON_CONTRIBUTION_ACCOUNT } from './INDIVIDUAL_RECEIPT_NON_CONTRIBUTION_ACCOUNT.model'; import { SchATransaction, ScheduleATransactionTypes } from '../scha-transaction.model'; -import { TransactionGroupA } from '../transaction-groups/transaction-group-a.model'; describe('INDIVIDUAL_RECEIPT_NON_CONTRIBUTION_ACCOUNT', () => { let transactionType: INDIVIDUAL_RECEIPT_NON_CONTRIBUTION_ACCOUNT; @@ -12,7 +11,6 @@ describe('INDIVIDUAL_RECEIPT_NON_CONTRIBUTION_ACCOUNT', () => { it('should create an instance', () => { expect(transactionType).toBeTruthy(); expect(transactionType.scheduleId).toBe('A'); - expect(transactionType.transactionGroup).toBeInstanceOf(TransactionGroupA); }); it('#factory() should return a SchATransaction', () => { diff --git a/front-end/src/app/shared/models/transaction-types/INDIVIDUAL_RECEIPT_NON_CONTRIBUTION_ACCOUNT.model.ts b/front-end/src/app/shared/models/transaction-types/INDIVIDUAL_RECEIPT_NON_CONTRIBUTION_ACCOUNT.model.ts index b68d4b0a8f..f60f47e5cc 100644 --- a/front-end/src/app/shared/models/transaction-types/INDIVIDUAL_RECEIPT_NON_CONTRIBUTION_ACCOUNT.model.ts +++ b/front-end/src/app/shared/models/transaction-types/INDIVIDUAL_RECEIPT_NON_CONTRIBUTION_ACCOUNT.model.ts @@ -2,12 +2,13 @@ import { LabelUtils } from 'app/shared/utils/label.utils'; import { schema } from 'fecfile-validate/fecfile_validate_js/dist/INDIVIDUAL_RECEIPT_NON_CONTRIBUTION_ACCOUNT'; import { SchATransactionType } from '../scha-transaction-type.model'; import { SchATransaction, ScheduleATransactionTypeLabels, ScheduleATransactionTypes } from '../scha-transaction.model'; -import { TransactionGroupA } from '../transaction-groups/transaction-group-a.model'; import { STANDARD_CONTROLS, TransactionNavigationControls } from '../transaction-navigation-controls.model'; import { AggregationGroups } from '../transaction.model'; +import { INDIVIDUAL_FORM_FIELDS, INDIVIDUAL } from 'app/shared/utils/transaction-type-properties'; export class INDIVIDUAL_RECEIPT_NON_CONTRIBUTION_ACCOUNT extends SchATransactionType { - transactionGroup = new TransactionGroupA(); + formFields = INDIVIDUAL_FORM_FIELDS; + contactTypeOptions = INDIVIDUAL; title = LabelUtils.get( ScheduleATransactionTypeLabels, ScheduleATransactionTypes.INDIVIDUAL_RECEIPT_NON_CONTRIBUTION_ACCOUNT diff --git a/front-end/src/app/shared/models/transaction-types/INDIVIDUAL_RECOUNT_RECEIPT.model.spec.ts b/front-end/src/app/shared/models/transaction-types/INDIVIDUAL_RECOUNT_RECEIPT.model.spec.ts index 66db15c97d..c215cec04e 100644 --- a/front-end/src/app/shared/models/transaction-types/INDIVIDUAL_RECOUNT_RECEIPT.model.spec.ts +++ b/front-end/src/app/shared/models/transaction-types/INDIVIDUAL_RECOUNT_RECEIPT.model.spec.ts @@ -1,5 +1,4 @@ import { SchATransaction, ScheduleATransactionTypes } from '../scha-transaction.model'; -import { TransactionGroupA } from '../transaction-groups/transaction-group-a.model'; import { INDIVIDUAL_RECOUNT_RECEIPT } from './INDIVIDUAL_RECOUNT_RECEIPT.model'; describe('INDIVIDUAL_RECOUNT_RECEIPT', () => { @@ -12,7 +11,6 @@ describe('INDIVIDUAL_RECOUNT_RECEIPT', () => { it('should create an instance', () => { expect(transactionType).toBeTruthy(); expect(transactionType.scheduleId).toBe('A'); - expect(transactionType.transactionGroup).toBeInstanceOf(TransactionGroupA); }); it('#factory() should return a SchATransaction', () => { diff --git a/front-end/src/app/shared/models/transaction-types/INDIVIDUAL_RECOUNT_RECEIPT.model.ts b/front-end/src/app/shared/models/transaction-types/INDIVIDUAL_RECOUNT_RECEIPT.model.ts index 02ae37ead7..0a368cedcd 100644 --- a/front-end/src/app/shared/models/transaction-types/INDIVIDUAL_RECOUNT_RECEIPT.model.ts +++ b/front-end/src/app/shared/models/transaction-types/INDIVIDUAL_RECOUNT_RECEIPT.model.ts @@ -2,12 +2,13 @@ import { LabelUtils } from 'app/shared/utils/label.utils'; import { schema } from 'fecfile-validate/fecfile_validate_js/dist/INDIVIDUAL_RECOUNT_RECEIPT'; import { SchATransactionType } from '../scha-transaction-type.model'; import { SchATransaction, ScheduleATransactionTypeLabels, ScheduleATransactionTypes } from '../scha-transaction.model'; -import { TransactionGroupA } from '../transaction-groups/transaction-group-a.model'; import { STANDARD_CONTROLS, TransactionNavigationControls } from '../transaction-navigation-controls.model'; import { AggregationGroups } from '../transaction.model'; +import { INDIVIDUAL_FORM_FIELDS, INDIVIDUAL } from 'app/shared/utils/transaction-type-properties'; export class INDIVIDUAL_RECOUNT_RECEIPT extends SchATransactionType { - transactionGroup = new TransactionGroupA(); + formFields = INDIVIDUAL_FORM_FIELDS; + contactTypeOptions = INDIVIDUAL; title = LabelUtils.get(ScheduleATransactionTypeLabels, ScheduleATransactionTypes.INDIVIDUAL_RECOUNT_RECEIPT); schema = schema; override navigationControls: TransactionNavigationControls = STANDARD_CONTROLS; diff --git a/front-end/src/app/shared/models/transaction-types/INDIVIDUAL_REFUND_NON_CONTRIBUTION_ACCOUNT.model.spec.ts b/front-end/src/app/shared/models/transaction-types/INDIVIDUAL_REFUND_NON_CONTRIBUTION_ACCOUNT.model.spec.ts index 06a7db033a..3ae9df5801 100644 --- a/front-end/src/app/shared/models/transaction-types/INDIVIDUAL_REFUND_NON_CONTRIBUTION_ACCOUNT.model.spec.ts +++ b/front-end/src/app/shared/models/transaction-types/INDIVIDUAL_REFUND_NON_CONTRIBUTION_ACCOUNT.model.spec.ts @@ -1,5 +1,4 @@ import { SchBTransaction, ScheduleBTransactionTypes } from '../schb-transaction.model'; -import { TransactionGroupA } from '../transaction-groups/transaction-group-a.model'; import { INDIVIDUAL_REFUND_NON_CONTRIBUTION_ACCOUNT } from './INDIVIDUAL_REFUND_NON_CONTRIBUTION_ACCOUNT.model'; describe('INDIVIDUAL_REFUND_NON_CONTRIBUTION_ACCOUNT', () => { @@ -12,7 +11,6 @@ describe('INDIVIDUAL_REFUND_NON_CONTRIBUTION_ACCOUNT', () => { it('should create an instance', () => { expect(transactionType).toBeTruthy(); expect(transactionType.scheduleId).toBe('B'); - expect(transactionType.transactionGroup).toBeInstanceOf(TransactionGroupA); }); xit('#factory() should return a SchBTransaction', () => { diff --git a/front-end/src/app/shared/models/transaction-types/INDIVIDUAL_REFUND_NON_CONTRIBUTION_ACCOUNT.model.ts b/front-end/src/app/shared/models/transaction-types/INDIVIDUAL_REFUND_NON_CONTRIBUTION_ACCOUNT.model.ts index b4eea23a87..75407a0842 100644 --- a/front-end/src/app/shared/models/transaction-types/INDIVIDUAL_REFUND_NON_CONTRIBUTION_ACCOUNT.model.ts +++ b/front-end/src/app/shared/models/transaction-types/INDIVIDUAL_REFUND_NON_CONTRIBUTION_ACCOUNT.model.ts @@ -1,21 +1,20 @@ import { LabelUtils } from 'app/shared/utils/label.utils'; import { schema } from 'fecfile-validate/fecfile_validate_js/dist/NON_CONTRIBUTION_ACCOUNT_REFUNDS'; -import { ContactTypes } from '../contact.model'; import { SchBTransactionType } from '../schb-transaction-type.model'; import { SchBTransaction, ScheduleBTransactionTypeLabels, ScheduleBTransactionTypes } from '../schb-transaction.model'; -import { TransactionGroupA } from '../transaction-groups/transaction-group-a.model'; import { STANDARD_CONTROLS, TransactionNavigationControls } from '../transaction-navigation-controls.model'; import { AggregationGroups } from '../transaction.model'; +import { INDIVIDUAL_B_FORM_FIELDS, INDIVIDUAL } from 'app/shared/utils/transaction-type-properties'; export class INDIVIDUAL_REFUND_NON_CONTRIBUTION_ACCOUNT extends SchBTransactionType { - transactionGroup = new TransactionGroupA(); + formFields = INDIVIDUAL_B_FORM_FIELDS; + contactTypeOptions = INDIVIDUAL; title = LabelUtils.get( ScheduleBTransactionTypeLabels, ScheduleBTransactionTypes.INDIVIDUAL_REFUND_NON_CONTRIBUTION_ACCOUNT ); schema = schema; override showAggregate = false; - override defaultContactTypeOption = ContactTypes.INDIVIDUAL; override navigationControls: TransactionNavigationControls = STANDARD_CONTROLS; getNewTransaction() { diff --git a/front-end/src/app/shared/models/transaction-types/INDIVIDUAL_REFUND_NP_CONVENTION_ACCOUNT.model.spec.ts b/front-end/src/app/shared/models/transaction-types/INDIVIDUAL_REFUND_NP_CONVENTION_ACCOUNT.model.spec.ts index 0dfb05865d..c04f4641f8 100644 --- a/front-end/src/app/shared/models/transaction-types/INDIVIDUAL_REFUND_NP_CONVENTION_ACCOUNT.model.spec.ts +++ b/front-end/src/app/shared/models/transaction-types/INDIVIDUAL_REFUND_NP_CONVENTION_ACCOUNT.model.spec.ts @@ -1,5 +1,4 @@ import { SchBTransaction, ScheduleBTransactionTypes } from '../schb-transaction.model'; -import { TransactionGroupA } from '../transaction-groups/transaction-group-a.model'; import { INDIVIDUAL_REFUND_NP_CONVENTION_ACCOUNT } from './INDIVIDUAL_REFUND_NP_CONVENTION_ACCOUNT.model'; describe('INDIVIDUAL_REFUND_NP_CONVENTION_ACCOUNT', () => { @@ -12,7 +11,6 @@ describe('INDIVIDUAL_REFUND_NP_CONVENTION_ACCOUNT', () => { it('should create an instance', () => { expect(transactionType).toBeTruthy(); expect(transactionType.scheduleId).toBe('B'); - expect(transactionType.transactionGroup).toBeInstanceOf(TransactionGroupA); }); it('#factory() should return a SchBTransaction', () => { diff --git a/front-end/src/app/shared/models/transaction-types/INDIVIDUAL_REFUND_NP_CONVENTION_ACCOUNT.model.ts b/front-end/src/app/shared/models/transaction-types/INDIVIDUAL_REFUND_NP_CONVENTION_ACCOUNT.model.ts index d697b64d0c..53b8ca6874 100644 --- a/front-end/src/app/shared/models/transaction-types/INDIVIDUAL_REFUND_NP_CONVENTION_ACCOUNT.model.ts +++ b/front-end/src/app/shared/models/transaction-types/INDIVIDUAL_REFUND_NP_CONVENTION_ACCOUNT.model.ts @@ -2,12 +2,13 @@ import { LabelUtils } from 'app/shared/utils/label.utils'; import { schema } from 'fecfile-validate/fecfile_validate_js/dist/NATIONAL_PARTY_INDIVIDUAL_REFUNDS'; import { SchBTransactionType } from '../schb-transaction-type.model'; import { SchBTransaction, ScheduleBTransactionTypeLabels, ScheduleBTransactionTypes } from '../schb-transaction.model'; -import { TransactionGroupA } from '../transaction-groups/transaction-group-a.model'; import { STANDARD_CONTROLS, TransactionNavigationControls } from '../transaction-navigation-controls.model'; import { AggregationGroups } from '../transaction.model'; +import { INDIVIDUAL_B_FORM_FIELDS, INDIVIDUAL } from 'app/shared/utils/transaction-type-properties'; export class INDIVIDUAL_REFUND_NP_CONVENTION_ACCOUNT extends SchBTransactionType { - transactionGroup = new TransactionGroupA(); + formFields = INDIVIDUAL_B_FORM_FIELDS; + contactTypeOptions = INDIVIDUAL; title = LabelUtils.get( ScheduleBTransactionTypeLabels, ScheduleBTransactionTypes.INDIVIDUAL_REFUND_NP_CONVENTION_ACCOUNT diff --git a/front-end/src/app/shared/models/transaction-types/INDIVIDUAL_REFUND_NP_HEADQUARTERS_ACCOUNT.model.spec.ts b/front-end/src/app/shared/models/transaction-types/INDIVIDUAL_REFUND_NP_HEADQUARTERS_ACCOUNT.model.spec.ts index 0e3f120824..d102130ab1 100644 --- a/front-end/src/app/shared/models/transaction-types/INDIVIDUAL_REFUND_NP_HEADQUARTERS_ACCOUNT.model.spec.ts +++ b/front-end/src/app/shared/models/transaction-types/INDIVIDUAL_REFUND_NP_HEADQUARTERS_ACCOUNT.model.spec.ts @@ -1,5 +1,4 @@ import { SchBTransaction, ScheduleBTransactionTypes } from '../schb-transaction.model'; -import { TransactionGroupA } from '../transaction-groups/transaction-group-a.model'; import { INDIVIDUAL_REFUND_NP_HEADQUARTERS_ACCOUNT } from './INDIVIDUAL_REFUND_NP_HEADQUARTERS_ACCOUNT.model'; describe('INDIVIDUAL_REFUND_NP_HEADQUARTERS_ACCOUNT', () => { @@ -12,7 +11,6 @@ describe('INDIVIDUAL_REFUND_NP_HEADQUARTERS_ACCOUNT', () => { it('should create an instance', () => { expect(transactionType).toBeTruthy(); expect(transactionType.scheduleId).toBe('B'); - expect(transactionType.transactionGroup).toBeInstanceOf(TransactionGroupA); }); it('#factory() should return a SchBTransaction', () => { diff --git a/front-end/src/app/shared/models/transaction-types/INDIVIDUAL_REFUND_NP_HEADQUARTERS_ACCOUNT.model.ts b/front-end/src/app/shared/models/transaction-types/INDIVIDUAL_REFUND_NP_HEADQUARTERS_ACCOUNT.model.ts index 98f847bd11..d3bb6dac9d 100644 --- a/front-end/src/app/shared/models/transaction-types/INDIVIDUAL_REFUND_NP_HEADQUARTERS_ACCOUNT.model.ts +++ b/front-end/src/app/shared/models/transaction-types/INDIVIDUAL_REFUND_NP_HEADQUARTERS_ACCOUNT.model.ts @@ -2,12 +2,13 @@ import { LabelUtils } from 'app/shared/utils/label.utils'; import { schema } from 'fecfile-validate/fecfile_validate_js/dist/NATIONAL_PARTY_INDIVIDUAL_REFUNDS'; import { SchBTransactionType } from '../schb-transaction-type.model'; import { SchBTransaction, ScheduleBTransactionTypeLabels, ScheduleBTransactionTypes } from '../schb-transaction.model'; -import { TransactionGroupA } from '../transaction-groups/transaction-group-a.model'; import { STANDARD_CONTROLS, TransactionNavigationControls } from '../transaction-navigation-controls.model'; import { AggregationGroups } from '../transaction.model'; +import { INDIVIDUAL_B_FORM_FIELDS, INDIVIDUAL } from 'app/shared/utils/transaction-type-properties'; export class INDIVIDUAL_REFUND_NP_HEADQUARTERS_ACCOUNT extends SchBTransactionType { - transactionGroup = new TransactionGroupA(); + formFields = INDIVIDUAL_B_FORM_FIELDS; + contactTypeOptions = INDIVIDUAL; title = LabelUtils.get( ScheduleBTransactionTypeLabels, ScheduleBTransactionTypes.INDIVIDUAL_REFUND_NP_HEADQUARTERS_ACCOUNT diff --git a/front-end/src/app/shared/models/transaction-types/INDIVIDUAL_REFUND_NP_RECOUNT_ACCOUNT.model.spec.ts b/front-end/src/app/shared/models/transaction-types/INDIVIDUAL_REFUND_NP_RECOUNT_ACCOUNT.model.spec.ts index c59531712f..42352d2e84 100644 --- a/front-end/src/app/shared/models/transaction-types/INDIVIDUAL_REFUND_NP_RECOUNT_ACCOUNT.model.spec.ts +++ b/front-end/src/app/shared/models/transaction-types/INDIVIDUAL_REFUND_NP_RECOUNT_ACCOUNT.model.spec.ts @@ -1,5 +1,4 @@ import { SchBTransaction, ScheduleBTransactionTypes } from '../schb-transaction.model'; -import { TransactionGroupA } from '../transaction-groups/transaction-group-a.model'; import { INDIVIDUAL_REFUND_NP_RECOUNT_ACCOUNT } from './INDIVIDUAL_REFUND_NP_RECOUNT_ACCOUNT.model'; describe('INDIVIDUAL_REFUND_NP_RECOUNT_ACCOUNT', () => { @@ -12,7 +11,6 @@ describe('INDIVIDUAL_REFUND_NP_RECOUNT_ACCOUNT', () => { it('should create an instance', () => { expect(transactionType).toBeTruthy(); expect(transactionType.scheduleId).toBe('B'); - expect(transactionType.transactionGroup).toBeInstanceOf(TransactionGroupA); }); it('#factory() should return a SchBTransaction', () => { diff --git a/front-end/src/app/shared/models/transaction-types/INDIVIDUAL_REFUND_NP_RECOUNT_ACCOUNT.model.ts b/front-end/src/app/shared/models/transaction-types/INDIVIDUAL_REFUND_NP_RECOUNT_ACCOUNT.model.ts index 4bf7f7dc22..fc9f4cbbe5 100644 --- a/front-end/src/app/shared/models/transaction-types/INDIVIDUAL_REFUND_NP_RECOUNT_ACCOUNT.model.ts +++ b/front-end/src/app/shared/models/transaction-types/INDIVIDUAL_REFUND_NP_RECOUNT_ACCOUNT.model.ts @@ -2,12 +2,13 @@ import { LabelUtils } from 'app/shared/utils/label.utils'; import { schema } from 'fecfile-validate/fecfile_validate_js/dist/NATIONAL_PARTY_INDIVIDUAL_REFUNDS'; import { SchBTransactionType } from '../schb-transaction-type.model'; import { SchBTransaction, ScheduleBTransactionTypeLabels, ScheduleBTransactionTypes } from '../schb-transaction.model'; -import { TransactionGroupA } from '../transaction-groups/transaction-group-a.model'; import { STANDARD_CONTROLS, TransactionNavigationControls } from '../transaction-navigation-controls.model'; import { AggregationGroups } from '../transaction.model'; +import { INDIVIDUAL_B_FORM_FIELDS, INDIVIDUAL } from 'app/shared/utils/transaction-type-properties'; export class INDIVIDUAL_REFUND_NP_RECOUNT_ACCOUNT extends SchBTransactionType { - transactionGroup = new TransactionGroupA(); + formFields = INDIVIDUAL_B_FORM_FIELDS; + contactTypeOptions = INDIVIDUAL; title = LabelUtils.get( ScheduleBTransactionTypeLabels, ScheduleBTransactionTypes.INDIVIDUAL_REFUND_NP_RECOUNT_ACCOUNT diff --git a/front-end/src/app/shared/models/transaction-types/IN_KIND_OUT.model.spec.ts b/front-end/src/app/shared/models/transaction-types/IN_KIND_OUT.model.spec.ts index d54aa2e92b..9edd9717f2 100644 --- a/front-end/src/app/shared/models/transaction-types/IN_KIND_OUT.model.spec.ts +++ b/front-end/src/app/shared/models/transaction-types/IN_KIND_OUT.model.spec.ts @@ -1,5 +1,4 @@ import { IN_KIND_OUT } from './IN_KIND_OUT.model'; -import { TransactionGroupAA } from '../transaction-groups/transaction-group-aa.model'; import { SchBTransaction, ScheduleBTransactionTypes } from '../schb-transaction.model'; describe('IN_KIND_OUT', () => { @@ -12,7 +11,6 @@ describe('IN_KIND_OUT', () => { it('should create an instance', () => { expect(transactionType).toBeTruthy(); expect(transactionType.scheduleId).toBe('B'); - expect(transactionType.transactionGroup).toBeInstanceOf(TransactionGroupAA); }); it('#factory() should return a SchATransaction', () => { diff --git a/front-end/src/app/shared/models/transaction-types/IN_KIND_OUT.model.ts b/front-end/src/app/shared/models/transaction-types/IN_KIND_OUT.model.ts index 879a32b13a..fab5c9eed6 100644 --- a/front-end/src/app/shared/models/transaction-types/IN_KIND_OUT.model.ts +++ b/front-end/src/app/shared/models/transaction-types/IN_KIND_OUT.model.ts @@ -1,17 +1,15 @@ import { schema } from 'fecfile-validate/fecfile_validate_js/dist/IN_KIND_OUT'; -import { TransactionGroupAA } from '../transaction-groups/transaction-group-aa.model'; import { AggregationGroups } from '../transaction.model'; import { SchBTransaction, ScheduleBTransactionTypes, ScheduleBTransactionTypeLabels } from '../schb-transaction.model'; import { TemplateMapKeyType } from '../transaction-type.model'; -import { SchBTransactionType } from '../schb-transaction-type.model'; import { LabelUtils } from 'app/shared/utils/label.utils'; - -export class IN_KIND_OUT extends SchBTransactionType { - transactionGroup = new TransactionGroupAA(); - override isDependentChild = true; +import { INDIVIDUAL_B_FORM_FIELDS } from 'app/shared/utils/transaction-type-properties'; +import { IN_KIND_OUT as CommonInKindOut } from './common-types/IN_KIND_OUT.model'; +export class IN_KIND_OUT extends CommonInKindOut { + override formFields = INDIVIDUAL_B_FORM_FIELDS; title = LabelUtils.get(ScheduleBTransactionTypeLabels, ScheduleBTransactionTypes.IN_KIND_OUT); schema = schema; - override useParentContact = true; + override showAggregate = true; override inheritedFields = [ 'last_name', 'first_name', diff --git a/front-end/src/app/shared/models/transaction-types/IN_KIND_RECEIPT.model.spec.ts b/front-end/src/app/shared/models/transaction-types/IN_KIND_RECEIPT.model.spec.ts index 24a8162609..a2385b04a4 100644 --- a/front-end/src/app/shared/models/transaction-types/IN_KIND_RECEIPT.model.spec.ts +++ b/front-end/src/app/shared/models/transaction-types/IN_KIND_RECEIPT.model.spec.ts @@ -1,6 +1,5 @@ import { SchATransaction, ScheduleATransactionTypes } from '../scha-transaction.model'; import { getTestTransactionByType } from 'app/shared/utils/unit-test.utils'; -import { TransactionGroupAA } from '../transaction-groups/transaction-group-aa.model'; describe('IN_KIND_RECEIPT', () => { let transaction: SchATransaction; @@ -12,7 +11,6 @@ describe('IN_KIND_RECEIPT', () => { it('should create an instance', () => { expect(transaction.transactionType).toBeTruthy(); expect(transaction.transactionType?.scheduleId).toBe('A'); - expect(transaction?.transactionType?.transactionGroup).toBeInstanceOf(TransactionGroupAA); }); it('#factory() should return a SchATransaction', () => { diff --git a/front-end/src/app/shared/models/transaction-types/IN_KIND_RECEIPT.model.ts b/front-end/src/app/shared/models/transaction-types/IN_KIND_RECEIPT.model.ts index 4e27c6a964..211454e756 100644 --- a/front-end/src/app/shared/models/transaction-types/IN_KIND_RECEIPT.model.ts +++ b/front-end/src/app/shared/models/transaction-types/IN_KIND_RECEIPT.model.ts @@ -1,6 +1,6 @@ import { LabelUtils } from 'app/shared/utils/label.utils'; import { schema } from 'fecfile-validate/fecfile_validate_js/dist/IN_KIND_RECEIPT'; -import { SchATransactionType } from '../scha-transaction-type.model'; +import { IN_KIND } from './common-types/IN_KIND.model'; import { SchATransaction, ScheduleATransactionTypeLabels, ScheduleATransactionTypes } from '../scha-transaction.model'; import { STANDARD_DOUBLE_ENTRY_CONTROLS, @@ -8,16 +8,15 @@ import { } from '../transaction-navigation-controls.model'; import { AggregationGroups } from '../transaction.model'; import { ScheduleBTransactionTypes } from '../schb-transaction.model'; -import { TransactionGroupAA } from '../transaction-groups/transaction-group-aa.model'; +import { INDIVIDUAL_FORM_FIELDS, INDIVIDUAL } from 'app/shared/utils/transaction-type-properties'; -export class IN_KIND_RECEIPT extends SchATransactionType { - transactionGroup = new TransactionGroupAA(); +export class IN_KIND_RECEIPT extends IN_KIND { + override formFields = INDIVIDUAL_FORM_FIELDS; + override contactTypeOptions = INDIVIDUAL; title = LabelUtils.get(ScheduleATransactionTypeLabels, ScheduleATransactionTypes.IN_KIND_RECEIPT); schema = schema; - override apiEndpoint = '/transactions/save-pair'; override dependentChildTransactionType = ScheduleBTransactionTypes.IN_KIND_OUT; override navigationControls: TransactionNavigationControls = STANDARD_DOUBLE_ENTRY_CONTROLS; - override purposeDescriptionPrefix = 'In-Kind: '; getNewTransaction() { return SchATransaction.fromJSON({ diff --git a/front-end/src/app/shared/models/transaction-types/IN_KIND_TRANSFER.model.spec.ts b/front-end/src/app/shared/models/transaction-types/IN_KIND_TRANSFER.model.spec.ts index 73c9c120ea..953fbf705e 100644 --- a/front-end/src/app/shared/models/transaction-types/IN_KIND_TRANSFER.model.spec.ts +++ b/front-end/src/app/shared/models/transaction-types/IN_KIND_TRANSFER.model.spec.ts @@ -1,6 +1,5 @@ import { SchATransaction, ScheduleATransactionTypes } from '../scha-transaction.model'; import { getTestTransactionByType } from 'app/shared/utils/unit-test.utils'; -import { TransactionGroupEE } from '../transaction-groups/transaction-group-ee.model'; describe('IN_KIND_TRANSFER', () => { let transaction: SchATransaction; @@ -12,7 +11,6 @@ describe('IN_KIND_TRANSFER', () => { it('should create an instance', () => { expect(transaction.transactionType).toBeTruthy(); expect(transaction.transactionType?.scheduleId).toBe('A'); - expect(transaction?.transactionType?.transactionGroup).toBeInstanceOf(TransactionGroupEE); }); it('#factory() should return a SchATransaction', () => { diff --git a/front-end/src/app/shared/models/transaction-types/IN_KIND_TRANSFER.model.ts b/front-end/src/app/shared/models/transaction-types/IN_KIND_TRANSFER.model.ts index dd2e58bbe4..6006e64889 100644 --- a/front-end/src/app/shared/models/transaction-types/IN_KIND_TRANSFER.model.ts +++ b/front-end/src/app/shared/models/transaction-types/IN_KIND_TRANSFER.model.ts @@ -1,23 +1,14 @@ import { LabelUtils } from 'app/shared/utils/label.utils'; import { schema } from 'fecfile-validate/fecfile_validate_js/dist/COM_IN_KIND_RECEIPTS'; -import { SchATransactionType } from '../scha-transaction-type.model'; import { SchATransaction, ScheduleATransactionTypeLabels, ScheduleATransactionTypes } from '../scha-transaction.model'; -import { - STANDARD_DOUBLE_ENTRY_CONTROLS, - TransactionNavigationControls, -} from '../transaction-navigation-controls.model'; import { AggregationGroups } from '../transaction.model'; import { ScheduleBTransactionTypes } from '../schb-transaction.model'; -import { TransactionGroupEE } from '../transaction-groups/transaction-group-ee.model'; +import { IN_KIND } from './common-types/IN_KIND.model'; -export class IN_KIND_TRANSFER extends SchATransactionType { - transactionGroup = new TransactionGroupEE(); +export class IN_KIND_TRANSFER extends IN_KIND { title = LabelUtils.get(ScheduleATransactionTypeLabels, ScheduleATransactionTypes.IN_KIND_TRANSFER); schema = schema; - override apiEndpoint = '/transactions/save-pair'; override dependentChildTransactionType = ScheduleBTransactionTypes.IN_KIND_TRANSFER_OUT; - override navigationControls: TransactionNavigationControls = STANDARD_DOUBLE_ENTRY_CONTROLS; - override purposeDescriptionPrefix = 'In-Kind: '; getNewTransaction() { return SchATransaction.fromJSON({ diff --git a/front-end/src/app/shared/models/transaction-types/IN_KIND_TRANSFER_FEA_OUT.model.spec.ts b/front-end/src/app/shared/models/transaction-types/IN_KIND_TRANSFER_FEA_OUT.model.spec.ts index 3f6a065648..4bd1222b0e 100644 --- a/front-end/src/app/shared/models/transaction-types/IN_KIND_TRANSFER_FEA_OUT.model.spec.ts +++ b/front-end/src/app/shared/models/transaction-types/IN_KIND_TRANSFER_FEA_OUT.model.spec.ts @@ -1,5 +1,4 @@ import { IN_KIND_TRANSFER_FEA_OUT } from './IN_KIND_TRANSFER_FEA_OUT.model'; -import { TransactionGroupEE } from '../transaction-groups/transaction-group-ee.model'; import { SchBTransaction, ScheduleBTransactionTypes } from '../schb-transaction.model'; describe('IN_KIND_OUT', () => { @@ -12,7 +11,6 @@ describe('IN_KIND_OUT', () => { it('should create an instance', () => { expect(transactionType).toBeTruthy(); expect(transactionType.scheduleId).toBe('B'); - expect(transactionType.transactionGroup).toBeInstanceOf(TransactionGroupEE); }); it('#factory() should return a SchATransaction', () => { diff --git a/front-end/src/app/shared/models/transaction-types/IN_KIND_TRANSFER_FEA_OUT.model.ts b/front-end/src/app/shared/models/transaction-types/IN_KIND_TRANSFER_FEA_OUT.model.ts index c50c02381f..3c582bff22 100644 --- a/front-end/src/app/shared/models/transaction-types/IN_KIND_TRANSFER_FEA_OUT.model.ts +++ b/front-end/src/app/shared/models/transaction-types/IN_KIND_TRANSFER_FEA_OUT.model.ts @@ -1,18 +1,13 @@ import { schema } from 'fecfile-validate/fecfile_validate_js/dist/COM_IN_KIND_OUTS'; -import { TransactionGroupEE } from '../transaction-groups/transaction-group-ee.model'; import { AggregationGroups } from '../transaction.model'; import { SchBTransaction, ScheduleBTransactionTypes, ScheduleBTransactionTypeLabels } from '../schb-transaction.model'; import { TemplateMapKeyType } from '../transaction-type.model'; -import { SchBTransactionType } from '../schb-transaction-type.model'; import { LabelUtils } from 'app/shared/utils/label.utils'; +import { IN_KIND_OUT } from './common-types/IN_KIND_OUT.model'; -export class IN_KIND_TRANSFER_FEA_OUT extends SchBTransactionType { - transactionGroup = new TransactionGroupEE(); - override isDependentChild = true; - override showAggregate = false; +export class IN_KIND_TRANSFER_FEA_OUT extends IN_KIND_OUT { title = LabelUtils.get(ScheduleBTransactionTypeLabels, ScheduleBTransactionTypes.IN_KIND_TRANSFER_FEA_OUT); schema = schema; - override useParentContact = true; override inheritedFields = [ 'organization_name', 'street_1', diff --git a/front-end/src/app/shared/models/transaction-types/IN_KIND_TRANSFER_FEDERAL_ELECTION_ACTIVITY.model.spec.ts b/front-end/src/app/shared/models/transaction-types/IN_KIND_TRANSFER_FEDERAL_ELECTION_ACTIVITY.model.spec.ts index 8b9ad67e58..f580a03a97 100644 --- a/front-end/src/app/shared/models/transaction-types/IN_KIND_TRANSFER_FEDERAL_ELECTION_ACTIVITY.model.spec.ts +++ b/front-end/src/app/shared/models/transaction-types/IN_KIND_TRANSFER_FEDERAL_ELECTION_ACTIVITY.model.spec.ts @@ -1,6 +1,5 @@ import { SchATransaction, ScheduleATransactionTypes } from '../scha-transaction.model'; import { getTestTransactionByType } from 'app/shared/utils/unit-test.utils'; -import { TransactionGroupEE } from '../transaction-groups/transaction-group-ee.model'; describe('IN_KIND_TRANSFER_FEDERAL_ELECTION_ACTIVITY', () => { let transaction: SchATransaction; @@ -14,7 +13,6 @@ describe('IN_KIND_TRANSFER_FEDERAL_ELECTION_ACTIVITY', () => { it('should create an instance', () => { expect(transaction.transactionType).toBeTruthy(); expect(transaction.transactionType?.scheduleId).toBe('A'); - expect(transaction?.transactionType?.transactionGroup).toBeInstanceOf(TransactionGroupEE); }); it('#factory() should return a SchATransaction', () => { diff --git a/front-end/src/app/shared/models/transaction-types/IN_KIND_TRANSFER_FEDERAL_ELECTION_ACTIVITY.model.ts b/front-end/src/app/shared/models/transaction-types/IN_KIND_TRANSFER_FEDERAL_ELECTION_ACTIVITY.model.ts index 9b215b1038..edc8646321 100644 --- a/front-end/src/app/shared/models/transaction-types/IN_KIND_TRANSFER_FEDERAL_ELECTION_ACTIVITY.model.ts +++ b/front-end/src/app/shared/models/transaction-types/IN_KIND_TRANSFER_FEDERAL_ELECTION_ACTIVITY.model.ts @@ -1,26 +1,17 @@ import { LabelUtils } from 'app/shared/utils/label.utils'; import { schema } from 'fecfile-validate/fecfile_validate_js/dist/COM_IN_KIND_RECEIPTS'; -import { SchATransactionType } from '../scha-transaction-type.model'; import { SchATransaction, ScheduleATransactionTypeLabels, ScheduleATransactionTypes } from '../scha-transaction.model'; -import { - STANDARD_DOUBLE_ENTRY_CONTROLS, - TransactionNavigationControls, -} from '../transaction-navigation-controls.model'; import { AggregationGroups } from '../transaction.model'; import { ScheduleBTransactionTypes } from '../schb-transaction.model'; -import { TransactionGroupEE } from '../transaction-groups/transaction-group-ee.model'; +import { IN_KIND } from './common-types/IN_KIND.model'; -export class IN_KIND_TRANSFER_FEDERAL_ELECTION_ACTIVITY extends SchATransactionType { - transactionGroup = new TransactionGroupEE(); +export class IN_KIND_TRANSFER_FEDERAL_ELECTION_ACTIVITY extends IN_KIND { title = LabelUtils.get( ScheduleATransactionTypeLabels, ScheduleATransactionTypes.IN_KIND_TRANSFER_FEDERAL_ELECTION_ACTIVITY ); schema = schema; - override apiEndpoint = '/transactions/save-pair'; override dependentChildTransactionType = ScheduleBTransactionTypes.IN_KIND_TRANSFER_FEA_OUT; - override navigationControls: TransactionNavigationControls = STANDARD_DOUBLE_ENTRY_CONTROLS; - override purposeDescriptionPrefix = 'In-Kind: '; getNewTransaction() { return SchATransaction.fromJSON({ diff --git a/front-end/src/app/shared/models/transaction-types/IN_KIND_TRANSFER_OUT.model.spec.ts b/front-end/src/app/shared/models/transaction-types/IN_KIND_TRANSFER_OUT.model.spec.ts index 520947a843..f6206c6566 100644 --- a/front-end/src/app/shared/models/transaction-types/IN_KIND_TRANSFER_OUT.model.spec.ts +++ b/front-end/src/app/shared/models/transaction-types/IN_KIND_TRANSFER_OUT.model.spec.ts @@ -1,5 +1,4 @@ import { IN_KIND_TRANSFER_OUT } from './IN_KIND_TRANSFER_OUT.model'; -import { TransactionGroupEE } from '../transaction-groups/transaction-group-ee.model'; import { SchBTransaction, ScheduleBTransactionTypes } from '../schb-transaction.model'; describe('IN_KIND_OUT', () => { @@ -12,7 +11,6 @@ describe('IN_KIND_OUT', () => { it('should create an instance', () => { expect(transactionType).toBeTruthy(); expect(transactionType.scheduleId).toBe('B'); - expect(transactionType.transactionGroup).toBeInstanceOf(TransactionGroupEE); }); it('#factory() should return a SchATransaction', () => { diff --git a/front-end/src/app/shared/models/transaction-types/IN_KIND_TRANSFER_OUT.model.ts b/front-end/src/app/shared/models/transaction-types/IN_KIND_TRANSFER_OUT.model.ts index 2a3f3cc03f..c123e7026b 100644 --- a/front-end/src/app/shared/models/transaction-types/IN_KIND_TRANSFER_OUT.model.ts +++ b/front-end/src/app/shared/models/transaction-types/IN_KIND_TRANSFER_OUT.model.ts @@ -1,18 +1,13 @@ import { schema } from 'fecfile-validate/fecfile_validate_js/dist/COM_IN_KIND_OUTS'; -import { TransactionGroupEE } from '../transaction-groups/transaction-group-ee.model'; import { AggregationGroups } from '../transaction.model'; import { SchBTransaction, ScheduleBTransactionTypes, ScheduleBTransactionTypeLabels } from '../schb-transaction.model'; import { TemplateMapKeyType } from '../transaction-type.model'; -import { SchBTransactionType } from '../schb-transaction-type.model'; import { LabelUtils } from 'app/shared/utils/label.utils'; +import { IN_KIND_OUT } from './common-types/IN_KIND_OUT.model'; -export class IN_KIND_TRANSFER_OUT extends SchBTransactionType { - transactionGroup = new TransactionGroupEE(); - override isDependentChild = true; - override showAggregate = false; +export class IN_KIND_TRANSFER_OUT extends IN_KIND_OUT { title = LabelUtils.get(ScheduleBTransactionTypeLabels, ScheduleBTransactionTypes.IN_KIND_TRANSFER_OUT); schema = schema; - override useParentContact = true; override inheritedFields = [ 'organization_name', 'street_1', diff --git a/front-end/src/app/shared/models/transaction-types/JF_TRANSFER_NATIONAL_PARTY_CONVENTION_ACCOUNT.model.spec.ts b/front-end/src/app/shared/models/transaction-types/JF_TRANSFER_NATIONAL_PARTY_CONVENTION_ACCOUNT.model.spec.ts index ee459b116b..434f212778 100644 --- a/front-end/src/app/shared/models/transaction-types/JF_TRANSFER_NATIONAL_PARTY_CONVENTION_ACCOUNT.model.spec.ts +++ b/front-end/src/app/shared/models/transaction-types/JF_TRANSFER_NATIONAL_PARTY_CONVENTION_ACCOUNT.model.spec.ts @@ -1,5 +1,4 @@ import { SchATransaction, ScheduleATransactionTypes } from '../scha-transaction.model'; -import { TransactionGroupE } from '../transaction-groups/transaction-group-e.model'; import { JF_TRANSFER_NATIONAL_PARTY_CONVENTION_ACCOUNT } from './JF_TRANSFER_NATIONAL_PARTY_CONVENTION_ACCOUNT.model'; describe('JF_TRANSFER_NATIONAL_PARTY_CONVENTION_ACCOUNT', () => { @@ -12,7 +11,6 @@ describe('JF_TRANSFER_NATIONAL_PARTY_CONVENTION_ACCOUNT', () => { it('should create an instance', () => { expect(transactionType).toBeTruthy(); expect(transactionType.scheduleId).toBe('A'); - expect(transactionType.transactionGroup).toBeInstanceOf(TransactionGroupE); }); it('#factory() should return a SchATransaction', () => { diff --git a/front-end/src/app/shared/models/transaction-types/JF_TRANSFER_NATIONAL_PARTY_CONVENTION_ACCOUNT.model.ts b/front-end/src/app/shared/models/transaction-types/JF_TRANSFER_NATIONAL_PARTY_CONVENTION_ACCOUNT.model.ts index 9ac4254376..179fefdab1 100644 --- a/front-end/src/app/shared/models/transaction-types/JF_TRANSFER_NATIONAL_PARTY_CONVENTION_ACCOUNT.model.ts +++ b/front-end/src/app/shared/models/transaction-types/JF_TRANSFER_NATIONAL_PARTY_CONVENTION_ACCOUNT.model.ts @@ -2,13 +2,14 @@ import { LabelUtils } from 'app/shared/utils/label.utils'; import { schema } from 'fecfile-validate/fecfile_validate_js/dist/JF_TRANSFER_NATIONAL_PARTY_CONVENTION_ACCOUNT'; import { SchATransactionType } from '../scha-transaction-type.model'; import { SchATransaction, ScheduleATransactionTypeLabels, ScheduleATransactionTypes } from '../scha-transaction.model'; -import { TransactionGroupE } from '../transaction-groups/transaction-group-e.model'; import { STANDARD_PARENT_CONTROLS, TransactionNavigationControls } from '../transaction-navigation-controls.model'; import { SubTransactionGroup } from '../transaction-type.model'; import { AggregationGroups } from '../transaction.model'; +import { COMMITTEE, COMMITTEE_FORM_FIELDS } from 'app/shared/utils/transaction-type-properties'; export class JF_TRANSFER_NATIONAL_PARTY_CONVENTION_ACCOUNT extends SchATransactionType { - transactionGroup = new TransactionGroupE(); + formFields = COMMITTEE_FORM_FIELDS; + contactTypeOptions = COMMITTEE; title = LabelUtils.get( ScheduleATransactionTypeLabels, ScheduleATransactionTypes.JF_TRANSFER_NATIONAL_PARTY_CONVENTION_ACCOUNT diff --git a/front-end/src/app/shared/models/transaction-types/JF_TRANSFER_NATIONAL_PARTY_HEADQUARTERS_ACCOUNT.model.spec.ts b/front-end/src/app/shared/models/transaction-types/JF_TRANSFER_NATIONAL_PARTY_HEADQUARTERS_ACCOUNT.model.spec.ts index ac5cca8a7f..93c415dc0b 100644 --- a/front-end/src/app/shared/models/transaction-types/JF_TRANSFER_NATIONAL_PARTY_HEADQUARTERS_ACCOUNT.model.spec.ts +++ b/front-end/src/app/shared/models/transaction-types/JF_TRANSFER_NATIONAL_PARTY_HEADQUARTERS_ACCOUNT.model.spec.ts @@ -1,5 +1,4 @@ import { SchATransaction, ScheduleATransactionTypes } from '../scha-transaction.model'; -import { TransactionGroupE } from '../transaction-groups/transaction-group-e.model'; import { JF_TRANSFER_NATIONAL_PARTY_HEADQUARTERS_ACCOUNT } from './JF_TRANSFER_NATIONAL_PARTY_HEADQUARTERS_ACCOUNT.model'; describe('JF_TRANSFER_NATIONAL_PARTY_HEADQUARTERS_ACCOUNT', () => { @@ -12,7 +11,6 @@ describe('JF_TRANSFER_NATIONAL_PARTY_HEADQUARTERS_ACCOUNT', () => { it('should create an instance', () => { expect(transactionType).toBeTruthy(); expect(transactionType.scheduleId).toBe('A'); - expect(transactionType.transactionGroup).toBeInstanceOf(TransactionGroupE); }); it('#factory() should return a SchATransaction', () => { diff --git a/front-end/src/app/shared/models/transaction-types/JF_TRANSFER_NATIONAL_PARTY_HEADQUARTERS_ACCOUNT.model.ts b/front-end/src/app/shared/models/transaction-types/JF_TRANSFER_NATIONAL_PARTY_HEADQUARTERS_ACCOUNT.model.ts index 74b3f1286b..216f312802 100644 --- a/front-end/src/app/shared/models/transaction-types/JF_TRANSFER_NATIONAL_PARTY_HEADQUARTERS_ACCOUNT.model.ts +++ b/front-end/src/app/shared/models/transaction-types/JF_TRANSFER_NATIONAL_PARTY_HEADQUARTERS_ACCOUNT.model.ts @@ -2,13 +2,14 @@ import { LabelUtils } from 'app/shared/utils/label.utils'; import { schema } from 'fecfile-validate/fecfile_validate_js/dist/JF_TRANSFER_NATIONAL_PARTY_HEADQUARTERS_ACCOUNT'; import { SchATransactionType } from '../scha-transaction-type.model'; import { SchATransaction, ScheduleATransactionTypeLabels, ScheduleATransactionTypes } from '../scha-transaction.model'; -import { TransactionGroupE } from '../transaction-groups/transaction-group-e.model'; import { STANDARD_PARENT_CONTROLS, TransactionNavigationControls } from '../transaction-navigation-controls.model'; import { SubTransactionGroup } from '../transaction-type.model'; import { AggregationGroups } from '../transaction.model'; +import { COMMITTEE, COMMITTEE_FORM_FIELDS } from 'app/shared/utils/transaction-type-properties'; export class JF_TRANSFER_NATIONAL_PARTY_HEADQUARTERS_ACCOUNT extends SchATransactionType { - transactionGroup = new TransactionGroupE(); + formFields = COMMITTEE_FORM_FIELDS; + contactTypeOptions = COMMITTEE; title = LabelUtils.get( ScheduleATransactionTypeLabels, ScheduleATransactionTypes.JF_TRANSFER_NATIONAL_PARTY_HEADQUARTERS_ACCOUNT diff --git a/front-end/src/app/shared/models/transaction-types/JF_TRANSFER_NATIONAL_PARTY_RECOUNT_ACCOUNT.model.spec.ts b/front-end/src/app/shared/models/transaction-types/JF_TRANSFER_NATIONAL_PARTY_RECOUNT_ACCOUNT.model.spec.ts index 422ca66812..a00c1fdbc0 100644 --- a/front-end/src/app/shared/models/transaction-types/JF_TRANSFER_NATIONAL_PARTY_RECOUNT_ACCOUNT.model.spec.ts +++ b/front-end/src/app/shared/models/transaction-types/JF_TRANSFER_NATIONAL_PARTY_RECOUNT_ACCOUNT.model.spec.ts @@ -1,5 +1,4 @@ import { SchATransaction, ScheduleATransactionTypes } from '../scha-transaction.model'; -import { TransactionGroupE } from '../transaction-groups/transaction-group-e.model'; import { JF_TRANSFER_NATIONAL_PARTY_RECOUNT_ACCOUNT } from './JF_TRANSFER_NATIONAL_PARTY_RECOUNT_ACCOUNT.model'; describe('JF_TRANSFER_NATIONAL_PARTY_RECOUNT_ACCOUNT', () => { @@ -12,7 +11,6 @@ describe('JF_TRANSFER_NATIONAL_PARTY_RECOUNT_ACCOUNT', () => { it('should create an instance', () => { expect(transactionType).toBeTruthy(); expect(transactionType.scheduleId).toBe('A'); - expect(transactionType.transactionGroup).toBeInstanceOf(TransactionGroupE); }); it('#factory() should return a SchATransaction', () => { diff --git a/front-end/src/app/shared/models/transaction-types/JF_TRANSFER_NATIONAL_PARTY_RECOUNT_ACCOUNT.model.ts b/front-end/src/app/shared/models/transaction-types/JF_TRANSFER_NATIONAL_PARTY_RECOUNT_ACCOUNT.model.ts index 8255fa6c76..a48dfba1ec 100644 --- a/front-end/src/app/shared/models/transaction-types/JF_TRANSFER_NATIONAL_PARTY_RECOUNT_ACCOUNT.model.ts +++ b/front-end/src/app/shared/models/transaction-types/JF_TRANSFER_NATIONAL_PARTY_RECOUNT_ACCOUNT.model.ts @@ -2,13 +2,14 @@ import { LabelUtils } from 'app/shared/utils/label.utils'; import { schema } from 'fecfile-validate/fecfile_validate_js/dist/JF_TRANSFER_NATIONAL_PARTY_RECOUNT_ACCOUNT'; import { SchATransactionType } from '../scha-transaction-type.model'; import { SchATransaction, ScheduleATransactionTypeLabels, ScheduleATransactionTypes } from '../scha-transaction.model'; -import { TransactionGroupE } from '../transaction-groups/transaction-group-e.model'; import { STANDARD_PARENT_CONTROLS, TransactionNavigationControls } from '../transaction-navigation-controls.model'; import { SubTransactionGroup } from '../transaction-type.model'; import { AggregationGroups } from '../transaction.model'; +import { COMMITTEE, COMMITTEE_FORM_FIELDS } from 'app/shared/utils/transaction-type-properties'; export class JF_TRANSFER_NATIONAL_PARTY_RECOUNT_ACCOUNT extends SchATransactionType { - transactionGroup = new TransactionGroupE(); + formFields = COMMITTEE_FORM_FIELDS; + contactTypeOptions = COMMITTEE; title = LabelUtils.get( ScheduleATransactionTypeLabels, ScheduleATransactionTypes.JF_TRANSFER_NATIONAL_PARTY_RECOUNT_ACCOUNT diff --git a/front-end/src/app/shared/models/transaction-types/JOINT_FUNDRAISING_TRANSFER.model.spec.ts b/front-end/src/app/shared/models/transaction-types/JOINT_FUNDRAISING_TRANSFER.model.spec.ts index a8757ab439..8d453273b4 100644 --- a/front-end/src/app/shared/models/transaction-types/JOINT_FUNDRAISING_TRANSFER.model.spec.ts +++ b/front-end/src/app/shared/models/transaction-types/JOINT_FUNDRAISING_TRANSFER.model.spec.ts @@ -1,5 +1,4 @@ import { SchATransaction, ScheduleATransactionTypes } from '../scha-transaction.model'; -import { TransactionGroupE } from '../transaction-groups/transaction-group-e.model'; import { JOINT_FUNDRAISING_TRANSFER } from './JOINT_FUNDRAISING_TRANSFER.model'; describe('JOINT_FUNDRAISING_TRANSFER', () => { @@ -12,7 +11,6 @@ describe('JOINT_FUNDRAISING_TRANSFER', () => { it('should create an instance', () => { expect(transactionType).toBeTruthy(); expect(transactionType.scheduleId).toBe('A'); - expect(transactionType.transactionGroup).toBeInstanceOf(TransactionGroupE); }); it('#factory() should return a SchATransaction', () => { diff --git a/front-end/src/app/shared/models/transaction-types/JOINT_FUNDRAISING_TRANSFER.model.ts b/front-end/src/app/shared/models/transaction-types/JOINT_FUNDRAISING_TRANSFER.model.ts index e65ac33bbd..165977b3b3 100644 --- a/front-end/src/app/shared/models/transaction-types/JOINT_FUNDRAISING_TRANSFER.model.ts +++ b/front-end/src/app/shared/models/transaction-types/JOINT_FUNDRAISING_TRANSFER.model.ts @@ -2,13 +2,14 @@ import { LabelUtils } from 'app/shared/utils/label.utils'; import { schema } from 'fecfile-validate/fecfile_validate_js/dist/JOINT_FUNDRAISING_TRANSFER'; import { SchATransactionType } from '../scha-transaction-type.model'; import { SchATransaction, ScheduleATransactionTypeLabels, ScheduleATransactionTypes } from '../scha-transaction.model'; -import { TransactionGroupE } from '../transaction-groups/transaction-group-e.model'; import { STANDARD_PARENT_CONTROLS, TransactionNavigationControls } from '../transaction-navigation-controls.model'; import { SubTransactionGroup } from '../transaction-type.model'; import { AggregationGroups } from '../transaction.model'; +import { COMMITTEE, COMMITTEE_FORM_FIELDS } from 'app/shared/utils/transaction-type-properties'; export class JOINT_FUNDRAISING_TRANSFER extends SchATransactionType { - transactionGroup = new TransactionGroupE(); + formFields = COMMITTEE_FORM_FIELDS; + contactTypeOptions = COMMITTEE; title = LabelUtils.get(ScheduleATransactionTypeLabels, ScheduleATransactionTypes.JOINT_FUNDRAISING_TRANSFER); schema = schema; override subTransactionConfig = new SubTransactionGroup('Joint Fundraising Transfer Memo', [ diff --git a/front-end/src/app/shared/models/transaction-types/LOAN_BY_COMMITTEE.model.spec.ts b/front-end/src/app/shared/models/transaction-types/LOAN_BY_COMMITTEE.model.spec.ts new file mode 100644 index 0000000000..6cc6ad8604 --- /dev/null +++ b/front-end/src/app/shared/models/transaction-types/LOAN_BY_COMMITTEE.model.spec.ts @@ -0,0 +1,20 @@ +import { SchCTransaction, ScheduleCTransactionTypes } from '../schc-transaction.model'; +import { getTestTransactionByType } from 'app/shared/utils/unit-test.utils'; + +describe('LOAN_BY_COMMITTEE', () => { + let transaction: SchCTransaction; + + beforeEach(() => { + transaction = getTestTransactionByType(ScheduleCTransactionTypes.LOAN_BY_COMMITTEE) as SchCTransaction; + }); + + it('should create an instance', () => { + expect(transaction.transactionType).toBeTruthy(); + expect(transaction.transactionType?.scheduleId).toBe('C'); + }); + + it('#factory() should return a SchATransaction', () => { + expect(transaction.form_type).toBe('SC/9'); + expect(transaction.transaction_type_identifier).toBe(ScheduleCTransactionTypes.LOAN_BY_COMMITTEE); + }); +}); diff --git a/front-end/src/app/shared/models/transaction-types/LOAN_BY_COMMITTEE.model.ts b/front-end/src/app/shared/models/transaction-types/LOAN_BY_COMMITTEE.model.ts new file mode 100644 index 0000000000..16d1354748 --- /dev/null +++ b/front-end/src/app/shared/models/transaction-types/LOAN_BY_COMMITTEE.model.ts @@ -0,0 +1,81 @@ +import { LabelUtils } from 'app/shared/utils/label.utils'; +import { schema } from 'fecfile-validate/fecfile_validate_js/dist/LOANS'; +import { SchCTransactionType } from '../schc-transaction-type.model'; +import { SchCTransaction, ScheduleCTransactionTypeLabels, ScheduleCTransactionTypes } from '../schc-transaction.model'; +import { + CANCEL_CONTROL, + SAVE_DOUBLE_ENTRY_LIST_CONTROL, + TransactionNavigationControls, + NavigationControl, + NavigationAction, + NavigationDestination, +} from '../transaction-navigation-controls.model'; +import { hasNoContact } from '../transaction.model'; +import { SubTransactionGroup } from '../transaction-type.model'; +import { ScheduleBTransactionTypes } from '../schb-transaction.model'; +import { + COMMITTEE, + LOAN_FINANCE_FIELDS, + LOAN_TERMS_FIELDS, + ORG_FIELDS, +} from 'app/shared/utils/transaction-type-properties'; + +export class LOAN_BY_COMMITTEE extends SchCTransactionType { + override formFields = [ + ...ORG_FIELDS, + ...LOAN_FINANCE_FIELDS, + ...LOAN_TERMS_FIELDS, + 'committee_fec_id', + 'street_1', + 'street_2', + 'city', + 'state', + 'zip', + 'date', + 'amount', + 'memo_code', + 'text4000', + ]; + contactTypeOptions = COMMITTEE; + override showStandardAmount = false; + override doMemoCodeDateCheck = false; + title = LabelUtils.get(ScheduleCTransactionTypeLabels, ScheduleCTransactionTypes.LOAN_BY_COMMITTEE); + + override description = + 'This loan type automatically creates an associated transaction. Saving a loan by committee will automatically create an associated disbursement.'; + override accordionTitle = 'ENTER DATA'; + override accordionSubText = 'Enter lendee, loan, and terms information for a loan by committee'; + override formTitle = undefined; + override footer = + 'The information in this loan will automatically create a related disbursement. Review the disbursement; enter a purpose of disbursement or note/memo text; or continue without reviewing and “Save transactions.”'; + override contactTitle = 'Lendee'; + override contactLookupLabel = 'LENDEE LOOKUP'; + + schema = schema; + override apiEndpoint = '/transactions/save-pair'; + override dependentChildTransactionType = ScheduleBTransactionTypes.LOAN_MADE; + override subTransactionConfig = new SubTransactionGroup('Guarantors', []); + override navigationControls: TransactionNavigationControls = new TransactionNavigationControls( + [ + new NavigationControl( + NavigationAction.SAVE, + NavigationDestination.CHILD, + 'Add loan guarantor', + 'p-button-warning', + hasNoContact, + () => true, + 'pi pi-plus' + ), + ], + [CANCEL_CONTROL], + [SAVE_DOUBLE_ENTRY_LIST_CONTROL] + ); + + getNewTransaction() { + return SchCTransaction.fromJSON({ + form_type: 'SC/9', + transaction_type_identifier: ScheduleCTransactionTypes.LOAN_BY_COMMITTEE, + receipt_line_number: '27', + }); + } +} diff --git a/front-end/src/app/shared/models/transaction-types/LOAN_MADE.model.spec.ts b/front-end/src/app/shared/models/transaction-types/LOAN_MADE.model.spec.ts new file mode 100644 index 0000000000..e987d0e443 --- /dev/null +++ b/front-end/src/app/shared/models/transaction-types/LOAN_MADE.model.spec.ts @@ -0,0 +1,25 @@ +import { LOAN_MADE } from './LOAN_MADE.model'; +import { SchBTransaction, ScheduleBTransactionTypes } from '../schb-transaction.model'; + +describe('LOAN_MADE', () => { + let transactionType: LOAN_MADE; + + beforeEach(() => { + transactionType = new LOAN_MADE(); + }); + + it('should create an instance', () => { + expect(transactionType).toBeTruthy(); + expect(transactionType.scheduleId).toBe('B'); + }); + + it('#factory() should return a SchBTransaction', () => { + const transaction: SchBTransaction = transactionType.getNewTransaction(); + expect(transaction.form_type).toBe('SB27'); + expect(transaction.transaction_type_identifier).toBe(ScheduleBTransactionTypes.LOAN_MADE); + }); + + it('#generatePurposeDescription() should generate a string', () => { + expect(transactionType?.generatePurposeDescription).toBeUndefined(); + }); +}); diff --git a/front-end/src/app/shared/models/transaction-types/LOAN_MADE.model.ts b/front-end/src/app/shared/models/transaction-types/LOAN_MADE.model.ts new file mode 100644 index 0000000000..b111d3b923 --- /dev/null +++ b/front-end/src/app/shared/models/transaction-types/LOAN_MADE.model.ts @@ -0,0 +1,52 @@ +import { schema } from 'fecfile-validate/fecfile_validate_js/dist/LOAN_MADE'; +import { SchBTransaction, ScheduleBTransactionTypes, ScheduleBTransactionTypeLabels } from '../schb-transaction.model'; +import { TemplateMapKeyType } from '../transaction-type.model'; +import { SchBTransactionType } from '../schb-transaction-type.model'; +import { LabelUtils } from 'app/shared/utils/label.utils'; +import { COMMITTEE, CORE_FIELDS } from 'app/shared/utils/transaction-type-properties'; + +export class LOAN_MADE extends SchBTransactionType { + override formFields = [...CORE_FIELDS, 'organization_name', 'committee_fec_id']; + contactTypeOptions = COMMITTEE; + override isDependentChild = true; + title = LabelUtils.get(ScheduleBTransactionTypeLabels, ScheduleBTransactionTypes.LOAN_MADE); + schema = schema; + override useParentContact = true; + override doMemoCodeDateCheck = false; + override showAggregate = false; + override inheritedFields = [ + 'entity_type', + 'organization_name', + 'committee_fec_id', + 'street_1', + 'street_2', + 'city', + 'state', + 'zip', + 'date', + 'amount', + 'memo_code', + ] as TemplateMapKeyType[]; + + constructor() { + super(); + // No category code info collected for this transaction type. + // Hide the field in the additional-info component by removing + // its value in the templateMap. + this.templateMap['category_code'] = ''; + } + + override description = + 'Only the Purpose of Disbursement and Note/Memo Text are editable. To update any errors found, return to ENTER DATA to update loan information.'; + override accordionTitle = 'AUTO-POPULATED'; + override accordionSubText = + 'Review information and enter purpose of disbursement or note/memo text for the loan made'; + override contactTitle = 'Lendee'; + + getNewTransaction() { + return SchBTransaction.fromJSON({ + form_type: 'SB27', + transaction_type_identifier: ScheduleBTransactionTypes.LOAN_MADE, + }); + } +} diff --git a/front-end/src/app/shared/models/transaction-types/LOAN_RECEIVED_FROM_INDIVIDUAL.model.spec.ts b/front-end/src/app/shared/models/transaction-types/LOAN_RECEIVED_FROM_INDIVIDUAL.model.spec.ts new file mode 100644 index 0000000000..5630641a6b --- /dev/null +++ b/front-end/src/app/shared/models/transaction-types/LOAN_RECEIVED_FROM_INDIVIDUAL.model.spec.ts @@ -0,0 +1,20 @@ +import { SchCTransaction, ScheduleCTransactionTypes } from '../schc-transaction.model'; +import { getTestTransactionByType } from 'app/shared/utils/unit-test.utils'; + +describe('LOAN_RECEIVED_FROM_INDIVIDUAL', () => { + let transaction: SchCTransaction; + + beforeEach(() => { + transaction = getTestTransactionByType(ScheduleCTransactionTypes.LOAN_RECEIVED_FROM_INDIVIDUAL) as SchCTransaction; + }); + + it('should create an instance', () => { + expect(transaction.transactionType).toBeTruthy(); + expect(transaction.transactionType?.scheduleId).toBe('C'); + }); + + it('#factory() should return a SchATransaction', () => { + expect(transaction.form_type).toBe('SC/10'); + expect(transaction.transaction_type_identifier).toBe(ScheduleCTransactionTypes.LOAN_RECEIVED_FROM_INDIVIDUAL); + }); +}); diff --git a/front-end/src/app/shared/models/transaction-types/LOAN_RECEIVED_FROM_INDIVIDUAL.model.ts b/front-end/src/app/shared/models/transaction-types/LOAN_RECEIVED_FROM_INDIVIDUAL.model.ts new file mode 100644 index 0000000000..5913170c11 --- /dev/null +++ b/front-end/src/app/shared/models/transaction-types/LOAN_RECEIVED_FROM_INDIVIDUAL.model.ts @@ -0,0 +1,74 @@ +import { LabelUtils } from 'app/shared/utils/label.utils'; +import { schema } from 'fecfile-validate/fecfile_validate_js/dist/LOANS'; +import { SchCTransactionType } from '../schc-transaction-type.model'; +import { SchCTransaction, ScheduleCTransactionTypeLabels, ScheduleCTransactionTypes } from '../schc-transaction.model'; +import { + CANCEL_CONTROL, + SAVE_DOUBLE_ENTRY_LIST_CONTROL, + TransactionNavigationControls, + NavigationControl, + NavigationAction, + NavigationDestination, +} from '../transaction-navigation-controls.model'; +import { hasNoContact } from '../transaction.model'; +import { SubTransactionGroup } from '../transaction-type.model'; +import { ScheduleATransactionTypes } from '../scha-transaction.model'; +import { + COM_FIELDS, + CORE_FIELDS, + INDIVIDUAL_FIELDS, + INDIVIDUAL_ORGANIZATION_COMMITTEE, + LOAN_FINANCE_FIELDS, + LOAN_TERMS_FIELDS, +} from 'app/shared/utils/transaction-type-properties'; + +export class LOAN_RECEIVED_FROM_INDIVIDUAL extends SchCTransactionType { + override formFields = [ + ...CORE_FIELDS, + ...INDIVIDUAL_FIELDS, + ...COM_FIELDS, + ...LOAN_FINANCE_FIELDS, + ...LOAN_TERMS_FIELDS, + ]; + contactTypeOptions = INDIVIDUAL_ORGANIZATION_COMMITTEE; + override showStandardAmount = false; + override doMemoCodeDateCheck = false; + title = LabelUtils.get(ScheduleCTransactionTypeLabels, ScheduleCTransactionTypes.LOAN_RECEIVED_FROM_INDIVIDUAL); + + override description = 'Saving a loan received from individual will automatically create a related receipt.'; + override accordionTitle = 'ENTER DATA'; + override accordionSubText = 'Enter lender, loan, and terms information for a loan received from individual'; + override formTitle = undefined; + override footer = + 'The information in this loan will automatically create a related receipt. Review the receipt; enter a purpose of receipt or note/memo text; or continue without reviewing and “Save transactions.”'; + override contactTitle = 'Lender'; + override contactLookupLabel = 'LENDER LOOKUP'; + + schema = schema; + override apiEndpoint = '/transactions/save-pair'; + override dependentChildTransactionType = ScheduleATransactionTypes.LOAN_RECEIVED_FROM_INDIVIDUAL_RECEIPT; + override subTransactionConfig = new SubTransactionGroup('Guarantors', []); + override navigationControls: TransactionNavigationControls = new TransactionNavigationControls( + [ + new NavigationControl( + NavigationAction.SAVE, + NavigationDestination.CHILD, + 'Add loan guarantor', + 'p-button-warning', + hasNoContact, + () => true, + 'pi pi-plus' + ), + ], + [CANCEL_CONTROL], + [SAVE_DOUBLE_ENTRY_LIST_CONTROL] + ); + + getNewTransaction() { + return SchCTransaction.fromJSON({ + form_type: 'SC/10', + transaction_type_identifier: ScheduleCTransactionTypes.LOAN_RECEIVED_FROM_INDIVIDUAL, + receipt_line_number: '13', + }); + } +} diff --git a/front-end/src/app/shared/models/transaction-types/LOAN_RECEIVED_FROM_INDIVIDUAL_RECEIPT.model.spec.ts b/front-end/src/app/shared/models/transaction-types/LOAN_RECEIVED_FROM_INDIVIDUAL_RECEIPT.model.spec.ts new file mode 100644 index 0000000000..7320b1baf1 --- /dev/null +++ b/front-end/src/app/shared/models/transaction-types/LOAN_RECEIVED_FROM_INDIVIDUAL_RECEIPT.model.spec.ts @@ -0,0 +1,29 @@ +import { LOAN_RECEIVED_FROM_INDIVIDUAL_RECEIPT } from './LOAN_RECEIVED_FROM_INDIVIDUAL_RECEIPT.model'; +import { SchATransaction, ScheduleATransactionTypes } from '../scha-transaction.model'; +import { AggregationGroups } from '../transaction.model'; + +describe('LOAN_RECEIVED_FROM_INDIVIDUAL_RECEIPT', () => { + let transactionType: LOAN_RECEIVED_FROM_INDIVIDUAL_RECEIPT; + + beforeEach(() => { + transactionType = new LOAN_RECEIVED_FROM_INDIVIDUAL_RECEIPT(); + }); + + it('should create an instance', () => { + expect(transactionType).toBeTruthy(); + expect(transactionType.scheduleId).toBe('A'); + }); + + it('#factory() should return a SchATransaction', () => { + const transaction: SchATransaction = transactionType.getNewTransaction(); + expect(transaction.form_type).toBe('SA13'); + expect(transaction.aggregation_group).toBe(AggregationGroups.GENERAL); + expect(transaction.transaction_type_identifier).toBe( + ScheduleATransactionTypes.LOAN_RECEIVED_FROM_INDIVIDUAL_RECEIPT + ); + }); + + it('#generatePurposeDescription() should generate a string', () => { + expect(transactionType?.generatePurposeDescription).toBeUndefined(); + }); +}); diff --git a/front-end/src/app/shared/models/transaction-types/LOAN_RECEIVED_FROM_INDIVIDUAL_RECEIPT.model.ts b/front-end/src/app/shared/models/transaction-types/LOAN_RECEIVED_FROM_INDIVIDUAL_RECEIPT.model.ts new file mode 100644 index 0000000000..4ed0773080 --- /dev/null +++ b/front-end/src/app/shared/models/transaction-types/LOAN_RECEIVED_FROM_INDIVIDUAL_RECEIPT.model.ts @@ -0,0 +1,40 @@ +import { schema } from 'fecfile-validate/fecfile_validate_js/dist/LOANS_RECEIVED'; +import { AggregationGroups } from '../transaction.model'; +import { SchATransaction, ScheduleATransactionTypes } from '../scha-transaction.model'; +import { TemplateMapKeyType } from '../transaction-type.model'; +import { SchATransactionType } from '../scha-transaction-type.model'; +import { + INDIVIDUAL_ORGANIZATION_FORM_FIELDS, + INDIVIDUAL_ORGANIZATION_COMMITTEE, + INDIVIDUAL_FIELDS, + ORG_FIELDS, + CORE_FIELDS, +} from 'app/shared/utils/transaction-type-properties'; + +export class LOAN_RECEIVED_FROM_INDIVIDUAL_RECEIPT extends SchATransactionType { + override formFields = INDIVIDUAL_ORGANIZATION_FORM_FIELDS; + override contactTypeOptions = INDIVIDUAL_ORGANIZATION_COMMITTEE; + override isDependentChild = true; + override doMemoCodeDateCheck = false; + title = 'Receipt'; + schema = schema; + override useParentContact = true; + override inheritedFields = [...CORE_FIELDS, ...INDIVIDUAL_FIELDS, ...ORG_FIELDS] as TemplateMapKeyType[]; + + override description = + 'Only the Purpose of Receipt and Note/Memo Text are editable. To update any errors found, return to the previous step to update loan information.'; + override accordionTitle = 'AUTO-POPULATED'; + override accordionSubText = 'Review information and enter purpose of description or note/memo text'; + override formTitle = 'Receipt'; + override footer = undefined; + override contactTitle = 'Contact'; + override contactLookupLabel = 'CONTACT LOOKUP'; + + getNewTransaction() { + return SchATransaction.fromJSON({ + form_type: 'SA13', + transaction_type_identifier: ScheduleATransactionTypes.LOAN_RECEIVED_FROM_INDIVIDUAL_RECEIPT, + aggregation_group: AggregationGroups.GENERAL, + }); + } +} diff --git a/front-end/src/app/shared/models/transaction-types/NATIONAL_PARTY_CONVENTION_ACCOUNT_DISBURSEMENT.model.spec.ts b/front-end/src/app/shared/models/transaction-types/NATIONAL_PARTY_CONVENTION_ACCOUNT_DISBURSEMENT.model.spec.ts index f146534711..6aacc6c629 100644 --- a/front-end/src/app/shared/models/transaction-types/NATIONAL_PARTY_CONVENTION_ACCOUNT_DISBURSEMENT.model.spec.ts +++ b/front-end/src/app/shared/models/transaction-types/NATIONAL_PARTY_CONVENTION_ACCOUNT_DISBURSEMENT.model.spec.ts @@ -1,5 +1,4 @@ import { SchBTransaction, ScheduleBTransactionTypes } from '../schb-transaction.model'; -import { TransactionGroupB } from '../transaction-groups/transaction-group-b.model'; import { NATIONAL_PARTY_CONVENTION_ACCOUNT_DISBURSEMENT } from './NATIONAL_PARTY_CONVENTION_ACCOUNT_DISBURSEMENT.model'; describe('NATIONAL_PARTY_CONVENTION_ACCOUNT_DISBURSEMENT', () => { @@ -12,7 +11,6 @@ describe('NATIONAL_PARTY_CONVENTION_ACCOUNT_DISBURSEMENT', () => { it('should create an instance', () => { expect(transactionType).toBeTruthy(); expect(transactionType.scheduleId).toBe('B'); - expect(transactionType.transactionGroup).toBeInstanceOf(TransactionGroupB); }); it('#factory() should return a SchBTransaction', () => { diff --git a/front-end/src/app/shared/models/transaction-types/NATIONAL_PARTY_CONVENTION_ACCOUNT_DISBURSEMENT.model.ts b/front-end/src/app/shared/models/transaction-types/NATIONAL_PARTY_CONVENTION_ACCOUNT_DISBURSEMENT.model.ts index e93551a443..9dad43b86e 100644 --- a/front-end/src/app/shared/models/transaction-types/NATIONAL_PARTY_CONVENTION_ACCOUNT_DISBURSEMENT.model.ts +++ b/front-end/src/app/shared/models/transaction-types/NATIONAL_PARTY_CONVENTION_ACCOUNT_DISBURSEMENT.model.ts @@ -2,19 +2,21 @@ import { LabelUtils } from 'app/shared/utils/label.utils'; import { schema } from 'fecfile-validate/fecfile_validate_js/dist/RECOUNT_AND_NP_DISBURSEMENTS'; import { SchBTransactionType } from '../schb-transaction-type.model'; import { SchBTransaction, ScheduleBTransactionTypeLabels, ScheduleBTransactionTypes } from '../schb-transaction.model'; -import { TransactionGroupB } from '../transaction-groups/transaction-group-b.model'; import { STANDARD_CONTROLS, TransactionNavigationControls } from '../transaction-navigation-controls.model'; import { AggregationGroups } from '../transaction.model'; -import { ContactTypes } from '../contact.model'; +import { + INDIVIDUAL_ORGANIZATION_B_FORM_FIELDS, + ORGANIZATION_INDIVIDUAL_COMMITTEE, +} from 'app/shared/utils/transaction-type-properties'; export class NATIONAL_PARTY_CONVENTION_ACCOUNT_DISBURSEMENT extends SchBTransactionType { - transactionGroup = new TransactionGroupB(); + formFields = INDIVIDUAL_ORGANIZATION_B_FORM_FIELDS; + override contactTypeOptions = ORGANIZATION_INDIVIDUAL_COMMITTEE; title = LabelUtils.get( ScheduleBTransactionTypeLabels, ScheduleBTransactionTypes.NATIONAL_PARTY_CONVENTION_ACCOUNT_DISBURSEMENT ); schema = schema; - override defaultContactTypeOption = ContactTypes.ORGANIZATION; override navigationControls: TransactionNavigationControls = STANDARD_CONTROLS; override purposeDescriptionPrefix = 'Pres. Nominating Convention Account: '; diff --git a/front-end/src/app/shared/models/transaction-types/NATIONAL_PARTY_HEADQUARTERS_ACCOUNT_DISBURSEMENT.model.spec.ts b/front-end/src/app/shared/models/transaction-types/NATIONAL_PARTY_HEADQUARTERS_ACCOUNT_DISBURSEMENT.model.spec.ts index 9e59aeb36a..9cdf6ce236 100644 --- a/front-end/src/app/shared/models/transaction-types/NATIONAL_PARTY_HEADQUARTERS_ACCOUNT_DISBURSEMENT.model.spec.ts +++ b/front-end/src/app/shared/models/transaction-types/NATIONAL_PARTY_HEADQUARTERS_ACCOUNT_DISBURSEMENT.model.spec.ts @@ -1,5 +1,4 @@ import { SchBTransaction, ScheduleBTransactionTypes } from '../schb-transaction.model'; -import { TransactionGroupB } from '../transaction-groups/transaction-group-b.model'; import { NATIONAL_PARTY_HEADQUARTERS_ACCOUNT_DISBURSEMENT } from './NATIONAL_PARTY_HEADQUARTERS_ACCOUNT_DISBURSEMENT.model'; describe('NATIONAL_PARTY_HEADQUARTERS_ACCOUNT_DISBURSEMENT', () => { @@ -12,7 +11,6 @@ describe('NATIONAL_PARTY_HEADQUARTERS_ACCOUNT_DISBURSEMENT', () => { it('should create an instance', () => { expect(transactionType).toBeTruthy(); expect(transactionType.scheduleId).toBe('B'); - expect(transactionType.transactionGroup).toBeInstanceOf(TransactionGroupB); }); it('#factory() should return a SchBTransaction', () => { diff --git a/front-end/src/app/shared/models/transaction-types/NATIONAL_PARTY_HEADQUARTERS_ACCOUNT_DISBURSEMENT.model.ts b/front-end/src/app/shared/models/transaction-types/NATIONAL_PARTY_HEADQUARTERS_ACCOUNT_DISBURSEMENT.model.ts index c37afeafa6..9a9f347e8a 100644 --- a/front-end/src/app/shared/models/transaction-types/NATIONAL_PARTY_HEADQUARTERS_ACCOUNT_DISBURSEMENT.model.ts +++ b/front-end/src/app/shared/models/transaction-types/NATIONAL_PARTY_HEADQUARTERS_ACCOUNT_DISBURSEMENT.model.ts @@ -2,19 +2,21 @@ import { LabelUtils } from 'app/shared/utils/label.utils'; import { schema } from 'fecfile-validate/fecfile_validate_js/dist/RECOUNT_AND_NP_DISBURSEMENTS'; import { SchBTransactionType } from '../schb-transaction-type.model'; import { SchBTransaction, ScheduleBTransactionTypeLabels, ScheduleBTransactionTypes } from '../schb-transaction.model'; -import { TransactionGroupB } from '../transaction-groups/transaction-group-b.model'; import { STANDARD_CONTROLS, TransactionNavigationControls } from '../transaction-navigation-controls.model'; import { AggregationGroups } from '../transaction.model'; -import { ContactTypes } from '../contact.model'; +import { + INDIVIDUAL_ORGANIZATION_B_FORM_FIELDS, + ORGANIZATION_INDIVIDUAL_COMMITTEE, +} from 'app/shared/utils/transaction-type-properties'; export class NATIONAL_PARTY_HEADQUARTERS_ACCOUNT_DISBURSEMENT extends SchBTransactionType { - transactionGroup = new TransactionGroupB(); + formFields = INDIVIDUAL_ORGANIZATION_B_FORM_FIELDS; + override contactTypeOptions = ORGANIZATION_INDIVIDUAL_COMMITTEE; title = LabelUtils.get( ScheduleBTransactionTypeLabels, ScheduleBTransactionTypes.NATIONAL_PARTY_HEADQUARTERS_ACCOUNT_DISBURSEMENT ); schema = schema; - override defaultContactTypeOption = ContactTypes.ORGANIZATION; override navigationControls: TransactionNavigationControls = STANDARD_CONTROLS; override purposeDescriptionPrefix = 'Headquarters Buildings Account: '; diff --git a/front-end/src/app/shared/models/transaction-types/NATIONAL_PARTY_RECOUNT_ACCOUNT_DISBURSEMENT.model.spec.ts b/front-end/src/app/shared/models/transaction-types/NATIONAL_PARTY_RECOUNT_ACCOUNT_DISBURSEMENT.model.spec.ts index 74e50db8f5..48f9efa988 100644 --- a/front-end/src/app/shared/models/transaction-types/NATIONAL_PARTY_RECOUNT_ACCOUNT_DISBURSEMENT.model.spec.ts +++ b/front-end/src/app/shared/models/transaction-types/NATIONAL_PARTY_RECOUNT_ACCOUNT_DISBURSEMENT.model.spec.ts @@ -1,5 +1,4 @@ import { SchBTransaction, ScheduleBTransactionTypes } from '../schb-transaction.model'; -import { TransactionGroupB } from '../transaction-groups/transaction-group-b.model'; import { NATIONAL_PARTY_RECOUNT_ACCOUNT_DISBURSEMENT } from './NATIONAL_PARTY_RECOUNT_ACCOUNT_DISBURSEMENT.model'; describe('NATIONAL_PARTY_RECOUNT_ACCOUNT_DISBURSEMENT', () => { @@ -12,7 +11,6 @@ describe('NATIONAL_PARTY_RECOUNT_ACCOUNT_DISBURSEMENT', () => { it('should create an instance', () => { expect(transactionType).toBeTruthy(); expect(transactionType.scheduleId).toBe('B'); - expect(transactionType.transactionGroup).toBeInstanceOf(TransactionGroupB); }); it('#factory() should return a SchBTransaction', () => { diff --git a/front-end/src/app/shared/models/transaction-types/NATIONAL_PARTY_RECOUNT_ACCOUNT_DISBURSEMENT.model.ts b/front-end/src/app/shared/models/transaction-types/NATIONAL_PARTY_RECOUNT_ACCOUNT_DISBURSEMENT.model.ts index e18dc8a15c..e20d8dc030 100644 --- a/front-end/src/app/shared/models/transaction-types/NATIONAL_PARTY_RECOUNT_ACCOUNT_DISBURSEMENT.model.ts +++ b/front-end/src/app/shared/models/transaction-types/NATIONAL_PARTY_RECOUNT_ACCOUNT_DISBURSEMENT.model.ts @@ -2,19 +2,21 @@ import { LabelUtils } from 'app/shared/utils/label.utils'; import { schema } from 'fecfile-validate/fecfile_validate_js/dist/RECOUNT_AND_NP_DISBURSEMENTS'; import { SchBTransactionType } from '../schb-transaction-type.model'; import { SchBTransaction, ScheduleBTransactionTypeLabels, ScheduleBTransactionTypes } from '../schb-transaction.model'; -import { TransactionGroupB } from '../transaction-groups/transaction-group-b.model'; import { STANDARD_CONTROLS, TransactionNavigationControls } from '../transaction-navigation-controls.model'; import { AggregationGroups } from '../transaction.model'; -import { ContactTypes } from '../contact.model'; +import { + INDIVIDUAL_ORGANIZATION_B_FORM_FIELDS, + ORGANIZATION_INDIVIDUAL_COMMITTEE, +} from 'app/shared/utils/transaction-type-properties'; export class NATIONAL_PARTY_RECOUNT_ACCOUNT_DISBURSEMENT extends SchBTransactionType { - transactionGroup = new TransactionGroupB(); + formFields = INDIVIDUAL_ORGANIZATION_B_FORM_FIELDS; + override contactTypeOptions = ORGANIZATION_INDIVIDUAL_COMMITTEE; title = LabelUtils.get( ScheduleBTransactionTypeLabels, ScheduleBTransactionTypes.NATIONAL_PARTY_RECOUNT_ACCOUNT_DISBURSEMENT ); schema = schema; - override defaultContactTypeOption = ContactTypes.ORGANIZATION; override navigationControls: TransactionNavigationControls = STANDARD_CONTROLS; override purposeDescriptionPrefix = 'Recount/Legal Proceedings Account: '; diff --git a/front-end/src/app/shared/models/transaction-types/NON_CONTRIBUTION_ACCOUNT_CREDIT_CARD_PAYMENT.model.spec.ts b/front-end/src/app/shared/models/transaction-types/NON_CONTRIBUTION_ACCOUNT_CREDIT_CARD_PAYMENT.model.spec.ts index bec6c7417c..d2e9d8f0a3 100644 --- a/front-end/src/app/shared/models/transaction-types/NON_CONTRIBUTION_ACCOUNT_CREDIT_CARD_PAYMENT.model.spec.ts +++ b/front-end/src/app/shared/models/transaction-types/NON_CONTRIBUTION_ACCOUNT_CREDIT_CARD_PAYMENT.model.spec.ts @@ -1,5 +1,4 @@ import { SchBTransaction, ScheduleBTransactionTypes } from '../schb-transaction.model'; -import { TransactionGroupD } from '../transaction-groups/transaction-group-d.model'; import { NON_CONTRIBUTION_ACCOUNT_CREDIT_CARD_PAYMENT } from './NON_CONTRIBUTION_ACCOUNT_CREDIT_CARD_PAYMENT.model'; describe('NON_CONTRIBUTION_ACCOUNT_CREDIT_CARD_PAYMENT', () => { @@ -12,7 +11,6 @@ describe('NON_CONTRIBUTION_ACCOUNT_CREDIT_CARD_PAYMENT', () => { it('should create an instance', () => { expect(transactionType).toBeTruthy(); expect(transactionType.scheduleId).toBe('B'); - expect(transactionType.transactionGroup).toBeInstanceOf(TransactionGroupD); }); it('#factory() should return a SchBTransaction', () => { diff --git a/front-end/src/app/shared/models/transaction-types/NON_CONTRIBUTION_ACCOUNT_CREDIT_CARD_PAYMENT.model.ts b/front-end/src/app/shared/models/transaction-types/NON_CONTRIBUTION_ACCOUNT_CREDIT_CARD_PAYMENT.model.ts index af37fca8c5..3f8ccbaa96 100644 --- a/front-end/src/app/shared/models/transaction-types/NON_CONTRIBUTION_ACCOUNT_CREDIT_CARD_PAYMENT.model.ts +++ b/front-end/src/app/shared/models/transaction-types/NON_CONTRIBUTION_ACCOUNT_CREDIT_CARD_PAYMENT.model.ts @@ -2,12 +2,13 @@ import { LabelUtils } from 'app/shared/utils/label.utils'; import { schema } from 'fecfile-validate/fecfile_validate_js/dist/NON_CONTRIBUTION_PARENTS'; import { SchBTransactionType } from '../schb-transaction-type.model'; import { SchBTransaction, ScheduleBTransactionTypeLabels, ScheduleBTransactionTypes } from '../schb-transaction.model'; -import { TransactionGroupD } from '../transaction-groups/transaction-group-d.model'; import { STANDARD_PARENT_CONTROLS, TransactionNavigationControls } from '../transaction-navigation-controls.model'; import { AggregationGroups } from '../transaction.model'; +import { ORGANIZATION_B_FORM_FIELDS, ORGANIZATION } from 'app/shared/utils/transaction-type-properties'; export class NON_CONTRIBUTION_ACCOUNT_CREDIT_CARD_PAYMENT extends SchBTransactionType { - transactionGroup = new TransactionGroupD(); + formFields = ORGANIZATION_B_FORM_FIELDS; + contactTypeOptions = ORGANIZATION; title = LabelUtils.get( ScheduleBTransactionTypeLabels, ScheduleBTransactionTypes.NON_CONTRIBUTION_ACCOUNT_CREDIT_CARD_PAYMENT diff --git a/front-end/src/app/shared/models/transaction-types/NON_CONTRIBUTION_ACCOUNT_CREDIT_CARD_PAYMENT_MEMO.model.spec.ts b/front-end/src/app/shared/models/transaction-types/NON_CONTRIBUTION_ACCOUNT_CREDIT_CARD_PAYMENT_MEMO.model.spec.ts index 4744096c1a..fb2f0cbc9c 100644 --- a/front-end/src/app/shared/models/transaction-types/NON_CONTRIBUTION_ACCOUNT_CREDIT_CARD_PAYMENT_MEMO.model.spec.ts +++ b/front-end/src/app/shared/models/transaction-types/NON_CONTRIBUTION_ACCOUNT_CREDIT_CARD_PAYMENT_MEMO.model.spec.ts @@ -1,5 +1,4 @@ import { SchBTransaction, ScheduleBTransactionTypes } from '../schb-transaction.model'; -import { TransactionGroupB } from '../transaction-groups/transaction-group-b.model'; import { NON_CONTRIBUTION_ACCOUNT_CREDIT_CARD_PAYMENT_MEMO } from './NON_CONTRIBUTION_ACCOUNT_CREDIT_CARD_PAYMENT_MEMO.model'; describe('NON_CONTRIBUTION_ACCOUNT_CREDIT_CARD_PAYMENT_MEMO', () => { @@ -12,7 +11,6 @@ describe('NON_CONTRIBUTION_ACCOUNT_CREDIT_CARD_PAYMENT_MEMO', () => { it('should create an instance', () => { expect(transactionType).toBeTruthy(); expect(transactionType.scheduleId).toBe('B'); - expect(transactionType.transactionGroup).toBeInstanceOf(TransactionGroupB); }); it('#factory() should return a SchBTransaction', () => { diff --git a/front-end/src/app/shared/models/transaction-types/NON_CONTRIBUTION_ACCOUNT_CREDIT_CARD_PAYMENT_MEMO.model.ts b/front-end/src/app/shared/models/transaction-types/NON_CONTRIBUTION_ACCOUNT_CREDIT_CARD_PAYMENT_MEMO.model.ts index 6bc3534b50..85c125fa74 100644 --- a/front-end/src/app/shared/models/transaction-types/NON_CONTRIBUTION_ACCOUNT_CREDIT_CARD_PAYMENT_MEMO.model.ts +++ b/front-end/src/app/shared/models/transaction-types/NON_CONTRIBUTION_ACCOUNT_CREDIT_CARD_PAYMENT_MEMO.model.ts @@ -1,20 +1,22 @@ import { LabelUtils } from 'app/shared/utils/label.utils'; import { schema } from 'fecfile-validate/fecfile_validate_js/dist/NON_CONTRIBUTION_MEMOS'; -import { ContactTypes } from '../contact.model'; import { SchBTransactionType } from '../schb-transaction-type.model'; import { SchBTransaction, ScheduleBTransactionTypeLabels, ScheduleBTransactionTypes } from '../schb-transaction.model'; -import { TransactionGroupB } from '../transaction-groups/transaction-group-b.model'; import { getChildNavigationControls, TransactionNavigationControls } from '../transaction-navigation-controls.model'; import { AggregationGroups } from '../transaction.model'; +import { + INDIVIDUAL_ORGANIZATION_B_FORM_FIELDS, + ORGANIZATION_INDIVIDUAL_COMMITTEE, +} from 'app/shared/utils/transaction-type-properties'; export class NON_CONTRIBUTION_ACCOUNT_CREDIT_CARD_PAYMENT_MEMO extends SchBTransactionType { - transactionGroup = new TransactionGroupB(); + formFields = INDIVIDUAL_ORGANIZATION_B_FORM_FIELDS; + override contactTypeOptions = ORGANIZATION_INDIVIDUAL_COMMITTEE; title = LabelUtils.get( ScheduleBTransactionTypeLabels, ScheduleBTransactionTypes.NON_CONTRIBUTION_ACCOUNT_CREDIT_CARD_PAYMENT_MEMO ); schema = schema; - override defaultContactTypeOption = ContactTypes.ORGANIZATION; override navigationControls: TransactionNavigationControls = getChildNavigationControls(); getNewTransaction() { diff --git a/front-end/src/app/shared/models/transaction-types/NON_CONTRIBUTION_ACCOUNT_DISBURSEMENT.model.spec.ts b/front-end/src/app/shared/models/transaction-types/NON_CONTRIBUTION_ACCOUNT_DISBURSEMENT.model.spec.ts index e3f404b95c..a6935dafa0 100644 --- a/front-end/src/app/shared/models/transaction-types/NON_CONTRIBUTION_ACCOUNT_DISBURSEMENT.model.spec.ts +++ b/front-end/src/app/shared/models/transaction-types/NON_CONTRIBUTION_ACCOUNT_DISBURSEMENT.model.spec.ts @@ -1,5 +1,4 @@ import { SchBTransaction, ScheduleBTransactionTypes } from '../schb-transaction.model'; -import { TransactionGroupB } from '../transaction-groups/transaction-group-b.model'; import { NON_CONTRIBUTION_ACCOUNT_DISBURSEMENT } from './NON_CONTRIBUTION_ACCOUNT_DISBURSEMENT.model'; describe('NON_CONTRIBUTION_ACCOUNT_DISBURSEMENT', () => { @@ -12,7 +11,6 @@ describe('NON_CONTRIBUTION_ACCOUNT_DISBURSEMENT', () => { it('should create an instance', () => { expect(transactionType).toBeTruthy(); expect(transactionType.scheduleId).toBe('B'); - expect(transactionType.transactionGroup).toBeInstanceOf(TransactionGroupB); }); it('#factory() should return a SchBTransaction', () => { diff --git a/front-end/src/app/shared/models/transaction-types/NON_CONTRIBUTION_ACCOUNT_DISBURSEMENT.model.ts b/front-end/src/app/shared/models/transaction-types/NON_CONTRIBUTION_ACCOUNT_DISBURSEMENT.model.ts index 30066e9848..10ea02b14d 100644 --- a/front-end/src/app/shared/models/transaction-types/NON_CONTRIBUTION_ACCOUNT_DISBURSEMENT.model.ts +++ b/front-end/src/app/shared/models/transaction-types/NON_CONTRIBUTION_ACCOUNT_DISBURSEMENT.model.ts @@ -1,20 +1,22 @@ import { LabelUtils } from 'app/shared/utils/label.utils'; import { schema } from 'fecfile-validate/fecfile_validate_js/dist/NON_CONTRIBUTION_ACCOUNT_DISBURSEMENT'; -import { ContactTypes } from '../contact.model'; import { SchBTransactionType } from '../schb-transaction-type.model'; import { SchBTransaction, ScheduleBTransactionTypeLabels, ScheduleBTransactionTypes } from '../schb-transaction.model'; -import { TransactionGroupB } from '../transaction-groups/transaction-group-b.model'; import { STANDARD_CONTROLS, TransactionNavigationControls } from '../transaction-navigation-controls.model'; import { AggregationGroups } from '../transaction.model'; +import { + INDIVIDUAL_ORGANIZATION_B_FORM_FIELDS, + ORGANIZATION_INDIVIDUAL_COMMITTEE, +} from 'app/shared/utils/transaction-type-properties'; export class NON_CONTRIBUTION_ACCOUNT_DISBURSEMENT extends SchBTransactionType { - transactionGroup = new TransactionGroupB(); + formFields = INDIVIDUAL_ORGANIZATION_B_FORM_FIELDS; + override contactTypeOptions = ORGANIZATION_INDIVIDUAL_COMMITTEE; title = LabelUtils.get( ScheduleBTransactionTypeLabels, ScheduleBTransactionTypes.NON_CONTRIBUTION_ACCOUNT_DISBURSEMENT ); schema = schema; - override defaultContactTypeOption = ContactTypes.ORGANIZATION; override navigationControls: TransactionNavigationControls = STANDARD_CONTROLS; override purposeDescriptionPrefix = 'Non-contribution Account: '; diff --git a/front-end/src/app/shared/models/transaction-types/NON_CONTRIBUTION_ACCOUNT_PAYMENT_TO_PAYROLL.model.spec.ts b/front-end/src/app/shared/models/transaction-types/NON_CONTRIBUTION_ACCOUNT_PAYMENT_TO_PAYROLL.model.spec.ts index 0224e7ff8b..65adba4a0f 100644 --- a/front-end/src/app/shared/models/transaction-types/NON_CONTRIBUTION_ACCOUNT_PAYMENT_TO_PAYROLL.model.spec.ts +++ b/front-end/src/app/shared/models/transaction-types/NON_CONTRIBUTION_ACCOUNT_PAYMENT_TO_PAYROLL.model.spec.ts @@ -1,5 +1,4 @@ import { SchBTransaction, ScheduleBTransactionTypes } from '../schb-transaction.model'; -import { TransactionGroupD } from '../transaction-groups/transaction-group-d.model'; import { NON_CONTRIBUTION_ACCOUNT_PAYMENT_TO_PAYROLL } from './NON_CONTRIBUTION_ACCOUNT_PAYMENT_TO_PAYROLL.model'; describe('NON_CONTRIBUTION_ACCOUNT_PAYMENT_TO_PAYROLL', () => { @@ -12,7 +11,6 @@ describe('NON_CONTRIBUTION_ACCOUNT_PAYMENT_TO_PAYROLL', () => { it('should create an instance', () => { expect(transactionType).toBeTruthy(); expect(transactionType.scheduleId).toBe('B'); - expect(transactionType.transactionGroup).toBeInstanceOf(TransactionGroupD); }); it('#factory() should return a SchBTransaction', () => { diff --git a/front-end/src/app/shared/models/transaction-types/NON_CONTRIBUTION_ACCOUNT_PAYMENT_TO_PAYROLL.model.ts b/front-end/src/app/shared/models/transaction-types/NON_CONTRIBUTION_ACCOUNT_PAYMENT_TO_PAYROLL.model.ts index be8e772b89..c526f8b964 100644 --- a/front-end/src/app/shared/models/transaction-types/NON_CONTRIBUTION_ACCOUNT_PAYMENT_TO_PAYROLL.model.ts +++ b/front-end/src/app/shared/models/transaction-types/NON_CONTRIBUTION_ACCOUNT_PAYMENT_TO_PAYROLL.model.ts @@ -2,12 +2,13 @@ import { LabelUtils } from 'app/shared/utils/label.utils'; import { schema } from 'fecfile-validate/fecfile_validate_js/dist/NON_CONTRIBUTION_PARENTS'; import { SchBTransactionType } from '../schb-transaction-type.model'; import { SchBTransaction, ScheduleBTransactionTypeLabels, ScheduleBTransactionTypes } from '../schb-transaction.model'; -import { TransactionGroupD } from '../transaction-groups/transaction-group-d.model'; import { STANDARD_PARENT_CONTROLS, TransactionNavigationControls } from '../transaction-navigation-controls.model'; import { AggregationGroups } from '../transaction.model'; +import { ORGANIZATION_B_FORM_FIELDS, ORGANIZATION } from 'app/shared/utils/transaction-type-properties'; export class NON_CONTRIBUTION_ACCOUNT_PAYMENT_TO_PAYROLL extends SchBTransactionType { - transactionGroup = new TransactionGroupD(); + formFields = ORGANIZATION_B_FORM_FIELDS; + contactTypeOptions = ORGANIZATION; title = LabelUtils.get( ScheduleBTransactionTypeLabels, ScheduleBTransactionTypes.NON_CONTRIBUTION_ACCOUNT_PAYMENT_TO_PAYROLL diff --git a/front-end/src/app/shared/models/transaction-types/NON_CONTRIBUTION_ACCOUNT_PAYMENT_TO_PAYROLL_MEMO.model.spec.ts b/front-end/src/app/shared/models/transaction-types/NON_CONTRIBUTION_ACCOUNT_PAYMENT_TO_PAYROLL_MEMO.model.spec.ts index eb98010814..283a36e06b 100644 --- a/front-end/src/app/shared/models/transaction-types/NON_CONTRIBUTION_ACCOUNT_PAYMENT_TO_PAYROLL_MEMO.model.spec.ts +++ b/front-end/src/app/shared/models/transaction-types/NON_CONTRIBUTION_ACCOUNT_PAYMENT_TO_PAYROLL_MEMO.model.spec.ts @@ -1,5 +1,4 @@ import { SchBTransaction, ScheduleBTransactionTypes } from '../schb-transaction.model'; -import { TransactionGroupC } from '../transaction-groups/transaction-group-c.model'; import { NON_CONTRIBUTION_ACCOUNT_PAYMENT_TO_PAYROLL_MEMO } from './NON_CONTRIBUTION_ACCOUNT_PAYMENT_TO_PAYROLL_MEMO.model'; describe('NON_CONTRIBUTION_ACCOUNT_PAYMENT_TO_PAYROLL_MEMO', () => { @@ -12,7 +11,6 @@ describe('NON_CONTRIBUTION_ACCOUNT_PAYMENT_TO_PAYROLL_MEMO', () => { it('should create an instance', () => { expect(transactionType).toBeTruthy(); expect(transactionType.scheduleId).toBe('B'); - expect(transactionType.transactionGroup).toBeInstanceOf(TransactionGroupC); }); it('#factory() should return a SchBTransaction', () => { diff --git a/front-end/src/app/shared/models/transaction-types/NON_CONTRIBUTION_ACCOUNT_PAYMENT_TO_PAYROLL_MEMO.model.ts b/front-end/src/app/shared/models/transaction-types/NON_CONTRIBUTION_ACCOUNT_PAYMENT_TO_PAYROLL_MEMO.model.ts index 4644f5e1c9..d3e156b62f 100644 --- a/front-end/src/app/shared/models/transaction-types/NON_CONTRIBUTION_ACCOUNT_PAYMENT_TO_PAYROLL_MEMO.model.ts +++ b/front-end/src/app/shared/models/transaction-types/NON_CONTRIBUTION_ACCOUNT_PAYMENT_TO_PAYROLL_MEMO.model.ts @@ -1,21 +1,22 @@ import { LabelUtils } from 'app/shared/utils/label.utils'; import { schema } from 'fecfile-validate/fecfile_validate_js/dist/NON_CONTRIBUTION_MEMOS'; -import { ContactTypes } from '../contact.model'; import { SchBTransactionType } from '../schb-transaction-type.model'; import { SchBTransaction, ScheduleBTransactionTypeLabels, ScheduleBTransactionTypes } from '../schb-transaction.model'; -import { TransactionGroupC } from '../transaction-groups/transaction-group-c.model'; import { getChildNavigationControls, TransactionNavigationControls } from '../transaction-navigation-controls.model'; import { AggregationGroups } from '../transaction.model'; +import { + INDIVIDUAL_ORGANIZATION_B_FORM_FIELDS, + INDIVIDUAL_ORGANIZATION_COMMITTEE, +} from 'app/shared/utils/transaction-type-properties'; export class NON_CONTRIBUTION_ACCOUNT_PAYMENT_TO_PAYROLL_MEMO extends SchBTransactionType { - transactionGroup = new TransactionGroupC(); + formFields = INDIVIDUAL_ORGANIZATION_B_FORM_FIELDS; + contactTypeOptions = INDIVIDUAL_ORGANIZATION_COMMITTEE; title = LabelUtils.get( ScheduleBTransactionTypeLabels, ScheduleBTransactionTypes.NON_CONTRIBUTION_ACCOUNT_PAYMENT_TO_PAYROLL_MEMO ); schema = schema; - override defaultContactTypeOption = ContactTypes.INDIVIDUAL; - override contactTypeOptions = [ContactTypes.INDIVIDUAL, ContactTypes.ORGANIZATION]; override navigationControls: TransactionNavigationControls = getChildNavigationControls(); getNewTransaction() { diff --git a/front-end/src/app/shared/models/transaction-types/NON_CONTRIBUTION_ACCOUNT_STAFF_REIMBURSEMENT.model.spec.ts b/front-end/src/app/shared/models/transaction-types/NON_CONTRIBUTION_ACCOUNT_STAFF_REIMBURSEMENT.model.spec.ts index 212b4549bd..ed84011e1b 100644 --- a/front-end/src/app/shared/models/transaction-types/NON_CONTRIBUTION_ACCOUNT_STAFF_REIMBURSEMENT.model.spec.ts +++ b/front-end/src/app/shared/models/transaction-types/NON_CONTRIBUTION_ACCOUNT_STAFF_REIMBURSEMENT.model.spec.ts @@ -1,5 +1,4 @@ import { SchBTransaction, ScheduleBTransactionTypes } from '../schb-transaction.model'; -import { TransactionGroupA } from '../transaction-groups/transaction-group-a.model'; import { NON_CONTRIBUTION_ACCOUNT_STAFF_REIMBURSEMENT } from './NON_CONTRIBUTION_ACCOUNT_STAFF_REIMBURSEMENT.model'; describe('NON_CONTRIBUTION_ACCOUNT_STAFF_REIMBURSEMENT', () => { @@ -12,7 +11,6 @@ describe('NON_CONTRIBUTION_ACCOUNT_STAFF_REIMBURSEMENT', () => { it('should create an instance', () => { expect(transactionType).toBeTruthy(); expect(transactionType.scheduleId).toBe('B'); - expect(transactionType.transactionGroup).toBeInstanceOf(TransactionGroupA); }); it('#factory() should return a SchBTransaction', () => { diff --git a/front-end/src/app/shared/models/transaction-types/NON_CONTRIBUTION_ACCOUNT_STAFF_REIMBURSEMENT.model.ts b/front-end/src/app/shared/models/transaction-types/NON_CONTRIBUTION_ACCOUNT_STAFF_REIMBURSEMENT.model.ts index 270f8598c1..6747515630 100644 --- a/front-end/src/app/shared/models/transaction-types/NON_CONTRIBUTION_ACCOUNT_STAFF_REIMBURSEMENT.model.ts +++ b/front-end/src/app/shared/models/transaction-types/NON_CONTRIBUTION_ACCOUNT_STAFF_REIMBURSEMENT.model.ts @@ -1,20 +1,19 @@ import { LabelUtils } from 'app/shared/utils/label.utils'; import { schema } from 'fecfile-validate/fecfile_validate_js/dist/NON_CONTRIBUTION_ACCOUNT_STAFF_REIMBURSEMENT'; -import { ContactTypes } from '../contact.model'; import { SchBTransactionType } from '../schb-transaction-type.model'; import { SchBTransaction, ScheduleBTransactionTypeLabels, ScheduleBTransactionTypes } from '../schb-transaction.model'; -import { TransactionGroupA } from '../transaction-groups/transaction-group-a.model'; import { STANDARD_PARENT_CONTROLS, TransactionNavigationControls } from '../transaction-navigation-controls.model'; import { AggregationGroups } from '../transaction.model'; +import { INDIVIDUAL_B_FORM_FIELDS, INDIVIDUAL } from 'app/shared/utils/transaction-type-properties'; export class NON_CONTRIBUTION_ACCOUNT_STAFF_REIMBURSEMENT extends SchBTransactionType { - transactionGroup = new TransactionGroupA(); + formFields = INDIVIDUAL_B_FORM_FIELDS; + contactTypeOptions = INDIVIDUAL; title = LabelUtils.get( ScheduleBTransactionTypeLabels, ScheduleBTransactionTypes.NON_CONTRIBUTION_ACCOUNT_STAFF_REIMBURSEMENT ); schema = schema; - override defaultContactTypeOption = ContactTypes.INDIVIDUAL; override subTransactionConfig = [ScheduleBTransactionTypes.NON_CONTRIBUTION_ACCOUNT_STAFF_REIMBURSEMENT_MEMO]; override navigationControls: TransactionNavigationControls = STANDARD_PARENT_CONTROLS; diff --git a/front-end/src/app/shared/models/transaction-types/NON_CONTRIBUTION_ACCOUNT_STAFF_REIMBURSEMENT_MEMO.model.spec.ts b/front-end/src/app/shared/models/transaction-types/NON_CONTRIBUTION_ACCOUNT_STAFF_REIMBURSEMENT_MEMO.model.spec.ts index 9f1c42e9fb..06f6112fed 100644 --- a/front-end/src/app/shared/models/transaction-types/NON_CONTRIBUTION_ACCOUNT_STAFF_REIMBURSEMENT_MEMO.model.spec.ts +++ b/front-end/src/app/shared/models/transaction-types/NON_CONTRIBUTION_ACCOUNT_STAFF_REIMBURSEMENT_MEMO.model.spec.ts @@ -1,5 +1,4 @@ import { SchBTransaction, ScheduleBTransactionTypes } from '../schb-transaction.model'; -import { TransactionGroupB } from '../transaction-groups/transaction-group-b.model'; import { NON_CONTRIBUTION_ACCOUNT_STAFF_REIMBURSEMENT_MEMO } from './NON_CONTRIBUTION_ACCOUNT_STAFF_REIMBURSEMENT_MEMO.model'; describe('NON_CONTRIBUTION_ACCOUNT_STAFF_REIMBURSEMENT_MEMO', () => { @@ -12,7 +11,6 @@ describe('NON_CONTRIBUTION_ACCOUNT_STAFF_REIMBURSEMENT_MEMO', () => { it('should create an instance', () => { expect(transactionType).toBeTruthy(); expect(transactionType.scheduleId).toBe('B'); - expect(transactionType.transactionGroup).toBeInstanceOf(TransactionGroupB); }); it('#factory() should return a SchBTransaction', () => { diff --git a/front-end/src/app/shared/models/transaction-types/NON_CONTRIBUTION_ACCOUNT_STAFF_REIMBURSEMENT_MEMO.model.ts b/front-end/src/app/shared/models/transaction-types/NON_CONTRIBUTION_ACCOUNT_STAFF_REIMBURSEMENT_MEMO.model.ts index cee1b6ba30..72de65428e 100644 --- a/front-end/src/app/shared/models/transaction-types/NON_CONTRIBUTION_ACCOUNT_STAFF_REIMBURSEMENT_MEMO.model.ts +++ b/front-end/src/app/shared/models/transaction-types/NON_CONTRIBUTION_ACCOUNT_STAFF_REIMBURSEMENT_MEMO.model.ts @@ -1,20 +1,22 @@ import { LabelUtils } from 'app/shared/utils/label.utils'; import { schema } from 'fecfile-validate/fecfile_validate_js/dist/NON_CONTRIBUTION_MEMOS'; -import { ContactTypes } from '../contact.model'; import { SchBTransactionType } from '../schb-transaction-type.model'; import { SchBTransaction, ScheduleBTransactionTypeLabels, ScheduleBTransactionTypes } from '../schb-transaction.model'; -import { TransactionGroupB } from '../transaction-groups/transaction-group-b.model'; import { getChildNavigationControls, TransactionNavigationControls } from '../transaction-navigation-controls.model'; import { AggregationGroups } from '../transaction.model'; +import { + INDIVIDUAL_ORGANIZATION_B_FORM_FIELDS, + ORGANIZATION_INDIVIDUAL_COMMITTEE, +} from 'app/shared/utils/transaction-type-properties'; export class NON_CONTRIBUTION_ACCOUNT_STAFF_REIMBURSEMENT_MEMO extends SchBTransactionType { - transactionGroup = new TransactionGroupB(); + formFields = INDIVIDUAL_ORGANIZATION_B_FORM_FIELDS; + override contactTypeOptions = ORGANIZATION_INDIVIDUAL_COMMITTEE; title = LabelUtils.get( ScheduleBTransactionTypeLabels, ScheduleBTransactionTypes.NON_CONTRIBUTION_ACCOUNT_STAFF_REIMBURSEMENT_MEMO ); schema = schema; - override defaultContactTypeOption = ContactTypes.ORGANIZATION; override navigationControls: TransactionNavigationControls = getChildNavigationControls(); getNewTransaction() { diff --git a/front-end/src/app/shared/models/transaction-types/OFFSET_TO_OPERATING_EXPENDITURES.model.spec.ts b/front-end/src/app/shared/models/transaction-types/OFFSET_TO_OPERATING_EXPENDITURES.model.spec.ts index b94a7dedb3..d89dffaf40 100644 --- a/front-end/src/app/shared/models/transaction-types/OFFSET_TO_OPERATING_EXPENDITURES.model.spec.ts +++ b/front-end/src/app/shared/models/transaction-types/OFFSET_TO_OPERATING_EXPENDITURES.model.spec.ts @@ -1,7 +1,6 @@ import { OFFSET_TO_OPERATING_EXPENDITURES } from './OFFSET_TO_OPERATING_EXPENDITURES.model'; import { SchATransaction, ScheduleATransactionTypes } from '../scha-transaction.model'; import { TransactionType } from 'app/shared/models/transaction-type.model'; -import { TransactionGroupB } from '../transaction-groups/transaction-group-b.model'; describe('OFFSET_TO_OPERATING_EXPENDITURES', () => { let transactionType: OFFSET_TO_OPERATING_EXPENDITURES; @@ -13,7 +12,6 @@ describe('OFFSET_TO_OPERATING_EXPENDITURES', () => { it('should create an instance', () => { expect(transactionType).toBeTruthy(); expect(transactionType.scheduleId).toBe('A'); - expect(transactionType.transactionGroup).toBeInstanceOf(TransactionGroupB); }); it('#factory() should return a SchATransaction', () => { diff --git a/front-end/src/app/shared/models/transaction-types/OFFSET_TO_OPERATING_EXPENDITURES.model.ts b/front-end/src/app/shared/models/transaction-types/OFFSET_TO_OPERATING_EXPENDITURES.model.ts index c97011ffcf..57ed95bc67 100644 --- a/front-end/src/app/shared/models/transaction-types/OFFSET_TO_OPERATING_EXPENDITURES.model.ts +++ b/front-end/src/app/shared/models/transaction-types/OFFSET_TO_OPERATING_EXPENDITURES.model.ts @@ -1,17 +1,19 @@ import { LabelUtils } from 'app/shared/utils/label.utils'; import { schema } from 'fecfile-validate/fecfile_validate_js/dist/OFFSET_TO_OPERATING_EXPENDITURES'; -import { ContactTypes } from '../contact.model'; import { SchATransactionType } from '../scha-transaction-type.model'; import { SchATransaction, ScheduleATransactionTypeLabels, ScheduleATransactionTypes } from '../scha-transaction.model'; -import { TransactionGroupB } from '../transaction-groups/transaction-group-b.model'; import { STANDARD_CONTROLS, TransactionNavigationControls } from '../transaction-navigation-controls.model'; import { AggregationGroups } from '../transaction.model'; +import { + INDIVIDUAL_ORGANIZATION_FORM_FIELDS, + ORGANIZATION_INDIVIDUAL_COMMITTEE, +} from 'app/shared/utils/transaction-type-properties'; export class OFFSET_TO_OPERATING_EXPENDITURES extends SchATransactionType { - transactionGroup = new TransactionGroupB(); + formFields = INDIVIDUAL_ORGANIZATION_FORM_FIELDS; + contactTypeOptions = ORGANIZATION_INDIVIDUAL_COMMITTEE; title = LabelUtils.get(ScheduleATransactionTypeLabels, ScheduleATransactionTypes.OFFSET_TO_OPERATING_EXPENDITURES); schema = schema; - override defaultContactTypeOption = ContactTypes.ORGANIZATION; override navigationControls: TransactionNavigationControls = STANDARD_CONTROLS; getNewTransaction() { diff --git a/front-end/src/app/shared/models/transaction-types/OPERATING_EXPENDITURE.model.spec.ts b/front-end/src/app/shared/models/transaction-types/OPERATING_EXPENDITURE.model.spec.ts index 4e4c61220e..2178cddd2f 100644 --- a/front-end/src/app/shared/models/transaction-types/OPERATING_EXPENDITURE.model.spec.ts +++ b/front-end/src/app/shared/models/transaction-types/OPERATING_EXPENDITURE.model.spec.ts @@ -1,7 +1,6 @@ import { OPERATING_EXPENDITURE } from './OPERATING_EXPENDITURE.model'; import { SchBTransaction, ScheduleBTransactionTypes } from '../schb-transaction.model'; import { TransactionType } from 'app/shared/models/transaction-type.model'; -import { TransactionGroupB } from '../transaction-groups/transaction-group-b.model'; describe('OPERATING_EXPENDITURE', () => { let transactionType: OPERATING_EXPENDITURE; @@ -13,7 +12,6 @@ describe('OPERATING_EXPENDITURE', () => { it('should create an instance', () => { expect(transactionType).toBeTruthy(); expect(transactionType.scheduleId).toBe('B'); - expect(transactionType.transactionGroup).toBeInstanceOf(TransactionGroupB); }); it('#factory() should return a SchBTransaction', () => { diff --git a/front-end/src/app/shared/models/transaction-types/OPERATING_EXPENDITURE.model.ts b/front-end/src/app/shared/models/transaction-types/OPERATING_EXPENDITURE.model.ts index c06dbda743..59f157d25b 100644 --- a/front-end/src/app/shared/models/transaction-types/OPERATING_EXPENDITURE.model.ts +++ b/front-end/src/app/shared/models/transaction-types/OPERATING_EXPENDITURE.model.ts @@ -1,17 +1,19 @@ import { LabelUtils } from 'app/shared/utils/label.utils'; import { schema } from 'fecfile-validate/fecfile_validate_js/dist/DISBURSEMENTS'; -import { ContactTypes } from '../contact.model'; import { SchBTransactionType } from '../schb-transaction-type.model'; import { SchBTransaction, ScheduleBTransactionTypeLabels, ScheduleBTransactionTypes } from '../schb-transaction.model'; -import { TransactionGroupB } from '../transaction-groups/transaction-group-b.model'; import { STANDARD_CONTROLS, TransactionNavigationControls } from '../transaction-navigation-controls.model'; import { AggregationGroups } from '../transaction.model'; +import { + INDIVIDUAL_ORGANIZATION_B_FORM_FIELDS, + ORGANIZATION_INDIVIDUAL_COMMITTEE, +} from 'app/shared/utils/transaction-type-properties'; export class OPERATING_EXPENDITURE extends SchBTransactionType { - transactionGroup = new TransactionGroupB(); + formFields = INDIVIDUAL_ORGANIZATION_B_FORM_FIELDS; + override contactTypeOptions = ORGANIZATION_INDIVIDUAL_COMMITTEE; title = LabelUtils.get(ScheduleBTransactionTypeLabels, ScheduleBTransactionTypes.OPERATING_EXPENDITURE); schema = schema; - override defaultContactTypeOption = ContactTypes.ORGANIZATION; override navigationControls: TransactionNavigationControls = STANDARD_CONTROLS; getNewTransaction() { diff --git a/front-end/src/app/shared/models/transaction-types/OPERATING_EXPENDITURE_CREDIT_CARD_PAYMENT.model.spec.ts b/front-end/src/app/shared/models/transaction-types/OPERATING_EXPENDITURE_CREDIT_CARD_PAYMENT.model.spec.ts index 4cb611d22e..9316518cd9 100644 --- a/front-end/src/app/shared/models/transaction-types/OPERATING_EXPENDITURE_CREDIT_CARD_PAYMENT.model.spec.ts +++ b/front-end/src/app/shared/models/transaction-types/OPERATING_EXPENDITURE_CREDIT_CARD_PAYMENT.model.spec.ts @@ -1,5 +1,4 @@ import { SchBTransaction, ScheduleBTransactionTypes } from '../schb-transaction.model'; -import { TransactionGroupD } from '../transaction-groups/transaction-group-d.model'; import { OPERATING_EXPENDITURE_CREDIT_CARD_PAYMENT } from './OPERATING_EXPENDITURE_CREDIT_CARD_PAYMENT.model'; describe('OPERATING_EXPENDITURE_CREDIT_CARD_PAYMENT', () => { @@ -12,7 +11,6 @@ describe('OPERATING_EXPENDITURE_CREDIT_CARD_PAYMENT', () => { it('should create an instance', () => { expect(transactionType).toBeTruthy(); expect(transactionType.scheduleId).toBe('B'); - expect(transactionType.transactionGroup).toBeInstanceOf(TransactionGroupD); }); it('#factory() should return a SchBTransaction', () => { diff --git a/front-end/src/app/shared/models/transaction-types/OPERATING_EXPENDITURE_CREDIT_CARD_PAYMENT.model.ts b/front-end/src/app/shared/models/transaction-types/OPERATING_EXPENDITURE_CREDIT_CARD_PAYMENT.model.ts index c8fb38fce9..5507f09103 100644 --- a/front-end/src/app/shared/models/transaction-types/OPERATING_EXPENDITURE_CREDIT_CARD_PAYMENT.model.ts +++ b/front-end/src/app/shared/models/transaction-types/OPERATING_EXPENDITURE_CREDIT_CARD_PAYMENT.model.ts @@ -1,20 +1,19 @@ import { LabelUtils } from 'app/shared/utils/label.utils'; import { schema } from 'fecfile-validate/fecfile_validate_js/dist/DISBURSEMENT_PARENTS'; -import { ContactTypes } from '../contact.model'; import { SchBTransactionType } from '../schb-transaction-type.model'; import { SchBTransaction, ScheduleBTransactionTypeLabels, ScheduleBTransactionTypes } from '../schb-transaction.model'; -import { TransactionGroupD } from '../transaction-groups/transaction-group-d.model'; import { STANDARD_PARENT_CONTROLS, TransactionNavigationControls } from '../transaction-navigation-controls.model'; import { AggregationGroups } from '../transaction.model'; +import { ORGANIZATION_B_FORM_FIELDS, ORGANIZATION } from 'app/shared/utils/transaction-type-properties'; export class OPERATING_EXPENDITURE_CREDIT_CARD_PAYMENT extends SchBTransactionType { - transactionGroup = new TransactionGroupD(); + formFields = ORGANIZATION_B_FORM_FIELDS; + contactTypeOptions = ORGANIZATION; title = LabelUtils.get( ScheduleBTransactionTypeLabels, ScheduleBTransactionTypes.OPERATING_EXPENDITURE_CREDIT_CARD_PAYMENT ); schema = schema; - override defaultContactTypeOption = ContactTypes.ORGANIZATION; override subTransactionConfig = [ScheduleBTransactionTypes.OPERATING_EXPENDITURE_CREDIT_CARD_PAYMENT_MEMO]; override navigationControls: TransactionNavigationControls = STANDARD_PARENT_CONTROLS; diff --git a/front-end/src/app/shared/models/transaction-types/OPERATING_EXPENDITURE_CREDIT_CARD_PAYMENT_MEMO.model.spec.ts b/front-end/src/app/shared/models/transaction-types/OPERATING_EXPENDITURE_CREDIT_CARD_PAYMENT_MEMO.model.spec.ts index b82328a88c..b8539ea28b 100644 --- a/front-end/src/app/shared/models/transaction-types/OPERATING_EXPENDITURE_CREDIT_CARD_PAYMENT_MEMO.model.spec.ts +++ b/front-end/src/app/shared/models/transaction-types/OPERATING_EXPENDITURE_CREDIT_CARD_PAYMENT_MEMO.model.spec.ts @@ -1,5 +1,4 @@ import { SchBTransaction, ScheduleBTransactionTypes } from '../schb-transaction.model'; -import { TransactionGroupB } from '../transaction-groups/transaction-group-b.model'; import { OPERATING_EXPENDITURE_CREDIT_CARD_PAYMENT_MEMO } from './OPERATING_EXPENDITURE_CREDIT_CARD_PAYMENT_MEMO.model'; describe('OPERATING_EXPENDITURE_CREDIT_CARD_PAYMENT_MEMO', () => { @@ -12,7 +11,6 @@ describe('OPERATING_EXPENDITURE_CREDIT_CARD_PAYMENT_MEMO', () => { it('should create an instance', () => { expect(transactionType).toBeTruthy(); expect(transactionType.scheduleId).toBe('B'); - expect(transactionType.transactionGroup).toBeInstanceOf(TransactionGroupB); }); it('#factory() should return a SchBTransaction', () => { diff --git a/front-end/src/app/shared/models/transaction-types/OPERATING_EXPENDITURE_CREDIT_CARD_PAYMENT_MEMO.model.ts b/front-end/src/app/shared/models/transaction-types/OPERATING_EXPENDITURE_CREDIT_CARD_PAYMENT_MEMO.model.ts index 61b03ff8af..87a4f59aaf 100644 --- a/front-end/src/app/shared/models/transaction-types/OPERATING_EXPENDITURE_CREDIT_CARD_PAYMENT_MEMO.model.ts +++ b/front-end/src/app/shared/models/transaction-types/OPERATING_EXPENDITURE_CREDIT_CARD_PAYMENT_MEMO.model.ts @@ -1,20 +1,22 @@ import { LabelUtils } from 'app/shared/utils/label.utils'; import { schema } from 'fecfile-validate/fecfile_validate_js/dist/DISBURSEMENT_MEMOS'; -import { ContactTypes } from '../contact.model'; import { SchBTransactionType } from '../schb-transaction-type.model'; import { SchBTransaction, ScheduleBTransactionTypeLabels, ScheduleBTransactionTypes } from '../schb-transaction.model'; -import { TransactionGroupB } from '../transaction-groups/transaction-group-b.model'; import { getChildNavigationControls, TransactionNavigationControls } from '../transaction-navigation-controls.model'; import { AggregationGroups } from '../transaction.model'; +import { + INDIVIDUAL_ORGANIZATION_B_FORM_FIELDS, + ORGANIZATION_INDIVIDUAL_COMMITTEE, +} from 'app/shared/utils/transaction-type-properties'; export class OPERATING_EXPENDITURE_CREDIT_CARD_PAYMENT_MEMO extends SchBTransactionType { - transactionGroup = new TransactionGroupB(); + formFields = INDIVIDUAL_ORGANIZATION_B_FORM_FIELDS; + override contactTypeOptions = ORGANIZATION_INDIVIDUAL_COMMITTEE; title = LabelUtils.get( ScheduleBTransactionTypeLabels, ScheduleBTransactionTypes.OPERATING_EXPENDITURE_CREDIT_CARD_PAYMENT_MEMO ); schema = schema; - override defaultContactTypeOption = ContactTypes.ORGANIZATION; override navigationControls: TransactionNavigationControls = getChildNavigationControls(); getNewTransaction() { diff --git a/front-end/src/app/shared/models/transaction-types/OPERATING_EXPENDITURE_PAYMENT_TO_PAYROLL.model.spec.ts b/front-end/src/app/shared/models/transaction-types/OPERATING_EXPENDITURE_PAYMENT_TO_PAYROLL.model.spec.ts index eb3ab75469..8d43d708e4 100644 --- a/front-end/src/app/shared/models/transaction-types/OPERATING_EXPENDITURE_PAYMENT_TO_PAYROLL.model.spec.ts +++ b/front-end/src/app/shared/models/transaction-types/OPERATING_EXPENDITURE_PAYMENT_TO_PAYROLL.model.spec.ts @@ -1,5 +1,4 @@ import { SchBTransaction, ScheduleBTransactionTypes } from '../schb-transaction.model'; -import { TransactionGroupD } from '../transaction-groups/transaction-group-d.model'; import { OPERATING_EXPENDITURE_PAYMENT_TO_PAYROLL } from './OPERATING_EXPENDITURE_PAYMENT_TO_PAYROLL.model'; describe('OPERATING_EXPENDITURE_PAYMENT_TO_PAYROLL', () => { @@ -12,7 +11,6 @@ describe('OPERATING_EXPENDITURE_PAYMENT_TO_PAYROLL', () => { it('should create an instance', () => { expect(transactionType).toBeTruthy(); expect(transactionType.scheduleId).toBe('B'); - expect(transactionType.transactionGroup).toBeInstanceOf(TransactionGroupD); }); it('#factory() should return a SchBTransaction', () => { diff --git a/front-end/src/app/shared/models/transaction-types/OPERATING_EXPENDITURE_PAYMENT_TO_PAYROLL.model.ts b/front-end/src/app/shared/models/transaction-types/OPERATING_EXPENDITURE_PAYMENT_TO_PAYROLL.model.ts index 6d9d83eee0..126e1f04ca 100644 --- a/front-end/src/app/shared/models/transaction-types/OPERATING_EXPENDITURE_PAYMENT_TO_PAYROLL.model.ts +++ b/front-end/src/app/shared/models/transaction-types/OPERATING_EXPENDITURE_PAYMENT_TO_PAYROLL.model.ts @@ -1,21 +1,20 @@ import { LabelUtils } from 'app/shared/utils/label.utils'; import { schema } from 'fecfile-validate/fecfile_validate_js/dist/DISBURSEMENT_PARENTS'; -import { ContactTypes } from '../contact.model'; import { SchBTransactionType } from '../schb-transaction-type.model'; import { SchBTransaction, ScheduleBTransactionTypeLabels, ScheduleBTransactionTypes } from '../schb-transaction.model'; -import { TransactionGroupD } from '../transaction-groups/transaction-group-d.model'; import { STANDARD_PARENT_CONTROLS, TransactionNavigationControls } from '../transaction-navigation-controls.model'; import { AggregationGroups } from '../transaction.model'; +import { ORGANIZATION_B_FORM_FIELDS, ORGANIZATION } from 'app/shared/utils/transaction-type-properties'; export class OPERATING_EXPENDITURE_PAYMENT_TO_PAYROLL extends SchBTransactionType { - transactionGroup = new TransactionGroupD(); + formFields = ORGANIZATION_B_FORM_FIELDS; + contactTypeOptions = ORGANIZATION; title = LabelUtils.get( ScheduleBTransactionTypeLabels, ScheduleBTransactionTypes.OPERATING_EXPENDITURE_PAYMENT_TO_PAYROLL ); override subTransactionConfig = [ScheduleBTransactionTypes.OPERATING_EXPENDITURE_PAYMENT_TO_PAYROLL_MEMO]; schema = schema; - override defaultContactTypeOption = ContactTypes.ORGANIZATION; override navigationControls: TransactionNavigationControls = STANDARD_PARENT_CONTROLS; getNewTransaction() { diff --git a/front-end/src/app/shared/models/transaction-types/OPERATING_EXPENDITURE_PAYMENT_TO_PAYROLL_MEMO.model.spec.ts b/front-end/src/app/shared/models/transaction-types/OPERATING_EXPENDITURE_PAYMENT_TO_PAYROLL_MEMO.model.spec.ts index 6bea758883..c0ccaacfda 100644 --- a/front-end/src/app/shared/models/transaction-types/OPERATING_EXPENDITURE_PAYMENT_TO_PAYROLL_MEMO.model.spec.ts +++ b/front-end/src/app/shared/models/transaction-types/OPERATING_EXPENDITURE_PAYMENT_TO_PAYROLL_MEMO.model.spec.ts @@ -1,6 +1,5 @@ import { TransactionType } from 'app/shared/models/transaction-type.model'; import { SchBTransaction, ScheduleBTransactionTypes } from '../schb-transaction.model'; -import { TransactionGroupB } from '../transaction-groups/transaction-group-b.model'; import { OPERATING_EXPENDITURE_PAYMENT_TO_PAYROLL_MEMO } from './OPERATING_EXPENDITURE_PAYMENT_TO_PAYROLL_MEMO.model'; describe('OPERATING_EXPENDITURE_PAYMENT_TO_PAYROLL_MEMO', () => { @@ -13,7 +12,6 @@ describe('OPERATING_EXPENDITURE_PAYMENT_TO_PAYROLL_MEMO', () => { it('should create an instance', () => { expect(transactionType).toBeTruthy(); expect(transactionType.scheduleId).toBe('B'); - expect(transactionType.transactionGroup).toBeInstanceOf(TransactionGroupB); }); it('#factory() should return a SchBTransaction', () => { diff --git a/front-end/src/app/shared/models/transaction-types/OPERATING_EXPENDITURE_PAYMENT_TO_PAYROLL_MEMO.model.ts b/front-end/src/app/shared/models/transaction-types/OPERATING_EXPENDITURE_PAYMENT_TO_PAYROLL_MEMO.model.ts index 39e80221cb..e95816686e 100644 --- a/front-end/src/app/shared/models/transaction-types/OPERATING_EXPENDITURE_PAYMENT_TO_PAYROLL_MEMO.model.ts +++ b/front-end/src/app/shared/models/transaction-types/OPERATING_EXPENDITURE_PAYMENT_TO_PAYROLL_MEMO.model.ts @@ -2,12 +2,16 @@ import { LabelUtils } from 'app/shared/utils/label.utils'; import { schema } from 'fecfile-validate/fecfile_validate_js/dist/DISBURSEMENT_MEMOS'; import { SchBTransactionType } from '../schb-transaction-type.model'; import { SchBTransaction, ScheduleBTransactionTypeLabels, ScheduleBTransactionTypes } from '../schb-transaction.model'; -import { TransactionGroupB } from '../transaction-groups/transaction-group-b.model'; import { getChildNavigationControls, TransactionNavigationControls } from '../transaction-navigation-controls.model'; import { AggregationGroups } from '../transaction.model'; +import { + INDIVIDUAL_ORGANIZATION_B_FORM_FIELDS, + INDIVIDUAL_ORGANIZATION_COMMITTEE, +} from 'app/shared/utils/transaction-type-properties'; export class OPERATING_EXPENDITURE_PAYMENT_TO_PAYROLL_MEMO extends SchBTransactionType { - transactionGroup = new TransactionGroupB(); + formFields = INDIVIDUAL_ORGANIZATION_B_FORM_FIELDS; + override contactTypeOptions = INDIVIDUAL_ORGANIZATION_COMMITTEE; title = LabelUtils.get( ScheduleBTransactionTypeLabels, ScheduleBTransactionTypes.OPERATING_EXPENDITURE_PAYMENT_TO_PAYROLL_MEMO diff --git a/front-end/src/app/shared/models/transaction-types/OPERATING_EXPENDITURE_STAFF_REIMBURSEMENT.model.spec.ts b/front-end/src/app/shared/models/transaction-types/OPERATING_EXPENDITURE_STAFF_REIMBURSEMENT.model.spec.ts index 7f277e8600..98b1c609a6 100644 --- a/front-end/src/app/shared/models/transaction-types/OPERATING_EXPENDITURE_STAFF_REIMBURSEMENT.model.spec.ts +++ b/front-end/src/app/shared/models/transaction-types/OPERATING_EXPENDITURE_STAFF_REIMBURSEMENT.model.spec.ts @@ -1,6 +1,5 @@ import { OPERATING_EXPENDITURE_STAFF_REIMBURSEMENT } from './OPERATING_EXPENDITURE_STAFF_REIMBURSEMENT.model'; import { SchBTransaction, ScheduleBTransactionTypes } from '../schb-transaction.model'; -import { TransactionGroupA } from '../transaction-groups/transaction-group-a.model'; describe('OPERATING_EXPENDITURE_STAFF_REIMBURSEMENT', () => { let transactionType: OPERATING_EXPENDITURE_STAFF_REIMBURSEMENT; @@ -12,7 +11,6 @@ describe('OPERATING_EXPENDITURE_STAFF_REIMBURSEMENT', () => { it('should create an instance', () => { expect(transactionType).toBeTruthy(); expect(transactionType.scheduleId).toBe('B'); - expect(transactionType.transactionGroup).toBeInstanceOf(TransactionGroupA); }); it('#factory() should return a SchBTransaction', () => { diff --git a/front-end/src/app/shared/models/transaction-types/OPERATING_EXPENDITURE_STAFF_REIMBURSEMENT.model.ts b/front-end/src/app/shared/models/transaction-types/OPERATING_EXPENDITURE_STAFF_REIMBURSEMENT.model.ts index 330afe1517..5c6388a4b9 100644 --- a/front-end/src/app/shared/models/transaction-types/OPERATING_EXPENDITURE_STAFF_REIMBURSEMENT.model.ts +++ b/front-end/src/app/shared/models/transaction-types/OPERATING_EXPENDITURE_STAFF_REIMBURSEMENT.model.ts @@ -1,20 +1,19 @@ import { LabelUtils } from 'app/shared/utils/label.utils'; import { schema } from 'fecfile-validate/fecfile_validate_js/dist/DISBURSEMENT_PARENTS_STAFF'; -import { ContactTypes } from '../contact.model'; import { SchBTransactionType } from '../schb-transaction-type.model'; import { SchBTransaction, ScheduleBTransactionTypeLabels, ScheduleBTransactionTypes } from '../schb-transaction.model'; -import { TransactionGroupA } from '../transaction-groups/transaction-group-a.model'; import { STANDARD_PARENT_CONTROLS, TransactionNavigationControls } from '../transaction-navigation-controls.model'; import { AggregationGroups } from '../transaction.model'; +import { INDIVIDUAL_B_FORM_FIELDS, INDIVIDUAL } from 'app/shared/utils/transaction-type-properties'; export class OPERATING_EXPENDITURE_STAFF_REIMBURSEMENT extends SchBTransactionType { - transactionGroup = new TransactionGroupA(); + formFields = INDIVIDUAL_B_FORM_FIELDS; + contactTypeOptions = INDIVIDUAL; title = LabelUtils.get( ScheduleBTransactionTypeLabels, ScheduleBTransactionTypes.OPERATING_EXPENDITURE_STAFF_REIMBURSEMENT ); schema = schema; - override defaultContactTypeOption = ContactTypes.INDIVIDUAL; override navigationControls: TransactionNavigationControls = STANDARD_PARENT_CONTROLS; override subTransactionConfig = [ScheduleBTransactionTypes.OPERATING_EXPENDITURE_STAFF_REIMBURSEMENT_MEMO]; diff --git a/front-end/src/app/shared/models/transaction-types/OPERATING_EXPENDITURE_STAFF_REIMBURSEMENT_MEMO.model.spec.ts b/front-end/src/app/shared/models/transaction-types/OPERATING_EXPENDITURE_STAFF_REIMBURSEMENT_MEMO.model.spec.ts index 28ecf31354..a29e0dd6b3 100644 --- a/front-end/src/app/shared/models/transaction-types/OPERATING_EXPENDITURE_STAFF_REIMBURSEMENT_MEMO.model.spec.ts +++ b/front-end/src/app/shared/models/transaction-types/OPERATING_EXPENDITURE_STAFF_REIMBURSEMENT_MEMO.model.spec.ts @@ -1,7 +1,6 @@ import { OPERATING_EXPENDITURE_STAFF_REIMBURSEMENT_MEMO } from './OPERATING_EXPENDITURE_STAFF_REIMBURSEMENT_MEMO.model'; import { SchBTransaction, ScheduleBTransactionTypes } from '../schb-transaction.model'; import { TransactionType } from 'app/shared/models/transaction-type.model'; -import { TransactionGroupB } from '../transaction-groups/transaction-group-b.model'; describe('OPERATING_EXPENDITURE_STAFF_REIMBURSEMENT_MEMO', () => { let transactionType: OPERATING_EXPENDITURE_STAFF_REIMBURSEMENT_MEMO; @@ -13,7 +12,6 @@ describe('OPERATING_EXPENDITURE_STAFF_REIMBURSEMENT_MEMO', () => { it('should create an instance', () => { expect(transactionType).toBeTruthy(); expect(transactionType.scheduleId).toBe('B'); - expect(transactionType.transactionGroup).toBeInstanceOf(TransactionGroupB); }); it('#factory() should return a SchBTransaction', () => { diff --git a/front-end/src/app/shared/models/transaction-types/OPERATING_EXPENDITURE_STAFF_REIMBURSEMENT_MEMO.model.ts b/front-end/src/app/shared/models/transaction-types/OPERATING_EXPENDITURE_STAFF_REIMBURSEMENT_MEMO.model.ts index f5f7e760be..6bd2c51e87 100644 --- a/front-end/src/app/shared/models/transaction-types/OPERATING_EXPENDITURE_STAFF_REIMBURSEMENT_MEMO.model.ts +++ b/front-end/src/app/shared/models/transaction-types/OPERATING_EXPENDITURE_STAFF_REIMBURSEMENT_MEMO.model.ts @@ -1,20 +1,22 @@ import { LabelUtils } from 'app/shared/utils/label.utils'; import { schema } from 'fecfile-validate/fecfile_validate_js/dist/DISBURSEMENT_MEMOS'; -import { ContactTypes } from '../contact.model'; import { SchBTransactionType } from '../schb-transaction-type.model'; import { SchBTransaction, ScheduleBTransactionTypeLabels, ScheduleBTransactionTypes } from '../schb-transaction.model'; -import { TransactionGroupB } from '../transaction-groups/transaction-group-b.model'; import { getChildNavigationControls, TransactionNavigationControls } from '../transaction-navigation-controls.model'; import { AggregationGroups } from '../transaction.model'; +import { + INDIVIDUAL_ORGANIZATION_B_FORM_FIELDS, + ORGANIZATION_INDIVIDUAL_COMMITTEE, +} from 'app/shared/utils/transaction-type-properties'; export class OPERATING_EXPENDITURE_STAFF_REIMBURSEMENT_MEMO extends SchBTransactionType { - transactionGroup = new TransactionGroupB(); + formFields = INDIVIDUAL_ORGANIZATION_B_FORM_FIELDS; + override contactTypeOptions = ORGANIZATION_INDIVIDUAL_COMMITTEE; title = LabelUtils.get( ScheduleBTransactionTypeLabels, ScheduleBTransactionTypes.OPERATING_EXPENDITURE_STAFF_REIMBURSEMENT_MEMO ); schema = schema; - override defaultContactTypeOption = ContactTypes.ORGANIZATION; override navigationControls: TransactionNavigationControls = getChildNavigationControls(); getNewTransaction() { diff --git a/front-end/src/app/shared/models/transaction-types/OPERATING_EXPENDITURE_VOID.model.spec.ts b/front-end/src/app/shared/models/transaction-types/OPERATING_EXPENDITURE_VOID.model.spec.ts index d68307b43a..f5ad12ddfd 100644 --- a/front-end/src/app/shared/models/transaction-types/OPERATING_EXPENDITURE_VOID.model.spec.ts +++ b/front-end/src/app/shared/models/transaction-types/OPERATING_EXPENDITURE_VOID.model.spec.ts @@ -1,7 +1,6 @@ import { OPERATING_EXPENDITURE_VOID } from './OPERATING_EXPENDITURE_VOID.model'; import { SchBTransaction, ScheduleBTransactionTypes } from '../schb-transaction.model'; import { TransactionType } from 'app/shared/models/transaction-type.model'; -import { TransactionGroupB } from '../transaction-groups/transaction-group-b.model'; describe('OPERATING_EXPENDITURE_VOID', () => { let transactionType: OPERATING_EXPENDITURE_VOID; @@ -13,7 +12,6 @@ describe('OPERATING_EXPENDITURE_VOID', () => { it('should create an instance', () => { expect(transactionType).toBeTruthy(); expect(transactionType.scheduleId).toBe('B'); - expect(transactionType.transactionGroup).toBeInstanceOf(TransactionGroupB); }); it('#factory() should return a SchBTransaction', () => { diff --git a/front-end/src/app/shared/models/transaction-types/OPERATING_EXPENDITURE_VOID.model.ts b/front-end/src/app/shared/models/transaction-types/OPERATING_EXPENDITURE_VOID.model.ts index 356acdffdc..d197b3f3b3 100644 --- a/front-end/src/app/shared/models/transaction-types/OPERATING_EXPENDITURE_VOID.model.ts +++ b/front-end/src/app/shared/models/transaction-types/OPERATING_EXPENDITURE_VOID.model.ts @@ -1,18 +1,20 @@ import { LabelUtils } from 'app/shared/utils/label.utils'; import { schema } from 'fecfile-validate/fecfile_validate_js/dist/DISBURSEMENTS'; -import { ContactTypes } from '../contact.model'; import { SchBTransactionType } from '../schb-transaction-type.model'; import { SchBTransaction, ScheduleBTransactionTypeLabels, ScheduleBTransactionTypes } from '../schb-transaction.model'; -import { TransactionGroupB } from '../transaction-groups/transaction-group-b.model'; import { STANDARD_CONTROLS, TransactionNavigationControls } from '../transaction-navigation-controls.model'; import { AggregationGroups } from '../transaction.model'; +import { + INDIVIDUAL_ORGANIZATION_B_FORM_FIELDS, + ORGANIZATION_INDIVIDUAL_COMMITTEE, +} from 'app/shared/utils/transaction-type-properties'; export class OPERATING_EXPENDITURE_VOID extends SchBTransactionType { - transactionGroup = new TransactionGroupB(); + formFields = INDIVIDUAL_ORGANIZATION_B_FORM_FIELDS; + override contactTypeOptions = ORGANIZATION_INDIVIDUAL_COMMITTEE; title = LabelUtils.get(ScheduleBTransactionTypeLabels, ScheduleBTransactionTypes.OPERATING_EXPENDITURE_VOID); schema = schema; override negativeAmountValueOnly = true; - override defaultContactTypeOption = ContactTypes.ORGANIZATION; override navigationControls: TransactionNavigationControls = STANDARD_CONTROLS; getNewTransaction() { diff --git a/front-end/src/app/shared/models/transaction-types/OTHER_COMMITTEE_NON_CONTRIBUTION_ACCOUNT.model.spec.ts b/front-end/src/app/shared/models/transaction-types/OTHER_COMMITTEE_NON_CONTRIBUTION_ACCOUNT.model.spec.ts index bb1bbc09ee..cbb5fd8a46 100644 --- a/front-end/src/app/shared/models/transaction-types/OTHER_COMMITTEE_NON_CONTRIBUTION_ACCOUNT.model.spec.ts +++ b/front-end/src/app/shared/models/transaction-types/OTHER_COMMITTEE_NON_CONTRIBUTION_ACCOUNT.model.spec.ts @@ -1,5 +1,4 @@ import { SchATransaction, ScheduleATransactionTypes } from '../scha-transaction.model'; -import { TransactionGroupE } from '../transaction-groups/transaction-group-e.model'; import { OTHER_COMMITTEE_NON_CONTRIBUTION_ACCOUNT } from './OTHER_COMMITTEE_NON_CONTRIBUTION_ACCOUNT.model'; describe('OTHER_COMMITTEE_NON_CONTRIBUTION_ACCOUNT', () => { @@ -12,7 +11,6 @@ describe('OTHER_COMMITTEE_NON_CONTRIBUTION_ACCOUNT', () => { it('should create an instance', () => { expect(transactionType).toBeTruthy(); expect(transactionType.scheduleId).toBe('A'); - expect(transactionType.transactionGroup).toBeInstanceOf(TransactionGroupE); }); it('#factory() should return a SchATransaction', () => { diff --git a/front-end/src/app/shared/models/transaction-types/OTHER_COMMITTEE_NON_CONTRIBUTION_ACCOUNT.model.ts b/front-end/src/app/shared/models/transaction-types/OTHER_COMMITTEE_NON_CONTRIBUTION_ACCOUNT.model.ts index 879b9ef533..0680e7154a 100644 --- a/front-end/src/app/shared/models/transaction-types/OTHER_COMMITTEE_NON_CONTRIBUTION_ACCOUNT.model.ts +++ b/front-end/src/app/shared/models/transaction-types/OTHER_COMMITTEE_NON_CONTRIBUTION_ACCOUNT.model.ts @@ -2,12 +2,13 @@ import { LabelUtils } from 'app/shared/utils/label.utils'; import { schema } from 'fecfile-validate/fecfile_validate_js/dist/OTHER_COMMITTEE_NON_CONTRIBUTION_ACCOUNT'; import { SchATransactionType } from '../scha-transaction-type.model'; import { SchATransaction, ScheduleATransactionTypeLabels, ScheduleATransactionTypes } from '../scha-transaction.model'; -import { TransactionGroupE } from '../transaction-groups/transaction-group-e.model'; import { STANDARD_CONTROLS, TransactionNavigationControls } from '../transaction-navigation-controls.model'; import { AggregationGroups } from '../transaction.model'; +import { COMMITTEE, COMMITTEE_FORM_FIELDS } from 'app/shared/utils/transaction-type-properties'; export class OTHER_COMMITTEE_NON_CONTRIBUTION_ACCOUNT extends SchATransactionType { - transactionGroup = new TransactionGroupE(); + formFields = COMMITTEE_FORM_FIELDS; + contactTypeOptions = COMMITTEE; title = LabelUtils.get( ScheduleATransactionTypeLabels, ScheduleATransactionTypes.OTHER_COMMITTEE_RECEIPT_NON_CONTRIBUTION_ACCOUNT diff --git a/front-end/src/app/shared/models/transaction-types/OTHER_COMMITTEE_REFUND_NON_CONTRIBUTION_ACCOUNT.model.spec.ts b/front-end/src/app/shared/models/transaction-types/OTHER_COMMITTEE_REFUND_NON_CONTRIBUTION_ACCOUNT.model.spec.ts index 460b8c2fa2..1a51bc606d 100644 --- a/front-end/src/app/shared/models/transaction-types/OTHER_COMMITTEE_REFUND_NON_CONTRIBUTION_ACCOUNT.model.spec.ts +++ b/front-end/src/app/shared/models/transaction-types/OTHER_COMMITTEE_REFUND_NON_CONTRIBUTION_ACCOUNT.model.spec.ts @@ -1,5 +1,4 @@ import { SchBTransaction, ScheduleBTransactionTypes } from '../schb-transaction.model'; -import { TransactionGroupE } from '../transaction-groups/transaction-group-e.model'; import { OTHER_COMMITTEE_REFUND_NON_CONTRIBUTION_ACCOUNT } from './OTHER_COMMITTEE_REFUND_NON_CONTRIBUTION_ACCOUNT.model'; describe('OTHER_COMMITTEE_REFUND_NON_CONTRIBUTION_ACCOUNT', () => { @@ -12,7 +11,6 @@ describe('OTHER_COMMITTEE_REFUND_NON_CONTRIBUTION_ACCOUNT', () => { it('should create an instance', () => { expect(transactionType).toBeTruthy(); expect(transactionType.scheduleId).toBe('B'); - expect(transactionType.transactionGroup).toBeInstanceOf(TransactionGroupE); }); xit('#factory() should return a SchBTransaction', () => { diff --git a/front-end/src/app/shared/models/transaction-types/OTHER_COMMITTEE_REFUND_NON_CONTRIBUTION_ACCOUNT.model.ts b/front-end/src/app/shared/models/transaction-types/OTHER_COMMITTEE_REFUND_NON_CONTRIBUTION_ACCOUNT.model.ts index e79173652c..80069191b5 100644 --- a/front-end/src/app/shared/models/transaction-types/OTHER_COMMITTEE_REFUND_NON_CONTRIBUTION_ACCOUNT.model.ts +++ b/front-end/src/app/shared/models/transaction-types/OTHER_COMMITTEE_REFUND_NON_CONTRIBUTION_ACCOUNT.model.ts @@ -1,14 +1,14 @@ import { LabelUtils } from 'app/shared/utils/label.utils'; import { schema } from 'fecfile-validate/fecfile_validate_js/dist/NON_CONTRIBUTION_ACCOUNT_REFUNDS'; -import { ContactTypes } from '../contact.model'; import { SchBTransactionType } from '../schb-transaction-type.model'; import { SchBTransaction, ScheduleBTransactionTypeLabels, ScheduleBTransactionTypes } from '../schb-transaction.model'; -import { TransactionGroupE } from '../transaction-groups/transaction-group-e.model'; import { STANDARD_CONTROLS, TransactionNavigationControls } from '../transaction-navigation-controls.model'; import { AggregationGroups } from '../transaction.model'; +import { COMMITTEE, COMMITTEE_B_FORM_FIELDS } from 'app/shared/utils/transaction-type-properties'; export class OTHER_COMMITTEE_REFUND_NON_CONTRIBUTION_ACCOUNT extends SchBTransactionType { - transactionGroup = new TransactionGroupE(); + formFields = COMMITTEE_B_FORM_FIELDS; + contactTypeOptions = COMMITTEE; title = LabelUtils.get( ScheduleBTransactionTypeLabels, ScheduleBTransactionTypes.OTHER_COMMITTEE_REFUND_NON_CONTRIBUTION_ACCOUNT @@ -16,7 +16,6 @@ export class OTHER_COMMITTEE_REFUND_NON_CONTRIBUTION_ACCOUNT extends SchBTransac schema = schema; override showAggregate = false; override isRefund = true; - override defaultContactTypeOption = ContactTypes.COMMITTEE; override navigationControls: TransactionNavigationControls = STANDARD_CONTROLS; getNewTransaction() { diff --git a/front-end/src/app/shared/models/transaction-types/OTHER_COMMITTEE_REFUND_REFUND_NP_CONVENTION_ACCOUNT.model.spec.ts b/front-end/src/app/shared/models/transaction-types/OTHER_COMMITTEE_REFUND_REFUND_NP_CONVENTION_ACCOUNT.model.spec.ts index 240aefd491..da2e9cd015 100644 --- a/front-end/src/app/shared/models/transaction-types/OTHER_COMMITTEE_REFUND_REFUND_NP_CONVENTION_ACCOUNT.model.spec.ts +++ b/front-end/src/app/shared/models/transaction-types/OTHER_COMMITTEE_REFUND_REFUND_NP_CONVENTION_ACCOUNT.model.spec.ts @@ -1,5 +1,4 @@ import { SchBTransaction, ScheduleBTransactionTypes } from '../schb-transaction.model'; -import { TransactionGroupE } from '../transaction-groups/transaction-group-e.model'; import { OTHER_COMMITTEE_REFUND_REFUND_NP_CONVENTION_ACCOUNT } from './OTHER_COMMITTEE_REFUND_REFUND_NP_CONVENTION_ACCOUNT.model'; describe('OTHER_COMMITTEE_REFUND_REFUND_NP_CONVENTION_ACCOUNT', () => { @@ -12,7 +11,6 @@ describe('OTHER_COMMITTEE_REFUND_REFUND_NP_CONVENTION_ACCOUNT', () => { it('should create an instance', () => { expect(transactionType).toBeTruthy(); expect(transactionType.scheduleId).toBe('B'); - expect(transactionType.transactionGroup).toBeInstanceOf(TransactionGroupE); }); it('#factory() should return a SchBTransaction', () => { diff --git a/front-end/src/app/shared/models/transaction-types/OTHER_COMMITTEE_REFUND_REFUND_NP_CONVENTION_ACCOUNT.model.ts b/front-end/src/app/shared/models/transaction-types/OTHER_COMMITTEE_REFUND_REFUND_NP_CONVENTION_ACCOUNT.model.ts index 8ba74ace8d..3d26153452 100644 --- a/front-end/src/app/shared/models/transaction-types/OTHER_COMMITTEE_REFUND_REFUND_NP_CONVENTION_ACCOUNT.model.ts +++ b/front-end/src/app/shared/models/transaction-types/OTHER_COMMITTEE_REFUND_REFUND_NP_CONVENTION_ACCOUNT.model.ts @@ -2,12 +2,13 @@ import { LabelUtils } from 'app/shared/utils/label.utils'; import { schema } from 'fecfile-validate/fecfile_validate_js/dist/NATIONAL_PARTY_OTHER_COMMITTEE_REFUNDS'; import { SchBTransactionType } from '../schb-transaction-type.model'; import { SchBTransaction, ScheduleBTransactionTypeLabels, ScheduleBTransactionTypes } from '../schb-transaction.model'; -import { TransactionGroupE } from '../transaction-groups/transaction-group-e.model'; import { STANDARD_CONTROLS, TransactionNavigationControls } from '../transaction-navigation-controls.model'; import { AggregationGroups } from '../transaction.model'; +import { COMMITTEE, COMMITTEE_B_FORM_FIELDS } from 'app/shared/utils/transaction-type-properties'; export class OTHER_COMMITTEE_REFUND_REFUND_NP_CONVENTION_ACCOUNT extends SchBTransactionType { - transactionGroup = new TransactionGroupE(); + formFields = COMMITTEE_B_FORM_FIELDS; + contactTypeOptions = COMMITTEE; title = LabelUtils.get( ScheduleBTransactionTypeLabels, ScheduleBTransactionTypes.OTHER_COMMITTEE_REFUND_REFUND_NP_CONVENTION_ACCOUNT diff --git a/front-end/src/app/shared/models/transaction-types/OTHER_COMMITTEE_REFUND_REFUND_NP_HEADQUARTERS_ACCOUNT.model.spec.ts b/front-end/src/app/shared/models/transaction-types/OTHER_COMMITTEE_REFUND_REFUND_NP_HEADQUARTERS_ACCOUNT.model.spec.ts index ac9ba7de8f..2533fcb2c7 100644 --- a/front-end/src/app/shared/models/transaction-types/OTHER_COMMITTEE_REFUND_REFUND_NP_HEADQUARTERS_ACCOUNT.model.spec.ts +++ b/front-end/src/app/shared/models/transaction-types/OTHER_COMMITTEE_REFUND_REFUND_NP_HEADQUARTERS_ACCOUNT.model.spec.ts @@ -1,5 +1,4 @@ import { SchBTransaction, ScheduleBTransactionTypes } from '../schb-transaction.model'; -import { TransactionGroupE } from '../transaction-groups/transaction-group-e.model'; import { OTHER_COMMITTEE_REFUND_REFUND_NP_HEADQUARTERS_ACCOUNT } from './OTHER_COMMITTEE_REFUND_REFUND_NP_HEADQUARTERS_ACCOUNT.model'; describe('OTHER_COMMITTEE_REFUND_REFUND_NP_HEADQUARTERS_ACCOUNT', () => { @@ -12,7 +11,6 @@ describe('OTHER_COMMITTEE_REFUND_REFUND_NP_HEADQUARTERS_ACCOUNT', () => { it('should create an instance', () => { expect(transactionType).toBeTruthy(); expect(transactionType.scheduleId).toBe('B'); - expect(transactionType.transactionGroup).toBeInstanceOf(TransactionGroupE); }); it('#factory() should return a SchBTransaction', () => { diff --git a/front-end/src/app/shared/models/transaction-types/OTHER_COMMITTEE_REFUND_REFUND_NP_HEADQUARTERS_ACCOUNT.model.ts b/front-end/src/app/shared/models/transaction-types/OTHER_COMMITTEE_REFUND_REFUND_NP_HEADQUARTERS_ACCOUNT.model.ts index cadd941e00..46b545bde7 100644 --- a/front-end/src/app/shared/models/transaction-types/OTHER_COMMITTEE_REFUND_REFUND_NP_HEADQUARTERS_ACCOUNT.model.ts +++ b/front-end/src/app/shared/models/transaction-types/OTHER_COMMITTEE_REFUND_REFUND_NP_HEADQUARTERS_ACCOUNT.model.ts @@ -2,12 +2,13 @@ import { LabelUtils } from 'app/shared/utils/label.utils'; import { schema } from 'fecfile-validate/fecfile_validate_js/dist/NATIONAL_PARTY_OTHER_COMMITTEE_REFUNDS'; import { SchBTransactionType } from '../schb-transaction-type.model'; import { SchBTransaction, ScheduleBTransactionTypeLabels, ScheduleBTransactionTypes } from '../schb-transaction.model'; -import { TransactionGroupE } from '../transaction-groups/transaction-group-e.model'; import { STANDARD_CONTROLS, TransactionNavigationControls } from '../transaction-navigation-controls.model'; import { AggregationGroups } from '../transaction.model'; +import { COMMITTEE, COMMITTEE_B_FORM_FIELDS } from 'app/shared/utils/transaction-type-properties'; export class OTHER_COMMITTEE_REFUND_REFUND_NP_HEADQUARTERS_ACCOUNT extends SchBTransactionType { - transactionGroup = new TransactionGroupE(); + formFields = COMMITTEE_B_FORM_FIELDS; + contactTypeOptions = COMMITTEE; title = LabelUtils.get( ScheduleBTransactionTypeLabels, ScheduleBTransactionTypes.OTHER_COMMITTEE_REFUND_REFUND_NP_HEADQUARTERS_ACCOUNT diff --git a/front-end/src/app/shared/models/transaction-types/OTHER_COMMITTEE_REFUND_REFUND_NP_RECOUNT_ACCOUNT.model.spec.ts b/front-end/src/app/shared/models/transaction-types/OTHER_COMMITTEE_REFUND_REFUND_NP_RECOUNT_ACCOUNT.model.spec.ts index ea8e238bb7..a772bca252 100644 --- a/front-end/src/app/shared/models/transaction-types/OTHER_COMMITTEE_REFUND_REFUND_NP_RECOUNT_ACCOUNT.model.spec.ts +++ b/front-end/src/app/shared/models/transaction-types/OTHER_COMMITTEE_REFUND_REFUND_NP_RECOUNT_ACCOUNT.model.spec.ts @@ -1,5 +1,4 @@ import { SchBTransaction, ScheduleBTransactionTypes } from '../schb-transaction.model'; -import { TransactionGroupE } from '../transaction-groups/transaction-group-e.model'; import { OTHER_COMMITTEE_REFUND_REFUND_NP_RECOUNT_ACCOUNT } from './OTHER_COMMITTEE_REFUND_REFUND_NP_RECOUNT_ACCOUNT.model'; describe('OTHER_COMMITTEE_REFUND_REFUND_NP_RECOUNT_ACCOUNT', () => { @@ -12,7 +11,6 @@ describe('OTHER_COMMITTEE_REFUND_REFUND_NP_RECOUNT_ACCOUNT', () => { it('should create an instance', () => { expect(transactionType).toBeTruthy(); expect(transactionType.scheduleId).toBe('B'); - expect(transactionType.transactionGroup).toBeInstanceOf(TransactionGroupE); }); it('#factory() should return a SchBTransaction', () => { diff --git a/front-end/src/app/shared/models/transaction-types/OTHER_COMMITTEE_REFUND_REFUND_NP_RECOUNT_ACCOUNT.model.ts b/front-end/src/app/shared/models/transaction-types/OTHER_COMMITTEE_REFUND_REFUND_NP_RECOUNT_ACCOUNT.model.ts index 845ac00816..d07cae43b4 100644 --- a/front-end/src/app/shared/models/transaction-types/OTHER_COMMITTEE_REFUND_REFUND_NP_RECOUNT_ACCOUNT.model.ts +++ b/front-end/src/app/shared/models/transaction-types/OTHER_COMMITTEE_REFUND_REFUND_NP_RECOUNT_ACCOUNT.model.ts @@ -2,12 +2,13 @@ import { LabelUtils } from 'app/shared/utils/label.utils'; import { schema } from 'fecfile-validate/fecfile_validate_js/dist/NATIONAL_PARTY_OTHER_COMMITTEE_REFUNDS'; import { SchBTransactionType } from '../schb-transaction-type.model'; import { SchBTransaction, ScheduleBTransactionTypeLabels, ScheduleBTransactionTypes } from '../schb-transaction.model'; -import { TransactionGroupE } from '../transaction-groups/transaction-group-e.model'; import { STANDARD_CONTROLS, TransactionNavigationControls } from '../transaction-navigation-controls.model'; import { AggregationGroups } from '../transaction.model'; +import { COMMITTEE, COMMITTEE_B_FORM_FIELDS } from 'app/shared/utils/transaction-type-properties'; export class OTHER_COMMITTEE_REFUND_REFUND_NP_RECOUNT_ACCOUNT extends SchBTransactionType { - transactionGroup = new TransactionGroupE(); + formFields = COMMITTEE_B_FORM_FIELDS; + contactTypeOptions = COMMITTEE; title = LabelUtils.get( ScheduleBTransactionTypeLabels, ScheduleBTransactionTypes.OTHER_COMMITTEE_REFUND_REFUND_NP_RECOUNT_ACCOUNT diff --git a/front-end/src/app/shared/models/transaction-types/OTHER_DISBURSEMENT.model.spec.ts b/front-end/src/app/shared/models/transaction-types/OTHER_DISBURSEMENT.model.spec.ts index c0abeacc44..fa22efc907 100644 --- a/front-end/src/app/shared/models/transaction-types/OTHER_DISBURSEMENT.model.spec.ts +++ b/front-end/src/app/shared/models/transaction-types/OTHER_DISBURSEMENT.model.spec.ts @@ -1,7 +1,6 @@ import { OTHER_DISBURSEMENT } from './OTHER_DISBURSEMENT.model'; import { SchBTransaction, ScheduleBTransactionTypes } from '../schb-transaction.model'; import { TransactionType } from 'app/shared/models/transaction-type.model'; -import { TransactionGroupB } from '../transaction-groups/transaction-group-b.model'; describe('OTHER_DISBURSEMENT', () => { let transactionType: OTHER_DISBURSEMENT; @@ -13,7 +12,6 @@ describe('OTHER_DISBURSEMENT', () => { it('should create an instance', () => { expect(transactionType).toBeTruthy(); expect(transactionType.scheduleId).toBe('B'); - expect(transactionType.transactionGroup).toBeInstanceOf(TransactionGroupB); }); it('#factory() should return a SchBTransaction', () => { diff --git a/front-end/src/app/shared/models/transaction-types/OTHER_DISBURSEMENT.model.ts b/front-end/src/app/shared/models/transaction-types/OTHER_DISBURSEMENT.model.ts index 9a58d56101..fe91814000 100644 --- a/front-end/src/app/shared/models/transaction-types/OTHER_DISBURSEMENT.model.ts +++ b/front-end/src/app/shared/models/transaction-types/OTHER_DISBURSEMENT.model.ts @@ -1,17 +1,19 @@ import { LabelUtils } from 'app/shared/utils/label.utils'; import { schema } from 'fecfile-validate/fecfile_validate_js/dist/DISBURSEMENTS'; -import { ContactTypes } from '../contact.model'; import { SchBTransactionType } from '../schb-transaction-type.model'; import { SchBTransaction, ScheduleBTransactionTypeLabels, ScheduleBTransactionTypes } from '../schb-transaction.model'; -import { TransactionGroupB } from '../transaction-groups/transaction-group-b.model'; import { STANDARD_CONTROLS, TransactionNavigationControls } from '../transaction-navigation-controls.model'; import { AggregationGroups } from '../transaction.model'; +import { + INDIVIDUAL_ORGANIZATION_B_FORM_FIELDS, + ORGANIZATION_INDIVIDUAL_COMMITTEE, +} from 'app/shared/utils/transaction-type-properties'; export class OTHER_DISBURSEMENT extends SchBTransactionType { - transactionGroup = new TransactionGroupB(); + formFields = INDIVIDUAL_ORGANIZATION_B_FORM_FIELDS; + contactTypeOptions = ORGANIZATION_INDIVIDUAL_COMMITTEE; title = LabelUtils.get(ScheduleBTransactionTypeLabels, ScheduleBTransactionTypes.OTHER_DISBURSEMENT); schema = schema; - override defaultContactTypeOption = ContactTypes.ORGANIZATION; override navigationControls: TransactionNavigationControls = STANDARD_CONTROLS; getNewTransaction() { diff --git a/front-end/src/app/shared/models/transaction-types/OTHER_DISBURSEMENT_CREDIT_CARD_PAYMENT.model.spec.ts b/front-end/src/app/shared/models/transaction-types/OTHER_DISBURSEMENT_CREDIT_CARD_PAYMENT.model.spec.ts index dbb780d75e..75407ce9a6 100644 --- a/front-end/src/app/shared/models/transaction-types/OTHER_DISBURSEMENT_CREDIT_CARD_PAYMENT.model.spec.ts +++ b/front-end/src/app/shared/models/transaction-types/OTHER_DISBURSEMENT_CREDIT_CARD_PAYMENT.model.spec.ts @@ -1,5 +1,4 @@ import { SchBTransaction, ScheduleBTransactionTypes } from '../schb-transaction.model'; -import { TransactionGroupD } from '../transaction-groups/transaction-group-d.model'; import { OTHER_DISBURSEMENT_CREDIT_CARD_PAYMENT } from './OTHER_DISBURSEMENT_CREDIT_CARD_PAYMENT.model'; describe('OTHER_DISBURSEMENT_CREDIT_CARD_PAYMENT', () => { @@ -12,7 +11,6 @@ describe('OTHER_DISBURSEMENT_CREDIT_CARD_PAYMENT', () => { it('should create an instance', () => { expect(transactionType).toBeTruthy(); expect(transactionType.scheduleId).toBe('B'); - expect(transactionType.transactionGroup).toBeInstanceOf(TransactionGroupD); }); it('#factory() should return a SchBTransaction', () => { diff --git a/front-end/src/app/shared/models/transaction-types/OTHER_DISBURSEMENT_CREDIT_CARD_PAYMENT.model.ts b/front-end/src/app/shared/models/transaction-types/OTHER_DISBURSEMENT_CREDIT_CARD_PAYMENT.model.ts index 80b538af2e..78704f6637 100644 --- a/front-end/src/app/shared/models/transaction-types/OTHER_DISBURSEMENT_CREDIT_CARD_PAYMENT.model.ts +++ b/front-end/src/app/shared/models/transaction-types/OTHER_DISBURSEMENT_CREDIT_CARD_PAYMENT.model.ts @@ -1,20 +1,19 @@ import { LabelUtils } from 'app/shared/utils/label.utils'; import { schema } from 'fecfile-validate/fecfile_validate_js/dist/DISBURSEMENT_PARENTS'; -import { ContactTypes } from '../contact.model'; import { SchBTransactionType } from '../schb-transaction-type.model'; import { SchBTransaction, ScheduleBTransactionTypeLabels, ScheduleBTransactionTypes } from '../schb-transaction.model'; -import { TransactionGroupD } from '../transaction-groups/transaction-group-d.model'; import { STANDARD_PARENT_CONTROLS, TransactionNavigationControls } from '../transaction-navigation-controls.model'; import { AggregationGroups } from '../transaction.model'; +import { ORGANIZATION_B_FORM_FIELDS, ORGANIZATION } from 'app/shared/utils/transaction-type-properties'; export class OTHER_DISBURSEMENT_CREDIT_CARD_PAYMENT extends SchBTransactionType { - transactionGroup = new TransactionGroupD(); + formFields = ORGANIZATION_B_FORM_FIELDS; + contactTypeOptions = ORGANIZATION; title = LabelUtils.get( ScheduleBTransactionTypeLabels, ScheduleBTransactionTypes.OTHER_DISBURSEMENT_CREDIT_CARD_PAYMENT ); schema = schema; - override defaultContactTypeOption = ContactTypes.ORGANIZATION; override navigationControls: TransactionNavigationControls = STANDARD_PARENT_CONTROLS; override subTransactionConfig = [ScheduleBTransactionTypes.OTHER_DISBURSEMENT_CREDIT_CARD_PAYMENT_MEMO]; diff --git a/front-end/src/app/shared/models/transaction-types/OTHER_DISBURSEMENT_CREDIT_CARD_PAYMENT_MEMO.model.spec.ts b/front-end/src/app/shared/models/transaction-types/OTHER_DISBURSEMENT_CREDIT_CARD_PAYMENT_MEMO.model.spec.ts index 41d5031ffa..53f6f43f01 100644 --- a/front-end/src/app/shared/models/transaction-types/OTHER_DISBURSEMENT_CREDIT_CARD_PAYMENT_MEMO.model.spec.ts +++ b/front-end/src/app/shared/models/transaction-types/OTHER_DISBURSEMENT_CREDIT_CARD_PAYMENT_MEMO.model.spec.ts @@ -1,5 +1,4 @@ import { SchBTransaction, ScheduleBTransactionTypes } from '../schb-transaction.model'; -import { TransactionGroupB } from '../transaction-groups/transaction-group-b.model'; import { OTHER_DISBURSEMENT_CREDIT_CARD_PAYMENT_MEMO } from './OTHER_DISBURSEMENT_CREDIT_CARD_PAYMENT_MEMO.model'; describe('OTHER_DISBURSEMENT_CREDIT_CARD_PAYMENT_MEMO', () => { @@ -12,7 +11,6 @@ describe('OTHER_DISBURSEMENT_CREDIT_CARD_PAYMENT_MEMO', () => { it('should create an instance', () => { expect(transactionType).toBeTruthy(); expect(transactionType.scheduleId).toBe('B'); - expect(transactionType.transactionGroup).toBeInstanceOf(TransactionGroupB); }); it('#factory() should return a SchBTransaction', () => { diff --git a/front-end/src/app/shared/models/transaction-types/OTHER_DISBURSEMENT_CREDIT_CARD_PAYMENT_MEMO.model.ts b/front-end/src/app/shared/models/transaction-types/OTHER_DISBURSEMENT_CREDIT_CARD_PAYMENT_MEMO.model.ts index 868b710337..5bf859b6f0 100644 --- a/front-end/src/app/shared/models/transaction-types/OTHER_DISBURSEMENT_CREDIT_CARD_PAYMENT_MEMO.model.ts +++ b/front-end/src/app/shared/models/transaction-types/OTHER_DISBURSEMENT_CREDIT_CARD_PAYMENT_MEMO.model.ts @@ -1,20 +1,22 @@ import { LabelUtils } from 'app/shared/utils/label.utils'; import { schema } from 'fecfile-validate/fecfile_validate_js/dist/DISBURSEMENT_MEMOS'; -import { ContactTypes } from '../contact.model'; import { SchBTransactionType } from '../schb-transaction-type.model'; import { SchBTransaction, ScheduleBTransactionTypeLabels, ScheduleBTransactionTypes } from '../schb-transaction.model'; -import { TransactionGroupB } from '../transaction-groups/transaction-group-b.model'; import { getChildNavigationControls, TransactionNavigationControls } from '../transaction-navigation-controls.model'; import { AggregationGroups } from '../transaction.model'; +import { + INDIVIDUAL_ORGANIZATION_B_FORM_FIELDS, + ORGANIZATION_INDIVIDUAL_COMMITTEE, +} from 'app/shared/utils/transaction-type-properties'; export class OTHER_DISBURSEMENT_CREDIT_CARD_PAYMENT_MEMO extends SchBTransactionType { - transactionGroup = new TransactionGroupB(); + formFields = INDIVIDUAL_ORGANIZATION_B_FORM_FIELDS; + override contactTypeOptions = ORGANIZATION_INDIVIDUAL_COMMITTEE; title = LabelUtils.get( ScheduleBTransactionTypeLabels, ScheduleBTransactionTypes.OTHER_DISBURSEMENT_CREDIT_CARD_PAYMENT_MEMO ); schema = schema; - override defaultContactTypeOption = ContactTypes.ORGANIZATION; override navigationControls: TransactionNavigationControls = getChildNavigationControls(); getNewTransaction() { diff --git a/front-end/src/app/shared/models/transaction-types/OTHER_DISBURSEMENT_PAYMENT_TO_PAYROLL.model.spec.ts b/front-end/src/app/shared/models/transaction-types/OTHER_DISBURSEMENT_PAYMENT_TO_PAYROLL.model.spec.ts index 28f5ff17e9..f32c9bbcfa 100644 --- a/front-end/src/app/shared/models/transaction-types/OTHER_DISBURSEMENT_PAYMENT_TO_PAYROLL.model.spec.ts +++ b/front-end/src/app/shared/models/transaction-types/OTHER_DISBURSEMENT_PAYMENT_TO_PAYROLL.model.spec.ts @@ -1,5 +1,4 @@ import { SchBTransaction, ScheduleBTransactionTypes } from '../schb-transaction.model'; -import { TransactionGroupD } from '../transaction-groups/transaction-group-d.model'; import { OTHER_DISBURSEMENT_PAYMENT_TO_PAYROLL } from './OTHER_DISBURSEMENT_PAYMENT_TO_PAYROLL.model'; describe('OTHER_DISBURSEMENT_PAYMENT_TO_PAYROLL', () => { @@ -12,7 +11,6 @@ describe('OTHER_DISBURSEMENT_PAYMENT_TO_PAYROLL', () => { it('should create an instance', () => { expect(transactionType).toBeTruthy(); expect(transactionType.scheduleId).toBe('B'); - expect(transactionType.transactionGroup).toBeInstanceOf(TransactionGroupD); }); it('#factory() should return a SchBTransaction', () => { diff --git a/front-end/src/app/shared/models/transaction-types/OTHER_DISBURSEMENT_PAYMENT_TO_PAYROLL.model.ts b/front-end/src/app/shared/models/transaction-types/OTHER_DISBURSEMENT_PAYMENT_TO_PAYROLL.model.ts index 306152ac4e..cee6126474 100644 --- a/front-end/src/app/shared/models/transaction-types/OTHER_DISBURSEMENT_PAYMENT_TO_PAYROLL.model.ts +++ b/front-end/src/app/shared/models/transaction-types/OTHER_DISBURSEMENT_PAYMENT_TO_PAYROLL.model.ts @@ -1,21 +1,20 @@ import { LabelUtils } from 'app/shared/utils/label.utils'; import { schema } from 'fecfile-validate/fecfile_validate_js/dist/DISBURSEMENT_PARENTS'; -import { ContactTypes } from '../contact.model'; import { SchBTransactionType } from '../schb-transaction-type.model'; import { SchBTransaction, ScheduleBTransactionTypeLabels, ScheduleBTransactionTypes } from '../schb-transaction.model'; -import { TransactionGroupD } from '../transaction-groups/transaction-group-d.model'; import { STANDARD_PARENT_CONTROLS, TransactionNavigationControls } from '../transaction-navigation-controls.model'; import { AggregationGroups } from '../transaction.model'; +import { ORGANIZATION_B_FORM_FIELDS, ORGANIZATION } from 'app/shared/utils/transaction-type-properties'; export class OTHER_DISBURSEMENT_PAYMENT_TO_PAYROLL extends SchBTransactionType { - transactionGroup = new TransactionGroupD(); + formFields = ORGANIZATION_B_FORM_FIELDS; + contactTypeOptions = ORGANIZATION; title = LabelUtils.get( ScheduleBTransactionTypeLabels, ScheduleBTransactionTypes.OTHER_DISBURSEMENT_PAYMENT_TO_PAYROLL ); override subTransactionConfig = [ScheduleBTransactionTypes.OTHER_DISBURSEMENT_PAYMENT_TO_PAYROLL_MEMO]; schema = schema; - override defaultContactTypeOption = ContactTypes.ORGANIZATION; override navigationControls: TransactionNavigationControls = STANDARD_PARENT_CONTROLS; getNewTransaction() { diff --git a/front-end/src/app/shared/models/transaction-types/OTHER_DISBURSEMENT_PAYMENT_TO_PAYROLL_MEMO.model.spec.ts b/front-end/src/app/shared/models/transaction-types/OTHER_DISBURSEMENT_PAYMENT_TO_PAYROLL_MEMO.model.spec.ts index 546c888ed8..72f9ffdb9f 100644 --- a/front-end/src/app/shared/models/transaction-types/OTHER_DISBURSEMENT_PAYMENT_TO_PAYROLL_MEMO.model.spec.ts +++ b/front-end/src/app/shared/models/transaction-types/OTHER_DISBURSEMENT_PAYMENT_TO_PAYROLL_MEMO.model.spec.ts @@ -1,7 +1,6 @@ import { OTHER_DISBURSEMENT_PAYMENT_TO_PAYROLL_MEMO } from './OTHER_DISBURSEMENT_PAYMENT_TO_PAYROLL_MEMO.model'; import { SchBTransaction, ScheduleBTransactionTypes } from '../schb-transaction.model'; import { TransactionType } from 'app/shared/models/transaction-type.model'; -import { TransactionGroupB } from '../transaction-groups/transaction-group-b.model'; describe('OTHER_DISBURSEMENT_PAYMENT_TO_PAYROLL_MEMO', () => { let transactionType: OTHER_DISBURSEMENT_PAYMENT_TO_PAYROLL_MEMO; @@ -13,7 +12,6 @@ describe('OTHER_DISBURSEMENT_PAYMENT_TO_PAYROLL_MEMO', () => { it('should create an instance', () => { expect(transactionType).toBeTruthy(); expect(transactionType.scheduleId).toBe('B'); - expect(transactionType.transactionGroup).toBeInstanceOf(TransactionGroupB); }); it('#factory() should return a SchBTransaction', () => { diff --git a/front-end/src/app/shared/models/transaction-types/OTHER_DISBURSEMENT_PAYMENT_TO_PAYROLL_MEMO.model.ts b/front-end/src/app/shared/models/transaction-types/OTHER_DISBURSEMENT_PAYMENT_TO_PAYROLL_MEMO.model.ts index b5580aac7d..bb7af363fe 100644 --- a/front-end/src/app/shared/models/transaction-types/OTHER_DISBURSEMENT_PAYMENT_TO_PAYROLL_MEMO.model.ts +++ b/front-end/src/app/shared/models/transaction-types/OTHER_DISBURSEMENT_PAYMENT_TO_PAYROLL_MEMO.model.ts @@ -2,12 +2,16 @@ import { LabelUtils } from 'app/shared/utils/label.utils'; import { schema } from 'fecfile-validate/fecfile_validate_js/dist/DISBURSEMENT_MEMOS'; import { SchBTransactionType } from '../schb-transaction-type.model'; import { SchBTransaction, ScheduleBTransactionTypeLabels, ScheduleBTransactionTypes } from '../schb-transaction.model'; -import { TransactionGroupB } from '../transaction-groups/transaction-group-b.model'; import { getChildNavigationControls, TransactionNavigationControls } from '../transaction-navigation-controls.model'; import { AggregationGroups } from '../transaction.model'; +import { + INDIVIDUAL_ORGANIZATION_B_FORM_FIELDS, + INDIVIDUAL_ORGANIZATION_COMMITTEE, +} from 'app/shared/utils/transaction-type-properties'; export class OTHER_DISBURSEMENT_PAYMENT_TO_PAYROLL_MEMO extends SchBTransactionType { - transactionGroup = new TransactionGroupB(); + formFields = INDIVIDUAL_ORGANIZATION_B_FORM_FIELDS; + override contactTypeOptions = INDIVIDUAL_ORGANIZATION_COMMITTEE; title = LabelUtils.get( ScheduleBTransactionTypeLabels, ScheduleBTransactionTypes.OTHER_DISBURSEMENT_PAYMENT_TO_PAYROLL_MEMO diff --git a/front-end/src/app/shared/models/transaction-types/OTHER_DISBURSEMENT_STAFF_REIMBURSEMENT.model.spec.ts b/front-end/src/app/shared/models/transaction-types/OTHER_DISBURSEMENT_STAFF_REIMBURSEMENT.model.spec.ts index 04650a2917..5cad94b6c2 100644 --- a/front-end/src/app/shared/models/transaction-types/OTHER_DISBURSEMENT_STAFF_REIMBURSEMENT.model.spec.ts +++ b/front-end/src/app/shared/models/transaction-types/OTHER_DISBURSEMENT_STAFF_REIMBURSEMENT.model.spec.ts @@ -1,6 +1,5 @@ import { OTHER_DISBURSEMENT_STAFF_REIMBURSEMENT } from './OTHER_DISBURSEMENT_STAFF_REIMBURSEMENT.model'; import { SchBTransaction, ScheduleBTransactionTypes } from '../schb-transaction.model'; -import { TransactionGroupA } from '../transaction-groups/transaction-group-a.model'; describe('OTHER_DISBURSEMENT_STAFF_REIMBURSEMENT', () => { let transactionType: OTHER_DISBURSEMENT_STAFF_REIMBURSEMENT; @@ -12,7 +11,6 @@ describe('OTHER_DISBURSEMENT_STAFF_REIMBURSEMENT', () => { it('should create an instance', () => { expect(transactionType).toBeTruthy(); expect(transactionType.scheduleId).toBe('B'); - expect(transactionType.transactionGroup).toBeInstanceOf(TransactionGroupA); }); it('#factory() should return a SchBTransaction', () => { diff --git a/front-end/src/app/shared/models/transaction-types/OTHER_DISBURSEMENT_STAFF_REIMBURSEMENT.model.ts b/front-end/src/app/shared/models/transaction-types/OTHER_DISBURSEMENT_STAFF_REIMBURSEMENT.model.ts index 0255c9d407..0ad1f9dfbd 100644 --- a/front-end/src/app/shared/models/transaction-types/OTHER_DISBURSEMENT_STAFF_REIMBURSEMENT.model.ts +++ b/front-end/src/app/shared/models/transaction-types/OTHER_DISBURSEMENT_STAFF_REIMBURSEMENT.model.ts @@ -1,20 +1,19 @@ import { LabelUtils } from 'app/shared/utils/label.utils'; import { schema } from 'fecfile-validate/fecfile_validate_js/dist/DISBURSEMENT_PARENTS_STAFF'; -import { ContactTypes } from '../contact.model'; import { SchBTransactionType } from '../schb-transaction-type.model'; import { SchBTransaction, ScheduleBTransactionTypeLabels, ScheduleBTransactionTypes } from '../schb-transaction.model'; -import { TransactionGroupA } from '../transaction-groups/transaction-group-a.model'; import { STANDARD_PARENT_CONTROLS, TransactionNavigationControls } from '../transaction-navigation-controls.model'; import { AggregationGroups } from '../transaction.model'; +import { INDIVIDUAL_B_FORM_FIELDS, INDIVIDUAL } from 'app/shared/utils/transaction-type-properties'; export class OTHER_DISBURSEMENT_STAFF_REIMBURSEMENT extends SchBTransactionType { - transactionGroup = new TransactionGroupA(); + formFields = INDIVIDUAL_B_FORM_FIELDS; + contactTypeOptions = INDIVIDUAL; title = LabelUtils.get( ScheduleBTransactionTypeLabels, ScheduleBTransactionTypes.OTHER_DISBURSEMENT_STAFF_REIMBURSEMENT ); schema = schema; - override defaultContactTypeOption = ContactTypes.INDIVIDUAL; override navigationControls: TransactionNavigationControls = STANDARD_PARENT_CONTROLS; override subTransactionConfig = [ScheduleBTransactionTypes.OTHER_DISBURSEMENT_STAFF_REIMBURSEMENT_MEMO]; diff --git a/front-end/src/app/shared/models/transaction-types/OTHER_DISBURSEMENT_STAFF_REIMBURSEMENT_MEMO.model.spec.ts b/front-end/src/app/shared/models/transaction-types/OTHER_DISBURSEMENT_STAFF_REIMBURSEMENT_MEMO.model.spec.ts index ad6db66012..3ef0c5fdc4 100644 --- a/front-end/src/app/shared/models/transaction-types/OTHER_DISBURSEMENT_STAFF_REIMBURSEMENT_MEMO.model.spec.ts +++ b/front-end/src/app/shared/models/transaction-types/OTHER_DISBURSEMENT_STAFF_REIMBURSEMENT_MEMO.model.spec.ts @@ -1,7 +1,6 @@ import { OTHER_DISBURSEMENT_STAFF_REIMBURSEMENT_MEMO } from './OTHER_DISBURSEMENT_STAFF_REIMBURSEMENT_MEMO.model'; import { SchBTransaction, ScheduleBTransactionTypes } from '../schb-transaction.model'; import { TransactionType } from 'app/shared/models/transaction-type.model'; -import { TransactionGroupB } from '../transaction-groups/transaction-group-b.model'; describe('OTHER_DISBURSEMENT_STAFF_REIMBURSEMENT_MEMO', () => { let transactionType: OTHER_DISBURSEMENT_STAFF_REIMBURSEMENT_MEMO; @@ -13,7 +12,6 @@ describe('OTHER_DISBURSEMENT_STAFF_REIMBURSEMENT_MEMO', () => { it('should create an instance', () => { expect(transactionType).toBeTruthy(); expect(transactionType.scheduleId).toBe('B'); - expect(transactionType.transactionGroup).toBeInstanceOf(TransactionGroupB); }); it('#factory() should return a SchBTransaction', () => { diff --git a/front-end/src/app/shared/models/transaction-types/OTHER_DISBURSEMENT_STAFF_REIMBURSEMENT_MEMO.model.ts b/front-end/src/app/shared/models/transaction-types/OTHER_DISBURSEMENT_STAFF_REIMBURSEMENT_MEMO.model.ts index c3531be110..570fed96c7 100644 --- a/front-end/src/app/shared/models/transaction-types/OTHER_DISBURSEMENT_STAFF_REIMBURSEMENT_MEMO.model.ts +++ b/front-end/src/app/shared/models/transaction-types/OTHER_DISBURSEMENT_STAFF_REIMBURSEMENT_MEMO.model.ts @@ -1,20 +1,22 @@ import { LabelUtils } from 'app/shared/utils/label.utils'; import { schema } from 'fecfile-validate/fecfile_validate_js/dist/DISBURSEMENT_MEMOS'; -import { ContactTypes } from '../contact.model'; import { SchBTransactionType } from '../schb-transaction-type.model'; import { SchBTransaction, ScheduleBTransactionTypeLabels, ScheduleBTransactionTypes } from '../schb-transaction.model'; -import { TransactionGroupB } from '../transaction-groups/transaction-group-b.model'; import { getChildNavigationControls, TransactionNavigationControls } from '../transaction-navigation-controls.model'; import { AggregationGroups } from '../transaction.model'; +import { + INDIVIDUAL_ORGANIZATION_B_FORM_FIELDS, + ORGANIZATION_INDIVIDUAL_COMMITTEE, +} from 'app/shared/utils/transaction-type-properties'; export class OTHER_DISBURSEMENT_STAFF_REIMBURSEMENT_MEMO extends SchBTransactionType { - transactionGroup = new TransactionGroupB(); + formFields = INDIVIDUAL_ORGANIZATION_B_FORM_FIELDS; + override contactTypeOptions = ORGANIZATION_INDIVIDUAL_COMMITTEE; title = LabelUtils.get( ScheduleBTransactionTypeLabels, ScheduleBTransactionTypes.OTHER_DISBURSEMENT_STAFF_REIMBURSEMENT_MEMO ); schema = schema; - override defaultContactTypeOption = ContactTypes.ORGANIZATION; override navigationControls: TransactionNavigationControls = getChildNavigationControls(); getNewTransaction() { diff --git a/front-end/src/app/shared/models/transaction-types/OTHER_DISBURSEMENT_VOID.model.spec.ts b/front-end/src/app/shared/models/transaction-types/OTHER_DISBURSEMENT_VOID.model.spec.ts index b55e3387b4..e1e785ae80 100644 --- a/front-end/src/app/shared/models/transaction-types/OTHER_DISBURSEMENT_VOID.model.spec.ts +++ b/front-end/src/app/shared/models/transaction-types/OTHER_DISBURSEMENT_VOID.model.spec.ts @@ -1,7 +1,6 @@ import { OTHER_DISBURSEMENT_VOID } from './OTHER_DISBURSEMENT_VOID.model'; import { SchBTransaction, ScheduleBTransactionTypes } from '../schb-transaction.model'; import { TransactionType } from 'app/shared/models/transaction-type.model'; -import { TransactionGroupB } from '../transaction-groups/transaction-group-b.model'; describe('OTHER_DISBURSEMENT_VOID', () => { let transactionType: OTHER_DISBURSEMENT_VOID; @@ -13,7 +12,6 @@ describe('OTHER_DISBURSEMENT_VOID', () => { it('should create an instance', () => { expect(transactionType).toBeTruthy(); expect(transactionType.scheduleId).toBe('B'); - expect(transactionType.transactionGroup).toBeInstanceOf(TransactionGroupB); }); it('#factory() should return a SchBTransaction', () => { diff --git a/front-end/src/app/shared/models/transaction-types/OTHER_DISBURSEMENT_VOID.model.ts b/front-end/src/app/shared/models/transaction-types/OTHER_DISBURSEMENT_VOID.model.ts index f20d58fe43..108ac17a07 100644 --- a/front-end/src/app/shared/models/transaction-types/OTHER_DISBURSEMENT_VOID.model.ts +++ b/front-end/src/app/shared/models/transaction-types/OTHER_DISBURSEMENT_VOID.model.ts @@ -1,18 +1,20 @@ import { LabelUtils } from 'app/shared/utils/label.utils'; import { schema } from 'fecfile-validate/fecfile_validate_js/dist/DISBURSEMENTS'; -import { ContactTypes } from '../contact.model'; import { SchBTransactionType } from '../schb-transaction-type.model'; import { SchBTransaction, ScheduleBTransactionTypeLabels, ScheduleBTransactionTypes } from '../schb-transaction.model'; -import { TransactionGroupB } from '../transaction-groups/transaction-group-b.model'; import { STANDARD_CONTROLS, TransactionNavigationControls } from '../transaction-navigation-controls.model'; import { AggregationGroups } from '../transaction.model'; +import { + INDIVIDUAL_ORGANIZATION_B_FORM_FIELDS, + ORGANIZATION_INDIVIDUAL_COMMITTEE, +} from 'app/shared/utils/transaction-type-properties'; export class OTHER_DISBURSEMENT_VOID extends SchBTransactionType { - transactionGroup = new TransactionGroupB(); + formFields = INDIVIDUAL_ORGANIZATION_B_FORM_FIELDS; + contactTypeOptions = ORGANIZATION_INDIVIDUAL_COMMITTEE; title = LabelUtils.get(ScheduleBTransactionTypeLabels, ScheduleBTransactionTypes.OTHER_DISBURSEMENT_VOID); schema = schema; override negativeAmountValueOnly = true; - override defaultContactTypeOption = ContactTypes.ORGANIZATION; override navigationControls: TransactionNavigationControls = STANDARD_CONTROLS; getNewTransaction() { diff --git a/front-end/src/app/shared/models/transaction-types/OTHER_RECEIPT.model.spec.ts b/front-end/src/app/shared/models/transaction-types/OTHER_RECEIPT.model.spec.ts index 1f91cd7adb..1135464d1b 100644 --- a/front-end/src/app/shared/models/transaction-types/OTHER_RECEIPT.model.spec.ts +++ b/front-end/src/app/shared/models/transaction-types/OTHER_RECEIPT.model.spec.ts @@ -1,7 +1,6 @@ import { OTHER_RECEIPT } from './OTHER_RECEIPT.model'; import { SchATransaction, ScheduleATransactionTypes } from '../scha-transaction.model'; import { TransactionType } from 'app/shared/models/transaction-type.model'; -import { TransactionGroupC } from '../transaction-groups/transaction-group-c.model'; describe('OTHER_RECEIPT', () => { let transactionType: OTHER_RECEIPT; @@ -13,7 +12,6 @@ describe('OTHER_RECEIPT', () => { it('should create an instance', () => { expect(transactionType).toBeTruthy(); expect(transactionType.scheduleId).toBe('A'); - expect(transactionType.transactionGroup).toBeInstanceOf(TransactionGroupC); }); it('#factory() should return a SchATransaction', () => { diff --git a/front-end/src/app/shared/models/transaction-types/OTHER_RECEIPT.model.ts b/front-end/src/app/shared/models/transaction-types/OTHER_RECEIPT.model.ts index 00290e45cb..5db460fa82 100644 --- a/front-end/src/app/shared/models/transaction-types/OTHER_RECEIPT.model.ts +++ b/front-end/src/app/shared/models/transaction-types/OTHER_RECEIPT.model.ts @@ -2,12 +2,16 @@ import { LabelUtils } from 'app/shared/utils/label.utils'; import { schema } from 'fecfile-validate/fecfile_validate_js/dist/OTHER_RECEIPT'; import { SchATransactionType } from '../scha-transaction-type.model'; import { SchATransaction, ScheduleATransactionTypeLabels, ScheduleATransactionTypes } from '../scha-transaction.model'; -import { TransactionGroupC } from '../transaction-groups/transaction-group-c.model'; import { STANDARD_CONTROLS, TransactionNavigationControls } from '../transaction-navigation-controls.model'; import { AggregationGroups } from '../transaction.model'; +import { + INDIVIDUAL_ORGANIZATION_WITH_EMPLOYEE_FORM_FIELDS, + INDIVIDUAL_ORGANIZATION_COMMITTEE, +} from 'app/shared/utils/transaction-type-properties'; export class OTHER_RECEIPT extends SchATransactionType { - transactionGroup = new TransactionGroupC(); + formFields = INDIVIDUAL_ORGANIZATION_WITH_EMPLOYEE_FORM_FIELDS; + contactTypeOptions = INDIVIDUAL_ORGANIZATION_COMMITTEE; title = LabelUtils.get(ScheduleATransactionTypeLabels, ScheduleATransactionTypes.OTHER_RECEIPTS); schema = schema; override navigationControls: TransactionNavigationControls = STANDARD_CONTROLS; diff --git a/front-end/src/app/shared/models/transaction-types/PAC_CONDUIT_EARMARK.model.spec.ts b/front-end/src/app/shared/models/transaction-types/PAC_CONDUIT_EARMARK.model.spec.ts index 1c084de1e3..ee0e5a3de7 100644 --- a/front-end/src/app/shared/models/transaction-types/PAC_CONDUIT_EARMARK.model.spec.ts +++ b/front-end/src/app/shared/models/transaction-types/PAC_CONDUIT_EARMARK.model.spec.ts @@ -2,7 +2,6 @@ import { SchATransaction, ScheduleATransactionTypes } from '../scha-transaction. import { ContactTypes } from '../contact.model'; import { getTestTransactionByType } from 'app/shared/utils/unit-test.utils'; import { SchBTransaction, ScheduleBTransactionTypes } from '../schb-transaction.model'; -import { TransactionGroupPM } from '../transaction-groups/transaction-group-pm.model'; describe('PAC_PAC_CONDUIT_EARMARK', () => { let transaction: SchATransaction; @@ -14,7 +13,6 @@ describe('PAC_PAC_CONDUIT_EARMARK', () => { it('should create an instance', () => { expect(transaction.transactionType).toBeTruthy(); expect(transaction.transactionType?.scheduleId).toBe('A'); - expect(transaction?.transactionType?.transactionGroup).toBeInstanceOf(TransactionGroupPM); }); it('#factory() should return a SchATransaction', () => { diff --git a/front-end/src/app/shared/models/transaction-types/PAC_CONDUIT_EARMARK.model.ts b/front-end/src/app/shared/models/transaction-types/PAC_CONDUIT_EARMARK.model.ts index 6f1d5f1522..b0222bb6a5 100644 --- a/front-end/src/app/shared/models/transaction-types/PAC_CONDUIT_EARMARK.model.ts +++ b/front-end/src/app/shared/models/transaction-types/PAC_CONDUIT_EARMARK.model.ts @@ -1,27 +1,15 @@ import { schema } from 'fecfile-validate/fecfile_validate_js/dist/PAC_CONDUIT_EARMARKS'; -import { SchATransactionType } from '../scha-transaction-type.model'; import { SchATransaction, ScheduleATransactionTypes } from '../scha-transaction.model'; -import { - STANDARD_DOUBLE_ENTRY_CONTROLS, - TransactionNavigationControls, -} from '../transaction-navigation-controls.model'; import { SchBTransaction, ScheduleBTransactionTypes } from '../schb-transaction.model'; -import { TransactionGroupPM } from '../transaction-groups/transaction-group-pm.model'; -import { TemplateMapKeyType } from '../transaction-type.model'; +import { COMMITTEE, COMMITTEE_NO_AGGREGATE_FORM_FIELDS } from 'app/shared/utils/transaction-type-properties'; +import { CONDUIT_EARMARK } from './common-types/CONDUIT_EARMARK.model'; -export class PAC_CONDUIT_EARMARK extends SchATransactionType { - transactionGroup = new TransactionGroupPM(); +export class PAC_CONDUIT_EARMARK extends CONDUIT_EARMARK { + formFields = COMMITTEE_NO_AGGREGATE_FORM_FIELDS; + contactTypeOptions = COMMITTEE; title = 'PAC Conduit Earmark'; schema = schema; override dependentChildTransactionType = ScheduleBTransactionTypes.PAC_CONDUIT_EARMARK_OUT; - override navigationControls: TransactionNavigationControls = STANDARD_DOUBLE_ENTRY_CONTROLS; - override childTriggerFields = ['organization_name', 'last_name', 'first_name'] as TemplateMapKeyType[]; - override showAggregate = false; - override apiEndpoint = '/transactions/save-pair'; - override memoCodeMap = { - true: 'Undeposited', - false: 'Deposited', - }; override memoCodeTransactionTypes = { true: ScheduleATransactionTypes.PAC_CONDUIT_EARMARK_RECEIPT_UNDEPOSITED, false: ScheduleATransactionTypes.PAC_CONDUIT_EARMARK_RECEIPT_DEPOSITED, diff --git a/front-end/src/app/shared/models/transaction-types/PAC_CONDUIT_EARMARK_OUT.model.spec.ts b/front-end/src/app/shared/models/transaction-types/PAC_CONDUIT_EARMARK_OUT.model.spec.ts index 8a1be69149..66a6c9f3a3 100644 --- a/front-end/src/app/shared/models/transaction-types/PAC_CONDUIT_EARMARK_OUT.model.spec.ts +++ b/front-end/src/app/shared/models/transaction-types/PAC_CONDUIT_EARMARK_OUT.model.spec.ts @@ -2,7 +2,6 @@ import { SchATransaction, ScheduleATransactionTypes } from '../scha-transaction. import { SchBTransaction, ScheduleBTransactionTypes } from '../schb-transaction.model'; import { getTestTransactionByType } from 'app/shared/utils/unit-test.utils'; import { ContactTypes } from '../contact.model'; -import { TransactionGroupPM } from '../transaction-groups/transaction-group-pm.model'; import { PAC_CONDUIT_EARMARK_OUT } from './PAC_CONDUIT_EARMARK_OUT.model'; describe('PAC_CONDUIT_EARMARK_OUT', () => { @@ -19,7 +18,6 @@ describe('PAC_CONDUIT_EARMARK_OUT', () => { it('should create an instance', () => { expect(transactionType).toBeTruthy(); expect(transactionType.scheduleId).toBe('B'); - expect(transactionType.transactionGroup).toBeInstanceOf(TransactionGroupPM); }); it('#factory() should return a SchATransaction', () => { diff --git a/front-end/src/app/shared/models/transaction-types/PAC_CONDUIT_EARMARK_OUT.model.ts b/front-end/src/app/shared/models/transaction-types/PAC_CONDUIT_EARMARK_OUT.model.ts index 2f926d326c..735c1d1c2d 100644 --- a/front-end/src/app/shared/models/transaction-types/PAC_CONDUIT_EARMARK_OUT.model.ts +++ b/front-end/src/app/shared/models/transaction-types/PAC_CONDUIT_EARMARK_OUT.model.ts @@ -1,18 +1,19 @@ import { schema } from 'fecfile-validate/fecfile_validate_js/dist/CONDUIT_EARMARK_OUTS'; -import { SchBTransactionType } from '../schb-transaction-type.model'; import { SchBTransaction, ScheduleBTransactionTypes } from '../schb-transaction.model'; -import { TransactionGroupPM } from '../transaction-groups/transaction-group-pm.model'; import { TemplateMapKeyType } from '../transaction-type.model'; import { SchATransaction } from '../scha-transaction.model'; +import { + COMMITTEE, + COMMITTEE_WITH_CANDIDATE_AND_ELECTION_B_FORM_FIELDS, +} from 'app/shared/utils/transaction-type-properties'; +import { CONDUIT_EARMARK_OUT } from './common-types/CONDUIT_EARMARK_OUT.model'; -export class PAC_CONDUIT_EARMARK_OUT extends SchBTransactionType { - transactionGroup = new TransactionGroupPM(); +export class PAC_CONDUIT_EARMARK_OUT extends CONDUIT_EARMARK_OUT { + formFields = COMMITTEE_WITH_CANDIDATE_AND_ELECTION_B_FORM_FIELDS; + contactTypeOptions = COMMITTEE; title = 'PAC Conduit Earmark Out'; schema = schema; - override isDependentChild = true; override parentTriggerFields = ['organization_name'] as TemplateMapKeyType[]; - override inheritedFields = ['amount', 'memo_code'] as TemplateMapKeyType[]; - override showAggregate = false; override memoCodeTransactionTypes = { true: ScheduleBTransactionTypes.PAC_CONDUIT_EARMARK_OUT_UNDEPOSITED, false: ScheduleBTransactionTypes.PAC_CONDUIT_EARMARK_OUT_DEPOSITED, diff --git a/front-end/src/app/shared/models/transaction-types/PAC_EARMARK_MEMO.model.spec.ts b/front-end/src/app/shared/models/transaction-types/PAC_EARMARK_MEMO.model.spec.ts index 5cbceccc88..1ff338f0e1 100644 --- a/front-end/src/app/shared/models/transaction-types/PAC_EARMARK_MEMO.model.spec.ts +++ b/front-end/src/app/shared/models/transaction-types/PAC_EARMARK_MEMO.model.spec.ts @@ -1,6 +1,5 @@ import { PAC_EARMARK_MEMO } from './PAC_EARMARK_MEMO.model'; import { SchATransaction, ScheduleATransactionTypes } from '../scha-transaction.model'; -import { TransactionGroupFG } from '../transaction-groups/transaction-group-fg.model'; describe('PAC_EARMARK_MEMO', () => { let transactionType: PAC_EARMARK_MEMO; @@ -12,7 +11,6 @@ describe('PAC_EARMARK_MEMO', () => { it('should create an instance', () => { expect(transactionType).toBeTruthy(); expect(transactionType.scheduleId).toBe('A'); - expect(transactionType.transactionGroup).toBeInstanceOf(TransactionGroupFG); }); it('#factory() should return a SchATransaction', () => { diff --git a/front-end/src/app/shared/models/transaction-types/PAC_EARMARK_MEMO.model.ts b/front-end/src/app/shared/models/transaction-types/PAC_EARMARK_MEMO.model.ts index 806e52f5e0..02943411f4 100644 --- a/front-end/src/app/shared/models/transaction-types/PAC_EARMARK_MEMO.model.ts +++ b/front-end/src/app/shared/models/transaction-types/PAC_EARMARK_MEMO.model.ts @@ -1,21 +1,12 @@ import { schema } from 'fecfile-validate/fecfile_validate_js/dist/PAC_EARMARK_MEMO'; -import { SchATransactionType } from '../scha-transaction-type.model'; import { SchATransaction, ScheduleATransactionTypes, ScheduleATransactionTypeLabels } from '../scha-transaction.model'; -import { TransactionGroupFG } from '../transaction-groups/transaction-group-fg.model'; import { AggregationGroups } from '../transaction.model'; -import { TemplateMapKeyType } from '../transaction-type.model'; import { LabelUtils } from 'app/shared/utils/label.utils'; +import { EARMARK_MEMO } from './common-types/EARMARK_MEMO.model'; -export class PAC_EARMARK_MEMO extends SchATransactionType { - transactionGroup = new TransactionGroupFG(); - override isDependentChild = true; +export class PAC_EARMARK_MEMO extends EARMARK_MEMO { title = LabelUtils.get(ScheduleATransactionTypeLabels, ScheduleATransactionTypes.PAC_EARMARK_MEMO); schema = schema; - override inheritedFields = ['amount' as TemplateMapKeyType]; - - override generatePurposeDescription(): string { - return 'Total earmarked through conduit.'; - } getNewTransaction() { return SchATransaction.fromJSON({ diff --git a/front-end/src/app/shared/models/transaction-types/PAC_EARMARK_RECEIPT.model.spec.ts b/front-end/src/app/shared/models/transaction-types/PAC_EARMARK_RECEIPT.model.spec.ts index db55c0ece0..373a7ea53d 100644 --- a/front-end/src/app/shared/models/transaction-types/PAC_EARMARK_RECEIPT.model.spec.ts +++ b/front-end/src/app/shared/models/transaction-types/PAC_EARMARK_RECEIPT.model.spec.ts @@ -1,7 +1,6 @@ import { SchATransaction, ScheduleATransactionTypes } from '../scha-transaction.model'; import { ContactTypes } from '../contact.model'; import { getTestTransactionByType } from 'app/shared/utils/unit-test.utils'; -import { TransactionGroupFG } from '../transaction-groups/transaction-group-fg.model'; describe('PAC_EARMARK_RECEIPT', () => { let transaction: SchATransaction; @@ -13,7 +12,6 @@ describe('PAC_EARMARK_RECEIPT', () => { it('should create an instance', () => { expect(transaction.transactionType).toBeTruthy(); expect(transaction.transactionType?.scheduleId).toBe('A'); - expect(transaction?.transactionType?.transactionGroup).toBeInstanceOf(TransactionGroupFG); }); it('#factory() should return a SchATransaction', () => { diff --git a/front-end/src/app/shared/models/transaction-types/PAC_EARMARK_RECEIPT.model.ts b/front-end/src/app/shared/models/transaction-types/PAC_EARMARK_RECEIPT.model.ts index f24a1a9f0b..36284beee6 100644 --- a/front-end/src/app/shared/models/transaction-types/PAC_EARMARK_RECEIPT.model.ts +++ b/front-end/src/app/shared/models/transaction-types/PAC_EARMARK_RECEIPT.model.ts @@ -1,23 +1,17 @@ import { LabelUtils } from 'app/shared/utils/label.utils'; import { schema } from 'fecfile-validate/fecfile_validate_js/dist/PAC_EARMARK_RECEIPT'; import { ContactTypes } from '../contact.model'; -import { SchATransactionType } from '../scha-transaction-type.model'; import { SchATransaction, ScheduleATransactionTypeLabels, ScheduleATransactionTypes } from '../scha-transaction.model'; -import { TransactionGroupFG } from '../transaction-groups/transaction-group-fg.model'; -import { - STANDARD_DOUBLE_ENTRY_CONTROLS, - TransactionNavigationControls, -} from '../transaction-navigation-controls.model'; import { AggregationGroups } from '../transaction.model'; -import { TemplateMapKeyType } from '../transaction-type.model'; +import { COMMITTEE, COMMITTEE_FORM_FIELDS } from 'app/shared/utils/transaction-type-properties'; +import { EARMARK } from './common-types/EARMARK.model'; -export class PAC_EARMARK_RECEIPT extends SchATransactionType { - transactionGroup = new TransactionGroupFG(); +export class PAC_EARMARK_RECEIPT extends EARMARK { + override formFields = COMMITTEE_FORM_FIELDS; + override contactTypeOptions = COMMITTEE; title = LabelUtils.get(ScheduleATransactionTypeLabels, ScheduleATransactionTypes.PAC_EARMARK_RECEIPT); schema = schema; override dependentChildTransactionType = ScheduleATransactionTypes.PAC_EARMARK_MEMO; - override navigationControls: TransactionNavigationControls = STANDARD_DOUBLE_ENTRY_CONTROLS; - override childTriggerFields = ['organization_name', 'last_name', 'first_name'] as TemplateMapKeyType[]; override generatePurposeDescription(transaction: SchATransaction): string { if (!transaction.children) return ''; diff --git a/front-end/src/app/shared/models/transaction-types/PAC_IN_KIND_OUT.model.spec.ts b/front-end/src/app/shared/models/transaction-types/PAC_IN_KIND_OUT.model.spec.ts index 0a88366df6..f31fa34735 100644 --- a/front-end/src/app/shared/models/transaction-types/PAC_IN_KIND_OUT.model.spec.ts +++ b/front-end/src/app/shared/models/transaction-types/PAC_IN_KIND_OUT.model.spec.ts @@ -1,5 +1,4 @@ import { PAC_IN_KIND_OUT } from './PAC_IN_KIND_OUT.model'; -import { TransactionGroupEE } from '../transaction-groups/transaction-group-ee.model'; import { SchBTransaction, ScheduleBTransactionTypes } from '../schb-transaction.model'; describe('IN_KIND_OUT', () => { @@ -12,7 +11,6 @@ describe('IN_KIND_OUT', () => { it('should create an instance', () => { expect(transactionType).toBeTruthy(); expect(transactionType.scheduleId).toBe('B'); - expect(transactionType.transactionGroup).toBeInstanceOf(TransactionGroupEE); }); it('#factory() should return a SchATransaction', () => { diff --git a/front-end/src/app/shared/models/transaction-types/PAC_IN_KIND_OUT.model.ts b/front-end/src/app/shared/models/transaction-types/PAC_IN_KIND_OUT.model.ts index 427db686e4..b2ef0ba38f 100644 --- a/front-end/src/app/shared/models/transaction-types/PAC_IN_KIND_OUT.model.ts +++ b/front-end/src/app/shared/models/transaction-types/PAC_IN_KIND_OUT.model.ts @@ -1,18 +1,13 @@ import { schema } from 'fecfile-validate/fecfile_validate_js/dist/COM_IN_KIND_OUTS'; -import { TransactionGroupEE } from '../transaction-groups/transaction-group-ee.model'; import { AggregationGroups } from '../transaction.model'; import { SchBTransaction, ScheduleBTransactionTypes, ScheduleBTransactionTypeLabels } from '../schb-transaction.model'; import { TemplateMapKeyType } from '../transaction-type.model'; -import { SchBTransactionType } from '../schb-transaction-type.model'; import { LabelUtils } from 'app/shared/utils/label.utils'; +import { IN_KIND_OUT } from './common-types/IN_KIND_OUT.model'; -export class PAC_IN_KIND_OUT extends SchBTransactionType { - transactionGroup = new TransactionGroupEE(); - override isDependentChild = true; - override showAggregate = false; +export class PAC_IN_KIND_OUT extends IN_KIND_OUT { title = LabelUtils.get(ScheduleBTransactionTypeLabels, ScheduleBTransactionTypes.PAC_IN_KIND_OUT); schema = schema; - override useParentContact = true; override inheritedFields = [ 'organization_name', 'street_1', diff --git a/front-end/src/app/shared/models/transaction-types/PAC_IN_KIND_RECEIPT.model.spec.ts b/front-end/src/app/shared/models/transaction-types/PAC_IN_KIND_RECEIPT.model.spec.ts index 7ba73f682f..d78614c238 100644 --- a/front-end/src/app/shared/models/transaction-types/PAC_IN_KIND_RECEIPT.model.spec.ts +++ b/front-end/src/app/shared/models/transaction-types/PAC_IN_KIND_RECEIPT.model.spec.ts @@ -1,6 +1,5 @@ import { SchATransaction, ScheduleATransactionTypes } from '../scha-transaction.model'; import { getTestTransactionByType } from 'app/shared/utils/unit-test.utils'; -import { TransactionGroupEE } from '../transaction-groups/transaction-group-ee.model'; describe('PAC_IN_KIND_RECEIPT', () => { let transaction: SchATransaction; @@ -12,7 +11,6 @@ describe('PAC_IN_KIND_RECEIPT', () => { it('should create an instance', () => { expect(transaction.transactionType).toBeTruthy(); expect(transaction.transactionType?.scheduleId).toBe('A'); - expect(transaction?.transactionType?.transactionGroup).toBeInstanceOf(TransactionGroupEE); }); it('#factory() should return a SchATransaction', () => { diff --git a/front-end/src/app/shared/models/transaction-types/PAC_IN_KIND_RECEIPT.model.ts b/front-end/src/app/shared/models/transaction-types/PAC_IN_KIND_RECEIPT.model.ts index 5e67332c1b..3f049cc9dd 100644 --- a/front-end/src/app/shared/models/transaction-types/PAC_IN_KIND_RECEIPT.model.ts +++ b/front-end/src/app/shared/models/transaction-types/PAC_IN_KIND_RECEIPT.model.ts @@ -1,23 +1,14 @@ import { LabelUtils } from 'app/shared/utils/label.utils'; import { schema } from 'fecfile-validate/fecfile_validate_js/dist/COM_IN_KIND_RECEIPTS'; -import { SchATransactionType } from '../scha-transaction-type.model'; import { SchATransaction, ScheduleATransactionTypeLabels, ScheduleATransactionTypes } from '../scha-transaction.model'; -import { - STANDARD_DOUBLE_ENTRY_CONTROLS, - TransactionNavigationControls, -} from '../transaction-navigation-controls.model'; import { AggregationGroups } from '../transaction.model'; import { ScheduleBTransactionTypes } from '../schb-transaction.model'; -import { TransactionGroupEE } from '../transaction-groups/transaction-group-ee.model'; +import { IN_KIND } from './common-types/IN_KIND.model'; -export class PAC_IN_KIND_RECEIPT extends SchATransactionType { - transactionGroup = new TransactionGroupEE(); +export class PAC_IN_KIND_RECEIPT extends IN_KIND { title = LabelUtils.get(ScheduleATransactionTypeLabels, ScheduleATransactionTypes.PAC_IN_KIND_RECEIPT); schema = schema; - override apiEndpoint = '/transactions/save-pair'; override dependentChildTransactionType = ScheduleBTransactionTypes.PAC_IN_KIND_OUT; - override navigationControls: TransactionNavigationControls = STANDARD_DOUBLE_ENTRY_CONTROLS; - override purposeDescriptionPrefix = 'In-Kind: '; getNewTransaction() { return SchATransaction.fromJSON({ diff --git a/front-end/src/app/shared/models/transaction-types/PAC_JF_TRANSFER_MEMO.model.spec.ts b/front-end/src/app/shared/models/transaction-types/PAC_JF_TRANSFER_MEMO.model.spec.ts index 9fb4fa5577..0607a336b0 100644 --- a/front-end/src/app/shared/models/transaction-types/PAC_JF_TRANSFER_MEMO.model.spec.ts +++ b/front-end/src/app/shared/models/transaction-types/PAC_JF_TRANSFER_MEMO.model.spec.ts @@ -1,6 +1,5 @@ import { getTestTransactionByType } from 'app/shared/utils/unit-test.utils'; import { SchATransaction, ScheduleATransactionTypes } from '../scha-transaction.model'; -import { TransactionGroupE } from '../transaction-groups/transaction-group-e.model'; describe('PAC_JF_TRANSFER_MEMO', () => { let transaction: SchATransaction; @@ -16,7 +15,6 @@ describe('PAC_JF_TRANSFER_MEMO', () => { it('should create an instance', () => { expect(transaction.transactionType).toBeTruthy(); expect(transaction.transactionType?.scheduleId).toBe('A'); - expect(transaction?.transactionType?.transactionGroup).toBeInstanceOf(TransactionGroupE); }); it('#factory() should return a SchATransaction', () => { diff --git a/front-end/src/app/shared/models/transaction-types/PAC_JF_TRANSFER_MEMO.model.ts b/front-end/src/app/shared/models/transaction-types/PAC_JF_TRANSFER_MEMO.model.ts index 5f4a4dcb06..d89496b8e6 100644 --- a/front-end/src/app/shared/models/transaction-types/PAC_JF_TRANSFER_MEMO.model.ts +++ b/front-end/src/app/shared/models/transaction-types/PAC_JF_TRANSFER_MEMO.model.ts @@ -2,12 +2,13 @@ import { LabelUtils } from 'app/shared/utils/label.utils'; import { schema } from 'fecfile-validate/fecfile_validate_js/dist/PAC_JF_TRANSFER_MEMO'; import { SchATransactionType } from '../scha-transaction-type.model'; import { SchATransaction, ScheduleATransactionTypeLabels, ScheduleATransactionTypes } from '../scha-transaction.model'; -import { TransactionGroupE } from '../transaction-groups/transaction-group-e.model'; import { getChildNavigationControls, TransactionNavigationControls } from '../transaction-navigation-controls.model'; import { AggregationGroups } from '../transaction.model'; +import { COMMITTEE, COMMITTEE_FORM_FIELDS } from 'app/shared/utils/transaction-type-properties'; export class PAC_JF_TRANSFER_MEMO extends SchATransactionType { - transactionGroup = new TransactionGroupE(); + formFields = COMMITTEE_FORM_FIELDS; + contactTypeOptions = COMMITTEE; title = LabelUtils.get(ScheduleATransactionTypeLabels, ScheduleATransactionTypes.PAC_JF_TRANSFER_MEMO); override shortName = 'PAC'; schema = schema; diff --git a/front-end/src/app/shared/models/transaction-types/PAC_NATIONAL_PARTY_CONVENTION_ACCOUNT.model.spec.ts b/front-end/src/app/shared/models/transaction-types/PAC_NATIONAL_PARTY_CONVENTION_ACCOUNT.model.spec.ts index 3ab7a0cd76..615fbdf8a1 100644 --- a/front-end/src/app/shared/models/transaction-types/PAC_NATIONAL_PARTY_CONVENTION_ACCOUNT.model.spec.ts +++ b/front-end/src/app/shared/models/transaction-types/PAC_NATIONAL_PARTY_CONVENTION_ACCOUNT.model.spec.ts @@ -1,6 +1,5 @@ import { PAC_NATIONAL_PARTY_CONVENTION_ACCOUNT } from './PAC_NATIONAL_PARTY_CONVENTION_ACCOUNT.model'; import { SchATransaction, ScheduleATransactionTypes } from '../scha-transaction.model'; -import { TransactionGroupE } from '../transaction-groups/transaction-group-e.model'; describe('PAC_NATIONAL_PARTY_CONVENTION_ACCOUNT', () => { let transactionType: PAC_NATIONAL_PARTY_CONVENTION_ACCOUNT; @@ -12,7 +11,6 @@ describe('PAC_NATIONAL_PARTY_CONVENTION_ACCOUNT', () => { it('should create an instance', () => { expect(transactionType).toBeTruthy(); expect(transactionType.scheduleId).toBe('A'); - expect(transactionType.transactionGroup).toBeInstanceOf(TransactionGroupE); }); it('#factory() should return a SchATransaction', () => { diff --git a/front-end/src/app/shared/models/transaction-types/PAC_NATIONAL_PARTY_CONVENTION_ACCOUNT.model.ts b/front-end/src/app/shared/models/transaction-types/PAC_NATIONAL_PARTY_CONVENTION_ACCOUNT.model.ts index 46fdc08346..718ee2a6f4 100644 --- a/front-end/src/app/shared/models/transaction-types/PAC_NATIONAL_PARTY_CONVENTION_ACCOUNT.model.ts +++ b/front-end/src/app/shared/models/transaction-types/PAC_NATIONAL_PARTY_CONVENTION_ACCOUNT.model.ts @@ -4,10 +4,11 @@ import { AggregationGroups } from '../transaction.model'; import { SchATransaction, ScheduleATransactionTypeLabels, ScheduleATransactionTypes } from '../scha-transaction.model'; import { SchATransactionType } from '../scha-transaction-type.model'; import { STANDARD_CONTROLS, TransactionNavigationControls } from '../transaction-navigation-controls.model'; -import { TransactionGroupE } from '../transaction-groups/transaction-group-e.model'; +import { COMMITTEE, COMMITTEE_FORM_FIELDS } from 'app/shared/utils/transaction-type-properties'; export class PAC_NATIONAL_PARTY_CONVENTION_ACCOUNT extends SchATransactionType { - transactionGroup = new TransactionGroupE(); + formFields = COMMITTEE_FORM_FIELDS; + contactTypeOptions = COMMITTEE; title = LabelUtils.get( ScheduleATransactionTypeLabels, ScheduleATransactionTypes.PAC_NATIONAL_PARTY_CONVENTION_ACCOUNT diff --git a/front-end/src/app/shared/models/transaction-types/PAC_NATIONAL_PARTY_CONVENTION_JF_TRANSFER_MEMO.model.spec.ts b/front-end/src/app/shared/models/transaction-types/PAC_NATIONAL_PARTY_CONVENTION_JF_TRANSFER_MEMO.model.spec.ts index 4e41f2c3d2..4abb9d7064 100644 --- a/front-end/src/app/shared/models/transaction-types/PAC_NATIONAL_PARTY_CONVENTION_JF_TRANSFER_MEMO.model.spec.ts +++ b/front-end/src/app/shared/models/transaction-types/PAC_NATIONAL_PARTY_CONVENTION_JF_TRANSFER_MEMO.model.spec.ts @@ -1,6 +1,5 @@ import { getTestTransactionByType } from 'app/shared/utils/unit-test.utils'; import { SchATransaction, ScheduleATransactionTypes } from '../scha-transaction.model'; -import { TransactionGroupE } from '../transaction-groups/transaction-group-e.model'; describe('PAC_NATIONAL_PARTY_CONVENTION_JF_TRANSFER_MEMO', () => { let transaction: SchATransaction; @@ -15,7 +14,6 @@ describe('PAC_NATIONAL_PARTY_CONVENTION_JF_TRANSFER_MEMO', () => { it('should create an instance', () => { expect(transaction.transactionType).toBeTruthy(); expect(transaction.transactionType?.scheduleId).toBe('A'); - expect(transaction?.transactionType?.transactionGroup).toBeInstanceOf(TransactionGroupE); }); it('#factory() should return a SchATransaction', () => { diff --git a/front-end/src/app/shared/models/transaction-types/PAC_NATIONAL_PARTY_CONVENTION_JF_TRANSFER_MEMO.model.ts b/front-end/src/app/shared/models/transaction-types/PAC_NATIONAL_PARTY_CONVENTION_JF_TRANSFER_MEMO.model.ts index 4de0dd586c..4d875cf05f 100644 --- a/front-end/src/app/shared/models/transaction-types/PAC_NATIONAL_PARTY_CONVENTION_JF_TRANSFER_MEMO.model.ts +++ b/front-end/src/app/shared/models/transaction-types/PAC_NATIONAL_PARTY_CONVENTION_JF_TRANSFER_MEMO.model.ts @@ -4,10 +4,11 @@ import { AggregationGroups } from '../transaction.model'; import { SchATransaction, ScheduleATransactionTypeLabels, ScheduleATransactionTypes } from '../scha-transaction.model'; import { SchATransactionType } from '../scha-transaction-type.model'; import { TransactionNavigationControls, getChildNavigationControls } from '../transaction-navigation-controls.model'; -import { TransactionGroupE } from '../transaction-groups/transaction-group-e.model'; +import { COMMITTEE, COMMITTEE_FORM_FIELDS } from 'app/shared/utils/transaction-type-properties'; export class PAC_NATIONAL_PARTY_CONVENTION_JF_TRANSFER_MEMO extends SchATransactionType { - transactionGroup = new TransactionGroupE(); + formFields = COMMITTEE_FORM_FIELDS; + contactTypeOptions = COMMITTEE; title = LabelUtils.get( ScheduleATransactionTypeLabels, ScheduleATransactionTypes.PAC_NATIONAL_PARTY_CONVENTION_JF_TRANSFER_MEMO diff --git a/front-end/src/app/shared/models/transaction-types/PAC_NATIONAL_PARTY_HEADQUARTERS_ACCOUNT.model.spec.ts b/front-end/src/app/shared/models/transaction-types/PAC_NATIONAL_PARTY_HEADQUARTERS_ACCOUNT.model.spec.ts index 40f60ff2ea..8cdd364ece 100644 --- a/front-end/src/app/shared/models/transaction-types/PAC_NATIONAL_PARTY_HEADQUARTERS_ACCOUNT.model.spec.ts +++ b/front-end/src/app/shared/models/transaction-types/PAC_NATIONAL_PARTY_HEADQUARTERS_ACCOUNT.model.spec.ts @@ -1,6 +1,5 @@ import { PAC_NATIONAL_PARTY_HEADQUARTERS_ACCOUNT } from './PAC_NATIONAL_PARTY_HEADQUARTERS_ACCOUNT.model'; import { SchATransaction, ScheduleATransactionTypes } from '../scha-transaction.model'; -import { TransactionGroupE } from '../transaction-groups/transaction-group-e.model'; describe('PAC_NATIONAL_PARTY_HEADQUARTERS_BUILDINGS_ACCOUNT', () => { let transactionType: PAC_NATIONAL_PARTY_HEADQUARTERS_ACCOUNT; @@ -12,7 +11,6 @@ describe('PAC_NATIONAL_PARTY_HEADQUARTERS_BUILDINGS_ACCOUNT', () => { it('should create an instance', () => { expect(transactionType).toBeTruthy(); expect(transactionType.scheduleId).toBe('A'); - expect(transactionType.transactionGroup).toBeInstanceOf(TransactionGroupE); }); it('#factory() should return a SchATransaction', () => { diff --git a/front-end/src/app/shared/models/transaction-types/PAC_NATIONAL_PARTY_HEADQUARTERS_ACCOUNT.model.ts b/front-end/src/app/shared/models/transaction-types/PAC_NATIONAL_PARTY_HEADQUARTERS_ACCOUNT.model.ts index 0296d90056..4c9efd1751 100644 --- a/front-end/src/app/shared/models/transaction-types/PAC_NATIONAL_PARTY_HEADQUARTERS_ACCOUNT.model.ts +++ b/front-end/src/app/shared/models/transaction-types/PAC_NATIONAL_PARTY_HEADQUARTERS_ACCOUNT.model.ts @@ -4,10 +4,11 @@ import { AggregationGroups } from '../transaction.model'; import { SchATransaction, ScheduleATransactionTypeLabels, ScheduleATransactionTypes } from '../scha-transaction.model'; import { SchATransactionType } from '../scha-transaction-type.model'; import { STANDARD_CONTROLS, TransactionNavigationControls } from '../transaction-navigation-controls.model'; -import { TransactionGroupE } from '../transaction-groups/transaction-group-e.model'; +import { COMMITTEE, COMMITTEE_FORM_FIELDS } from 'app/shared/utils/transaction-type-properties'; export class PAC_NATIONAL_PARTY_HEADQUARTERS_ACCOUNT extends SchATransactionType { - transactionGroup = new TransactionGroupE(); + formFields = COMMITTEE_FORM_FIELDS; + contactTypeOptions = COMMITTEE; title = LabelUtils.get( ScheduleATransactionTypeLabels, ScheduleATransactionTypes.PAC_NATIONAL_PARTY_HEADQUARTERS_ACCOUNT diff --git a/front-end/src/app/shared/models/transaction-types/PAC_NATIONAL_PARTY_HEADQUARTERS_JF_TRANSFER_MEMO.model.spec.ts b/front-end/src/app/shared/models/transaction-types/PAC_NATIONAL_PARTY_HEADQUARTERS_JF_TRANSFER_MEMO.model.spec.ts index f602d72f0f..041a8dc6df 100644 --- a/front-end/src/app/shared/models/transaction-types/PAC_NATIONAL_PARTY_HEADQUARTERS_JF_TRANSFER_MEMO.model.spec.ts +++ b/front-end/src/app/shared/models/transaction-types/PAC_NATIONAL_PARTY_HEADQUARTERS_JF_TRANSFER_MEMO.model.spec.ts @@ -1,6 +1,5 @@ import { SchATransaction, ScheduleATransactionTypes } from '../scha-transaction.model'; import { getTestTransactionByType } from 'app/shared/utils/unit-test.utils'; -import { TransactionGroupE } from '../transaction-groups/transaction-group-e.model'; describe('PAC_NATIONAL_PARTY_HEADQUARTERS_JF_TRANSFER_MEMO', () => { let transaction: SchATransaction; @@ -16,7 +15,6 @@ describe('PAC_NATIONAL_PARTY_HEADQUARTERS_JF_TRANSFER_MEMO', () => { it('should create an instance', () => { expect(transaction.transactionType).toBeTruthy(); expect(transaction.transactionType?.scheduleId).toBe('A'); - expect(transaction?.transactionType?.transactionGroup).toBeInstanceOf(TransactionGroupE); }); it('#factory() should return a SchATransaction', () => { diff --git a/front-end/src/app/shared/models/transaction-types/PAC_NATIONAL_PARTY_HEADQUARTERS_JF_TRANSFER_MEMO.model.ts b/front-end/src/app/shared/models/transaction-types/PAC_NATIONAL_PARTY_HEADQUARTERS_JF_TRANSFER_MEMO.model.ts index 549e1a0986..caa83dbbd2 100644 --- a/front-end/src/app/shared/models/transaction-types/PAC_NATIONAL_PARTY_HEADQUARTERS_JF_TRANSFER_MEMO.model.ts +++ b/front-end/src/app/shared/models/transaction-types/PAC_NATIONAL_PARTY_HEADQUARTERS_JF_TRANSFER_MEMO.model.ts @@ -4,10 +4,11 @@ import { AggregationGroups } from '../transaction.model'; import { SchATransaction, ScheduleATransactionTypeLabels, ScheduleATransactionTypes } from '../scha-transaction.model'; import { SchATransactionType } from '../scha-transaction-type.model'; import { TransactionNavigationControls, getChildNavigationControls } from '../transaction-navigation-controls.model'; -import { TransactionGroupE } from '../transaction-groups/transaction-group-e.model'; +import { COMMITTEE, COMMITTEE_FORM_FIELDS } from 'app/shared/utils/transaction-type-properties'; export class PAC_NATIONAL_PARTY_HEADQUARTERS_JF_TRANSFER_MEMO extends SchATransactionType { - transactionGroup = new TransactionGroupE(); + formFields = COMMITTEE_FORM_FIELDS; + contactTypeOptions = COMMITTEE; title = LabelUtils.get( ScheduleATransactionTypeLabels, ScheduleATransactionTypes.PAC_NATIONAL_PARTY_HEADQUARTERS_JF_TRANSFER_MEMO diff --git a/front-end/src/app/shared/models/transaction-types/PAC_NATIONAL_PARTY_RECOUNT_ACCOUNT.model.spec.ts b/front-end/src/app/shared/models/transaction-types/PAC_NATIONAL_PARTY_RECOUNT_ACCOUNT.model.spec.ts index 485e5659f3..02ef3c3987 100644 --- a/front-end/src/app/shared/models/transaction-types/PAC_NATIONAL_PARTY_RECOUNT_ACCOUNT.model.spec.ts +++ b/front-end/src/app/shared/models/transaction-types/PAC_NATIONAL_PARTY_RECOUNT_ACCOUNT.model.spec.ts @@ -1,5 +1,4 @@ import { SchATransaction, ScheduleATransactionTypes } from '../scha-transaction.model'; -import { TransactionGroupE } from '../transaction-groups/transaction-group-e.model'; import { PAC_NATIONAL_PARTY_RECOUNT_ACCOUNT } from './PAC_NATIONAL_PARTY_RECOUNT_ACCOUNT.model'; describe('PAC_NATIONAL_PARTY_RECOUNT_ACCOUNT', () => { @@ -12,7 +11,6 @@ describe('PAC_NATIONAL_PARTY_RECOUNT_ACCOUNT', () => { it('should create an instance', () => { expect(transactionType).toBeTruthy(); expect(transactionType.scheduleId).toBe('A'); - expect(transactionType.transactionGroup).toBeInstanceOf(TransactionGroupE); }); it('#factory() should return a SchATransaction', () => { diff --git a/front-end/src/app/shared/models/transaction-types/PAC_NATIONAL_PARTY_RECOUNT_ACCOUNT.model.ts b/front-end/src/app/shared/models/transaction-types/PAC_NATIONAL_PARTY_RECOUNT_ACCOUNT.model.ts index 3aaed77d40..73eba8e82b 100644 --- a/front-end/src/app/shared/models/transaction-types/PAC_NATIONAL_PARTY_RECOUNT_ACCOUNT.model.ts +++ b/front-end/src/app/shared/models/transaction-types/PAC_NATIONAL_PARTY_RECOUNT_ACCOUNT.model.ts @@ -4,10 +4,11 @@ import { AggregationGroups } from '../transaction.model'; import { SchATransaction, ScheduleATransactionTypeLabels, ScheduleATransactionTypes } from '../scha-transaction.model'; import { SchATransactionType } from '../scha-transaction-type.model'; import { STANDARD_CONTROLS, TransactionNavigationControls } from '../transaction-navigation-controls.model'; -import { TransactionGroupE } from '../transaction-groups/transaction-group-e.model'; +import { COMMITTEE, COMMITTEE_FORM_FIELDS } from 'app/shared/utils/transaction-type-properties'; export class PAC_NATIONAL_PARTY_RECOUNT_ACCOUNT extends SchATransactionType { - transactionGroup = new TransactionGroupE(); + formFields = COMMITTEE_FORM_FIELDS; + contactTypeOptions = COMMITTEE; title = LabelUtils.get(ScheduleATransactionTypeLabels, ScheduleATransactionTypes.PAC_NATIONAL_PARTY_RECOUNT_ACCOUNT); schema = schema; override navigationControls: TransactionNavigationControls = STANDARD_CONTROLS; diff --git a/front-end/src/app/shared/models/transaction-types/PAC_NATIONAL_PARTY_RECOUNT_JF_TRANSFER_MEMO.model.spec.ts b/front-end/src/app/shared/models/transaction-types/PAC_NATIONAL_PARTY_RECOUNT_JF_TRANSFER_MEMO.model.spec.ts index ccceb46ea2..0a3aed4bd8 100644 --- a/front-end/src/app/shared/models/transaction-types/PAC_NATIONAL_PARTY_RECOUNT_JF_TRANSFER_MEMO.model.spec.ts +++ b/front-end/src/app/shared/models/transaction-types/PAC_NATIONAL_PARTY_RECOUNT_JF_TRANSFER_MEMO.model.spec.ts @@ -1,5 +1,4 @@ import { SchATransaction, ScheduleATransactionTypes } from '../scha-transaction.model'; -import { TransactionGroupE } from '../transaction-groups/transaction-group-e.model'; import { PAC_NATIONAL_PARTY_RECOUNT_JF_TRANSFER_MEMO } from './PAC_NATIONAL_PARTY_RECOUNT_JF_TRANSFER_MEMO.model'; describe('PAC_NATIONAL_PARTY_RECOUNT_JF_TRANSFER_MEMO', () => { @@ -12,7 +11,6 @@ describe('PAC_NATIONAL_PARTY_RECOUNT_JF_TRANSFER_MEMO', () => { it('should create an instance', () => { expect(transactionType).toBeTruthy(); expect(transactionType.scheduleId).toBe('A'); - expect(transactionType.transactionGroup).toBeInstanceOf(TransactionGroupE); }); it('#factory() should return a SchATransaction', () => { diff --git a/front-end/src/app/shared/models/transaction-types/PAC_NATIONAL_PARTY_RECOUNT_JF_TRANSFER_MEMO.model.ts b/front-end/src/app/shared/models/transaction-types/PAC_NATIONAL_PARTY_RECOUNT_JF_TRANSFER_MEMO.model.ts index e792dc3ea5..f417c7ecc3 100644 --- a/front-end/src/app/shared/models/transaction-types/PAC_NATIONAL_PARTY_RECOUNT_JF_TRANSFER_MEMO.model.ts +++ b/front-end/src/app/shared/models/transaction-types/PAC_NATIONAL_PARTY_RECOUNT_JF_TRANSFER_MEMO.model.ts @@ -4,10 +4,11 @@ import { AggregationGroups } from '../transaction.model'; import { SchATransaction, ScheduleATransactionTypeLabels, ScheduleATransactionTypes } from '../scha-transaction.model'; import { SchATransactionType } from '../scha-transaction-type.model'; import { TransactionNavigationControls, getChildNavigationControls } from '../transaction-navigation-controls.model'; -import { TransactionGroupE } from '../transaction-groups/transaction-group-e.model'; +import { COMMITTEE, COMMITTEE_FORM_FIELDS } from 'app/shared/utils/transaction-type-properties'; export class PAC_NATIONAL_PARTY_RECOUNT_JF_TRANSFER_MEMO extends SchATransactionType { - transactionGroup = new TransactionGroupE(); + formFields = COMMITTEE_FORM_FIELDS; + contactTypeOptions = COMMITTEE; title = LabelUtils.get( ScheduleATransactionTypeLabels, ScheduleATransactionTypes.PAC_NATIONAL_PARTY_RECOUNT_JF_TRANSFER_MEMO diff --git a/front-end/src/app/shared/models/transaction-types/PAC_RECEIPT.model.spec.ts b/front-end/src/app/shared/models/transaction-types/PAC_RECEIPT.model.spec.ts index 3e5ce3ab11..707f4a1115 100644 --- a/front-end/src/app/shared/models/transaction-types/PAC_RECEIPT.model.spec.ts +++ b/front-end/src/app/shared/models/transaction-types/PAC_RECEIPT.model.spec.ts @@ -1,6 +1,5 @@ import { TransactionType } from 'app/shared/models/transaction-type.model'; import { SchATransaction, ScheduleATransactionTypes } from '../scha-transaction.model'; -import { TransactionGroupE } from '../transaction-groups/transaction-group-e.model'; import { PAC_RECEIPT } from './PAC_RECEIPT.model'; describe('PAC_RECEIPT', () => { @@ -13,7 +12,6 @@ describe('PAC_RECEIPT', () => { it('should create an instance', () => { expect(transactionType).toBeTruthy(); expect(transactionType.scheduleId).toBe('A'); - expect(transactionType.transactionGroup).toBeInstanceOf(TransactionGroupE); }); it('#factory() should return a SchATransaction', () => { diff --git a/front-end/src/app/shared/models/transaction-types/PAC_RECEIPT.model.ts b/front-end/src/app/shared/models/transaction-types/PAC_RECEIPT.model.ts index 1cf8016cae..f3724a04e3 100644 --- a/front-end/src/app/shared/models/transaction-types/PAC_RECEIPT.model.ts +++ b/front-end/src/app/shared/models/transaction-types/PAC_RECEIPT.model.ts @@ -4,10 +4,11 @@ import { AggregationGroups } from '../transaction.model'; import { SchATransaction, ScheduleATransactionTypeLabels, ScheduleATransactionTypes } from '../scha-transaction.model'; import { SchATransactionType } from '../scha-transaction-type.model'; import { STANDARD_CONTROLS, TransactionNavigationControls } from '../transaction-navigation-controls.model'; -import { TransactionGroupE } from '../transaction-groups/transaction-group-e.model'; +import { COMMITTEE, COMMITTEE_FORM_FIELDS } from 'app/shared/utils/transaction-type-properties'; export class PAC_RECEIPT extends SchATransactionType { - transactionGroup = new TransactionGroupE(); + formFields = COMMITTEE_FORM_FIELDS; + contactTypeOptions = COMMITTEE; title = LabelUtils.get(ScheduleATransactionTypeLabels, ScheduleATransactionTypes.PAC_RECEIPT); schema = schema; override navigationControls: TransactionNavigationControls = STANDARD_CONTROLS; diff --git a/front-end/src/app/shared/models/transaction-types/PAC_RECOUNT_RECEIPT.model.spec.ts b/front-end/src/app/shared/models/transaction-types/PAC_RECOUNT_RECEIPT.model.spec.ts index 4838250c17..54517f2359 100644 --- a/front-end/src/app/shared/models/transaction-types/PAC_RECOUNT_RECEIPT.model.spec.ts +++ b/front-end/src/app/shared/models/transaction-types/PAC_RECOUNT_RECEIPT.model.spec.ts @@ -1,5 +1,4 @@ import { SchATransaction, ScheduleATransactionTypes } from '../scha-transaction.model'; -import { TransactionGroupE } from '../transaction-groups/transaction-group-e.model'; import { PAC_RECOUNT_RECEIPT } from './PAC_RECOUNT_RECEIPT.model'; describe('PAC_RECOUNT_RECEIPT', () => { @@ -12,7 +11,6 @@ describe('PAC_RECOUNT_RECEIPT', () => { it('should create an instance', () => { expect(transactionType).toBeTruthy(); expect(transactionType.scheduleId).toBe('A'); - expect(transactionType.transactionGroup).toBeInstanceOf(TransactionGroupE); }); it('#factory() should return a SchATransaction', () => { diff --git a/front-end/src/app/shared/models/transaction-types/PAC_RECOUNT_RECEIPT.model.ts b/front-end/src/app/shared/models/transaction-types/PAC_RECOUNT_RECEIPT.model.ts index 813340703f..54113a91c0 100644 --- a/front-end/src/app/shared/models/transaction-types/PAC_RECOUNT_RECEIPT.model.ts +++ b/front-end/src/app/shared/models/transaction-types/PAC_RECOUNT_RECEIPT.model.ts @@ -4,10 +4,11 @@ import { AggregationGroups } from '../transaction.model'; import { SchATransaction, ScheduleATransactionTypeLabels, ScheduleATransactionTypes } from '../scha-transaction.model'; import { SchATransactionType } from '../scha-transaction-type.model'; import { STANDARD_CONTROLS, TransactionNavigationControls } from '../transaction-navigation-controls.model'; -import { TransactionGroupE } from '../transaction-groups/transaction-group-e.model'; +import { COMMITTEE, COMMITTEE_FORM_FIELDS } from 'app/shared/utils/transaction-type-properties'; export class PAC_RECOUNT_RECEIPT extends SchATransactionType { - transactionGroup = new TransactionGroupE(); + formFields = COMMITTEE_FORM_FIELDS; + contactTypeOptions = COMMITTEE; title = LabelUtils.get(ScheduleATransactionTypeLabels, ScheduleATransactionTypes.PAC_RECOUNT_RECEIPT); schema = schema; override navigationControls: TransactionNavigationControls = STANDARD_CONTROLS; diff --git a/front-end/src/app/shared/models/transaction-types/PAC_RETURN.model.spec.ts b/front-end/src/app/shared/models/transaction-types/PAC_RETURN.model.spec.ts index 452c86da51..36a09eec36 100644 --- a/front-end/src/app/shared/models/transaction-types/PAC_RETURN.model.spec.ts +++ b/front-end/src/app/shared/models/transaction-types/PAC_RETURN.model.spec.ts @@ -1,6 +1,5 @@ import { SchATransactionType } from '../scha-transaction-type.model'; import { SchATransaction, ScheduleATransactionTypes } from '../scha-transaction.model'; -import { TransactionGroupE } from '../transaction-groups/transaction-group-e.model'; import { PAC_RETURN } from './PAC_RETURN.model'; describe('PAC_RETURN', () => { @@ -13,7 +12,6 @@ describe('PAC_RETURN', () => { it('should create an instance', () => { expect(transactionType).toBeTruthy(); expect(transactionType.scheduleId).toBe('A'); - expect(transactionType.transactionGroup).toBeInstanceOf(TransactionGroupE); }); it('#factory() should return a SchATransaction', () => { diff --git a/front-end/src/app/shared/models/transaction-types/PAC_RETURN.model.ts b/front-end/src/app/shared/models/transaction-types/PAC_RETURN.model.ts index 5b31aa50b7..15adfac95f 100644 --- a/front-end/src/app/shared/models/transaction-types/PAC_RETURN.model.ts +++ b/front-end/src/app/shared/models/transaction-types/PAC_RETURN.model.ts @@ -4,10 +4,11 @@ import { AggregationGroups } from '../transaction.model'; import { LabelUtils } from 'app/shared/utils/label.utils'; import { schema } from 'fecfile-validate/fecfile_validate_js/dist/PAC_RETURN'; import { TransactionNavigationControls, STANDARD_CONTROLS } from '../transaction-navigation-controls.model'; -import { TransactionGroupE } from '../transaction-groups/transaction-group-e.model'; +import { COMMITTEE, COMMITTEE_FORM_FIELDS } from 'app/shared/utils/transaction-type-properties'; export class PAC_RETURN extends SchATransactionType { - transactionGroup = new TransactionGroupE(); + formFields = COMMITTEE_FORM_FIELDS; + contactTypeOptions = COMMITTEE; title = LabelUtils.get(ScheduleATransactionTypeLabels, ScheduleATransactionTypes.PAC_RETURN); schema = schema; override negativeAmountValueOnly = true; diff --git a/front-end/src/app/shared/models/transaction-types/PARTNERSHIP_MEMO.model.spec.ts b/front-end/src/app/shared/models/transaction-types/PARTNERSHIP_ATTRIBUTION.model.spec.ts similarity index 64% rename from front-end/src/app/shared/models/transaction-types/PARTNERSHIP_MEMO.model.spec.ts rename to front-end/src/app/shared/models/transaction-types/PARTNERSHIP_ATTRIBUTION.model.spec.ts index 6d6c53a73a..891cdbac69 100644 --- a/front-end/src/app/shared/models/transaction-types/PARTNERSHIP_MEMO.model.spec.ts +++ b/front-end/src/app/shared/models/transaction-types/PARTNERSHIP_ATTRIBUTION.model.spec.ts @@ -1,24 +1,22 @@ -import { PARTNERSHIP_MEMO } from './PARTNERSHIP_MEMO.model'; +import { PARTNERSHIP_ATTRIBUTION } from './PARTNERSHIP_ATTRIBUTION.model'; import { SchATransaction, ScheduleATransactionTypes } from '../scha-transaction.model'; -import { TransactionGroupA } from '../transaction-groups/transaction-group-a.model'; -describe('PARTNERSHIP_MEMO', () => { - let transactionType: PARTNERSHIP_MEMO; +describe('PARTNERSHIP_ATTRIBUTION', () => { + let transactionType: PARTNERSHIP_ATTRIBUTION; beforeEach(() => { - transactionType = new PARTNERSHIP_MEMO(); + transactionType = new PARTNERSHIP_ATTRIBUTION(); }); it('should create an instance', () => { expect(transactionType).toBeTruthy(); expect(transactionType.scheduleId).toBe('A'); - expect(transactionType.transactionGroup).toBeInstanceOf(TransactionGroupA); }); it('#factory() should return a SchATransaction', () => { const txn: SchATransaction = transactionType.getNewTransaction(); expect(txn.form_type).toBe('SA11AI'); - expect(txn.transaction_type_identifier).toBe(ScheduleATransactionTypes.PARTNERSHIP_MEMO); + expect(txn.transaction_type_identifier).toBe(ScheduleATransactionTypes.PARTNERSHIP_ATTRIBUTION); }); it('#generatePurposeDescription() should generate a string', () => { diff --git a/front-end/src/app/shared/models/transaction-types/PARTNERSHIP_MEMO.model.ts b/front-end/src/app/shared/models/transaction-types/PARTNERSHIP_ATTRIBUTION.model.ts similarity index 75% rename from front-end/src/app/shared/models/transaction-types/PARTNERSHIP_MEMO.model.ts rename to front-end/src/app/shared/models/transaction-types/PARTNERSHIP_ATTRIBUTION.model.ts index 5dbc7552f7..673c8cd3eb 100644 --- a/front-end/src/app/shared/models/transaction-types/PARTNERSHIP_MEMO.model.ts +++ b/front-end/src/app/shared/models/transaction-types/PARTNERSHIP_ATTRIBUTION.model.ts @@ -1,14 +1,15 @@ import { LabelUtils } from 'app/shared/utils/label.utils'; -import { schema } from 'fecfile-validate/fecfile_validate_js/dist/PARTNERSHIP_MEMO'; +import { schema } from 'fecfile-validate/fecfile_validate_js/dist/PARTNERSHIP_ATTRIBUTION'; import { AggregationGroups } from '../transaction.model'; import { SchATransaction, ScheduleATransactionTypeLabels, ScheduleATransactionTypes } from '../scha-transaction.model'; import { getChildNavigationControls, TransactionNavigationControls } from '../transaction-navigation-controls.model'; import { SchATransactionType } from '../scha-transaction-type.model'; -import { TransactionGroupA } from '../transaction-groups/transaction-group-a.model'; +import { INDIVIDUAL_FORM_FIELDS, INDIVIDUAL } from 'app/shared/utils/transaction-type-properties'; -export class PARTNERSHIP_MEMO extends SchATransactionType { - transactionGroup = new TransactionGroupA(); - title = LabelUtils.get(ScheduleATransactionTypeLabels, ScheduleATransactionTypes.PARTNERSHIP_MEMO); +export class PARTNERSHIP_ATTRIBUTION extends SchATransactionType { + formFields = INDIVIDUAL_FORM_FIELDS; + contactTypeOptions = INDIVIDUAL; + title = LabelUtils.get(ScheduleATransactionTypeLabels, ScheduleATransactionTypes.PARTNERSHIP_ATTRIBUTION); schema = schema; override updateParentOnSave = true; override navigationControls: TransactionNavigationControls = getChildNavigationControls(); @@ -20,7 +21,7 @@ export class PARTNERSHIP_MEMO extends SchATransactionType { getNewTransaction() { return SchATransaction.fromJSON({ form_type: 'SA11AI', - transaction_type_identifier: ScheduleATransactionTypes.PARTNERSHIP_MEMO, + transaction_type_identifier: ScheduleATransactionTypes.PARTNERSHIP_ATTRIBUTION, aggregation_group: AggregationGroups.GENERAL, }); } diff --git a/front-end/src/app/shared/models/transaction-types/PARTNERSHIP_INDIVIDUAL_JF_TRANSFER_MEMO.model.spec.ts b/front-end/src/app/shared/models/transaction-types/PARTNERSHIP_ATTRIBUTION_JF_TRANSFER_MEMO.model.spec.ts similarity index 85% rename from front-end/src/app/shared/models/transaction-types/PARTNERSHIP_INDIVIDUAL_JF_TRANSFER_MEMO.model.spec.ts rename to front-end/src/app/shared/models/transaction-types/PARTNERSHIP_ATTRIBUTION_JF_TRANSFER_MEMO.model.spec.ts index e6da2cad5a..0702591dc9 100644 --- a/front-end/src/app/shared/models/transaction-types/PARTNERSHIP_INDIVIDUAL_JF_TRANSFER_MEMO.model.spec.ts +++ b/front-end/src/app/shared/models/transaction-types/PARTNERSHIP_ATTRIBUTION_JF_TRANSFER_MEMO.model.spec.ts @@ -1,13 +1,12 @@ import { getTestTransactionByType } from 'app/shared/utils/unit-test.utils'; import { SchATransaction, ScheduleATransactionTypes } from '../scha-transaction.model'; -import { TransactionGroupA } from '../transaction-groups/transaction-group-a.model'; describe('PARTNERSHIP_INDIVIDUAL_JF_TRANSFER_MEMO', () => { let transaction: SchATransaction; beforeEach(() => { transaction = getTestTransactionByType( - ScheduleATransactionTypes.PARTNERSHIP_INDIVIDUAL_JF_TRANSFER_MEMO, + ScheduleATransactionTypes.PARTNERSHIP_ATTRIBUTION_JF_TRANSFER_MEMO, ScheduleATransactionTypes.PARTNERSHIP_JF_TRANSFER_MEMO ) as SchATransaction; (transaction.parent_transaction as SchATransaction).parent_transaction = getTestTransactionByType( @@ -21,13 +20,12 @@ describe('PARTNERSHIP_INDIVIDUAL_JF_TRANSFER_MEMO', () => { it('should create an instance', () => { expect(transaction.transactionType).toBeTruthy(); expect(transaction.transactionType?.scheduleId).toBe('A'); - expect(transaction?.transactionType?.transactionGroup).toBeInstanceOf(TransactionGroupA); }); it('#factory() should return a SchATransaction', () => { expect(transaction.form_type).toBe('SA12'); expect(transaction.transaction_type_identifier).toBe( - ScheduleATransactionTypes.PARTNERSHIP_INDIVIDUAL_JF_TRANSFER_MEMO + ScheduleATransactionTypes.PARTNERSHIP_ATTRIBUTION_JF_TRANSFER_MEMO ); }); diff --git a/front-end/src/app/shared/models/transaction-types/PARTNERSHIP_INDIVIDUAL_JF_TRANSFER_MEMO.model.ts b/front-end/src/app/shared/models/transaction-types/PARTNERSHIP_ATTRIBUTION_JF_TRANSFER_MEMO.model.ts similarity index 75% rename from front-end/src/app/shared/models/transaction-types/PARTNERSHIP_INDIVIDUAL_JF_TRANSFER_MEMO.model.ts rename to front-end/src/app/shared/models/transaction-types/PARTNERSHIP_ATTRIBUTION_JF_TRANSFER_MEMO.model.ts index 5e9ba3cb69..7c287fde9b 100644 --- a/front-end/src/app/shared/models/transaction-types/PARTNERSHIP_INDIVIDUAL_JF_TRANSFER_MEMO.model.ts +++ b/front-end/src/app/shared/models/transaction-types/PARTNERSHIP_ATTRIBUTION_JF_TRANSFER_MEMO.model.ts @@ -1,20 +1,21 @@ import { LabelUtils } from 'app/shared/utils/label.utils'; -import { schema } from 'fecfile-validate/fecfile_validate_js/dist/PARTNERSHIP_INDIVIDUAL_JF_TRANSFER_MEMO'; +import { schema } from 'fecfile-validate/fecfile_validate_js/dist/PARTNERSHIP_ATTRIBUTION_JF_TRANSFER_MEMO'; import { AggregationGroups } from '../transaction.model'; import { SchATransaction, ScheduleATransactionTypeLabels, ScheduleATransactionTypes } from '../scha-transaction.model'; import { TransactionNavigationControls, getChildNavigationControls } from '../transaction-navigation-controls.model'; import { SchATransactionType } from '../scha-transaction-type.model'; -import { TransactionGroupA } from '../transaction-groups/transaction-group-a.model'; +import { INDIVIDUAL_FORM_FIELDS, INDIVIDUAL } from 'app/shared/utils/transaction-type-properties'; -export class PARTNERSHIP_INDIVIDUAL_JF_TRANSFER_MEMO extends SchATransactionType { - transactionGroup = new TransactionGroupA(); +export class PARTNERSHIP_ATTRIBUTION_JF_TRANSFER_MEMO extends SchATransactionType { + formFields = INDIVIDUAL_FORM_FIELDS; + contactTypeOptions = INDIVIDUAL; title = LabelUtils.get( ScheduleATransactionTypeLabels, - ScheduleATransactionTypes.PARTNERSHIP_INDIVIDUAL_JF_TRANSFER_MEMO + ScheduleATransactionTypes.PARTNERSHIP_ATTRIBUTION_JF_TRANSFER_MEMO ); override updateParentOnSave = true; schema = schema; - override shortName = 'Partnership Individual'; + override shortName = 'Partnership Attribution'; override navigationControls: TransactionNavigationControls = getChildNavigationControls(); override generatePurposeDescription(transaction: SchATransaction): string { @@ -31,7 +32,7 @@ export class PARTNERSHIP_INDIVIDUAL_JF_TRANSFER_MEMO extends SchATransactionType getNewTransaction() { return SchATransaction.fromJSON({ form_type: 'SA12', - transaction_type_identifier: ScheduleATransactionTypes.PARTNERSHIP_INDIVIDUAL_JF_TRANSFER_MEMO, + transaction_type_identifier: ScheduleATransactionTypes.PARTNERSHIP_ATTRIBUTION_JF_TRANSFER_MEMO, aggregation_group: AggregationGroups.GENERAL, }); } diff --git a/front-end/src/app/shared/models/transaction-types/PARTNERSHIP_NATIONAL_PARTY_CONVENTION_ACCOUNT_MEMO.model.spec.ts b/front-end/src/app/shared/models/transaction-types/PARTNERSHIP_ATTRIBUTION_NATIONAL_PARTY_CONVENTION_ACCOUNT_MEMO.model.spec.ts similarity index 60% rename from front-end/src/app/shared/models/transaction-types/PARTNERSHIP_NATIONAL_PARTY_CONVENTION_ACCOUNT_MEMO.model.spec.ts rename to front-end/src/app/shared/models/transaction-types/PARTNERSHIP_ATTRIBUTION_NATIONAL_PARTY_CONVENTION_ACCOUNT_MEMO.model.spec.ts index 3be7a88279..1a7ffce26b 100644 --- a/front-end/src/app/shared/models/transaction-types/PARTNERSHIP_NATIONAL_PARTY_CONVENTION_ACCOUNT_MEMO.model.spec.ts +++ b/front-end/src/app/shared/models/transaction-types/PARTNERSHIP_ATTRIBUTION_NATIONAL_PARTY_CONVENTION_ACCOUNT_MEMO.model.spec.ts @@ -1,25 +1,23 @@ import { SchATransaction, ScheduleATransactionTypes } from '../scha-transaction.model'; -import { TransactionGroupA } from '../transaction-groups/transaction-group-a.model'; -import { PARTNERSHIP_NATIONAL_PARTY_CONVENTION_ACCOUNT_MEMO } from './PARTNERSHIP_NATIONAL_PARTY_CONVENTION_ACCOUNT_MEMO.model'; +import { PARTNERSHIP_ATTRIBUTION_NATIONAL_PARTY_CONVENTION_ACCOUNT_MEMO } from './PARTNERSHIP_ATTRIBUTION_NATIONAL_PARTY_CONVENTION_ACCOUNT_MEMO.model'; describe('PARTNERSHIP_NATIONAL_PARTY_CONVENTION_ACCOUNT_MEMO', () => { - let transactionType: PARTNERSHIP_NATIONAL_PARTY_CONVENTION_ACCOUNT_MEMO; + let transactionType: PARTNERSHIP_ATTRIBUTION_NATIONAL_PARTY_CONVENTION_ACCOUNT_MEMO; beforeEach(() => { - transactionType = new PARTNERSHIP_NATIONAL_PARTY_CONVENTION_ACCOUNT_MEMO(); + transactionType = new PARTNERSHIP_ATTRIBUTION_NATIONAL_PARTY_CONVENTION_ACCOUNT_MEMO(); }); it('should create an instance', () => { expect(transactionType).toBeTruthy(); expect(transactionType.scheduleId).toBe('A'); - expect(transactionType.transactionGroup).toBeInstanceOf(TransactionGroupA); }); it('#factory() should return a SchATransaction', () => { const txn: SchATransaction = transactionType.getNewTransaction(); expect(txn.form_type).toBe('SA17'); expect(txn.transaction_type_identifier).toBe( - ScheduleATransactionTypes.PARTNERSHIP_NATIONAL_PARTY_CONVENTION_ACCOUNT_MEMO + ScheduleATransactionTypes.PARTNERSHIP_ATTRIBUTION_NATIONAL_PARTY_CONVENTION_ACCOUNT_MEMO ); }); diff --git a/front-end/src/app/shared/models/transaction-types/PARTNERSHIP_NATIONAL_PARTY_CONVENTION_ACCOUNT_MEMO.model.ts b/front-end/src/app/shared/models/transaction-types/PARTNERSHIP_ATTRIBUTION_NATIONAL_PARTY_CONVENTION_ACCOUNT_MEMO.model.ts similarity index 65% rename from front-end/src/app/shared/models/transaction-types/PARTNERSHIP_NATIONAL_PARTY_CONVENTION_ACCOUNT_MEMO.model.ts rename to front-end/src/app/shared/models/transaction-types/PARTNERSHIP_ATTRIBUTION_NATIONAL_PARTY_CONVENTION_ACCOUNT_MEMO.model.ts index 26ecd2888c..408659981c 100644 --- a/front-end/src/app/shared/models/transaction-types/PARTNERSHIP_NATIONAL_PARTY_CONVENTION_ACCOUNT_MEMO.model.ts +++ b/front-end/src/app/shared/models/transaction-types/PARTNERSHIP_ATTRIBUTION_NATIONAL_PARTY_CONVENTION_ACCOUNT_MEMO.model.ts @@ -1,16 +1,17 @@ import { LabelUtils } from 'app/shared/utils/label.utils'; -import { schema } from 'fecfile-validate/fecfile_validate_js/dist/PARTNERSHIP_NATIONAL_PARTY_MEMOS'; +import { schema } from 'fecfile-validate/fecfile_validate_js/dist/NATIONAL_PARTY_PARTNERSHIP_MEMOS'; import { SchATransaction, ScheduleATransactionTypeLabels, ScheduleATransactionTypes } from '../scha-transaction.model'; import { getChildNavigationControls, TransactionNavigationControls } from '../transaction-navigation-controls.model'; import { SchATransactionType } from '../scha-transaction-type.model'; import { AggregationGroups } from '../transaction.model'; -import { TransactionGroupA } from '../transaction-groups/transaction-group-a.model'; +import { INDIVIDUAL_FORM_FIELDS, INDIVIDUAL } from 'app/shared/utils/transaction-type-properties'; -export class PARTNERSHIP_NATIONAL_PARTY_CONVENTION_ACCOUNT_MEMO extends SchATransactionType { - transactionGroup = new TransactionGroupA(); +export class PARTNERSHIP_ATTRIBUTION_NATIONAL_PARTY_CONVENTION_ACCOUNT_MEMO extends SchATransactionType { + formFields = INDIVIDUAL_FORM_FIELDS; + contactTypeOptions = INDIVIDUAL; title = LabelUtils.get( ScheduleATransactionTypeLabels, - ScheduleATransactionTypes.PARTNERSHIP_NATIONAL_PARTY_CONVENTION_ACCOUNT_MEMO + ScheduleATransactionTypes.PARTNERSHIP_ATTRIBUTION_NATIONAL_PARTY_CONVENTION_ACCOUNT_MEMO ); schema = schema; override updateParentOnSave = true; @@ -23,7 +24,8 @@ export class PARTNERSHIP_NATIONAL_PARTY_CONVENTION_ACCOUNT_MEMO extends SchATran getNewTransaction() { return SchATransaction.fromJSON({ form_type: 'SA17', - transaction_type_identifier: ScheduleATransactionTypes.PARTNERSHIP_NATIONAL_PARTY_CONVENTION_ACCOUNT_MEMO, + transaction_type_identifier: + ScheduleATransactionTypes.PARTNERSHIP_ATTRIBUTION_NATIONAL_PARTY_CONVENTION_ACCOUNT_MEMO, aggregation_group: AggregationGroups.NATIONAL_PARTY_CONVENTION_ACCOUNT, }); } diff --git a/front-end/src/app/shared/models/transaction-types/PARTNERSHIP_INDIVIDUAL_NATIONAL_PARTY_CONVENTION_JF_TRANSFER_MEMO.model.spec.ts b/front-end/src/app/shared/models/transaction-types/PARTNERSHIP_ATTRIBUTION_NATIONAL_PARTY_CONVENTION_JF_TRANSFER_MEMO.model.spec.ts similarity index 64% rename from front-end/src/app/shared/models/transaction-types/PARTNERSHIP_INDIVIDUAL_NATIONAL_PARTY_CONVENTION_JF_TRANSFER_MEMO.model.spec.ts rename to front-end/src/app/shared/models/transaction-types/PARTNERSHIP_ATTRIBUTION_NATIONAL_PARTY_CONVENTION_JF_TRANSFER_MEMO.model.spec.ts index 4564b50392..53c08e47dc 100644 --- a/front-end/src/app/shared/models/transaction-types/PARTNERSHIP_INDIVIDUAL_NATIONAL_PARTY_CONVENTION_JF_TRANSFER_MEMO.model.spec.ts +++ b/front-end/src/app/shared/models/transaction-types/PARTNERSHIP_ATTRIBUTION_NATIONAL_PARTY_CONVENTION_JF_TRANSFER_MEMO.model.spec.ts @@ -1,6 +1,5 @@ import { getTestTransactionByType } from 'app/shared/utils/unit-test.utils'; import { SchATransaction, ScheduleATransactionTypes } from '../scha-transaction.model'; -import { TransactionGroupA } from '../transaction-groups/transaction-group-a.model'; import { Transaction } from '../transaction.model'; describe('PARTNERSHIP_INDIVIDUAL_NATIONAL_PARTY_CONVENTION_JF_TRANSFER_MEMO', () => { @@ -8,25 +7,26 @@ describe('PARTNERSHIP_INDIVIDUAL_NATIONAL_PARTY_CONVENTION_JF_TRANSFER_MEMO', () beforeEach(() => { transaction = getTestTransactionByType( - ScheduleATransactionTypes.PARTNERSHIP_INDIVIDUAL_NATIONAL_PARTY_CONVENTION_JF_TRANSFER_MEMO, + ScheduleATransactionTypes.PARTNERSHIP_ATTRIBUTION_NATIONAL_PARTY_CONVENTION_JF_TRANSFER_MEMO, ScheduleATransactionTypes.JF_TRANSFER_NATIONAL_PARTY_CONVENTION_ACCOUNT ) as SchATransaction; (transaction.parent_transaction as SchATransaction).parent_transaction = getTestTransactionByType( ScheduleATransactionTypes.JF_TRANSFER_NATIONAL_PARTY_CONVENTION_ACCOUNT ); - ((transaction.parent_transaction as SchATransaction).parent_transaction as SchATransaction).contributor_organization_name = 'Test Committee'; + ( + (transaction.parent_transaction as SchATransaction).parent_transaction as SchATransaction + ).contributor_organization_name = 'Test Committee'; }); it('should create an instance', () => { expect(transaction.transactionType).toBeTruthy(); expect(transaction.transactionType?.scheduleId).toBe('A'); - expect(transaction.transactionType?.transactionGroup).toBeInstanceOf(TransactionGroupA); }); it('#factory() should return a SchATransaction', () => { expect(transaction.form_type).toBe('SA17'); expect(transaction.transaction_type_identifier).toBe( - ScheduleATransactionTypes.PARTNERSHIP_INDIVIDUAL_NATIONAL_PARTY_CONVENTION_JF_TRANSFER_MEMO + ScheduleATransactionTypes.PARTNERSHIP_ATTRIBUTION_NATIONAL_PARTY_CONVENTION_JF_TRANSFER_MEMO ); }); @@ -36,11 +36,13 @@ describe('PARTNERSHIP_INDIVIDUAL_NATIONAL_PARTY_CONVENTION_JF_TRANSFER_MEMO', () }); it('#generatePurposeDescription() should shrink long description', () => { - ((transaction.parent_transaction as SchATransaction).parent_transaction as SchATransaction).contributor_organization_name = - 'Super Duper Extra Super Long Committee Name That Needs to Shrink'; + ( + (transaction.parent_transaction as SchATransaction).parent_transaction as SchATransaction + ).contributor_organization_name = 'Super Duper Extra Super Long Committee Name That Needs to Shrink'; transaction.children = [{} as SchATransaction]; const descrip = transaction.transactionType?.generatePurposeDescription?.(transaction); - expect(descrip).toBe('Pres. Nominating Convention Account JF Memo: Super Duper Extra Super Lo... (Partnership Attribution)' + expect(descrip).toBe( + 'Pres. Nominating Convention Account JF Memo: Super Duper Extra Super Lo... (Partnership Attribution)' ); }); }); diff --git a/front-end/src/app/shared/models/transaction-types/PARTNERSHIP_INDIVIDUAL_NATIONAL_PARTY_CONVENTION_JF_TRANSFER_MEMO.model.ts b/front-end/src/app/shared/models/transaction-types/PARTNERSHIP_ATTRIBUTION_NATIONAL_PARTY_CONVENTION_JF_TRANSFER_MEMO.model.ts similarity index 68% rename from front-end/src/app/shared/models/transaction-types/PARTNERSHIP_INDIVIDUAL_NATIONAL_PARTY_CONVENTION_JF_TRANSFER_MEMO.model.ts rename to front-end/src/app/shared/models/transaction-types/PARTNERSHIP_ATTRIBUTION_NATIONAL_PARTY_CONVENTION_JF_TRANSFER_MEMO.model.ts index 2ee4985d54..c8a533b6a7 100644 --- a/front-end/src/app/shared/models/transaction-types/PARTNERSHIP_INDIVIDUAL_NATIONAL_PARTY_CONVENTION_JF_TRANSFER_MEMO.model.ts +++ b/front-end/src/app/shared/models/transaction-types/PARTNERSHIP_ATTRIBUTION_NATIONAL_PARTY_CONVENTION_JF_TRANSFER_MEMO.model.ts @@ -1,20 +1,21 @@ import { LabelUtils } from 'app/shared/utils/label.utils'; -import { schema } from 'fecfile-validate/fecfile_validate_js/dist/PARTNERSHIP_INDIVIDUAL_NATIONAL_PARTY_CONVENTION_JF_TRANSFER_MEMO'; +import { schema } from 'fecfile-validate/fecfile_validate_js/dist/PARTNERSHIP_ATTRIBUTION_NATIONAL_PARTY_CONVENTION_JF_TRANSFER_MEMO'; import { SchATransactionType } from '../scha-transaction-type.model'; import { SchATransaction, ScheduleATransactionTypeLabels, ScheduleATransactionTypes } from '../scha-transaction.model'; -import { TransactionGroupA } from '../transaction-groups/transaction-group-a.model'; import { getChildNavigationControls, TransactionNavigationControls } from '../transaction-navigation-controls.model'; import { AggregationGroups } from '../transaction.model'; +import { INDIVIDUAL_FORM_FIELDS, INDIVIDUAL } from 'app/shared/utils/transaction-type-properties'; -export class PARTNERSHIP_INDIVIDUAL_NATIONAL_PARTY_CONVENTION_JF_TRANSFER_MEMO extends SchATransactionType { - transactionGroup = new TransactionGroupA(); +export class PARTNERSHIP_ATTRIBUTION_NATIONAL_PARTY_CONVENTION_JF_TRANSFER_MEMO extends SchATransactionType { + formFields = INDIVIDUAL_FORM_FIELDS; + contactTypeOptions = INDIVIDUAL; title = LabelUtils.get( ScheduleATransactionTypeLabels, - ScheduleATransactionTypes.PARTNERSHIP_INDIVIDUAL_NATIONAL_PARTY_CONVENTION_JF_TRANSFER_MEMO + ScheduleATransactionTypes.PARTNERSHIP_ATTRIBUTION_NATIONAL_PARTY_CONVENTION_JF_TRANSFER_MEMO ); override updateParentOnSave = true; schema = schema; - override shortName = 'Partnership Individual'; + override shortName = 'Partnership Attribution'; override navigationControls: TransactionNavigationControls = getChildNavigationControls(); override generatePurposeDescription(transaction: SchATransaction): string { @@ -31,7 +32,8 @@ export class PARTNERSHIP_INDIVIDUAL_NATIONAL_PARTY_CONVENTION_JF_TRANSFER_MEMO e getNewTransaction() { return SchATransaction.fromJSON({ form_type: 'SA17', - transaction_type_identifier: ScheduleATransactionTypes.PARTNERSHIP_INDIVIDUAL_NATIONAL_PARTY_CONVENTION_JF_TRANSFER_MEMO, + transaction_type_identifier: + ScheduleATransactionTypes.PARTNERSHIP_ATTRIBUTION_NATIONAL_PARTY_CONVENTION_JF_TRANSFER_MEMO, aggregation_group: AggregationGroups.NATIONAL_PARTY_CONVENTION_ACCOUNT, }); } diff --git a/front-end/src/app/shared/models/transaction-types/PARTNERSHIP_NATIONAL_PARTY_HEADQUARTERS_ACCOUNT_MEMO.model.spec.ts b/front-end/src/app/shared/models/transaction-types/PARTNERSHIP_ATTRIBUTION_NATIONAL_PARTY_HEADQUARTERS_ACCOUNT_MEMO.model.spec.ts similarity index 59% rename from front-end/src/app/shared/models/transaction-types/PARTNERSHIP_NATIONAL_PARTY_HEADQUARTERS_ACCOUNT_MEMO.model.spec.ts rename to front-end/src/app/shared/models/transaction-types/PARTNERSHIP_ATTRIBUTION_NATIONAL_PARTY_HEADQUARTERS_ACCOUNT_MEMO.model.spec.ts index 696a3aecba..b45854cdd2 100644 --- a/front-end/src/app/shared/models/transaction-types/PARTNERSHIP_NATIONAL_PARTY_HEADQUARTERS_ACCOUNT_MEMO.model.spec.ts +++ b/front-end/src/app/shared/models/transaction-types/PARTNERSHIP_ATTRIBUTION_NATIONAL_PARTY_HEADQUARTERS_ACCOUNT_MEMO.model.spec.ts @@ -1,25 +1,23 @@ import { SchATransaction, ScheduleATransactionTypes } from '../scha-transaction.model'; -import { TransactionGroupA } from '../transaction-groups/transaction-group-a.model'; -import { PARTNERSHIP_NATIONAL_PARTY_HEADQUARTERS_ACCOUNT_MEMO } from './PARTNERSHIP_NATIONAL_PARTY_HEADQUARTERS_ACCOUNT_MEMO.model'; +import { PARTNERSHIP_ATTRIBUTION_NATIONAL_PARTY_HEADQUARTERS_ACCOUNT_MEMO } from './PARTNERSHIP_ATTRIBUTION_NATIONAL_PARTY_HEADQUARTERS_ACCOUNT_MEMO.model'; describe('PARTNERSHIP_NATIONAL_PARTY_HEADQUARTERS_ACCOUNT_MEMO', () => { - let transactionType: PARTNERSHIP_NATIONAL_PARTY_HEADQUARTERS_ACCOUNT_MEMO; + let transactionType: PARTNERSHIP_ATTRIBUTION_NATIONAL_PARTY_HEADQUARTERS_ACCOUNT_MEMO; beforeEach(() => { - transactionType = new PARTNERSHIP_NATIONAL_PARTY_HEADQUARTERS_ACCOUNT_MEMO(); + transactionType = new PARTNERSHIP_ATTRIBUTION_NATIONAL_PARTY_HEADQUARTERS_ACCOUNT_MEMO(); }); it('should create an instance', () => { expect(transactionType).toBeTruthy(); expect(transactionType.scheduleId).toBe('A'); - expect(transactionType.transactionGroup).toBeInstanceOf(TransactionGroupA); }); it('#factory() should return a SchATransaction', () => { const txn: SchATransaction = transactionType.getNewTransaction(); expect(txn.form_type).toBe('SA17'); expect(txn.transaction_type_identifier).toBe( - ScheduleATransactionTypes.PARTNERSHIP_NATIONAL_PARTY_HEADQUARTERS_ACCOUNT_MEMO + ScheduleATransactionTypes.PARTNERSHIP_ATTRIBUTION_NATIONAL_PARTY_HEADQUARTERS_ACCOUNT_MEMO ); }); diff --git a/front-end/src/app/shared/models/transaction-types/PARTNERSHIP_NATIONAL_PARTY_HEADQUARTERS_ACCOUNT_MEMO.model.ts b/front-end/src/app/shared/models/transaction-types/PARTNERSHIP_ATTRIBUTION_NATIONAL_PARTY_HEADQUARTERS_ACCOUNT_MEMO.model.ts similarity index 64% rename from front-end/src/app/shared/models/transaction-types/PARTNERSHIP_NATIONAL_PARTY_HEADQUARTERS_ACCOUNT_MEMO.model.ts rename to front-end/src/app/shared/models/transaction-types/PARTNERSHIP_ATTRIBUTION_NATIONAL_PARTY_HEADQUARTERS_ACCOUNT_MEMO.model.ts index 523d8ba693..46ab45d8ac 100644 --- a/front-end/src/app/shared/models/transaction-types/PARTNERSHIP_NATIONAL_PARTY_HEADQUARTERS_ACCOUNT_MEMO.model.ts +++ b/front-end/src/app/shared/models/transaction-types/PARTNERSHIP_ATTRIBUTION_NATIONAL_PARTY_HEADQUARTERS_ACCOUNT_MEMO.model.ts @@ -1,16 +1,17 @@ import { LabelUtils } from 'app/shared/utils/label.utils'; -import { schema } from 'fecfile-validate/fecfile_validate_js/dist/PARTNERSHIP_NATIONAL_PARTY_MEMOS'; +import { schema } from 'fecfile-validate/fecfile_validate_js/dist/NATIONAL_PARTY_PARTNERSHIP_MEMOS'; import { SchATransaction, ScheduleATransactionTypeLabels, ScheduleATransactionTypes } from '../scha-transaction.model'; import { getChildNavigationControls, TransactionNavigationControls } from '../transaction-navigation-controls.model'; import { SchATransactionType } from '../scha-transaction-type.model'; import { AggregationGroups } from '../transaction.model'; -import { TransactionGroupA } from '../transaction-groups/transaction-group-a.model'; +import { INDIVIDUAL_FORM_FIELDS, INDIVIDUAL } from 'app/shared/utils/transaction-type-properties'; -export class PARTNERSHIP_NATIONAL_PARTY_HEADQUARTERS_ACCOUNT_MEMO extends SchATransactionType { - transactionGroup = new TransactionGroupA(); +export class PARTNERSHIP_ATTRIBUTION_NATIONAL_PARTY_HEADQUARTERS_ACCOUNT_MEMO extends SchATransactionType { + formFields = INDIVIDUAL_FORM_FIELDS; + contactTypeOptions = INDIVIDUAL; title = LabelUtils.get( ScheduleATransactionTypeLabels, - ScheduleATransactionTypes.PARTNERSHIP_NATIONAL_PARTY_HEADQUARTERS_ACCOUNT_MEMO + ScheduleATransactionTypes.PARTNERSHIP_ATTRIBUTION_NATIONAL_PARTY_HEADQUARTERS_ACCOUNT_MEMO ); schema = schema; override updateParentOnSave = true; @@ -23,7 +24,8 @@ export class PARTNERSHIP_NATIONAL_PARTY_HEADQUARTERS_ACCOUNT_MEMO extends SchATr getNewTransaction() { return SchATransaction.fromJSON({ form_type: 'SA17', - transaction_type_identifier: ScheduleATransactionTypes.PARTNERSHIP_NATIONAL_PARTY_HEADQUARTERS_ACCOUNT_MEMO, + transaction_type_identifier: + ScheduleATransactionTypes.PARTNERSHIP_ATTRIBUTION_NATIONAL_PARTY_HEADQUARTERS_ACCOUNT_MEMO, aggregation_group: AggregationGroups.NATIONAL_PARTY_HEADQUARTERS_ACCOUNT, }); } diff --git a/front-end/src/app/shared/models/transaction-types/PARTNERSHIP_INDIVIDUAL_NATIONAL_PARTY_HEADQUARTERS_JF_TRANSFER_MEMO.model.spec.ts b/front-end/src/app/shared/models/transaction-types/PARTNERSHIP_ATTRIBUTION_NATIONAL_PARTY_HEADQUARTERS_JF_TRANSFER_MEMO.model.spec.ts similarity index 83% rename from front-end/src/app/shared/models/transaction-types/PARTNERSHIP_INDIVIDUAL_NATIONAL_PARTY_HEADQUARTERS_JF_TRANSFER_MEMO.model.spec.ts rename to front-end/src/app/shared/models/transaction-types/PARTNERSHIP_ATTRIBUTION_NATIONAL_PARTY_HEADQUARTERS_JF_TRANSFER_MEMO.model.spec.ts index 06017b9349..3a9f06fec2 100644 --- a/front-end/src/app/shared/models/transaction-types/PARTNERSHIP_INDIVIDUAL_NATIONAL_PARTY_HEADQUARTERS_JF_TRANSFER_MEMO.model.spec.ts +++ b/front-end/src/app/shared/models/transaction-types/PARTNERSHIP_ATTRIBUTION_NATIONAL_PARTY_HEADQUARTERS_JF_TRANSFER_MEMO.model.spec.ts @@ -1,13 +1,12 @@ import { getTestTransactionByType } from 'app/shared/utils/unit-test.utils'; import { SchATransaction, ScheduleATransactionTypes } from '../scha-transaction.model'; -import { TransactionGroupA } from '../transaction-groups/transaction-group-a.model'; describe('PARTNERSHIP_INDIVIDUAL_NATIONAL_PARTY_HEADQUARTERS_JF_TRANSFER_MEMO', () => { let transaction: SchATransaction; beforeEach(() => { transaction = getTestTransactionByType( - ScheduleATransactionTypes.PARTNERSHIP_INDIVIDUAL_NATIONAL_PARTY_HEADQUARTERS_JF_TRANSFER_MEMO, + ScheduleATransactionTypes.PARTNERSHIP_ATTRIBUTION_NATIONAL_PARTY_HEADQUARTERS_JF_TRANSFER_MEMO, ScheduleATransactionTypes.PARTNERSHIP_JF_TRANSFER_MEMO ) as SchATransaction; (transaction.parent_transaction as SchATransaction).parent_transaction = getTestTransactionByType( @@ -21,13 +20,12 @@ describe('PARTNERSHIP_INDIVIDUAL_NATIONAL_PARTY_HEADQUARTERS_JF_TRANSFER_MEMO', it('should create an instance', () => { expect(transaction.transactionType).toBeTruthy(); expect(transaction.transactionType?.scheduleId).toBe('A'); - expect(transaction?.transactionType?.transactionGroup).toBeInstanceOf(TransactionGroupA); }); it('#factory() should return a SchATransaction', () => { expect(transaction.form_type).toBe('SA17'); expect(transaction.transaction_type_identifier).toBe( - ScheduleATransactionTypes.PARTNERSHIP_INDIVIDUAL_NATIONAL_PARTY_HEADQUARTERS_JF_TRANSFER_MEMO + ScheduleATransactionTypes.PARTNERSHIP_ATTRIBUTION_NATIONAL_PARTY_HEADQUARTERS_JF_TRANSFER_MEMO ); }); diff --git a/front-end/src/app/shared/models/transaction-types/PARTNERSHIP_INDIVIDUAL_NATIONAL_PARTY_HEADQUARTERS_JF_TRANSFER_MEMO.model.ts b/front-end/src/app/shared/models/transaction-types/PARTNERSHIP_ATTRIBUTION_NATIONAL_PARTY_HEADQUARTERS_JF_TRANSFER_MEMO.model.ts similarity index 70% rename from front-end/src/app/shared/models/transaction-types/PARTNERSHIP_INDIVIDUAL_NATIONAL_PARTY_HEADQUARTERS_JF_TRANSFER_MEMO.model.ts rename to front-end/src/app/shared/models/transaction-types/PARTNERSHIP_ATTRIBUTION_NATIONAL_PARTY_HEADQUARTERS_JF_TRANSFER_MEMO.model.ts index c35d0ba873..9a679bc89d 100644 --- a/front-end/src/app/shared/models/transaction-types/PARTNERSHIP_INDIVIDUAL_NATIONAL_PARTY_HEADQUARTERS_JF_TRANSFER_MEMO.model.ts +++ b/front-end/src/app/shared/models/transaction-types/PARTNERSHIP_ATTRIBUTION_NATIONAL_PARTY_HEADQUARTERS_JF_TRANSFER_MEMO.model.ts @@ -1,20 +1,21 @@ import { LabelUtils } from 'app/shared/utils/label.utils'; -import { schema } from 'fecfile-validate/fecfile_validate_js/dist/PARTNERSHIP_INDIVIDUAL_NATIONAL_PARTY_HEADQUARTERS_JF_TRANSFER_MEMO'; +import { schema } from 'fecfile-validate/fecfile_validate_js/dist/PARTNERSHIP_ATTRIBUTION_NATIONAL_PARTY_HEADQUARTERS_JF_TRANSFER_MEMO'; import { AggregationGroups } from '../transaction.model'; import { SchATransaction, ScheduleATransactionTypeLabels, ScheduleATransactionTypes } from '../scha-transaction.model'; import { TransactionNavigationControls, getChildNavigationControls } from '../transaction-navigation-controls.model'; import { SchATransactionType } from '../scha-transaction-type.model'; -import { TransactionGroupA } from '../transaction-groups/transaction-group-a.model'; +import { INDIVIDUAL_FORM_FIELDS, INDIVIDUAL } from 'app/shared/utils/transaction-type-properties'; -export class PARTNERSHIP_INDIVIDUAL_NATIONAL_PARTY_HEADQUARTERS_JF_TRANSFER_MEMO extends SchATransactionType { - transactionGroup = new TransactionGroupA(); +export class PARTNERSHIP_ATTRIBUTION_NATIONAL_PARTY_HEADQUARTERS_JF_TRANSFER_MEMO extends SchATransactionType { + formFields = INDIVIDUAL_FORM_FIELDS; + contactTypeOptions = INDIVIDUAL; title = LabelUtils.get( ScheduleATransactionTypeLabels, - ScheduleATransactionTypes.PARTNERSHIP_INDIVIDUAL_NATIONAL_PARTY_HEADQUARTERS_JF_TRANSFER_MEMO + ScheduleATransactionTypes.PARTNERSHIP_ATTRIBUTION_NATIONAL_PARTY_HEADQUARTERS_JF_TRANSFER_MEMO ); override updateParentOnSave = true; schema = schema; - override shortName = 'Partnership Individual'; + override shortName = 'Partnership Attribution'; override navigationControls: TransactionNavigationControls = getChildNavigationControls(); override generatePurposeDescription(transaction: SchATransaction): string { @@ -32,7 +33,7 @@ export class PARTNERSHIP_INDIVIDUAL_NATIONAL_PARTY_HEADQUARTERS_JF_TRANSFER_MEMO return SchATransaction.fromJSON({ form_type: 'SA17', transaction_type_identifier: - ScheduleATransactionTypes.PARTNERSHIP_INDIVIDUAL_NATIONAL_PARTY_HEADQUARTERS_JF_TRANSFER_MEMO, + ScheduleATransactionTypes.PARTNERSHIP_ATTRIBUTION_NATIONAL_PARTY_HEADQUARTERS_JF_TRANSFER_MEMO, aggregation_group: AggregationGroups.NATIONAL_PARTY_HEADQUARTERS_ACCOUNT, }); } diff --git a/front-end/src/app/shared/models/transaction-types/PARTNERSHIP_NATIONAL_PARTY_RECOUNT_ACCOUNT_MEMO.model.spec.ts b/front-end/src/app/shared/models/transaction-types/PARTNERSHIP_ATTRIBUTION_NATIONAL_PARTY_RECOUNT_ACCOUNT_MEMO.model.spec.ts similarity index 77% rename from front-end/src/app/shared/models/transaction-types/PARTNERSHIP_NATIONAL_PARTY_RECOUNT_ACCOUNT_MEMO.model.spec.ts rename to front-end/src/app/shared/models/transaction-types/PARTNERSHIP_ATTRIBUTION_NATIONAL_PARTY_RECOUNT_ACCOUNT_MEMO.model.spec.ts index 84b1342f2d..16cdb99302 100644 --- a/front-end/src/app/shared/models/transaction-types/PARTNERSHIP_NATIONAL_PARTY_RECOUNT_ACCOUNT_MEMO.model.spec.ts +++ b/front-end/src/app/shared/models/transaction-types/PARTNERSHIP_ATTRIBUTION_NATIONAL_PARTY_RECOUNT_ACCOUNT_MEMO.model.spec.ts @@ -1,13 +1,12 @@ import { SchATransaction, ScheduleATransactionTypes } from '../scha-transaction.model'; import { getTestTransactionByType } from 'app/shared/utils/unit-test.utils'; -import { TransactionGroupA } from '../transaction-groups/transaction-group-a.model'; describe('PARTNERSHIP_NATIONAL_PARTY_RECOUNT_ACCOUNT_MEMO', () => { let transaction: SchATransaction; beforeEach(() => { transaction = getTestTransactionByType( - ScheduleATransactionTypes.PARTNERSHIP_NATIONAL_PARTY_RECOUNT_ACCOUNT_MEMO, + ScheduleATransactionTypes.PARTNERSHIP_ATTRIBUTION_NATIONAL_PARTY_RECOUNT_ACCOUNT_MEMO, ScheduleATransactionTypes.PARTNERSHIP_NATIONAL_PARTY_RECOUNT_ACCOUNT ) as SchATransaction; (transaction.parent_transaction as SchATransaction).contributor_organization_name = 'Test Org'; @@ -16,13 +15,12 @@ describe('PARTNERSHIP_NATIONAL_PARTY_RECOUNT_ACCOUNT_MEMO', () => { it('should create an instance', () => { expect(transaction.transactionType).toBeTruthy(); expect(transaction.transactionType?.scheduleId).toBe('A'); - expect(transaction?.transactionType?.transactionGroup).toBeInstanceOf(TransactionGroupA); }); it('#factory() should return a SchATransaction', () => { expect(transaction.form_type).toBe('SA17'); expect(transaction.transaction_type_identifier).toBe( - ScheduleATransactionTypes.PARTNERSHIP_NATIONAL_PARTY_RECOUNT_ACCOUNT_MEMO + ScheduleATransactionTypes.PARTNERSHIP_ATTRIBUTION_NATIONAL_PARTY_RECOUNT_ACCOUNT_MEMO ); }); diff --git a/front-end/src/app/shared/models/transaction-types/PARTNERSHIP_NATIONAL_PARTY_RECOUNT_ACCOUNT_MEMO.model.ts b/front-end/src/app/shared/models/transaction-types/PARTNERSHIP_ATTRIBUTION_NATIONAL_PARTY_RECOUNT_ACCOUNT_MEMO.model.ts similarity index 65% rename from front-end/src/app/shared/models/transaction-types/PARTNERSHIP_NATIONAL_PARTY_RECOUNT_ACCOUNT_MEMO.model.ts rename to front-end/src/app/shared/models/transaction-types/PARTNERSHIP_ATTRIBUTION_NATIONAL_PARTY_RECOUNT_ACCOUNT_MEMO.model.ts index 6ec4e8c188..c454aef1ef 100644 --- a/front-end/src/app/shared/models/transaction-types/PARTNERSHIP_NATIONAL_PARTY_RECOUNT_ACCOUNT_MEMO.model.ts +++ b/front-end/src/app/shared/models/transaction-types/PARTNERSHIP_ATTRIBUTION_NATIONAL_PARTY_RECOUNT_ACCOUNT_MEMO.model.ts @@ -1,16 +1,17 @@ import { LabelUtils } from 'app/shared/utils/label.utils'; -import { schema } from 'fecfile-validate/fecfile_validate_js/dist/PARTNERSHIP_NATIONAL_PARTY_MEMOS'; +import { schema } from 'fecfile-validate/fecfile_validate_js/dist/NATIONAL_PARTY_PARTNERSHIP_MEMOS'; import { AggregationGroups } from '../transaction.model'; import { SchATransaction, ScheduleATransactionTypeLabels, ScheduleATransactionTypes } from '../scha-transaction.model'; import { getChildNavigationControls, TransactionNavigationControls } from '../transaction-navigation-controls.model'; import { SchATransactionType } from '../scha-transaction-type.model'; -import { TransactionGroupA } from '../transaction-groups/transaction-group-a.model'; +import { INDIVIDUAL_FORM_FIELDS, INDIVIDUAL } from 'app/shared/utils/transaction-type-properties'; -export class PARTNERSHIP_NATIONAL_PARTY_RECOUNT_ACCOUNT_MEMO extends SchATransactionType { - transactionGroup = new TransactionGroupA(); +export class PARTNERSHIP_ATTRIBUTION_NATIONAL_PARTY_RECOUNT_ACCOUNT_MEMO extends SchATransactionType { + formFields = INDIVIDUAL_FORM_FIELDS; + contactTypeOptions = INDIVIDUAL; title = LabelUtils.get( ScheduleATransactionTypeLabels, - ScheduleATransactionTypes.PARTNERSHIP_NATIONAL_PARTY_RECOUNT_ACCOUNT_MEMO + ScheduleATransactionTypes.PARTNERSHIP_ATTRIBUTION_NATIONAL_PARTY_RECOUNT_ACCOUNT_MEMO ); schema = schema; override updateParentOnSave = true; @@ -23,7 +24,8 @@ export class PARTNERSHIP_NATIONAL_PARTY_RECOUNT_ACCOUNT_MEMO extends SchATransac getNewTransaction() { return SchATransaction.fromJSON({ form_type: 'SA17', - transaction_type_identifier: ScheduleATransactionTypes.PARTNERSHIP_NATIONAL_PARTY_RECOUNT_ACCOUNT_MEMO, + transaction_type_identifier: + ScheduleATransactionTypes.PARTNERSHIP_ATTRIBUTION_NATIONAL_PARTY_RECOUNT_ACCOUNT_MEMO, aggregation_group: AggregationGroups.NATIONAL_PARTY_RECOUNT_ACCOUNT, }); } diff --git a/front-end/src/app/shared/models/transaction-types/PARTNERSHIP_INDIVIDUAL_NATIONAL_PARTY_RECOUNT_JF_TRANSFER_MEMO.model.spec.ts b/front-end/src/app/shared/models/transaction-types/PARTNERSHIP_ATTRIBUTION_NATIONAL_PARTY_RECOUNT_JF_TRANSFER_MEMO.model.spec.ts similarity index 83% rename from front-end/src/app/shared/models/transaction-types/PARTNERSHIP_INDIVIDUAL_NATIONAL_PARTY_RECOUNT_JF_TRANSFER_MEMO.model.spec.ts rename to front-end/src/app/shared/models/transaction-types/PARTNERSHIP_ATTRIBUTION_NATIONAL_PARTY_RECOUNT_JF_TRANSFER_MEMO.model.spec.ts index 226cc28730..43a9531852 100644 --- a/front-end/src/app/shared/models/transaction-types/PARTNERSHIP_INDIVIDUAL_NATIONAL_PARTY_RECOUNT_JF_TRANSFER_MEMO.model.spec.ts +++ b/front-end/src/app/shared/models/transaction-types/PARTNERSHIP_ATTRIBUTION_NATIONAL_PARTY_RECOUNT_JF_TRANSFER_MEMO.model.spec.ts @@ -1,13 +1,12 @@ import { getTestTransactionByType } from 'app/shared/utils/unit-test.utils'; import { SchATransaction, ScheduleATransactionTypes } from '../scha-transaction.model'; -import { TransactionGroupA } from '../transaction-groups/transaction-group-a.model'; describe('PARTNERSHIP_INDIVIDUAL_NATIONAL_PARTY_RECOUNT_JF_TRANSFER_MEMO', () => { let transaction: SchATransaction; beforeEach(() => { transaction = getTestTransactionByType( - ScheduleATransactionTypes.PARTNERSHIP_INDIVIDUAL_NATIONAL_PARTY_RECOUNT_JF_TRANSFER_MEMO, + ScheduleATransactionTypes.PARTNERSHIP_ATTRIBUTION_NATIONAL_PARTY_RECOUNT_JF_TRANSFER_MEMO, ScheduleATransactionTypes.PARTNERSHIP_JF_TRANSFER_MEMO ) as SchATransaction; (transaction.parent_transaction as SchATransaction).parent_transaction = getTestTransactionByType( @@ -21,13 +20,12 @@ describe('PARTNERSHIP_INDIVIDUAL_NATIONAL_PARTY_RECOUNT_JF_TRANSFER_MEMO', () => it('should create an instance', () => { expect(transaction.transactionType).toBeTruthy(); expect(transaction.transactionType?.scheduleId).toBe('A'); - expect(transaction?.transactionType?.transactionGroup).toBeInstanceOf(TransactionGroupA); }); it('#factory() should return a SchATransaction', () => { expect(transaction.form_type).toBe('SA17'); expect(transaction.transaction_type_identifier).toBe( - ScheduleATransactionTypes.PARTNERSHIP_INDIVIDUAL_NATIONAL_PARTY_RECOUNT_JF_TRANSFER_MEMO + ScheduleATransactionTypes.PARTNERSHIP_ATTRIBUTION_NATIONAL_PARTY_RECOUNT_JF_TRANSFER_MEMO ); }); diff --git a/front-end/src/app/shared/models/transaction-types/PARTNERSHIP_INDIVIDUAL_NATIONAL_PARTY_RECOUNT_JF_TRANSFER_MEMO.model.ts b/front-end/src/app/shared/models/transaction-types/PARTNERSHIP_ATTRIBUTION_NATIONAL_PARTY_RECOUNT_JF_TRANSFER_MEMO.model.ts similarity index 71% rename from front-end/src/app/shared/models/transaction-types/PARTNERSHIP_INDIVIDUAL_NATIONAL_PARTY_RECOUNT_JF_TRANSFER_MEMO.model.ts rename to front-end/src/app/shared/models/transaction-types/PARTNERSHIP_ATTRIBUTION_NATIONAL_PARTY_RECOUNT_JF_TRANSFER_MEMO.model.ts index 40c6af6161..52024315c2 100644 --- a/front-end/src/app/shared/models/transaction-types/PARTNERSHIP_INDIVIDUAL_NATIONAL_PARTY_RECOUNT_JF_TRANSFER_MEMO.model.ts +++ b/front-end/src/app/shared/models/transaction-types/PARTNERSHIP_ATTRIBUTION_NATIONAL_PARTY_RECOUNT_JF_TRANSFER_MEMO.model.ts @@ -1,20 +1,21 @@ import { LabelUtils } from 'app/shared/utils/label.utils'; -import { schema } from 'fecfile-validate/fecfile_validate_js/dist/PARTNERSHIP_INDIVIDUAL_NATIONAL_PARTY_RECOUNT_JF_TRANSFER_MEMO'; +import { schema } from 'fecfile-validate/fecfile_validate_js/dist/PARTNERSHIP_ATTRIBUTION_NATIONAL_PARTY_RECOUNT_JF_TRANSFER_MEMO'; import { AggregationGroups } from '../transaction.model'; import { SchATransaction, ScheduleATransactionTypeLabels, ScheduleATransactionTypes } from '../scha-transaction.model'; import { TransactionNavigationControls, getChildNavigationControls } from '../transaction-navigation-controls.model'; import { SchATransactionType } from '../scha-transaction-type.model'; -import { TransactionGroupA } from '../transaction-groups/transaction-group-a.model'; +import { INDIVIDUAL_FORM_FIELDS, INDIVIDUAL } from 'app/shared/utils/transaction-type-properties'; -export class PARTNERSHIP_INDIVIDUAL_NATIONAL_PARTY_RECOUNT_JF_TRANSFER_MEMO extends SchATransactionType { - transactionGroup = new TransactionGroupA(); +export class PARTNERSHIP_ATTRIBUTION_NATIONAL_PARTY_RECOUNT_JF_TRANSFER_MEMO extends SchATransactionType { + formFields = INDIVIDUAL_FORM_FIELDS; + contactTypeOptions = INDIVIDUAL; title = LabelUtils.get( ScheduleATransactionTypeLabels, - ScheduleATransactionTypes.PARTNERSHIP_INDIVIDUAL_NATIONAL_PARTY_RECOUNT_JF_TRANSFER_MEMO + ScheduleATransactionTypes.PARTNERSHIP_ATTRIBUTION_NATIONAL_PARTY_RECOUNT_JF_TRANSFER_MEMO ); override updateParentOnSave = true; schema = schema; - override shortName = 'Partnership Individual'; + override shortName = 'Partnership Attribution'; override navigationControls: TransactionNavigationControls = getChildNavigationControls(); override generatePurposeDescription(transaction: SchATransaction): string { @@ -32,7 +33,7 @@ export class PARTNERSHIP_INDIVIDUAL_NATIONAL_PARTY_RECOUNT_JF_TRANSFER_MEMO exte return SchATransaction.fromJSON({ form_type: 'SA17', transaction_type_identifier: - ScheduleATransactionTypes.PARTNERSHIP_INDIVIDUAL_NATIONAL_PARTY_RECOUNT_JF_TRANSFER_MEMO, + ScheduleATransactionTypes.PARTNERSHIP_ATTRIBUTION_NATIONAL_PARTY_RECOUNT_JF_TRANSFER_MEMO, back_reference_sched_name: 'SA17', aggregation_group: AggregationGroups.NATIONAL_PARTY_RECOUNT_ACCOUNT, }); diff --git a/front-end/src/app/shared/models/transaction-types/PARTNERSHIP_RECOUNT_ACCOUNT_RECEIPT_MEMO.model.spec.ts b/front-end/src/app/shared/models/transaction-types/PARTNERSHIP_ATTRIBUTION_RECOUNT_ACCOUNT_RECEIPT_MEMO.model.spec.ts similarity index 57% rename from front-end/src/app/shared/models/transaction-types/PARTNERSHIP_RECOUNT_ACCOUNT_RECEIPT_MEMO.model.spec.ts rename to front-end/src/app/shared/models/transaction-types/PARTNERSHIP_ATTRIBUTION_RECOUNT_ACCOUNT_RECEIPT_MEMO.model.spec.ts index 21c95df7b9..d278b8b015 100644 --- a/front-end/src/app/shared/models/transaction-types/PARTNERSHIP_RECOUNT_ACCOUNT_RECEIPT_MEMO.model.spec.ts +++ b/front-end/src/app/shared/models/transaction-types/PARTNERSHIP_ATTRIBUTION_RECOUNT_ACCOUNT_RECEIPT_MEMO.model.spec.ts @@ -1,24 +1,24 @@ -import { PARTNERSHIP_RECOUNT_ACCOUNT_RECEIPT_MEMO } from './PARTNERSHIP_RECOUNT_ACCOUNT_RECEIPT_MEMO.model'; +import { PARTNERSHIP_ATTRIBUTION_RECOUNT_ACCOUNT_RECEIPT_MEMO } from './PARTNERSHIP_ATTRIBUTION_RECOUNT_ACCOUNT_RECEIPT_MEMO.model'; import { SchATransaction, ScheduleATransactionTypes } from '../scha-transaction.model'; -import { TransactionGroupA } from '../transaction-groups/transaction-group-a.model'; describe('PARTNERSHIP_RECOUNT_ACCOUNT_RECEIPT_MEMO', () => { - let transactionType: PARTNERSHIP_RECOUNT_ACCOUNT_RECEIPT_MEMO; + let transactionType: PARTNERSHIP_ATTRIBUTION_RECOUNT_ACCOUNT_RECEIPT_MEMO; beforeEach(() => { - transactionType = new PARTNERSHIP_RECOUNT_ACCOUNT_RECEIPT_MEMO(); + transactionType = new PARTNERSHIP_ATTRIBUTION_RECOUNT_ACCOUNT_RECEIPT_MEMO(); }); it('should create an instance', () => { expect(transactionType).toBeTruthy(); expect(transactionType.scheduleId).toBe('A'); - expect(transactionType.transactionGroup).toBeInstanceOf(TransactionGroupA); }); it('#factory() should return a SchATransaction', () => { const txn: SchATransaction = transactionType.getNewTransaction(); expect(txn.form_type).toBe('SA17'); - expect(txn.transaction_type_identifier).toBe(ScheduleATransactionTypes.PARTNERSHIP_RECOUNT_ACCOUNT_RECEIPT_MEMO); + expect(txn.transaction_type_identifier).toBe( + ScheduleATransactionTypes.PARTNERSHIP_ATTRIBUTION_RECOUNT_ACCOUNT_RECEIPT_MEMO + ); }); it('#generatePurposeDescription() should generate a string', () => { diff --git a/front-end/src/app/shared/models/transaction-types/PARTNERSHIP_RECOUNT_ACCOUNT_RECEIPT_MEMO.model.ts b/front-end/src/app/shared/models/transaction-types/PARTNERSHIP_ATTRIBUTION_RECOUNT_ACCOUNT_RECEIPT_MEMO.model.ts similarity index 69% rename from front-end/src/app/shared/models/transaction-types/PARTNERSHIP_RECOUNT_ACCOUNT_RECEIPT_MEMO.model.ts rename to front-end/src/app/shared/models/transaction-types/PARTNERSHIP_ATTRIBUTION_RECOUNT_ACCOUNT_RECEIPT_MEMO.model.ts index 57e6455951..9ea43f175a 100644 --- a/front-end/src/app/shared/models/transaction-types/PARTNERSHIP_RECOUNT_ACCOUNT_RECEIPT_MEMO.model.ts +++ b/front-end/src/app/shared/models/transaction-types/PARTNERSHIP_ATTRIBUTION_RECOUNT_ACCOUNT_RECEIPT_MEMO.model.ts @@ -1,16 +1,17 @@ import { LabelUtils } from 'app/shared/utils/label.utils'; -import { schema } from 'fecfile-validate/fecfile_validate_js/dist/PARTNERSHIP_RECOUNT_ACCOUNT_RECEIPT_MEMO'; +import { schema } from 'fecfile-validate/fecfile_validate_js/dist/PARTNERSHIP_ATTRIBUTION_RECOUNT_ACCOUNT_RECEIPT_MEMO'; import { SchATransaction, ScheduleATransactionTypeLabels, ScheduleATransactionTypes } from '../scha-transaction.model'; import { getChildNavigationControls, TransactionNavigationControls } from '../transaction-navigation-controls.model'; import { SchATransactionType } from '../scha-transaction-type.model'; import { AggregationGroups } from '../transaction.model'; -import { TransactionGroupA } from '../transaction-groups/transaction-group-a.model'; +import { INDIVIDUAL_FORM_FIELDS, INDIVIDUAL } from 'app/shared/utils/transaction-type-properties'; -export class PARTNERSHIP_RECOUNT_ACCOUNT_RECEIPT_MEMO extends SchATransactionType { - transactionGroup = new TransactionGroupA(); +export class PARTNERSHIP_ATTRIBUTION_RECOUNT_ACCOUNT_RECEIPT_MEMO extends SchATransactionType { + formFields = INDIVIDUAL_FORM_FIELDS; + contactTypeOptions = INDIVIDUAL; title = LabelUtils.get( ScheduleATransactionTypeLabels, - ScheduleATransactionTypes.PARTNERSHIP_RECOUNT_ACCOUNT_RECEIPT_MEMO + ScheduleATransactionTypes.PARTNERSHIP_ATTRIBUTION_RECOUNT_ACCOUNT_RECEIPT_MEMO ); schema = schema; override updateParentOnSave = true; @@ -23,7 +24,7 @@ export class PARTNERSHIP_RECOUNT_ACCOUNT_RECEIPT_MEMO extends SchATransactionTyp getNewTransaction() { return SchATransaction.fromJSON({ form_type: 'SA17', - transaction_type_identifier: ScheduleATransactionTypes.PARTNERSHIP_RECOUNT_ACCOUNT_RECEIPT_MEMO, + transaction_type_identifier: ScheduleATransactionTypes.PARTNERSHIP_ATTRIBUTION_RECOUNT_ACCOUNT_RECEIPT_MEMO, aggregation_group: AggregationGroups.RECOUNT_ACCOUNT, }); } diff --git a/front-end/src/app/shared/models/transaction-types/PARTNERSHIP_JF_TRANSFER_MEMO.model.spec.ts b/front-end/src/app/shared/models/transaction-types/PARTNERSHIP_JF_TRANSFER_MEMO.model.spec.ts index 5ecbe88711..7ee3f6567a 100644 --- a/front-end/src/app/shared/models/transaction-types/PARTNERSHIP_JF_TRANSFER_MEMO.model.spec.ts +++ b/front-end/src/app/shared/models/transaction-types/PARTNERSHIP_JF_TRANSFER_MEMO.model.spec.ts @@ -1,6 +1,5 @@ import { getTestTransactionByType } from 'app/shared/utils/unit-test.utils'; import { SchATransaction, ScheduleATransactionTypes } from '../scha-transaction.model'; -import { TransactionGroupD } from '../transaction-groups/transaction-group-d.model'; describe('PARTNERSHIP_JF_TRANSFER_MEMO', () => { let transaction: SchATransaction; @@ -16,7 +15,6 @@ describe('PARTNERSHIP_JF_TRANSFER_MEMO', () => { it('should create an instance', () => { expect(transaction).toBeTruthy(); expect(transaction.transactionType?.scheduleId).toBe('A'); - expect(transaction?.transactionType?.transactionGroup).toBeInstanceOf(TransactionGroupD); }); xit('#factory() should return a SchBTransaction', () => { @@ -26,7 +24,7 @@ describe('PARTNERSHIP_JF_TRANSFER_MEMO', () => { it('#generatePurposeDescription() should generate a string', () => { const descrip = transaction.transactionType?.generatePurposeDescription?.(transaction); - expect(descrip).toBe('JF Memo: Test Org (Partnership attributions do not require itemization)'); + expect(descrip).toBe('JF Memo: Test Org (Partnership attributions do not meet itemization threshold)'); }); it('#generatePurposeDescription() should shrink long description', () => { @@ -34,7 +32,7 @@ describe('PARTNERSHIP_JF_TRANSFER_MEMO', () => { 'Super Duper Long Committee Name That Needs to Shrink'; const descrip = transaction.transactionType?.generatePurposeDescription?.(transaction); expect(descrip).toBe( - 'JF Memo: Super Duper Long Committee Name Th... (Partnership attributions do not require itemization)' + 'JF Memo: Super Duper Long Committee ... (Partnership attributions do not meet itemization threshold)' ); }); }); diff --git a/front-end/src/app/shared/models/transaction-types/PARTNERSHIP_JF_TRANSFER_MEMO.model.ts b/front-end/src/app/shared/models/transaction-types/PARTNERSHIP_JF_TRANSFER_MEMO.model.ts index ada59d0637..05208bca2a 100644 --- a/front-end/src/app/shared/models/transaction-types/PARTNERSHIP_JF_TRANSFER_MEMO.model.ts +++ b/front-end/src/app/shared/models/transaction-types/PARTNERSHIP_JF_TRANSFER_MEMO.model.ts @@ -4,20 +4,19 @@ import { AggregationGroups } from '../transaction.model'; import { SchATransaction, ScheduleATransactionTypeLabels, ScheduleATransactionTypes } from '../scha-transaction.model'; import { SchATransactionType } from '../scha-transaction-type.model'; import { TransactionNavigationControls, STANDARD_PARENT_CONTROLS } from '../transaction-navigation-controls.model'; -import { ContactTypes } from '../contact.model'; import { SubTransactionGroup } from '../transaction-type.model'; -import { TransactionGroupD } from '../transaction-groups/transaction-group-d.model'; +import { ORGANIZATION_FORM_FIELDS, ORGANIZATION } from 'app/shared/utils/transaction-type-properties'; export class PARTNERSHIP_JF_TRANSFER_MEMO extends SchATransactionType { - transactionGroup = new TransactionGroupD(); + formFields = ORGANIZATION_FORM_FIELDS; + contactTypeOptions = ORGANIZATION; title = LabelUtils.get(ScheduleATransactionTypeLabels, ScheduleATransactionTypes.PARTNERSHIP_JF_TRANSFER_MEMO); schema = schema; override shortName = 'Partnership Receipt'; - override contactTypeOptions = [ContactTypes.ORGANIZATION]; override navigationControls: TransactionNavigationControls = STANDARD_PARENT_CONTROLS; override subTransactionConfig = new SubTransactionGroup('Partnership Receipt JF Transfer Memo', [ - ScheduleATransactionTypes.PARTNERSHIP_INDIVIDUAL_JF_TRANSFER_MEMO, + ScheduleATransactionTypes.PARTNERSHIP_ATTRIBUTION_JF_TRANSFER_MEMO, ]); getNewTransaction() { @@ -35,7 +34,7 @@ export class PARTNERSHIP_JF_TRANSFER_MEMO extends SchATransactionType { const hasChildren = transaction.children && transaction.children.length > 0; const parenthetical = hasChildren ? ' (See Partnership Attribution(s) below)' - : ' (Partnership attributions do not require itemization)'; + : ' (Partnership attributions do not meet itemization threshold)'; if ((committeeClause + parenthetical).length > 100) { committeeClause = committeeClause.slice(0, 97 - parenthetical.length) + '...'; } @@ -43,5 +42,5 @@ export class PARTNERSHIP_JF_TRANSFER_MEMO extends SchATransactionType { } override purposeDescriptionLabelNotice = - 'If transaction has no associated Partnership memos, reads "JF Memo: XX (Partnership attributions do not require itemization)". Otherwise, reads "JF Memo: XX (See Partnership Attribution(s) below)"'; + 'If transaction has no associated Partnership memos, reads "JF Memo: XX (Partnership attributions do not meet itemization threshold)". Otherwise, reads "JF Memo: XX (See Partnership Attribution(s) below)"'; } diff --git a/front-end/src/app/shared/models/transaction-types/PARTNERSHIP_NATIONAL_PARTY_CONVENTION_ACCOUNT.model.spec.ts b/front-end/src/app/shared/models/transaction-types/PARTNERSHIP_NATIONAL_PARTY_CONVENTION_ACCOUNT.model.spec.ts index b522eb090f..0d13ef4d8c 100644 --- a/front-end/src/app/shared/models/transaction-types/PARTNERSHIP_NATIONAL_PARTY_CONVENTION_ACCOUNT.model.spec.ts +++ b/front-end/src/app/shared/models/transaction-types/PARTNERSHIP_NATIONAL_PARTY_CONVENTION_ACCOUNT.model.spec.ts @@ -1,5 +1,4 @@ import { ScheduleATransactionTypes } from '../scha-transaction.model'; -import { TransactionGroupD } from '../transaction-groups/transaction-group-d.model'; import { PARTNERSHIP_NATIONAL_PARTY_CONVENTION_ACCOUNT } from './PARTNERSHIP_NATIONAL_PARTY_CONVENTION_ACCOUNT.model'; describe('PARTNERSHIP_NATIONAL_PARTY_RECOUNT_ACCOUNT', () => { @@ -13,7 +12,6 @@ describe('PARTNERSHIP_NATIONAL_PARTY_RECOUNT_ACCOUNT', () => { expect(transactionType).toBeTruthy(); if (transactionType) { expect(transactionType.scheduleId).toBe('A'); - expect(transactionType.transactionGroup).toBeInstanceOf(TransactionGroupD); } }); @@ -28,7 +26,7 @@ describe('PARTNERSHIP_NATIONAL_PARTY_RECOUNT_ACCOUNT', () => { it('#generatePurposeDescription() should generate a string', () => { const transaction = transactionType.getNewTransaction(); let descrip = transaction.transactionType?.generatePurposeDescription?.(transaction); - expect(descrip).toBe('Pres. Nominating Convention Account (Partnership attributions do not require itemization)'); + expect(descrip).toBe('Pres. Nominating Convention Account (Partnership attributions do not meet itemization threshold)'); transaction.children = [transactionType.getNewTransaction()]; descrip = transaction.transactionType?.generatePurposeDescription?.(transaction); diff --git a/front-end/src/app/shared/models/transaction-types/PARTNERSHIP_NATIONAL_PARTY_CONVENTION_ACCOUNT.model.ts b/front-end/src/app/shared/models/transaction-types/PARTNERSHIP_NATIONAL_PARTY_CONVENTION_ACCOUNT.model.ts index 16e84c6261..bb93c53891 100644 --- a/front-end/src/app/shared/models/transaction-types/PARTNERSHIP_NATIONAL_PARTY_CONVENTION_ACCOUNT.model.ts +++ b/front-end/src/app/shared/models/transaction-types/PARTNERSHIP_NATIONAL_PARTY_CONVENTION_ACCOUNT.model.ts @@ -1,29 +1,32 @@ import { LabelUtils } from 'app/shared/utils/label.utils'; -import { schema } from 'fecfile-validate/fecfile_validate_js/dist/PARTNERSHIP_NATIONAL_PARTY_RECEIPTS'; -import { SchATransaction, ScheduleATransactionTypeLabels, ScheduleATransactionTypes } from '../scha-transaction.model'; -import { STANDARD_PARENT_CONTROLS, TransactionNavigationControls } from '../transaction-navigation-controls.model'; +import { schema } from 'fecfile-validate/fecfile_validate_js/dist/NATIONAL_PARTY_PARTNERSHIP_RECEIPTS'; import { SchATransactionType } from '../scha-transaction-type.model'; import { AggregationGroups } from '../transaction.model'; -import { TransactionGroupD } from '../transaction-groups/transaction-group-d.model'; +import { ORGANIZATION_FORM_FIELDS, ORGANIZATION } from 'app/shared/utils/transaction-type-properties'; +import { SchATransaction, ScheduleATransactionTypeLabels, ScheduleATransactionTypes } from '../scha-transaction.model'; +import { STANDARD_PARENT_CONTROLS, TransactionNavigationControls } from '../transaction-navigation-controls.model'; export class PARTNERSHIP_NATIONAL_PARTY_CONVENTION_ACCOUNT extends SchATransactionType { - transactionGroup = new TransactionGroupD(); + formFields = ORGANIZATION_FORM_FIELDS; + contactTypeOptions = ORGANIZATION; title = LabelUtils.get( ScheduleATransactionTypeLabels, ScheduleATransactionTypes.PARTNERSHIP_NATIONAL_PARTY_CONVENTION_ACCOUNT ); schema = schema; - override subTransactionConfig = [ScheduleATransactionTypes.PARTNERSHIP_NATIONAL_PARTY_CONVENTION_ACCOUNT_MEMO]; + override subTransactionConfig = [ + ScheduleATransactionTypes.PARTNERSHIP_ATTRIBUTION_NATIONAL_PARTY_CONVENTION_ACCOUNT_MEMO, + ]; override navigationControls: TransactionNavigationControls = STANDARD_PARENT_CONTROLS; override purposeDescriptionLabelNotice = - 'If Partnership Receipt is saved without a Partnership Memo, this will read "Partnership attributions do not require itemization". If a Partnership Memo is added, it will read "See Partnership Attribution(s) below".'; + 'If Partnership Receipt is saved without a Partnership Memo, this will read "Partnership attributions do not meet itemization threshold". If a Partnership Memo is added, it will read "See Partnership Attribution(s) below".'; override generatePurposeDescription(transaction: SchATransaction): string { if (transaction.children && transaction.children.length > 0) { return 'Pres. Nominating Convention Account (See Partnership Attribution(s) below)'; } - return 'Pres. Nominating Convention Account (Partnership attributions do not require itemization)'; + return 'Pres. Nominating Convention Account (Partnership attributions do not meet itemization threshold)'; } getNewTransaction() { diff --git a/front-end/src/app/shared/models/transaction-types/PARTNERSHIP_NATIONAL_PARTY_CONVENTION_JF_TRANSFER_MEMO.model.spec.ts b/front-end/src/app/shared/models/transaction-types/PARTNERSHIP_NATIONAL_PARTY_CONVENTION_JF_TRANSFER_MEMO.model.spec.ts index 5add8f6954..cccb528182 100644 --- a/front-end/src/app/shared/models/transaction-types/PARTNERSHIP_NATIONAL_PARTY_CONVENTION_JF_TRANSFER_MEMO.model.spec.ts +++ b/front-end/src/app/shared/models/transaction-types/PARTNERSHIP_NATIONAL_PARTY_CONVENTION_JF_TRANSFER_MEMO.model.spec.ts @@ -1,6 +1,5 @@ import { getTestTransactionByType } from 'app/shared/utils/unit-test.utils'; import { SchATransaction, ScheduleATransactionTypes } from '../scha-transaction.model'; -import { TransactionGroupD } from '../transaction-groups/transaction-group-d.model'; import { Transaction } from '../transaction.model'; describe('PARTNERSHIP_NATIONAL_PARTY_CONVENTION_JF_TRANSFER_MEMO', () => { @@ -17,7 +16,6 @@ describe('PARTNERSHIP_NATIONAL_PARTY_CONVENTION_JF_TRANSFER_MEMO', () => { it('should create an instance', () => { expect(transaction.transactionType).toBeTruthy(); expect(transaction.transactionType?.scheduleId).toBe('A'); - expect(transaction.transactionType?.transactionGroup).toBeInstanceOf(TransactionGroupD); }); it('#factory() should return a SchATransaction', () => { @@ -29,8 +27,9 @@ describe('PARTNERSHIP_NATIONAL_PARTY_CONVENTION_JF_TRANSFER_MEMO', () => { it('#generatePurposeDescription() should generate a string', () => { const descrip = transaction.transactionType?.generatePurposeDescription?.(transaction); - expect(descrip).toBe('Pres. Nominating Convention Account JF Memo: ' + - '(Partnership attributions do not require itemization)'); + expect(descrip).toBe( + 'Pres. Nominating Convention Account JF Memo: Test ' + 'Committee (Partnership attributions do not meet...' + ); }); it('#generatePurposeDescription() should shrink long description', () => { @@ -38,8 +37,8 @@ describe('PARTNERSHIP_NATIONAL_PARTY_CONVENTION_JF_TRANSFER_MEMO', () => { 'Super Duper Long Committee Name That Needs to Shrink'; transaction.children = [{} as SchATransaction]; const descrip = transaction.transactionType?.generatePurposeDescription?.(transaction); - expect(descrip).toBe('Pres. Nominating Convention Account JF Memo: Super Duper ' + - 'L... (See Partnership Attribution(s) below)' + expect(descrip).toBe( + 'Pres. Nominating Convention Account JF Memo: Super Duper ' + 'L... (See Partnership Attribution(s) below)' ); }); }); diff --git a/front-end/src/app/shared/models/transaction-types/PARTNERSHIP_NATIONAL_PARTY_CONVENTION_JF_TRANSFER_MEMO.model.ts b/front-end/src/app/shared/models/transaction-types/PARTNERSHIP_NATIONAL_PARTY_CONVENTION_JF_TRANSFER_MEMO.model.ts index bbfeeeaf00..084f860586 100644 --- a/front-end/src/app/shared/models/transaction-types/PARTNERSHIP_NATIONAL_PARTY_CONVENTION_JF_TRANSFER_MEMO.model.ts +++ b/front-end/src/app/shared/models/transaction-types/PARTNERSHIP_NATIONAL_PARTY_CONVENTION_JF_TRANSFER_MEMO.model.ts @@ -2,13 +2,14 @@ import { LabelUtils } from 'app/shared/utils/label.utils'; import { schema } from 'fecfile-validate/fecfile_validate_js/dist/PARTNERSHIP_NATIONAL_PARTY_CONVENTION_JF_TRANSFER_MEMO'; import { SchATransactionType } from '../scha-transaction-type.model'; import { SchATransaction, ScheduleATransactionTypeLabels, ScheduleATransactionTypes } from '../scha-transaction.model'; -import { TransactionGroupD } from '../transaction-groups/transaction-group-d.model'; import { STANDARD_PARENT_CONTROLS, TransactionNavigationControls } from '../transaction-navigation-controls.model'; import { SubTransactionGroup } from '../transaction-type.model'; import { AggregationGroups } from '../transaction.model'; +import { ORGANIZATION_FORM_FIELDS, ORGANIZATION } from 'app/shared/utils/transaction-type-properties'; export class PARTNERSHIP_NATIONAL_PARTY_CONVENTION_JF_TRANSFER_MEMO extends SchATransactionType { - transactionGroup = new TransactionGroupD(); + formFields = ORGANIZATION_FORM_FIELDS; + contactTypeOptions = ORGANIZATION; title = LabelUtils.get( ScheduleATransactionTypeLabels, ScheduleATransactionTypes.PARTNERSHIP_NATIONAL_PARTY_CONVENTION_JF_TRANSFER_MEMO @@ -19,7 +20,7 @@ export class PARTNERSHIP_NATIONAL_PARTY_CONVENTION_JF_TRANSFER_MEMO extends SchA override subTransactionConfig = new SubTransactionGroup( 'Partnership Receipt Pres. Nominating Convention Account JF Transfer Memo', - [ScheduleATransactionTypes.PARTNERSHIP_INDIVIDUAL_NATIONAL_PARTY_CONVENTION_JF_TRANSFER_MEMO] + [ScheduleATransactionTypes.PARTNERSHIP_ATTRIBUTION_NATIONAL_PARTY_CONVENTION_JF_TRANSFER_MEMO] ); override generatePurposeDescription(transaction: SchATransaction): string { @@ -32,11 +33,16 @@ export class PARTNERSHIP_NATIONAL_PARTY_CONVENTION_JF_TRANSFER_MEMO extends SchA committeeClause = committeeClause.slice(0, 97 - parenthetical.length) + '...'; return committeeClause + parenthetical; } - return base + ' (Partnership attributions do not require itemization)'; + const purposeDescription = committeeClause + ' (Partnership attributions do not meet itemization threshold)'; + + if (purposeDescription.length > 100) { + return purposeDescription.slice(0, 97) + '...'; + } + return purposeDescription; } override purposeDescriptionLabelNotice = - 'If transaction has no associated Partnership memos, reads "Pres. Nominating Convention Account JF Memo: XX (Partnership attributions do not require itemization)". Otherwise, reads "Pres. Nominating Convention Account JF Memo: XX (See Partnership Attribution(s) below)"'; + 'If transaction has no associated Partnership memos, reads "Pres. Nominating Convention Account JF Memo: XX (Partnership attributions do not meet itemization threshold)". Otherwise, reads "Pres. Nominating Convention Account JF Memo: XX (See Partnership Attribution(s) below)"'; getNewTransaction() { return SchATransaction.fromJSON({ diff --git a/front-end/src/app/shared/models/transaction-types/PARTNERSHIP_NATIONAL_PARTY_HEADQUARTERS_ACCOUNT.model.spec.ts b/front-end/src/app/shared/models/transaction-types/PARTNERSHIP_NATIONAL_PARTY_HEADQUARTERS_ACCOUNT.model.spec.ts index fea0a9f079..7f701c9c77 100644 --- a/front-end/src/app/shared/models/transaction-types/PARTNERSHIP_NATIONAL_PARTY_HEADQUARTERS_ACCOUNT.model.spec.ts +++ b/front-end/src/app/shared/models/transaction-types/PARTNERSHIP_NATIONAL_PARTY_HEADQUARTERS_ACCOUNT.model.spec.ts @@ -1,6 +1,5 @@ import { getTestTransactionByType } from 'app/shared/utils/unit-test.utils'; import { SchATransaction, ScheduleATransactionTypes } from '../scha-transaction.model'; -import { TransactionGroupD } from '../transaction-groups/transaction-group-d.model'; describe('PARTNERSHIP_NATIONAL_PARTY_HEADQUARTERS_ACCOUNT', () => { let transaction: SchATransaction; @@ -14,7 +13,6 @@ describe('PARTNERSHIP_NATIONAL_PARTY_HEADQUARTERS_ACCOUNT', () => { it('should create an instance', () => { expect(transaction.transactionType).toBeTruthy(); expect(transaction.transactionType?.scheduleId).toBe('A'); - expect(transaction?.transactionType?.transactionGroup).toBeInstanceOf(TransactionGroupD); }); it('#factory() should return a SchATransaction', () => { @@ -26,7 +24,7 @@ describe('PARTNERSHIP_NATIONAL_PARTY_HEADQUARTERS_ACCOUNT', () => { it('#generatePurposeDescription() should generate a string', () => { let descrip = transaction.transactionType?.generatePurposeDescription?.(transaction); - expect(descrip).toBe('Headquarters Buildings Account (Partnership attributions do not require itemization)'); + expect(descrip).toBe('Headquarters Buildings Account (Partnership attributions do not meet itemization threshold)'); transaction.children = [transaction.transactionType?.getNewTransaction() as SchATransaction]; descrip = transaction.transactionType?.generatePurposeDescription?.(transaction); diff --git a/front-end/src/app/shared/models/transaction-types/PARTNERSHIP_NATIONAL_PARTY_HEADQUARTERS_ACCOUNT.model.ts b/front-end/src/app/shared/models/transaction-types/PARTNERSHIP_NATIONAL_PARTY_HEADQUARTERS_ACCOUNT.model.ts index 44a3d7c840..2c645b69e9 100644 --- a/front-end/src/app/shared/models/transaction-types/PARTNERSHIP_NATIONAL_PARTY_HEADQUARTERS_ACCOUNT.model.ts +++ b/front-end/src/app/shared/models/transaction-types/PARTNERSHIP_NATIONAL_PARTY_HEADQUARTERS_ACCOUNT.model.ts @@ -1,28 +1,31 @@ import { LabelUtils } from 'app/shared/utils/label.utils'; -import { schema } from 'fecfile-validate/fecfile_validate_js/dist/PARTNERSHIP_NATIONAL_PARTY_RECEIPTS'; +import { schema } from 'fecfile-validate/fecfile_validate_js/dist/NATIONAL_PARTY_PARTNERSHIP_RECEIPTS'; import { SchATransaction, ScheduleATransactionTypeLabels, ScheduleATransactionTypes } from '../scha-transaction.model'; import { STANDARD_PARENT_CONTROLS, TransactionNavigationControls } from '../transaction-navigation-controls.model'; import { SchATransactionType } from '../scha-transaction-type.model'; import { AggregationGroups } from '../transaction.model'; -import { TransactionGroupD } from '../transaction-groups/transaction-group-d.model'; +import { ORGANIZATION_FORM_FIELDS, ORGANIZATION } from 'app/shared/utils/transaction-type-properties'; export class PARTNERSHIP_NATIONAL_PARTY_HEADQUARTERS_ACCOUNT extends SchATransactionType { - transactionGroup = new TransactionGroupD(); + formFields = ORGANIZATION_FORM_FIELDS; + contactTypeOptions = ORGANIZATION; title = LabelUtils.get( ScheduleATransactionTypeLabels, ScheduleATransactionTypes.PARTNERSHIP_NATIONAL_PARTY_HEADQUARTERS_ACCOUNT ); schema = schema; - override subTransactionConfig = [ScheduleATransactionTypes.PARTNERSHIP_NATIONAL_PARTY_HEADQUARTERS_ACCOUNT_MEMO]; + override subTransactionConfig = [ + ScheduleATransactionTypes.PARTNERSHIP_ATTRIBUTION_NATIONAL_PARTY_HEADQUARTERS_ACCOUNT_MEMO, + ]; override navigationControls: TransactionNavigationControls = STANDARD_PARENT_CONTROLS; override purposeDescriptionLabelNotice = - 'If Partnership Receipt is saved without a Partnership Memo, this will read "Partnership attributions do not require itemization". If a Partnership Memo is added, it will read "See Partnership Attribution(s) below".'; + 'If Partnership Receipt is saved without a Partnership Memo, this will read "Partnership attributions do not meet itemization threshold". If a Partnership Memo is added, it will read "See Partnership Attribution(s) below".'; override generatePurposeDescription(transaction: SchATransaction): string { if (transaction.children && transaction.children.length > 0) { return 'Headquarters Buildings Account (See Partnership Attribution(s) below)'; } - return 'Headquarters Buildings Account (Partnership attributions do not require itemization)'; + return 'Headquarters Buildings Account (Partnership attributions do not meet itemization threshold)'; } getNewTransaction() { diff --git a/front-end/src/app/shared/models/transaction-types/PARTNERSHIP_NATIONAL_PARTY_HEADQUARTERS_JF_TRANSFER_MEMO.model.spec.ts b/front-end/src/app/shared/models/transaction-types/PARTNERSHIP_NATIONAL_PARTY_HEADQUARTERS_JF_TRANSFER_MEMO.model.spec.ts index 831ffb1a22..97fea8574f 100644 --- a/front-end/src/app/shared/models/transaction-types/PARTNERSHIP_NATIONAL_PARTY_HEADQUARTERS_JF_TRANSFER_MEMO.model.spec.ts +++ b/front-end/src/app/shared/models/transaction-types/PARTNERSHIP_NATIONAL_PARTY_HEADQUARTERS_JF_TRANSFER_MEMO.model.spec.ts @@ -1,6 +1,5 @@ import { getTestTransactionByType } from 'app/shared/utils/unit-test.utils'; import { SchATransaction, ScheduleATransactionTypes } from '../scha-transaction.model'; -import { TransactionGroupD } from '../transaction-groups/transaction-group-d.model'; describe('PARTNERSHIP_NATIONAL_PARTY_HEADQUARTERS_JF_TRANSFER_MEMO', () => { let transaction: SchATransaction; @@ -16,7 +15,6 @@ describe('PARTNERSHIP_NATIONAL_PARTY_HEADQUARTERS_JF_TRANSFER_MEMO', () => { it('should create an instance', () => { expect(transaction).toBeTruthy(); expect(transaction.transactionType?.scheduleId).toBe('A'); - expect(transaction?.transactionType?.transactionGroup).toBeInstanceOf(TransactionGroupD); }); xit('#factory() should return a SchBTransaction', () => { @@ -29,7 +27,7 @@ describe('PARTNERSHIP_NATIONAL_PARTY_HEADQUARTERS_JF_TRANSFER_MEMO', () => { it('#generatePurposeDescription() should generate a string', () => { const descrip = transaction.transactionType?.generatePurposeDescription?.(transaction); expect(descrip).toBe( - 'Headquarters Buildings Account JF Memo: Tes... (Partnership attributions do not require itemization)' + 'Headquarters Buildings Account JF Memo: Test Org (Partnership attributions do not meet itemizatio...' ); }); @@ -38,7 +36,7 @@ describe('PARTNERSHIP_NATIONAL_PARTY_HEADQUARTERS_JF_TRANSFER_MEMO', () => { 'Super Duper Long Committee Name That Needs to Shrink'; const descrip = transaction.transactionType?.generatePurposeDescription?.(transaction); expect(descrip).toBe( - 'Headquarters Buildings Account JF Memo: Sup... (Partnership attributions do not require itemization)' + 'Headquarters Buildings Account JF Memo: Super Duper Long Committee Name That Needs to Shrink (Par...' ); }); }); diff --git a/front-end/src/app/shared/models/transaction-types/PARTNERSHIP_NATIONAL_PARTY_HEADQUARTERS_JF_TRANSFER_MEMO.model.ts b/front-end/src/app/shared/models/transaction-types/PARTNERSHIP_NATIONAL_PARTY_HEADQUARTERS_JF_TRANSFER_MEMO.model.ts index 6040c1475e..d8e752e4e9 100644 --- a/front-end/src/app/shared/models/transaction-types/PARTNERSHIP_NATIONAL_PARTY_HEADQUARTERS_JF_TRANSFER_MEMO.model.ts +++ b/front-end/src/app/shared/models/transaction-types/PARTNERSHIP_NATIONAL_PARTY_HEADQUARTERS_JF_TRANSFER_MEMO.model.ts @@ -3,25 +3,24 @@ import { schema } from 'fecfile-validate/fecfile_validate_js/dist/PARTNERSHIP_NA import { AggregationGroups } from '../transaction.model'; import { SchATransaction, ScheduleATransactionTypeLabels, ScheduleATransactionTypes } from '../scha-transaction.model'; import { SchATransactionType } from '../scha-transaction-type.model'; -import { TransactionNavigationControls, STANDARD_PARENT_CONTROLS } from '../transaction-navigation-controls.model'; -import { ContactTypes } from '../contact.model'; +import { ORGANIZATION_FORM_FIELDS, ORGANIZATION } from 'app/shared/utils/transaction-type-properties'; +import { STANDARD_PARENT_CONTROLS, TransactionNavigationControls } from '../transaction-navigation-controls.model'; import { SubTransactionGroup } from '../transaction-type.model'; -import { TransactionGroupD } from '../transaction-groups/transaction-group-d.model'; export class PARTNERSHIP_NATIONAL_PARTY_HEADQUARTERS_JF_TRANSFER_MEMO extends SchATransactionType { - transactionGroup = new TransactionGroupD(); + formFields = ORGANIZATION_FORM_FIELDS; + contactTypeOptions = ORGANIZATION; title = LabelUtils.get( ScheduleATransactionTypeLabels, ScheduleATransactionTypes.PARTNERSHIP_NATIONAL_PARTY_HEADQUARTERS_JF_TRANSFER_MEMO ); schema = schema; override shortName = 'Partnership Receipt'; - override contactTypeOptions = [ContactTypes.ORGANIZATION]; override navigationControls: TransactionNavigationControls = STANDARD_PARENT_CONTROLS; override subTransactionConfig = new SubTransactionGroup( 'PARTNERSHIP RECEIPT HEADQUARTERS BUILDINGS ACCOUNT JF TRANSFER MEMO', - [ScheduleATransactionTypes.PARTNERSHIP_INDIVIDUAL_NATIONAL_PARTY_HEADQUARTERS_JF_TRANSFER_MEMO] + [ScheduleATransactionTypes.PARTNERSHIP_ATTRIBUTION_NATIONAL_PARTY_HEADQUARTERS_JF_TRANSFER_MEMO] ); getNewTransaction() { @@ -33,19 +32,21 @@ export class PARTNERSHIP_NATIONAL_PARTY_HEADQUARTERS_JF_TRANSFER_MEMO extends Sc } override generatePurposeDescription(transaction: SchATransaction): string { - let committeeClause = `Headquarters Buildings Account JF Memo: ${ + const committeeClause = `Headquarters Buildings Account JF Memo: ${ (transaction.parent_transaction as SchATransaction).contributor_organization_name }`; const hasChildren = transaction.children && transaction.children.length > 0; const parenthetical = hasChildren ? ' (See Partnership Attribution(s) below)' - : ' (Partnership attributions do not require itemization)'; - if ((committeeClause + parenthetical).length > 100) { - committeeClause = committeeClause.slice(0, 97 - parenthetical.length) + '...'; + : ' (Partnership attributions do not meet itemization threshold)'; + const purposeDescription = committeeClause + parenthetical; + + if (purposeDescription.length > 100) { + return purposeDescription.slice(0, 97) + '...'; } - return committeeClause + parenthetical; + return purposeDescription; } override purposeDescriptionLabelNotice = - 'If transaction has no associated Partnership memos, reads "Headquarters Buildings Account JF Memo: XX (Partnership attributions do not require itemization)". Otherwise, reads "Headquarters Buildings Account JF Memo: XX (See Partnership Attribution(s) below)"'; + 'If transaction has no associated Partnership memos, reads "Headquarters Buildings Account JF Memo: XX (Partnership attributions do not meet itemization threshold)". Otherwise, reads "Headquarters Buildings Account JF Memo: XX (See Partnership Attribution(s) below)"'; } diff --git a/front-end/src/app/shared/models/transaction-types/PARTNERSHIP_NATIONAL_PARTY_RECOUNT_ACCOUNT.model.spec.ts b/front-end/src/app/shared/models/transaction-types/PARTNERSHIP_NATIONAL_PARTY_RECOUNT_ACCOUNT.model.spec.ts index 167f5ea2a9..4423635c2c 100644 --- a/front-end/src/app/shared/models/transaction-types/PARTNERSHIP_NATIONAL_PARTY_RECOUNT_ACCOUNT.model.spec.ts +++ b/front-end/src/app/shared/models/transaction-types/PARTNERSHIP_NATIONAL_PARTY_RECOUNT_ACCOUNT.model.spec.ts @@ -1,5 +1,4 @@ import { ScheduleATransactionTypes } from '../scha-transaction.model'; -import { TransactionGroupD } from '../transaction-groups/transaction-group-d.model'; import { PARTNERSHIP_NATIONAL_PARTY_RECOUNT_ACCOUNT } from './PARTNERSHIP_NATIONAL_PARTY_RECOUNT_ACCOUNT.model'; describe('PARTNERSHIP_NATIONAL_PARTY_RECOUNT_ACCOUNT', () => { @@ -13,7 +12,6 @@ describe('PARTNERSHIP_NATIONAL_PARTY_RECOUNT_ACCOUNT', () => { expect(transactionType).toBeTruthy(); if (transactionType) { expect(transactionType.scheduleId).toBe('A'); - expect(transactionType.transactionGroup).toBeInstanceOf(TransactionGroupD); } }); @@ -26,13 +24,13 @@ describe('PARTNERSHIP_NATIONAL_PARTY_RECOUNT_ACCOUNT', () => { it('#generatePurposeDescription() should generate expected retval', () => { const txn = transactionType.getNewTransaction(); const descrip = transactionType.generatePurposeDescription(txn); - expect(descrip).toBe('Recount/Legal Proceedings Account (Partnership attributions do not require itemization)'); + expect(descrip).toBe('Recount/Legal Proceedings Account (Partnership attributions do not meet itemization threshold)'); }); it('#generatePurposeDescription() should generate a string', () => { const txn = transactionType.getNewTransaction(); let descrip = transactionType.generatePurposeDescription(txn); - expect(descrip).toBe('Recount/Legal Proceedings Account (Partnership attributions do not require itemization)'); + expect(descrip).toBe('Recount/Legal Proceedings Account (Partnership attributions do not meet itemization threshold)'); txn.children = [transactionType.getNewTransaction()]; descrip = transactionType.generatePurposeDescription(txn); diff --git a/front-end/src/app/shared/models/transaction-types/PARTNERSHIP_NATIONAL_PARTY_RECOUNT_ACCOUNT.model.ts b/front-end/src/app/shared/models/transaction-types/PARTNERSHIP_NATIONAL_PARTY_RECOUNT_ACCOUNT.model.ts index ff2a395b58..8f0ac64ac0 100644 --- a/front-end/src/app/shared/models/transaction-types/PARTNERSHIP_NATIONAL_PARTY_RECOUNT_ACCOUNT.model.ts +++ b/front-end/src/app/shared/models/transaction-types/PARTNERSHIP_NATIONAL_PARTY_RECOUNT_ACCOUNT.model.ts @@ -1,28 +1,31 @@ import { LabelUtils } from 'app/shared/utils/label.utils'; -import { schema } from 'fecfile-validate/fecfile_validate_js/dist/PARTNERSHIP_NATIONAL_PARTY_RECEIPTS'; +import { schema } from 'fecfile-validate/fecfile_validate_js/dist/NATIONAL_PARTY_PARTNERSHIP_RECEIPTS'; import { AggregationGroups } from '../transaction.model'; import { SchATransaction, ScheduleATransactionTypeLabels, ScheduleATransactionTypes } from '../scha-transaction.model'; import { STANDARD_PARENT_CONTROLS, TransactionNavigationControls } from '../transaction-navigation-controls.model'; import { SchATransactionType } from '../scha-transaction-type.model'; -import { TransactionGroupD } from '../transaction-groups/transaction-group-d.model'; +import { ORGANIZATION_FORM_FIELDS, ORGANIZATION } from 'app/shared/utils/transaction-type-properties'; export class PARTNERSHIP_NATIONAL_PARTY_RECOUNT_ACCOUNT extends SchATransactionType { - transactionGroup = new TransactionGroupD(); + formFields = ORGANIZATION_FORM_FIELDS; + contactTypeOptions = ORGANIZATION; title = LabelUtils.get( ScheduleATransactionTypeLabels, ScheduleATransactionTypes.PARTNERSHIP_NATIONAL_PARTY_RECOUNT_ACCOUNT ); schema = schema; - override subTransactionConfig = [ScheduleATransactionTypes.PARTNERSHIP_NATIONAL_PARTY_RECOUNT_ACCOUNT_MEMO]; + override subTransactionConfig = [ + ScheduleATransactionTypes.PARTNERSHIP_ATTRIBUTION_NATIONAL_PARTY_RECOUNT_ACCOUNT_MEMO, + ]; override navigationControls: TransactionNavigationControls = STANDARD_PARENT_CONTROLS; override purposeDescriptionLabelNotice = - 'If Partnership Receipt is saved without a Partnership Memo, this will read "Partnership attributions do not require itemization". If a Partnership Memo is added, it will read "See Partnership Attribution(s) below".'; + 'If Partnership Receipt is saved without a Partnership Memo, this will read "Partnership attributions do not meet itemization threshold". If a Partnership Memo is added, it will read "See Partnership Attribution(s) below".'; override generatePurposeDescription(transaction: SchATransaction): string { if (transaction?.children && transaction?.children.length > 0) { return 'Recount/Legal Proceedings Account (See Partnership Attribution(s) below)'; } - return 'Recount/Legal Proceedings Account (Partnership attributions do not require itemization)'; + return 'Recount/Legal Proceedings Account (Partnership attributions do not meet itemization threshold)'; } getNewTransaction() { diff --git a/front-end/src/app/shared/models/transaction-types/PARTNERSHIP_NATIONAL_PARTY_RECOUNT_JF_TRANSFER_MEMO.model.spec.ts b/front-end/src/app/shared/models/transaction-types/PARTNERSHIP_NATIONAL_PARTY_RECOUNT_JF_TRANSFER_MEMO.model.spec.ts index bc894b2db2..448601b675 100644 --- a/front-end/src/app/shared/models/transaction-types/PARTNERSHIP_NATIONAL_PARTY_RECOUNT_JF_TRANSFER_MEMO.model.spec.ts +++ b/front-end/src/app/shared/models/transaction-types/PARTNERSHIP_NATIONAL_PARTY_RECOUNT_JF_TRANSFER_MEMO.model.spec.ts @@ -1,6 +1,5 @@ import { getTestTransactionByType } from 'app/shared/utils/unit-test.utils'; import { SchATransaction, ScheduleATransactionTypes } from '../scha-transaction.model'; -import { TransactionGroupD } from '../transaction-groups/transaction-group-d.model'; describe('PARTNERSHIP_NATIONAL_PARTY_RECOUNT_JF_TRANSFER_MEMO', () => { let transaction: SchATransaction; @@ -16,7 +15,6 @@ describe('PARTNERSHIP_NATIONAL_PARTY_RECOUNT_JF_TRANSFER_MEMO', () => { it('should create an instance', () => { expect(transaction).toBeTruthy(); expect(transaction.transactionType?.scheduleId).toBe('A'); - expect(transaction?.transactionType?.transactionGroup).toBeInstanceOf(TransactionGroupD); }); xit('#factory() should return a SchBTransaction', () => { @@ -29,7 +27,7 @@ describe('PARTNERSHIP_NATIONAL_PARTY_RECOUNT_JF_TRANSFER_MEMO', () => { it('#generatePurposeDescription() should generate a string', () => { const descrip = transaction.transactionType?.generatePurposeDescription?.(transaction); expect(descrip).toBe( - 'Recount/Legal Proceedings Account JF Memo: ... (Partnership attributions do not require itemization)' + 'Recount/Legal Proceedings Account JF Memo: Test Org (Partnership attributions do not meet itemiza...' ); }); @@ -38,7 +36,7 @@ describe('PARTNERSHIP_NATIONAL_PARTY_RECOUNT_JF_TRANSFER_MEMO', () => { 'Super Duper Long Committee Name That Needs to Shrink'; const descrip = transaction.transactionType?.generatePurposeDescription?.(transaction); expect(descrip).toBe( - 'Recount/Legal Proceedings Account JF Memo: ... (Partnership attributions do not require itemization)' + 'Recount/Legal Proceedings Account JF Memo: Super Duper Long Committee Name That Needs to Shrink (...' ); }); }); diff --git a/front-end/src/app/shared/models/transaction-types/PARTNERSHIP_NATIONAL_PARTY_RECOUNT_JF_TRANSFER_MEMO.model.ts b/front-end/src/app/shared/models/transaction-types/PARTNERSHIP_NATIONAL_PARTY_RECOUNT_JF_TRANSFER_MEMO.model.ts index 08488a5c9d..9738dbcd52 100644 --- a/front-end/src/app/shared/models/transaction-types/PARTNERSHIP_NATIONAL_PARTY_RECOUNT_JF_TRANSFER_MEMO.model.ts +++ b/front-end/src/app/shared/models/transaction-types/PARTNERSHIP_NATIONAL_PARTY_RECOUNT_JF_TRANSFER_MEMO.model.ts @@ -4,24 +4,23 @@ import { AggregationGroups } from '../transaction.model'; import { SchATransaction, ScheduleATransactionTypeLabels, ScheduleATransactionTypes } from '../scha-transaction.model'; import { SchATransactionType } from '../scha-transaction-type.model'; import { TransactionNavigationControls, STANDARD_PARENT_CONTROLS } from '../transaction-navigation-controls.model'; -import { ContactTypes } from '../contact.model'; import { SubTransactionGroup } from '../transaction-type.model'; -import { TransactionGroupD } from '../transaction-groups/transaction-group-d.model'; +import { ORGANIZATION_FORM_FIELDS, ORGANIZATION } from 'app/shared/utils/transaction-type-properties'; export class PARTNERSHIP_NATIONAL_PARTY_RECOUNT_JF_TRANSFER_MEMO extends SchATransactionType { - transactionGroup = new TransactionGroupD(); + formFields = ORGANIZATION_FORM_FIELDS; + contactTypeOptions = ORGANIZATION; title = LabelUtils.get( ScheduleATransactionTypeLabels, ScheduleATransactionTypes.PARTNERSHIP_NATIONAL_PARTY_RECOUNT_JF_TRANSFER_MEMO ); schema = schema; override shortName = 'Partnership Receipt'; - override contactTypeOptions = [ContactTypes.ORGANIZATION]; override navigationControls: TransactionNavigationControls = STANDARD_PARENT_CONTROLS; override subTransactionConfig = new SubTransactionGroup( 'Partnership Receipt Recount/Legal Proceedings Account JF Transfer Memo', - [ScheduleATransactionTypes.PARTNERSHIP_INDIVIDUAL_NATIONAL_PARTY_RECOUNT_JF_TRANSFER_MEMO] + [ScheduleATransactionTypes.PARTNERSHIP_ATTRIBUTION_NATIONAL_PARTY_RECOUNT_JF_TRANSFER_MEMO] ); getNewTransaction() { @@ -33,19 +32,21 @@ export class PARTNERSHIP_NATIONAL_PARTY_RECOUNT_JF_TRANSFER_MEMO extends SchATra } override generatePurposeDescription(transaction: SchATransaction): string { - let committeeClause = `Recount/Legal Proceedings Account JF Memo: ${ + const committeeClause = `Recount/Legal Proceedings Account JF Memo: ${ (transaction.parent_transaction as SchATransaction).contributor_organization_name }`; const hasChildren = transaction.children && transaction.children.length > 0; const parenthetical = hasChildren ? ' (See Partnership Attribution(s) below)' - : ' (Partnership attributions do not require itemization)'; - if ((committeeClause + parenthetical).length > 100) { - committeeClause = committeeClause.slice(0, 97 - parenthetical.length) + '...'; + : ' (Partnership attributions do not meet itemization threshold)'; + const purposeDescription = committeeClause + parenthetical; + + if (purposeDescription.length > 100) { + return purposeDescription.slice(0, 97) + '...'; } - return committeeClause + parenthetical; + return purposeDescription; } override purposeDescriptionLabelNotice = - 'If transaction has no associated Partnership memos, reads "Recount/Legal Proceedings Account JF Memo: XX (Partnership attributions do not require itemization)". Otherwise, reads "Recount/Legal Proceedings Account JF Memo: XX (See Partnership Attribution(s) below)"'; + 'If transaction has no associated Partnership memos, reads "Recount/Legal Proceedings Account JF Memo: XX (Partnership attributions do not meet itemization threshold)". Otherwise, reads "Recount/Legal Proceedings Account JF Memo: XX (See Partnership Attribution(s) below)"'; } diff --git a/front-end/src/app/shared/models/transaction-types/PARTNERSHIP_RECEIPT.model.spec.ts b/front-end/src/app/shared/models/transaction-types/PARTNERSHIP_RECEIPT.model.spec.ts index 14f07525cb..3e148066de 100644 --- a/front-end/src/app/shared/models/transaction-types/PARTNERSHIP_RECEIPT.model.spec.ts +++ b/front-end/src/app/shared/models/transaction-types/PARTNERSHIP_RECEIPT.model.spec.ts @@ -1,6 +1,5 @@ import { SchATransaction, ScheduleATransactionTypes } from '../scha-transaction.model'; import { TransactionTypeUtils } from 'app/shared/utils/transaction-type.utils'; -import { TransactionGroupD } from '../transaction-groups/transaction-group-d.model'; describe('PARTNERSHIP_RECEIPT', () => { let transaction: SchATransaction; @@ -14,7 +13,6 @@ describe('PARTNERSHIP_RECEIPT', () => { it('should create an instance', () => { expect(transaction.transactionType).toBeTruthy(); expect(transaction.transactionType?.scheduleId).toBe('A'); - expect(transaction?.transactionType?.transactionGroup).toBeInstanceOf(TransactionGroupD); }); it('#factory() should return a SchATransaction', () => { @@ -24,7 +22,7 @@ describe('PARTNERSHIP_RECEIPT', () => { it('#generatePurposeDescription() should generate a string', () => { let descrip = transaction.transactionType?.generatePurposeDescription?.(transaction); - expect(descrip).toBe('Partnership attributions do not require itemization'); + expect(descrip).toBe('Partnership attributions do not meet itemization threshold'); transaction.children = [{ ...transaction } as SchATransaction]; descrip = transaction.transactionType?.generatePurposeDescription?.(transaction); diff --git a/front-end/src/app/shared/models/transaction-types/PARTNERSHIP_RECEIPT.model.ts b/front-end/src/app/shared/models/transaction-types/PARTNERSHIP_RECEIPT.model.ts index 70160a162c..ce8bf4a516 100644 --- a/front-end/src/app/shared/models/transaction-types/PARTNERSHIP_RECEIPT.model.ts +++ b/front-end/src/app/shared/models/transaction-types/PARTNERSHIP_RECEIPT.model.ts @@ -4,21 +4,22 @@ import { AggregationGroups } from '../transaction.model'; import { SchATransaction, ScheduleATransactionTypeLabels, ScheduleATransactionTypes } from '../scha-transaction.model'; import { STANDARD_PARENT_CONTROLS, TransactionNavigationControls } from '../transaction-navigation-controls.model'; import { SchATransactionType } from '../scha-transaction-type.model'; -import { TransactionGroupD } from '../transaction-groups/transaction-group-d.model'; +import { ORGANIZATION_FORM_FIELDS, ORGANIZATION } from 'app/shared/utils/transaction-type-properties'; export class PARTNERSHIP_RECEIPT extends SchATransactionType { - transactionGroup = new TransactionGroupD(); + formFields = ORGANIZATION_FORM_FIELDS; + contactTypeOptions = ORGANIZATION; title = LabelUtils.get(ScheduleATransactionTypeLabels, ScheduleATransactionTypes.PARTNERSHIP_RECEIPT); schema = schema; - override subTransactionConfig = [ScheduleATransactionTypes.PARTNERSHIP_MEMO]; + override subTransactionConfig = [ScheduleATransactionTypes.PARTNERSHIP_ATTRIBUTION]; override navigationControls: TransactionNavigationControls = STANDARD_PARENT_CONTROLS; override purposeDescriptionLabelNotice = - 'If Partnership Receipt is saved without a Partnership Memo, this will read "Partnership attributions do not require itemization". If a Partnership Memo is added, it will read "See Partnership Attribution(s) below".'; + 'If Partnership Receipt is saved without a Partnership Memo, this will read "Partnership attributions do not meet itemization threshold". If a Partnership Memo is added, it will read "See Partnership Attribution(s) below".'; override generatePurposeDescription(transaction: SchATransaction): string { if (transaction.children && transaction.children.length > 0) { return 'See Partnership Attribution(s) below'; } - return 'Partnership attributions do not require itemization'; + return 'Partnership attributions do not meet itemization threshold'; } getNewTransaction() { diff --git a/front-end/src/app/shared/models/transaction-types/PARTNERSHIP_RECOUNT_ACCOUNT_RECEIPT.model.spec.ts b/front-end/src/app/shared/models/transaction-types/PARTNERSHIP_RECOUNT_ACCOUNT_RECEIPT.model.spec.ts index 127fa7f13f..4079d1ab80 100644 --- a/front-end/src/app/shared/models/transaction-types/PARTNERSHIP_RECOUNT_ACCOUNT_RECEIPT.model.spec.ts +++ b/front-end/src/app/shared/models/transaction-types/PARTNERSHIP_RECOUNT_ACCOUNT_RECEIPT.model.spec.ts @@ -1,7 +1,6 @@ import { SchATransaction, ScheduleATransactionTypes } from '../scha-transaction.model'; import { getTestTransactionByType } from 'app/shared/utils/unit-test.utils'; import { Transaction } from '../transaction.model'; -import { TransactionGroupD } from '../transaction-groups/transaction-group-d.model'; describe('PARTNERSHIP_RECOUNT_ACCOUNT_RECEIPT', () => { let transaction: SchATransaction; @@ -15,7 +14,6 @@ describe('PARTNERSHIP_RECOUNT_ACCOUNT_RECEIPT', () => { it('should create an instance', () => { expect(transaction.transactionType).toBeTruthy(); expect(transaction.transactionType?.scheduleId).toBe('A'); - expect(transaction?.transactionType?.transactionGroup).toBeInstanceOf(TransactionGroupD); }); it('#factory() should return a SchATransaction', () => { @@ -26,7 +24,7 @@ describe('PARTNERSHIP_RECOUNT_ACCOUNT_RECEIPT', () => { it('#generatePurposeDescription() should generate a string', () => { let descrip = transaction.transactionType?.generatePurposeDescription?.(transaction); - expect(descrip).toBe('Recount Account (Partnership attributions do not require itemization)'); + expect(descrip).toBe('Recount Account (Partnership attributions do not meet itemization threshold)'); transaction.children = [transaction.transactionType?.getNewTransaction() as Transaction]; descrip = transaction.transactionType?.generatePurposeDescription?.(transaction); diff --git a/front-end/src/app/shared/models/transaction-types/PARTNERSHIP_RECOUNT_ACCOUNT_RECEIPT.model.ts b/front-end/src/app/shared/models/transaction-types/PARTNERSHIP_RECOUNT_ACCOUNT_RECEIPT.model.ts index 25406de84e..014485602e 100644 --- a/front-end/src/app/shared/models/transaction-types/PARTNERSHIP_RECOUNT_ACCOUNT_RECEIPT.model.ts +++ b/front-end/src/app/shared/models/transaction-types/PARTNERSHIP_RECOUNT_ACCOUNT_RECEIPT.model.ts @@ -4,21 +4,22 @@ import { SchATransaction, ScheduleATransactionTypeLabels, ScheduleATransactionTy import { STANDARD_PARENT_CONTROLS, TransactionNavigationControls } from '../transaction-navigation-controls.model'; import { AggregationGroups } from '../transaction.model'; import { SchATransactionType } from '../scha-transaction-type.model'; -import { TransactionGroupD } from '../transaction-groups/transaction-group-d.model'; +import { ORGANIZATION_FORM_FIELDS, ORGANIZATION } from 'app/shared/utils/transaction-type-properties'; export class PARTNERSHIP_RECOUNT_ACCOUNT_RECEIPT extends SchATransactionType { - transactionGroup = new TransactionGroupD(); + formFields = ORGANIZATION_FORM_FIELDS; + contactTypeOptions = ORGANIZATION; title = LabelUtils.get(ScheduleATransactionTypeLabels, ScheduleATransactionTypes.PARTNERSHIP_RECOUNT_ACCOUNT_RECEIPT); schema = schema; - override subTransactionConfig = [ScheduleATransactionTypes.PARTNERSHIP_RECOUNT_ACCOUNT_RECEIPT_MEMO]; + override subTransactionConfig = [ScheduleATransactionTypes.PARTNERSHIP_ATTRIBUTION_RECOUNT_ACCOUNT_RECEIPT_MEMO]; override navigationControls: TransactionNavigationControls = STANDARD_PARENT_CONTROLS; override purposeDescriptionLabelNotice = - 'If Partnership Receipt is saved without a Partnership Memo, this will read "Recount Account (Partnership attributions do not require itemization)". If a Partnership Memo is added, it will read "Recount Account (See Partnership Attribution(s) below)".'; + 'If Partnership Receipt is saved without a Partnership Memo, this will read "Recount Account (Partnership attributions do not meet itemization threshold)". If a Partnership Memo is added, it will read "Recount Account (See Partnership Attribution(s) below)".'; override generatePurposeDescription(transaction: SchATransaction): string { if (transaction.children && transaction.children.length > 0) { return 'Recount Account (See Partnership Attribution(s) below)'; } - return 'Recount Account (Partnership attributions do not require itemization)'; + return 'Recount Account (Partnership attributions do not meet itemization threshold)'; } getNewTransaction() { diff --git a/front-end/src/app/shared/models/transaction-types/PARTY_IN_KIND_OUT.model.spec.ts b/front-end/src/app/shared/models/transaction-types/PARTY_IN_KIND_OUT.model.spec.ts index 270d18c49b..5669df3ceb 100644 --- a/front-end/src/app/shared/models/transaction-types/PARTY_IN_KIND_OUT.model.spec.ts +++ b/front-end/src/app/shared/models/transaction-types/PARTY_IN_KIND_OUT.model.spec.ts @@ -1,5 +1,4 @@ import { PARTY_IN_KIND_OUT } from './PARTY_IN_KIND_OUT.model'; -import { TransactionGroupEE } from '../transaction-groups/transaction-group-ee.model'; import { SchBTransaction, ScheduleBTransactionTypes } from '../schb-transaction.model'; describe('IN_KIND_OUT', () => { @@ -12,7 +11,6 @@ describe('IN_KIND_OUT', () => { it('should create an instance', () => { expect(transactionType).toBeTruthy(); expect(transactionType.scheduleId).toBe('B'); - expect(transactionType.transactionGroup).toBeInstanceOf(TransactionGroupEE); }); it('#factory() should return a SchATransaction', () => { diff --git a/front-end/src/app/shared/models/transaction-types/PARTY_IN_KIND_OUT.model.ts b/front-end/src/app/shared/models/transaction-types/PARTY_IN_KIND_OUT.model.ts index b0d686bf65..8d60319f86 100644 --- a/front-end/src/app/shared/models/transaction-types/PARTY_IN_KIND_OUT.model.ts +++ b/front-end/src/app/shared/models/transaction-types/PARTY_IN_KIND_OUT.model.ts @@ -1,18 +1,13 @@ import { schema } from 'fecfile-validate/fecfile_validate_js/dist/COM_IN_KIND_OUTS'; -import { TransactionGroupEE } from '../transaction-groups/transaction-group-ee.model'; import { AggregationGroups } from '../transaction.model'; import { SchBTransaction, ScheduleBTransactionTypes, ScheduleBTransactionTypeLabels } from '../schb-transaction.model'; import { TemplateMapKeyType } from '../transaction-type.model'; -import { SchBTransactionType } from '../schb-transaction-type.model'; import { LabelUtils } from 'app/shared/utils/label.utils'; +import { IN_KIND_OUT } from './common-types/IN_KIND_OUT.model'; -export class PARTY_IN_KIND_OUT extends SchBTransactionType { - transactionGroup = new TransactionGroupEE(); - override isDependentChild = true; - override showAggregate = false; +export class PARTY_IN_KIND_OUT extends IN_KIND_OUT { title = LabelUtils.get(ScheduleBTransactionTypeLabels, ScheduleBTransactionTypes.PARTY_IN_KIND_OUT); schema = schema; - override useParentContact = true; override inheritedFields = [ 'organization_name', 'street_1', diff --git a/front-end/src/app/shared/models/transaction-types/PARTY_IN_KIND_RECEIPT.model.spec.ts b/front-end/src/app/shared/models/transaction-types/PARTY_IN_KIND_RECEIPT.model.spec.ts index 7e71e06a0c..41fc8649e0 100644 --- a/front-end/src/app/shared/models/transaction-types/PARTY_IN_KIND_RECEIPT.model.spec.ts +++ b/front-end/src/app/shared/models/transaction-types/PARTY_IN_KIND_RECEIPT.model.spec.ts @@ -1,6 +1,5 @@ import { SchATransaction, ScheduleATransactionTypes } from '../scha-transaction.model'; import { getTestTransactionByType } from 'app/shared/utils/unit-test.utils'; -import { TransactionGroupEE } from '../transaction-groups/transaction-group-ee.model'; describe('PARTY_IN_KIND_RECEIPT', () => { let transaction: SchATransaction; @@ -12,7 +11,6 @@ describe('PARTY_IN_KIND_RECEIPT', () => { it('should create an instance', () => { expect(transaction.transactionType).toBeTruthy(); expect(transaction.transactionType?.scheduleId).toBe('A'); - expect(transaction?.transactionType?.transactionGroup).toBeInstanceOf(TransactionGroupEE); }); it('#factory() should return a SchATransaction', () => { diff --git a/front-end/src/app/shared/models/transaction-types/PARTY_IN_KIND_RECEIPT.model.ts b/front-end/src/app/shared/models/transaction-types/PARTY_IN_KIND_RECEIPT.model.ts index 59a96aec66..1529a248cc 100644 --- a/front-end/src/app/shared/models/transaction-types/PARTY_IN_KIND_RECEIPT.model.ts +++ b/front-end/src/app/shared/models/transaction-types/PARTY_IN_KIND_RECEIPT.model.ts @@ -1,23 +1,14 @@ import { LabelUtils } from 'app/shared/utils/label.utils'; import { schema } from 'fecfile-validate/fecfile_validate_js/dist/COM_IN_KIND_RECEIPTS'; -import { SchATransactionType } from '../scha-transaction-type.model'; import { SchATransaction, ScheduleATransactionTypeLabels, ScheduleATransactionTypes } from '../scha-transaction.model'; -import { - STANDARD_DOUBLE_ENTRY_CONTROLS, - TransactionNavigationControls, -} from '../transaction-navigation-controls.model'; import { AggregationGroups } from '../transaction.model'; import { ScheduleBTransactionTypes } from '../schb-transaction.model'; -import { TransactionGroupEE } from '../transaction-groups/transaction-group-ee.model'; +import { IN_KIND } from './common-types/IN_KIND.model'; -export class PARTY_IN_KIND_RECEIPT extends SchATransactionType { - transactionGroup = new TransactionGroupEE(); +export class PARTY_IN_KIND_RECEIPT extends IN_KIND { title = LabelUtils.get(ScheduleATransactionTypeLabels, ScheduleATransactionTypes.PARTY_IN_KIND_RECEIPT); schema = schema; - override apiEndpoint = '/transactions/save-pair'; override dependentChildTransactionType = ScheduleBTransactionTypes.PARTY_IN_KIND_OUT; - override navigationControls: TransactionNavigationControls = STANDARD_DOUBLE_ENTRY_CONTROLS; - override purposeDescriptionPrefix = 'In-Kind: '; getNewTransaction() { return SchATransaction.fromJSON({ diff --git a/front-end/src/app/shared/models/transaction-types/PARTY_JF_TRANSFER_MEMO.model.spec.ts b/front-end/src/app/shared/models/transaction-types/PARTY_JF_TRANSFER_MEMO.model.spec.ts index 8b09a659d3..40e88df4e5 100644 --- a/front-end/src/app/shared/models/transaction-types/PARTY_JF_TRANSFER_MEMO.model.spec.ts +++ b/front-end/src/app/shared/models/transaction-types/PARTY_JF_TRANSFER_MEMO.model.spec.ts @@ -1,6 +1,5 @@ import { TransactionTypeUtils } from 'app/shared/utils/transaction-type.utils'; import { SchATransaction, ScheduleATransactionTypes } from '../scha-transaction.model'; -import { TransactionGroupE } from '../transaction-groups/transaction-group-e.model'; describe('PARTY_JF_TRANSFER_MEMO', () => { let transaction: SchATransaction; @@ -18,7 +17,6 @@ describe('PARTY_JF_TRANSFER_MEMO', () => { it('should create an instance', () => { expect(transaction.transactionType).toBeTruthy(); expect(transaction.transactionType?.scheduleId).toBe('A'); - expect(transaction?.transactionType?.transactionGroup).toBeInstanceOf(TransactionGroupE); }); it('#factory() should return a SchATransaction', () => { diff --git a/front-end/src/app/shared/models/transaction-types/PARTY_JF_TRANSFER_MEMO.model.ts b/front-end/src/app/shared/models/transaction-types/PARTY_JF_TRANSFER_MEMO.model.ts index 387b194cd7..be78cb9c95 100644 --- a/front-end/src/app/shared/models/transaction-types/PARTY_JF_TRANSFER_MEMO.model.ts +++ b/front-end/src/app/shared/models/transaction-types/PARTY_JF_TRANSFER_MEMO.model.ts @@ -4,10 +4,11 @@ import { AggregationGroups } from '../transaction.model'; import { SchATransaction, ScheduleATransactionTypeLabels, ScheduleATransactionTypes } from '../scha-transaction.model'; import { TransactionNavigationControls, getChildNavigationControls } from '../transaction-navigation-controls.model'; import { SchATransactionType } from '../scha-transaction-type.model'; -import { TransactionGroupE } from '../transaction-groups/transaction-group-e.model'; +import { COMMITTEE, COMMITTEE_FORM_FIELDS } from 'app/shared/utils/transaction-type-properties'; export class PARTY_JF_TRANSFER_MEMO extends SchATransactionType { - transactionGroup = new TransactionGroupE(); + formFields = COMMITTEE_FORM_FIELDS; + contactTypeOptions = COMMITTEE; title = LabelUtils.get(ScheduleATransactionTypeLabels, ScheduleATransactionTypes.PARTY_JF_TRANSFER_MEMO); override shortName = 'Party'; schema = schema; diff --git a/front-end/src/app/shared/models/transaction-types/PARTY_NATIONAL_PARTY_CONVENTION_ACCOUNT.model.spec.ts b/front-end/src/app/shared/models/transaction-types/PARTY_NATIONAL_PARTY_CONVENTION_ACCOUNT.model.spec.ts index 429543f44d..904237eaf7 100644 --- a/front-end/src/app/shared/models/transaction-types/PARTY_NATIONAL_PARTY_CONVENTION_ACCOUNT.model.spec.ts +++ b/front-end/src/app/shared/models/transaction-types/PARTY_NATIONAL_PARTY_CONVENTION_ACCOUNT.model.spec.ts @@ -1,6 +1,5 @@ import { PARTY_NATIONAL_PARTY_CONVENTION_ACCOUNT } from './PARTY_NATIONAL_PARTY_CONVENTION_ACCOUNT.model'; import { SchATransaction, ScheduleATransactionTypes } from '../scha-transaction.model'; -import { TransactionGroupE } from '../transaction-groups/transaction-group-e.model'; describe('PARTY_NATIONAL_PARTY_CONVENTION_BUILDINGS_ACCOUNT', () => { let transactionType: PARTY_NATIONAL_PARTY_CONVENTION_ACCOUNT; @@ -12,7 +11,6 @@ describe('PARTY_NATIONAL_PARTY_CONVENTION_BUILDINGS_ACCOUNT', () => { it('should create an instance', () => { expect(transactionType).toBeTruthy(); expect(transactionType.scheduleId).toBe('A'); - expect(transactionType.transactionGroup).toBeInstanceOf(TransactionGroupE); }); it('#factory() should return a SchATransaction', () => { diff --git a/front-end/src/app/shared/models/transaction-types/PARTY_NATIONAL_PARTY_CONVENTION_ACCOUNT.model.ts b/front-end/src/app/shared/models/transaction-types/PARTY_NATIONAL_PARTY_CONVENTION_ACCOUNT.model.ts index d7780f180b..6679530ce3 100644 --- a/front-end/src/app/shared/models/transaction-types/PARTY_NATIONAL_PARTY_CONVENTION_ACCOUNT.model.ts +++ b/front-end/src/app/shared/models/transaction-types/PARTY_NATIONAL_PARTY_CONVENTION_ACCOUNT.model.ts @@ -4,10 +4,11 @@ import { AggregationGroups } from '../transaction.model'; import { SchATransaction, ScheduleATransactionTypeLabels, ScheduleATransactionTypes } from '../scha-transaction.model'; import { SchATransactionType } from '../scha-transaction-type.model'; import { STANDARD_CONTROLS, TransactionNavigationControls } from '../transaction-navigation-controls.model'; -import { TransactionGroupE } from '../transaction-groups/transaction-group-e.model'; +import { COMMITTEE, COMMITTEE_FORM_FIELDS } from 'app/shared/utils/transaction-type-properties'; export class PARTY_NATIONAL_PARTY_CONVENTION_ACCOUNT extends SchATransactionType { - transactionGroup = new TransactionGroupE(); + formFields = COMMITTEE_FORM_FIELDS; + contactTypeOptions = COMMITTEE; title = LabelUtils.get( ScheduleATransactionTypeLabels, ScheduleATransactionTypes.PARTY_NATIONAL_PARTY_CONVENTION_ACCOUNT diff --git a/front-end/src/app/shared/models/transaction-types/PARTY_NATIONAL_PARTY_HEADQUARTERS_ACCOUNT.model.spec.ts b/front-end/src/app/shared/models/transaction-types/PARTY_NATIONAL_PARTY_HEADQUARTERS_ACCOUNT.model.spec.ts index 9017f06eb1..8977e9e06e 100644 --- a/front-end/src/app/shared/models/transaction-types/PARTY_NATIONAL_PARTY_HEADQUARTERS_ACCOUNT.model.spec.ts +++ b/front-end/src/app/shared/models/transaction-types/PARTY_NATIONAL_PARTY_HEADQUARTERS_ACCOUNT.model.spec.ts @@ -1,6 +1,5 @@ import { PARTY_NATIONAL_PARTY_HEADQUARTERS_ACCOUNT } from './PARTY_NATIONAL_PARTY_HEADQUARTERS_ACCOUNT.model'; import { SchATransaction, ScheduleATransactionTypes } from '../scha-transaction.model'; -import { TransactionGroupE } from '../transaction-groups/transaction-group-e.model'; describe('PARTY_NATIONAL_PARTY_HEADQUARTERS_BUILDINGS_ACCOUNT', () => { let transactionType: PARTY_NATIONAL_PARTY_HEADQUARTERS_ACCOUNT; @@ -12,7 +11,6 @@ describe('PARTY_NATIONAL_PARTY_HEADQUARTERS_BUILDINGS_ACCOUNT', () => { it('should create an instance', () => { expect(transactionType).toBeTruthy(); expect(transactionType.scheduleId).toBe('A'); - expect(transactionType.transactionGroup).toBeInstanceOf(TransactionGroupE); }); it('#factory() should return a SchATransaction', () => { diff --git a/front-end/src/app/shared/models/transaction-types/PARTY_NATIONAL_PARTY_HEADQUARTERS_ACCOUNT.model.ts b/front-end/src/app/shared/models/transaction-types/PARTY_NATIONAL_PARTY_HEADQUARTERS_ACCOUNT.model.ts index 5ed5b440f2..e0016eff8f 100644 --- a/front-end/src/app/shared/models/transaction-types/PARTY_NATIONAL_PARTY_HEADQUARTERS_ACCOUNT.model.ts +++ b/front-end/src/app/shared/models/transaction-types/PARTY_NATIONAL_PARTY_HEADQUARTERS_ACCOUNT.model.ts @@ -2,12 +2,13 @@ import { LabelUtils } from 'app/shared/utils/label.utils'; import { schema } from 'fecfile-validate/fecfile_validate_js/dist/PARTY_NATIONAL_PARTY_HEADQUARTERS_ACCOUNT'; import { SchATransactionType } from '../scha-transaction-type.model'; import { SchATransaction, ScheduleATransactionTypeLabels, ScheduleATransactionTypes } from '../scha-transaction.model'; -import { TransactionGroupE } from '../transaction-groups/transaction-group-e.model'; import { STANDARD_CONTROLS, TransactionNavigationControls } from '../transaction-navigation-controls.model'; import { AggregationGroups } from '../transaction.model'; +import { COMMITTEE, COMMITTEE_FORM_FIELDS } from 'app/shared/utils/transaction-type-properties'; export class PARTY_NATIONAL_PARTY_HEADQUARTERS_ACCOUNT extends SchATransactionType { - transactionGroup = new TransactionGroupE(); + formFields = COMMITTEE_FORM_FIELDS; + contactTypeOptions = COMMITTEE; title = LabelUtils.get( ScheduleATransactionTypeLabels, ScheduleATransactionTypes.PARTY_NATIONAL_PARTY_HEADQUARTERS_ACCOUNT diff --git a/front-end/src/app/shared/models/transaction-types/PARTY_NATIONAL_PARTY_RECOUNT_ACCOUNT.model.spec.ts b/front-end/src/app/shared/models/transaction-types/PARTY_NATIONAL_PARTY_RECOUNT_ACCOUNT.model.spec.ts index 1aa95090e1..a843635602 100644 --- a/front-end/src/app/shared/models/transaction-types/PARTY_NATIONAL_PARTY_RECOUNT_ACCOUNT.model.spec.ts +++ b/front-end/src/app/shared/models/transaction-types/PARTY_NATIONAL_PARTY_RECOUNT_ACCOUNT.model.spec.ts @@ -1,6 +1,5 @@ import { PARTY_NATIONAL_PARTY_RECOUNT_ACCOUNT } from './PARTY_NATIONAL_PARTY_RECOUNT_ACCOUNT.model'; import { SchATransaction, ScheduleATransactionTypes } from '../scha-transaction.model'; -import { TransactionGroupE } from '../transaction-groups/transaction-group-e.model'; describe('PARTY_NATIONAL_PARTY_RECOUNT_ACCOUNT', () => { let transactionType: PARTY_NATIONAL_PARTY_RECOUNT_ACCOUNT; @@ -12,7 +11,6 @@ describe('PARTY_NATIONAL_PARTY_RECOUNT_ACCOUNT', () => { it('should create an instance', () => { expect(transactionType).toBeTruthy(); expect(transactionType.scheduleId).toBe('A'); - expect(transactionType.transactionGroup).toBeInstanceOf(TransactionGroupE); }); it('#factory() should return a SchATransaction', () => { diff --git a/front-end/src/app/shared/models/transaction-types/PARTY_NATIONAL_PARTY_RECOUNT_ACCOUNT.model.ts b/front-end/src/app/shared/models/transaction-types/PARTY_NATIONAL_PARTY_RECOUNT_ACCOUNT.model.ts index 7ba93c4ffc..61779e34ab 100644 --- a/front-end/src/app/shared/models/transaction-types/PARTY_NATIONAL_PARTY_RECOUNT_ACCOUNT.model.ts +++ b/front-end/src/app/shared/models/transaction-types/PARTY_NATIONAL_PARTY_RECOUNT_ACCOUNT.model.ts @@ -2,12 +2,13 @@ import { LabelUtils } from 'app/shared/utils/label.utils'; import { schema } from 'fecfile-validate/fecfile_validate_js/dist/PARTY_NATIONAL_PARTY_RECOUNT_ACCOUNT'; import { SchATransactionType } from '../scha-transaction-type.model'; import { SchATransaction, ScheduleATransactionTypeLabels, ScheduleATransactionTypes } from '../scha-transaction.model'; -import { TransactionGroupE } from '../transaction-groups/transaction-group-e.model'; import { STANDARD_CONTROLS, TransactionNavigationControls } from '../transaction-navigation-controls.model'; import { AggregationGroups } from '../transaction.model'; +import { COMMITTEE, COMMITTEE_FORM_FIELDS } from 'app/shared/utils/transaction-type-properties'; export class PARTY_NATIONAL_PARTY_RECOUNT_ACCOUNT extends SchATransactionType { - transactionGroup = new TransactionGroupE(); + formFields = COMMITTEE_FORM_FIELDS; + contactTypeOptions = COMMITTEE; title = LabelUtils.get( ScheduleATransactionTypeLabels, ScheduleATransactionTypes.PARTY_NATIONAL_PARTY_RECOUNT_ACCOUNT diff --git a/front-end/src/app/shared/models/transaction-types/PARTY_RECEIPT.model.spec.ts b/front-end/src/app/shared/models/transaction-types/PARTY_RECEIPT.model.spec.ts index 4d28fcbdd6..6a759c8870 100644 --- a/front-end/src/app/shared/models/transaction-types/PARTY_RECEIPT.model.spec.ts +++ b/front-end/src/app/shared/models/transaction-types/PARTY_RECEIPT.model.spec.ts @@ -1,6 +1,5 @@ import { TransactionType } from 'app/shared/models/transaction-type.model'; import { SchATransaction, ScheduleATransactionTypes } from '../scha-transaction.model'; -import { TransactionGroupE } from '../transaction-groups/transaction-group-e.model'; import { PARTY_RECEIPT } from './PARTY_RECEIPT.model'; describe('PARTY_RECEIPT', () => { @@ -13,7 +12,6 @@ describe('PARTY_RECEIPT', () => { it('should create an instance', () => { expect(transactionType).toBeTruthy(); expect(transactionType.scheduleId).toBe('A'); - expect(transactionType.transactionGroup).toBeInstanceOf(TransactionGroupE); }); it('#factory() should return a SchATransaction', () => { diff --git a/front-end/src/app/shared/models/transaction-types/PARTY_RECEIPT.model.ts b/front-end/src/app/shared/models/transaction-types/PARTY_RECEIPT.model.ts index 29212dc846..182fee2871 100644 --- a/front-end/src/app/shared/models/transaction-types/PARTY_RECEIPT.model.ts +++ b/front-end/src/app/shared/models/transaction-types/PARTY_RECEIPT.model.ts @@ -2,12 +2,13 @@ import { LabelUtils } from 'app/shared/utils/label.utils'; import { schema } from 'fecfile-validate/fecfile_validate_js/dist/PARTY_RECEIPT'; import { SchATransactionType } from '../scha-transaction-type.model'; import { SchATransaction, ScheduleATransactionTypeLabels, ScheduleATransactionTypes } from '../scha-transaction.model'; -import { TransactionGroupE } from '../transaction-groups/transaction-group-e.model'; import { STANDARD_CONTROLS, TransactionNavigationControls } from '../transaction-navigation-controls.model'; import { AggregationGroups } from '../transaction.model'; +import { COMMITTEE, COMMITTEE_FORM_FIELDS } from 'app/shared/utils/transaction-type-properties'; export class PARTY_RECEIPT extends SchATransactionType { - transactionGroup = new TransactionGroupE(); + formFields = COMMITTEE_FORM_FIELDS; + contactTypeOptions = COMMITTEE; title = LabelUtils.get(ScheduleATransactionTypeLabels, ScheduleATransactionTypes.PARTY_RECEIPT); schema = schema; override navigationControls: TransactionNavigationControls = STANDARD_CONTROLS; diff --git a/front-end/src/app/shared/models/transaction-types/PARTY_RECOUNT_RECEIPT.model.spec.ts b/front-end/src/app/shared/models/transaction-types/PARTY_RECOUNT_RECEIPT.model.spec.ts index 136b53f09c..1bac91889c 100644 --- a/front-end/src/app/shared/models/transaction-types/PARTY_RECOUNT_RECEIPT.model.spec.ts +++ b/front-end/src/app/shared/models/transaction-types/PARTY_RECOUNT_RECEIPT.model.spec.ts @@ -1,5 +1,4 @@ import { SchATransaction, ScheduleATransactionTypes } from '../scha-transaction.model'; -import { TransactionGroupE } from '../transaction-groups/transaction-group-e.model'; import { PARTY_RECOUNT_RECEIPT } from './PARTY_RECOUNT_RECEIPT.model'; describe('PARTY_RECOUNT_RECEIPT', () => { @@ -12,7 +11,6 @@ describe('PARTY_RECOUNT_RECEIPT', () => { it('should create an instance', () => { expect(transactionType).toBeTruthy(); expect(transactionType.scheduleId).toBe('A'); - expect(transactionType.transactionGroup).toBeInstanceOf(TransactionGroupE); }); it('#factory() should return a SchATransaction', () => { diff --git a/front-end/src/app/shared/models/transaction-types/PARTY_RECOUNT_RECEIPT.model.ts b/front-end/src/app/shared/models/transaction-types/PARTY_RECOUNT_RECEIPT.model.ts index 04b413c74b..74dab0c804 100644 --- a/front-end/src/app/shared/models/transaction-types/PARTY_RECOUNT_RECEIPT.model.ts +++ b/front-end/src/app/shared/models/transaction-types/PARTY_RECOUNT_RECEIPT.model.ts @@ -2,12 +2,13 @@ import { LabelUtils } from 'app/shared/utils/label.utils'; import { schema } from 'fecfile-validate/fecfile_validate_js/dist/PARTY_RECOUNT_RECEIPT'; import { SchATransactionType } from '../scha-transaction-type.model'; import { SchATransaction, ScheduleATransactionTypeLabels, ScheduleATransactionTypes } from '../scha-transaction.model'; -import { TransactionGroupE } from '../transaction-groups/transaction-group-e.model'; import { STANDARD_CONTROLS, TransactionNavigationControls } from '../transaction-navigation-controls.model'; import { AggregationGroups } from '../transaction.model'; +import { COMMITTEE, COMMITTEE_FORM_FIELDS } from 'app/shared/utils/transaction-type-properties'; export class PARTY_RECOUNT_RECEIPT extends SchATransactionType { - transactionGroup = new TransactionGroupE(); + formFields = COMMITTEE_FORM_FIELDS; + contactTypeOptions = COMMITTEE; title = LabelUtils.get(ScheduleATransactionTypeLabels, ScheduleATransactionTypes.PARTY_RECOUNT_RECEIPT); schema = schema; override navigationControls: TransactionNavigationControls = STANDARD_CONTROLS; diff --git a/front-end/src/app/shared/models/transaction-types/PARTY_RETURN.model.spec.ts b/front-end/src/app/shared/models/transaction-types/PARTY_RETURN.model.spec.ts index 50a921f6d8..36079466bf 100644 --- a/front-end/src/app/shared/models/transaction-types/PARTY_RETURN.model.spec.ts +++ b/front-end/src/app/shared/models/transaction-types/PARTY_RETURN.model.spec.ts @@ -1,6 +1,5 @@ import { TransactionType } from 'app/shared/models/transaction-type.model'; import { SchATransaction, ScheduleATransactionTypes } from '../scha-transaction.model'; -import { TransactionGroupE } from '../transaction-groups/transaction-group-e.model'; import { PARTY_RETURN } from './PARTY_RETURN.model'; describe('PARTY_RETURN', () => { @@ -13,7 +12,6 @@ describe('PARTY_RETURN', () => { it('should create an instance', () => { expect(transactionType).toBeTruthy(); expect(transactionType.scheduleId).toBe('A'); - expect(transactionType.transactionGroup).toBeInstanceOf(TransactionGroupE); }); it('#factory() should return a SchATransaction', () => { diff --git a/front-end/src/app/shared/models/transaction-types/PARTY_RETURN.model.ts b/front-end/src/app/shared/models/transaction-types/PARTY_RETURN.model.ts index 11ad1166ed..1e75747d59 100644 --- a/front-end/src/app/shared/models/transaction-types/PARTY_RETURN.model.ts +++ b/front-end/src/app/shared/models/transaction-types/PARTY_RETURN.model.ts @@ -2,12 +2,13 @@ import { LabelUtils } from 'app/shared/utils/label.utils'; import { schema } from 'fecfile-validate/fecfile_validate_js/dist/PARTY_RETURN'; import { SchATransactionType } from '../scha-transaction-type.model'; import { SchATransaction, ScheduleATransactionTypeLabels, ScheduleATransactionTypes } from '../scha-transaction.model'; -import { TransactionGroupE } from '../transaction-groups/transaction-group-e.model'; import { STANDARD_CONTROLS, TransactionNavigationControls } from '../transaction-navigation-controls.model'; import { AggregationGroups } from '../transaction.model'; +import { COMMITTEE, COMMITTEE_FORM_FIELDS } from 'app/shared/utils/transaction-type-properties'; export class PARTY_RETURN extends SchATransactionType { - transactionGroup = new TransactionGroupE(); + formFields = COMMITTEE_FORM_FIELDS; + contactTypeOptions = COMMITTEE; title = LabelUtils.get(ScheduleATransactionTypeLabels, ScheduleATransactionTypes.PARTY_RETURN); schema = schema; override negativeAmountValueOnly = true; diff --git a/front-end/src/app/shared/models/transaction-types/RECOUNT_ACCOUNT_DISBURSEMENT.model.spec.ts b/front-end/src/app/shared/models/transaction-types/RECOUNT_ACCOUNT_DISBURSEMENT.model.spec.ts index 10fe0cb4eb..8008b06f54 100644 --- a/front-end/src/app/shared/models/transaction-types/RECOUNT_ACCOUNT_DISBURSEMENT.model.spec.ts +++ b/front-end/src/app/shared/models/transaction-types/RECOUNT_ACCOUNT_DISBURSEMENT.model.spec.ts @@ -1,5 +1,4 @@ import { SchBTransaction, ScheduleBTransactionTypes } from '../schb-transaction.model'; -import { TransactionGroupB } from '../transaction-groups/transaction-group-b.model'; import { RECOUNT_ACCOUNT_DISBURSEMENT } from './RECOUNT_ACCOUNT_DISBURSEMENT.model'; describe('RECOUNT_ACCOUNT_DISBURSEMENT', () => { @@ -12,7 +11,6 @@ describe('RECOUNT_ACCOUNT_DISBURSEMENT', () => { it('should create an instance', () => { expect(transactionType).toBeTruthy(); expect(transactionType.scheduleId).toBe('B'); - expect(transactionType.transactionGroup).toBeInstanceOf(TransactionGroupB); }); it('#factory() should return a SchBTransaction', () => { diff --git a/front-end/src/app/shared/models/transaction-types/RECOUNT_ACCOUNT_DISBURSEMENT.model.ts b/front-end/src/app/shared/models/transaction-types/RECOUNT_ACCOUNT_DISBURSEMENT.model.ts index 01d5c60c7d..bd897cf055 100644 --- a/front-end/src/app/shared/models/transaction-types/RECOUNT_ACCOUNT_DISBURSEMENT.model.ts +++ b/front-end/src/app/shared/models/transaction-types/RECOUNT_ACCOUNT_DISBURSEMENT.model.ts @@ -2,16 +2,18 @@ import { LabelUtils } from 'app/shared/utils/label.utils'; import { schema } from 'fecfile-validate/fecfile_validate_js/dist/RECOUNT_AND_NP_DISBURSEMENTS'; import { SchBTransactionType } from '../schb-transaction-type.model'; import { SchBTransaction, ScheduleBTransactionTypeLabels, ScheduleBTransactionTypes } from '../schb-transaction.model'; -import { TransactionGroupB } from '../transaction-groups/transaction-group-b.model'; import { STANDARD_CONTROLS, TransactionNavigationControls } from '../transaction-navigation-controls.model'; import { AggregationGroups } from '../transaction.model'; -import { ContactTypes } from '../contact.model'; +import { + INDIVIDUAL_ORGANIZATION_B_FORM_FIELDS, + ORGANIZATION_INDIVIDUAL_COMMITTEE, +} from 'app/shared/utils/transaction-type-properties'; export class RECOUNT_ACCOUNT_DISBURSEMENT extends SchBTransactionType { - transactionGroup = new TransactionGroupB(); + formFields = INDIVIDUAL_ORGANIZATION_B_FORM_FIELDS; + override contactTypeOptions = ORGANIZATION_INDIVIDUAL_COMMITTEE; title = LabelUtils.get(ScheduleBTransactionTypeLabels, ScheduleBTransactionTypes.RECOUNT_ACCOUNT_DISBURSEMENT); schema = schema; - override defaultContactTypeOption = ContactTypes.ORGANIZATION; override navigationControls: TransactionNavigationControls = STANDARD_CONTROLS; override purposeDescriptionPrefix = 'Recount Account: '; diff --git a/front-end/src/app/shared/models/transaction-types/REFUND_INDIVIDUAL_CONTRIBUTION.model.spec.ts b/front-end/src/app/shared/models/transaction-types/REFUND_INDIVIDUAL_CONTRIBUTION.model.spec.ts index 685ffbc005..00fc1d9610 100644 --- a/front-end/src/app/shared/models/transaction-types/REFUND_INDIVIDUAL_CONTRIBUTION.model.spec.ts +++ b/front-end/src/app/shared/models/transaction-types/REFUND_INDIVIDUAL_CONTRIBUTION.model.spec.ts @@ -1,5 +1,4 @@ import { SchBTransaction, ScheduleBTransactionTypes } from '../schb-transaction.model'; -import { TransactionGroupB } from '../transaction-groups/transaction-group-b.model'; import { REFUND_INDIVIDUAL_CONTRIBUTION } from './REFUND_INDIVIDUAL_CONTRIBUTION.model'; describe('REFUND_INDIVIDUAL_CONTRIBUTION', () => { @@ -12,7 +11,6 @@ describe('REFUND_INDIVIDUAL_CONTRIBUTION', () => { it('should create an instance', () => { expect(transactionType).toBeTruthy(); expect(transactionType.scheduleId).toBe('B'); - expect(transactionType.transactionGroup).toBeInstanceOf(TransactionGroupB); }); it('#factory() should return a SchBTransaction', () => { diff --git a/front-end/src/app/shared/models/transaction-types/REFUND_INDIVIDUAL_CONTRIBUTION.model.ts b/front-end/src/app/shared/models/transaction-types/REFUND_INDIVIDUAL_CONTRIBUTION.model.ts index f79352c6e6..0bae435273 100644 --- a/front-end/src/app/shared/models/transaction-types/REFUND_INDIVIDUAL_CONTRIBUTION.model.ts +++ b/front-end/src/app/shared/models/transaction-types/REFUND_INDIVIDUAL_CONTRIBUTION.model.ts @@ -4,16 +4,18 @@ import { AggregationGroups } from '../transaction.model'; import { SchBTransaction, ScheduleBTransactionTypeLabels, ScheduleBTransactionTypes } from '../schb-transaction.model'; import { SchBTransactionType } from '../schb-transaction-type.model'; import { TransactionNavigationControls, STANDARD_CONTROLS } from '../transaction-navigation-controls.model'; -import { ContactTypes } from '../contact.model'; -import { TransactionGroupB } from '../transaction-groups/transaction-group-b.model'; +import { + INDIVIDUAL_ORGANIZATION, + INDIVIDUAL_ORGANIZATION_B_FORM_FIELDS, +} from 'app/shared/utils/transaction-type-properties'; export class REFUND_INDIVIDUAL_CONTRIBUTION extends SchBTransactionType { - transactionGroup = new TransactionGroupB(); + formFields = INDIVIDUAL_ORGANIZATION_B_FORM_FIELDS; + contactTypeOptions = INDIVIDUAL_ORGANIZATION; title = LabelUtils.get(ScheduleBTransactionTypeLabels, ScheduleBTransactionTypes.REFUND_INDIVIDUAL_CONTRIBUTION); schema = schema; override showAggregate = false; override isRefund = true; - override contactTypeOptions = [ContactTypes.INDIVIDUAL, ContactTypes.ORGANIZATION]; override navigationControls: TransactionNavigationControls = STANDARD_CONTROLS; getNewTransaction() { diff --git a/front-end/src/app/shared/models/transaction-types/REFUND_INDIVIDUAL_CONTRIBUTION_VOID.model.spec.ts b/front-end/src/app/shared/models/transaction-types/REFUND_INDIVIDUAL_CONTRIBUTION_VOID.model.spec.ts index 6c51c7c6f3..73ed605ca5 100644 --- a/front-end/src/app/shared/models/transaction-types/REFUND_INDIVIDUAL_CONTRIBUTION_VOID.model.spec.ts +++ b/front-end/src/app/shared/models/transaction-types/REFUND_INDIVIDUAL_CONTRIBUTION_VOID.model.spec.ts @@ -1,5 +1,4 @@ import { SchBTransaction, ScheduleBTransactionTypes } from '../schb-transaction.model'; -import { TransactionGroupB } from '../transaction-groups/transaction-group-b.model'; import { REFUND_INDIVIDUAL_CONTRIBUTION_VOID } from './REFUND_INDIVIDUAL_CONTRIBUTION_VOID.model'; describe('REFUND_INDIVIDUAL_CONTRIBUTION_VOID', () => { @@ -12,7 +11,6 @@ describe('REFUND_INDIVIDUAL_CONTRIBUTION_VOID', () => { it('should create an instance', () => { expect(transactionType).toBeTruthy(); expect(transactionType.scheduleId).toBe('B'); - expect(transactionType.transactionGroup).toBeInstanceOf(TransactionGroupB); }); it('#factory() should return a SchBTransaction', () => { diff --git a/front-end/src/app/shared/models/transaction-types/REFUND_INDIVIDUAL_CONTRIBUTION_VOID.model.ts b/front-end/src/app/shared/models/transaction-types/REFUND_INDIVIDUAL_CONTRIBUTION_VOID.model.ts index ff191050ec..b6fa49edbf 100644 --- a/front-end/src/app/shared/models/transaction-types/REFUND_INDIVIDUAL_CONTRIBUTION_VOID.model.ts +++ b/front-end/src/app/shared/models/transaction-types/REFUND_INDIVIDUAL_CONTRIBUTION_VOID.model.ts @@ -1,20 +1,22 @@ import { LabelUtils } from 'app/shared/utils/label.utils'; import { schema } from 'fecfile-validate/fecfile_validate_js/dist/INDIVIDUAL_REFUNDS'; -import { ContactTypes } from '../contact.model'; import { SchBTransactionType } from '../schb-transaction-type.model'; import { SchBTransaction, ScheduleBTransactionTypeLabels, ScheduleBTransactionTypes } from '../schb-transaction.model'; -import { TransactionGroupB } from '../transaction-groups/transaction-group-b.model'; import { STANDARD_CONTROLS, TransactionNavigationControls } from '../transaction-navigation-controls.model'; import { AggregationGroups } from '../transaction.model'; +import { + INDIVIDUAL_ORGANIZATION, + INDIVIDUAL_ORGANIZATION_B_FORM_FIELDS, +} from 'app/shared/utils/transaction-type-properties'; export class REFUND_INDIVIDUAL_CONTRIBUTION_VOID extends SchBTransactionType { - transactionGroup = new TransactionGroupB(); + formFields = INDIVIDUAL_ORGANIZATION_B_FORM_FIELDS; + contactTypeOptions = INDIVIDUAL_ORGANIZATION; title = LabelUtils.get(ScheduleBTransactionTypeLabels, ScheduleBTransactionTypes.REFUND_INDIVIDUAL_CONTRIBUTION_VOID); schema = schema; override negativeAmountValueOnly = true; override showAggregate = false; override isRefund = true; - override contactTypeOptions = [ContactTypes.INDIVIDUAL, ContactTypes.ORGANIZATION]; override navigationControls: TransactionNavigationControls = STANDARD_CONTROLS; getNewTransaction() { diff --git a/front-end/src/app/shared/models/transaction-types/REFUND_PAC_CONTRIBUTION.model.spec.ts b/front-end/src/app/shared/models/transaction-types/REFUND_PAC_CONTRIBUTION.model.spec.ts index 769ff27bea..dad71f5666 100644 --- a/front-end/src/app/shared/models/transaction-types/REFUND_PAC_CONTRIBUTION.model.spec.ts +++ b/front-end/src/app/shared/models/transaction-types/REFUND_PAC_CONTRIBUTION.model.spec.ts @@ -1,5 +1,4 @@ import { SchBTransaction, ScheduleBTransactionTypes } from '../schb-transaction.model'; -import { TransactionGroupE } from '../transaction-groups/transaction-group-e.model'; import { REFUND_PAC_CONTRIBUTION } from './REFUND_PAC_CONTRIBUTION.model'; describe('REFUND_PAC_CONTRIBUTION', () => { @@ -12,7 +11,6 @@ describe('REFUND_PAC_CONTRIBUTION', () => { it('should create an instance', () => { expect(transactionType).toBeTruthy(); expect(transactionType.scheduleId).toBe('B'); - expect(transactionType.transactionGroup).toBeInstanceOf(TransactionGroupE); }); it('#factory() should return a SchBTransaction', () => { diff --git a/front-end/src/app/shared/models/transaction-types/REFUND_PAC_CONTRIBUTION.model.ts b/front-end/src/app/shared/models/transaction-types/REFUND_PAC_CONTRIBUTION.model.ts index 492a8d5553..d2cb07cfcd 100644 --- a/front-end/src/app/shared/models/transaction-types/REFUND_PAC_CONTRIBUTION.model.ts +++ b/front-end/src/app/shared/models/transaction-types/REFUND_PAC_CONTRIBUTION.model.ts @@ -2,12 +2,13 @@ import { LabelUtils } from 'app/shared/utils/label.utils'; import { schema } from 'fecfile-validate/fecfile_validate_js/dist/PARTY_PAC_REFUNDS'; import { SchBTransactionType } from '../schb-transaction-type.model'; import { SchBTransaction, ScheduleBTransactionTypeLabels, ScheduleBTransactionTypes } from '../schb-transaction.model'; -import { TransactionGroupE } from '../transaction-groups/transaction-group-e.model'; import { STANDARD_CONTROLS, TransactionNavigationControls } from '../transaction-navigation-controls.model'; import { AggregationGroups } from '../transaction.model'; +import { COMMITTEE, COMMITTEE_B_FORM_FIELDS } from 'app/shared/utils/transaction-type-properties'; export class REFUND_PAC_CONTRIBUTION extends SchBTransactionType { - transactionGroup = new TransactionGroupE(); + formFields = COMMITTEE_B_FORM_FIELDS; + contactTypeOptions = COMMITTEE; title = LabelUtils.get(ScheduleBTransactionTypeLabels, ScheduleBTransactionTypes.REFUND_PAC_CONTRIBUTION); schema = schema; override showAggregate = false; diff --git a/front-end/src/app/shared/models/transaction-types/REFUND_PAC_CONTRIBUTION_VOID.model.spec.ts b/front-end/src/app/shared/models/transaction-types/REFUND_PAC_CONTRIBUTION_VOID.model.spec.ts index a25442bbcc..1dba2511ae 100644 --- a/front-end/src/app/shared/models/transaction-types/REFUND_PAC_CONTRIBUTION_VOID.model.spec.ts +++ b/front-end/src/app/shared/models/transaction-types/REFUND_PAC_CONTRIBUTION_VOID.model.spec.ts @@ -1,5 +1,4 @@ import { SchBTransaction, ScheduleBTransactionTypes } from '../schb-transaction.model'; -import { TransactionGroupE } from '../transaction-groups/transaction-group-e.model'; import { REFUND_PAC_CONTRIBUTION_VOID } from './REFUND_PAC_CONTRIBUTION_VOID.model'; describe('REFUND_PAC_CONTRIBUTION_VOID', () => { @@ -12,7 +11,6 @@ describe('REFUND_PAC_CONTRIBUTION_VOID', () => { it('should create an instance', () => { expect(transactionType).toBeTruthy(); expect(transactionType.scheduleId).toBe('B'); - expect(transactionType.transactionGroup).toBeInstanceOf(TransactionGroupE); }); it('#factory() should return a SchBTransaction', () => { diff --git a/front-end/src/app/shared/models/transaction-types/REFUND_PAC_CONTRIBUTION_VOID.model.ts b/front-end/src/app/shared/models/transaction-types/REFUND_PAC_CONTRIBUTION_VOID.model.ts index 08c647989a..4ef0f4c8d9 100644 --- a/front-end/src/app/shared/models/transaction-types/REFUND_PAC_CONTRIBUTION_VOID.model.ts +++ b/front-end/src/app/shared/models/transaction-types/REFUND_PAC_CONTRIBUTION_VOID.model.ts @@ -2,12 +2,13 @@ import { LabelUtils } from 'app/shared/utils/label.utils'; import { schema } from 'fecfile-validate/fecfile_validate_js/dist/PARTY_PAC_REFUNDS'; import { SchBTransactionType } from '../schb-transaction-type.model'; import { SchBTransaction, ScheduleBTransactionTypeLabels, ScheduleBTransactionTypes } from '../schb-transaction.model'; -import { TransactionGroupE } from '../transaction-groups/transaction-group-e.model'; import { STANDARD_CONTROLS, TransactionNavigationControls } from '../transaction-navigation-controls.model'; import { AggregationGroups } from '../transaction.model'; +import { COMMITTEE, COMMITTEE_B_FORM_FIELDS } from 'app/shared/utils/transaction-type-properties'; export class REFUND_PAC_CONTRIBUTION_VOID extends SchBTransactionType { - transactionGroup = new TransactionGroupE(); + formFields = COMMITTEE_B_FORM_FIELDS; + contactTypeOptions = COMMITTEE; title = LabelUtils.get(ScheduleBTransactionTypeLabels, ScheduleBTransactionTypes.REFUND_PAC_CONTRIBUTION_VOID); schema = schema; override showAggregate = false; diff --git a/front-end/src/app/shared/models/transaction-types/REFUND_PARTY_CONTRIBUTION.model.spec.ts b/front-end/src/app/shared/models/transaction-types/REFUND_PARTY_CONTRIBUTION.model.spec.ts index 242ecaf58e..3478984873 100644 --- a/front-end/src/app/shared/models/transaction-types/REFUND_PARTY_CONTRIBUTION.model.spec.ts +++ b/front-end/src/app/shared/models/transaction-types/REFUND_PARTY_CONTRIBUTION.model.spec.ts @@ -1,5 +1,4 @@ import { SchBTransaction, ScheduleBTransactionTypes } from '../schb-transaction.model'; -import { TransactionGroupE } from '../transaction-groups/transaction-group-e.model'; import { REFUND_PARTY_CONTRIBUTION } from './REFUND_PARTY_CONTRIBUTION.model'; describe('REFUND_PARTY_CONTRIBUTION', () => { @@ -12,7 +11,6 @@ describe('REFUND_PARTY_CONTRIBUTION', () => { it('should create an instance', () => { expect(transactionType).toBeTruthy(); expect(transactionType.scheduleId).toBe('B'); - expect(transactionType.transactionGroup).toBeInstanceOf(TransactionGroupE); }); it('#factory() should return a SchBTransaction', () => { diff --git a/front-end/src/app/shared/models/transaction-types/REFUND_PARTY_CONTRIBUTION.model.ts b/front-end/src/app/shared/models/transaction-types/REFUND_PARTY_CONTRIBUTION.model.ts index 40bd7c9b3d..1817370e64 100644 --- a/front-end/src/app/shared/models/transaction-types/REFUND_PARTY_CONTRIBUTION.model.ts +++ b/front-end/src/app/shared/models/transaction-types/REFUND_PARTY_CONTRIBUTION.model.ts @@ -2,12 +2,13 @@ import { LabelUtils } from 'app/shared/utils/label.utils'; import { schema } from 'fecfile-validate/fecfile_validate_js/dist/PARTY_PAC_REFUNDS'; import { SchBTransactionType } from '../schb-transaction-type.model'; import { SchBTransaction, ScheduleBTransactionTypeLabels, ScheduleBTransactionTypes } from '../schb-transaction.model'; -import { TransactionGroupE } from '../transaction-groups/transaction-group-e.model'; import { STANDARD_CONTROLS, TransactionNavigationControls } from '../transaction-navigation-controls.model'; import { AggregationGroups } from '../transaction.model'; +import { COMMITTEE, COMMITTEE_B_FORM_FIELDS } from 'app/shared/utils/transaction-type-properties'; export class REFUND_PARTY_CONTRIBUTION extends SchBTransactionType { - transactionGroup = new TransactionGroupE(); + formFields = COMMITTEE_B_FORM_FIELDS; + contactTypeOptions = COMMITTEE; title = LabelUtils.get(ScheduleBTransactionTypeLabels, ScheduleBTransactionTypes.REFUND_PARTY_CONTRIBUTION); schema = schema; override showAggregate = false; diff --git a/front-end/src/app/shared/models/transaction-types/REFUND_PARTY_CONTRIBUTION_VOID.model.spec.ts b/front-end/src/app/shared/models/transaction-types/REFUND_PARTY_CONTRIBUTION_VOID.model.spec.ts index d0961ddd33..ec3d78dc64 100644 --- a/front-end/src/app/shared/models/transaction-types/REFUND_PARTY_CONTRIBUTION_VOID.model.spec.ts +++ b/front-end/src/app/shared/models/transaction-types/REFUND_PARTY_CONTRIBUTION_VOID.model.spec.ts @@ -1,5 +1,4 @@ import { SchBTransaction, ScheduleBTransactionTypes } from '../schb-transaction.model'; -import { TransactionGroupE } from '../transaction-groups/transaction-group-e.model'; import { REFUND_PARTY_CONTRIBUTION_VOID } from './REFUND_PARTY_CONTRIBUTION_VOID.model'; describe('REFUND_PARTY_CONTRIBUTION_VOID', () => { @@ -12,7 +11,6 @@ describe('REFUND_PARTY_CONTRIBUTION_VOID', () => { it('should create an instance', () => { expect(transactionType).toBeTruthy(); expect(transactionType.scheduleId).toBe('B'); - expect(transactionType.transactionGroup).toBeInstanceOf(TransactionGroupE); }); it('#factory() should return a SchBTransaction', () => { diff --git a/front-end/src/app/shared/models/transaction-types/REFUND_PARTY_CONTRIBUTION_VOID.model.ts b/front-end/src/app/shared/models/transaction-types/REFUND_PARTY_CONTRIBUTION_VOID.model.ts index 3c15bb011c..f60b55c774 100644 --- a/front-end/src/app/shared/models/transaction-types/REFUND_PARTY_CONTRIBUTION_VOID.model.ts +++ b/front-end/src/app/shared/models/transaction-types/REFUND_PARTY_CONTRIBUTION_VOID.model.ts @@ -2,12 +2,13 @@ import { LabelUtils } from 'app/shared/utils/label.utils'; import { schema } from 'fecfile-validate/fecfile_validate_js/dist/PARTY_PAC_REFUNDS'; import { SchBTransactionType } from '../schb-transaction-type.model'; import { SchBTransaction, ScheduleBTransactionTypeLabels, ScheduleBTransactionTypes } from '../schb-transaction.model'; -import { TransactionGroupE } from '../transaction-groups/transaction-group-e.model'; import { STANDARD_CONTROLS, TransactionNavigationControls } from '../transaction-navigation-controls.model'; import { AggregationGroups } from '../transaction.model'; +import { COMMITTEE, COMMITTEE_B_FORM_FIELDS } from 'app/shared/utils/transaction-type-properties'; export class REFUND_PARTY_CONTRIBUTION_VOID extends SchBTransactionType { - transactionGroup = new TransactionGroupE(); + formFields = COMMITTEE_B_FORM_FIELDS; + contactTypeOptions = COMMITTEE; title = LabelUtils.get(ScheduleBTransactionTypeLabels, ScheduleBTransactionTypes.REFUND_PARTY_CONTRIBUTION_VOID); schema = schema; override showAggregate = false; diff --git a/front-end/src/app/shared/models/transaction-types/REFUND_TO_FEDERAL_CANDIDATE.model.spec.ts b/front-end/src/app/shared/models/transaction-types/REFUND_TO_FEDERAL_CANDIDATE.model.spec.ts index 33df46a07b..d739f83c93 100644 --- a/front-end/src/app/shared/models/transaction-types/REFUND_TO_FEDERAL_CANDIDATE.model.spec.ts +++ b/front-end/src/app/shared/models/transaction-types/REFUND_TO_FEDERAL_CANDIDATE.model.spec.ts @@ -1,6 +1,5 @@ import { TransactionType } from 'app/shared/models/transaction-type.model'; import { SchATransaction, ScheduleATransactionTypes } from '../scha-transaction.model'; -import { TransactionGroupH } from '../transaction-groups/transaction-group-h.model'; import { REFUND_TO_FEDERAL_CANDIDATE } from './REFUND_TO_FEDERAL_CANDIDATE.model'; describe('REFUND_TO_FEDERAL_CANDIDATE', () => { @@ -13,7 +12,6 @@ describe('REFUND_TO_FEDERAL_CANDIDATE', () => { it('should create an instance', () => { expect(transactionType).toBeTruthy(); expect(transactionType.scheduleId).toBe('A'); - expect(transactionType.transactionGroup).toBeInstanceOf(TransactionGroupH); }); it('#factory() should return a SchATransaction', () => { diff --git a/front-end/src/app/shared/models/transaction-types/REFUND_TO_FEDERAL_CANDIDATE.model.ts b/front-end/src/app/shared/models/transaction-types/REFUND_TO_FEDERAL_CANDIDATE.model.ts index baa54e05de..52fd6bffac 100644 --- a/front-end/src/app/shared/models/transaction-types/REFUND_TO_FEDERAL_CANDIDATE.model.ts +++ b/front-end/src/app/shared/models/transaction-types/REFUND_TO_FEDERAL_CANDIDATE.model.ts @@ -2,15 +2,18 @@ import { LabelUtils } from 'app/shared/utils/label.utils'; import { schema } from 'fecfile-validate/fecfile_validate_js/dist/REFUND_TO_FEDERAL_CANDIDATE'; import { SchATransactionType } from '../scha-transaction-type.model'; import { SchATransaction, ScheduleATransactionTypeLabels, ScheduleATransactionTypes } from '../scha-transaction.model'; -import { TransactionGroupH } from '../transaction-groups/transaction-group-h.model'; import { STANDARD_CONTROLS, TransactionNavigationControls } from '../transaction-navigation-controls.model'; import { AggregationGroups } from '../transaction.model'; +import { COMMITTEE, COMMITTEE_WITH_CANDIDATE_FORM_FIELDS } from 'app/shared/utils/transaction-type-properties'; export class REFUND_TO_FEDERAL_CANDIDATE extends SchATransactionType { - transactionGroup = new TransactionGroupH(); + formFields = COMMITTEE_WITH_CANDIDATE_FORM_FIELDS; + contactTypeOptions = COMMITTEE; title = LabelUtils.get(ScheduleATransactionTypeLabels, ScheduleATransactionTypes.REFUND_TO_FEDERAL_CANDIDATE); schema = schema; + override hasCandidateCommittee = true; override navigationControls: TransactionNavigationControls = STANDARD_CONTROLS; + override contact2IsRequired = true; getNewTransaction() { return SchATransaction.fromJSON({ diff --git a/front-end/src/app/shared/models/transaction-types/REFUND_TO_OTHER_POLITICAL_COMMITTEE.model.spec.ts b/front-end/src/app/shared/models/transaction-types/REFUND_TO_OTHER_POLITICAL_COMMITTEE.model.spec.ts index a896df70b1..8def00d22b 100644 --- a/front-end/src/app/shared/models/transaction-types/REFUND_TO_OTHER_POLITICAL_COMMITTEE.model.spec.ts +++ b/front-end/src/app/shared/models/transaction-types/REFUND_TO_OTHER_POLITICAL_COMMITTEE.model.spec.ts @@ -1,6 +1,5 @@ import { TransactionType } from 'app/shared/models/transaction-type.model'; import { SchATransaction, ScheduleATransactionTypes } from '../scha-transaction.model'; -import { TransactionGroupI } from '../transaction-groups/transaction-group-i.model'; import { REFUND_TO_OTHER_POLITICAL_COMMITTEE } from './REFUND_TO_OTHER_POLITICAL_COMMITTEE.model'; describe('REFUND_TO_OTHER_POLITICAL_COMMITTEE', () => { @@ -13,7 +12,6 @@ describe('REFUND_TO_OTHER_POLITICAL_COMMITTEE', () => { it('should create an instance', () => { expect(transactionType).toBeTruthy(); expect(transactionType.scheduleId).toBe('A'); - expect(transactionType.transactionGroup).toBeInstanceOf(TransactionGroupI); }); it('#factory() should return a SchATransaction', () => { diff --git a/front-end/src/app/shared/models/transaction-types/REFUND_TO_OTHER_POLITICAL_COMMITTEE.model.ts b/front-end/src/app/shared/models/transaction-types/REFUND_TO_OTHER_POLITICAL_COMMITTEE.model.ts index ac16b6f965..8ae35698bf 100644 --- a/front-end/src/app/shared/models/transaction-types/REFUND_TO_OTHER_POLITICAL_COMMITTEE.model.ts +++ b/front-end/src/app/shared/models/transaction-types/REFUND_TO_OTHER_POLITICAL_COMMITTEE.model.ts @@ -2,12 +2,13 @@ import { LabelUtils } from 'app/shared/utils/label.utils'; import { schema } from 'fecfile-validate/fecfile_validate_js/dist/REFUND_TO_OTHER_POLITICAL_COMMITTEE'; import { SchATransactionType } from '../scha-transaction-type.model'; import { SchATransaction, ScheduleATransactionTypeLabels, ScheduleATransactionTypes } from '../scha-transaction.model'; -import { TransactionGroupI } from '../transaction-groups/transaction-group-i.model'; import { STANDARD_CONTROLS, TransactionNavigationControls } from '../transaction-navigation-controls.model'; import { AggregationGroups } from '../transaction.model'; +import { COMMITTEE, COMMITTEE_FORM_FIELDS } from 'app/shared/utils/transaction-type-properties'; export class REFUND_TO_OTHER_POLITICAL_COMMITTEE extends SchATransactionType { - transactionGroup = new TransactionGroupI(); + formFields = COMMITTEE_FORM_FIELDS; + contactTypeOptions = COMMITTEE; title = LabelUtils.get(ScheduleATransactionTypeLabels, ScheduleATransactionTypes.REFUND_TO_OTHER_POLITICAL_COMMITTEE); schema = schema; override navigationControls: TransactionNavigationControls = STANDARD_CONTROLS; diff --git a/front-end/src/app/shared/models/transaction-types/REFUND_TO_UNREGISTERED_COMMITTEE.model.spec.ts b/front-end/src/app/shared/models/transaction-types/REFUND_TO_UNREGISTERED_COMMITTEE.model.spec.ts index d17ee25992..77f8f691e4 100644 --- a/front-end/src/app/shared/models/transaction-types/REFUND_TO_UNREGISTERED_COMMITTEE.model.spec.ts +++ b/front-end/src/app/shared/models/transaction-types/REFUND_TO_UNREGISTERED_COMMITTEE.model.spec.ts @@ -1,7 +1,6 @@ import { REFUND_TO_UNREGISTERED_COMMITTEE } from './REFUND_TO_UNREGISTERED_COMMITTEE.model'; import { SchATransaction, ScheduleATransactionTypes } from '../scha-transaction.model'; import { TransactionType } from 'app/shared/models/transaction-type.model'; -import { TransactionGroupD } from '../transaction-groups/transaction-group-d.model'; describe('REFUND_TO_UNREGISTERED_COMMITTEE', () => { let transactionType: REFUND_TO_UNREGISTERED_COMMITTEE; @@ -13,7 +12,6 @@ describe('REFUND_TO_UNREGISTERED_COMMITTEE', () => { it('should create an instance', () => { expect(transactionType).toBeTruthy(); expect(transactionType.scheduleId).toBe('A'); - expect(transactionType.transactionGroup).toBeInstanceOf(TransactionGroupD); }); it('#factory() should return a SchATransaction', () => { diff --git a/front-end/src/app/shared/models/transaction-types/REFUND_TO_UNREGISTERED_COMMITTEE.model.ts b/front-end/src/app/shared/models/transaction-types/REFUND_TO_UNREGISTERED_COMMITTEE.model.ts index ded72349d1..b6d2276091 100644 --- a/front-end/src/app/shared/models/transaction-types/REFUND_TO_UNREGISTERED_COMMITTEE.model.ts +++ b/front-end/src/app/shared/models/transaction-types/REFUND_TO_UNREGISTERED_COMMITTEE.model.ts @@ -2,12 +2,13 @@ import { LabelUtils } from 'app/shared/utils/label.utils'; import { schema } from 'fecfile-validate/fecfile_validate_js/dist/REFUND_TO_UNREGISTERED_COMMITTEE'; import { SchATransactionType } from '../scha-transaction-type.model'; import { SchATransaction, ScheduleATransactionTypeLabels, ScheduleATransactionTypes } from '../scha-transaction.model'; -import { TransactionGroupD } from '../transaction-groups/transaction-group-d.model'; import { STANDARD_CONTROLS, TransactionNavigationControls } from '../transaction-navigation-controls.model'; import { AggregationGroups } from '../transaction.model'; +import { ORGANIZATION_FORM_FIELDS, ORGANIZATION } from 'app/shared/utils/transaction-type-properties'; export class REFUND_TO_UNREGISTERED_COMMITTEE extends SchATransactionType { - transactionGroup = new TransactionGroupD(); + formFields = ORGANIZATION_FORM_FIELDS; + contactTypeOptions = ORGANIZATION; title = LabelUtils.get(ScheduleATransactionTypeLabels, ScheduleATransactionTypes.REFUND_TO_UNREGISTERED_COMMITTEE); schema = schema; override navigationControls: TransactionNavigationControls = STANDARD_CONTROLS; diff --git a/front-end/src/app/shared/models/transaction-types/REFUND_UNREGISTERED_CONTRIBUTION.model.spec.ts b/front-end/src/app/shared/models/transaction-types/REFUND_UNREGISTERED_CONTRIBUTION.model.spec.ts index c2e70d2e05..f897d4832a 100644 --- a/front-end/src/app/shared/models/transaction-types/REFUND_UNREGISTERED_CONTRIBUTION.model.spec.ts +++ b/front-end/src/app/shared/models/transaction-types/REFUND_UNREGISTERED_CONTRIBUTION.model.spec.ts @@ -1,5 +1,4 @@ import { SchBTransaction, ScheduleBTransactionTypes } from '../schb-transaction.model'; -import { TransactionGroupD } from '../transaction-groups/transaction-group-d.model'; import { REFUND_UNREGISTERED_CONTRIBUTION } from './REFUND_UNREGISTERED_CONTRIBUTION.model'; describe('REFUND_UNREGISTERED_CONTRIBUTION', () => { @@ -12,7 +11,6 @@ describe('REFUND_UNREGISTERED_CONTRIBUTION', () => { it('should create an instance', () => { expect(transactionType).toBeTruthy(); expect(transactionType.scheduleId).toBe('B'); - expect(transactionType.transactionGroup).toBeInstanceOf(TransactionGroupD); }); it('#factory() should return a SchBTransaction', () => { diff --git a/front-end/src/app/shared/models/transaction-types/REFUND_UNREGISTERED_CONTRIBUTION.model.ts b/front-end/src/app/shared/models/transaction-types/REFUND_UNREGISTERED_CONTRIBUTION.model.ts index a7cba7d642..f834040274 100644 --- a/front-end/src/app/shared/models/transaction-types/REFUND_UNREGISTERED_CONTRIBUTION.model.ts +++ b/front-end/src/app/shared/models/transaction-types/REFUND_UNREGISTERED_CONTRIBUTION.model.ts @@ -2,12 +2,13 @@ import { LabelUtils } from 'app/shared/utils/label.utils'; import { schema } from 'fecfile-validate/fecfile_validate_js/dist/UNREGISTERED_REFUNDS'; import { SchBTransactionType } from '../schb-transaction-type.model'; import { SchBTransaction, ScheduleBTransactionTypeLabels, ScheduleBTransactionTypes } from '../schb-transaction.model'; -import { TransactionGroupD } from '../transaction-groups/transaction-group-d.model'; import { STANDARD_CONTROLS, TransactionNavigationControls } from '../transaction-navigation-controls.model'; import { AggregationGroups } from '../transaction.model'; +import { ORGANIZATION_B_FORM_FIELDS, ORGANIZATION } from 'app/shared/utils/transaction-type-properties'; export class REFUND_UNREGISTERED_CONTRIBUTION extends SchBTransactionType { - transactionGroup = new TransactionGroupD(); + formFields = ORGANIZATION_B_FORM_FIELDS; + contactTypeOptions = ORGANIZATION; title = LabelUtils.get(ScheduleBTransactionTypeLabels, ScheduleBTransactionTypes.REFUND_UNREGISTERED_CONTRIBUTION); schema = schema; override showAggregate = false; diff --git a/front-end/src/app/shared/models/transaction-types/REFUND_UNREGISTERED_CONTRIBUTION_VOID.model.spec.ts b/front-end/src/app/shared/models/transaction-types/REFUND_UNREGISTERED_CONTRIBUTION_VOID.model.spec.ts index a7e076a83d..d626f12e07 100644 --- a/front-end/src/app/shared/models/transaction-types/REFUND_UNREGISTERED_CONTRIBUTION_VOID.model.spec.ts +++ b/front-end/src/app/shared/models/transaction-types/REFUND_UNREGISTERED_CONTRIBUTION_VOID.model.spec.ts @@ -1,5 +1,4 @@ import { SchBTransaction, ScheduleBTransactionTypes } from '../schb-transaction.model'; -import { TransactionGroupD } from '../transaction-groups/transaction-group-d.model'; import { REFUND_UNREGISTERED_CONTRIBUTION_VOID } from './REFUND_UNREGISTERED_CONTRIBUTION_VOID.model'; describe('REFUND_UNREGISTERED_CONTRIBUTION_VOID', () => { @@ -12,7 +11,6 @@ describe('REFUND_UNREGISTERED_CONTRIBUTION_VOID', () => { it('should create an instance', () => { expect(transactionType).toBeTruthy(); expect(transactionType.scheduleId).toBe('B'); - expect(transactionType.transactionGroup).toBeInstanceOf(TransactionGroupD); }); it('#factory() should return a SchBTransaction', () => { diff --git a/front-end/src/app/shared/models/transaction-types/REFUND_UNREGISTERED_CONTRIBUTION_VOID.model.ts b/front-end/src/app/shared/models/transaction-types/REFUND_UNREGISTERED_CONTRIBUTION_VOID.model.ts index 7c6baf8875..4b7c8b5ae3 100644 --- a/front-end/src/app/shared/models/transaction-types/REFUND_UNREGISTERED_CONTRIBUTION_VOID.model.ts +++ b/front-end/src/app/shared/models/transaction-types/REFUND_UNREGISTERED_CONTRIBUTION_VOID.model.ts @@ -2,12 +2,13 @@ import { LabelUtils } from 'app/shared/utils/label.utils'; import { schema } from 'fecfile-validate/fecfile_validate_js/dist/UNREGISTERED_REFUNDS'; import { SchBTransactionType } from '../schb-transaction-type.model'; import { SchBTransaction, ScheduleBTransactionTypeLabels, ScheduleBTransactionTypes } from '../schb-transaction.model'; -import { TransactionGroupD } from '../transaction-groups/transaction-group-d.model'; import { STANDARD_CONTROLS, TransactionNavigationControls } from '../transaction-navigation-controls.model'; import { AggregationGroups } from '../transaction.model'; +import { ORGANIZATION_B_FORM_FIELDS, ORGANIZATION } from 'app/shared/utils/transaction-type-properties'; export class REFUND_UNREGISTERED_CONTRIBUTION_VOID extends SchBTransactionType { - transactionGroup = new TransactionGroupD(); + formFields = ORGANIZATION_B_FORM_FIELDS; + contactTypeOptions = ORGANIZATION; title = LabelUtils.get( ScheduleBTransactionTypeLabels, ScheduleBTransactionTypes.REFUND_UNREGISTERED_CONTRIBUTION_VOID diff --git a/front-end/src/app/shared/models/transaction-types/RETURN_RECEIPT.model.spec.ts b/front-end/src/app/shared/models/transaction-types/RETURN_RECEIPT.model.spec.ts index f2aac92139..6be5c098b3 100644 --- a/front-end/src/app/shared/models/transaction-types/RETURN_RECEIPT.model.spec.ts +++ b/front-end/src/app/shared/models/transaction-types/RETURN_RECEIPT.model.spec.ts @@ -1,6 +1,5 @@ import { TransactionType } from 'app/shared/models/transaction-type.model'; import { SchATransaction, ScheduleATransactionTypes } from '../scha-transaction.model'; -import { TransactionGroupC } from '../transaction-groups/transaction-group-c.model'; import { RETURN_RECEIPT } from './RETURN_RECEIPT.model'; describe('RETURN_RECEIPT', () => { @@ -13,7 +12,6 @@ describe('RETURN_RECEIPT', () => { it('should create an instance', () => { expect(transactionType).toBeTruthy(); expect(transactionType.scheduleId).toBe('A'); - expect(transactionType.transactionGroup).toBeInstanceOf(TransactionGroupC); }); it('#factory() should return a SchATransaction', () => { diff --git a/front-end/src/app/shared/models/transaction-types/RETURN_RECEIPT.model.ts b/front-end/src/app/shared/models/transaction-types/RETURN_RECEIPT.model.ts index 3ed8fe5cea..0487a2232a 100644 --- a/front-end/src/app/shared/models/transaction-types/RETURN_RECEIPT.model.ts +++ b/front-end/src/app/shared/models/transaction-types/RETURN_RECEIPT.model.ts @@ -1,18 +1,20 @@ import { LabelUtils } from 'app/shared/utils/label.utils'; import { schema } from 'fecfile-validate/fecfile_validate_js/dist/RETURN_RECEIPT'; -import { ContactTypes } from '../contact.model'; import { SchATransactionType } from '../scha-transaction-type.model'; import { SchATransaction, ScheduleATransactionTypeLabels, ScheduleATransactionTypes } from '../scha-transaction.model'; -import { TransactionGroupC } from '../transaction-groups/transaction-group-c.model'; import { STANDARD_CONTROLS, TransactionNavigationControls } from '../transaction-navigation-controls.model'; import { AggregationGroups } from '../transaction.model'; +import { + INDIVIDUAL_ORGANIZATION_WITH_EMPLOYEE_FORM_FIELDS, + INDIVIDUAL_ORGANIZATION_COMMITTEE, +} from 'app/shared/utils/transaction-type-properties'; export class RETURN_RECEIPT extends SchATransactionType { - transactionGroup = new TransactionGroupC(); + formFields = INDIVIDUAL_ORGANIZATION_WITH_EMPLOYEE_FORM_FIELDS; + contactTypeOptions = INDIVIDUAL_ORGANIZATION_COMMITTEE; title = LabelUtils.get(ScheduleATransactionTypeLabels, ScheduleATransactionTypes.RETURNED_BOUNCED_RECEIPT_INDIVIDUAL); schema = schema; override negativeAmountValueOnly = true; - override contactTypeOptions = [ContactTypes.INDIVIDUAL, ContactTypes.ORGANIZATION]; override navigationControls: TransactionNavigationControls = STANDARD_CONTROLS; getNewTransaction() { diff --git a/front-end/src/app/shared/models/transaction-types/TRANSFER.model.spec.ts b/front-end/src/app/shared/models/transaction-types/TRANSFER.model.spec.ts index d5f108d93a..67d68e4377 100644 --- a/front-end/src/app/shared/models/transaction-types/TRANSFER.model.spec.ts +++ b/front-end/src/app/shared/models/transaction-types/TRANSFER.model.spec.ts @@ -1,6 +1,5 @@ import { TransactionType } from 'app/shared/models/transaction-type.model'; import { SchATransaction, ScheduleATransactionTypes } from '../scha-transaction.model'; -import { TransactionGroupE } from '../transaction-groups/transaction-group-e.model'; import { TRANSFER } from './TRANSFER.model'; describe('TRANSFER', () => { @@ -13,7 +12,6 @@ describe('TRANSFER', () => { it('should create an instance', () => { expect(transactionType).toBeTruthy(); expect(transactionType.scheduleId).toBe('A'); - expect(transactionType.transactionGroup).toBeInstanceOf(TransactionGroupE); }); it('#factory() should return a SchATransaction', () => { diff --git a/front-end/src/app/shared/models/transaction-types/TRANSFER.model.ts b/front-end/src/app/shared/models/transaction-types/TRANSFER.model.ts index f6f5f9cb1b..ed488f39b4 100644 --- a/front-end/src/app/shared/models/transaction-types/TRANSFER.model.ts +++ b/front-end/src/app/shared/models/transaction-types/TRANSFER.model.ts @@ -2,12 +2,13 @@ import { LabelUtils } from 'app/shared/utils/label.utils'; import { schema } from 'fecfile-validate/fecfile_validate_js/dist/TRANSFER'; import { SchATransactionType } from '../scha-transaction-type.model'; import { SchATransaction, ScheduleATransactionTypeLabels, ScheduleATransactionTypes } from '../scha-transaction.model'; -import { TransactionGroupE } from '../transaction-groups/transaction-group-e.model'; import { STANDARD_CONTROLS, TransactionNavigationControls } from '../transaction-navigation-controls.model'; import { AggregationGroups } from '../transaction.model'; +import { COMMITTEE, COMMITTEE_FORM_FIELDS } from 'app/shared/utils/transaction-type-properties'; export class TRANSFER extends SchATransactionType { - transactionGroup = new TransactionGroupE(); + formFields = COMMITTEE_FORM_FIELDS; + contactTypeOptions = COMMITTEE; title = LabelUtils.get(ScheduleATransactionTypeLabels, ScheduleATransactionTypes.TRANSFER); schema = schema; override navigationControls: TransactionNavigationControls = STANDARD_CONTROLS; diff --git a/front-end/src/app/shared/models/transaction-types/TRANSFER_TO_AFFILIATES.model.spec.ts b/front-end/src/app/shared/models/transaction-types/TRANSFER_TO_AFFILIATES.model.spec.ts index 33af18ce45..1d9c0d4029 100644 --- a/front-end/src/app/shared/models/transaction-types/TRANSFER_TO_AFFILIATES.model.spec.ts +++ b/front-end/src/app/shared/models/transaction-types/TRANSFER_TO_AFFILIATES.model.spec.ts @@ -1,5 +1,4 @@ import { SchBTransaction, ScheduleBTransactionTypes } from '../schb-transaction.model'; -import { TransactionGroupE } from '../transaction-groups/transaction-group-e.model'; import { TRANSFER_TO_AFFILIATES } from './TRANSFER_TO_AFFILIATES.model'; describe('TRANSFER_TO_AFFILIATES', () => { @@ -12,7 +11,6 @@ describe('TRANSFER_TO_AFFILIATES', () => { it('should create an instance', () => { expect(transactionType).toBeTruthy(); expect(transactionType.scheduleId).toBe('B'); - expect(transactionType.transactionGroup).toBeInstanceOf(TransactionGroupE); }); it('#factory() should return a SchBTransaction', () => { diff --git a/front-end/src/app/shared/models/transaction-types/TRANSFER_TO_AFFILIATES.model.ts b/front-end/src/app/shared/models/transaction-types/TRANSFER_TO_AFFILIATES.model.ts index bb4ec5a810..82f00f4504 100644 --- a/front-end/src/app/shared/models/transaction-types/TRANSFER_TO_AFFILIATES.model.ts +++ b/front-end/src/app/shared/models/transaction-types/TRANSFER_TO_AFFILIATES.model.ts @@ -2,11 +2,12 @@ import { LabelUtils } from 'app/shared/utils/label.utils'; import { schema } from 'fecfile-validate/fecfile_validate_js/dist/TRANSFER_TO_AFFILIATES'; import { SchBTransactionType } from '../schb-transaction-type.model'; import { SchBTransaction, ScheduleBTransactionTypeLabels, ScheduleBTransactionTypes } from '../schb-transaction.model'; -import { TransactionGroupE } from '../transaction-groups/transaction-group-e.model'; import { STANDARD_CONTROLS, TransactionNavigationControls } from '../transaction-navigation-controls.model'; +import { COMMITTEE, COMMITTEE_B_FORM_FIELDS } from 'app/shared/utils/transaction-type-properties'; export class TRANSFER_TO_AFFILIATES extends SchBTransactionType { - transactionGroup = new TransactionGroupE(); + formFields = COMMITTEE_B_FORM_FIELDS; + contactTypeOptions = COMMITTEE; title = LabelUtils.get(ScheduleBTransactionTypeLabels, ScheduleBTransactionTypes.TRANSFER_TO_AFFILIATES); schema = schema; override showAggregate = false; diff --git a/front-end/src/app/shared/models/transaction-types/TRIBAL_JF_TRANSFER_MEMO.model.spec.ts b/front-end/src/app/shared/models/transaction-types/TRIBAL_JF_TRANSFER_MEMO.model.spec.ts index 8564fb9b02..482c271338 100644 --- a/front-end/src/app/shared/models/transaction-types/TRIBAL_JF_TRANSFER_MEMO.model.spec.ts +++ b/front-end/src/app/shared/models/transaction-types/TRIBAL_JF_TRANSFER_MEMO.model.spec.ts @@ -1,6 +1,5 @@ import { getTestTransactionByType } from 'app/shared/utils/unit-test.utils'; import { SchATransaction, ScheduleATransactionTypes } from '../scha-transaction.model'; -import { TransactionGroupD } from '../transaction-groups/transaction-group-d.model'; describe('TRIBAL_JF_TRANSFER_MEMO', () => { let transaction: SchATransaction; @@ -16,7 +15,6 @@ describe('TRIBAL_JF_TRANSFER_MEMO', () => { it('should create an instance', () => { expect(transaction.transactionType).toBeTruthy(); expect(transaction.transactionType?.scheduleId).toBe('A'); - expect(transaction?.transactionType?.transactionGroup).toBeInstanceOf(TransactionGroupD); }); it('#factory() should return a SchATransaction', () => { diff --git a/front-end/src/app/shared/models/transaction-types/TRIBAL_JF_TRANSFER_MEMO.model.ts b/front-end/src/app/shared/models/transaction-types/TRIBAL_JF_TRANSFER_MEMO.model.ts index fdf4000059..31719da371 100644 --- a/front-end/src/app/shared/models/transaction-types/TRIBAL_JF_TRANSFER_MEMO.model.ts +++ b/front-end/src/app/shared/models/transaction-types/TRIBAL_JF_TRANSFER_MEMO.model.ts @@ -2,12 +2,13 @@ import { LabelUtils } from 'app/shared/utils/label.utils'; import { schema } from 'fecfile-validate/fecfile_validate_js/dist/TRIBAL_JF_TRANSFER_MEMO'; import { SchATransactionType } from '../scha-transaction-type.model'; import { SchATransaction, ScheduleATransactionTypeLabels, ScheduleATransactionTypes } from '../scha-transaction.model'; -import { TransactionGroupD } from '../transaction-groups/transaction-group-d.model'; import { getChildNavigationControls, TransactionNavigationControls } from '../transaction-navigation-controls.model'; import { AggregationGroups } from '../transaction.model'; +import { ORGANIZATION_FORM_FIELDS, ORGANIZATION } from 'app/shared/utils/transaction-type-properties'; export class TRIBAL_JF_TRANSFER_MEMO extends SchATransactionType { - transactionGroup = new TransactionGroupD(); + formFields = ORGANIZATION_FORM_FIELDS; + contactTypeOptions = ORGANIZATION; title = LabelUtils.get(ScheduleATransactionTypeLabels, ScheduleATransactionTypes.TRIBAL_JF_TRANSFER_MEMO); override shortName = 'Tribal'; schema = schema; diff --git a/front-end/src/app/shared/models/transaction-types/TRIBAL_NATIONAL_PARTY_CONVENTION_ACCOUNT.model.spec.ts b/front-end/src/app/shared/models/transaction-types/TRIBAL_NATIONAL_PARTY_CONVENTION_ACCOUNT.model.spec.ts index 37a544c40a..4a136d58d8 100644 --- a/front-end/src/app/shared/models/transaction-types/TRIBAL_NATIONAL_PARTY_CONVENTION_ACCOUNT.model.spec.ts +++ b/front-end/src/app/shared/models/transaction-types/TRIBAL_NATIONAL_PARTY_CONVENTION_ACCOUNT.model.spec.ts @@ -1,6 +1,5 @@ import { TRIBAL_NATIONAL_PARTY_CONVENTION_ACCOUNT } from './TRIBAL_NATIONAL_PARTY_CONVENTION_ACCOUNT.model'; import { SchATransaction, ScheduleATransactionTypes } from '../scha-transaction.model'; -import { TransactionGroupD } from '../transaction-groups/transaction-group-d.model'; describe('TRIBAL_NATIONAL_PARTY_CONVENTION_ACCOUNT', () => { let transactionType: TRIBAL_NATIONAL_PARTY_CONVENTION_ACCOUNT; @@ -12,7 +11,6 @@ describe('TRIBAL_NATIONAL_PARTY_CONVENTION_ACCOUNT', () => { it('should create an instance', () => { expect(transactionType).toBeTruthy(); expect(transactionType.scheduleId).toBe('A'); - expect(transactionType.transactionGroup).toBeInstanceOf(TransactionGroupD); }); it('#factory() should return a SchATransaction', () => { diff --git a/front-end/src/app/shared/models/transaction-types/TRIBAL_NATIONAL_PARTY_CONVENTION_ACCOUNT.model.ts b/front-end/src/app/shared/models/transaction-types/TRIBAL_NATIONAL_PARTY_CONVENTION_ACCOUNT.model.ts index a341d7dcde..4b93ef8640 100644 --- a/front-end/src/app/shared/models/transaction-types/TRIBAL_NATIONAL_PARTY_CONVENTION_ACCOUNT.model.ts +++ b/front-end/src/app/shared/models/transaction-types/TRIBAL_NATIONAL_PARTY_CONVENTION_ACCOUNT.model.ts @@ -2,12 +2,13 @@ import { LabelUtils } from 'app/shared/utils/label.utils'; import { schema } from 'fecfile-validate/fecfile_validate_js/dist/TRIBAL_NATIONAL_PARTY_CONVENTION_ACCOUNT'; import { SchATransactionType } from '../scha-transaction-type.model'; import { SchATransaction, ScheduleATransactionTypeLabels, ScheduleATransactionTypes } from '../scha-transaction.model'; -import { TransactionGroupD } from '../transaction-groups/transaction-group-d.model'; import { STANDARD_CONTROLS, TransactionNavigationControls } from '../transaction-navigation-controls.model'; import { AggregationGroups } from '../transaction.model'; +import { ORGANIZATION_FORM_FIELDS, ORGANIZATION } from 'app/shared/utils/transaction-type-properties'; export class TRIBAL_NATIONAL_PARTY_CONVENTION_ACCOUNT extends SchATransactionType { - transactionGroup = new TransactionGroupD(); + formFields = ORGANIZATION_FORM_FIELDS; + contactTypeOptions = ORGANIZATION; title = LabelUtils.get( ScheduleATransactionTypeLabels, ScheduleATransactionTypes.TRIBAL_NATIONAL_PARTY_CONVENTION_ACCOUNT diff --git a/front-end/src/app/shared/models/transaction-types/TRIBAL_NATIONAL_PARTY_CONVENTION_JF_TRANSFER_MEMO.model.spec.ts b/front-end/src/app/shared/models/transaction-types/TRIBAL_NATIONAL_PARTY_CONVENTION_JF_TRANSFER_MEMO.model.spec.ts index ce7c817382..3485c36215 100644 --- a/front-end/src/app/shared/models/transaction-types/TRIBAL_NATIONAL_PARTY_CONVENTION_JF_TRANSFER_MEMO.model.spec.ts +++ b/front-end/src/app/shared/models/transaction-types/TRIBAL_NATIONAL_PARTY_CONVENTION_JF_TRANSFER_MEMO.model.spec.ts @@ -1,7 +1,6 @@ import { SchATransaction, ScheduleATransactionTypes } from '../scha-transaction.model'; import { Transaction } from '../transaction.model'; import { TransactionTypeUtils } from '../../utils/transaction-type.utils'; -import { TransactionGroupD } from '../transaction-groups/transaction-group-d.model'; describe('TRIBAL_NATIONAL_PARTY_CONVENTION_JF_TRANSFER_MEMO', () => { let transaction: Transaction; @@ -15,7 +14,6 @@ describe('TRIBAL_NATIONAL_PARTY_CONVENTION_JF_TRANSFER_MEMO', () => { it('should create an instance', () => { expect(transaction.transactionType).toBeTruthy(); expect(transaction.transactionType?.scheduleId).toBe('A'); - expect(transaction?.transactionType?.transactionGroup).toBeInstanceOf(TransactionGroupD); }); it('#factory() should return a SchATransaction', () => { diff --git a/front-end/src/app/shared/models/transaction-types/TRIBAL_NATIONAL_PARTY_CONVENTION_JF_TRANSFER_MEMO.model.ts b/front-end/src/app/shared/models/transaction-types/TRIBAL_NATIONAL_PARTY_CONVENTION_JF_TRANSFER_MEMO.model.ts index 4daa19364e..a385d26f9d 100644 --- a/front-end/src/app/shared/models/transaction-types/TRIBAL_NATIONAL_PARTY_CONVENTION_JF_TRANSFER_MEMO.model.ts +++ b/front-end/src/app/shared/models/transaction-types/TRIBAL_NATIONAL_PARTY_CONVENTION_JF_TRANSFER_MEMO.model.ts @@ -2,12 +2,13 @@ import { LabelUtils } from 'app/shared/utils/label.utils'; import { schema } from 'fecfile-validate/fecfile_validate_js/dist/TRIBAL_NATIONAL_PARTY_CONVENTION_JF_TRANSFER_MEMO'; import { SchATransactionType } from '../scha-transaction-type.model'; import { SchATransaction, ScheduleATransactionTypeLabels, ScheduleATransactionTypes } from '../scha-transaction.model'; -import { TransactionGroupD } from '../transaction-groups/transaction-group-d.model'; import { getChildNavigationControls, TransactionNavigationControls } from '../transaction-navigation-controls.model'; import { AggregationGroups } from '../transaction.model'; +import { ORGANIZATION_FORM_FIELDS, ORGANIZATION } from 'app/shared/utils/transaction-type-properties'; export class TRIBAL_NATIONAL_PARTY_CONVENTION_JF_TRANSFER_MEMO extends SchATransactionType { - transactionGroup = new TransactionGroupD(); + formFields = ORGANIZATION_FORM_FIELDS; + contactTypeOptions = ORGANIZATION; title = LabelUtils.get( ScheduleATransactionTypeLabels, ScheduleATransactionTypes.TRIBAL_NATIONAL_PARTY_CONVENTION_JF_TRANSFER_MEMO diff --git a/front-end/src/app/shared/models/transaction-types/TRIBAL_NATIONAL_PARTY_HEADQUARTERS_ACCOUNT.model.spec.ts b/front-end/src/app/shared/models/transaction-types/TRIBAL_NATIONAL_PARTY_HEADQUARTERS_ACCOUNT.model.spec.ts index ad8bbf1c56..30ad64d312 100644 --- a/front-end/src/app/shared/models/transaction-types/TRIBAL_NATIONAL_PARTY_HEADQUARTERS_ACCOUNT.model.spec.ts +++ b/front-end/src/app/shared/models/transaction-types/TRIBAL_NATIONAL_PARTY_HEADQUARTERS_ACCOUNT.model.spec.ts @@ -1,6 +1,5 @@ import { TRIBAL_NATIONAL_PARTY_HEADQUARTERS_ACCOUNT } from './TRIBAL_NATIONAL_PARTY_HEADQUARTERS_ACCOUNT.model'; import { SchATransaction, ScheduleATransactionTypes } from '../scha-transaction.model'; -import { TransactionGroupD } from '../transaction-groups/transaction-group-d.model'; describe('TRIBAL_NATIONAL_PARTY_HEADQUARTERS_BUILDINGS_ACCOUNT', () => { let transactionType: TRIBAL_NATIONAL_PARTY_HEADQUARTERS_ACCOUNT; @@ -12,7 +11,6 @@ describe('TRIBAL_NATIONAL_PARTY_HEADQUARTERS_BUILDINGS_ACCOUNT', () => { it('should create an instance', () => { expect(transactionType).toBeTruthy(); expect(transactionType.scheduleId).toBe('A'); - expect(transactionType.transactionGroup).toBeInstanceOf(TransactionGroupD); }); it('#factory() should return a SchATransaction', () => { diff --git a/front-end/src/app/shared/models/transaction-types/TRIBAL_NATIONAL_PARTY_HEADQUARTERS_ACCOUNT.model.ts b/front-end/src/app/shared/models/transaction-types/TRIBAL_NATIONAL_PARTY_HEADQUARTERS_ACCOUNT.model.ts index 152710fc19..33f3a60722 100644 --- a/front-end/src/app/shared/models/transaction-types/TRIBAL_NATIONAL_PARTY_HEADQUARTERS_ACCOUNT.model.ts +++ b/front-end/src/app/shared/models/transaction-types/TRIBAL_NATIONAL_PARTY_HEADQUARTERS_ACCOUNT.model.ts @@ -2,12 +2,13 @@ import { LabelUtils } from 'app/shared/utils/label.utils'; import { schema } from 'fecfile-validate/fecfile_validate_js/dist/TRIBAL_NATIONAL_PARTY_HEADQUARTERS_ACCOUNT'; import { SchATransactionType } from '../scha-transaction-type.model'; import { SchATransaction, ScheduleATransactionTypeLabels, ScheduleATransactionTypes } from '../scha-transaction.model'; -import { TransactionGroupD } from '../transaction-groups/transaction-group-d.model'; import { STANDARD_CONTROLS, TransactionNavigationControls } from '../transaction-navigation-controls.model'; import { AggregationGroups } from '../transaction.model'; +import { ORGANIZATION_FORM_FIELDS, ORGANIZATION } from 'app/shared/utils/transaction-type-properties'; export class TRIBAL_NATIONAL_PARTY_HEADQUARTERS_ACCOUNT extends SchATransactionType { - transactionGroup = new TransactionGroupD(); + formFields = ORGANIZATION_FORM_FIELDS; + contactTypeOptions = ORGANIZATION; title = LabelUtils.get( ScheduleATransactionTypeLabels, ScheduleATransactionTypes.TRIBAL_NATIONAL_PARTY_HEADQUARTERS_ACCOUNT diff --git a/front-end/src/app/shared/models/transaction-types/TRIBAL_NATIONAL_PARTY_HEADQUARTERS_JF_TRANSFER_MEMO.model.spec.ts b/front-end/src/app/shared/models/transaction-types/TRIBAL_NATIONAL_PARTY_HEADQUARTERS_JF_TRANSFER_MEMO.model.spec.ts index ffae063c7b..2885bcd660 100644 --- a/front-end/src/app/shared/models/transaction-types/TRIBAL_NATIONAL_PARTY_HEADQUARTERS_JF_TRANSFER_MEMO.model.spec.ts +++ b/front-end/src/app/shared/models/transaction-types/TRIBAL_NATIONAL_PARTY_HEADQUARTERS_JF_TRANSFER_MEMO.model.spec.ts @@ -1,7 +1,6 @@ import { SchATransaction, ScheduleATransactionTypes } from '../scha-transaction.model'; import { Transaction } from '../transaction.model'; import { getTestTransactionByType } from 'app/shared/utils/unit-test.utils'; -import { TransactionGroupD } from '../transaction-groups/transaction-group-d.model'; describe('TRIBAL_NATIONAL_PARTY_HEADQUARTERS_JF_TRANSFER_MEMO', () => { const transaction: Transaction = getTestTransactionByType( @@ -11,7 +10,6 @@ describe('TRIBAL_NATIONAL_PARTY_HEADQUARTERS_JF_TRANSFER_MEMO', () => { it('should create an instance', () => { expect(transaction.transactionType).toBeTruthy(); expect(transaction.transactionType?.scheduleId).toBe('A'); - expect(transaction?.transactionType?.transactionGroup).toBeInstanceOf(TransactionGroupD); }); it('#factory() should return a SchATransaction', () => { diff --git a/front-end/src/app/shared/models/transaction-types/TRIBAL_NATIONAL_PARTY_HEADQUARTERS_JF_TRANSFER_MEMO.model.ts b/front-end/src/app/shared/models/transaction-types/TRIBAL_NATIONAL_PARTY_HEADQUARTERS_JF_TRANSFER_MEMO.model.ts index 09d856df32..d7022c478d 100644 --- a/front-end/src/app/shared/models/transaction-types/TRIBAL_NATIONAL_PARTY_HEADQUARTERS_JF_TRANSFER_MEMO.model.ts +++ b/front-end/src/app/shared/models/transaction-types/TRIBAL_NATIONAL_PARTY_HEADQUARTERS_JF_TRANSFER_MEMO.model.ts @@ -2,12 +2,13 @@ import { LabelUtils } from 'app/shared/utils/label.utils'; import { schema } from 'fecfile-validate/fecfile_validate_js/dist/TRIBAL_NATIONAL_PARTY_HEADQUARTERS_JF_TRANSFER_MEMO'; import { SchATransactionType } from '../scha-transaction-type.model'; import { SchATransaction, ScheduleATransactionTypeLabels, ScheduleATransactionTypes } from '../scha-transaction.model'; -import { TransactionGroupD } from '../transaction-groups/transaction-group-d.model'; import { getChildNavigationControls, TransactionNavigationControls } from '../transaction-navigation-controls.model'; import { AggregationGroups } from '../transaction.model'; +import { ORGANIZATION_FORM_FIELDS, ORGANIZATION } from 'app/shared/utils/transaction-type-properties'; export class TRIBAL_NATIONAL_PARTY_HEADQUARTERS_JF_TRANSFER_MEMO extends SchATransactionType { - transactionGroup = new TransactionGroupD(); + formFields = ORGANIZATION_FORM_FIELDS; + contactTypeOptions = ORGANIZATION; title = LabelUtils.get( ScheduleATransactionTypeLabels, ScheduleATransactionTypes.TRIBAL_NATIONAL_PARTY_HEADQUARTERS_JF_TRANSFER_MEMO diff --git a/front-end/src/app/shared/models/transaction-types/TRIBAL_NATIONAL_PARTY_RECOUNT_ACCOUNT.model.spec.ts b/front-end/src/app/shared/models/transaction-types/TRIBAL_NATIONAL_PARTY_RECOUNT_ACCOUNT.model.spec.ts index 869400622f..9b96224301 100644 --- a/front-end/src/app/shared/models/transaction-types/TRIBAL_NATIONAL_PARTY_RECOUNT_ACCOUNT.model.spec.ts +++ b/front-end/src/app/shared/models/transaction-types/TRIBAL_NATIONAL_PARTY_RECOUNT_ACCOUNT.model.spec.ts @@ -1,6 +1,5 @@ import { TRIBAL_NATIONAL_PARTY_RECOUNT_ACCOUNT } from './TRIBAL_NATIONAL_PARTY_RECOUNT_ACCOUNT.model'; import { SchATransaction, ScheduleATransactionTypes } from '../scha-transaction.model'; -import { TransactionGroupD } from '../transaction-groups/transaction-group-d.model'; describe('TRIBAL_NATIONAL_PARTY_RECOUNT_ACCOUNT', () => { let transactionType: TRIBAL_NATIONAL_PARTY_RECOUNT_ACCOUNT; @@ -12,7 +11,6 @@ describe('TRIBAL_NATIONAL_PARTY_RECOUNT_ACCOUNT', () => { it('should create an instance', () => { expect(transactionType).toBeTruthy(); expect(transactionType.scheduleId).toBe('A'); - expect(transactionType.transactionGroup).toBeInstanceOf(TransactionGroupD); }); it('#factory() should return a SchATransaction', () => { diff --git a/front-end/src/app/shared/models/transaction-types/TRIBAL_NATIONAL_PARTY_RECOUNT_ACCOUNT.model.ts b/front-end/src/app/shared/models/transaction-types/TRIBAL_NATIONAL_PARTY_RECOUNT_ACCOUNT.model.ts index e3de708192..cbe6487ee4 100644 --- a/front-end/src/app/shared/models/transaction-types/TRIBAL_NATIONAL_PARTY_RECOUNT_ACCOUNT.model.ts +++ b/front-end/src/app/shared/models/transaction-types/TRIBAL_NATIONAL_PARTY_RECOUNT_ACCOUNT.model.ts @@ -2,12 +2,13 @@ import { LabelUtils } from 'app/shared/utils/label.utils'; import { schema } from 'fecfile-validate/fecfile_validate_js/dist/TRIBAL_NATIONAL_PARTY_RECOUNT_ACCOUNT'; import { SchATransactionType } from '../scha-transaction-type.model'; import { SchATransaction, ScheduleATransactionTypeLabels, ScheduleATransactionTypes } from '../scha-transaction.model'; -import { TransactionGroupD } from '../transaction-groups/transaction-group-d.model'; import { STANDARD_CONTROLS, TransactionNavigationControls } from '../transaction-navigation-controls.model'; import { AggregationGroups } from '../transaction.model'; +import { ORGANIZATION_FORM_FIELDS, ORGANIZATION } from 'app/shared/utils/transaction-type-properties'; export class TRIBAL_NATIONAL_PARTY_RECOUNT_ACCOUNT extends SchATransactionType { - transactionGroup = new TransactionGroupD(); + formFields = ORGANIZATION_FORM_FIELDS; + contactTypeOptions = ORGANIZATION; title = LabelUtils.get( ScheduleATransactionTypeLabels, ScheduleATransactionTypes.TRIBAL_NATIONAL_PARTY_RECOUNT_ACCOUNT diff --git a/front-end/src/app/shared/models/transaction-types/TRIBAL_NATIONAL_PARTY_RECOUNT_JF_TRANSFER_MEMO.model.spec.ts b/front-end/src/app/shared/models/transaction-types/TRIBAL_NATIONAL_PARTY_RECOUNT_JF_TRANSFER_MEMO.model.spec.ts index 38fda8570e..c2248f0ca8 100644 --- a/front-end/src/app/shared/models/transaction-types/TRIBAL_NATIONAL_PARTY_RECOUNT_JF_TRANSFER_MEMO.model.spec.ts +++ b/front-end/src/app/shared/models/transaction-types/TRIBAL_NATIONAL_PARTY_RECOUNT_JF_TRANSFER_MEMO.model.spec.ts @@ -1,7 +1,6 @@ import { SchATransaction, ScheduleATransactionTypes } from '../scha-transaction.model'; import { Transaction } from '../transaction.model'; import { getTestTransactionByType } from 'app/shared/utils/unit-test.utils'; -import { TransactionGroupD } from '../transaction-groups/transaction-group-d.model'; describe('TRIBAL_NATIONAL_PARTY_RECOUNT_JF_TRANSFER_MEMO', () => { let transaction: Transaction; @@ -13,7 +12,6 @@ describe('TRIBAL_NATIONAL_PARTY_RECOUNT_JF_TRANSFER_MEMO', () => { it('should create an instance', () => { expect(transaction.transactionType).toBeTruthy(); expect(transaction.transactionType?.scheduleId).toBe('A'); - expect(transaction.transactionType?.transactionGroup).toBeInstanceOf(TransactionGroupD); }); it('#factory() should return a SchATransaction', () => { diff --git a/front-end/src/app/shared/models/transaction-types/TRIBAL_NATIONAL_PARTY_RECOUNT_JF_TRANSFER_MEMO.model.ts b/front-end/src/app/shared/models/transaction-types/TRIBAL_NATIONAL_PARTY_RECOUNT_JF_TRANSFER_MEMO.model.ts index d5e2938796..5f4c35100d 100644 --- a/front-end/src/app/shared/models/transaction-types/TRIBAL_NATIONAL_PARTY_RECOUNT_JF_TRANSFER_MEMO.model.ts +++ b/front-end/src/app/shared/models/transaction-types/TRIBAL_NATIONAL_PARTY_RECOUNT_JF_TRANSFER_MEMO.model.ts @@ -2,12 +2,13 @@ import { LabelUtils } from 'app/shared/utils/label.utils'; import { schema } from 'fecfile-validate/fecfile_validate_js/dist/TRIBAL_NATIONAL_PARTY_RECOUNT_JF_TRANSFER_MEMO'; import { SchATransactionType } from '../scha-transaction-type.model'; import { SchATransaction, ScheduleATransactionTypeLabels, ScheduleATransactionTypes } from '../scha-transaction.model'; -import { TransactionGroupD } from '../transaction-groups/transaction-group-d.model'; import { getChildNavigationControls, TransactionNavigationControls } from '../transaction-navigation-controls.model'; import { AggregationGroups } from '../transaction.model'; +import { ORGANIZATION_FORM_FIELDS, ORGANIZATION } from 'app/shared/utils/transaction-type-properties'; export class TRIBAL_NATIONAL_PARTY_RECOUNT_JF_TRANSFER_MEMO extends SchATransactionType { - transactionGroup = new TransactionGroupD(); + formFields = ORGANIZATION_FORM_FIELDS; + contactTypeOptions = ORGANIZATION; title = LabelUtils.get( ScheduleATransactionTypeLabels, ScheduleATransactionTypes.TRIBAL_NATIONAL_PARTY_RECOUNT_JF_TRANSFER_MEMO diff --git a/front-end/src/app/shared/models/transaction-types/TRIBAL_RECEIPT.model.spec.ts b/front-end/src/app/shared/models/transaction-types/TRIBAL_RECEIPT.model.spec.ts index 3a6549419c..89cf466289 100644 --- a/front-end/src/app/shared/models/transaction-types/TRIBAL_RECEIPT.model.spec.ts +++ b/front-end/src/app/shared/models/transaction-types/TRIBAL_RECEIPT.model.spec.ts @@ -1,5 +1,4 @@ import { SchATransaction, ScheduleATransactionTypes } from '../scha-transaction.model'; -import { TransactionGroupD } from '../transaction-groups/transaction-group-d.model'; import { TRIBAL_RECEIPT } from './TRIBAL_RECEIPT.model'; describe('TRIBAL_RECEIPT', () => { @@ -12,7 +11,6 @@ describe('TRIBAL_RECEIPT', () => { it('should create an instance', () => { expect(transactionType).toBeTruthy(); expect(transactionType.scheduleId).toBe('A'); - expect(transactionType.transactionGroup).toBeInstanceOf(TransactionGroupD); }); it('#factory() should return a SchATransaction', () => { diff --git a/front-end/src/app/shared/models/transaction-types/TRIBAL_RECEIPT.model.ts b/front-end/src/app/shared/models/transaction-types/TRIBAL_RECEIPT.model.ts index 3703d2f838..5efaaa4ea1 100644 --- a/front-end/src/app/shared/models/transaction-types/TRIBAL_RECEIPT.model.ts +++ b/front-end/src/app/shared/models/transaction-types/TRIBAL_RECEIPT.model.ts @@ -2,12 +2,13 @@ import { LabelUtils } from 'app/shared/utils/label.utils'; import { schema } from 'fecfile-validate/fecfile_validate_js/dist/TRIBAL_RECEIPT'; import { SchATransactionType } from '../scha-transaction-type.model'; import { SchATransaction, ScheduleATransactionTypeLabels, ScheduleATransactionTypes } from '../scha-transaction.model'; -import { TransactionGroupD } from '../transaction-groups/transaction-group-d.model'; import { STANDARD_CONTROLS, TransactionNavigationControls } from '../transaction-navigation-controls.model'; import { AggregationGroups } from '../transaction.model'; +import { ORGANIZATION_FORM_FIELDS, ORGANIZATION } from 'app/shared/utils/transaction-type-properties'; export class TRIBAL_RECEIPT extends SchATransactionType { - transactionGroup = new TransactionGroupD(); + formFields = ORGANIZATION_FORM_FIELDS; + contactTypeOptions = ORGANIZATION; title = LabelUtils.get(ScheduleATransactionTypeLabels, ScheduleATransactionTypes.TRIBAL_RECEIPT); schema = schema; override navigationControls: TransactionNavigationControls = STANDARD_CONTROLS; diff --git a/front-end/src/app/shared/models/transaction-types/TRIBAL_RECOUNT_RECEIPT.model.spec.ts b/front-end/src/app/shared/models/transaction-types/TRIBAL_RECOUNT_RECEIPT.model.spec.ts index a0da30892d..e3bab0ceec 100644 --- a/front-end/src/app/shared/models/transaction-types/TRIBAL_RECOUNT_RECEIPT.model.spec.ts +++ b/front-end/src/app/shared/models/transaction-types/TRIBAL_RECOUNT_RECEIPT.model.spec.ts @@ -1,5 +1,4 @@ import { SchATransaction, ScheduleATransactionTypes } from '../scha-transaction.model'; -import { TransactionGroupD } from '../transaction-groups/transaction-group-d.model'; import { TRIBAL_RECOUNT_RECEIPT } from './TRIBAL_RECOUNT_RECEIPT.model'; describe('TRIBAL_RECOUNT_RECEIPT', () => { @@ -12,7 +11,6 @@ describe('TRIBAL_RECOUNT_RECEIPT', () => { it('should create an instance', () => { expect(transactionType).toBeTruthy(); expect(transactionType.scheduleId).toBe('A'); - expect(transactionType.transactionGroup).toBeInstanceOf(TransactionGroupD); }); it('#factory() should return a SchATransaction', () => { diff --git a/front-end/src/app/shared/models/transaction-types/TRIBAL_RECOUNT_RECEIPT.model.ts b/front-end/src/app/shared/models/transaction-types/TRIBAL_RECOUNT_RECEIPT.model.ts index 2a38ff8833..d2a715cea2 100644 --- a/front-end/src/app/shared/models/transaction-types/TRIBAL_RECOUNT_RECEIPT.model.ts +++ b/front-end/src/app/shared/models/transaction-types/TRIBAL_RECOUNT_RECEIPT.model.ts @@ -2,12 +2,13 @@ import { LabelUtils } from 'app/shared/utils/label.utils'; import { schema } from 'fecfile-validate/fecfile_validate_js/dist/TRIBAL_RECOUNT_RECEIPT'; import { SchATransactionType } from '../scha-transaction-type.model'; import { SchATransaction, ScheduleATransactionTypeLabels, ScheduleATransactionTypes } from '../scha-transaction.model'; -import { TransactionGroupD } from '../transaction-groups/transaction-group-d.model'; import { STANDARD_CONTROLS, TransactionNavigationControls } from '../transaction-navigation-controls.model'; import { AggregationGroups } from '../transaction.model'; +import { ORGANIZATION_FORM_FIELDS, ORGANIZATION } from 'app/shared/utils/transaction-type-properties'; export class TRIBAL_RECOUNT_RECEIPT extends SchATransactionType { - transactionGroup = new TransactionGroupD(); + formFields = ORGANIZATION_FORM_FIELDS; + contactTypeOptions = ORGANIZATION; title = LabelUtils.get(ScheduleATransactionTypeLabels, ScheduleATransactionTypes.TRIBAL_RECOUNT_RECEIPT); schema = schema; override navigationControls: TransactionNavigationControls = STANDARD_CONTROLS; diff --git a/front-end/src/app/shared/models/transaction-types/TRIBAL_REFUND_NP_CONVENTION_ACCOUNT.model.spec.ts b/front-end/src/app/shared/models/transaction-types/TRIBAL_REFUND_NP_CONVENTION_ACCOUNT.model.spec.ts index b277839aa1..6b4140b431 100644 --- a/front-end/src/app/shared/models/transaction-types/TRIBAL_REFUND_NP_CONVENTION_ACCOUNT.model.spec.ts +++ b/front-end/src/app/shared/models/transaction-types/TRIBAL_REFUND_NP_CONVENTION_ACCOUNT.model.spec.ts @@ -1,5 +1,4 @@ import { SchBTransaction, ScheduleBTransactionTypes } from '../schb-transaction.model'; -import { TransactionGroupD } from '../transaction-groups/transaction-group-d.model'; import { TRIBAL_REFUND_NP_CONVENTION_ACCOUNT } from './TRIBAL_REFUND_NP_CONVENTION_ACCOUNT.model'; describe('TRIBAL_REFUND_NP_CONVENTION_ACCOUNT', () => { @@ -12,7 +11,6 @@ describe('TRIBAL_REFUND_NP_CONVENTION_ACCOUNT', () => { it('should create an instance', () => { expect(transactionType).toBeTruthy(); expect(transactionType.scheduleId).toBe('B'); - expect(transactionType.transactionGroup).toBeInstanceOf(TransactionGroupD); }); it('#factory() should return a SchBTransaction', () => { diff --git a/front-end/src/app/shared/models/transaction-types/TRIBAL_REFUND_NP_CONVENTION_ACCOUNT.model.ts b/front-end/src/app/shared/models/transaction-types/TRIBAL_REFUND_NP_CONVENTION_ACCOUNT.model.ts index 169454d8b6..7fc762d4cd 100644 --- a/front-end/src/app/shared/models/transaction-types/TRIBAL_REFUND_NP_CONVENTION_ACCOUNT.model.ts +++ b/front-end/src/app/shared/models/transaction-types/TRIBAL_REFUND_NP_CONVENTION_ACCOUNT.model.ts @@ -2,12 +2,13 @@ import { LabelUtils } from 'app/shared/utils/label.utils'; import { schema } from 'fecfile-validate/fecfile_validate_js/dist/NATIONAL_PARTY_TRIBAL_REFUNDS'; import { SchBTransactionType } from '../schb-transaction-type.model'; import { SchBTransaction, ScheduleBTransactionTypeLabels, ScheduleBTransactionTypes } from '../schb-transaction.model'; -import { TransactionGroupD } from '../transaction-groups/transaction-group-d.model'; import { STANDARD_CONTROLS, TransactionNavigationControls } from '../transaction-navigation-controls.model'; import { AggregationGroups } from '../transaction.model'; +import { ORGANIZATION_B_FORM_FIELDS, ORGANIZATION } from 'app/shared/utils/transaction-type-properties'; export class TRIBAL_REFUND_NP_CONVENTION_ACCOUNT extends SchBTransactionType { - transactionGroup = new TransactionGroupD(); + formFields = ORGANIZATION_B_FORM_FIELDS; + contactTypeOptions = ORGANIZATION; title = LabelUtils.get(ScheduleBTransactionTypeLabels, ScheduleBTransactionTypes.TRIBAL_REFUND_NP_CONVENTION_ACCOUNT); schema = schema; override showAggregate = false; diff --git a/front-end/src/app/shared/models/transaction-types/TRIBAL_REFUND_NP_HEADQUARTERS_ACCOUNT.model.spec.ts b/front-end/src/app/shared/models/transaction-types/TRIBAL_REFUND_NP_HEADQUARTERS_ACCOUNT.model.spec.ts index e96a7f5512..f47ff77bbf 100644 --- a/front-end/src/app/shared/models/transaction-types/TRIBAL_REFUND_NP_HEADQUARTERS_ACCOUNT.model.spec.ts +++ b/front-end/src/app/shared/models/transaction-types/TRIBAL_REFUND_NP_HEADQUARTERS_ACCOUNT.model.spec.ts @@ -1,5 +1,4 @@ import { SchBTransaction, ScheduleBTransactionTypes } from '../schb-transaction.model'; -import { TransactionGroupD } from '../transaction-groups/transaction-group-d.model'; import { TRIBAL_REFUND_NP_HEADQUARTERS_ACCOUNT } from './TRIBAL_REFUND_NP_HEADQUARTERS_ACCOUNT.model'; describe('TRIBAL_REFUND_NP_HEADQUARTERS_ACCOUNT', () => { @@ -12,7 +11,6 @@ describe('TRIBAL_REFUND_NP_HEADQUARTERS_ACCOUNT', () => { it('should create an instance', () => { expect(transactionType).toBeTruthy(); expect(transactionType.scheduleId).toBe('B'); - expect(transactionType.transactionGroup).toBeInstanceOf(TransactionGroupD); }); it('#factory() should return a SchBTransaction', () => { diff --git a/front-end/src/app/shared/models/transaction-types/TRIBAL_REFUND_NP_HEADQUARTERS_ACCOUNT.model.ts b/front-end/src/app/shared/models/transaction-types/TRIBAL_REFUND_NP_HEADQUARTERS_ACCOUNT.model.ts index 2453ba3840..85b977fb15 100644 --- a/front-end/src/app/shared/models/transaction-types/TRIBAL_REFUND_NP_HEADQUARTERS_ACCOUNT.model.ts +++ b/front-end/src/app/shared/models/transaction-types/TRIBAL_REFUND_NP_HEADQUARTERS_ACCOUNT.model.ts @@ -2,12 +2,13 @@ import { LabelUtils } from 'app/shared/utils/label.utils'; import { schema } from 'fecfile-validate/fecfile_validate_js/dist/NATIONAL_PARTY_TRIBAL_REFUNDS'; import { SchBTransactionType } from '../schb-transaction-type.model'; import { SchBTransaction, ScheduleBTransactionTypeLabels, ScheduleBTransactionTypes } from '../schb-transaction.model'; -import { TransactionGroupD } from '../transaction-groups/transaction-group-d.model'; import { STANDARD_CONTROLS, TransactionNavigationControls } from '../transaction-navigation-controls.model'; import { AggregationGroups } from '../transaction.model'; +import { ORGANIZATION_B_FORM_FIELDS, ORGANIZATION } from 'app/shared/utils/transaction-type-properties'; export class TRIBAL_REFUND_NP_HEADQUARTERS_ACCOUNT extends SchBTransactionType { - transactionGroup = new TransactionGroupD(); + formFields = ORGANIZATION_B_FORM_FIELDS; + contactTypeOptions = ORGANIZATION; title = LabelUtils.get( ScheduleBTransactionTypeLabels, ScheduleBTransactionTypes.TRIBAL_REFUND_NP_HEADQUARTERS_ACCOUNT diff --git a/front-end/src/app/shared/models/transaction-types/TRIBAL_REFUND_NP_RECOUNT_ACCOUNT.model.spec.ts b/front-end/src/app/shared/models/transaction-types/TRIBAL_REFUND_NP_RECOUNT_ACCOUNT.model.spec.ts index fb713f03b4..ca67e40174 100644 --- a/front-end/src/app/shared/models/transaction-types/TRIBAL_REFUND_NP_RECOUNT_ACCOUNT.model.spec.ts +++ b/front-end/src/app/shared/models/transaction-types/TRIBAL_REFUND_NP_RECOUNT_ACCOUNT.model.spec.ts @@ -1,5 +1,4 @@ import { SchBTransaction, ScheduleBTransactionTypes } from '../schb-transaction.model'; -import { TransactionGroupD } from '../transaction-groups/transaction-group-d.model'; import { TRIBAL_REFUND_NP_RECOUNT_ACCOUNT } from './TRIBAL_REFUND_NP_RECOUNT_ACCOUNT.model'; describe('TRIBAL_REFUND_NP_RECOUNT_ACCOUNT', () => { @@ -12,7 +11,6 @@ describe('TRIBAL_REFUND_NP_RECOUNT_ACCOUNT', () => { it('should create an instance', () => { expect(transactionType).toBeTruthy(); expect(transactionType.scheduleId).toBe('B'); - expect(transactionType.transactionGroup).toBeInstanceOf(TransactionGroupD); }); it('#factory() should return a SchBTransaction', () => { diff --git a/front-end/src/app/shared/models/transaction-types/TRIBAL_REFUND_NP_RECOUNT_ACCOUNT.model.ts b/front-end/src/app/shared/models/transaction-types/TRIBAL_REFUND_NP_RECOUNT_ACCOUNT.model.ts index 49773eb6aa..1967b28754 100644 --- a/front-end/src/app/shared/models/transaction-types/TRIBAL_REFUND_NP_RECOUNT_ACCOUNT.model.ts +++ b/front-end/src/app/shared/models/transaction-types/TRIBAL_REFUND_NP_RECOUNT_ACCOUNT.model.ts @@ -2,12 +2,13 @@ import { LabelUtils } from 'app/shared/utils/label.utils'; import { schema } from 'fecfile-validate/fecfile_validate_js/dist/NATIONAL_PARTY_TRIBAL_REFUNDS'; import { SchBTransactionType } from '../schb-transaction-type.model'; import { SchBTransaction, ScheduleBTransactionTypeLabels, ScheduleBTransactionTypes } from '../schb-transaction.model'; -import { TransactionGroupD } from '../transaction-groups/transaction-group-d.model'; import { STANDARD_CONTROLS, TransactionNavigationControls } from '../transaction-navigation-controls.model'; import { AggregationGroups } from '../transaction.model'; +import { ORGANIZATION_B_FORM_FIELDS, ORGANIZATION } from 'app/shared/utils/transaction-type-properties'; export class TRIBAL_REFUND_NP_RECOUNT_ACCOUNT extends SchBTransactionType { - transactionGroup = new TransactionGroupD(); + formFields = ORGANIZATION_B_FORM_FIELDS; + contactTypeOptions = ORGANIZATION; title = LabelUtils.get(ScheduleBTransactionTypeLabels, ScheduleBTransactionTypes.TRIBAL_REFUND_NP_RECOUNT_ACCOUNT); schema = schema; override showAggregate = false; diff --git a/front-end/src/app/shared/models/transaction-types/UNREGISTERED_RECEIPT_FROM_PERSON.model.spec.ts b/front-end/src/app/shared/models/transaction-types/UNREGISTERED_RECEIPT_FROM_PERSON.model.spec.ts index 65efd2dc40..59597978e0 100644 --- a/front-end/src/app/shared/models/transaction-types/UNREGISTERED_RECEIPT_FROM_PERSON.model.spec.ts +++ b/front-end/src/app/shared/models/transaction-types/UNREGISTERED_RECEIPT_FROM_PERSON.model.spec.ts @@ -1,7 +1,6 @@ import { UNREGISTERED_RECEIPT_FROM_PERSON } from './UNREGISTERED_RECEIPT_FROM_PERSON.model'; import { SchATransaction, ScheduleATransactionTypes } from '../scha-transaction.model'; import { TransactionType } from 'app/shared/models/transaction-type.model'; -import { TransactionGroupD } from '../transaction-groups/transaction-group-d.model'; describe('UNREGISTERED_RECEIPT_FROM_PERSON', () => { let transactionType: UNREGISTERED_RECEIPT_FROM_PERSON; @@ -13,7 +12,6 @@ describe('UNREGISTERED_RECEIPT_FROM_PERSON', () => { it('should create an instance', () => { expect(transactionType).toBeTruthy(); expect(transactionType.scheduleId).toBe('A'); - expect(transactionType.transactionGroup).toBeInstanceOf(TransactionGroupD); }); it('#factory() should return a SchATransaction', () => { diff --git a/front-end/src/app/shared/models/transaction-types/UNREGISTERED_RECEIPT_FROM_PERSON.model.ts b/front-end/src/app/shared/models/transaction-types/UNREGISTERED_RECEIPT_FROM_PERSON.model.ts index a2cf49f024..bfba20d359 100644 --- a/front-end/src/app/shared/models/transaction-types/UNREGISTERED_RECEIPT_FROM_PERSON.model.ts +++ b/front-end/src/app/shared/models/transaction-types/UNREGISTERED_RECEIPT_FROM_PERSON.model.ts @@ -2,12 +2,13 @@ import { LabelUtils } from 'app/shared/utils/label.utils'; import { schema } from 'fecfile-validate/fecfile_validate_js/dist/UNREGISTERED_RECEIPT_FROM_PERSON'; import { SchATransactionType } from '../scha-transaction-type.model'; import { SchATransaction, ScheduleATransactionTypeLabels, ScheduleATransactionTypes } from '../scha-transaction.model'; -import { TransactionGroupD } from '../transaction-groups/transaction-group-d.model'; import { STANDARD_CONTROLS, TransactionNavigationControls } from '../transaction-navigation-controls.model'; import { AggregationGroups } from '../transaction.model'; +import { ORGANIZATION_FORM_FIELDS, ORGANIZATION } from 'app/shared/utils/transaction-type-properties'; export class UNREGISTERED_RECEIPT_FROM_PERSON extends SchATransactionType { - transactionGroup = new TransactionGroupD(); + formFields = ORGANIZATION_FORM_FIELDS; + contactTypeOptions = ORGANIZATION; title = LabelUtils.get(ScheduleATransactionTypeLabels, ScheduleATransactionTypes.UNREGISTERED_RECEIPT_FROM_PERSON); schema = schema; override navigationControls: TransactionNavigationControls = STANDARD_CONTROLS; diff --git a/front-end/src/app/shared/models/transaction-types/UNREGISTERED_RECEIPT_FROM_PERSON_RETURN.model.spec.ts b/front-end/src/app/shared/models/transaction-types/UNREGISTERED_RECEIPT_FROM_PERSON_RETURN.model.spec.ts index 0f7239cb21..a6ca2540bc 100644 --- a/front-end/src/app/shared/models/transaction-types/UNREGISTERED_RECEIPT_FROM_PERSON_RETURN.model.spec.ts +++ b/front-end/src/app/shared/models/transaction-types/UNREGISTERED_RECEIPT_FROM_PERSON_RETURN.model.spec.ts @@ -1,7 +1,6 @@ import { UNREGISTERED_RECEIPT_FROM_PERSON_RETURN } from './UNREGISTERED_RECEIPT_FROM_PERSON_RETURN.model'; import { SchATransaction, ScheduleATransactionTypes } from '../scha-transaction.model'; import { TransactionType } from 'app/shared/models/transaction-type.model'; -import { TransactionGroupD } from '../transaction-groups/transaction-group-d.model'; describe('UNREGISTERED_RECEIPT_FROM_PERSON_RETURN', () => { let transactionType: UNREGISTERED_RECEIPT_FROM_PERSON_RETURN; @@ -13,7 +12,6 @@ describe('UNREGISTERED_RECEIPT_FROM_PERSON_RETURN', () => { it('should create an instance', () => { expect(transactionType).toBeTruthy(); expect(transactionType.scheduleId).toBe('A'); - expect(transactionType.transactionGroup).toBeInstanceOf(TransactionGroupD); }); it('#factory() should return a SchATransaction', () => { diff --git a/front-end/src/app/shared/models/transaction-types/UNREGISTERED_RECEIPT_FROM_PERSON_RETURN.model.ts b/front-end/src/app/shared/models/transaction-types/UNREGISTERED_RECEIPT_FROM_PERSON_RETURN.model.ts index 8246ee29b4..9c502d12ce 100644 --- a/front-end/src/app/shared/models/transaction-types/UNREGISTERED_RECEIPT_FROM_PERSON_RETURN.model.ts +++ b/front-end/src/app/shared/models/transaction-types/UNREGISTERED_RECEIPT_FROM_PERSON_RETURN.model.ts @@ -2,12 +2,13 @@ import { LabelUtils } from 'app/shared/utils/label.utils'; import { schema } from 'fecfile-validate/fecfile_validate_js/dist/UNREGISTERED_RECEIPT_FROM_PERSON_RETURN'; import { SchATransactionType } from '../scha-transaction-type.model'; import { SchATransaction, ScheduleATransactionTypeLabels, ScheduleATransactionTypes } from '../scha-transaction.model'; -import { TransactionGroupD } from '../transaction-groups/transaction-group-d.model'; import { STANDARD_CONTROLS, TransactionNavigationControls } from '../transaction-navigation-controls.model'; import { AggregationGroups } from '../transaction.model'; +import { ORGANIZATION_FORM_FIELDS, ORGANIZATION } from 'app/shared/utils/transaction-type-properties'; export class UNREGISTERED_RECEIPT_FROM_PERSON_RETURN extends SchATransactionType { - transactionGroup = new TransactionGroupD(); + formFields = ORGANIZATION_FORM_FIELDS; + contactTypeOptions = ORGANIZATION; title = LabelUtils.get( ScheduleATransactionTypeLabels, ScheduleATransactionTypes.UNREGISTERED_RECEIPT_FROM_PERSON_RETURN diff --git a/front-end/src/app/shared/models/transaction-types/common-types/CONDUIT_EARMARK.model.ts b/front-end/src/app/shared/models/transaction-types/common-types/CONDUIT_EARMARK.model.ts new file mode 100644 index 0000000000..0160a6aba8 --- /dev/null +++ b/front-end/src/app/shared/models/transaction-types/common-types/CONDUIT_EARMARK.model.ts @@ -0,0 +1,26 @@ +import { SchATransactionType } from '../../scha-transaction-type.model'; +import { + STANDARD_DOUBLE_ENTRY_CONTROLS, + TransactionNavigationControls, +} from '../../transaction-navigation-controls.model'; +import { TemplateMapKeyType } from '../../transaction-type.model'; + +export abstract class CONDUIT_EARMARK extends SchATransactionType { + override navigationControls: TransactionNavigationControls = STANDARD_DOUBLE_ENTRY_CONTROLS; + override childTriggerFields = ['organization_name', 'last_name', 'first_name'] as TemplateMapKeyType[]; + override showAggregate = false; + override apiEndpoint = '/transactions/save-pair'; + override memoCodeMap = { + true: 'Undeposited', + false: 'Deposited', + }; + + override description = + 'This receipt type requires an associated transaction. Follow this two-step process to create both a conduit earmark receipt and a conduit earmark out:'; + override accordionTitle = 'STEP ONE'; + override accordionSubText = 'Add contact and receipt information'; + override formTitle = undefined; + override footer = undefined; + override contactTitle = 'Contact'; + override contactLookupLabel = 'CONTACT LOOKUP'; +} diff --git a/front-end/src/app/shared/models/transaction-types/common-types/CONDUIT_EARMARK_OUT.model.ts b/front-end/src/app/shared/models/transaction-types/common-types/CONDUIT_EARMARK_OUT.model.ts new file mode 100644 index 0000000000..504963b695 --- /dev/null +++ b/front-end/src/app/shared/models/transaction-types/common-types/CONDUIT_EARMARK_OUT.model.ts @@ -0,0 +1,17 @@ +import { TemplateMapKeyType } from '../../transaction-type.model'; +import { SchBTransactionType } from '../../schb-transaction-type.model'; + +export abstract class CONDUIT_EARMARK_OUT extends SchBTransactionType { + override isDependentChild = true; + override inheritedFields = ['amount', 'memo_code'] as TemplateMapKeyType[]; + override showAggregate = false; + override hasCandidateCommittee = true; + + override description = undefined; + override accordionTitle = 'STEP TWO'; + override accordionSubText = 'Add earmarked memo and conduit information (REQUIRED FOR CONDUIT EARMARKED RECEIPTS)'; + override formTitle = undefined; + override footer = undefined; + override contactTitle = 'Contact'; + override contactLookupLabel = 'CONTACT LOOKUP'; +} diff --git a/front-end/src/app/shared/models/transaction-types/common-types/EARMARK.model.ts b/front-end/src/app/shared/models/transaction-types/common-types/EARMARK.model.ts new file mode 100644 index 0000000000..e2a4056f23 --- /dev/null +++ b/front-end/src/app/shared/models/transaction-types/common-types/EARMARK.model.ts @@ -0,0 +1,23 @@ +import { INDIVIDUAL_FORM_FIELDS, INDIVIDUAL } from 'app/shared/utils/transaction-type-properties'; +import { SchATransactionType } from '../../scha-transaction-type.model'; +import { + STANDARD_DOUBLE_ENTRY_CONTROLS, + TransactionNavigationControls, +} from '../../transaction-navigation-controls.model'; +import { TemplateMapKeyType } from '../../transaction-type.model'; + +export abstract class EARMARK extends SchATransactionType { + override navigationControls: TransactionNavigationControls = STANDARD_DOUBLE_ENTRY_CONTROLS; + formFields = INDIVIDUAL_FORM_FIELDS; + contactTypeOptions = INDIVIDUAL; + override childTriggerFields = ['organization_name', 'last_name', 'first_name'] as TemplateMapKeyType[]; + + override description = + 'This type of receipt requires a memo transaction. Follow this two-step process to create both an earmark receipt and an earmark memo:'; + override accordionTitle = 'STEP ONE'; + override accordionSubText = 'Add receipt and contributor information'; + override formTitle = undefined; + override footer = undefined; + override contactTitle = 'Contact'; + override contactLookupLabel = 'CONTACT LOOKUP'; +} diff --git a/front-end/src/app/shared/models/transaction-types/common-types/EARMARK_MEMO.model.ts b/front-end/src/app/shared/models/transaction-types/common-types/EARMARK_MEMO.model.ts new file mode 100644 index 0000000000..052ebb6925 --- /dev/null +++ b/front-end/src/app/shared/models/transaction-types/common-types/EARMARK_MEMO.model.ts @@ -0,0 +1,22 @@ +import { COMMITTEE_INDIVIDUAL, INDIVIDUAL_COMMITTEE_FORM_FIELDS } from 'app/shared/utils/transaction-type-properties'; +import { SchATransactionType } from '../../scha-transaction-type.model'; +import { TemplateMapKeyType } from '../../transaction-type.model'; + +export abstract class EARMARK_MEMO extends SchATransactionType { + formFields = INDIVIDUAL_COMMITTEE_FORM_FIELDS; + contactTypeOptions = COMMITTEE_INDIVIDUAL; + + override inheritedFields = ['amount' as TemplateMapKeyType]; + override isDependentChild = true; + + override description = undefined; + override accordionTitle = 'STEP TWO'; + override accordionSubText = 'Add earmarked memo and conduit information (REQUIRED FOR EARMARKED RECEIPTS)'; + override formTitle = undefined; + override footer = undefined; + override contactTitle = 'Conduit'; + override contactLookupLabel = 'CONTACT LOOKUP'; + override generatePurposeDescription(): string { + return 'Total earmarked through conduit.'; + } +} diff --git a/front-end/src/app/shared/models/transaction-types/common-types/IN_KIND.model.ts b/front-end/src/app/shared/models/transaction-types/common-types/IN_KIND.model.ts new file mode 100644 index 0000000000..72e57c2006 --- /dev/null +++ b/front-end/src/app/shared/models/transaction-types/common-types/IN_KIND.model.ts @@ -0,0 +1,25 @@ +import { COMMITTEE, COMMITTEE_FORM_FIELDS } from 'app/shared/utils/transaction-type-properties'; +import { SchATransactionType } from '../../scha-transaction-type.model'; +import { + STANDARD_DOUBLE_ENTRY_CONTROLS, + TransactionNavigationControls, +} from '../../transaction-navigation-controls.model'; + +export abstract class IN_KIND extends SchATransactionType { + override apiEndpoint = '/transactions/save-pair'; + override navigationControls: TransactionNavigationControls = STANDARD_DOUBLE_ENTRY_CONTROLS; + formFields = COMMITTEE_FORM_FIELDS; + contactTypeOptions = COMMITTEE; + + override description = + 'This receipt type automatically creates an associated transaction. Saving an in-kind receipt will automatically create an in-kind out.'; // Prose describing transaction and filling out the form + override accordionTitle = 'ENTER DATA'; // Title for accordion handle (does not include subtext) + override accordionSubText = 'Add contact and receipt information'; // Text after title in accordion handle + override formTitle = undefined; // Title of form within accordion section + override footer = + 'The information in this receipt will automatically populate a related transaction. Review the associated disbursement or click "Save both transactions" to record these transactions.'; // Text at the end of form + override contactTitle = 'Contact'; // Title for primary contact + override contactLookupLabel = 'CONTACT LOOKUP'; //Label above contact lookup + + override purposeDescriptionPrefix = 'In-Kind: '; +} diff --git a/front-end/src/app/shared/models/transaction-types/common-types/IN_KIND_OUT.model.ts b/front-end/src/app/shared/models/transaction-types/common-types/IN_KIND_OUT.model.ts new file mode 100644 index 0000000000..2cd929f5f8 --- /dev/null +++ b/front-end/src/app/shared/models/transaction-types/common-types/IN_KIND_OUT.model.ts @@ -0,0 +1,18 @@ +import { COMMITTEE, COMMITTEE_B_FORM_FIELDS } from 'app/shared/utils/transaction-type-properties'; +import { SchBTransactionType } from '../../schb-transaction-type.model'; + +export abstract class IN_KIND_OUT extends SchBTransactionType { + override formFields = COMMITTEE_B_FORM_FIELDS; + contactTypeOptions = COMMITTEE; + override isDependentChild = true; + override showAggregate = false; + override useParentContact = true; + + override description = 'To update any errors found, return to the previous step to update the in-kind receipt.'; + override accordionTitle = 'AUTO-POPULATED'; + override accordionSubText = 'Review disbursement information'; + override formTitle = undefined; + override footer = undefined; + override contactTitle = 'Contact'; + override contactLookupLabel = 'CONTACT LOOKUP'; +} diff --git a/front-end/src/app/shared/models/transaction.model.spec.ts b/front-end/src/app/shared/models/transaction.model.spec.ts index 76cd87dead..167d2a5b08 100644 --- a/front-end/src/app/shared/models/transaction.model.spec.ts +++ b/front-end/src/app/shared/models/transaction.model.spec.ts @@ -13,7 +13,7 @@ describe('Transaction', () => { it('should update child purpose descriptions', () => { const testTransaction = getTestTransactionByType( - ScheduleATransactionTypes.PARTNERSHIP_MEMO, + ScheduleATransactionTypes.PARTNERSHIP_ATTRIBUTION, ScheduleATransactionTypes.PARTNERSHIP_RECEIPT ) as SchATransaction; diff --git a/front-end/src/app/shared/models/transaction.model.ts b/front-end/src/app/shared/models/transaction.model.ts index de84d6a071..da670c6616 100644 --- a/front-end/src/app/shared/models/transaction.model.ts +++ b/front-end/src/app/shared/models/transaction.model.ts @@ -58,8 +58,6 @@ export abstract class Transaction extends BaseModel { children: Transaction[] | undefined; - use_parent_contact: boolean | undefined; - fields_to_validate: string[] | undefined; // Fields to run through validation in the API when creating or updating a transaction getFieldsNotToValidate(): string[] { return ['transaction_id', 'filer_committee_id_number']; diff --git a/front-end/src/app/shared/resolvers/transaction.resolver.spec.ts b/front-end/src/app/shared/resolvers/transaction.resolver.spec.ts index 1c04494377..d5bc2e7e4b 100644 --- a/front-end/src/app/shared/resolvers/transaction.resolver.spec.ts +++ b/front-end/src/app/shared/resolvers/transaction.resolver.spec.ts @@ -188,9 +188,9 @@ describe('TransactionResolver', () => { return of( SchATransaction.fromJSON({ id: id, - transaction_type_identifier: ScheduleATransactionTypes.PARTNERSHIP_INDIVIDUAL_JF_TRANSFER_MEMO, + transaction_type_identifier: ScheduleATransactionTypes.PARTNERSHIP_ATTRIBUTION_JF_TRANSFER_MEMO, transactionType: TransactionTypeUtils.factory( - ScheduleATransactionTypes.PARTNERSHIP_INDIVIDUAL_JF_TRANSFER_MEMO + ScheduleATransactionTypes.PARTNERSHIP_ATTRIBUTION_JF_TRANSFER_MEMO ), contact_id: '123', contact_1: Contact.fromJSON({ id: 123 }), @@ -210,9 +210,9 @@ describe('TransactionResolver', () => { return of( SchATransaction.fromJSON({ id: id, - transaction_type_identifier: ScheduleATransactionTypes.PARTNERSHIP_INDIVIDUAL_JF_TRANSFER_MEMO, + transaction_type_identifier: ScheduleATransactionTypes.PARTNERSHIP_ATTRIBUTION_JF_TRANSFER_MEMO, transactionType: TransactionTypeUtils.factory( - ScheduleATransactionTypes.PARTNERSHIP_INDIVIDUAL_JF_TRANSFER_MEMO + ScheduleATransactionTypes.PARTNERSHIP_ATTRIBUTION_JF_TRANSFER_MEMO ), contact_id: '123', contact_1: Contact.fromJSON({ id: 123 }), @@ -224,9 +224,9 @@ describe('TransactionResolver', () => { return of( SchATransaction.fromJSON({ id: id, - transaction_type_identifier: ScheduleATransactionTypes.PARTNERSHIP_INDIVIDUAL_JF_TRANSFER_MEMO, + transaction_type_identifier: ScheduleATransactionTypes.PARTNERSHIP_ATTRIBUTION_JF_TRANSFER_MEMO, transactionType: TransactionTypeUtils.factory( - ScheduleATransactionTypes.PARTNERSHIP_INDIVIDUAL_JF_TRANSFER_MEMO + ScheduleATransactionTypes.PARTNERSHIP_ATTRIBUTION_JF_TRANSFER_MEMO ), contact_id: '123', contact_1: Contact.fromJSON({ id: 123 }), @@ -237,9 +237,9 @@ describe('TransactionResolver', () => { return of( SchATransaction.fromJSON({ id: id, - transaction_type_identifier: ScheduleATransactionTypes.PARTNERSHIP_INDIVIDUAL_JF_TRANSFER_MEMO, + transaction_type_identifier: ScheduleATransactionTypes.PARTNERSHIP_ATTRIBUTION_JF_TRANSFER_MEMO, transactionType: TransactionTypeUtils.factory( - ScheduleATransactionTypes.PARTNERSHIP_INDIVIDUAL_JF_TRANSFER_MEMO + ScheduleATransactionTypes.PARTNERSHIP_ATTRIBUTION_JF_TRANSFER_MEMO ), contact_id: '123', contact_1: Contact.fromJSON({ id: 123 }), diff --git a/front-end/src/app/shared/services/transaction.service.ts b/front-end/src/app/shared/services/transaction.service.ts index 5427e484b4..3be6aed51b 100644 --- a/front-end/src/app/shared/services/transaction.service.ts +++ b/front-end/src/app/shared/services/transaction.service.ts @@ -79,14 +79,14 @@ export class TransactionService implements TableListService { } public create(transaction: Transaction): Observable { - const payload = transaction.toJson(); + const payload = this.preparePayload(transaction); return this.apiService .post(`${transaction.transactionType?.apiEndpoint}/`, payload) .pipe(map((response) => getFromJSON(response))); } public update(transaction: Transaction): Observable { - const payload = transaction.toJson(); + const payload = this.preparePayload(transaction); return this.apiService .put(`${transaction.transactionType?.apiEndpoint}/${transaction.id}/`, payload) .pipe(map((response) => getFromJSON(response))); @@ -106,4 +106,34 @@ export class TransactionService implements TableListService { }) ); } + + /** + * Update and prepare a transaction payload as a JSON object to be received by the API. + * This involves removing excess properties such and transactionType while + * moving needed data points (such as schedule_id) to the top level of the payload. + * + * We do this here because otherwise we are redefining data values in the + * transaction model that we already have in the transactionType object + * @param transaction + */ + private preparePayload(transaction: Transaction) { + const payload = transaction.toJson(); + + // Add flags to the payload used for API processing + if (transaction.transactionType?.scheduleId) { + payload['schedule_id'] = transaction.transactionType.scheduleId; + } + if (transaction.transactionType?.useParentContact) { + payload['use_parent_contact'] = transaction.transactionType.useParentContact; + } + + delete payload['transactionType']; + delete payload['report']; + + if (transaction.children) { + payload['children'] = transaction.children.map(this.preparePayload); + } + + return payload; + } } diff --git a/front-end/src/app/shared/shared.module.ts b/front-end/src/app/shared/shared.module.ts index 6af433839f..7d58dd81a3 100644 --- a/front-end/src/app/shared/shared.module.ts +++ b/front-end/src/app/shared/shared.module.ts @@ -4,6 +4,7 @@ import { FormsModule, ReactiveFormsModule } from '@angular/forms'; import { AutoCompleteModule } from 'primeng/autocomplete'; import { AutoFocusModule } from 'primeng/autofocus'; import { ButtonModule } from 'primeng/button'; +import { RadioButtonModule } from 'primeng/radiobutton'; import { CalendarModule } from 'primeng/calendar'; import { CheckboxModule } from 'primeng/checkbox'; import { ConfirmDialogModule } from 'primeng/confirmdialog'; @@ -39,14 +40,17 @@ import { ReportCodeLabelPipe } from './utils/report-code.utils'; import { CalculationOverlayComponent } from './components/calculation-overlay/calculation-overlay.component'; import { CandidateInputComponent } from './components/inputs/candidate-input/candidate-input.component'; import { CandidateOfficeInputComponent } from './components/inputs/candidate-office-input/candidate-office-input.component'; -import { MemoCodeInputComponent } from './components/inputs/amount-input/memo-code/memo-code.component'; +import { MemoCodeInputComponent } from './components/inputs/memo-code/memo-code.component'; import { SelectButtonModule } from 'primeng/selectbutton'; +import { LoanInfoInputComponent } from './components/inputs/loan-info-input/loan-info-input.component'; +import { LoanTermsInputComponent } from './components/inputs/loan-terms-input/loan-terms-input.component'; @NgModule({ imports: [ CommonModule, ReactiveFormsModule, ButtonModule, + RadioButtonModule, SelectButtonModule, TooltipModule, DropdownModule, @@ -62,6 +66,7 @@ import { SelectButtonModule } from 'primeng/selectbutton'; DividerModule, ConfirmDialogModule, OverlayPanelModule, + ReactiveFormsModule, ], declarations: [ LabelPipe, @@ -91,6 +96,8 @@ import { SelectButtonModule } from 'primeng/selectbutton'; NavigationControlBarComponent, TableActionsButtonComponent, CalculationOverlayComponent, + LoanInfoInputComponent, + LoanTermsInputComponent, ], exports: [ FecDatePipe, @@ -117,6 +124,8 @@ import { SelectButtonModule } from 'primeng/selectbutton'; ElectionInputComponent, TableActionsButtonComponent, CalculationOverlayComponent, + LoanInfoInputComponent, + LoanTermsInputComponent, ], providers: [DatePipe], }) diff --git a/front-end/src/app/shared/utils/date.utils.spec.ts b/front-end/src/app/shared/utils/date.utils.spec.ts index 36a79e4717..7f5e86aa2e 100644 --- a/front-end/src/app/shared/utils/date.utils.spec.ts +++ b/front-end/src/app/shared/utils/date.utils.spec.ts @@ -16,6 +16,17 @@ describe('DateUtils', () => { expect(stringDate).toBe('1995-12-17'); }); + it('#convertDateToSlashFormat(date: Date | null) should return a MM/DD/YYYY string', () => { + const dateDate: Date = new Date('December 17, 1995 03:24:00'); + let stringDate: string | null | undefined; + + stringDate = DateUtils.convertDateToSlashFormat(null); + expect(stringDate).toBeNull(); + + stringDate = DateUtils.convertDateToSlashFormat(dateDate); + expect(stringDate).toBe('12/17/1995'); + }); + it('#areOverlapping should detect overlaps', () => { const januaryFirst = new Date('01/01/2023'); const januarySecond = new Date('01/02/2023'); diff --git a/front-end/src/app/shared/utils/date.utils.ts b/front-end/src/app/shared/utils/date.utils.ts index 4d16c65f3a..d5bb4a79b9 100644 --- a/front-end/src/app/shared/utils/date.utils.ts +++ b/front-end/src/app/shared/utils/date.utils.ts @@ -14,6 +14,18 @@ export class DateUtils { return DateTime.fromJSDate(date).toFormat('yyyy-MM-dd'); } + /** + * For given date, convert it to a string mm/dd/yyyy + * @param {Date} date + * @returns {string} mm/dd/yyyy formatted date string + */ + public static convertDateToSlashFormat(date: Date | null | undefined) { + if (!date) { + return date; + } + return DateTime.fromJSDate(date).toFormat('MM/dd/yyyy'); + } + /** * * @param date For given date string YYYYMMDD, return a Date object. diff --git a/front-end/src/app/shared/utils/label.utils.ts b/front-end/src/app/shared/utils/label.utils.ts index f70624c97f..2ff0f4594e 100644 --- a/front-end/src/app/shared/utils/label.utils.ts +++ b/front-end/src/app/shared/utils/label.utils.ts @@ -228,6 +228,7 @@ export const LineIdentifierLabels: LabelList = [ // Schedule A ['SA11A', '11(a)'], ['SA11AI', '11(a)(i)'], + ['SA11AII', '11(a)(ii)'], ['SA11B', '11(b)'], ['SA11C', '11(c)'], ['SA12', '12'], @@ -247,4 +248,7 @@ export const LineIdentifierLabels: LabelList = [ ['SB28C', '28(c)'], ['SB29', '29'], ['SB30B', '30(b)'], + // Schedule C + ['SC/10', '10'], + ['SC/9', '9'], ]; diff --git a/front-end/src/app/shared/utils/transaction-type-properties.ts b/front-end/src/app/shared/utils/transaction-type-properties.ts new file mode 100644 index 0000000000..8624562ff5 --- /dev/null +++ b/front-end/src/app/shared/utils/transaction-type-properties.ts @@ -0,0 +1,151 @@ +import { ContactTypeLabels, ContactTypes } from '../models/contact.model'; +import { LabelUtils } from './label.utils'; + +/** + * CONTACT TYPE OPTIONS + */ +export const INDIVIDUAL = [ContactTypes.INDIVIDUAL]; +export const ORGANIZATION = [ContactTypes.ORGANIZATION]; +export const COMMITTEE = [ContactTypes.COMMITTEE]; +export const COMMITTEE_INDIVIDUAL = [ContactTypes.COMMITTEE, ContactTypes.INDIVIDUAL]; +export const ORGANIZATION_INDIVIDUAL = [ContactTypes.ORGANIZATION, ContactTypes.INDIVIDUAL]; +export const INDIVIDUAL_ORGANIZATION = [ContactTypes.INDIVIDUAL, ContactTypes.ORGANIZATION]; +export const INDIVIDUAL_ORGANIZATION_COMMITTEE = [ + ContactTypes.INDIVIDUAL, + ContactTypes.ORGANIZATION, + ContactTypes.COMMITTEE, +]; +export const ORGANIZATION_INDIVIDUAL_COMMITTEE = [ + ContactTypes.ORGANIZATION, + ContactTypes.INDIVIDUAL, + ContactTypes.COMMITTEE, +]; + +export function getContactTypeOptions(contactTypes: ContactTypes[]) { + return LabelUtils.getPrimeOptions(ContactTypeLabels, contactTypes); +} + +/** + * FORM CONTROL PRESETS + */ + +export const CORE_FIELDS: string[] = [ + 'street_1', + 'street_2', + 'city', + 'state', + 'zip', + 'date', + 'amount', + 'purpose_description', + 'memo_code', + 'text4000', +]; + +export const AGGREGATE: string[] = ['aggregate']; + +export const INDIVIDUAL_FIELDS: string[] = ['last_name', 'first_name', 'middle_name', 'prefix', 'suffix']; + +export const ORG_FIELDS: string[] = ['organization_name']; + +export const COM_FIELDS: string[] = ['organization_name', 'committee_fec_id', 'committee_name']; + +export const EMPLOYEE_INFO_FIELDS: string[] = ['employer', 'occupation']; + +export const CANDIDATE_FIELDS: string[] = [ + 'candidate_fec_id', + 'candidate_last_name', + 'candidate_first_name', + 'candidate_middle_name', + 'candidate_prefix', + 'candidate_suffix', + 'candidate_office', + 'candidate_state', + 'candidate_district', +]; +export const CANDIDATE_OFFICE_FIELDS: string[] = ['candidate_office', 'candidate_state', 'candidate_district']; + +export const ELECTION_FIELDS: string[] = ['election_code', 'election_other_description']; + +export const CATEGORY_CODE: string[] = ['category_code']; + +export const LOAN_FINANCE_FIELDS: string[] = ['payment_to_date', 'balance']; +export const LOAN_TERMS_FIELDS: string[] = ['due_date', 'interest_rate', 'secured']; + +export function hasFields(formFields: string[], fieldsToHave: string[]): boolean { + return fieldsToHave.reduce((result, election_field) => result && formFields.includes(election_field), true); +} + +export const INDIVIDUAL_FORM_FIELDS = [...CORE_FIELDS, ...AGGREGATE, ...INDIVIDUAL_FIELDS, ...EMPLOYEE_INFO_FIELDS]; +export const INDIVIDUAL_B_FORM_FIELDS = [...CORE_FIELDS, ...AGGREGATE, ...INDIVIDUAL_FIELDS, ...CATEGORY_CODE]; +export const INDIVIDUAL_ORGANIZATION_FORM_FIELDS = [...CORE_FIELDS, ...AGGREGATE, ...INDIVIDUAL_FIELDS, ...ORG_FIELDS]; +export const INDIVIDUAL_ORGANIZATION_B_FORM_FIELDS = [ + ...CORE_FIELDS, + ...AGGREGATE, + ...INDIVIDUAL_FIELDS, + ...ORG_FIELDS, + ...CATEGORY_CODE, +]; +export const INDIVIDUAL_ORGANIZATION_WITH_EMPLOYEE_FORM_FIELDS = [ + ...CORE_FIELDS, + ...AGGREGATE, + ...INDIVIDUAL_FIELDS, + ...ORG_FIELDS, + ...EMPLOYEE_INFO_FIELDS, +]; +export const ORGANIZATION_FORM_FIELDS = [...CORE_FIELDS, ...AGGREGATE, ...ORG_FIELDS]; +export const ORGANIZATION_B_FORM_FIELDS = [...CORE_FIELDS, ...AGGREGATE, ...ORG_FIELDS, ...CATEGORY_CODE]; +export const COMMITTEE_FORM_FIELDS = [...CORE_FIELDS, ...AGGREGATE, ...COM_FIELDS]; +export const COMMITTEE_B_FORM_FIELDS = [...CORE_FIELDS, ...AGGREGATE, ...COM_FIELDS, ...CATEGORY_CODE]; +export const INDIVIDUAL_COMMITTEE_FORM_FIELDS = [ + ...CORE_FIELDS, + ...AGGREGATE, + ...INDIVIDUAL_FIELDS, + ...EMPLOYEE_INFO_FIELDS, + ...COM_FIELDS, +]; +export const COMMITTEE_WITH_CANDIDATE_FORM_FIELDS = [ + ...CORE_FIELDS, + ...AGGREGATE, + ...COM_FIELDS, + ...CANDIDATE_FIELDS, + ...CANDIDATE_OFFICE_FIELDS, +]; +export const COMMITTEE_WITH_CANDIDATE_AND_ELECTION_B_FORM_FIELDS = [ + ...CORE_FIELDS, + ...COM_FIELDS, + ...CANDIDATE_FIELDS, + ...CANDIDATE_OFFICE_FIELDS, + ...ELECTION_FIELDS, + ...CATEGORY_CODE, +]; +export const INDIVIDUAL_WITH_EMPLOYEE_B_FORM_FIELDS = [ + ...CORE_FIELDS, + ...INDIVIDUAL_FIELDS, + ...EMPLOYEE_INFO_FIELDS, + ...CATEGORY_CODE, +]; +export const INDIVIDUAL_ORGANIZATION_CANDIDATE_B_FORM_FIELDS = [ + ...CORE_FIELDS, + ...AGGREGATE, + ...INDIVIDUAL_FIELDS, + ...ORG_FIELDS, + ...CANDIDATE_FIELDS, + ...ELECTION_FIELDS, + ...CATEGORY_CODE, +]; +export const COMMITTEE_NO_AGGREGATE_FORM_FIELDS = [...CORE_FIELDS, ...COM_FIELDS]; +export const ORGANIZATION_NO_AGGREGATE_B_FORM_FIELDS = [ + ...CORE_FIELDS, + ...ORG_FIELDS, + ...ELECTION_FIELDS, + ...CATEGORY_CODE, +]; +export const INDIVIDUAL_ORGANIZATION_ELECTION_B_FORM_FIELDS = [ + ...CORE_FIELDS, + ...AGGREGATE, + ...INDIVIDUAL_FIELDS, + ...ORG_FIELDS, + ...ELECTION_FIELDS, + ...CATEGORY_CODE, +]; diff --git a/front-end/src/app/shared/utils/transaction-type.utils.spec.ts b/front-end/src/app/shared/utils/transaction-type.utils.spec.ts index 424ea117bc..4b5c244dcd 100644 --- a/front-end/src/app/shared/utils/transaction-type.utils.spec.ts +++ b/front-end/src/app/shared/utils/transaction-type.utils.spec.ts @@ -1,4 +1,4 @@ -import { TransactionTypeUtils } from './transaction-type.utils'; +import { TransactionTypeUtils, getFromJSON } from './transaction-type.utils'; describe('LabelUtils', () => { it('should create an instance', () => { @@ -10,4 +10,13 @@ describe('LabelUtils', () => { TransactionTypeUtils.factory('DOES_NOT_EXIST'); }).toThrow(new Error("Fecfile: Class transaction type of 'DOES_NOT_EXIST' is not found")); }); + + it('should return the correct schedule object given a scheduleId', () => { + const testJSON = { + transaction_type_identifier: 'LOAN_RECEIVED_FROM_INDIVIDUAL', + }; + + const scheduleObject = getFromJSON(testJSON); + expect(scheduleObject.constructor.name).toBe('SchCTransaction'); + }); }); diff --git a/front-end/src/app/shared/utils/transaction-type.utils.ts b/front-end/src/app/shared/utils/transaction-type.utils.ts index 2b4a921fb1..0bf101142e 100644 --- a/front-end/src/app/shared/utils/transaction-type.utils.ts +++ b/front-end/src/app/shared/utils/transaction-type.utils.ts @@ -1,5 +1,8 @@ import { SchATransaction } from 'app/shared/models/scha-transaction.model'; import { SchBTransaction } from '../models/schb-transaction.model'; +import { SchCTransaction } from '../models/schc-transaction.model'; +import { SchC1Transaction } from '../models/schc1-transaction.model'; +import { SchC2Transaction } from '../models/schc2-transaction.model'; import { ScheduleTransaction } from '../models/transaction.model'; // Schedule A ///////////////////////////////////////////////////// @@ -48,22 +51,22 @@ import { PAC_NATIONAL_PARTY_RECOUNT_JF_TRANSFER_MEMO } from '../models/transacti import { PAC_RECEIPT } from '../models/transaction-types/PAC_RECEIPT.model'; import { PAC_RECOUNT_RECEIPT } from '../models/transaction-types/PAC_RECOUNT_RECEIPT.model'; import { PAC_RETURN } from '../models/transaction-types/PAC_RETURN.model'; -import { PARTNERSHIP_INDIVIDUAL_JF_TRANSFER_MEMO } from '../models/transaction-types/PARTNERSHIP_INDIVIDUAL_JF_TRANSFER_MEMO.model'; -import { PARTNERSHIP_INDIVIDUAL_NATIONAL_PARTY_HEADQUARTERS_JF_TRANSFER_MEMO } from '../models/transaction-types/PARTNERSHIP_INDIVIDUAL_NATIONAL_PARTY_HEADQUARTERS_JF_TRANSFER_MEMO.model'; -import { PARTNERSHIP_INDIVIDUAL_NATIONAL_PARTY_RECOUNT_JF_TRANSFER_MEMO } from '../models/transaction-types/PARTNERSHIP_INDIVIDUAL_NATIONAL_PARTY_RECOUNT_JF_TRANSFER_MEMO.model'; +import { PARTNERSHIP_ATTRIBUTION_JF_TRANSFER_MEMO } from '../models/transaction-types/PARTNERSHIP_ATTRIBUTION_JF_TRANSFER_MEMO.model'; +import { PARTNERSHIP_ATTRIBUTION_NATIONAL_PARTY_HEADQUARTERS_JF_TRANSFER_MEMO } from '../models/transaction-types/PARTNERSHIP_ATTRIBUTION_NATIONAL_PARTY_HEADQUARTERS_JF_TRANSFER_MEMO.model'; +import { PARTNERSHIP_ATTRIBUTION_NATIONAL_PARTY_RECOUNT_JF_TRANSFER_MEMO } from '../models/transaction-types/PARTNERSHIP_ATTRIBUTION_NATIONAL_PARTY_RECOUNT_JF_TRANSFER_MEMO.model'; import { PARTNERSHIP_JF_TRANSFER_MEMO } from '../models/transaction-types/PARTNERSHIP_JF_TRANSFER_MEMO.model'; -import { PARTNERSHIP_MEMO } from '../models/transaction-types/PARTNERSHIP_MEMO.model'; +import { PARTNERSHIP_ATTRIBUTION } from '../models/transaction-types/PARTNERSHIP_ATTRIBUTION.model'; import { PARTNERSHIP_NATIONAL_PARTY_CONVENTION_ACCOUNT } from '../models/transaction-types/PARTNERSHIP_NATIONAL_PARTY_CONVENTION_ACCOUNT.model'; -import { PARTNERSHIP_NATIONAL_PARTY_CONVENTION_ACCOUNT_MEMO } from '../models/transaction-types/PARTNERSHIP_NATIONAL_PARTY_CONVENTION_ACCOUNT_MEMO.model'; +import { PARTNERSHIP_ATTRIBUTION_NATIONAL_PARTY_CONVENTION_ACCOUNT_MEMO } from '../models/transaction-types/PARTNERSHIP_ATTRIBUTION_NATIONAL_PARTY_CONVENTION_ACCOUNT_MEMO.model'; import { PARTNERSHIP_NATIONAL_PARTY_HEADQUARTERS_ACCOUNT } from '../models/transaction-types/PARTNERSHIP_NATIONAL_PARTY_HEADQUARTERS_ACCOUNT.model'; -import { PARTNERSHIP_NATIONAL_PARTY_HEADQUARTERS_ACCOUNT_MEMO } from '../models/transaction-types/PARTNERSHIP_NATIONAL_PARTY_HEADQUARTERS_ACCOUNT_MEMO.model'; +import { PARTNERSHIP_ATTRIBUTION_NATIONAL_PARTY_HEADQUARTERS_ACCOUNT_MEMO } from '../models/transaction-types/PARTNERSHIP_ATTRIBUTION_NATIONAL_PARTY_HEADQUARTERS_ACCOUNT_MEMO.model'; import { PARTNERSHIP_NATIONAL_PARTY_HEADQUARTERS_JF_TRANSFER_MEMO } from '../models/transaction-types/PARTNERSHIP_NATIONAL_PARTY_HEADQUARTERS_JF_TRANSFER_MEMO.model'; import { PARTNERSHIP_NATIONAL_PARTY_RECOUNT_ACCOUNT } from '../models/transaction-types/PARTNERSHIP_NATIONAL_PARTY_RECOUNT_ACCOUNT.model'; -import { PARTNERSHIP_NATIONAL_PARTY_RECOUNT_ACCOUNT_MEMO } from '../models/transaction-types/PARTNERSHIP_NATIONAL_PARTY_RECOUNT_ACCOUNT_MEMO.model'; +import { PARTNERSHIP_ATTRIBUTION_NATIONAL_PARTY_RECOUNT_ACCOUNT_MEMO } from '../models/transaction-types/PARTNERSHIP_ATTRIBUTION_NATIONAL_PARTY_RECOUNT_ACCOUNT_MEMO.model'; import { PARTNERSHIP_NATIONAL_PARTY_RECOUNT_JF_TRANSFER_MEMO } from '../models/transaction-types/PARTNERSHIP_NATIONAL_PARTY_RECOUNT_JF_TRANSFER_MEMO.model'; import { PARTNERSHIP_RECEIPT } from '../models/transaction-types/PARTNERSHIP_RECEIPT.model'; import { PARTNERSHIP_RECOUNT_ACCOUNT_RECEIPT } from '../models/transaction-types/PARTNERSHIP_RECOUNT_ACCOUNT_RECEIPT.model'; -import { PARTNERSHIP_RECOUNT_ACCOUNT_RECEIPT_MEMO } from '../models/transaction-types/PARTNERSHIP_RECOUNT_ACCOUNT_RECEIPT_MEMO.model'; +import { PARTNERSHIP_ATTRIBUTION_RECOUNT_ACCOUNT_RECEIPT_MEMO } from '../models/transaction-types/PARTNERSHIP_ATTRIBUTION_RECOUNT_ACCOUNT_RECEIPT_MEMO.model'; import { PARTY_IN_KIND_RECEIPT } from '../models/transaction-types/PARTY_IN_KIND_RECEIPT.model'; import { PARTY_JF_TRANSFER_MEMO } from '../models/transaction-types/PARTY_JF_TRANSFER_MEMO.model'; import { PARTY_NATIONAL_PARTY_CONVENTION_ACCOUNT } from '../models/transaction-types/PARTY_NATIONAL_PARTY_CONVENTION_ACCOUNT.model'; @@ -86,6 +89,7 @@ import { TRIBAL_RECEIPT } from '../models/transaction-types/TRIBAL_RECEIPT.model import { TRIBAL_RECOUNT_RECEIPT } from '../models/transaction-types/TRIBAL_RECOUNT_RECEIPT.model'; import { UNREGISTERED_RECEIPT_FROM_PERSON } from '../models/transaction-types/UNREGISTERED_RECEIPT_FROM_PERSON.model'; import { UNREGISTERED_RECEIPT_FROM_PERSON_RETURN } from '../models/transaction-types/UNREGISTERED_RECEIPT_FROM_PERSON_RETURN.model'; +import { LOAN_RECEIVED_FROM_INDIVIDUAL_RECEIPT } from '../models/transaction-types/LOAN_RECEIVED_FROM_INDIVIDUAL_RECEIPT.model'; // Schedule B ///////////////////////////////////////////////////// @@ -140,7 +144,7 @@ import { OTHER_DISBURSEMENT_STAFF_REIMBURSEMENT_MEMO } from '../models/transacti import { OTHER_DISBURSEMENT_VOID } from '../models/transaction-types/OTHER_DISBURSEMENT_VOID.model'; import { PAC_CONDUIT_EARMARK_OUT } from '../models/transaction-types/PAC_CONDUIT_EARMARK_OUT.model'; import { PAC_IN_KIND_OUT } from '../models/transaction-types/PAC_IN_KIND_OUT.model'; -import { PARTNERSHIP_INDIVIDUAL_NATIONAL_PARTY_CONVENTION_JF_TRANSFER_MEMO } from '../models/transaction-types/PARTNERSHIP_INDIVIDUAL_NATIONAL_PARTY_CONVENTION_JF_TRANSFER_MEMO.model'; +import { PARTNERSHIP_ATTRIBUTION_NATIONAL_PARTY_CONVENTION_JF_TRANSFER_MEMO } from '../models/transaction-types/PARTNERSHIP_ATTRIBUTION_NATIONAL_PARTY_CONVENTION_JF_TRANSFER_MEMO.model'; import { PARTNERSHIP_NATIONAL_PARTY_CONVENTION_JF_TRANSFER_MEMO } from '../models/transaction-types/PARTNERSHIP_NATIONAL_PARTY_CONVENTION_JF_TRANSFER_MEMO.model'; import { PARTY_IN_KIND_OUT } from '../models/transaction-types/PARTY_IN_KIND_OUT.model'; import { RECOUNT_ACCOUNT_DISBURSEMENT } from '../models/transaction-types/RECOUNT_ACCOUNT_DISBURSEMENT.model'; @@ -160,6 +164,12 @@ import { TRIBAL_REFUND_NP_HEADQUARTERS_ACCOUNT } from '../models/transaction-typ import { TRIBAL_REFUND_NP_RECOUNT_ACCOUNT } from '../models/transaction-types/TRIBAL_REFUND_NP_RECOUNT_ACCOUNT.model'; import { FEDERAL_ELECTION_ACTIVITY_CREDIT_CARD_PAYMENT_MEMO } from '../models/transaction-types/FEDERAL_ELECTION_ACTIVITY_CREDIT_CARD_PAYMENT_MEMO.model'; import { FEDERAL_ELECTION_ACTIVITY_PAYMENT_TO_PAYROLL_MEMO } from '../models/transaction-types/FEDERAL_ELECTION_ACTIVITY_PAYMENT_TO_PAYROLL_MEMO.model'; +import { LOAN_MADE } from '../models/transaction-types/LOAN_MADE.model'; + +// Schedule C ///////////////////////////////////////////////////// + +import { LOAN_RECEIVED_FROM_INDIVIDUAL } from '../models/transaction-types/LOAN_RECEIVED_FROM_INDIVIDUAL.model'; +import { LOAN_BY_COMMITTEE } from '../models/transaction-types/LOAN_BY_COMMITTEE.model'; // prettier-ignore const transactionTypeClasses: any = { // eslint-disable-line @typescript-eslint/no-explicit-any @@ -188,12 +198,12 @@ const transactionTypeClasses: any = { // eslint-disable-line @typescript-eslint/ PAC_EARMARK_MEMO, PAC_RECEIPT, PAC_RECOUNT_RECEIPT, - PARTNERSHIP_MEMO, + PARTNERSHIP_ATTRIBUTION, PARTNERSHIP_RECEIPT, PARTNERSHIP_JF_TRANSFER_MEMO, PARTNERSHIP_NATIONAL_PARTY_CONVENTION_JF_TRANSFER_MEMO, - PARTNERSHIP_INDIVIDUAL_NATIONAL_PARTY_CONVENTION_JF_TRANSFER_MEMO, - PARTNERSHIP_INDIVIDUAL_JF_TRANSFER_MEMO, + PARTNERSHIP_ATTRIBUTION_NATIONAL_PARTY_CONVENTION_JF_TRANSFER_MEMO, + PARTNERSHIP_ATTRIBUTION_JF_TRANSFER_MEMO, PARTY_JF_TRANSFER_MEMO, PARTY_RECEIPT, PARTY_RECOUNT_RECEIPT, @@ -221,11 +231,11 @@ const transactionTypeClasses: any = { // eslint-disable-line @typescript-eslint/ INDIVIDUAL_NATIONAL_PARTY_HEADQUARTERS_JF_TRANSFER_MEMO, PAC_NATIONAL_PARTY_HEADQUARTERS_JF_TRANSFER_MEMO, PARTNERSHIP_NATIONAL_PARTY_RECOUNT_ACCOUNT, - PARTNERSHIP_NATIONAL_PARTY_RECOUNT_ACCOUNT_MEMO, + PARTNERSHIP_ATTRIBUTION_NATIONAL_PARTY_RECOUNT_ACCOUNT_MEMO, PARTNERSHIP_NATIONAL_PARTY_CONVENTION_ACCOUNT, - PARTNERSHIP_NATIONAL_PARTY_CONVENTION_ACCOUNT_MEMO, + PARTNERSHIP_ATTRIBUTION_NATIONAL_PARTY_CONVENTION_ACCOUNT_MEMO, PARTNERSHIP_NATIONAL_PARTY_HEADQUARTERS_ACCOUNT, - PARTNERSHIP_NATIONAL_PARTY_HEADQUARTERS_ACCOUNT_MEMO, + PARTNERSHIP_ATTRIBUTION_NATIONAL_PARTY_HEADQUARTERS_ACCOUNT_MEMO, PARTY_NATIONAL_PARTY_RECOUNT_ACCOUNT, INDIVIDUAL_NATIONAL_PARTY_RECOUNT_ACCOUNT, INDIVIDUAL_NATIONAL_PARTY_CONVENTION_ACCOUNT, @@ -242,12 +252,12 @@ const transactionTypeClasses: any = { // eslint-disable-line @typescript-eslint/ EARMARK_MEMO_CONVENTION_ACCOUNT, EARMARK_MEMO_RECOUNT_ACCOUNT, PARTNERSHIP_RECOUNT_ACCOUNT_RECEIPT, - PARTNERSHIP_RECOUNT_ACCOUNT_RECEIPT_MEMO, + PARTNERSHIP_ATTRIBUTION_RECOUNT_ACCOUNT_RECEIPT_MEMO, REFUND_TO_OTHER_POLITICAL_COMMITTEE, PARTNERSHIP_NATIONAL_PARTY_RECOUNT_JF_TRANSFER_MEMO, - PARTNERSHIP_INDIVIDUAL_NATIONAL_PARTY_RECOUNT_JF_TRANSFER_MEMO, + PARTNERSHIP_ATTRIBUTION_NATIONAL_PARTY_RECOUNT_JF_TRANSFER_MEMO, PARTNERSHIP_NATIONAL_PARTY_HEADQUARTERS_JF_TRANSFER_MEMO, - PARTNERSHIP_INDIVIDUAL_NATIONAL_PARTY_HEADQUARTERS_JF_TRANSFER_MEMO, + PARTNERSHIP_ATTRIBUTION_NATIONAL_PARTY_HEADQUARTERS_JF_TRANSFER_MEMO, PARTY_IN_KIND_RECEIPT, IN_KIND_TRANSFER, IN_KIND_TRANSFER_FEDERAL_ELECTION_ACTIVITY, @@ -255,6 +265,7 @@ const transactionTypeClasses: any = { // eslint-disable-line @typescript-eslint/ CONDUIT_EARMARK_RECEIPT, CONDUIT_EARMARK_RECEIPT_DEPOSITED: CONDUIT_EARMARK_RECEIPT, CONDUIT_EARMARK_RECEIPT_UNDEPOSITED: CONDUIT_EARMARK_RECEIPT, + LOAN_RECEIVED_FROM_INDIVIDUAL_RECEIPT, // Schedule B ///////////////////////////////////////////////////// PAC_CONDUIT_EARMARK_OUT, PAC_CONDUIT_EARMARK_OUT_DEPOSITED: PAC_CONDUIT_EARMARK_OUT, @@ -326,6 +337,10 @@ const transactionTypeClasses: any = { // eslint-disable-line @typescript-eslint/ CONDUIT_EARMARK_OUT_UNDEPOSITED: CONDUIT_EARMARK_OUT, CONTRIBUTION_TO_CANDIDATE, CONTRIBUTION_TO_CANDIDATE_VOID, + LOAN_MADE, + // Schedule C ///////////////////////////////////////////////////// + LOAN_RECEIVED_FROM_INDIVIDUAL, + LOAN_BY_COMMITTEE, } export class TransactionTypeUtils { @@ -359,6 +374,9 @@ export function getFromJSON(json: any, depth = 2): ScheduleTransaction { // esli const transactionType = TransactionTypeUtils.factory(json.transaction_type_identifier); if (transactionType.scheduleId === 'A') return SchATransaction.fromJSON(json, depth); if (transactionType.scheduleId === 'B') return SchBTransaction.fromJSON(json, depth); + if (transactionType.scheduleId === 'C') return SchCTransaction.fromJSON(json, depth); + if (transactionType.scheduleId === 'C1') return SchC1Transaction.fromJSON(json, depth); + if (transactionType.scheduleId === 'C2') return SchC2Transaction.fromJSON(json, depth); } return SchATransaction.fromJSON(json, depth); // Until 404 resolved // throw new Error('Fecfile: Missing transaction type identifier when creating a transaction object from a JSON record'); diff --git a/front-end/src/app/shared/utils/unit-test.utils.ts b/front-end/src/app/shared/utils/unit-test.utils.ts index 23fed51a9f..f5601eb22e 100644 --- a/front-end/src/app/shared/utils/unit-test.utils.ts +++ b/front-end/src/app/shared/utils/unit-test.utils.ts @@ -91,6 +91,7 @@ export const testUserLoginData: UserLoginData = { export const testActiveReport: F3xSummary = F3xSummary.fromJSON({ id: '999', coverage_from_date: '2022-05-25', + coverage_through_date: '2022-06-30', form_type: 'F3XN', report_code: 'Q1', upload_submission: UploadSubmission.fromJSON({}), @@ -132,12 +133,14 @@ export const testIndividualReceipt: SchATransaction = SchATransaction.fromJSON({ report_id: '999', contribution_amount: '202.2', contribution_date: '2022-02-02', - entity_type: ContactTypes.ORGANIZATION, + entity_type: ContactTypes.INDIVIDUAL, contributor_organization_name: 'org name', contributor_street_1: '123 Main St', contributor_city: 'city', contributor_state: 'VA', contributor_zip: '20001', + contributor_employer: 'employer', + contributor_occupation: 'occupation', memo_text: MemoText.fromJSON({ text4000: 'Memo!' }), contact_1_id: '456', contact_1: Contact.fromJSON({ @@ -160,7 +163,7 @@ export const testIndividualReceipt: SchATransaction = SchATransaction.fromJSON({ export const testScheduleATransaction = SchATransaction.fromJSON({ form_type: 'SA15', - transaction_type_identifier: 'PAC_JF_TRANSFER_MEMO', + transaction_type_identifier: ScheduleATransactionTypes.OFFSET_TO_OPERATING_EXPENDITURES, transaction_id: 'AAAAAAAAAAAAAAAAAAA', entity_type: ContactTypes.COMMITTEE, contributor_organization_name: 'org name', @@ -230,17 +233,17 @@ export const testTemplateMap: TransactionTemplateMapType = { candidate_state: 'donor_candidate_state', candidate_district: 'donor_candidate_district', date: 'contribution_date', - dateLabel: 'DATE RECEIVED', memo_code: 'memo_code', amount: 'contribution_amount', balance: 'loan_balance', - amountInputHeader: 'Receipt Information', aggregate: 'contribution_aggregate', purpose_description: 'contribution_purpose_descrip', - purposeDescripLabel: 'CONTRIBUTION PURPOSE DESCRIPTION', text4000: 'text4000', category_code: '', election_code: 'election_code', election_other_description: 'election_other_description', - candidateInputHeader: '' + payment_to_date: '', + due_date: '', + secured: '', + interest_rate: '', }; diff --git a/front-end/src/styles.scss b/front-end/src/styles.scss index 7785027858..4a4c89c7ee 100644 --- a/front-end/src/styles.scss +++ b/front-end/src/styles.scss @@ -1,5 +1,9 @@ @import 'intl-tel-input/build/css/intlTelInput.css'; +p { + max-width: 100%; +} + .grid { margin: 0; } @@ -36,7 +40,9 @@ p-dropdown.ng-invalid.ng-touched div.p-dropdown, .ng-submitted p-inputnumber.ng-invalid input.p-inputtext, p-inputnumber.ng-invalid.ng-touched input.p-inputtext, .ng-submitted p-calendar.ng-invalid input.p-inputtext, -p-calendar.ng-invalid.ng-touched input.p-inputtext { +p-calendar.ng-invalid.ng-touched input.p-inputtext, +.ng-submitted p-autocomplete.ng-invalid input.p-inputtext, +p-autocomplete.ng-invalid.ng-touched input.p-inputtext { border-color: #dc3545; } @@ -326,3 +332,29 @@ label.disabled { width: 100%; text-align: inherit; } + +.p-button-primary.p-button { + border-width: 2px; + padding: 8px 20px; + font-size: 14px; +} + +.p-button-primary.p-button:enabled:hover { + background-color: #164f85; + border-color: #164f85; +} + +.p-button-secondary.p-button { + background-color: #aeb0b5; + border-color: #aeb0b5; + border-width: 2px; + padding: 8px 20px; + font-size: 14px; + color: #212121; +} + +.p-button-secondary.p-button:enabled:hover { + background-color: #e8e8e8; + border-color: #e8e8e8; + color: #212121; +}